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

Analysis Run

15de1a4b-412f-443d-88d9-6bfed3147c1b

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

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30337 report.consolidate complete 1 / 1 3 months ago
74206 artifact.fetch failed 1 / 3 3 weeks ago
74207 tool.cast_disasm complete 1 / 3 3 weeks ago
74208 analysis.bundle complete 1 / 3 3 weeks ago
74209 capability.graph complete 1 / 3 3 weeks ago
74210 detector.run complete 1 / 3 3 weeks ago
74211 validation.fork complete 1 / 3 3 weeks ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No exploitable vulnerabilities found in the first‑party Solidity code within the specified focus areas. Residual risk: security depends on correct off‑chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).
View stderr
[codex:1222637] OpenAI Codex v0.77.0 (research preview)
[codex:1222637] --------
[codex:1222637] workdir: /tmp/codex-multi-6ear7szq
[codex:1222637] model: gpt-5.2-codex
[codex:1222637] provider: openai
[codex:1222637] approval: never
[codex:1222637] sandbox: read-only
[codex:1222637] reasoning effort: xhigh
[codex:1222637] reasoning summaries: auto
[codex:1222637] session id: 019b65f1-c349-7593-a410-4cb8ed49572a
[codex:1222637] --------
[codex:1222637] user
[codex:1222637] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1222637] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1222637] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1222637] 
[codex:1222637] Scope rules:
[codex:1222637] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1222637] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1222637] 
[codex:1222637] Output MUST be valid JSON matching the provided schema.
[codex:1222637] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1222637] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1222637] 
[codex:1222637] Output constraints (IMPORTANT):
[codex:1222637] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1222637] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1222637] mcp startup: no servers
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Reading AUDIT_BUNDLE.txt via shell**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc ls in /tmp/codex-multi-6ear7szq succeeded in 5ms:
[codex:1222637] AUDIT_BUNDLE.txt
[codex:1222637] codex-output-schema.json
[codex:1222637] contracts
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Reading file**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 6ms:
[codex:1222637] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1222637] 
[codex:1222637] ================================================================================
[codex:1222637] FILE: contracts/lib/facet-sol/lib/solady/src/utils/LibRLP.sol
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.4;
[codex:1222637] 
[codex:1222637] /// @notice Library for RLP encoding and CREATE address computation.
[codex:1222637] /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibRLP.sol)
[codex:1222637] /// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibRLP.sol)
[codex:1222637] library LibRLP {
[codex:1222637]     /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
[codex:1222637]     /*                          STRUCTS                           */
[codex:1222637]     /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
[codex:1222637] 
[codex:1222637]     /// @dev A pointer to a RLP item list in memory.
[codex:1222637]     struct List {
[codex:1222637]         // Do NOT modify the `_data` directly.
[codex:1222637]         uint256 _data;
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Identifying first-party contracts**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'rg -n "''^FILE:" AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 6ms:
[codex:1222637] 4:FILE: contracts/lib/facet-sol/lib/solady/src/utils/LibRLP.sol
[codex:1222637] 399:FILE: contracts/lib/facet-sol/src/utils/LibFacet.sol
[codex:1222637] 490:FILE: contracts/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol
[codex:1222637] 632:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol
[codex:1222637] 1019:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol
[codex:1222637] 1105:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol
[codex:1222637] 1137:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol
[codex:1222637] 1201:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol
[codex:1222637] 1321:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol
[codex:1222637] 1547:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol
[codex:1222637] 1575:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol
[codex:1222637] 1702:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol
[codex:1222637] 1731:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/math/Math.sol
[codex:1222637] 1961:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol
[codex:1222637] 2008:FILE: contracts/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol
[codex:1222637] 2107:FILE: contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol
[codex:1222637] 2249:FILE: contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol
[codex:1222637] 2448:FILE: contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol
[codex:1222637] 2489:FILE: contracts/lib/solady/src/utils/LibString.sol
[codex:1222637] 3687:FILE: contracts/lib/solmate/src/utils/FixedPointMathLib.sol
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Planning focus on first-party contracts audit**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'rg -n "delegatecall" AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 6ms:
[codex:1222637] 1513:        (bool success, bytes memory returndata) = target.delegatecall(data);
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing bridging contract calls and reentrancy risks**
[codex:1222637] 
[codex:1222637] I'm focusing on external call patterns like `.call(` and checking Optimism's StandardBridge for potential vulnerabilities. I want to verify access controls, state updates before external calls, and any replay attack surfaces around deposit hashes and replayable deposits. To dig deeper, I'll extract StandardBridge code for detailed analysis with Python parsing.
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] import re
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/universal/StandardBridge.sol'
[codex:1222637] end='FILE: '
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] 
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 40ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1222637] import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
[codex:1222637] import { Address } from "@openzeppelin/contracts/utils/Address.sol";
[codex:1222637] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1222637] import { SafeCall } from "src/libraries/SafeCall.sol";
[codex:1222637] import { IOptimismMintableERC20, ILegacyMintableERC20 } from "src/universal/IOptimismMintableERC20.sol";
[codex:1222637] import { CrossDomainMessenger } from "src/universal/CrossDomainMessenger.sol";
[codex:1222637] import { OptimismMintableERC20 } from "src/universal/OptimismMintableERC20.sol";
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { AddressAliasHelper } from "src/vendor/AddressAliasHelper.sol";
[codex:1222637] 
[codex:1222637] import { LibFacet } from "lib/facet-sol/src/utils/LibFacet.sol";
[codex:1222637] 
[codex:1222637] 
[codex:1222637] /// @custom:upgradeable
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing StandardBridge and PausedL1StandardBridge**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] import re
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/PausedL1StandardBridge.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] 
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 23ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { StandardBridge } from "src/universal/StandardBridge.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { CrossDomainMessenger } from "src/universal/CrossDomainMessenger.sol";
[codex:1222637] import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
[codex:1222637] import { OptimismPortal } from "src/L1/OptimismPortal.sol";
[codex:1222637] import { SystemConfig } from "src/L1/SystemConfig.sol";
[codex:1222637] 
[codex:1222637] import { IWETH } from "src/dispute/interfaces/IWETH.sol";
[codex:1222637] 
[codex:1222637] interface Donateable {
[codex:1222637]     function donateETH() external payable;
[codex:1222637] }
[codex:1222637] 
[codex:1222637] /// @custom:proxied
[codex:1222637] /// @title L1StandardBridge
[codex:1222637] /// @notice The L1StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing PausedL1StandardBridge and access controls**
[codex:1222637] 
[codex:1222637] I'm examining how PausedL1StandardBridge disables ERC20 bridging by overriding `_initiateBridgeERC20` to always revert and noticing it includes a privileged `adminWithdraw` that lets a fixed admin address withdraw WETH, highlighting centralization risks without typical Ownable governance. I'm also digging into replay protections on L1 deposits and the nuances of cross-domain message sender checks between L1 and L2, especially relating to aliasing and messenger contracts used in Optimism. This sets me up to verify if L2 StandardBridge contracts handle these conditions properly or if gaps exist.
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'rg -n "L2StandardBridge" AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 6ms:
[codex:1222637] 5156:    ///         be locked in the L2StandardBridge. ETH may be recoverable if the call can be
[codex:1222637] 7276:    /// @notice Address of the L2StandardBridge predeploy.
[codex:1222637] 7351:        if (_addr == L2_STANDARD_BRIDGE) return "L2StandardBridge";
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Checking bridge contract presence**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] import re
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/OptimismPortal.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] 
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 24ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { SafeCall } from "src/libraries/SafeCall.sol";
[codex:1222637] import { L2OutputOracle } from "src/L1/L2OutputOracle.sol";
[codex:1222637] import { SystemConfig } from "src/L1/SystemConfig.sol";
[codex:1222637] import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { Types } from "src/libraries/Types.sol";
[codex:1222637] import { Hashing } from "src/libraries/Hashing.sol";
[codex:1222637] import { SecureMerkleTrie } from "src/libraries/trie/SecureMerkleTrie.sol";
[codex:1222637] import { AddressAliasHelper } from "src/vendor/AddressAliasHelper.sol";
[codex:1222637] import { ResourceMetering } from "src/L1/ResourceMetering.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1222637] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1222637] import { L1Block } from "src/L2/L1Block.sol";
[codex:1222637] import { Predeploys } from "src/libraries/Predeploys.sol";
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing transaction function behavior and reentrancy risks**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Constants.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 23ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637] 
[codex:1222637] import { ResourceMetering } from "src/L1/ResourceMetering.sol";
[codex:1222637] 
[codex:1222637] /// @title Constants
[codex:1222637] /// @notice Constants is a library for storing constants. Simple! Don't put everything in here, just
[codex:1222637] ///         the stuff used in multiple contracts. Constants that only apply to a single contract
[codex:1222637] ///         should be defined in that contract instead.
[codex:1222637] library Constants {
[codex:1222637]     /// @notice Special address to be used as the tx origin for gas estimation calls in the
[codex:1222637]     ///         OptimismPortal and CrossDomainMessenger calls. You only need to use this address if
[codex:1222637]     ///         the minimum gas limit specified by the user is not actually enough to execute the
[codex:1222637]     ///         given message and you're attempting to estimate the actual necessary gas limit. We
[codex:1222637]     ///         use address(1) because it's the ecrecover precompile and therefore guaranteed to
[codex:1222637]     ///         never have any code on any EVM chain.
[codex:1222637]     address internal constant ESTIMATION_ADDRESS = address(1);
[codex:1222637] 
[codex:1222637]     /// @notice Value used for the L2 sender storage slot in both the OptimismPortal and the
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing deposit disablement and LibFacet usage**
[codex:1222637] 
[codex:1222637] I'm examining how deposit functionality is intentionally disabled in OptimismPortal by reverting in `depositTransaction` and related functions, replaced by LibFacet calls instead. I'm curious whether the fallback `receive()` reverts properly and if this might cause deposit issues or is intentional. I plan to review related contract files next to understand modifications and potential implications.
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/L2OutputOracle.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 19ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { Types } from "src/libraries/Types.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] 
[codex:1222637] /// @custom:proxied
[codex:1222637] /// @title L2OutputOracle
[codex:1222637] /// @notice The L2OutputOracle contains an array of L2 state outputs, where each output is a
[codex:1222637] ///         commitment to the state of the L2 chain. Other contracts like the OptimismPortal use
[codex:1222637] ///         these outputs to verify information about the state of L2.
[codex:1222637] contract L2OutputOracle is Initializable, ISemver {
[codex:1222637]     /// @notice The number of the first L2 block recorded in this contract.
[codex:1222637]     uint256 public startingBlockNumber;
[codex:1222637] 
[codex:1222637]     /// @notice The timestamp of the first L2 block recorded in this contract.
[codex:1222637]     uint256 public startingTimestamp;
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Reviewing L2OutputOracle upgrade and access**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/SystemConfig.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 19ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { ResourceMetering } from "src/L1/ResourceMetering.sol";
[codex:1222637] import { Storage } from "src/libraries/Storage.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { OptimismPortal } from "src/L1/OptimismPortal.sol";
[codex:1222637] import { GasPayingToken, IGasToken } from "src/libraries/GasPayingToken.sol";
[codex:1222637] import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:1222637] 
[codex:1222637] /// @title SystemConfig
[codex:1222637] /// @notice The SystemConfig contract is used to manage configuration of an Optimism network.
[codex:1222637] ///         All configuration is stored on L1 and picked up by L2 as part of the derviation of
[codex:1222637] ///         the L2 chain.
[codex:1222637] contract SystemConfig is OwnableUpgradeable, ISemver, IGasToken {
[codex:1222637]     /// @notice Enum representing different types of updates.
[codex:1222637]     /// @custom:value BATCHER              Represents an update to the batcher hash.
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Checking inheritance for SystemConfig**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/SuperchainConfig.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 21ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { Storage } from "src/libraries/Storage.sol";
[codex:1222637] 
[codex:1222637] /// @custom:audit none This contracts is not yet audited.
[codex:1222637] /// @title SuperchainConfig
[codex:1222637] /// @notice The SuperchainConfig contract is used to manage configuration of global superchain values.
[codex:1222637] contract SuperchainConfig is Initializable, ISemver {
[codex:1222637]     /// @notice Enum representing different types of updates.
[codex:1222637]     /// @custom:value GUARDIAN            Represents an update to the guardian.
[codex:1222637]     enum UpdateType {
[codex:1222637]         GUARDIAN
[codex:1222637]     }
[codex:1222637] 
[codex:1222637]     /// @notice Whether or not the Superchain is paused.
[codex:1222637]     bytes32 public constant PAUSED_SLOT = bytes32(uint256(keccak256("superchainConfig.paused")) - 1);
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Considering ResourceMetering in SuperchainConfig**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L1/ResourceMetering.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 20ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
[codex:1222637] import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
[codex:1222637] import { Burn } from "src/libraries/Burn.sol";
[codex:1222637] import { Arithmetic } from "src/libraries/Arithmetic.sol";
[codex:1222637] 
[codex:1222637] /// @custom:upgradeable
[codex:1222637] /// @title ResourceMetering
[codex:1222637] /// @notice ResourceMetering implements an EIP-1559 style resource metering system where pricing
[codex:1222637] ///         updates automatically based on current demand.
[codex:1222637] abstract contract ResourceMetering is Initializable {
[codex:1222637]     /// @notice Error returned when too much gas resource is consumed.
[codex:1222637]     error OutOfGas();
[codex:1222637] 
[codex:1222637]     /// @notice Represents the various parameters that control the way in which resources are
[codex:1222637]     ///         metered. Corresponds to the EIP-1559 resource metering system.
[codex:1222637]     /// @custom:field prevBaseFee   Base fee from the previous block(s).
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Reviewing ResourceMetering and checking CrossDomainMessenger**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/universal/CrossDomainMessenger.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 20ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:1222637] import { SafeCall } from "src/libraries/SafeCall.sol";
[codex:1222637] import { Hashing } from "src/libraries/Hashing.sol";
[codex:1222637] import { Encoding } from "src/libraries/Encoding.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] 
[codex:1222637] /// @custom:legacy
[codex:1222637] /// @title CrossDomainMessengerLegacySpacer0
[codex:1222637] /// @notice Contract only exists to add a spacer to the CrossDomainMessenger where the
[codex:1222637] ///         libAddressManager variable used to exist. Must be the first contract in the inheritance
[codex:1222637] ///         tree of the CrossDomainMessenger.
[codex:1222637] contract CrossDomainMessengerLegacySpacer0 {
[codex:1222637]     /// @custom:legacy
[codex:1222637]     /// @custom:spacer libAddressManager
[codex:1222637]     /// @notice Spacer for backwards compatibility.
[codex:1222637]     address private spacer_0_0_20;
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Reviewing CrossDomainMessenger and Next Contract**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/universal/OptimismMintableERC20.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 20ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:1222637] import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
[codex:1222637] import { ILegacyMintableERC20, IOptimismMintableERC20 } from "src/universal/IOptimismMintableERC20.sol";
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] 
[codex:1222637] /// @title OptimismMintableERC20
[codex:1222637] /// @notice OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed
[codex:1222637] ///         to allow the StandardBridge contracts to mint and burn tokens. This makes it possible to
[codex:1222637] ///         use an OptimismMintablERC20 as the L2 representation of an L1 token, or vice-versa.
[codex:1222637] ///         Designed to be backwards compatible with the older StandardL2ERC20 token which was only
[codex:1222637] ///         meant for use on L2.
[codex:1222637] contract OptimismMintableERC20 is IOptimismMintableERC20, ILegacyMintableERC20, ERC20, ISemver {
[codex:1222637]     /// @notice Address of the corresponding version of this token on the remote chain.
[codex:1222637]     address public immutable REMOTE_TOKEN;
[codex:1222637] 
[codex:1222637]     /// @notice Address of the StandardBridge on this network.
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Checking L1Block contract**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/L2/L1Block.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] import { ISemver } from "src/universal/ISemver.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { GasPayingToken, IGasToken } from "src/libraries/GasPayingToken.sol";
[codex:1222637] import "src/libraries/L1BlockErrors.sol";
[codex:1222637] 
[codex:1222637] /// @custom:proxied
[codex:1222637] /// @custom:predeploy 0x4200000000000000000000000000000000000015
[codex:1222637] /// @title L1Block
[codex:1222637] /// @notice The L1Block predeploy gives users access to information about the last known L1 block.
[codex:1222637] ///         Values within this contract are updated once per epoch (every L1 block) and can only be
[codex:1222637] ///         set by the "depositor" account, a special system address. Depositor account transactions
[codex:1222637] ///         are created by the protocol whenever we move to a new epoch.
[codex:1222637] contract L1Block is ISemver, IGasToken {
[codex:1222637]     /// @notice Event emitted when the gas paying token is set.
[codex:1222637]     event GasPayingTokenSet(address indexed token, uint8 indexed decimals, bytes32 name, bytes32 symbol);
[codex:1222637] 
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing L1Block storage and calldata handling**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/GasPayingToken.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 21ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637] 
[codex:1222637] import { Storage } from "src/libraries/Storage.sol";
[codex:1222637] import { Constants } from "src/libraries/Constants.sol";
[codex:1222637] import { LibString } from "@solady/utils/LibString.sol";
[codex:1222637] 
[codex:1222637] /// @title IGasToken
[codex:1222637] /// @notice Implemented by contracts that are aware of the custom gas token used
[codex:1222637] ///         by the L2 network.
[codex:1222637] interface IGasToken {
[codex:1222637]     /// @notice Getter for the ERC20 token address that is used to pay for gas and its decimals.
[codex:1222637]     function gasPayingToken() external view returns (address, uint8);
[codex:1222637]     /// @notice Returns the gas token name.
[codex:1222637]     function gasPayingTokenName() external view returns (string memory);
[codex:1222637]     /// @notice Returns the gas token symbol.
[codex:1222637]     function gasPayingTokenSymbol() external view returns (string memory);
[codex:1222637]     /// @notice Returns true if the network uses a custom gas token.
[codex:1222637]     function isCustomGasToken() external view returns (bool);
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing default token behavior impact**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/SafeCall.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 19ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637] 
[codex:1222637] /// @title SafeCall
[codex:1222637] /// @notice Perform low level safe calls
[codex:1222637] library SafeCall {
[codex:1222637]     /// @notice Performs a low level call without copying any returndata.
[codex:1222637]     /// @dev Passes no calldata to the call context.
[codex:1222637]     /// @param _target   Address to call
[codex:1222637]     /// @param _gas      Amount of gas to pass to the call
[codex:1222637]     /// @param _value    Amount of value to pass to the call
[codex:1222637]     function send(address _target, uint256 _gas, uint256 _value) internal returns (bool success_) {
[codex:1222637]         assembly {
[codex:1222637]             success_ :=
[codex:1222637]                 call(
[codex:1222637]                     _gas, // gas
[codex:1222637]                     _target, // recipient
[codex:1222637]                     _value, // ether value
[codex:1222637]                     0, // inloc
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing cross-domain and access control risks**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Encoding.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637] 
[codex:1222637] import { Types } from "src/libraries/Types.sol";
[codex:1222637] import { Hashing } from "src/libraries/Hashing.sol";
[codex:1222637] import { RLPWriter } from "src/libraries/rlp/RLPWriter.sol";
[codex:1222637] 
[codex:1222637] /// @title Encoding
[codex:1222637] /// @notice Encoding handles Optimism's various different encoding schemes.
[codex:1222637] library Encoding {
[codex:1222637]     /// @notice RLP encodes the L2 transaction that would be generated when a given deposit is sent
[codex:1222637]     ///         to the L2 system. Useful for searching for a deposit in the L2 system. The
[codex:1222637]     ///         transaction is prefixed with 0x7e to identify its EIP-2718 type.
[codex:1222637]     /// @param _tx User deposit transaction to encode.
[codex:1222637]     /// @return RLP encoded L2 deposit transaction.
[codex:1222637]     function encodeDepositTransaction(Types.UserDepositTransaction memory _tx) internal pure returns (bytes memory) {
[codex:1222637]         bytes32 source = Hashing.hashDepositSource(_tx.l1BlockHash, _tx.logIndex);
[codex:1222637]         bytes[] memory raw = new bytes[](8);
[codex:1222637]         raw[0] = RLPWriter.writeBytes(abi.encodePacked(source));
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Checking potential vulnerability sources**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Hashing.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637] 
[codex:1222637] import { Types } from "src/libraries/Types.sol";
[codex:1222637] import { Encoding } from "src/libraries/Encoding.sol";
[codex:1222637] 
[codex:1222637] /// @title Hashing
[codex:1222637] /// @notice Hashing handles Optimism's various different hashing schemes.
[codex:1222637] library Hashing {
[codex:1222637]     /// @notice Computes the hash of the RLP encoded L2 transaction that would be generated when a
[codex:1222637]     ///         given deposit is sent to the L2 system. Useful for searching for a deposit in the L2
[codex:1222637]     ///         system.
[codex:1222637]     /// @param _tx User deposit transaction to hash.
[codex:1222637]     /// @return Hash of the RLP encoded L2 deposit transaction.
[codex:1222637]     function hashDepositTransaction(Types.UserDepositTransaction memory _tx) internal pure returns (bytes32) {
[codex:1222637]         return keccak256(Encoding.encodeDepositTransaction(_tx));
[codex:1222637]     }
[codex:1222637] 
[codex:1222637]     /// @notice Computes the deposit transaction's "source hash", a value that guarantees the hash
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Reviewing contract functions for vulnerabilities**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/lib/facet-sol/src/utils/LibFacet.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] 
[codex:1222637] # print only relevant portion around sendFacetTransaction
[codex:1222637] text=''.join(lines)
[codex:1222637] # find sendFacetTransaction function definitions
[codex:1222637] import re
[codex:1222637] for m in re.finditer(r'function sendFacetTransaction', text):
[codex:1222637]     start_idx = m.start()
[codex:1222637]     snippet = text[start_idx:start_idx+1200]
[codex:1222637]     print(snippet)
[codex:1222637]     print('---')
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 23ms:
[codex:1222637] function sendFacetTransaction(
[codex:1222637]         uint256 gasLimit,
[codex:1222637]         bytes memory data
[codex:1222637]     ) internal {
[codex:1222637]         sendFacetTransaction({
[codex:1222637]             to: bytes(''),
[codex:1222637]             value: 0,
[codex:1222637]             gasLimit: gasLimit,
[codex:1222637]             data: data,
[codex:1222637]             mineBoost: bytes('')
[codex:1222637]         });
[codex:1222637]     }
[codex:1222637] 
[codex:1222637]     function sendFacetTransaction(
[codex:1222637]         address to,
[codex:1222637]         uint256 gasLimit,
[codex:1222637]         bytes memory data
[codex:1222637]     ) internal {
[codex:1222637]         sendFacetTransaction({
[codex:1222637]             to: abi.encodePacked(to),
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing bridge and portal functions for vulnerabilities**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc 'rg -n "TODO|FIXME|HACK|REENTRANCY|unsafe|BUG" contracts/src AUDIT_BUNDLE.txt' in /tmp/codex-multi-6ear7szq succeeded in 12ms:
[codex:1222637] AUDIT_BUNDLE.txt:541: * /// @custom:oz-upgrades-unsafe-allow constructor
[codex:1222637] AUDIT_BUNDLE.txt:1337:     * It is unsafe to assume that an address for which this function returns
[codex:1222637] AUDIT_BUNDLE.txt:1391:     * plain `call` is an unsafe replacement for a function call: use this
[codex:1222637] AUDIT_BUNDLE.txt:2158: * /// @custom:oz-upgrades-unsafe-allow constructor
[codex:1222637] AUDIT_BUNDLE.txt:2265:     * It is unsafe to assume that an address for which this function returns
[codex:1222637] AUDIT_BUNDLE.txt:2319:     * plain `call` is an unsafe replacement for a function call: use this
[codex:1222637] AUDIT_BUNDLE.txt:4922:        // upper limit on the size of unsafe blocks over the p2p network. 120kb is chosen to ensure
[codex:1222637] AUDIT_BUNDLE.txt:5721:    /// @custom:value UNSAFE_BLOCK_SIGNER  Represents an update to the signer key for unsafe
[codex:1222637] AUDIT_BUNDLE.txt:5746:    /// @notice Storage slot that the unsafe block signer is stored at.
[codex:1222637] AUDIT_BUNDLE.txt:5754:    bytes32 public constant UNSAFE_BLOCK_SIGNER_SLOT = keccak256("systemconfig.unsafeblocksigner");
[codex:1222637] AUDIT_BUNDLE.txt:5844:            _unsafeBlockSigner: address(0),
[codex:1222637] AUDIT_BUNDLE.txt:5873:    /// @param _unsafeBlockSigner Initial unsafe block signer address.
[codex:1222637] AUDIT_BUNDLE.txt:5884:        address _unsafeBlockSigner,
[codex:1222637] AUDIT_BUNDLE.txt:5900:        Storage.setAddress(UNSAFE_BLOCK_SIGNER_SLOT, _unsafeBlockSigner);
[codex:1222637] AUDIT_BUNDLE.txt:5934:    /// @notice High level getter for the unsafe block signer address.
[codex:1222637] AUDIT_BUNDLE.txt:5937:    /// @return addr_ Address of the unsafe block signer.
[codex:1222637] AUDIT_BUNDLE.txt:5938:    function unsafeBlockSigner() public view returns (address addr_) {
[codex:1222637] AUDIT_BUNDLE.txt:6028:    /// @notice Updates the unsafe block signer address. Can only be called by the owner.
[codex:1222637] AUDIT_BUNDLE.txt:6029:    /// @param _unsafeBlockSigner New unsafe block signer address.
[codex:1222637] AUDIT_BUNDLE.txt:6030:    function setUnsafeBlockSigner(address _unsafeBlockSigner) external onlyOwner {
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Checking Predeploys library for issues**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Predeploys.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637] 
[codex:1222637] /// @title Predeploys
[codex:1222637] /// @notice Contains constant addresses for protocol contracts that are pre-deployed to the L2 system.
[codex:1222637] //          This excludes the preinstalls (non-protocol contracts).
[codex:1222637] library Predeploys {
[codex:1222637]     /// @notice Number of predeploy-namespace addresses reserved for protocol usage.
[codex:1222637]     uint256 internal constant PREDEPLOY_COUNT = 2048;
[codex:1222637] 
[codex:1222637]     /// @custom:legacy
[codex:1222637]     /// @notice Address of the LegacyMessagePasser predeploy. Deprecate. Use the updated
[codex:1222637]     ///         L2ToL1MessagePasser contract instead.
[codex:1222637]     address internal constant LEGACY_MESSAGE_PASSER = 0x4200000000000000000000000000000000000000;
[codex:1222637] 
[codex:1222637]     /// @custom:legacy
[codex:1222637]     /// @notice Address of the L1MessageSender predeploy. Deprecated. Use L2CrossDomainMessenger
[codex:1222637]     ///         or access tx.origin (or msg.sender) in a L1 to L2 transaction instead.
[codex:1222637]     ///         Not embedded into new OP-Stack chains.
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Evaluating token handling and external call safety**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Burn.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity 0.8.15;
[codex:1222637] 
[codex:1222637] /// @title Burn
[codex:1222637] /// @notice Utilities for burning stuff.
[codex:1222637] library Burn {
[codex:1222637]     /// @notice Burns a given amount of ETH.
[codex:1222637]     /// @param _amount Amount of ETH to burn.
[codex:1222637]     function eth(uint256 _amount) internal {
[codex:1222637]         new Burner{ value: _amount }();
[codex:1222637]     }
[codex:1222637] 
[codex:1222637]     /// @notice Burns a given amount of gas.
[codex:1222637]     /// @param _amount Amount of gas to burn.
[codex:1222637]     function gas(uint256 _amount) internal view {
[codex:1222637]         uint256 i = 0;
[codex:1222637]         uint256 initialGas = gasleft();
[codex:1222637]         while (initialGas - gasleft() < _amount) {
[codex:1222637]             ++i;
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Analyzing potential contract vulnerabilities**
[codex:1222637] exec
[codex:1222637] /bin/bash -lc "python - <<'PY'
[codex:1222637] path='AUDIT_BUNDLE.txt'
[codex:1222637] start='FILE: contracts/src/libraries/Storage.sol'
[codex:1222637] collect=False
[codex:1222637] lines=[]
[codex:1222637] with open(path) as f:
[codex:1222637]     for line in f:
[codex:1222637]         if line.startswith('FILE: '):
[codex:1222637]             if collect and not line.startswith(start):
[codex:1222637]                 break
[codex:1222637]             collect = line.startswith(start)
[codex:1222637]             continue
[codex:1222637]         if collect:
[codex:1222637]             lines.append(line)
[codex:1222637] print(''.join(lines))
[codex:1222637] PY" in /tmp/codex-multi-6ear7szq succeeded in 18ms:
[codex:1222637] ================================================================================
[codex:1222637] // SPDX-License-Identifier: MIT
[codex:1222637] pragma solidity ^0.8.0;
[codex:1222637] 
[codex:1222637] /// @title Storage
[codex:1222637] /// @notice Storage handles reading and writing to arbitary storage locations
[codex:1222637] library Storage {
[codex:1222637]     /// @notice Returns an address stored in an arbitrary storage slot.
[codex:1222637]     ///         These storage slots decouple the storage layout from
[codex:1222637]     ///         solc's automation.
[codex:1222637]     /// @param _slot The storage slot to retrieve the address from.
[codex:1222637]     function getAddress(bytes32 _slot) internal view returns (address addr_) {
[codex:1222637]         assembly {
[codex:1222637]             addr_ := sload(_slot)
[codex:1222637]         }
[codex:1222637]     }
[codex:1222637] 
[codex:1222637]     /// @notice Stores an address in an arbitrary storage slot, `_slot`.
[codex:1222637]     /// @param _slot The storage slot to store the address in.
[codex:1222637]     /// @param _address The protocol version to store
[codex:1222637] 
[codex:1222637] thinking
[codex:1222637] **Evaluating bridge contracts for vulnerabilities**
[codex:1222637] codex
[codex:1222637] {"no_findings":true,"summary":"No exploitable vulnerabilities found in the first‑party Solidity code within the specified focus areas. Residual risk: security depends on correct off‑chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).","findings":[]}
[codex:1222637] tokens used
[codex:1222637] 153,110
[codex:1222637] {"no_findings":true,"summary":"No exploitable vulnerabilities found in the first‑party Solidity code within the specified focus areas. Residual risk: security depends on correct off‑chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-28T17:18:14.216067+00:00",
        "returncode": 0
    },
    "summary": "No exploitable vulnerabilities found in the first\u2011party Solidity code within the specified focus areas. Residual risk: security depends on correct off\u2011chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).",
    "raw_final": {
        "summary": "No exploitable vulnerabilities found in the first\u2011party Solidity code within the specified focus areas. Residual risk: security depends on correct off\u2011chain handling of Facet log-based messaging and trusted privileged roles (e.g., guardian/admin).",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
13
EXT*/BALANCE
13
Total opcodes
6799
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x01e7
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x663558a7
00000019: GT
0000001a: PUSH2 0x0102
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x9a2ac6d5
00000024: GT
00000025: PUSH2 0x0095
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xc89701a2
0000002f: GT
00000030: PUSH2 0x0064
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xc89701a2
0000003a: EQ
0000003b: PUSH2 0x05de
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe11013dd
00000045: EQ
00000046: PUSH2 0x060b
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf851a440
00000050: EQ
00000051: PUSH2 0x061e
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf8c8765e
0000005b: EQ
0000005c: PUSH2 0x0645
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x9a2ac6d5
0000006b: EQ
0000006c: PUSH2 0x0578
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xa9f9e675
00000076: EQ
00000077: PUSH2 0x058b
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xb1a1a882
00000081: EQ
00000082: PUSH2 0x05ab
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xbc474889
0000008c: EQ
0000008d: PUSH2 0x05be
00000090: JUMPI
00000091: PUSH1 0x00
00000093: DUP1
00000094: REVERT
00000095: JUMPDEST
00000096: DUP1
00000097: PUSH4 0x87087623
0000009c: GT
0000009d: PUSH2 0x00d1
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x87087623
000000a7: EQ
000000a8: PUSH2 0x04f5
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x8f601f66
000000b2: EQ
000000b3: PUSH2 0x0515
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x91c49bf8
000000bd: EQ
000000be: PUSH2 0x04aa
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x927ede2d
000000c8: EQ
000000c9: PUSH2 0x054d
000000cc: JUMPI
000000cd: PUSH1 0x00
000000cf: DUP1
000000d0: REVERT
000000d1: JUMPDEST
000000d2: DUP1
000000d3: PUSH4 0x663558a7
000000d8: EQ
000000d9: PUSH2 0x043d
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x66d5403c
000000e3: EQ
000000e4: PUSH2 0x0497
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x7f46ddb2
000000ee: EQ
000000ef: PUSH2 0x04aa
000000f2: JUMPI
000000f3: DUP1
000000f4: PUSH4 0x838b2520
000000f9: EQ
000000fa: PUSH2 0x04d5
000000fd: JUMPI
000000fe: PUSH1 0x00
00000100: DUP1
00000101: REVERT
00000102: JUMPDEST
00000103: DUP1
00000104: PUSH4 0x3fc8cef3
00000109: GT
0000010a: PUSH2 0x017a
0000010d: JUMPI
0000010e: DUP1
0000010f: PUSH4 0x54fd4d50
00000114: GT
00000115: PUSH2 0x0149
00000118: JUMPI
00000119: DUP1
0000011a: PUSH4 0x54fd4d50
0000011f: EQ
00000120: PUSH2 0x0387
00000123: JUMPI
00000124: DUP1
00000125: PUSH4 0x58a997f6
0000012a: EQ
0000012b: PUSH2 0x03dd
0000012e: JUMPI
0000012f: DUP1
00000130: PUSH4 0x5c975abb
00000135: EQ
00000136: PUSH2 0x03fd
00000139: JUMPI
0000013a: DUP1
0000013b: PUSH4 0x5db42fca
00000140: EQ
00000141: PUSH2 0x041d
00000144: JUMPI
00000145: PUSH1 0x00
00000147: DUP1
00000148: REVERT
00000149: JUMPDEST
0000014a: DUP1
0000014b: PUSH4 0x3fc8cef3
00000150: EQ
00000151: PUSH2 0x0312
00000154: JUMPI
00000155: DUP1
00000156: PUSH4 0x401d4482
0000015b: EQ
0000015c: PUSH2 0x0327
0000015f: JUMPI
00000160: DUP1
00000161: PUSH4 0x4df61554
00000166: EQ
00000167: PUSH2 0x0347
0000016a: JUMPI
0000016b: DUP1
0000016c: PUSH4 0x540abf73
00000171: EQ
00000172: PUSH2 0x0367
00000175: JUMPI
00000176: PUSH1 0x00
00000178: DUP1
00000179: REVERT
0000017a: JUMPDEST
0000017b: DUP1
0000017c: PUSH4 0x33d7e2bd
00000181: GT
00000182: PUSH2 0x01b6
00000185: JUMPI
00000186: DUP1
00000187: PUSH4 0x33d7e2bd
0000018c: EQ
0000018d: PUSH2 0x024e
00000190: JUMPI
00000191: DUP1
00000192: PUSH4 0x35e80ab3
00000197: EQ
00000198: PUSH2 0x02a5
0000019b: JUMPI
0000019c: DUP1
0000019d: PUSH4 0x3b5459ad
000001a2: EQ
000001a3: PUSH2 0x02d2
000001a6: JUMPI
000001a7: DUP1
000001a8: PUSH4 0x3cb747bf
000001ad: EQ
000001ae: PUSH2 0x02e5
000001b1: JUMPI
000001b2: PUSH1 0x00
000001b4: DUP1
000001b5: REVERT
000001b6: JUMPDEST
000001b7: DUP1
000001b8: PUSH4 0x0166a07a
000001bd: EQ
000001be: PUSH2 0x01f3
000001c1: JUMPI
000001c2: DUP1
000001c3: PUSH4 0x09fc8843
000001c8: EQ
000001c9: PUSH2 0x0215
000001cc: JUMPI
000001cd: DUP1
000001ce: PUSH4 0x1532ec34
000001d3: EQ
000001d4: PUSH2 0x0228
000001d7: JUMPI
000001d8: DUP1
000001d9: PUSH4 0x1635f5fd
000001de: EQ
000001df: PUSH2 0x023b
000001e2: JUMPI
000001e3: PUSH1 0x00
000001e5: DUP1
000001e6: REVERT
000001e7: JUMPDEST
000001e8: CALLDATASIZE
000001e9: PUSH2 0x01ee
000001ec: JUMPI
000001ed: STOP
000001ee: JUMPDEST
000001ef: PUSH1 0x00
000001f1: DUP1
000001f2: REVERT
000001f3: JUMPDEST
000001f4: CALLVALUE
000001f5: DUP1
000001f6: ISZERO
000001f7: PUSH2 0x01ff
000001fa: JUMPI
000001fb: PUSH1 0x00
000001fd: DUP1
000001fe: REVERT
000001ff: JUMPDEST
00000200: POP
00000201: PUSH2 0x0213
00000204: PUSH2 0x020e
00000207: CALLDATASIZE
00000208: PUSH1 0x04
0000020a: PUSH2 0x3057
0000020d: JUMP
0000020e: JUMPDEST
0000020f: PUSH2 0x0665
00000212: JUMP
00000213: JUMPDEST
00000214: STOP
00000215: JUMPDEST
00000216: PUSH2 0x0213
00000219: PUSH2 0x0223
0000021c: CALLDATASIZE
0000021d: PUSH1 0x04
0000021f: PUSH2 0x3103
00000222: JUMP
00000223: JUMPDEST
00000224: PUSH2 0x09ef
00000227: JUMP
00000228: JUMPDEST
00000229: PUSH2 0x0213
0000022c: PUSH2 0x0236
0000022f: CALLDATASIZE
00000230: PUSH1 0x04
00000232: PUSH2 0x3156
00000235: JUMP
00000236: JUMPDEST
00000237: PUSH2 0x0ac6
0000023a: JUMP
0000023b: JUMPDEST
0000023c: PUSH2 0x0213
0000023f: PUSH2 0x0249
00000242: CALLDATASIZE
00000243: PUSH1 0x04
00000245: PUSH2 0x3156
00000248: JUMP
00000249: JUMPDEST
0000024a: PUSH2 0x0ada
0000024d: JUMP
0000024e: JUMPDEST
0000024f: CALLVALUE
00000250: DUP1
00000251: ISZERO
00000252: PUSH2 0x025a
00000255: JUMPI
00000256: PUSH1 0x00
00000258: DUP1
00000259: REVERT
0000025a: JUMPDEST
0000025b: POP
0000025c: PUSH1 0x33
0000025e: SLOAD
0000025f: PUSH2 0x027b
00000262: SWAP1
00000263: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000278: AND
00000279: DUP2
0000027a: JUMP
0000027b: JUMPDEST
0000027c: PUSH1 0x40
0000027e: MLOAD
0000027f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000294: SWAP1
00000295: SWAP2
00000296: AND
00000297: DUP2
00000298: MSTORE
00000299: PUSH1 0x20
0000029b: ADD
0000029c: JUMPDEST
0000029d: PUSH1 0x40
0000029f: MLOAD
000002a0: DUP1
000002a1: SWAP2
000002a2: SUB
000002a3: SWAP1
000002a4: RETURN
000002a5: JUMPDEST
000002a6: CALLVALUE
000002a7: DUP1
000002a8: ISZERO
000002a9: PUSH2 0x02b1
000002ac: JUMPI
000002ad: PUSH1 0x00
000002af: DUP1
000002b0: REVERT
000002b1: JUMPDEST
000002b2: POP
000002b3: PUSH1 0x32
000002b5: SLOAD
000002b6: PUSH2 0x027b
000002b9: SWAP1
000002ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002cf: AND
000002d0: DUP2
000002d1: JUMP
000002d2: JUMPDEST
000002d3: PUSH2 0x0213
000002d6: PUSH2 0x02e0
000002d9: CALLDATASIZE
000002da: PUSH1 0x04
000002dc: PUSH2 0x31c9
000002df: JUMP
000002e0: JUMPDEST
000002e1: PUSH2 0x0fa3
000002e4: JUMP
000002e5: JUMPDEST
000002e6: CALLVALUE
000002e7: DUP1
000002e8: ISZERO
000002e9: PUSH2 0x02f1
000002ec: JUMPI
000002ed: PUSH1 0x00
000002ef: DUP1
000002f0: REVERT
000002f1: JUMPDEST
000002f2: POP
000002f3: PUSH1 0x03
000002f5: SLOAD
000002f6: PUSH2 0x027b
000002f9: SWAP1
000002fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000030f: AND
00000310: DUP2
00000311: JUMP
00000312: JUMPDEST
00000313: CALLVALUE
00000314: DUP1
00000315: ISZERO
00000316: PUSH2 0x031e
00000319: JUMPI
0000031a: PUSH1 0x00
0000031c: DUP1
0000031d: REVERT
0000031e: JUMPDEST
0000031f: POP
00000320: PUSH2 0x027b
00000323: PUSH2 0x1041
00000326: JUMP
00000327: JUMPDEST
00000328: CALLVALUE
00000329: DUP1
0000032a: ISZERO
0000032b: PUSH2 0x0333
0000032e: JUMPI
0000032f: PUSH1 0x00
00000331: DUP1
00000332: REVERT
00000333: JUMPDEST
00000334: POP
00000335: PUSH2 0x0213
00000338: PUSH2 0x0342
0000033b: CALLDATASIZE
0000033c: PUSH1 0x04
0000033e: PUSH2 0x324c
00000341: JUMP
00000342: JUMPDEST
00000343: PUSH2 0x10f3
00000346: JUMP
00000347: JUMPDEST
00000348: CALLVALUE
00000349: DUP1
0000034a: ISZERO
0000034b: PUSH2 0x0353
0000034e: JUMPI
0000034f: PUSH1 0x00
00000351: DUP1
00000352: REVERT
00000353: JUMPDEST
00000354: POP
00000355: PUSH2 0x0213
00000358: PUSH2 0x0362
0000035b: CALLDATASIZE
0000035c: PUSH1 0x04
0000035e: PUSH2 0x3278
00000361: JUMP
00000362: JUMPDEST
00000363: PUSH2 0x1266
00000366: JUMP
00000367: JUMPDEST
00000368: CALLVALUE
00000369: DUP1
0000036a: ISZERO
0000036b: PUSH2 0x0373
0000036e: JUMPI
0000036f: PUSH1 0x00
00000371: DUP1
00000372: REVERT
00000373: JUMPDEST
00000374: POP
00000375: PUSH2 0x0213
00000378: PUSH2 0x0382
0000037b: CALLDATASIZE
0000037c: PUSH1 0x04
0000037e: PUSH2 0x3319
00000381: JUMP
00000382: JUMPDEST
00000383: PUSH2 0x12ee
00000386: JUMP
00000387: JUMPDEST
00000388: CALLVALUE
00000389: DUP1
0000038a: ISZERO
0000038b: PUSH2 0x0393
0000038e: JUMPI
0000038f: PUSH1 0x00
00000391: DUP1
00000392: REVERT
00000393: JUMPDEST
00000394: POP
00000395: PUSH2 0x03d0
00000398: PUSH1 0x40
0000039a: MLOAD
0000039b: DUP1
0000039c: PUSH1 0x40
0000039e: ADD
0000039f: PUSH1 0x40
000003a1: MSTORE
000003a2: DUP1
000003a3: PUSH1 0x05
000003a5: DUP2
000003a6: MSTORE
000003a7: PUSH1 0x20
000003a9: ADD
000003aa: PUSH32 0x322e322e30000000000000000000000000000000000000000000000000000000
000003cb: DUP2
000003cc: MSTORE
000003cd: POP
000003ce: DUP2
000003cf: JUMP
000003d0: JUMPDEST
000003d1: PUSH1 0x40
000003d3: MLOAD
000003d4: PUSH2 0x029c
000003d7: SWAP2
000003d8: SWAP1
000003d9: PUSH2 0x3406
000003dc: JUMP
000003dd: JUMPDEST
000003de: CALLVALUE
000003df: DUP1
000003e0: ISZERO
000003e1: PUSH2 0x03e9
000003e4: JUMPI
000003e5: PUSH1 0x00
000003e7: DUP1
000003e8: REVERT
000003e9: JUMPDEST
000003ea: POP
000003eb: PUSH2 0x0213
000003ee: PUSH2 0x03f8
000003f1: CALLDATASIZE
000003f2: PUSH1 0x04
000003f4: PUSH2 0x31c9
000003f7: JUMP
000003f8: JUMPDEST
000003f9: PUSH2 0x1333
000003fc: JUMP
000003fd: JUMPDEST
000003fe: CALLVALUE
000003ff: DUP1
00000400: ISZERO
00000401: PUSH2 0x0409
00000404: JUMPI
00000405: PUSH1 0x00
00000407: DUP1
00000408: REVERT
00000409: JUMPDEST
0000040a: POP
0000040b: PUSH1 0x00
0000040d: JUMPDEST
0000040e: PUSH1 0x40
00000410: MLOAD
00000411: SWAP1
00000412: ISZERO
00000413: ISZERO
00000414: DUP2
00000415: MSTORE
00000416: PUSH1 0x20
00000418: ADD
00000419: PUSH2 0x029c
0000041c: JUMP
0000041d: JUMPDEST
0000041e: CALLVALUE
0000041f: DUP1
00000420: ISZERO
00000421: PUSH2 0x0429
00000424: JUMPI
00000425: PUSH1 0x00
00000427: DUP1
00000428: REVERT
00000429: JUMPDEST
0000042a: POP
0000042b: PUSH2 0x0213
0000042e: PUSH2 0x0438
00000431: CALLDATASIZE
00000432: PUSH1 0x04
00000434: PUSH2 0x3448
00000437: JUMP
00000438: JUMPDEST
00000439: PUSH2 0x1407
0000043c: JUMP
0000043d: JUMPDEST
0000043e: CALLVALUE
0000043f: DUP1
00000440: ISZERO
00000441: PUSH2 0x0449
00000444: JUMPI
00000445: PUSH1 0x00
00000447: DUP1
00000448: REVERT
00000449: JUMPDEST
0000044a: POP
0000044b: PUSH2 0x0489
0000044e: PUSH2 0x0458
00000451: CALLDATASIZE
00000452: PUSH1 0x04
00000454: PUSH2 0x3575
00000457: JUMP
00000458: JUMPDEST
00000459: PUSH1 0x00
0000045b: SWAP1
0000045c: DUP2
0000045d: MSTORE
0000045e: PUSH32 0x3e64741321ec6f8a63baec2e6c5b136599c80e9cc6e66533b1c796ebf0d947bb
0000047f: PUSH1 0x20
00000481: MSTORE
00000482: PUSH1 0x40
00000484: SWAP1
00000485: KECCAK256
00000486: SLOAD
00000487: SWAP1
00000488: JUMP
00000489: JUMPDEST
0000048a: PUSH1 0x40
0000048c: MLOAD
0000048d: SWAP1
0000048e: DUP2
0000048f: MSTORE
00000490: PUSH1 0x20
00000492: ADD
00000493: PUSH2 0x029c
00000496: JUMP
00000497: JUMPDEST
00000498: PUSH2 0x0213
0000049b: PUSH2 0x04a5
0000049e: CALLDATASIZE
0000049f: PUSH1 0x04
000004a1: PUSH2 0x3319
000004a4: JUMP
000004a5: JUMPDEST
000004a6: PUSH2 0x1418
000004a9: JUMP
000004aa: JUMPDEST
000004ab: CALLVALUE
000004ac: DUP1
000004ad: ISZERO
000004ae: PUSH2 0x04b6
000004b1: JUMPI
000004b2: PUSH1 0x00
000004b4: DUP1
000004b5: REVERT
000004b6: JUMPDEST
000004b7: POP
000004b8: PUSH1 0x04
000004ba: SLOAD
000004bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004d0: AND
000004d1: PUSH2 0x027b
000004d4: JUMP
000004d5: JUMPDEST
000004d6: CALLVALUE
000004d7: DUP1
000004d8: ISZERO
000004d9: PUSH2 0x04e1
000004dc: JUMPI
000004dd: PUSH1 0x00
000004df: DUP1
000004e0: REVERT
000004e1: JUMPDEST
000004e2: POP
000004e3: PUSH2 0x0213
000004e6: PUSH2 0x04f0
000004e9: CALLDATASIZE
000004ea: PUSH1 0x04
000004ec: PUSH2 0x3319
000004ef: JUMP
000004f0: JUMPDEST
000004f1: PUSH2 0x1594
000004f4: JUMP
000004f5: JUMPDEST
000004f6: CALLVALUE
000004f7: DUP1
000004f8: ISZERO
000004f9: PUSH2 0x0501
000004fc: JUMPI
000004fd: PUSH1 0x00
000004ff: DUP1
00000500: REVERT
00000501: JUMPDEST
00000502: POP
00000503: PUSH2 0x0213
00000506: PUSH2 0x0510
00000509: CALLDATASIZE
0000050a: PUSH1 0x04
0000050c: PUSH2 0x31c9
0000050f: JUMP
00000510: JUMPDEST
00000511: PUSH2 0x15d9
00000514: JUMP
00000515: JUMPDEST
00000516: CALLVALUE
00000517: DUP1
00000518: ISZERO
00000519: PUSH2 0x0521
0000051c: JUMPI
0000051d: PUSH1 0x00
0000051f: DUP1
00000520: REVERT
00000521: JUMPDEST
00000522: POP
00000523: PUSH2 0x0489
00000526: PUSH2 0x0530
00000529: CALLDATASIZE
0000052a: PUSH1 0x04
0000052c: PUSH2 0x358e
0000052f: JUMP
00000530: JUMPDEST
00000531: PUSH1 0x02
00000533: PUSH1 0x20
00000535: SWAP1
00000536: DUP2
00000537: MSTORE
00000538: PUSH1 0x00
0000053a: SWAP3
0000053b: DUP4
0000053c: MSTORE
0000053d: PUSH1 0x40
0000053f: DUP1
00000540: DUP5
00000541: KECCAK256
00000542: SWAP1
00000543: SWAP2
00000544: MSTORE
00000545: SWAP1
00000546: DUP3
00000547: MSTORE
00000548: SWAP1
00000549: KECCAK256
0000054a: SLOAD
0000054b: DUP2
0000054c: JUMP
0000054d: JUMPDEST
0000054e: CALLVALUE
0000054f: DUP1
00000550: ISZERO
00000551: PUSH2 0x0559
00000554: JUMPI
00000555: PUSH1 0x00
00000557: DUP1
00000558: REVERT
00000559: JUMPDEST
0000055a: POP
0000055b: PUSH1 0x03
0000055d: SLOAD
0000055e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000573: AND
00000574: PUSH2 0x027b
00000577: JUMP
00000578: JUMPDEST
00000579: PUSH2 0x0213
0000057c: PUSH2 0x0586
0000057f: CALLDATASIZE
00000580: PUSH1 0x04
00000582: PUSH2 0x35c7
00000585: JUMP
00000586: JUMPDEST
00000587: PUSH2 0x16ad
0000058a: JUMP
0000058b: JUMPDEST
0000058c: CALLVALUE
0000058d: DUP1
0000058e: ISZERO
0000058f: PUSH2 0x0597
00000592: JUMPI
00000593: PUSH1 0x00
00000595: DUP1
00000596: REVERT
00000597: JUMPDEST
00000598: POP
00000599: PUSH2 0x0213
0000059c: PUSH2 0x05a6
0000059f: CALLDATASIZE
000005a0: PUSH1 0x04
000005a2: PUSH2 0x3057
000005a5: JUMP
000005a6: JUMPDEST
000005a7: PUSH2 0x16f5
000005aa: JUMP
000005ab: JUMPDEST
000005ac: PUSH2 0x0213
000005af: PUSH2 0x05b9
000005b2: CALLDATASIZE
000005b3: PUSH1 0x04
000005b5: PUSH2 0x3103
000005b8: JUMP
000005b9: JUMPDEST
000005ba: PUSH2 0x1704
000005bd: JUMP
000005be: JUMPDEST
000005bf: CALLVALUE
000005c0: DUP1
000005c1: ISZERO
000005c2: PUSH2 0x05ca
000005c5: JUMPI
000005c6: PUSH1 0x00
000005c8: DUP1
000005c9: REVERT
000005ca: JUMPDEST
000005cb: POP
000005cc: PUSH2 0x040d
000005cf: PUSH2 0x05d9
000005d2: CALLDATASIZE
000005d3: PUSH1 0x04
000005d5: PUSH2 0x3575
000005d8: JUMP
000005d9: JUMPDEST
000005da: PUSH2 0x17d5
000005dd: JUMP
000005de: JUMPDEST
000005df: CALLVALUE
000005e0: DUP1
000005e1: ISZERO
000005e2: PUSH2 0x05ea
000005e5: JUMPI
000005e6: PUSH1 0x00
000005e8: DUP1
000005e9: REVERT
000005ea: JUMPDEST
000005eb: POP
000005ec: PUSH1 0x04
000005ee: SLOAD
000005ef: PUSH2 0x027b
000005f2: SWAP1
000005f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000608: AND
00000609: DUP2
0000060a: JUMP
0000060b: JUMPDEST
0000060c: PUSH2 0x0213
0000060f: PUSH2 0x0619
00000612: CALLDATASIZE
00000613: PUSH1 0x04
00000615: PUSH2 0x35c7
00000618: JUMP
00000619: JUMPDEST
0000061a: PUSH2 0x185f
0000061d: JUMP
0000061e: JUMPDEST
0000061f: CALLVALUE
00000620: DUP1
00000621: ISZERO
00000622: PUSH2 0x062a
00000625: JUMPI
00000626: PUSH1 0x00
00000628: DUP1
00000629: REVERT
0000062a: JUMPDEST
0000062b: POP
0000062c: PUSH20 0xb2b01decb6cd36e7396b78d3744482627f22c525
00000641: PUSH2 0x027b
00000644: JUMP
00000645: JUMPDEST
00000646: CALLVALUE
00000647: DUP1
00000648: ISZERO
00000649: PUSH2 0x0651
0000064c: JUMPI
0000064d: PUSH1 0x00
0000064f: DUP1
00000650: REVERT
00000651: JUMPDEST
00000652: POP
00000653: PUSH2 0x0213
00000656: PUSH2 0x0660
00000659: CALLDATASIZE
0000065a: PUSH1 0x04
0000065c: PUSH2 0x362a
0000065f: JUMP
00000660: JUMPDEST
00000661: PUSH2 0x18a2
00000664: JUMP
00000665: JUMPDEST
00000666: PUSH1 0x03
00000668: SLOAD
00000669: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000067e: AND
0000067f: CALLER
00000680: EQ
00000681: DUP1
00000682: ISZERO
00000683: PUSH2 0x0738
00000686: JUMPI
00000687: POP
00000688: PUSH1 0x04
0000068a: DUP1
0000068b: SLOAD
0000068c: PUSH1 0x03
0000068e: SLOAD
0000068f: PUSH1 0x40
00000691: DUP1
00000692: MLOAD
00000693: PUSH32 0x6e296e4500000000000000000000000000000000000000000000000000000000
000006b4: DUP2
000006b5: MSTORE
000006b6: SWAP1
000006b7: MLOAD
000006b8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006cd: SWAP4
000006ce: DUP5
000006cf: AND
000006d0: SWAP5
000006d1: SWAP4
000006d2: SWAP1
000006d3: SWAP3
000006d4: AND
000006d5: SWAP3
000006d6: PUSH4 0x6e296e45
000006db: SWAP3
000006dc: DUP3
000006dd: DUP3
000006de: ADD
000006df: SWAP3
000006e0: PUSH1 0x20
000006e2: SWAP3
000006e3: SWAP1
000006e4: DUP3
000006e5: SWAP1
000006e6: SUB
000006e7: ADD
000006e8: DUP2
000006e9: DUP7
000006ea: GAS
000006eb: STATICCALL
000006ec: ISZERO
000006ed: DUP1
000006ee: ISZERO
000006ef: PUSH2 0x06fc
000006f2: JUMPI
000006f3: RETURNDATASIZE
000006f4: PUSH1 0x00
000006f6: DUP1
000006f7: RETURNDATACOPY
000006f8: RETURNDATASIZE
000006f9: PUSH1 0x00
000006fb: REVERT
000006fc: JUMPDEST
000006fd: POP
000006fe: POP
000006ff: POP
00000700: POP
00000701: PUSH1 0x40
00000703: MLOAD
00000704: RETURNDATASIZE
00000705: PUSH1 0x1f
00000707: NOT
00000708: PUSH1 0x1f
0000070a: DUP3
0000070b: ADD
0000070c: AND
0000070d: DUP3
0000070e: ADD
0000070f: DUP1
00000710: PUSH1 0x40
00000712: MSTORE
00000713: POP
00000714: DUP2
00000715: ADD
00000716: SWAP1
00000717: PUSH2 0x0720
0000071a: SWAP2
0000071b: SWAP1
0000071c: PUSH2 0x3686
0000071f: JUMP
00000720: JUMPDEST
00000721: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000736: AND
00000737: EQ
00000738: JUMPDEST
00000739: PUSH2 0x07c9
0000073c: JUMPI
0000073d: PUSH1 0x40
0000073f: MLOAD
00000740: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000761: DUP2
00000762: MSTORE
00000763: PUSH1 0x20
00000765: PUSH1 0x04
00000767: DUP3
00000768: ADD
00000769: MSTORE
0000076a: PUSH1 0x3e
0000076c: PUSH1 0x24
0000076e: DUP3
0000076f: ADD
00000770: MSTORE
00000771: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
00000792: PUSH1 0x44
00000794: DUP3
00000795: ADD
00000796: MSTORE
00000797: PUSH32 0x792062652063616c6c65642066726f6d20746865204c32206272696467650000
000007b8: PUSH1 0x64
000007ba: DUP3
000007bb: ADD
000007bc: MSTORE
000007bd: PUSH1 0x84
000007bf: ADD
000007c0: JUMPDEST
000007c1: PUSH1 0x40
000007c3: MLOAD
000007c4: DUP1
000007c5: SWAP2
000007c6: SUB
000007c7: SWAP1
000007c8: REVERT
000007c9: JUMPDEST
000007ca: PUSH2 0x07d2
000007cd: DUP8
000007ce: PUSH2 0x1aaa
000007d1: JUMP
000007d2: JUMPDEST
000007d3: ISZERO
000007d4: PUSH2 0x0920
000007d7: JUMPI
000007d8: PUSH2 0x07e1
000007db: DUP8
000007dc: DUP8
000007dd: PUSH2 0x1b0c
000007e0: JUMP
000007e1: JUMPDEST
000007e2: PUSH2 0x0893
000007e5: JUMPI
000007e6: PUSH1 0x40
000007e8: MLOAD
000007e9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000080a: DUP2
0000080b: MSTORE
0000080c: PUSH1 0x20
0000080e: PUSH1 0x04
00000810: DUP3
00000811: ADD
00000812: MSTORE
00000813: PUSH1 0x4a
00000815: PUSH1 0x24
00000817: DUP3
00000818: ADD
00000819: MSTORE
0000081a: PUSH32 0x5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b
0000083b: PUSH1 0x44
0000083d: DUP3
0000083e: ADD
0000083f: MSTORE
00000840: PUSH32 0x656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c
00000861: PUSH1 0x64
00000863: DUP3
00000864: ADD
00000865: MSTORE
00000866: PUSH32 0x6f63616c20746f6b656e00000000000000000000000000000000000000000000
00000887: PUSH1 0x84
00000889: DUP3
0000088a: ADD
0000088b: MSTORE
0000088c: PUSH1 0xa4
0000088e: ADD
0000088f: PUSH2 0x07c0
00000892: JUMP
00000893: JUMPDEST
00000894: PUSH1 0x40
00000896: MLOAD
00000897: PUSH32 0x40c10f1900000000000000000000000000000000000000000000000000000000
000008b8: DUP2
000008b9: MSTORE
000008ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008cf: DUP6
000008d0: DUP2
000008d1: AND
000008d2: PUSH1 0x04
000008d4: DUP4
000008d5: ADD
000008d6: MSTORE
000008d7: PUSH1 0x24
000008d9: DUP3
000008da: ADD
000008db: DUP6
000008dc: SWAP1
000008dd: MSTORE
000008de: DUP9
000008df: AND
000008e0: SWAP1
000008e1: PUSH4 0x40c10f19
000008e6: SWAP1
000008e7: PUSH1 0x44
000008e9: ADD
000008ea: PUSH1 0x00
000008ec: PUSH1 0x40
000008ee: MLOAD
000008ef: DUP1
000008f0: DUP4
000008f1: SUB
000008f2: DUP2
000008f3: PUSH1 0x00
000008f5: DUP8
000008f6: DUP1
000008f7: EXTCODESIZE
000008f8: ISZERO
000008f9: DUP1
000008fa: ISZERO
000008fb: PUSH2 0x0903
000008fe: JUMPI
000008ff: PUSH1 0x00
00000901: DUP1
00000902: REVERT
00000903: JUMPDEST
00000904: POP
00000905: GAS
00000906: CALL
00000907: ISZERO
00000908: DUP1
00000909: ISZERO
0000090a: PUSH2 0x0917
0000090d: JUMPI
0000090e: RETURNDATASIZE
0000090f: PUSH1 0x00
00000911: DUP1
00000912: RETURNDATACOPY
00000913: RETURNDATASIZE
00000914: PUSH1 0x00
00000916: REVERT
00000917: JUMPDEST
00000918: POP
00000919: POP
0000091a: POP
0000091b: POP
0000091c: PUSH2 0x09a2
0000091f: JUMP
00000920: JUMPDEST
00000921: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000936: DUP1
00000937: DUP9
00000938: AND
00000939: PUSH1 0x00
0000093b: SWAP1
0000093c: DUP2
0000093d: MSTORE
0000093e: PUSH1 0x02
00000940: PUSH1 0x20
00000942: SWAP1
00000943: DUP2
00000944: MSTORE
00000945: PUSH1 0x40
00000947: DUP1
00000948: DUP4
00000949: KECCAK256
0000094a: SWAP4
0000094b: DUP11
0000094c: AND
0000094d: DUP4
0000094e: MSTORE
0000094f: SWAP3
00000950: SWAP1
00000951: MSTORE
00000952: KECCAK256
00000953: SLOAD
00000954: PUSH2 0x095e
00000957: SWAP1
00000958: DUP5
00000959: SWAP1
0000095a: PUSH2 0x36a3
0000095d: JUMP
0000095e: JUMPDEST
0000095f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000974: DUP1
00000975: DUP10
00000976: AND
00000977: PUSH1 0x00
00000979: DUP2
0000097a: DUP2
0000097b: MSTORE
0000097c: PUSH1 0x02
0000097e: PUSH1 0x20
00000980: SWAP1
00000981: DUP2
00000982: MSTORE
00000983: PUSH1 0x40
00000985: DUP1
00000986: DUP4
00000987: KECCAK256
00000988: SWAP5
00000989: DUP13
0000098a: AND
0000098b: DUP4
0000098c: MSTORE
0000098d: SWAP4
0000098e: SWAP1
0000098f: MSTORE
00000990: SWAP2
00000991: SWAP1
00000992: SWAP2
00000993: KECCAK256
00000994: SWAP2
00000995: SWAP1
00000996: SWAP2
00000997: SSTORE
00000998: PUSH2 0x09a2
0000099b: SWAP1
0000099c: DUP6
0000099d: DUP6
0000099e: PUSH2 0x1c2c
000009a1: JUMP
000009a2: JUMPDEST
000009a3: PUSH2 0x09e6
000009a6: DUP8
000009a7: DUP8
000009a8: DUP8
000009a9: DUP8
000009aa: DUP8
000009ab: DUP8
000009ac: DUP8
000009ad: DUP1
000009ae: DUP1
000009af: PUSH1 0x1f
000009b1: ADD
000009b2: PUSH1 0x20
000009b4: DUP1
000009b5: SWAP2
000009b6: DIV
000009b7: MUL
000009b8: PUSH1 0x20
000009ba: ADD
000009bb: PUSH1 0x40
000009bd: MLOAD
000009be: SWAP1
000009bf: DUP2
000009c0: ADD
000009c1: PUSH1 0x40
000009c3: MSTORE
000009c4: DUP1
000009c5: SWAP4
000009c6: SWAP3
000009c7: SWAP2
000009c8: SWAP1
000009c9: DUP2
000009ca: DUP2
000009cb: MSTORE
000009cc: PUSH1 0x20
000009ce: ADD
000009cf: DUP4
000009d0: DUP4
000009d1: DUP1
000009d2: DUP3
000009d3: DUP5
000009d4: CALLDATACOPY
000009d5: PUSH1 0x00
000009d7: SWAP3
000009d8: ADD
000009d9: SWAP2
000009da: SWAP1
000009db: SWAP2
000009dc: MSTORE
000009dd: POP
000009de: PUSH2 0x1cb9
000009e1: SWAP3
000009e2: POP
000009e3: POP
000009e4: POP
000009e5: JUMP
000009e6: JUMPDEST
000009e7: POP
000009e8: POP
000009e9: POP
000009ea: POP
000009eb: POP
000009ec: POP
000009ed: POP
000009ee: JUMP
000009ef: JUMPDEST
000009f0: CALLER
000009f1: EXTCODESIZE
000009f2: ISZERO
000009f3: PUSH2 0x0a7e
000009f6: JUMPI
000009f7: PUSH1 0x40
000009f9: MLOAD
000009fa: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000a1b: DUP2
00000a1c: MSTORE
00000a1d: PUSH1 0x20
00000a1f: PUSH1 0x04
00000a21: DUP3
00000a22: ADD
00000a23: MSTORE
00000a24: PUSH1 0x37
00000a26: PUSH1 0x24
00000a28: DUP3
00000a29: ADD
00000a2a: MSTORE
00000a2b: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
00000a4c: PUSH1 0x44
00000a4e: DUP3
00000a4f: ADD
00000a50: MSTORE
00000a51: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000
00000a72: PUSH1 0x64
00000a74: DUP3
00000a75: ADD
00000a76: MSTORE
00000a77: PUSH1 0x84
00000a79: ADD
00000a7a: PUSH2 0x07c0
00000a7d: JUMP
00000a7e: JUMPDEST
00000a7f: PUSH2 0x0ac1
00000a82: CALLER
00000a83: CALLER
00000a84: CALLVALUE
00000a85: DUP7
00000a86: DUP7
00000a87: DUP7
00000a88: DUP1
00000a89: DUP1
00000a8a: PUSH1 0x1f
00000a8c: ADD
00000a8d: PUSH1 0x20
00000a8f: DUP1
00000a90: SWAP2
00000a91: DIV
00000a92: MUL
00000a93: PUSH1 0x20
00000a95: ADD
00000a96: PUSH1 0x40
00000a98: MLOAD
00000a99: SWAP1
00000a9a: DUP2
00000a9b: ADD
00000a9c: PUSH1 0x40
00000a9e: MSTORE
00000a9f: DUP1
00000aa0: SWAP4
00000aa1: SWAP3
00000aa2: SWAP2
00000aa3: SWAP1
00000aa4: DUP2
00000aa5: DUP2
00000aa6: MSTORE
00000aa7: PUSH1 0x20
00000aa9: ADD
00000aaa: DUP4
00000aab: DUP4
00000aac: DUP1
00000aad: DUP3
00000aae: DUP5
00000aaf: CALLDATACOPY
00000ab0: PUSH1 0x00
00000ab2: SWAP3
00000ab3: ADD
00000ab4: SWAP2
00000ab5: SWAP1
00000ab6: SWAP2
00000ab7: MSTORE
00000ab8: POP
00000ab9: PUSH2 0x1d47
00000abc: SWAP3
00000abd: POP
00000abe: POP
00000abf: POP
00000ac0: JUMP
00000ac1: JUMPDEST
00000ac2: POP
00000ac3: POP
00000ac4: POP
00000ac5: JUMP
00000ac6: JUMPDEST
00000ac7: PUSH2 0x0ad3
00000aca: DUP6
00000acb: DUP6
00000acc: DUP6
00000acd: DUP6
00000ace: DUP6
00000acf: PUSH2 0x0ada
00000ad2: JUMP
00000ad3: JUMPDEST
00000ad4: POP
00000ad5: POP
00000ad6: POP
00000ad7: POP
00000ad8: POP
00000ad9: JUMP
00000ada: JUMPDEST
00000adb: PUSH1 0x03
00000add: SLOAD
00000ade: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000af3: AND
00000af4: CALLER
00000af5: EQ
00000af6: DUP1
00000af7: ISZERO
00000af8: PUSH2 0x0bad
00000afb: JUMPI
00000afc: POP
00000afd: PUSH1 0x04
00000aff: DUP1
00000b00: SLOAD
00000b01: PUSH1 0x03
00000b03: SLOAD
00000b04: PUSH1 0x40
00000b06: DUP1
00000b07: MLOAD
00000b08: PUSH32 0x6e296e4500000000000000000000000000000000000000000000000000000000
00000b29: DUP2
00000b2a: MSTORE
00000b2b: SWAP1
00000b2c: MLOAD
00000b2d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b42: SWAP4
00000b43: DUP5
00000b44: AND
00000b45: SWAP5
00000b46: SWAP4
00000b47: SWAP1
00000b48: SWAP3
00000b49: AND
00000b4a: SWAP3
00000b4b: PUSH4 0x6e296e45
00000b50: SWAP3
00000b51: DUP3
00000b52: DUP3
00000b53: ADD
00000b54: SWAP3
00000b55: PUSH1 0x20
00000b57: SWAP3
00000b58: SWAP1
00000b59: DUP3
00000b5a: SWAP1
00000b5b: SUB
00000b5c: ADD
00000b5d: DUP2
00000b5e: DUP7
00000b5f: GAS
00000b60: STATICCALL
00000b61: ISZERO
00000b62: DUP1
00000b63: ISZERO
00000b64: PUSH2 0x0b71
00000b67: JUMPI
00000b68: RETURNDATASIZE
00000b69: PUSH1 0x00
00000b6b: DUP1
00000b6c: RETURNDATACOPY
00000b6d: RETURNDATASIZE
00000b6e: PUSH1 0x00
00000b70: REVERT
00000b71: JUMPDEST
00000b72: POP
00000b73: POP
00000b74: POP
00000b75: POP
00000b76: PUSH1 0x40
00000b78: MLOAD
00000b79: RETURNDATASIZE
00000b7a: PUSH1 0x1f
00000b7c: NOT
00000b7d: PUSH1 0x1f
00000b7f: DUP3
00000b80: ADD
00000b81: AND
00000b82: DUP3
00000b83: ADD
00000b84: DUP1
00000b85: PUSH1 0x40
00000b87: MSTORE
00000b88: POP
00000b89: DUP2
00000b8a: ADD
00000b8b: SWAP1
00000b8c: PUSH2 0x0b95
00000b8f: SWAP2
00000b90: SWAP1
00000b91: PUSH2 0x3686
00000b94: JUMP
00000b95: JUMPDEST
00000b96: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bab: AND
00000bac: EQ
00000bad: JUMPDEST
00000bae: PUSH2 0x0c39
00000bb1: JUMPI
00000bb2: PUSH1 0x40
00000bb4: MLOAD
00000bb5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000bd6: DUP2
00000bd7: MSTORE
00000bd8: PUSH1 0x20
00000bda: PUSH1 0x04
00000bdc: DUP3
00000bdd: ADD
00000bde: MSTORE
00000bdf: PUSH1 0x3e
00000be1: PUSH1 0x24
00000be3: DUP3
00000be4: ADD
00000be5: MSTORE
00000be6: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
00000c07: PUSH1 0x44
00000c09: DUP3
00000c0a: ADD
00000c0b: MSTORE
00000c0c: PUSH32 0x792062652063616c6c65642066726f6d20746865204c32206272696467650000
00000c2d: PUSH1 0x64
00000c2f: DUP3
00000c30: ADD
00000c31: MSTORE
00000c32: PUSH1 0x84
00000c34: ADD
00000c35: PUSH2 0x07c0
00000c38: JUMP
00000c39: JUMPDEST
00000c3a: PUSH2 0x0c41
00000c3d: PUSH2 0x1fa6
00000c40: JUMP
00000c41: JUMPDEST
00000c42: ISZERO
00000c43: PUSH2 0x0cce
00000c46: JUMPI
00000c47: PUSH1 0x40
00000c49: MLOAD
00000c4a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000c6b: DUP2
00000c6c: MSTORE
00000c6d: PUSH1 0x20
00000c6f: PUSH1 0x04
00000c71: DUP3
00000c72: ADD
00000c73: MSTORE
00000c74: PUSH1 0x37
00000c76: PUSH1 0x24
00000c78: DUP3
00000c79: ADD
00000c7a: MSTORE
00000c7b: PUSH32 0x5374616e646172644272696467653a2063616e6e6f7420627269646765204554
00000c9c: PUSH1 0x44
00000c9e: DUP3
00000c9f: ADD
00000ca0: MSTORE
00000ca1: PUSH32 0x48207769746820637573746f6d2067617320746f6b656e000000000000000000
00000cc2: PUSH1 0x64
00000cc4: DUP3
00000cc5: ADD
00000cc6: MSTORE
00000cc7: PUSH1 0x84
00000cc9: ADD
00000cca: PUSH2 0x07c0
00000ccd: JUMP
00000cce: JUMPDEST
00000ccf: DUP3
00000cd0: CALLVALUE
00000cd1: EQ
00000cd2: PUSH2 0x0d5d
00000cd5: JUMPI
00000cd6: PUSH1 0x40
00000cd8: MLOAD
00000cd9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000cfa: DUP2
00000cfb: MSTORE
00000cfc: PUSH1 0x20
00000cfe: PUSH1 0x04
00000d00: DUP3
00000d01: ADD
00000d02: MSTORE
00000d03: PUSH1 0x3a
00000d05: PUSH1 0x24
00000d07: DUP3
00000d08: ADD
00000d09: MSTORE
00000d0a: PUSH32 0x5374616e646172644272696467653a20616d6f756e742073656e7420646f6573
00000d2b: PUSH1 0x44
00000d2d: DUP3
00000d2e: ADD
00000d2f: MSTORE
00000d30: PUSH32 0x206e6f74206d6174636820616d6f756e74207265717569726564000000000000
00000d51: PUSH1 0x64
00000d53: DUP3
00000d54: ADD
00000d55: MSTORE
00000d56: PUSH1 0x84
00000d58: ADD
00000d59: PUSH2 0x07c0
00000d5c: JUMP
00000d5d: JUMPDEST
00000d5e: ADDRESS
00000d5f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d74: DUP6
00000d75: AND
00000d76: SUB
00000d77: PUSH2 0x0e02
00000d7a: JUMPI
00000d7b: PUSH1 0x40
00000d7d: MLOAD
00000d7e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000d9f: DUP2
00000da0: MSTORE
00000da1: PUSH1 0x20
00000da3: PUSH1 0x04
00000da5: DUP3
00000da6: ADD
00000da7: MSTORE
00000da8: PUSH1 0x23
00000daa: PUSH1 0x24
00000dac: DUP3
00000dad: ADD
00000dae: MSTORE
00000daf: PUSH32 0x5374616e646172644272696467653a2063616e6e6f742073656e6420746f2073
00000dd0: PUSH1 0x44
00000dd2: DUP3
00000dd3: ADD
00000dd4: MSTORE
00000dd5: PUSH32 0x656c660000000000000000000000000000000000000000000000000000000000
00000df6: PUSH1 0x64
00000df8: DUP3
00000df9: ADD
00000dfa: MSTORE
00000dfb: PUSH1 0x84
00000dfd: ADD
00000dfe: PUSH2 0x07c0
00000e01: JUMP
00000e02: JUMPDEST
00000e03: PUSH1 0x03
00000e05: SLOAD
00000e06: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e1b: SWAP1
00000e1c: DUP2
00000e1d: AND
00000e1e: SWAP1
00000e1f: DUP6
00000e20: AND
00000e21: SUB
00000e22: PUSH2 0x0ead
00000e25: JUMPI
00000e26: PUSH1 0x40
00000e28: MLOAD
00000e29: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000e4a: DUP2
00000e4b: MSTORE
00000e4c: PUSH1 0x20
00000e4e: PUSH1 0x04
00000e50: DUP3
00000e51: ADD
00000e52: MSTORE
00000e53: PUSH1 0x28
00000e55: PUSH1 0x24
00000e57: DUP3
00000e58: ADD
00000e59: MSTORE
00000e5a: PUSH32 0x5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d
00000e7b: PUSH1 0x44
00000e7d: DUP3
00000e7e: ADD
00000e7f: MSTORE
00000e80: PUSH32 0x657373656e676572000000000000000000000000000000000000000000000000
00000ea1: PUSH1 0x64
00000ea3: DUP3
00000ea4: ADD
00000ea5: MSTORE
00000ea6: PUSH1 0x84
00000ea8: ADD
00000ea9: PUSH2 0x07c0
00000eac: JUMP
00000ead: JUMPDEST
00000eae: PUSH2 0x0eef
00000eb1: DUP6
00000eb2: DUP6
00000eb3: DUP6
00000eb4: DUP6
00000eb5: DUP6
00000eb6: DUP1
00000eb7: DUP1
00000eb8: PUSH1 0x1f
00000eba: ADD
00000ebb: PUSH1 0x20
00000ebd: DUP1
00000ebe: SWAP2
00000ebf: DIV
00000ec0: MUL
00000ec1: PUSH1 0x20
00000ec3: ADD
00000ec4: PUSH1 0x40
00000ec6: MLOAD
00000ec7: SWAP1
00000ec8: DUP2
00000ec9: ADD
00000eca: PUSH1 0x40
00000ecc: MSTORE
00000ecd: DUP1
00000ece: SWAP4
00000ecf: SWAP3
00000ed0: SWAP2
00000ed1: SWAP1
00000ed2: DUP2
00000ed3: DUP2
00000ed4: MSTORE
00000ed5: PUSH1 0x20
00000ed7: ADD
00000ed8: DUP4
00000ed9: DUP4
00000eda: DUP1
00000edb: DUP3
00000edc: DUP5
00000edd: CALLDATACOPY
00000ede: PUSH1 0x00
00000ee0: SWAP3
00000ee1: ADD
00000ee2: SWAP2
00000ee3: SWAP1
00000ee4: SWAP2
00000ee5: MSTORE
00000ee6: POP
00000ee7: PUSH2 0x1fe5
00000eea: SWAP3
00000eeb: POP
00000eec: POP
00000eed: POP
00000eee: JUMP
00000eef: JUMPDEST
00000ef0: PUSH1 0x00
00000ef2: PUSH2 0x0f0c
00000ef5: DUP6
00000ef6: GAS
00000ef7: DUP7
00000ef8: PUSH1 0x40
00000efa: MLOAD
00000efb: DUP1
00000efc: PUSH1 0x20
00000efe: ADD
00000eff: PUSH1 0x40
00000f01: MSTORE
00000f02: DUP1
00000f03: PUSH1 0x00
00000f05: DUP2
00000f06: MSTORE
00000f07: POP
00000f08: PUSH2 0x2058
00000f0b: JUMP
00000f0c: JUMPDEST
00000f0d: SWAP1
00000f0e: POP
00000f0f: DUP1
00000f10: PUSH2 0x0f9b
00000f13: JUMPI
00000f14: PUSH1 0x40
00000f16: MLOAD
00000f17: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000f38: DUP2
00000f39: MSTORE
00000f3a: PUSH1 0x20
00000f3c: PUSH1 0x04
00000f3e: DUP3
00000f3f: ADD
00000f40: MSTORE
00000f41: PUSH1 0x23
00000f43: PUSH1 0x24
00000f45: DUP3
00000f46: ADD
00000f47: MSTORE
00000f48: PUSH32 0x5374616e646172644272696467653a20455448207472616e7366657220666169
00000f69: PUSH1 0x44
00000f6b: DUP3
00000f6c: ADD
00000f6d: MSTORE
00000f6e: PUSH32 0x6c65640000000000000000000000000000000000000000000000000000000000
00000f8f: PUSH1 0x64
00000f91: DUP3
00000f92: ADD
00000f93: MSTORE
00000f94: PUSH1 0x84
00000f96: ADD
00000f97: PUSH2 0x07c0
00000f9a: JUMP
00000f9b: JUMPDEST
00000f9c: POP
00000f9d: POP
00000f9e: POP
00000f9f: POP
00000fa0: POP
00000fa1: POP
00000fa2: JUMP
00000fa3: JUMPDEST
00000fa4: CALLER
00000fa5: EXTCODESIZE
00000fa6: ISZERO
00000fa7: PUSH2 0x1032
00000faa: JUMPI
00000fab: PUSH1 0x40
00000fad: MLOAD
00000fae: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000fcf: DUP2
00000fd0: MSTORE
00000fd1: PUSH1 0x20
00000fd3: PUSH1 0x04
00000fd5: DUP3
00000fd6: ADD
00000fd7: MSTORE
00000fd8: PUSH1 0x37
00000fda: PUSH1 0x24
00000fdc: DUP3
00000fdd: ADD
00000fde: MSTORE
00000fdf: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
00001000: PUSH1 0x44
00001002: DUP3
00001003: ADD
00001004: MSTORE
00001005: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000
00001026: PUSH1 0x64
00001028: DUP3
00001029: ADD
0000102a: MSTORE
0000102b: PUSH1 0x84
0000102d: ADD
0000102e: PUSH2 0x07c0
00001031: JUMP
00001032: JUMPDEST
00001033: PUSH2 0x0f9b
00001036: DUP7
00001037: DUP7
00001038: CALLER
00001039: DUP8
0000103a: DUP8
0000103b: DUP8
0000103c: DUP8
0000103d: PUSH2 0x1418
00001040: JUMP
00001041: JUMPDEST
00001042: PUSH1 0x00
00001044: DUP1
00001045: CHAINID
00001046: PUSH1 0x01
00001048: SUB
00001049: PUSH2 0x1067
0000104c: JUMPI
0000104d: POP
0000104e: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00001063: SWAP2
00001064: SWAP1
00001065: POP
00001066: JUMP
00001067: JUMPDEST
00001068: CHAINID
00001069: PUSH3 0xaa36a7
0000106d: SUB
0000106e: PUSH2 0x108c
00001071: JUMPI
00001072: POP
00001073: PUSH20 0x7b79995e5f793a07bc00c21412e50ecae098e7f9
00001088: SWAP2
00001089: SWAP1
0000108a: POP
0000108b: JUMP
0000108c: JUMPDEST
0000108d: PUSH1 0x40
0000108f: MLOAD
00001090: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000010b1: DUP2
000010b2: MSTORE
000010b3: PUSH1 0x20
000010b5: PUSH1 0x04
000010b7: DUP3
000010b8: ADD
000010b9: MSTORE
000010ba: PUSH1 0x11
000010bc: PUSH1 0x24
000010be: DUP3
000010bf: ADD
000010c0: MSTORE
000010c1: PUSH32 0x556e737570706f7274656420636861696e000000000000000000000000000000
000010e2: PUSH1 0x44
000010e4: DUP3
000010e5: ADD
000010e6: MSTORE
000010e7: PUSH1 0x64
000010e9: ADD
000010ea: PUSH2 0x07c0
000010ed: JUMP
000010ee: JUMPDEST
000010ef: SWAP2
000010f0: SWAP1
000010f1: POP
000010f2: JUMP
000010f3: JUMPDEST
000010f4: CALLER
000010f5: PUSH20 0xb2b01decb6cd36e7396b78d3744482627f22c525
0000110a: EQ
0000110b: PUSH2 0x1196
0000110e: JUMPI
0000110f: PUSH1 0x40
00001111: MLOAD
00001112: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001133: DUP2
00001134: MSTORE
00001135: PUSH1 0x20
00001137: PUSH1 0x04
00001139: DUP3
0000113a: ADD
0000113b: MSTORE
0000113c: PUSH1 0x21
0000113e: PUSH1 0x24
00001140: DUP3
00001141: ADD
00001142: MSTORE
00001143: PUSH32 0x4f6e6c792061646d696e2063616e2063616c6c20746869732066756e6374696f
00001164: PUSH1 0x44
00001166: DUP3
00001167: ADD
00001168: MSTORE
00001169: PUSH32 0x6e00000000000000000000000000000000000000000000000000000000000000
0000118a: PUSH1 0x64
0000118c: DUP3
0000118d: ADD
0000118e: MSTORE
0000118f: PUSH1 0x84
00001191: ADD
00001192: PUSH2 0x07c0
00001195: JUMP
00001196: JUMPDEST
00001197: PUSH2 0x119e
0000119a: PUSH2 0x1041
0000119d: JUMP
0000119e: JUMPDEST
0000119f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011b4: AND
000011b5: PUSH4 0x2e1a7d4d
000011ba: DUP3
000011bb: PUSH1 0x40
000011bd: MLOAD
000011be: DUP3
000011bf: PUSH4 0xffffffff
000011c4: AND
000011c5: PUSH1 0xe0
000011c7: SHL
000011c8: DUP2
000011c9: MSTORE
000011ca: PUSH1 0x04
000011cc: ADD
000011cd: PUSH2 0x11d8
000011d0: SWAP2
000011d1: DUP2
000011d2: MSTORE
000011d3: PUSH1 0x20
000011d5: ADD
000011d6: SWAP1
000011d7: JUMP
000011d8: JUMPDEST
000011d9: PUSH1 0x00
000011db: PUSH1 0x40
000011dd: MLOAD
000011de: DUP1
000011df: DUP4
000011e0: SUB
000011e1: DUP2
000011e2: PUSH1 0x00
000011e4: DUP8
000011e5: DUP1
000011e6: EXTCODESIZE
000011e7: ISZERO
000011e8: DUP1
000011e9: ISZERO
000011ea: PUSH2 0x11f2
000011ed: JUMPI
000011ee: PUSH1 0x00
000011f0: DUP1
000011f1: REVERT
000011f2: JUMPDEST
000011f3: POP
000011f4: GAS
000011f5: CALL
000011f6: ISZERO
000011f7: DUP1
000011f8: ISZERO
000011f9: PUSH2 0x1206
000011fc: JUMPI
000011fd: RETURNDATASIZE
000011fe: PUSH1 0x00
00001200: DUP1
00001201: RETURNDATACOPY
00001202: RETURNDATASIZE
00001203: PUSH1 0x00
00001205: REVERT
00001206: JUMPDEST
00001207: POP
00001208: POP
00001209: POP
0000120a: POP
0000120b: DUP2
0000120c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001221: AND
00001222: PUSH4 0x8b4c40b0
00001227: DUP3
00001228: PUSH1 0x40
0000122a: MLOAD
0000122b: DUP3
0000122c: PUSH4 0xffffffff
00001231: AND
00001232: PUSH1 0xe0
00001234: SHL
00001235: DUP2
00001236: MSTORE
00001237: PUSH1 0x04
00001239: ADD
0000123a: PUSH1 0x00
0000123c: PUSH1 0x40
0000123e: MLOAD
0000123f: DUP1
00001240: DUP4
00001241: SUB
00001242: DUP2
00001243: DUP6
00001244: DUP9
00001245: DUP1
00001246: EXTCODESIZE
00001247: ISZERO
00001248: DUP1
00001249: ISZERO
0000124a: PUSH2 0x1252
0000124d: JUMPI
0000124e: PUSH1 0x00
00001250: DUP1
00001251: REVERT
00001252: JUMPDEST
00001253: POP
00001254: GAS
00001255: CALL
00001256: ISZERO
00001257: DUP1
00001258: ISZERO
00001259: PUSH2 0x09e6
0000125c: JUMPI
0000125d: RETURNDATASIZE
0000125e: PUSH1 0x00
00001260: DUP1
00001261: RETURNDATACOPY
00001262: RETURNDATASIZE
00001263: PUSH1 0x00
00001265: REVERT
00001266: JUMPDEST
00001267: PUSH1 0x40
00001269: MLOAD
0000126a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000128b: DUP2
0000128c: MSTORE
0000128d: PUSH1 0x20
0000128f: PUSH1 0x04
00001291: DUP3
00001292: ADD
00001293: MSTORE
00001294: PUSH1 0x31
00001296: PUSH1 0x24
00001298: DUP3
00001299: ADD
0000129a: MSTORE
0000129b: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
000012bc: PUSH1 0x44
000012be: DUP3
000012bf: ADD
000012c0: MSTORE
000012c1: PUSH32 0x792062652063616c6c6564206f6e204c32000000000000000000000000000000
000012e2: PUSH1 0x64
000012e4: DUP3
000012e5: ADD
000012e6: MSTORE
000012e7: PUSH1 0x84
000012e9: ADD
000012ea: PUSH2 0x07c0
000012ed: JUMP
000012ee: JUMPDEST
000012ef: PUSH2 0x09e6
000012f2: DUP8
000012f3: DUP8
000012f4: CALLER
000012f5: DUP9
000012f6: DUP9
000012f7: DUP9
000012f8: DUP9
000012f9: DUP9
000012fa: DUP1
000012fb: DUP1
000012fc: PUSH1 0x1f
000012fe: ADD
000012ff: PUSH1 0x20
00001301: DUP1
00001302: SWAP2
00001303: DIV
00001304: MUL
00001305: PUSH1 0x20
00001307: ADD
00001308: PUSH1 0x40
0000130a: MLOAD
0000130b: SWAP1
0000130c: DUP2
0000130d: ADD
0000130e: PUSH1 0x40
00001310: MSTORE
00001311: DUP1
00001312: SWAP4
00001313: SWAP3
00001314: SWAP2
00001315: SWAP1
00001316: DUP2
00001317: DUP2
00001318: MSTORE
00001319: PUSH1 0x20
0000131b: ADD
0000131c: DUP4
0000131d: DUP4
0000131e: DUP1
0000131f: DUP3
00001320: DUP5
00001321: CALLDATACOPY
00001322: PUSH1 0x00
00001324: SWAP3
00001325: ADD
00001326: SWAP2
00001327: SWAP1
00001328: SWAP2
00001329: MSTORE
0000132a: POP
0000132b: PUSH2 0x2070
0000132e: SWAP3
0000132f: POP
00001330: POP
00001331: POP
00001332: JUMP
00001333: JUMPDEST
00001334: CALLER
00001335: EXTCODESIZE
00001336: ISZERO
00001337: PUSH2 0x13c2
0000133a: JUMPI
0000133b: PUSH1 0x40
0000133d: MLOAD
0000133e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000135f: DUP2
00001360: MSTORE
00001361: PUSH1 0x20
00001363: PUSH1 0x04
00001365: DUP3
00001366: ADD
00001367: MSTORE
00001368: PUSH1 0x37
0000136a: PUSH1 0x24
0000136c: DUP3
0000136d: ADD
0000136e: MSTORE
0000136f: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
00001390: PUSH1 0x44
00001392: DUP3
00001393: ADD
00001394: MSTORE
00001395: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000
000013b6: PUSH1 0x64
000013b8: DUP3
000013b9: ADD
000013ba: MSTORE
000013bb: PUSH1 0x84
000013bd: ADD
000013be: PUSH2 0x07c0
000013c1: JUMP
000013c2: JUMPDEST
000013c3: PUSH2 0x0f9b
000013c6: DUP7
000013c7: DUP7
000013c8: CALLER
000013c9: CALLER
000013ca: DUP9
000013cb: DUP9
000013cc: DUP9
000013cd: DUP9
000013ce: DUP1
000013cf: DUP1
000013d0: PUSH1 0x1f
000013d2: ADD
000013d3: PUSH1 0x20
000013d5: DUP1
000013d6: SWAP2
000013d7: DIV
000013d8: MUL
000013d9: PUSH1 0x20
000013db: ADD
000013dc: PUSH1 0x40
000013de: MLOAD
000013df: SWAP1
000013e0: DUP2
000013e1: ADD
000013e2: PUSH1 0x40
000013e4: MSTORE
000013e5: DUP1
000013e6: SWAP4
000013e7: SWAP3
000013e8: SWAP2
000013e9: SWAP1
000013ea: DUP2
000013eb: DUP2
000013ec: MSTORE
000013ed: PUSH1 0x20
000013ef: ADD
000013f0: DUP4
000013f1: DUP4
000013f2: DUP1
000013f3: DUP3
000013f4: DUP5
000013f5: CALLDATACOPY
000013f6: PUSH1 0x00
000013f8: SWAP3
000013f9: ADD
000013fa: SWAP2
000013fb: SWAP1
000013fc: SWAP2
000013fd: MSTORE
000013fe: POP
000013ff: PUSH2 0x2083
00001402: SWAP3
00001403: POP
00001404: POP
00001405: POP
00001406: JUMP
00001407: JUMPDEST
00001408: PUSH2 0x09e6
0000140b: DUP8
0000140c: DUP8
0000140d: DUP8
0000140e: DUP8
0000140f: DUP8
00001410: DUP8
00001411: DUP8
00001412: PUSH1 0x00
00001414: PUSH2 0x2092
00001417: JUMP
00001418: JUMPDEST
00001419: DUP4
0000141a: CALLVALUE
0000141b: EQ
0000141c: PUSH2 0x1481
0000141f: JUMPI
00001420: PUSH1 0x40
00001422: MLOAD
00001423: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001444: DUP2
00001445: MSTORE
00001446: PUSH1 0x20
00001448: PUSH1 0x04
0000144a: DUP3
0000144b: ADD
0000144c: MSTORE
0000144d: PUSH1 0x0e
0000144f: PUSH1 0x24
00001451: DUP3
00001452: ADD
00001453: MSTORE
00001454: PUSH32 0x496e76616c696420616d6f756e74000000000000000000000000000000000000
00001475: PUSH1 0x44
00001477: DUP3
00001478: ADD
00001479: MSTORE
0000147a: PUSH1 0x64
0000147c: ADD
0000147d: PUSH2 0x07c0
00001480: JUMP
00001481: JUMPDEST
00001482: PUSH1 0x00
00001484: CALLVALUE
00001485: GT
00001486: PUSH2 0x14eb
00001489: JUMPI
0000148a: PUSH1 0x40
0000148c: MLOAD
0000148d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000014ae: DUP2
000014af: MSTORE
000014b0: PUSH1 0x20
000014b2: PUSH1 0x04
000014b4: DUP3
000014b5: ADD
000014b6: MSTORE
000014b7: PUSH1 0x0e
000014b9: PUSH1 0x24
000014bb: DUP3
000014bc: ADD
000014bd: MSTORE
000014be: PUSH32 0x496e76616c696420616d6f756e74000000000000000000000000000000000000
000014df: PUSH1 0x44
000014e1: DUP3
000014e2: ADD
000014e3: MSTORE
000014e4: PUSH1 0x64
000014e6: ADD
000014e7: PUSH2 0x07c0
000014ea: JUMP
000014eb: JUMPDEST
000014ec: DUP7
000014ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001502: AND
00001503: PUSH4 0xd0e30db0
00001508: DUP6
00001509: PUSH1 0x40
0000150b: MLOAD
0000150c: DUP3
0000150d: PUSH4 0xffffffff
00001512: AND
00001513: PUSH1 0xe0
00001515: SHL
00001516: DUP2
00001517: MSTORE
00001518: PUSH1 0x04
0000151a: ADD
0000151b: PUSH1 0x00
0000151d: PUSH1 0x40
0000151f: MLOAD
00001520: DUP1
00001521: DUP4
00001522: SUB
00001523: DUP2
00001524: DUP6
00001525: DUP9
00001526: DUP1
00001527: EXTCODESIZE
00001528: ISZERO
00001529: DUP1
0000152a: ISZERO
0000152b: PUSH2 0x1533
0000152e: JUMPI
0000152f: PUSH1 0x00
00001531: DUP1
00001532: REVERT
00001533: JUMPDEST
00001534: POP
00001535: GAS
00001536: CALL
00001537: ISZERO
00001538: DUP1
00001539: ISZERO
0000153a: PUSH2 0x1547
0000153d: JUMPI
0000153e: RETURNDATASIZE
0000153f: PUSH1 0x00
00001541: DUP1
00001542: RETURNDATACOPY
00001543: RETURNDATASIZE
00001544: PUSH1 0x00
00001546: REVERT
00001547: JUMPDEST
00001548: POP
00001549: POP
0000154a: POP
0000154b: POP
0000154c: POP
0000154d: PUSH2 0x09e6
00001550: DUP8
00001551: DUP8
00001552: CALLER
00001553: DUP9
00001554: DUP9
00001555: DUP9
00001556: DUP9
00001557: DUP9
00001558: DUP1
00001559: DUP1
0000155a: PUSH1 0x1f
0000155c: ADD
0000155d: PUSH1 0x20
0000155f: DUP1
00001560: SWAP2
00001561: DIV
00001562: MUL
00001563: PUSH1 0x20
00001565: ADD
00001566: PUSH1 0x40
00001568: MLOAD
00001569: SWAP1
0000156a: DUP2
0000156b: ADD
0000156c: PUSH1 0x40
0000156e: MSTORE
0000156f: DUP1
00001570: SWAP4
00001571: SWAP3
00001572: SWAP2
00001573: SWAP1
00001574: DUP2
00001575: DUP2
00001576: MSTORE
00001577: PUSH1 0x20
00001579: ADD
0000157a: DUP4
0000157b: DUP4
0000157c: DUP1
0000157d: DUP3
0000157e: DUP5
0000157f: CALLDATACOPY
00001580: PUSH1 0x00
00001582: SWAP3
00001583: ADD
00001584: DUP3
00001585: SWAP1
00001586: MSTORE
00001587: POP
00001588: SWAP3
00001589: POP
0000158a: PUSH1 0x01
0000158c: SWAP2
0000158d: POP
0000158e: PUSH2 0x2323
00001591: SWAP1
00001592: POP
00001593: JUMP
00001594: JUMPDEST
00001595: PUSH2 0x09e6
00001598: DUP8
00001599: DUP8
0000159a: CALLER
0000159b: DUP9
0000159c: DUP9
0000159d: DUP9
0000159e: DUP9
0000159f: DUP9
000015a0: DUP1
000015a1: DUP1
000015a2: PUSH1 0x1f
000015a4: ADD
000015a5: PUSH1 0x20
000015a7: DUP1
000015a8: SWAP2
000015a9: DIV
000015aa: MUL
000015ab: PUSH1 0x20
000015ad: ADD
000015ae: PUSH1 0x40
000015b0: MLOAD
000015b1: SWAP1
000015b2: DUP2
000015b3: ADD
000015b4: PUSH1 0x40
000015b6: MSTORE
000015b7: DUP1
000015b8: SWAP4
000015b9: SWAP3
000015ba: SWAP2
000015bb: SWAP1
000015bc: DUP2
000015bd: DUP2
000015be: MSTORE
000015bf: PUSH1 0x20
000015c1: ADD
000015c2: DUP4
000015c3: DUP4
000015c4: DUP1
000015c5: DUP3
000015c6: DUP5
000015c7: CALLDATACOPY
000015c8: PUSH1 0x00
000015ca: SWAP3
000015cb: ADD
000015cc: SWAP2
000015cd: SWAP1
000015ce: SWAP2
000015cf: MSTORE
000015d0: POP
000015d1: PUSH2 0x2083
000015d4: SWAP3
000015d5: POP
000015d6: POP
000015d7: POP
000015d8: JUMP
000015d9: JUMPDEST
000015da: CALLER
000015db: EXTCODESIZE
000015dc: ISZERO
000015dd: PUSH2 0x1668
000015e0: JUMPI
000015e1: PUSH1 0x40
000015e3: MLOAD
000015e4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001605: DUP2
00001606: MSTORE
00001607: PUSH1 0x20
00001609: PUSH1 0x04
0000160b: DUP3
0000160c: ADD
0000160d: MSTORE
0000160e: PUSH1 0x37
00001610: PUSH1 0x24
00001612: DUP3
00001613: ADD
00001614: MSTORE
00001615: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
00001636: PUSH1 0x44
00001638: DUP3
00001639: ADD
0000163a: MSTORE
0000163b: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000
0000165c: PUSH1 0x64
0000165e: DUP3
0000165f: ADD
00001660: MSTORE
00001661: PUSH1 0x84
00001663: ADD
00001664: PUSH2 0x07c0
00001667: JUMP
00001668: JUMPDEST
00001669: PUSH2 0x0f9b
0000166c: DUP7
0000166d: DUP7
0000166e: CALLER
0000166f: CALLER
00001670: DUP9
00001671: DUP9
00001672: DUP9
00001673: DUP9
00001674: DUP1
00001675: DUP1
00001676: PUSH1 0x1f
00001678: ADD
00001679: PUSH1 0x20
0000167b: DUP1
0000167c: SWAP2
0000167d: DIV
0000167e: MUL
0000167f: PUSH1 0x20
00001681: ADD
00001682: PUSH1 0x40
00001684: MLOAD
00001685: SWAP1
00001686: DUP2
00001687: ADD
00001688: PUSH1 0x40
0000168a: MSTORE
0000168b: DUP1
0000168c: SWAP4
0000168d: SWAP3
0000168e: SWAP2
0000168f: SWAP1
00001690: DUP2
00001691: DUP2
00001692: MSTORE
00001693: PUSH1 0x20
00001695: ADD
00001696: DUP4
00001697: DUP4
00001698: DUP1
00001699: DUP3
0000169a: DUP5
0000169b: CALLDATACOPY
0000169c: PUSH1 0x00
0000169e: SWAP3
0000169f: ADD
000016a0: SWAP2
000016a1: SWAP1
000016a2: SWAP2
000016a3: MSTORE
000016a4: POP
000016a5: PUSH2 0x2070
000016a8: SWAP3
000016a9: POP
000016aa: POP
000016ab: POP
000016ac: JUMP
000016ad: JUMPDEST
000016ae: PUSH2 0x16ef
000016b1: CALLER
000016b2: DUP6
000016b3: DUP6
000016b4: DUP6
000016b5: DUP6
000016b6: DUP1
000016b7: DUP1
000016b8: PUSH1 0x1f
000016ba: ADD
000016bb: PUSH1 0x20
000016bd: DUP1
000016be: SWAP2
000016bf: DIV
000016c0: MUL
000016c1: PUSH1 0x20
000016c3: ADD
000016c4: PUSH1 0x40
000016c6: MLOAD
000016c7: SWAP1
000016c8: DUP2
000016c9: ADD
000016ca: PUSH1 0x40
000016cc: MSTORE
000016cd: DUP1
000016ce: SWAP4
000016cf: SWAP3
000016d0: SWAP2
000016d1: SWAP1
000016d2: DUP2
000016d3: DUP2
000016d4: MSTORE
000016d5: PUSH1 0x20
000016d7: ADD
000016d8: DUP4
000016d9: DUP4
000016da: DUP1
000016db: DUP3
000016dc: DUP5
000016dd: CALLDATACOPY
000016de: PUSH1 0x00
000016e0: SWAP3
000016e1: ADD
000016e2: SWAP2
000016e3: SWAP1
000016e4: SWAP2
000016e5: MSTORE
000016e6: POP
000016e7: PUSH2 0x2385
000016ea: SWAP3
000016eb: POP
000016ec: POP
000016ed: POP
000016ee: JUMP
000016ef: JUMPDEST
000016f0: POP
000016f1: POP
000016f2: POP
000016f3: POP
000016f4: JUMP
000016f5: JUMPDEST
000016f6: PUSH2 0x09e6
000016f9: DUP8
000016fa: DUP8
000016fb: DUP8
000016fc: DUP8
000016fd: DUP8
000016fe: DUP8
000016ff: DUP8
00001700: PUSH2 0x0665
00001703: JUMP
00001704: JUMPDEST
00001705: CALLER
00001706: EXTCODESIZE
00001707: ISZERO
00001708: PUSH2 0x1793
0000170b: JUMPI
0000170c: PUSH1 0x40
0000170e: MLOAD
0000170f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001730: DUP2
00001731: MSTORE
00001732: PUSH1 0x20
00001734: PUSH1 0x04
00001736: DUP3
00001737: ADD
00001738: MSTORE
00001739: PUSH1 0x37
0000173b: PUSH1 0x24
0000173d: DUP3
0000173e: ADD
0000173f: MSTORE
00001740: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
00001761: PUSH1 0x44
00001763: DUP3
00001764: ADD
00001765: MSTORE
00001766: PUSH32 0x792062652063616c6c65642066726f6d20616e20454f41000000000000000000
00001787: PUSH1 0x64
00001789: DUP3
0000178a: ADD
0000178b: MSTORE
0000178c: PUSH1 0x84
0000178e: ADD
0000178f: PUSH2 0x07c0
00001792: JUMP
00001793: JUMPDEST
00001794: PUSH2 0x0ac1
00001797: CALLER
00001798: CALLER
00001799: DUP6
0000179a: DUP6
0000179b: DUP6
0000179c: DUP1
0000179d: DUP1
0000179e: PUSH1 0x1f
000017a0: ADD
000017a1: PUSH1 0x20
000017a3: DUP1
000017a4: SWAP2
000017a5: DIV
000017a6: MUL
000017a7: PUSH1 0x20
000017a9: ADD
000017aa: PUSH1 0x40
000017ac: MLOAD
000017ad: SWAP1
000017ae: DUP2
000017af: ADD
000017b0: PUSH1 0x40
000017b2: MSTORE
000017b3: DUP1
000017b4: SWAP4
000017b5: SWAP3
000017b6: SWAP2
000017b7: SWAP1
000017b8: DUP2
000017b9: DUP2
000017ba: MSTORE
000017bb: PUSH1 0x20
000017bd: ADD
000017be: DUP4
000017bf: DUP4
000017c0: DUP1
000017c1: DUP3
000017c2: DUP5
000017c3: CALLDATACOPY
000017c4: PUSH1 0x00
000017c6: SWAP3
000017c7: ADD
000017c8: SWAP2
000017c9: SWAP1
000017ca: SWAP2
000017cb: MSTORE
000017cc: POP
000017cd: PUSH2 0x2385
000017d0: SWAP3
000017d1: POP
000017d2: POP
000017d3: POP
000017d4: JUMP
000017d5: JUMPDEST
000017d6: PUSH1 0x00
000017d8: PUSH1 0x40
000017da: MLOAD
000017db: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000017fc: DUP2
000017fd: MSTORE
000017fe: PUSH1 0x20
00001800: PUSH1 0x04
00001802: DUP3
00001803: ADD
00001804: MSTORE
00001805: PUSH1 0x31
00001807: PUSH1 0x24
00001809: DUP3
0000180a: ADD
0000180b: MSTORE
0000180c: PUSH32 0x5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c
0000182d: PUSH1 0x44
0000182f: DUP3
00001830: ADD
00001831: MSTORE
00001832: PUSH32 0x792062652063616c6c6564206f6e204c32000000000000000000000000000000
00001853: PUSH1 0x64
00001855: DUP3
00001856: ADD
00001857: MSTORE
00001858: PUSH1 0x84
0000185a: ADD
0000185b: PUSH2 0x07c0
0000185e: JUMP
0000185f: JUMPDEST
00001860: PUSH2 0x16ef
00001863: CALLER
00001864: DUP6
00001865: CALLVALUE
00001866: DUP7
00001867: DUP7
00001868: DUP7
00001869: DUP1
0000186a: DUP1
0000186b: PUSH1 0x1f
0000186d: ADD
0000186e: PUSH1 0x20
00001870: DUP1
00001871: SWAP2
00001872: DIV
00001873: MUL
00001874: PUSH1 0x20
00001876: ADD
00001877: PUSH1 0x40
00001879: MLOAD
0000187a: SWAP1
0000187b: DUP2
0000187c: ADD
0000187d: PUSH1 0x40
0000187f: MSTORE
00001880: DUP1
00001881: SWAP4
00001882: SWAP3
00001883: SWAP2
00001884: SWAP1
00001885: DUP2
00001886: DUP2
00001887: MSTORE
00001888: PUSH1 0x20
0000188a: ADD
0000188b: DUP4
0000188c: DUP4
0000188d: DUP1
0000188e: DUP3
0000188f: DUP5
00001890: CALLDATACOPY
00001891: PUSH1 0x00
00001893: SWAP3
00001894: ADD
00001895: SWAP2
00001896: SWAP1
00001897: SWAP2
00001898: MSTORE
00001899: POP
0000189a: PUSH2 0x1d47
0000189d: SWAP3
0000189e: POP
0000189f: POP
000018a0: POP
000018a1: JUMP
000018a2: JUMPDEST
000018a3: PUSH1 0x00
000018a5: SLOAD
000018a6: PUSH2 0x0100
000018a9: SWAP1
000018aa: DIV
000018ab: PUSH1 0xff
000018ad: AND
000018ae: ISZERO
000018af: DUP1
000018b0: DUP1
000018b1: ISZERO
000018b2: PUSH2 0x18c2
000018b5: JUMPI
000018b6: POP
000018b7: PUSH1 0x00
000018b9: SLOAD
000018ba: PUSH1 0x01
000018bc: PUSH1 0xff
000018be: SWAP1
000018bf: SWAP2
000018c0: AND
000018c1: LT
000018c2: JUMPDEST
000018c3: DUP1
000018c4: PUSH2 0x18dc
000018c7: JUMPI
000018c8: POP
000018c9: ADDRESS
000018ca: EXTCODESIZE
000018cb: ISZERO
000018cc: DUP1
000018cd: ISZERO
000018ce: PUSH2 0x18dc
000018d1: JUMPI
000018d2: POP
000018d3: PUSH1 0x00
000018d5: SLOAD
000018d6: PUSH1 0xff
000018d8: AND
000018d9: PUSH1 0x01
000018db: EQ
000018dc: JUMPDEST
000018dd: PUSH2 0x1968
000018e0: JUMPI
000018e1: PUSH1 0x40
000018e3: MLOAD
000018e4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001905: DUP2
00001906: MSTORE
00001907: PUSH1 0x20
00001909: PUSH1 0x04
0000190b: DUP3
0000190c: ADD
0000190d: MSTORE
0000190e: PUSH1 0x2e
00001910: PUSH1 0x24
00001912: DUP3
00001913: ADD
00001914: MSTORE
00001915: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00001936: PUSH1 0x44
00001938: DUP3
00001939: ADD
0000193a: MSTORE
0000193b: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
0000195c: PUSH1 0x64
0000195e: DUP3
0000195f: ADD
00001960: MSTORE
00001961: PUSH1 0x84
00001963: ADD
00001964: PUSH2 0x07c0
00001967: JUMP
00001968: JUMPDEST
00001969: PUSH1 0x00
0000196b: DUP1
0000196c: SLOAD
0000196d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
0000198e: AND
0000198f: PUSH1 0x01
00001991: OR
00001992: SWAP1
00001993: SSTORE
00001994: DUP1
00001995: ISZERO
00001996: PUSH2 0x19c6
00001999: JUMPI
0000199a: PUSH1 0x00
0000199c: DUP1
0000199d: SLOAD
0000199e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
000019bf: AND
000019c0: PUSH2 0x0100
000019c3: OR
000019c4: SWAP1
000019c5: SSTORE
000019c6: JUMPDEST
000019c7: PUSH1 0x32
000019c9: DUP1
000019ca: SLOAD
000019cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019e0: DUP1
000019e1: DUP8
000019e2: AND
000019e3: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001a04: SWAP3
00001a05: DUP4
00001a06: AND
00001a07: OR
00001a08: SWAP1
00001a09: SWAP3
00001a0a: SSTORE
00001a0b: PUSH1 0x33
00001a0d: DUP1
00001a0e: SLOAD
00001a0f: SWAP3
00001a10: DUP7
00001a11: AND
00001a12: SWAP3
00001a13: SWAP1
00001a14: SWAP2
00001a15: AND
00001a16: SWAP2
00001a17: SWAP1
00001a18: SWAP2
00001a19: OR
00001a1a: SWAP1
00001a1b: SSTORE
00001a1c: PUSH2 0x1a25
00001a1f: DUP6
00001a20: DUP4
00001a21: PUSH2 0x2392
00001a24: JUMP
00001a25: JUMPDEST
00001a26: DUP1
00001a27: ISZERO
00001a28: PUSH2 0x0ad3
00001a2b: JUMPI
00001a2c: PUSH1 0x00
00001a2e: DUP1
00001a2f: SLOAD
00001a30: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
00001a51: AND
00001a52: SWAP1
00001a53: SSTORE
00001a54: PUSH1 0x40
00001a56: MLOAD
00001a57: PUSH1 0x01
00001a59: DUP2
00001a5a: MSTORE
00001a5b: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
00001a7c: SWAP1
00001a7d: PUSH1 0x20
00001a7f: ADD
00001a80: PUSH1 0x40
00001a82: MLOAD
00001a83: DUP1
00001a84: SWAP2
00001a85: SUB
00001a86: SWAP1
00001a87: LOG1
00001a88: POP
00001a89: POP
00001a8a: POP
00001a8b: POP
00001a8c: POP
00001a8d: JUMP
00001a8e: JUMPDEST
00001a8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001aa4: AND
00001aa5: EXTCODESIZE
00001aa6: ISZERO
00001aa7: ISZERO
00001aa8: SWAP1
00001aa9: JUMP
00001aaa: JUMPDEST
00001aab: PUSH1 0x00
00001aad: PUSH2 0x1ad6
00001ab0: DUP3
00001ab1: PUSH32 0x1d1d8b6300000000000000000000000000000000000000000000000000000000
00001ad2: PUSH2 0x247c
00001ad5: JUMP
00001ad6: JUMPDEST
00001ad7: DUP1
00001ad8: PUSH2 0x1b06
00001adb: JUMPI
00001adc: POP
00001add: PUSH2 0x1b06
00001ae0: DUP3
00001ae1: PUSH32 0xec4fc8e300000000000000000000000000000000000000000000000000000000
00001b02: PUSH2 0x247c
00001b05: JUMP
00001b06: JUMPDEST
00001b07: SWAP3
00001b08: SWAP2
00001b09: POP
00001b0a: POP
00001b0b: JUMP
00001b0c: JUMPDEST
00001b0d: PUSH1 0x00
00001b0f: PUSH2 0x1b38
00001b12: DUP4
00001b13: PUSH32 0x1d1d8b6300000000000000000000000000000000000000000000000000000000
00001b34: PUSH2 0x247c
00001b37: JUMP
00001b38: JUMPDEST
00001b39: ISZERO
00001b3a: PUSH2 0x1be1
00001b3d: JUMPI
00001b3e: DUP3
00001b3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b54: AND
00001b55: PUSH4 0xc01e1bd6
00001b5a: PUSH1 0x40
00001b5c: MLOAD
00001b5d: DUP2
00001b5e: PUSH4 0xffffffff
00001b63: AND
00001b64: PUSH1 0xe0
00001b66: SHL
00001b67: DUP2
00001b68: MSTORE
00001b69: PUSH1 0x04
00001b6b: ADD
00001b6c: PUSH1 0x20
00001b6e: PUSH1 0x40
00001b70: MLOAD
00001b71: DUP1
00001b72: DUP4
00001b73: SUB
00001b74: DUP2
00001b75: DUP7
00001b76: GAS
00001b77: STATICCALL
00001b78: ISZERO
00001b79: DUP1
00001b7a: ISZERO
00001b7b: PUSH2 0x1b88
00001b7e: JUMPI
00001b7f: RETURNDATASIZE
00001b80: PUSH1 0x00
00001b82: DUP1
00001b83: RETURNDATACOPY
00001b84: RETURNDATASIZE
00001b85: PUSH1 0x00
00001b87: REVERT
00001b88: JUMPDEST
00001b89: POP
00001b8a: POP
00001b8b: POP
00001b8c: POP
00001b8d: PUSH1 0x40
00001b8f: MLOAD
00001b90: RETURNDATASIZE
00001b91: PUSH1 0x1f
00001b93: NOT
00001b94: PUSH1 0x1f
00001b96: DUP3
00001b97: ADD
00001b98: AND
00001b99: DUP3
00001b9a: ADD
00001b9b: DUP1
00001b9c: PUSH1 0x40
00001b9e: MSTORE
00001b9f: POP
00001ba0: DUP2
00001ba1: ADD
00001ba2: SWAP1
00001ba3: PUSH2 0x1bac
00001ba6: SWAP2
00001ba7: SWAP1
00001ba8: PUSH2 0x3686
00001bab: JUMP
00001bac: JUMPDEST
00001bad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bc2: AND
00001bc3: DUP3
00001bc4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bd9: AND
00001bda: EQ
00001bdb: SWAP1
00001bdc: POP
00001bdd: PUSH2 0x1b06
00001be0: JUMP
00001be1: JUMPDEST
00001be2: DUP3
00001be3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bf8: AND
00001bf9: PUSH4 0xd6c0b2c4
00001bfe: PUSH1 0x40
00001c00: MLOAD
00001c01: DUP2
00001c02: PUSH4 0xffffffff
00001c07: AND
00001c08: PUSH1 0xe0
00001c0a: SHL
00001c0b: DUP2
00001c0c: MSTORE
00001c0d: PUSH1 0x04
00001c0f: ADD
00001c10: PUSH1 0x20
00001c12: PUSH1 0x40
00001c14: MLOAD
00001c15: DUP1
00001c16: DUP4
00001c17: SUB
00001c18: DUP2
00001c19: DUP7
00001c1a: GAS
00001c1b: STATICCALL
00001c1c: ISZERO
00001c1d: DUP1
00001c1e: ISZERO
00001c1f: PUSH2 0x1b88
00001c22: JUMPI
00001c23: RETURNDATASIZE
00001c24: PUSH1 0x00
00001c26: DUP1
00001c27: RETURNDATACOPY
00001c28: RETURNDATASIZE
00001c29: PUSH1 0x00
00001c2b: REVERT
00001c2c: JUMPDEST
00001c2d: PUSH1 0x40
00001c2f: DUP1
00001c30: MLOAD
00001c31: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c46: DUP5
00001c47: AND
00001c48: PUSH1 0x24
00001c4a: DUP3
00001c4b: ADD
00001c4c: MSTORE
00001c4d: PUSH1 0x44
00001c4f: DUP1
00001c50: DUP3
00001c51: ADD
00001c52: DUP5
00001c53: SWAP1
00001c54: MSTORE
00001c55: DUP3
00001c56: MLOAD
00001c57: DUP1
00001c58: DUP4
00001c59: SUB
00001c5a: SWAP1
00001c5b: SWAP2
00001c5c: ADD
00001c5d: DUP2
00001c5e: MSTORE
00001c5f: PUSH1 0x64
00001c61: SWAP1
00001c62: SWAP2
00001c63: ADD
00001c64: SWAP1
00001c65: SWAP2
00001c66: MSTORE
00001c67: PUSH1 0x20
00001c69: DUP2
00001c6a: ADD
00001c6b: DUP1
00001c6c: MLOAD
00001c6d: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001c8a: AND
00001c8b: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00001cac: OR
00001cad: SWAP1
00001cae: MSTORE
00001caf: PUSH2 0x0ac1
00001cb2: SWAP1
00001cb3: DUP5
00001cb4: SWAP1
00001cb5: PUSH2 0x249f
00001cb8: JUMP
00001cb9: JUMPDEST
00001cba: DUP4
00001cbb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001cd0: AND
00001cd1: DUP6
00001cd2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ce7: AND
00001ce8: DUP8
00001ce9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001cfe: AND
00001cff: PUSH32 0x3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3
00001d20: DUP7
00001d21: DUP7
00001d22: DUP7
00001d23: PUSH1 0x40
00001d25: MLOAD
00001d26: PUSH2 0x1d31
00001d29: SWAP4
00001d2a: SWAP3
00001d2b: SWAP2
00001d2c: SWAP1
00001d2d: PUSH2 0x36e1
00001d30: JUMP
00001d31: JUMPDEST
00001d32: PUSH1 0x40
00001d34: MLOAD
00001d35: DUP1
00001d36: SWAP2
00001d37: SUB
00001d38: SWAP1
00001d39: LOG4
00001d3a: PUSH2 0x0f9b
00001d3d: DUP7
00001d3e: DUP7
00001d3f: DUP7
00001d40: DUP7
00001d41: DUP7
00001d42: DUP7
00001d43: PUSH2 0x25ab
00001d46: JUMP
00001d47: JUMPDEST
00001d48: PUSH2 0x1d4f
00001d4b: PUSH2 0x1fa6
00001d4e: JUMP
00001d4f: JUMPDEST
00001d50: ISZERO
00001d51: PUSH2 0x1ddc
00001d54: JUMPI
00001d55: PUSH1 0x40
00001d57: MLOAD
00001d58: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001d79: DUP2
00001d7a: MSTORE
00001d7b: PUSH1 0x20
00001d7d: PUSH1 0x04
00001d7f: DUP3
00001d80: ADD
00001d81: MSTORE
00001d82: PUSH1 0x37
00001d84: PUSH1 0x24
00001d86: DUP3
00001d87: ADD
00001d88: MSTORE
00001d89: PUSH32 0x5374616e646172644272696467653a2063616e6e6f7420627269646765204554
00001daa: PUSH1 0x44
00001dac: DUP3
00001dad: ADD
00001dae: MSTORE
00001daf: PUSH32 0x48207769746820637573746f6d2067617320746f6b656e000000000000000000
00001dd0: PUSH1 0x64
00001dd2: DUP3
00001dd3: ADD
00001dd4: MSTORE
00001dd5: PUSH1 0x84
00001dd7: ADD
00001dd8: PUSH2 0x07c0
00001ddb: JUMP
00001ddc: JUMPDEST
00001ddd: DUP3
00001dde: CALLVALUE
00001ddf: EQ
00001de0: PUSH2 0x1e6b
00001de3: JUMPI
00001de4: PUSH1 0x40
00001de6: MLOAD
00001de7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001e08: DUP2
00001e09: MSTORE
00001e0a: PUSH1 0x20
00001e0c: PUSH1 0x04
00001e0e: DUP3
00001e0f: ADD
00001e10: MSTORE
00001e11: PUSH1 0x3e
00001e13: PUSH1 0x24
00001e15: DUP3
00001e16: ADD
00001e17: MSTORE
00001e18: PUSH32 0x5374616e646172644272696467653a206272696467696e6720455448206d7573
00001e39: PUSH1 0x44
00001e3b: DUP3
00001e3c: ADD
00001e3d: MSTORE
00001e3e: PUSH32 0x7420696e636c7564652073756666696369656e74204554482076616c75650000
00001e5f: PUSH1 0x64
00001e61: DUP3
00001e62: ADD
00001e63: MSTORE
00001e64: PUSH1 0x84
00001e66: ADD
00001e67: PUSH2 0x07c0
00001e6a: JUMP
00001e6b: JUMPDEST
00001e6c: PUSH2 0x1e77
00001e6f: DUP6
00001e70: DUP6
00001e71: DUP6
00001e72: DUP5
00001e73: PUSH2 0x2633
00001e76: JUMP
00001e77: JUMPDEST
00001e78: PUSH1 0x03
00001e7a: SLOAD
00001e7b: PUSH1 0x04
00001e7d: SLOAD
00001e7e: PUSH1 0x40
00001e80: MLOAD
00001e81: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e96: SWAP3
00001e97: DUP4
00001e98: AND
00001e99: SWAP3
00001e9a: PUSH4 0x3dbb202b
00001e9f: SWAP3
00001ea0: DUP8
00001ea1: SWAP3
00001ea2: SWAP2
00001ea3: AND
00001ea4: SWAP1
00001ea5: PUSH32 0x1635f5fd00000000000000000000000000000000000000000000000000000000
00001ec6: SWAP1
00001ec7: PUSH2 0x1eda
00001eca: SWAP1
00001ecb: DUP12
00001ecc: SWAP1
00001ecd: DUP12
00001ece: SWAP1
00001ecf: DUP7
00001ed0: SWAP1
00001ed1: DUP11
00001ed2: SWAP1
00001ed3: PUSH1 0x24
00001ed5: ADD
00001ed6: PUSH2 0x371f
00001ed9: JUMP
00001eda: JUMPDEST
00001edb: PUSH1 0x40
00001edd: DUP1
00001ede: MLOAD
00001edf: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001f00: DUP2
00001f01: DUP5
00001f02: SUB
00001f03: ADD
00001f04: DUP2
00001f05: MSTORE
00001f06: SWAP2
00001f07: DUP2
00001f08: MSTORE
00001f09: PUSH1 0x20
00001f0b: DUP3
00001f0c: ADD
00001f0d: DUP1
00001f0e: MLOAD
00001f0f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001f2c: AND
00001f2d: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00001f4e: SWAP5
00001f4f: DUP6
00001f50: AND
00001f51: OR
00001f52: SWAP1
00001f53: MSTORE
00001f54: MLOAD
00001f55: PUSH1 0xe0
00001f57: DUP7
00001f58: SWAP1
00001f59: SHL
00001f5a: SWAP1
00001f5b: SWAP3
00001f5c: AND
00001f5d: DUP3
00001f5e: MSTORE
00001f5f: PUSH2 0x1f6d
00001f62: SWAP3
00001f63: SWAP2
00001f64: DUP9
00001f65: SWAP1
00001f66: PUSH1 0x04
00001f68: ADD
00001f69: PUSH2 0x3768
00001f6c: JUMP
00001f6d: JUMPDEST
00001f6e: PUSH1 0x00
00001f70: PUSH1 0x40
00001f72: MLOAD
00001f73: DUP1
00001f74: DUP4
00001f75: SUB
00001f76: DUP2
00001f77: DUP6
00001f78: DUP9
00001f79: DUP1
00001f7a: EXTCODESIZE
00001f7b: ISZERO
00001f7c: DUP1
00001f7d: ISZERO
00001f7e: PUSH2 0x1f86
00001f81: JUMPI
00001f82: PUSH1 0x00
00001f84: DUP1
00001f85: REVERT
00001f86: JUMPDEST
00001f87: POP
00001f88: GAS
00001f89: CALL
00001f8a: ISZERO
00001f8b: DUP1
00001f8c: ISZERO
00001f8d: PUSH2 0x1f9a
00001f90: JUMPI
00001f91: RETURNDATASIZE
00001f92: PUSH1 0x00
00001f94: DUP1
00001f95: RETURNDATACOPY
00001f96: RETURNDATASIZE
00001f97: PUSH1 0x00
00001f99: REVERT
00001f9a: JUMPDEST
00001f9b: POP
00001f9c: POP
00001f9d: POP
00001f9e: POP
00001f9f: POP
00001fa0: POP
00001fa1: POP
00001fa2: POP
00001fa3: POP
00001fa4: POP
00001fa5: JUMP
00001fa6: JUMPDEST
00001fa7: PUSH1 0x00
00001fa9: DUP1
00001faa: PUSH2 0x1fb1
00001fad: PUSH2 0x26a6
00001fb0: JUMP
00001fb1: JUMPDEST
00001fb2: POP
00001fb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fc8: AND
00001fc9: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
00001fde: EQ
00001fdf: ISZERO
00001fe0: SWAP3
00001fe1: SWAP2
00001fe2: POP
00001fe3: POP
00001fe4: JUMP
00001fe5: JUMPDEST
00001fe6: DUP3
00001fe7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ffc: AND
00001ffd: DUP5
00001ffe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002013: AND
00002014: PUSH32 0x2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e631
00002035: DUP5
00002036: DUP5
00002037: PUSH1 0x40
00002039: MLOAD
0000203a: PUSH2 0x2044
0000203d: SWAP3
0000203e: SWAP2
0000203f: SWAP1
00002040: PUSH2 0x37ad
00002043: JUMP
00002044: JUMPDEST
00002045: PUSH1 0x40
00002047: MLOAD
00002048: DUP1
00002049: SWAP2
0000204a: SUB
0000204b: SWAP1
0000204c: LOG3
0000204d: PUSH2 0x16ef
00002050: DUP5
00002051: DUP5
00002052: DUP5
00002053: DUP5
00002054: PUSH2 0x2743
00002057: JUMP
00002058: JUMPDEST
00002059: PUSH1 0x00
0000205b: DUP1
0000205c: PUSH1 0x00
0000205e: DUP4
0000205f: MLOAD
00002060: PUSH1 0x20
00002062: DUP6
00002063: ADD
00002064: DUP7
00002065: DUP10
00002066: DUP10
00002067: CALL
00002068: SWAP6
00002069: SWAP5
0000206a: POP
0000206b: POP
0000206c: POP
0000206d: POP
0000206e: POP
0000206f: JUMP
00002070: JUMPDEST
00002071: PUSH2 0x09e6
00002074: DUP8
00002075: DUP8
00002076: DUP8
00002077: DUP8
00002078: DUP8
00002079: DUP8
0000207a: DUP8
0000207b: PUSH1 0x01
0000207d: PUSH1 0x00
0000207f: PUSH2 0x2323
00002082: JUMP
00002083: JUMPDEST
00002084: PUSH2 0x09e6
00002087: DUP8
00002088: DUP8
00002089: DUP8
0000208a: DUP8
0000208b: DUP8
0000208c: DUP8
0000208d: DUP8
0000208e: PUSH2 0x2070
00002091: JUMP
00002092: JUMPDEST
00002093: PUSH1 0x00
00002095: DUP7
00002096: DUP9
00002097: DUP8
00002098: DUP8
00002099: DUP8
0000209a: DUP8
0000209b: PUSH1 0x40
0000209d: MLOAD
0000209e: PUSH1 0x20
000020a0: ADD
000020a1: PUSH2 0x20af
000020a4: SWAP7
000020a5: SWAP6
000020a6: SWAP5
000020a7: SWAP4
000020a8: SWAP3
000020a9: SWAP2
000020aa: SWAP1
000020ab: PUSH2 0x37c6
000020ae: JUMP
000020af: JUMPDEST
000020b0: PUSH1 0x40
000020b2: MLOAD
000020b3: PUSH1 0x20
000020b5: DUP2
000020b6: DUP4
000020b7: SUB
000020b8: SUB
000020b9: DUP2
000020ba: MSTORE
000020bb: SWAP1
000020bc: PUSH1 0x40
000020be: MSTORE
000020bf: SWAP1
000020c0: POP
000020c1: DUP2
000020c2: ISZERO
000020c3: PUSH2 0x2103
000020c6: JUMPI
000020c7: DUP1
000020c8: MLOAD
000020c9: PUSH1 0x20
000020cb: DUP3
000020cc: ADD
000020cd: KECCAK256
000020ce: PUSH32 0x3e64741321ec6f8a63baec2e6c5b136599c80e9cc6e66533b1c796ebf0d947bb
000020ef: PUSH1 0x00
000020f1: DUP12
000020f2: DUP2
000020f3: MSTORE
000020f4: PUSH1 0x20
000020f6: SWAP2
000020f7: SWAP1
000020f8: SWAP2
000020f9: MSTORE
000020fa: PUSH1 0x40
000020fc: SWAP1
000020fd: KECCAK256
000020fe: SSTORE
000020ff: PUSH2 0x21c8
00002102: JUMP
00002103: JUMPDEST
00002104: DUP1
00002105: MLOAD
00002106: PUSH1 0x20
00002108: DUP3
00002109: ADD
0000210a: KECCAK256
0000210b: PUSH32 0x3e64741321ec6f8a63baec2e6c5b136599c80e9cc6e66533b1c796ebf0d947bb
0000212c: PUSH1 0x00
0000212e: DUP12
0000212f: DUP2
00002130: MSTORE
00002131: PUSH1 0x20
00002133: SWAP2
00002134: SWAP1
00002135: SWAP2
00002136: MSTORE
00002137: PUSH1 0x40
00002139: SWAP1
0000213a: KECCAK256
0000213b: SLOAD
0000213c: EQ
0000213d: PUSH2 0x21c8
00002140: JUMPI
00002141: PUSH1 0x40
00002143: MLOAD
00002144: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002165: DUP2
00002166: MSTORE
00002167: PUSH1 0x20
00002169: PUSH1 0x04
0000216b: DUP3
0000216c: ADD
0000216d: MSTORE
0000216e: PUSH1 0x2a
00002170: PUSH1 0x24
00002172: DUP3
00002173: ADD
00002174: MSTORE
00002175: PUSH32 0x5374616e646172644272696467653a20696e76616c6964206465706f73697420
00002196: PUSH1 0x44
00002198: DUP3
00002199: ADD
0000219a: MSTORE
0000219b: PUSH32 0x706172616d657465727300000000000000000000000000000000000000000000
000021bc: PUSH1 0x64
000021be: DUP3
000021bf: ADD
000021c0: MSTORE
000021c1: PUSH1 0x84
000021c3: ADD
000021c4: PUSH2 0x07c0
000021c7: JUMP
000021c8: JUMPDEST
000021c9: PUSH1 0x04
000021cb: SLOAD
000021cc: PUSH1 0x40
000021ce: MLOAD
000021cf: PUSH2 0x22ac
000021d2: SWAP2
000021d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021e8: AND
000021e9: SWAP1
000021ea: PUSH3 0x07a120
000021ee: SWAP1
000021ef: PUSH32 0x4df6155400000000000000000000000000000000000000000000000000000000
00002210: SWAP1
00002211: PUSH2 0x222a
00002214: SWAP1
00002215: DUP15
00002216: SWAP1
00002217: DUP14
00002218: SWAP1
00002219: DUP16
0000221a: SWAP1
0000221b: DUP15
0000221c: SWAP1
0000221d: DUP15
0000221e: SWAP1
0000221f: DUP15
00002220: SWAP1
00002221: DUP15
00002222: SWAP1
00002223: PUSH1 0x24
00002225: ADD
00002226: PUSH2 0x3821
00002229: JUMP
0000222a: JUMPDEST
0000222b: PUSH1 0x40
0000222d: DUP1
0000222e: MLOAD
0000222f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00002250: DUP2
00002251: DUP5
00002252: SUB
00002253: ADD
00002254: DUP2
00002255: MSTORE
00002256: SWAP2
00002257: SWAP1
00002258: MSTORE
00002259: PUSH1 0x20
0000225b: DUP2
0000225c: ADD
0000225d: DUP1
0000225e: MLOAD
0000225f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000227c: AND
0000227d: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
0000229e: SWAP1
0000229f: SWAP4
000022a0: AND
000022a1: SWAP3
000022a2: SWAP1
000022a3: SWAP3
000022a4: OR
000022a5: SWAP1
000022a6: SWAP2
000022a7: MSTORE
000022a8: PUSH2 0x27b0
000022ab: JUMP
000022ac: JUMPDEST
000022ad: DUP7
000022ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022c3: AND
000022c4: DUP9
000022c5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022da: AND
000022db: DUP11
000022dc: PUSH32 0x8edee904eb373dd162c240b52a6016884524d3cf7661a9edfc510f2a43c24c18
000022fd: DUP10
000022fe: DUP10
000022ff: DUP10
00002300: DUP10
00002301: PUSH1 0x40
00002303: MLOAD
00002304: PUSH2 0x2310
00002307: SWAP5
00002308: SWAP4
00002309: SWAP3
0000230a: SWAP2
0000230b: SWAP1
0000230c: PUSH2 0x371f
0000230f: JUMP
00002310: JUMPDEST
00002311: PUSH1 0x40
00002313: MLOAD
00002314: DUP1
00002315: SWAP2
00002316: SUB
00002317: SWAP1
00002318: LOG4
00002319: POP
0000231a: POP
0000231b: POP
0000231c: POP
0000231d: POP
0000231e: POP
0000231f: POP
00002320: POP
00002321: POP
00002322: JUMP
00002323: JUMPDEST
00002324: PUSH1 0x40
00002326: MLOAD
00002327: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002348: DUP2
00002349: MSTORE
0000234a: PUSH1 0x20
0000234c: PUSH1 0x04
0000234e: DUP3
0000234f: ADD
00002350: MSTORE
00002351: PUSH1 0x13
00002353: PUSH1 0x24
00002355: DUP3
00002356: ADD
00002357: MSTORE
00002358: PUSH32 0x5573652074686520666173742062726964676500000000000000000000000000
00002379: PUSH1 0x44
0000237b: DUP3
0000237c: ADD
0000237d: MSTORE
0000237e: PUSH1 0x64
00002380: ADD
00002381: PUSH2 0x07c0
00002384: JUMP
00002385: JUMPDEST
00002386: PUSH2 0x16ef
00002389: DUP5
0000238a: DUP5
0000238b: CALLVALUE
0000238c: DUP6
0000238d: DUP6
0000238e: PUSH2 0x1d47
00002391: JUMP
00002392: JUMPDEST
00002393: PUSH1 0x00
00002395: SLOAD
00002396: PUSH2 0x0100
00002399: SWAP1
0000239a: DIV
0000239b: PUSH1 0xff
0000239d: AND
0000239e: PUSH2 0x2429
000023a1: JUMPI
000023a2: PUSH1 0x40
000023a4: MLOAD
000023a5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000023c6: DUP2
000023c7: MSTORE
000023c8: PUSH1 0x20
000023ca: PUSH1 0x04
000023cc: DUP3
000023cd: ADD
000023ce: MSTORE
000023cf: PUSH1 0x2b
000023d1: PUSH1 0x24
000023d3: DUP3
000023d4: ADD
000023d5: MSTORE
000023d6: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
000023f7: PUSH1 0x44
000023f9: DUP3
000023fa: ADD
000023fb: MSTORE
000023fc: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
0000241d: PUSH1 0x64
0000241f: DUP3
00002420: ADD
00002421: MSTORE
00002422: PUSH1 0x84
00002424: ADD
00002425: PUSH2 0x07c0
00002428: JUMP
00002429: JUMPDEST
0000242a: PUSH1 0x03
0000242c: DUP1
0000242d: SLOAD
0000242e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002443: SWAP4
00002444: DUP5
00002445: AND
00002446: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00002467: SWAP2
00002468: DUP3
00002469: AND
0000246a: OR
0000246b: SWAP1
0000246c: SWAP2
0000246d: SSTORE
0000246e: PUSH1 0x04
00002470: DUP1
00002471: SLOAD
00002472: SWAP3
00002473: SWAP1
00002474: SWAP4
00002475: AND
00002476: SWAP2
00002477: AND
00002478: OR
00002479: SWAP1
0000247a: SSTORE
0000247b: JUMP
0000247c: JUMPDEST
0000247d: PUSH1 0x00
0000247f: PUSH2 0x2487
00002482: DUP4
00002483: PUSH2 0x2828
00002486: JUMP
00002487: JUMPDEST
00002488: DUP1
00002489: ISZERO
0000248a: PUSH2 0x2498
0000248d: JUMPI
0000248e: POP
0000248f: PUSH2 0x2498
00002492: DUP4
00002493: DUP4
00002494: PUSH2 0x288c
00002497: JUMP
00002498: JUMPDEST
00002499: SWAP4
0000249a: SWAP3
0000249b: POP
0000249c: POP
0000249d: POP
0000249e: JUMP
0000249f: JUMPDEST
000024a0: PUSH1 0x00
000024a2: PUSH2 0x2501
000024a5: DUP3
000024a6: PUSH1 0x40
000024a8: MLOAD
000024a9: DUP1
000024aa: PUSH1 0x40
000024ac: ADD
000024ad: PUSH1 0x40
000024af: MSTORE
000024b0: DUP1
000024b1: PUSH1 0x20
000024b3: DUP2
000024b4: MSTORE
000024b5: PUSH1 0x20
000024b7: ADD
000024b8: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
000024d9: DUP2
000024da: MSTORE
000024db: POP
000024dc: DUP6
000024dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024f2: AND
000024f3: PUSH2 0x295b
000024f6: SWAP1
000024f7: SWAP3
000024f8: SWAP2
000024f9: SWAP1
000024fa: PUSH4 0xffffffff
000024ff: AND
00002500: JUMP
00002501: JUMPDEST
00002502: DUP1
00002503: MLOAD
00002504: SWAP1
00002505: SWAP2
00002506: POP
00002507: ISZERO
00002508: PUSH2 0x0ac1
0000250b: JUMPI
0000250c: DUP1
0000250d: DUP1
0000250e: PUSH1 0x20
00002510: ADD
00002511: SWAP1
00002512: MLOAD
00002513: DUP2
00002514: ADD
00002515: SWAP1
00002516: PUSH2 0x251f
00002519: SWAP2
0000251a: SWAP1
0000251b: PUSH2 0x3883
0000251e: JUMP
0000251f: JUMPDEST
00002520: PUSH2 0x0ac1
00002523: JUMPI
00002524: PUSH1 0x40
00002526: MLOAD
00002527: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002548: DUP2
00002549: MSTORE
0000254a: PUSH1 0x20
0000254c: PUSH1 0x04
0000254e: DUP3
0000254f: ADD
00002550: MSTORE
00002551: PUSH1 0x2a
00002553: PUSH1 0x24
00002555: DUP3
00002556: ADD
00002557: MSTORE
00002558: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00002579: PUSH1 0x44
0000257b: DUP3
0000257c: ADD
0000257d: MSTORE
0000257e: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
0000259f: PUSH1 0x64
000025a1: DUP3
000025a2: ADD
000025a3: MSTORE
000025a4: PUSH1 0x84
000025a6: ADD
000025a7: PUSH2 0x07c0
000025aa: JUMP
000025ab: JUMPDEST
000025ac: DUP4
000025ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025c2: AND
000025c3: DUP6
000025c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025d9: AND
000025da: DUP8
000025db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025f0: AND
000025f1: PUSH32 0xd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd
00002612: DUP7
00002613: DUP7
00002614: DUP7
00002615: PUSH1 0x40
00002617: MLOAD
00002618: PUSH2 0x2623
0000261b: SWAP4
0000261c: SWAP3
0000261d: SWAP2
0000261e: SWAP1
0000261f: PUSH2 0x36e1
00002622: JUMP
00002623: JUMPDEST
00002624: PUSH1 0x40
00002626: MLOAD
00002627: DUP1
00002628: SWAP2
00002629: SUB
0000262a: SWAP1
0000262b: LOG4
0000262c: POP
0000262d: POP
0000262e: POP
0000262f: POP
00002630: POP
00002631: POP
00002632: JUMP
00002633: JUMPDEST
00002634: DUP3
00002635: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000264a: AND
0000264b: DUP5
0000264c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002661: AND
00002662: PUSH32 0x35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23
00002683: DUP5
00002684: DUP5
00002685: PUSH1 0x40
00002687: MLOAD
00002688: PUSH2 0x2692
0000268b: SWAP3
0000268c: SWAP2
0000268d: SWAP1
0000268e: PUSH2 0x37ad
00002691: JUMP
00002692: JUMPDEST
00002693: PUSH1 0x40
00002695: MLOAD
00002696: DUP1
00002697: SWAP2
00002698: SUB
00002699: SWAP1
0000269a: LOG3
0000269b: PUSH2 0x16ef
0000269e: DUP5
0000269f: DUP5
000026a0: DUP5
000026a1: DUP5
000026a2: PUSH2 0x2972
000026a5: JUMP
000026a6: JUMPDEST
000026a7: PUSH1 0x33
000026a9: SLOAD
000026aa: PUSH1 0x40
000026ac: DUP1
000026ad: MLOAD
000026ae: PUSH32 0x4397dfef00000000000000000000000000000000000000000000000000000000
000026cf: DUP2
000026d0: MSTORE
000026d1: DUP2
000026d2: MLOAD
000026d3: PUSH1 0x00
000026d5: SWAP4
000026d6: DUP5
000026d7: SWAP4
000026d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026ed: SWAP1
000026ee: SWAP2
000026ef: AND
000026f0: SWAP3
000026f1: PUSH4 0x4397dfef
000026f6: SWAP3
000026f7: PUSH1 0x04
000026f9: DUP1
000026fa: DUP4
000026fb: ADD
000026fc: SWAP4
000026fd: SWAP3
000026fe: DUP3
000026ff: SWAP1
00002700: SUB
00002701: ADD
00002702: DUP2
00002703: DUP7
00002704: GAS
00002705: STATICCALL
00002706: ISZERO
00002707: DUP1
00002708: ISZERO
00002709: PUSH2 0x2716
0000270c: JUMPI
0000270d: RETURNDATASIZE
0000270e: PUSH1 0x00
00002710: DUP1
00002711: RETURNDATACOPY
00002712: RETURNDATASIZE
00002713: PUSH1 0x00
00002715: REVERT
00002716: JUMPDEST
00002717: POP
00002718: POP
00002719: POP
0000271a: POP
0000271b: PUSH1 0x40
0000271d: MLOAD
0000271e: RETURNDATASIZE
0000271f: PUSH1 0x1f
00002721: NOT
00002722: PUSH1 0x1f
00002724: DUP3
00002725: ADD
00002726: AND
00002727: DUP3
00002728: ADD
00002729: DUP1
0000272a: PUSH1 0x40
0000272c: MSTORE
0000272d: POP
0000272e: DUP2
0000272f: ADD
00002730: SWAP1
00002731: PUSH2 0x273a
00002734: SWAP2
00002735: SWAP1
00002736: PUSH2 0x38a5
00002739: JUMP
0000273a: JUMPDEST
0000273b: SWAP1
0000273c: SWAP4
0000273d: SWAP1
0000273e: SWAP3
0000273f: POP
00002740: SWAP1
00002741: POP
00002742: JUMP
00002743: JUMPDEST
00002744: DUP3
00002745: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000275a: AND
0000275b: DUP5
0000275c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002771: AND
00002772: PUSH32 0x31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d
00002793: DUP5
00002794: DUP5
00002795: PUSH1 0x40
00002797: MLOAD
00002798: PUSH2 0x27a2
0000279b: SWAP3
0000279c: SWAP2
0000279d: SWAP1
0000279e: PUSH2 0x37ad
000027a1: JUMP
000027a2: JUMPDEST
000027a3: PUSH1 0x40
000027a5: MLOAD
000027a6: DUP1
000027a7: SWAP2
000027a8: SUB
000027a9: SWAP1
000027aa: LOG3
000027ab: POP
000027ac: POP
000027ad: POP
000027ae: POP
000027af: JUMP
000027b0: JUMPDEST
000027b1: PUSH1 0x40
000027b3: MLOAD
000027b4: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
000027d5: PUSH1 0x60
000027d7: DUP6
000027d8: SWAP1
000027d9: SHL
000027da: AND
000027db: PUSH1 0x20
000027dd: DUP3
000027de: ADD
000027df: MSTORE
000027e0: PUSH2 0x0ac1
000027e3: SWAP1
000027e4: PUSH1 0x34
000027e6: ADD
000027e7: PUSH1 0x40
000027e9: DUP1
000027ea: MLOAD
000027eb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
0000280c: DUP2
0000280d: DUP5
0000280e: SUB
0000280f: ADD
00002810: DUP2
00002811: MSTORE
00002812: PUSH1 0x20
00002814: DUP4
00002815: ADD
00002816: SWAP1
00002817: SWAP2
00002818: MSTORE
00002819: PUSH1 0x00
0000281b: DUP1
0000281c: DUP4
0000281d: MSTORE
0000281e: SWAP1
0000281f: SWAP2
00002820: DUP6
00002821: SWAP1
00002822: DUP6
00002823: SWAP1
00002824: PUSH2 0x29d1
00002827: JUMP
00002828: JUMPDEST
00002829: PUSH1 0x00
0000282b: PUSH2 0x2854
0000282e: DUP3
0000282f: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000
00002850: PUSH2 0x288c
00002853: JUMP
00002854: JUMPDEST
00002855: DUP1
00002856: ISZERO
00002857: PUSH2 0x1b06
0000285a: JUMPI
0000285b: POP
0000285c: PUSH2 0x2885
0000285f: DUP3
00002860: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00002881: PUSH2 0x288c
00002884: JUMP
00002885: JUMPDEST
00002886: ISZERO
00002887: SWAP3
00002888: SWAP2
00002889: POP
0000288a: POP
0000288b: JUMP
0000288c: JUMPDEST
0000288d: PUSH1 0x40
0000288f: DUP1
00002890: MLOAD
00002891: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
000028b2: DUP4
000028b3: AND
000028b4: PUSH1 0x24
000028b6: DUP1
000028b7: DUP4
000028b8: ADD
000028b9: SWAP2
000028ba: SWAP1
000028bb: SWAP2
000028bc: MSTORE
000028bd: DUP3
000028be: MLOAD
000028bf: DUP1
000028c0: DUP4
000028c1: SUB
000028c2: SWAP1
000028c3: SWAP2
000028c4: ADD
000028c5: DUP2
000028c6: MSTORE
000028c7: PUSH1 0x44
000028c9: SWAP1
000028ca: SWAP2
000028cb: ADD
000028cc: SWAP1
000028cd: SWAP2
000028ce: MSTORE
000028cf: PUSH1 0x20
000028d1: DUP1
000028d2: DUP3
000028d3: ADD
000028d4: DUP1
000028d5: MLOAD
000028d6: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000028f3: AND
000028f4: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000
00002915: OR
00002916: DUP2
00002917: MSTORE
00002918: DUP3
00002919: MLOAD
0000291a: PUSH1 0x00
0000291c: SWAP4
0000291d: SWAP3
0000291e: DUP5
0000291f: SWAP3
00002920: DUP4
00002921: SWAP3
00002922: DUP4
00002923: SWAP3
00002924: SWAP2
00002925: DUP4
00002926: SWAP2
00002927: SWAP1
00002928: DUP11
00002929: PUSH2 0x7530
0000292c: STATICCALL
0000292d: SWAP3
0000292e: POP
0000292f: RETURNDATASIZE
00002930: SWAP2
00002931: POP
00002932: PUSH1 0x00
00002934: MLOAD
00002935: SWAP1
00002936: POP
00002937: DUP3
00002938: DUP1
00002939: ISZERO
0000293a: PUSH2 0x2944
0000293d: JUMPI
0000293e: POP
0000293f: PUSH1 0x20
00002941: DUP3
00002942: LT
00002943: ISZERO
00002944: JUMPDEST
00002945: DUP1
00002946: ISZERO
00002947: PUSH2 0x2950
0000294a: JUMPI
0000294b: POP
0000294c: PUSH1 0x00
0000294e: DUP2
0000294f: GT
00002950: JUMPDEST
00002951: SWAP8
00002952: SWAP7
00002953: POP
00002954: POP
00002955: POP
00002956: POP
00002957: POP
00002958: POP
00002959: POP
0000295a: JUMP
0000295b: JUMPDEST
0000295c: PUSH1 0x60
0000295e: PUSH2 0x296a
00002961: DUP5
00002962: DUP5
00002963: PUSH1 0x00
00002965: DUP6
00002966: PUSH2 0x29f5
00002969: JUMP
0000296a: JUMPDEST
0000296b: SWAP5
0000296c: SWAP4
0000296d: POP
0000296e: POP
0000296f: POP
00002970: POP
00002971: JUMP
00002972: JUMPDEST
00002973: DUP3
00002974: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002989: AND
0000298a: DUP5
0000298b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029a0: AND
000029a1: PUSH32 0x2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af5
000029c2: DUP5
000029c3: DUP5
000029c4: PUSH1 0x40
000029c6: MLOAD
000029c7: PUSH2 0x27a2
000029ca: SWAP3
000029cb: SWAP2
000029cc: SWAP1
000029cd: PUSH2 0x37ad
000029d0: JUMP
000029d1: JUMPDEST
000029d2: PUSH1 0x00
000029d4: PUSH2 0x29e0
000029d7: DUP7
000029d8: DUP7
000029d9: DUP7
000029da: DUP7
000029db: DUP7
000029dc: PUSH2 0x2b80
000029df: JUMP
000029e0: JUMPDEST
000029e1: SWAP1
000029e2: POP
000029e3: PUSH3 0x0face7
000029e7: DUP2
000029e8: MLOAD
000029e9: PUSH1 0x20
000029eb: DUP4
000029ec: ADD
000029ed: LOG1
000029ee: POP
000029ef: POP
000029f0: POP
000029f1: POP
000029f2: POP
000029f3: POP
000029f4: JUMP
000029f5: JUMPDEST
000029f6: PUSH1 0x60
000029f8: DUP3
000029f9: SELFBALANCE
000029fa: LT
000029fb: ISZERO
000029fc: PUSH2 0x2a87
000029ff: JUMPI
00002a00: PUSH1 0x40
00002a02: MLOAD
00002a03: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002a24: DUP2
00002a25: MSTORE
00002a26: PUSH1 0x20
00002a28: PUSH1 0x04
00002a2a: DUP3
00002a2b: ADD
00002a2c: MSTORE
00002a2d: PUSH1 0x26
00002a2f: PUSH1 0x24
00002a31: DUP3
00002a32: ADD
00002a33: MSTORE
00002a34: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
00002a55: PUSH1 0x44
00002a57: DUP3
00002a58: ADD
00002a59: MSTORE
00002a5a: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000
00002a7b: PUSH1 0x64
00002a7d: DUP3
00002a7e: ADD
00002a7f: MSTORE
00002a80: PUSH1 0x84
00002a82: ADD
00002a83: PUSH2 0x07c0
00002a86: JUMP
00002a87: JUMPDEST
00002a88: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a9d: DUP6
00002a9e: AND
00002a9f: EXTCODESIZE
00002aa0: PUSH2 0x2b05
00002aa3: JUMPI
00002aa4: PUSH1 0x40
00002aa6: MLOAD
00002aa7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002ac8: DUP2
00002ac9: MSTORE
00002aca: PUSH1 0x20
00002acc: PUSH1 0x04
00002ace: DUP3
00002acf: ADD
00002ad0: MSTORE
00002ad1: PUSH1 0x1d
00002ad3: PUSH1 0x24
00002ad5: DUP3
00002ad6: ADD
00002ad7: MSTORE
00002ad8: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00002af9: PUSH1 0x44
00002afb: DUP3
00002afc: ADD
00002afd: MSTORE
00002afe: PUSH1 0x64
00002b00: ADD
00002b01: PUSH2 0x07c0
00002b04: JUMP
00002b05: JUMPDEST
00002b06: PUSH1 0x00
00002b08: DUP1
00002b09: DUP7
00002b0a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b1f: AND
00002b20: DUP6
00002b21: DUP8
00002b22: PUSH1 0x40
00002b24: MLOAD
00002b25: PUSH2 0x2b2e
00002b28: SWAP2
00002b29: SWAP1
00002b2a: PUSH2 0x38da
00002b2d: JUMP
00002b2e: JUMPDEST
00002b2f: PUSH1 0x00
00002b31: PUSH1 0x40
00002b33: MLOAD
00002b34: DUP1
00002b35: DUP4
00002b36: SUB
00002b37: DUP2
00002b38: DUP6
00002b39: DUP8
00002b3a: GAS
00002b3b: CALL
00002b3c: SWAP3
00002b3d: POP
00002b3e: POP
00002b3f: POP
00002b40: RETURNDATASIZE
00002b41: DUP1
00002b42: PUSH1 0x00
00002b44: DUP2
00002b45: EQ
00002b46: PUSH2 0x2b6b
00002b49: JUMPI
00002b4a: PUSH1 0x40
00002b4c: MLOAD
00002b4d: SWAP2
00002b4e: POP
00002b4f: PUSH1 0x1f
00002b51: NOT
00002b52: PUSH1 0x3f
00002b54: RETURNDATASIZE
00002b55: ADD
00002b56: AND
00002b57: DUP3
00002b58: ADD
00002b59: PUSH1 0x40
00002b5b: MSTORE
00002b5c: RETURNDATASIZE
00002b5d: DUP3
00002b5e: MSTORE
00002b5f: RETURNDATASIZE
00002b60: PUSH1 0x00
00002b62: PUSH1 0x20
00002b64: DUP5
00002b65: ADD
00002b66: RETURNDATACOPY
00002b67: PUSH2 0x2b70
00002b6a: JUMP
00002b6b: JUMPDEST
00002b6c: PUSH1 0x60
00002b6e: SWAP2
00002b6f: POP
00002b70: JUMPDEST
00002b71: POP
00002b72: SWAP2
00002b73: POP
00002b74: SWAP2
00002b75: POP
00002b76: PUSH2 0x2950
00002b79: DUP3
00002b7a: DUP3
00002b7b: DUP7
00002b7c: PUSH2 0x2c95
00002b7f: JUMP
00002b80: JUMPDEST
00002b81: PUSH1 0x60
00002b83: PUSH1 0x00
00002b85: CHAINID
00002b86: PUSH1 0x01
00002b88: SUB
00002b89: PUSH2 0x2b96
00002b8c: JUMPI
00002b8d: POP
00002b8e: PUSH3 0x0face7
00002b92: PUSH2 0x2c0c
00002b95: JUMP
00002b96: JUMPDEST
00002b97: CHAINID
00002b98: PUSH3 0xaa36a7
00002b9c: SUB
00002b9d: PUSH2 0x2baa
00002ba0: JUMPI
00002ba1: POP
00002ba2: PUSH3 0xface7a
00002ba6: PUSH2 0x2c0c
00002ba9: JUMP
00002baa: JUMPDEST
00002bab: PUSH1 0x40
00002bad: MLOAD
00002bae: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002bcf: DUP2
00002bd0: MSTORE
00002bd1: PUSH1 0x20
00002bd3: PUSH1 0x04
00002bd5: DUP3
00002bd6: ADD
00002bd7: MSTORE
00002bd8: PUSH1 0x13
00002bda: PUSH1 0x24
00002bdc: DUP3
00002bdd: ADD
00002bde: MSTORE
00002bdf: PUSH32 0x556e737570706f7274656420636861696e496400000000000000000000000000
00002c00: PUSH1 0x44
00002c02: DUP3
00002c03: ADD
00002c04: MSTORE
00002c05: PUSH1 0x64
00002c07: ADD
00002c08: PUSH2 0x07c0
00002c0b: JUMP
00002c0c: JUMPDEST
00002c0d: PUSH1 0x40
00002c0f: DUP1
00002c10: MLOAD
00002c11: PUSH1 0x20
00002c13: DUP2
00002c14: ADD
00002c15: SWAP1
00002c16: SWAP2
00002c17: MSTORE
00002c18: PUSH1 0x00
00002c1a: DUP2
00002c1b: MSTORE
00002c1c: PUSH2 0x2c25
00002c1f: DUP2
00002c20: DUP4
00002c21: PUSH2 0x2ce8
00002c24: JUMP
00002c25: JUMPDEST
00002c26: POP
00002c27: PUSH2 0x2c30
00002c2a: DUP2
00002c2b: DUP10
00002c2c: PUSH2 0x2d41
00002c2f: JUMP
00002c30: JUMPDEST
00002c31: POP
00002c32: PUSH2 0x2c3b
00002c35: DUP2
00002c36: DUP9
00002c37: PUSH2 0x2ce8
00002c3a: JUMP
00002c3b: JUMPDEST
00002c3c: POP
00002c3d: PUSH2 0x2c46
00002c40: DUP2
00002c41: DUP8
00002c42: PUSH2 0x2ce8
00002c45: JUMP
00002c46: JUMPDEST
00002c47: POP
00002c48: PUSH2 0x2c51
00002c4b: DUP2
00002c4c: DUP7
00002c4d: PUSH2 0x2d41
00002c50: JUMP
00002c51: JUMPDEST
00002c52: POP
00002c53: PUSH2 0x2c5c
00002c56: DUP2
00002c57: DUP6
00002c58: PUSH2 0x2d41
00002c5b: JUMP
00002c5c: JUMPDEST
00002c5d: POP
00002c5e: PUSH1 0x46
00002c60: PUSH2 0x2c68
00002c63: DUP3
00002c64: PUSH2 0x2d78
00002c67: JUMP
00002c68: JUMPDEST
00002c69: PUSH1 0x40
00002c6b: MLOAD
00002c6c: PUSH1 0x20
00002c6e: ADD
00002c6f: PUSH2 0x2c79
00002c72: SWAP3
00002c73: SWAP2
00002c74: SWAP1
00002c75: PUSH2 0x38f6
00002c78: JUMP
00002c79: JUMPDEST
00002c7a: PUSH1 0x40
00002c7c: MLOAD
00002c7d: PUSH1 0x20
00002c7f: DUP2
00002c80: DUP4
00002c81: SUB
00002c82: SUB
00002c83: DUP2
00002c84: MSTORE
00002c85: SWAP1
00002c86: PUSH1 0x40
00002c88: MSTORE
00002c89: SWAP3
00002c8a: POP
00002c8b: POP
00002c8c: POP
00002c8d: SWAP6
00002c8e: SWAP5
00002c8f: POP
00002c90: POP
00002c91: POP
00002c92: POP
00002c93: POP
00002c94: JUMP
00002c95: JUMPDEST
00002c96: PUSH1 0x60
00002c98: DUP4
00002c99: ISZERO
00002c9a: PUSH2 0x2ca4
00002c9d: JUMPI
00002c9e: POP
00002c9f: DUP2
00002ca0: PUSH2 0x2498
00002ca3: JUMP
00002ca4: JUMPDEST
00002ca5: DUP3
00002ca6: MLOAD
00002ca7: ISZERO
00002ca8: PUSH2 0x2cb4
00002cab: JUMPI
00002cac: DUP3
00002cad: MLOAD
00002cae: DUP1
00002caf: DUP5
00002cb0: PUSH1 0x20
00002cb2: ADD
00002cb3: REVERT
00002cb4: JUMPDEST
00002cb5: DUP2
00002cb6: PUSH1 0x40
00002cb8: MLOAD
00002cb9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002cda: DUP2
00002cdb: MSTORE
00002cdc: PUSH1 0x04
00002cde: ADD
00002cdf: PUSH2 0x07c0
00002ce2: SWAP2
00002ce3: SWAP1
00002ce4: PUSH2 0x3406
00002ce7: JUMP
00002ce8: JUMPDEST
00002ce9: PUSH1 0x40
00002ceb: DUP1
00002cec: MLOAD
00002ced: PUSH1 0x20
00002cef: DUP2
00002cf0: ADD
00002cf1: SWAP1
00002cf2: SWAP2
00002cf3: MSTORE
00002cf4: PUSH1 0x30
00002cf6: DUP3
00002cf7: SWAP1
00002cf8: SHL
00002cf9: DUP2
00002cfa: MSTORE
00002cfb: DUP3
00002cfc: MLOAD
00002cfd: DUP2
00002cfe: DUP2
00002cff: SHR
00002d00: OR
00002d01: PUSH1 0x28
00002d03: DUP2
00002d04: DUP2
00002d05: SHR
00002d06: DUP1
00002d07: DUP5
00002d08: XOR
00002d09: SWAP1
00002d0a: SWAP2
00002d0b: SHL
00002d0c: SWAP1
00002d0d: SWAP2
00002d0e: XOR
00002d0f: DUP5
00002d10: MSTORE
00002d11: DUP1
00002d12: MLOAD
00002d13: DUP3
00002d14: OR
00002d15: SWAP1
00002d16: MSTORE
00002d17: DUP2
00002d18: PUSH1 0xd0
00002d1a: SHR
00002d1b: ISZERO
00002d1c: PUSH2 0x2d3a
00002d1f: JUMPI
00002d20: PUSH1 0x40
00002d22: MLOAD
00002d23: DUP3
00002d24: DUP2
00002d25: MSTORE
00002d26: PUSH1 0x20
00002d28: DUP2
00002d29: ADD
00002d2a: PUSH1 0x40
00002d2c: MSTORE
00002d2d: DUP1
00002d2e: PUSH1 0x08
00002d30: SHL
00002d31: PUSH1 0x01
00002d33: OR
00002d34: PUSH1 0x28
00002d36: SHL
00002d37: DUP3
00002d38: MSTORE
00002d39: POP
00002d3a: JUMPDEST
00002d3b: POP
00002d3c: SWAP1
00002d3d: SWAP2
00002d3e: SWAP1
00002d3f: POP
00002d40: JUMP
00002d41: JUMPDEST
00002d42: PUSH1 0x40
00002d44: DUP1
00002d45: MLOAD
00002d46: PUSH1 0x20
00002d48: DUP2
00002d49: ADD
00002d4a: SWAP1
00002d4b: SWAP2
00002d4c: MSTORE
00002d4d: PUSH1 0x08
00002d4f: DUP3
00002d50: SWAP1
00002d51: SHL
00002d52: PUSH1 0x02
00002d54: OR
00002d55: PUSH1 0x28
00002d57: SWAP1
00002d58: DUP2
00002d59: SHL
00002d5a: DUP3
00002d5b: MSTORE
00002d5c: DUP4
00002d5d: MLOAD
00002d5e: DUP3
00002d5f: DUP2
00002d60: SHR
00002d61: OR
00002d62: DUP1
00002d63: DUP3
00002d64: SHR
00002d65: DUP1
00002d66: DUP5
00002d67: XOR
00002d68: SWAP1
00002d69: SWAP3
00002d6a: SHL
00002d6b: XOR
00002d6c: DUP5
00002d6d: MSTORE
00002d6e: DUP1
00002d6f: MLOAD
00002d70: DUP3
00002d71: OR
00002d72: SWAP1
00002d73: MSTORE
00002d74: PUSH2 0x2d3a
00002d77: JUMP
00002d78: JUMPDEST
00002d79: PUSH1 0x60
00002d7b: PUSH2 0x2fc3
00002d7e: JUMP
00002d7f: JUMPDEST
00002d80: PUSH1 0x01
00002d82: DUP3
00002d83: ADD
00002d84: PUSH1 0x7f
00002d86: DUP3
00002d87: GT
00002d88: PUSH2 0x2d99
00002d8b: JUMPI
00002d8c: DUP2
00002d8d: DUP3
00002d8e: ISZERO
00002d8f: PUSH1 0x07
00002d91: SHL
00002d92: OR
00002d93: DUP4
00002d94: MSTORE8
00002d95: PUSH2 0x1b06
00002d98: JUMP
00002d99: JUMPDEST
00002d9a: PUSH16 0xffffffffffffffffffffffffffffffff
00002dab: DUP3
00002dac: GT
00002dad: PUSH1 0x07
00002daf: SHL
00002db0: DUP3
00002db1: DUP2
00002db2: SHR
00002db3: PUSH8 0xffffffffffffffff
00002dbc: LT
00002dbd: PUSH1 0x06
00002dbf: SHL
00002dc0: OR
00002dc1: DUP3
00002dc2: DUP2
00002dc3: SHR
00002dc4: PUSH4 0xffffffff
00002dc9: LT
00002dca: PUSH1 0x05
00002dcc: SHL
00002dcd: OR
00002dce: DUP3
00002dcf: DUP2
00002dd0: SHR
00002dd1: PUSH2 0xffff
00002dd4: LT
00002dd5: PUSH1 0x04
00002dd7: SHL
00002dd8: OR
00002dd9: PUSH1 0x03
00002ddb: DUP2
00002ddc: SWAP1
00002ddd: SHR
00002dde: SWAP1
00002ddf: DUP4
00002de0: SWAP1
00002de1: SHR
00002de2: PUSH1 0xff
00002de4: LT
00002de5: OR
00002de6: PUSH1 0x81
00002de8: DUP2
00002de9: ADD
00002dea: DUP5
00002deb: MSTORE8
00002dec: PUSH1 0x00
00002dee: DUP4
00002def: SWAP1
00002df0: MSTORE
00002df1: PUSH1 0x1f
00002df3: DUP2
00002df4: XOR
00002df5: MLOAD
00002df6: DUP3
00002df7: MSTORE
00002df8: ADD
00002df9: PUSH1 0x01
00002dfb: ADD
00002dfc: SWAP3
00002dfd: SWAP2
00002dfe: POP
00002dff: POP
00002e00: JUMP
00002e01: JUMPDEST
00002e02: PUSH1 0x58
00002e04: DUP2
00002e05: SWAP1
00002e06: SHL
00002e07: DUP3
00002e08: MSTORE
00002e09: PUSH1 0x15
00002e0b: DUP3
00002e0c: ADD
00002e0d: PUSH1 0x94
00002e0f: DUP4
00002e10: MSTORE8
00002e11: SWAP3
00002e12: SWAP2
00002e13: POP
00002e14: POP
00002e15: JUMP
00002e16: JUMPDEST
00002e17: DUP1
00002e18: MLOAD
00002e19: PUSH1 0x01
00002e1b: DUP4
00002e1c: ADD
00002e1d: SWAP1
00002e1e: PUSH1 0x37
00002e20: DUP2
00002e21: GT
00002e22: PUSH2 0x2e59
00002e25: JUMPI
00002e26: DUP3
00002e27: PUSH1 0x20
00002e29: ADD
00002e2a: MLOAD
00002e2b: PUSH1 0x80
00002e2d: DUP2
00002e2e: PUSH1 0x00
00002e30: BYTE
00002e31: LT
00002e32: DUP3
00002e33: PUSH1 0x01
00002e35: EQ
00002e36: AND
00002e37: PUSH2 0x2e51
00002e3a: JUMPI
00002e3b: DUP6
00002e3c: DUP3
00002e3d: ADD
00002e3e: DUP6
00002e3f: MSTORE8
00002e40: PUSH1 0x40
00002e42: DUP5
00002e43: ADD
00002e44: MLOAD
00002e45: PUSH1 0x21
00002e47: DUP7
00002e48: ADD
00002e49: MSTORE
00002e4a: DUP3
00002e4b: MSTORE
00002e4c: ADD
00002e4d: PUSH2 0x2498
00002e50: JUMP
00002e51: JUMPDEST
00002e52: DUP5
00002e53: MSTORE
00002e54: POP
00002e55: PUSH2 0x2498
00002e58: JUMP
00002e59: JUMPDEST
00002e5a: DUP1
00002e5b: PUSH1 0x20
00002e5d: SHR
00002e5e: RETURNDATASIZE
00002e5f: RETURNDATASIZE
00002e60: RETURNDATACOPY
00002e61: DUP1
00002e62: PUSH3 0xffffff
00002e66: LT
00002e67: DUP2
00002e68: PUSH2 0xffff
00002e6b: LT
00002e6c: ADD
00002e6d: DUP2
00002e6e: PUSH1 0xff
00002e70: LT
00002e71: ADD
00002e72: PUSH1 0x01
00002e74: ADD
00002e75: PUSH1 0x37
00002e77: DUP7
00002e78: ADD
00002e79: DUP2
00002e7a: ADD
00002e7b: PUSH1 0xf8
00002e7d: SHL
00002e7e: DUP6
00002e7f: MSTORE
00002e80: DUP3
00002e81: DUP2
00002e82: ADD
00002e83: DUP3
00002e84: DUP2
00002e85: ADD
00002e86: SWAP4
00002e87: POP
00002e88: DUP1
00002e89: DUP6
00002e8a: PUSH1 0x20
00002e8c: ADD
00002e8d: SUB
00002e8e: JUMPDEST
00002e8f: DUP2
00002e90: DUP2
00002e91: ADD
00002e92: MLOAD
00002e93: DUP3
00002e94: MSTORE
00002e95: PUSH1 0x20
00002e97: DUP3
00002e98: ADD
00002e99: SWAP2
00002e9a: POP
00002e9b: DUP5
00002e9c: DUP3
00002e9d: LT
00002e9e: PUSH2 0x2e8e
00002ea1: JUMPI
00002ea2: POP
00002ea3: POP
00002ea4: DUP2
00002ea5: DUP2
00002ea6: PUSH1 0x03
00002ea8: SHL
00002ea9: PUSH1 0xf8
00002eab: SUB
00002eac: SHL
00002ead: DUP6
00002eae: MLOAD
00002eaf: OR
00002eb0: DUP6
00002eb1: MSTORE
00002eb2: POP
00002eb3: POP
00002eb4: SWAP4
00002eb5: SWAP3
00002eb6: POP
00002eb7: POP
00002eb8: POP
00002eb9: JUMP
00002eba: JUMPDEST
00002ebb: PUSH1 0x00
00002ebd: DUP2
00002ebe: MLOAD
00002ebf: PUSH2 0x2ed0
00002ec2: JUMPI
00002ec3: PUSH1 0xc0
00002ec5: DUP4
00002ec6: MSTORE8
00002ec7: POP
00002ec8: PUSH1 0x01
00002eca: DUP3
00002ecb: ADD
00002ecc: PUSH2 0x1b06
00002ecf: JUMP
00002ed0: JUMPDEST
00002ed1: PUSH1 0x20
00002ed3: DUP4
00002ed4: ADD
00002ed5: DUP3
00002ed6: JUMPDEST
00002ed7: MLOAD
00002ed8: PUSH5 0xffffffffff
00002ede: AND
00002edf: DUP1
00002ee0: ISZERO
00002ee1: PUSH2 0x2f5f
00002ee4: JUMPI
00002ee5: DUP1
00002ee6: MLOAD
00002ee7: PUSH1 0x1a
00002ee9: BYTE
00002eea: PUSH1 0x01
00002eec: DUP2
00002eed: GT
00002eee: PUSH2 0x2f1b
00002ef1: JUMPI
00002ef2: DUP1
00002ef3: PUSH2 0x2f0c
00002ef6: JUMPI
00002ef7: PUSH2 0x2f04
00002efa: DUP4
00002efb: DUP4
00002efc: MLOAD
00002efd: PUSH1 0x30
00002eff: SHR
00002f00: PUSH2 0x2d7f
00002f03: JUMP
00002f04: JUMPDEST
00002f05: SWAP3
00002f06: POP
00002f07: POP
00002f08: PUSH2 0x2ed6
00002f0b: JUMP
00002f0c: JUMPDEST
00002f0d: PUSH2 0x2f04
00002f10: DUP4
00002f11: DUP4
00002f12: MLOAD
00002f13: PUSH1 0x30
00002f15: SHR
00002f16: MLOAD
00002f17: PUSH2 0x2d7f
00002f1a: JUMP
00002f1b: JUMPDEST
00002f1c: PUSH1 0x02
00002f1e: DUP2
00002f1f: SUB
00002f20: PUSH2 0x2f33
00002f23: JUMPI
00002f24: PUSH2 0x2f04
00002f27: PUSH1 0x80
00002f29: DUP5
00002f2a: DUP5
00002f2b: MLOAD
00002f2c: PUSH1 0x30
00002f2e: SHR
00002f2f: PUSH2 0x2e16
00002f32: JUMP
00002f33: JUMPDEST
00002f34: PUSH1 0x03
00002f36: DUP2
00002f37: SUB
00002f38: PUSH2 0x2f49
00002f3b: JUMPI
00002f3c: PUSH2 0x2f04
00002f3f: DUP4
00002f40: DUP4
00002f41: MLOAD
00002f42: PUSH1 0x30
00002f44: SHR
00002f45: PUSH2 0x2eba
00002f48: JUMP
00002f49: JUMPDEST
00002f4a: POP
00002f4b: PUSH2 0x2f58
00002f4e: DUP3
00002f4f: DUP3
00002f50: MLOAD
00002f51: PUSH1 0x30
00002f53: SHR
00002f54: PUSH2 0x2e01
00002f57: JUMP
00002f58: JUMPDEST
00002f59: SWAP2
00002f5a: POP
00002f5b: PUSH2 0x2ed6
00002f5e: JUMP
00002f5f: JUMPDEST
00002f60: POP
00002f61: DUP4
00002f62: SWAP1
00002f63: SUB
00002f64: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00002f85: ADD
00002f86: PUSH1 0x37
00002f88: DUP2
00002f89: GT
00002f8a: PUSH2 0x2fb5
00002f8d: JUMPI
00002f8e: PUSH1 0xc0
00002f90: DUP2
00002f91: ADD
00002f92: DUP5
00002f93: MSTORE8
00002f94: DUP4
00002f95: PUSH1 0x20
00002f97: ADD
00002f98: MLOAD
00002f99: DUP5
00002f9a: PUSH1 0x01
00002f9c: ADD
00002f9d: MSTORE
00002f9e: DUP4
00002f9f: PUSH1 0x40
00002fa1: ADD
00002fa2: MLOAD
00002fa3: DUP5
00002fa4: PUSH1 0x21
00002fa6: ADD
00002fa7: MSTORE
00002fa8: DUP4
00002fa9: PUSH1 0x01
00002fab: ADD
00002fac: DUP2
00002fad: ADD
00002fae: SWAP2
00002faf: POP
00002fb0: POP
00002fb1: PUSH2 0x1b06
00002fb4: JUMP
00002fb5: JUMPDEST
00002fb6: DUP4
00002fb7: MSTORE
00002fb8: PUSH2 0x2498
00002fbb: PUSH1 0xc0
00002fbd: DUP5
00002fbe: DUP1
00002fbf: PUSH2 0x2e16
00002fc2: JUMP
00002fc3: JUMPDEST
00002fc4: POP
00002fc5: PUSH1 0x40
00002fc7: MLOAD
00002fc8: PUSH1 0x20
00002fca: DUP2
00002fcb: ADD
00002fcc: PUSH2 0x2fd5
00002fcf: DUP2
00002fd0: DUP5
00002fd1: PUSH2 0x2eba
00002fd4: JUMP
00002fd5: JUMPDEST
00002fd6: SWAP1
00002fd7: DUP2
00002fd8: SUB
00002fd9: DUP3
00002fda: MSTORE
00002fdb: PUSH1 0x00
00002fdd: DUP2
00002fde: MSTORE
00002fdf: PUSH1 0x20
00002fe1: ADD
00002fe2: PUSH1 0x40
00002fe4: MSTORE
00002fe5: SWAP2
00002fe6: SWAP1
00002fe7: POP
00002fe8: JUMP
00002fe9: JUMPDEST
00002fea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002fff: DUP2
00003000: AND
00003001: DUP2
00003002: EQ
00003003: PUSH2 0x300b
00003006: JUMPI
00003007: PUSH1 0x00
00003009: DUP1
0000300a: REVERT
0000300b: JUMPDEST
0000300c: POP
0000300d: JUMP
0000300e: JUMPDEST
0000300f: PUSH1 0x00
00003011: DUP1
00003012: DUP4
00003013: PUSH1 0x1f
00003015: DUP5
00003016: ADD
00003017: SLT
00003018: PUSH2 0x3020
0000301b: JUMPI
0000301c: PUSH1 0x00
0000301e: DUP1
0000301f: REVERT
00003020: JUMPDEST
00003021: POP
00003022: DUP2
00003023: CALLDATALOAD
00003024: PUSH8 0xffffffffffffffff
0000302d: DUP2
0000302e: GT
0000302f: ISZERO
00003030: PUSH2 0x3038
00003033: JUMPI
00003034: PUSH1 0x00
00003036: DUP1
00003037: REVERT
00003038: JUMPDEST
00003039: PUSH1 0x20
0000303b: DUP4
0000303c: ADD
0000303d: SWAP2
0000303e: POP
0000303f: DUP4
00003040: PUSH1 0x20
00003042: DUP3
00003043: DUP6
00003044: ADD
00003045: ADD
00003046: GT
00003047: ISZERO
00003048: PUSH2 0x3050
0000304b: JUMPI
0000304c: PUSH1 0x00
0000304e: DUP1
0000304f: REVERT
00003050: JUMPDEST
00003051: SWAP3
00003052: POP
00003053: SWAP3
00003054: SWAP1
00003055: POP
00003056: JUMP
00003057: JUMPDEST
00003058: PUSH1 0x00
0000305a: DUP1
0000305b: PUSH1 0x00
0000305d: DUP1
0000305e: PUSH1 0x00
00003060: DUP1
00003061: PUSH1 0x00
00003063: PUSH1 0xc0
00003065: DUP9
00003066: DUP11
00003067: SUB
00003068: SLT
00003069: ISZERO
0000306a: PUSH2 0x3072
0000306d: JUMPI
0000306e: PUSH1 0x00
00003070: DUP1
00003071: REVERT
00003072: JUMPDEST
00003073: DUP8
00003074: CALLDATALOAD
00003075: PUSH2 0x307d
00003078: DUP2
00003079: PUSH2 0x2fe9
0000307c: JUMP
0000307d: JUMPDEST
0000307e: SWAP7
0000307f: POP
00003080: PUSH1 0x20
00003082: DUP9
00003083: ADD
00003084: CALLDATALOAD
00003085: PUSH2 0x308d
00003088: DUP2
00003089: PUSH2 0x2fe9
0000308c: JUMP
0000308d: JUMPDEST
0000308e: SWAP6
0000308f: POP
00003090: PUSH1 0x40
00003092: DUP9
00003093: ADD
00003094: CALLDATALOAD
00003095: PUSH2 0x309d
00003098: DUP2
00003099: PUSH2 0x2fe9
0000309c: JUMP
0000309d: JUMPDEST
0000309e: SWAP5
0000309f: POP
000030a0: PUSH1 0x60
000030a2: DUP9
000030a3: ADD
000030a4: CALLDATALOAD
000030a5: PUSH2 0x30ad
000030a8: DUP2
000030a9: PUSH2 0x2fe9
000030ac: JUMP
000030ad: JUMPDEST
000030ae: SWAP4
000030af: POP
000030b0: PUSH1 0x80
000030b2: DUP9
000030b3: ADD
000030b4: CALLDATALOAD
000030b5: SWAP3
000030b6: POP
000030b7: PUSH1 0xa0
000030b9: DUP9
000030ba: ADD
000030bb: CALLDATALOAD
000030bc: PUSH8 0xffffffffffffffff
000030c5: DUP2
000030c6: GT
000030c7: ISZERO
000030c8: PUSH2 0x30d0
000030cb: JUMPI
000030cc: PUSH1 0x00
000030ce: DUP1
000030cf: REVERT
000030d0: JUMPDEST
000030d1: PUSH2 0x30dc
000030d4: DUP11
000030d5: DUP3
000030d6: DUP12
000030d7: ADD
000030d8: PUSH2 0x300e
000030db: JUMP
000030dc: JUMPDEST
000030dd: SWAP9
000030de: SWAP12
000030df: SWAP8
000030e0: SWAP11
000030e1: POP
000030e2: SWAP6
000030e3: SWAP9
000030e4: POP
000030e5: SWAP4
000030e6: SWAP7
000030e7: SWAP3
000030e8: SWAP6
000030e9: SWAP3
000030ea: SWAP4
000030eb: POP
000030ec: POP
000030ed: POP
000030ee: JUMP
000030ef: JUMPDEST
000030f0: DUP1
000030f1: CALLDATALOAD
000030f2: PUSH4 0xffffffff
000030f7: DUP2
000030f8: AND
000030f9: DUP2
000030fa: EQ
000030fb: PUSH2 0x10ee
000030fe: JUMPI
000030ff: PUSH1 0x00
00003101: DUP1
00003102: REVERT
00003103: JUMPDEST
00003104: PUSH1 0x00
00003106: DUP1
00003107: PUSH1 0x00
00003109: PUSH1 0x40
0000310b: DUP5
0000310c: DUP7
0000310d: SUB
0000310e: SLT
0000310f: ISZERO
00003110: PUSH2 0x3118
00003113: JUMPI
00003114: PUSH1 0x00
00003116: DUP1
00003117: REVERT
00003118: JUMPDEST
00003119: PUSH2 0x3121
0000311c: DUP5
0000311d: PUSH2 0x30ef
00003120: JUMP
00003121: JUMPDEST
00003122: SWAP3
00003123: POP
00003124: PUSH1 0x20
00003126: DUP5
00003127: ADD
00003128: CALLDATALOAD
00003129: PUSH8 0xffffffffffffffff
00003132: DUP2
00003133: GT
00003134: ISZERO
00003135: PUSH2 0x313d
00003138: JUMPI
00003139: PUSH1 0x00
0000313b: DUP1
0000313c: REVERT
0000313d: JUMPDEST
0000313e: PUSH2 0x3149
00003141: DUP7
00003142: DUP3
00003143: DUP8
00003144: ADD
00003145: PUSH2 0x300e
00003148: JUMP
00003149: JUMPDEST
0000314a: SWAP5
0000314b: SWAP8
0000314c: SWAP1
0000314d: SWAP7
0000314e: POP
0000314f: SWAP4
00003150: SWAP5
00003151: POP
00003152: POP
00003153: POP
00003154: POP
00003155: JUMP
00003156: JUMPDEST
00003157: PUSH1 0x00
00003159: DUP1
0000315a: PUSH1 0x00
0000315c: DUP1
0000315d: PUSH1 0x00
0000315f: PUSH1 0x80
00003161: DUP7
00003162: DUP9
00003163: SUB
00003164: SLT
00003165: ISZERO
00003166: PUSH2 0x316e
00003169: JUMPI
0000316a: PUSH1 0x00
0000316c: DUP1
0000316d: REVERT
0000316e: JUMPDEST
0000316f: DUP6
00003170: CALLDATALOAD
00003171: PUSH2 0x3179
00003174: DUP2
00003175: PUSH2 0x2fe9
00003178: JUMP
00003179: JUMPDEST
0000317a: SWAP5
0000317b: POP
0000317c: PUSH1 0x20
0000317e: DUP7
0000317f: ADD
00003180: CALLDATALOAD
00003181: PUSH2 0x3189
00003184: DUP2
00003185: PUSH2 0x2fe9
00003188: JUMP
00003189: JUMPDEST
0000318a: SWAP4
0000318b: POP
0000318c: PUSH1 0x40
0000318e: DUP7
0000318f: ADD
00003190: CALLDATALOAD
00003191: SWAP3
00003192: POP
00003193: PUSH1 0x60
00003195: DUP7
00003196: ADD
00003197: CALLDATALOAD
00003198: PUSH8 0xffffffffffffffff
000031a1: DUP2
000031a2: GT
000031a3: ISZERO
000031a4: PUSH2 0x31ac
000031a7: JUMPI
000031a8: PUSH1 0x00
000031aa: DUP1
000031ab: REVERT
000031ac: JUMPDEST
000031ad: PUSH2 0x31b8
000031b0: DUP9
000031b1: DUP3
000031b2: DUP10
000031b3: ADD
000031b4: PUSH2 0x300e
000031b7: JUMP
000031b8: JUMPDEST
000031b9: SWAP7
000031ba: SWAP10
000031bb: SWAP6
000031bc: SWAP9
000031bd: POP
000031be: SWAP4
000031bf: SWAP7
000031c0: POP
000031c1: SWAP3
000031c2: SWAP5
000031c3: SWAP4
000031c4: SWAP3
000031c5: POP
000031c6: POP
000031c7: POP
000031c8: JUMP
000031c9: JUMPDEST
000031ca: PUSH1 0x00
000031cc: DUP1
000031cd: PUSH1 0x00
000031cf: DUP1
000031d0: PUSH1 0x00
000031d2: DUP1
000031d3: PUSH1 0xa0
000031d5: DUP8
000031d6: DUP10
000031d7: SUB
000031d8: SLT
000031d9: ISZERO
000031da: PUSH2 0x31e2
000031dd: JUMPI
000031de: PUSH1 0x00
000031e0: DUP1
000031e1: REVERT
000031e2: JUMPDEST
000031e3: DUP7
000031e4: CALLDATALOAD
000031e5: PUSH2 0x31ed
000031e8: DUP2
000031e9: PUSH2 0x2fe9
000031ec: JUMP
000031ed: JUMPDEST
000031ee: SWAP6
000031ef: POP
000031f0: PUSH1 0x20
000031f2: DUP8
000031f3: ADD
000031f4: CALLDATALOAD
000031f5: PUSH2 0x31fd
000031f8: DUP2
000031f9: PUSH2 0x2fe9
000031fc: JUMP
000031fd: JUMPDEST
000031fe: SWAP5
000031ff: POP
00003200: PUSH1 0x40
00003202: DUP8
00003203: ADD
00003204: CALLDATALOAD
00003205: SWAP4
00003206: POP
00003207: PUSH2 0x3212
0000320a: PUSH1 0x60
0000320c: DUP9
0000320d: ADD
0000320e: PUSH2 0x30ef
00003211: JUMP
00003212: JUMPDEST
00003213: SWAP3
00003214: POP
00003215: PUSH1 0x80
00003217: DUP8
00003218: ADD
00003219: CALLDATALOAD
0000321a: PUSH8 0xffffffffffffffff
00003223: DUP2
00003224: GT
00003225: ISZERO
00003226: PUSH2 0x322e
00003229: JUMPI
0000322a: PUSH1 0x00
0000322c: DUP1
0000322d: REVERT
0000322e: JUMPDEST
0000322f: PUSH2 0x323a
00003232: DUP10
00003233: DUP3
00003234: DUP11
00003235: ADD
00003236: PUSH2 0x300e
00003239: JUMP
0000323a: JUMPDEST
0000323b: SWAP8
0000323c: SWAP11
0000323d: SWAP7
0000323e: SWAP10
0000323f: POP
00003240: SWAP5
00003241: SWAP8
00003242: POP
00003243: SWAP3
00003244: SWAP6
00003245: SWAP4
00003246: SWAP5
00003247: SWAP3
00003248: POP
00003249: POP
0000324a: POP
0000324b: JUMP
0000324c: JUMPDEST
0000324d: PUSH1 0x00
0000324f: DUP1
00003250: PUSH1 0x40
00003252: DUP4
00003253: DUP6
00003254: SUB
00003255: SLT
00003256: ISZERO
00003257: PUSH2 0x325f
0000325a: JUMPI
0000325b: PUSH1 0x00
0000325d: DUP1
0000325e: REVERT
0000325f: JUMPDEST
00003260: DUP3
00003261: CALLDATALOAD
00003262: PUSH2 0x326a
00003265: DUP2
00003266: PUSH2 0x2fe9
00003269: JUMP
0000326a: JUMPDEST
0000326b: SWAP5
0000326c: PUSH1 0x20
0000326e: SWAP4
0000326f: SWAP1
00003270: SWAP4
00003271: ADD
00003272: CALLDATALOAD
00003273: SWAP4
00003274: POP
00003275: POP
00003276: POP
00003277: JUMP
00003278: JUMPDEST
00003279: PUSH1 0x00
0000327b: DUP1
0000327c: PUSH1 0x00
0000327e: DUP1
0000327f: PUSH1 0x00
00003281: DUP1
00003282: PUSH1 0x00
00003284: DUP1
00003285: PUSH1 0xe0
00003287: DUP10
00003288: DUP12
00003289: SUB
0000328a: SLT
0000328b: ISZERO
0000328c: PUSH2 0x3294
0000328f: JUMPI
00003290: PUSH1 0x00
00003292: DUP1
00003293: REVERT
00003294: JUMPDEST
00003295: DUP9
00003296: CALLDATALOAD
00003297: SWAP8
00003298: POP
00003299: PUSH1 0x20
0000329b: DUP10
0000329c: ADD
0000329d: CALLDATALOAD
0000329e: PUSH2 0x32a6
000032a1: DUP2
000032a2: PUSH2 0x2fe9
000032a5: JUMP
000032a6: JUMPDEST
000032a7: SWAP7
000032a8: POP
000032a9: PUSH1 0x40
000032ab: DUP10
000032ac: ADD
000032ad: CALLDATALOAD
000032ae: PUSH2 0x32b6
000032b1: DUP2
000032b2: PUSH2 0x2fe9
000032b5: JUMP
000032b6: JUMPDEST
000032b7: SWAP6
000032b8: POP
000032b9: PUSH1 0x60
000032bb: DUP10
000032bc: ADD
000032bd: CALLDATALOAD
000032be: PUSH2 0x32c6
000032c1: DUP2
000032c2: PUSH2 0x2fe9
000032c5: JUMP
000032c6: JUMPDEST
000032c7: SWAP5
000032c8: POP
000032c9: PUSH1 0x80
000032cb: DUP10
000032cc: ADD
000032cd: CALLDATALOAD
000032ce: PUSH2 0x32d6
000032d1: DUP2
000032d2: PUSH2 0x2fe9
000032d5: JUMP
000032d6: JUMPDEST
000032d7: SWAP4
000032d8: POP
000032d9: PUSH1 0xa0
000032db: DUP10
000032dc: ADD
000032dd: CALLDATALOAD
000032de: SWAP3
000032df: POP
000032e0: PUSH1 0xc0
000032e2: DUP10
000032e3: ADD
000032e4: CALLDATALOAD
000032e5: PUSH8 0xffffffffffffffff
000032ee: DUP2
000032ef: GT
000032f0: ISZERO
000032f1: PUSH2 0x32f9
000032f4: JUMPI
000032f5: PUSH1 0x00
000032f7: DUP1
000032f8: REVERT
000032f9: JUMPDEST
000032fa: PUSH2 0x3305
000032fd: DUP12
000032fe: DUP3
000032ff: DUP13
00003300: ADD
00003301: PUSH2 0x300e
00003304: JUMP
00003305: JUMPDEST
00003306: SWAP10
00003307: SWAP13
00003308: SWAP9
00003309: SWAP12
0000330a: POP
0000330b: SWAP7
0000330c: SWAP10
0000330d: POP
0000330e: SWAP5
0000330f: SWAP8
00003310: SWAP4
00003311: SWAP7
00003312: SWAP3
00003313: SWAP6
00003314: SWAP5
00003315: POP
00003316: POP
00003317: POP
00003318: JUMP
00003319: JUMPDEST
0000331a: PUSH1 0x00
0000331c: DUP1
0000331d: PUSH1 0x00
0000331f: DUP1
00003320: PUSH1 0x00
00003322: DUP1
00003323: PUSH1 0x00
00003325: PUSH1 0xc0
00003327: DUP9
00003328: DUP11
00003329: SUB
0000332a: SLT
0000332b: ISZERO
0000332c: PUSH2 0x3334
0000332f: JUMPI
00003330: PUSH1 0x00
00003332: DUP1
00003333: REVERT
00003334: JUMPDEST
00003335: DUP8
00003336: CALLDATALOAD
00003337: PUSH2 0x333f
0000333a: DUP2
0000333b: PUSH2 0x2fe9
0000333e: JUMP
0000333f: JUMPDEST
00003340: SWAP7
00003341: POP
00003342: PUSH1 0x20
00003344: DUP9
00003345: ADD
00003346: CALLDATALOAD
00003347: PUSH2 0x334f
0000334a: DUP2
0000334b: PUSH2 0x2fe9
0000334e: JUMP
0000334f: JUMPDEST
00003350: SWAP6
00003351: POP
00003352: PUSH1 0x40
00003354: DUP9
00003355: ADD
00003356: CALLDATALOAD
00003357: PUSH2 0x335f
0000335a: DUP2
0000335b: PUSH2 0x2fe9
0000335e: JUMP
0000335f: JUMPDEST
00003360: SWAP5
00003361: POP
00003362: PUSH1 0x60
00003364: DUP9
00003365: ADD
00003366: CALLDATALOAD
00003367: SWAP4
00003368: POP
00003369: PUSH2 0x3374
0000336c: PUSH1 0x80
0000336e: DUP10
0000336f: ADD
00003370: PUSH2 0x30ef
00003373: JUMP
00003374: JUMPDEST
00003375: SWAP3
00003376: POP
00003377: PUSH1 0xa0
00003379: DUP9
0000337a: ADD
0000337b: CALLDATALOAD
0000337c: PUSH8 0xffffffffffffffff
00003385: DUP2
00003386: GT
00003387: ISZERO
00003388: PUSH2 0x30d0
0000338b: JUMPI
0000338c: PUSH1 0x00
0000338e: DUP1
0000338f: REVERT
00003390: JUMPDEST
00003391: PUSH1 0x00
00003393: JUMPDEST
00003394: DUP4
00003395: DUP2
00003396: LT
00003397: ISZERO
00003398: PUSH2 0x33ab
0000339b: JUMPI
0000339c: DUP2
0000339d: DUP2
0000339e: ADD
0000339f: MLOAD
000033a0: DUP4
000033a1: DUP3
000033a2: ADD
000033a3: MSTORE
000033a4: PUSH1 0x20
000033a6: ADD
000033a7: PUSH2 0x3393
000033aa: JUMP
000033ab: JUMPDEST
000033ac: DUP4
000033ad: DUP2
000033ae: GT
000033af: ISZERO
000033b0: PUSH2 0x16ef
000033b3: JUMPI
000033b4: POP
000033b5: POP
000033b6: PUSH1 0x00
000033b8: SWAP2
000033b9: ADD
000033ba: MSTORE
000033bb: JUMP
000033bc: JUMPDEST
000033bd: PUSH1 0x00
000033bf: DUP2
000033c0: MLOAD
000033c1: DUP1
000033c2: DUP5
000033c3: MSTORE
000033c4: PUSH2 0x33d4
000033c7: DUP2
000033c8: PUSH1 0x20
000033ca: DUP7
000033cb: ADD
000033cc: PUSH1 0x20
000033ce: DUP7
000033cf: ADD
000033d0: PUSH2 0x3390
000033d3: JUMP
000033d4: JUMPDEST
000033d5: PUSH1 0x1f
000033d7: ADD
000033d8: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000033f9: AND
000033fa: SWAP3
000033fb: SWAP1
000033fc: SWAP3
000033fd: ADD
000033fe: PUSH1 0x20
00003400: ADD
00003401: SWAP3
00003402: SWAP2
00003403: POP
00003404: POP
00003405: JUMP
00003406: JUMPDEST
00003407: PUSH1 0x20
00003409: DUP2
0000340a: MSTORE
0000340b: PUSH1 0x00
0000340d: PUSH2 0x2498
00003410: PUSH1 0x20
00003412: DUP4
00003413: ADD
00003414: DUP5
00003415: PUSH2 0x33bc
00003418: JUMP
00003419: JUMPDEST
0000341a: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000343b: PUSH1 0x00
0000343d: MSTORE
0000343e: PUSH1 0x41
00003440: PUSH1 0x04
00003442: MSTORE
00003443: PUSH1 0x24
00003445: PUSH1 0x00
00003447: REVERT
00003448: JUMPDEST
00003449: PUSH1 0x00
0000344b: DUP1
0000344c: PUSH1 0x00
0000344e: DUP1
0000344f: PUSH1 0x00
00003451: DUP1
00003452: PUSH1 0x00
00003454: PUSH1 0xe0
00003456: DUP9
00003457: DUP11
00003458: SUB
00003459: SLT
0000345a: ISZERO
0000345b: PUSH2 0x3463
0000345e: JUMPI
0000345f: PUSH1 0x00
00003461: DUP1
00003462: REVERT
00003463: JUMPDEST
00003464: DUP8
00003465: CALLDATALOAD
00003466: SWAP7
00003467: POP
00003468: PUSH1 0x20
0000346a: DUP9
0000346b: ADD
0000346c: CALLDATALOAD
0000346d: PUSH2 0x3475
00003470: DUP2
00003471: PUSH2 0x2fe9
00003474: JUMP
00003475: JUMPDEST
00003476: SWAP6
00003477: POP
00003478: PUSH1 0x40
0000347a: DUP9
0000347b: ADD
0000347c: CALLDATALOAD
0000347d: PUSH2 0x3485
00003480: DUP2
00003481: PUSH2 0x2fe9
00003484: JUMP
00003485: JUMPDEST
00003486: SWAP5
00003487: POP
00003488: PUSH1 0x60
0000348a: DUP9
0000348b: ADD
0000348c: CALLDATALOAD
0000348d: PUSH2 0x3495
00003490: DUP2
00003491: PUSH2 0x2fe9
00003494: JUMP
00003495: JUMPDEST
00003496: SWAP4
00003497: POP
00003498: PUSH1 0x80
0000349a: DUP9
0000349b: ADD
0000349c: CALLDATALOAD
0000349d: PUSH2 0x34a5
000034a0: DUP2
000034a1: PUSH2 0x2fe9
000034a4: JUMP
000034a5: JUMPDEST
000034a6: SWAP3
000034a7: POP
000034a8: PUSH1 0xa0
000034aa: DUP9
000034ab: ADD
000034ac: CALLDATALOAD
000034ad: SWAP2
000034ae: POP
000034af: PUSH1 0xc0
000034b1: DUP9
000034b2: ADD
000034b3: CALLDATALOAD
000034b4: PUSH8 0xffffffffffffffff
000034bd: DUP1
000034be: DUP3
000034bf: GT
000034c0: ISZERO
000034c1: PUSH2 0x34c9
000034c4: JUMPI
000034c5: PUSH1 0x00
000034c7: DUP1
000034c8: REVERT
000034c9: JUMPDEST
000034ca: DUP2
000034cb: DUP11
000034cc: ADD
000034cd: SWAP2
000034ce: POP
000034cf: DUP11
000034d0: PUSH1 0x1f
000034d2: DUP4
000034d3: ADD
000034d4: SLT
000034d5: PUSH2 0x34dd
000034d8: JUMPI
000034d9: PUSH1 0x00
000034db: DUP1
000034dc: REVERT
000034dd: JUMPDEST
000034de: DUP2
000034df: CALLDATALOAD
000034e0: DUP2
000034e1: DUP2
000034e2: GT
000034e3: ISZERO
000034e4: PUSH2 0x34ef
000034e7: JUMPI
000034e8: PUSH2 0x34ef
000034eb: PUSH2 0x3419
000034ee: JUMP
000034ef: JUMPDEST
000034f0: PUSH1 0x40
000034f2: MLOAD
000034f3: PUSH1 0x1f
000034f5: DUP3
000034f6: ADD
000034f7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00003518: SWAP1
00003519: DUP2
0000351a: AND
0000351b: PUSH1 0x3f
0000351d: ADD
0000351e: AND
0000351f: DUP2
00003520: ADD
00003521: SWAP1
00003522: DUP4
00003523: DUP3
00003524: GT
00003525: DUP2
00003526: DUP4
00003527: LT
00003528: OR
00003529: ISZERO
0000352a: PUSH2 0x3535
0000352d: JUMPI
0000352e: PUSH2 0x3535
00003531: PUSH2 0x3419
00003534: JUMP
00003535: JUMPDEST
00003536: DUP2
00003537: PUSH1 0x40
00003539: MSTORE
0000353a: DUP3
0000353b: DUP2
0000353c: MSTORE
0000353d: DUP14
0000353e: PUSH1 0x20
00003540: DUP5
00003541: DUP8
00003542: ADD
00003543: ADD
00003544: GT
00003545: ISZERO
00003546: PUSH2 0x354e
00003549: JUMPI
0000354a: PUSH1 0x00
0000354c: DUP1
0000354d: REVERT
0000354e: JUMPDEST
0000354f: DUP3
00003550: PUSH1 0x20
00003552: DUP7
00003553: ADD
00003554: PUSH1 0x20
00003556: DUP4
00003557: ADD
00003558: CALLDATACOPY
00003559: PUSH1 0x00
0000355b: PUSH1 0x20
0000355d: DUP5
0000355e: DUP4
0000355f: ADD
00003560: ADD
00003561: MSTORE
00003562: DUP1
00003563: SWAP6
00003564: POP
00003565: POP
00003566: POP
00003567: POP
00003568: POP
00003569: POP
0000356a: SWAP3
0000356b: SWAP6
0000356c: SWAP9
0000356d: SWAP2
0000356e: SWAP5
0000356f: SWAP8
00003570: POP
00003571: SWAP3
00003572: SWAP6
00003573: POP
00003574: JUMP
00003575: JUMPDEST
00003576: PUSH1 0x00
00003578: PUSH1 0x20
0000357a: DUP3
0000357b: DUP5
0000357c: SUB
0000357d: SLT
0000357e: ISZERO
0000357f: PUSH2 0x3587
00003582: JUMPI
00003583: PUSH1 0x00
00003585: DUP1
00003586: REVERT
00003587: JUMPDEST
00003588: POP
00003589: CALLDATALOAD
0000358a: SWAP2
0000358b: SWAP1
0000358c: POP
0000358d: JUMP
0000358e: JUMPDEST
0000358f: PUSH1 0x00
00003591: DUP1
00003592: PUSH1 0x40
00003594: DUP4
00003595: DUP6
00003596: SUB
00003597: SLT
00003598: ISZERO
00003599: PUSH2 0x35a1
0000359c: JUMPI
0000359d: PUSH1 0x00
0000359f: DUP1
000035a0: REVERT
000035a1: JUMPDEST
000035a2: DUP3
000035a3: CALLDATALOAD
000035a4: PUSH2 0x35ac
000035a7: DUP2
000035a8: PUSH2 0x2fe9
000035ab: JUMP
000035ac: JUMPDEST
000035ad: SWAP2
000035ae: POP
000035af: PUSH1 0x20
000035b1: DUP4
000035b2: ADD
000035b3: CALLDATALOAD
000035b4: PUSH2 0x35bc
000035b7: DUP2
000035b8: PUSH2 0x2fe9
000035bb: JUMP
000035bc: JUMPDEST
000035bd: DUP1
000035be: SWAP2
000035bf: POP
000035c0: POP
000035c1: SWAP3
000035c2: POP
000035c3: SWAP3
000035c4: SWAP1
000035c5: POP
000035c6: JUMP
000035c7: JUMPDEST
000035c8: PUSH1 0x00
000035ca: DUP1
000035cb: PUSH1 0x00
000035cd: DUP1
000035ce: PUSH1 0x60
000035d0: DUP6
000035d1: DUP8
000035d2: SUB
000035d3: SLT
000035d4: ISZERO
000035d5: PUSH2 0x35dd
000035d8: JUMPI
000035d9: PUSH1 0x00
000035db: DUP1
000035dc: REVERT
000035dd: JUMPDEST
000035de: DUP5
000035df: CALLDATALOAD
000035e0: PUSH2 0x35e8
000035e3: DUP2
000035e4: PUSH2 0x2fe9
000035e7: JUMP
000035e8: JUMPDEST
000035e9: SWAP4
000035ea: POP
000035eb: PUSH2 0x35f6
000035ee: PUSH1 0x20
000035f0: DUP7
000035f1: ADD
000035f2: PUSH2 0x30ef
000035f5: JUMP
000035f6: JUMPDEST
000035f7: SWAP3
000035f8: POP
000035f9: PUSH1 0x40
000035fb: DUP6
000035fc: ADD
000035fd: CALLDATALOAD
000035fe: PUSH8 0xffffffffffffffff
00003607: DUP2
00003608: GT
00003609: ISZERO
0000360a: PUSH2 0x3612
0000360d: JUMPI
0000360e: PUSH1 0x00
00003610: DUP1
00003611: REVERT
00003612: JUMPDEST
00003613: PUSH2 0x361e
00003616: DUP8
00003617: DUP3
00003618: DUP9
00003619: ADD
0000361a: PUSH2 0x300e
0000361d: JUMP
0000361e: JUMPDEST
0000361f: SWAP6
00003620: SWAP9
00003621: SWAP5
00003622: SWAP8
00003623: POP
00003624: SWAP6
00003625: POP
00003626: POP
00003627: POP
00003628: POP
00003629: JUMP
0000362a: JUMPDEST
0000362b: PUSH1 0x00
0000362d: DUP1
0000362e: PUSH1 0x00
00003630: DUP1
00003631: PUSH1 0x80
00003633: DUP6
00003634: DUP8
00003635: SUB
00003636: SLT
00003637: ISZERO
00003638: PUSH2 0x3640
0000363b: JUMPI
0000363c: PUSH1 0x00
0000363e: DUP1
0000363f: REVERT
00003640: JUMPDEST
00003641: DUP5
00003642: CALLDATALOAD
00003643: PUSH2 0x364b
00003646: DUP2
00003647: PUSH2 0x2fe9
0000364a: JUMP
0000364b: JUMPDEST
0000364c: SWAP4
0000364d: POP
0000364e: PUSH1 0x20
00003650: DUP6
00003651: ADD
00003652: CALLDATALOAD
00003653: PUSH2 0x365b
00003656: DUP2
00003657: PUSH2 0x2fe9
0000365a: JUMP
0000365b: JUMPDEST
0000365c: SWAP3
0000365d: POP
0000365e: PUSH1 0x40
00003660: DUP6
00003661: ADD
00003662: CALLDATALOAD
00003663: PUSH2 0x366b
00003666: DUP2
00003667: PUSH2 0x2fe9
0000366a: JUMP
0000366b: JUMPDEST
0000366c: SWAP2
0000366d: POP
0000366e: PUSH1 0x60
00003670: DUP6
00003671: ADD
00003672: CALLDATALOAD
00003673: PUSH2 0x367b
00003676: DUP2
00003677: PUSH2 0x2fe9
0000367a: JUMP
0000367b: JUMPDEST
0000367c: SWAP4
0000367d: SWAP7
0000367e: SWAP3
0000367f: SWAP6
00003680: POP
00003681: SWAP1
00003682: SWAP4
00003683: POP
00003684: POP
00003685: JUMP
00003686: JUMPDEST
00003687: PUSH1 0x00
00003689: PUSH1 0x20
0000368b: DUP3
0000368c: DUP5
0000368d: SUB
0000368e: SLT
0000368f: ISZERO
00003690: PUSH2 0x3698
00003693: JUMPI
00003694: PUSH1 0x00
00003696: DUP1
00003697: REVERT
00003698: JUMPDEST
00003699: DUP2
0000369a: MLOAD
0000369b: PUSH2 0x2498
0000369e: DUP2
0000369f: PUSH2 0x2fe9
000036a2: JUMP
000036a3: JUMPDEST
000036a4: PUSH1 0x00
000036a6: DUP3
000036a7: DUP3
000036a8: LT
000036a9: ISZERO
000036aa: PUSH2 0x36dc
000036ad: JUMPI
000036ae: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000036cf: PUSH1 0x00
000036d1: MSTORE
000036d2: PUSH1 0x11
000036d4: PUSH1 0x04
000036d6: MSTORE
000036d7: PUSH1 0x24
000036d9: PUSH1 0x00
000036db: REVERT
000036dc: JUMPDEST
000036dd: POP
000036de: SUB
000036df: SWAP1
000036e0: JUMP
000036e1: JUMPDEST
000036e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000036f7: DUP5
000036f8: AND
000036f9: DUP2
000036fa: MSTORE
000036fb: DUP3
000036fc: PUSH1 0x20
000036fe: DUP3
000036ff: ADD
00003700: MSTORE
00003701: PUSH1 0x60
00003703: PUSH1 0x40
00003705: DUP3
00003706: ADD
00003707: MSTORE
00003708: PUSH1 0x00
0000370a: PUSH2 0x3716
0000370d: PUSH1 0x60
0000370f: DUP4
00003710: ADD
00003711: DUP5
00003712: PUSH2 0x33bc
00003715: JUMP
00003716: JUMPDEST
00003717: SWAP6
00003718: SWAP5
00003719: POP
0000371a: POP
0000371b: POP
0000371c: POP
0000371d: POP
0000371e: JUMP
0000371f: JUMPDEST
00003720: PUSH1 0x00
00003722: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003737: DUP1
00003738: DUP8
00003739: AND
0000373a: DUP4
0000373b: MSTORE
0000373c: DUP1
0000373d: DUP7
0000373e: AND
0000373f: PUSH1 0x20
00003741: DUP5
00003742: ADD
00003743: MSTORE
00003744: POP
00003745: DUP4
00003746: PUSH1 0x40
00003748: DUP4
00003749: ADD
0000374a: MSTORE
0000374b: PUSH1 0x80
0000374d: PUSH1 0x60
0000374f: DUP4
00003750: ADD
00003751: MSTORE
00003752: PUSH2 0x375e
00003755: PUSH1 0x80
00003757: DUP4
00003758: ADD
00003759: DUP5
0000375a: PUSH2 0x33bc
0000375d: JUMP
0000375e: JUMPDEST
0000375f: SWAP7
00003760: SWAP6
00003761: POP
00003762: POP
00003763: POP
00003764: POP
00003765: POP
00003766: POP
00003767: JUMP
00003768: JUMPDEST
00003769: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000377e: DUP5
0000377f: AND
00003780: DUP2
00003781: MSTORE
00003782: PUSH1 0x60
00003784: PUSH1 0x20
00003786: DUP3
00003787: ADD
00003788: MSTORE
00003789: PUSH1 0x00
0000378b: PUSH2 0x3797
0000378e: PUSH1 0x60
00003790: DUP4
00003791: ADD
00003792: DUP6
00003793: PUSH2 0x33bc
00003796: JUMP
00003797: JUMPDEST
00003798: SWAP1
00003799: POP
0000379a: PUSH4 0xffffffff
0000379f: DUP4
000037a0: AND
000037a1: PUSH1 0x40
000037a3: DUP4
000037a4: ADD
000037a5: MSTORE
000037a6: SWAP5
000037a7: SWAP4
000037a8: POP
000037a9: POP
000037aa: POP
000037ab: POP
000037ac: JUMP
000037ad: JUMPDEST
000037ae: DUP3
000037af: DUP2
000037b0: MSTORE
000037b1: PUSH1 0x40
000037b3: PUSH1 0x20
000037b5: DUP3
000037b6: ADD
000037b7: MSTORE
000037b8: PUSH1 0x00
000037ba: PUSH2 0x296a
000037bd: PUSH1 0x40
000037bf: DUP4
000037c0: ADD
000037c1: DUP5
000037c2: PUSH2 0x33bc
000037c5: JUMP
000037c6: JUMPDEST
000037c7: PUSH1 0x00
000037c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000037de: DUP1
000037df: DUP10
000037e0: AND
000037e1: DUP4
000037e2: MSTORE
000037e3: DUP1
000037e4: DUP9
000037e5: AND
000037e6: PUSH1 0x20
000037e8: DUP5
000037e9: ADD
000037ea: MSTORE
000037eb: DUP1
000037ec: DUP8
000037ed: AND
000037ee: PUSH1 0x40
000037f0: DUP5
000037f1: ADD
000037f2: MSTORE
000037f3: DUP1
000037f4: DUP7
000037f5: AND
000037f6: PUSH1 0x60
000037f8: DUP5
000037f9: ADD
000037fa: MSTORE
000037fb: POP
000037fc: DUP4
000037fd: PUSH1 0x80
000037ff: DUP4
00003800: ADD
00003801: MSTORE
00003802: PUSH1 0xc0
00003804: PUSH1 0xa0
00003806: DUP4
00003807: ADD
00003808: MSTORE
00003809: PUSH2 0x3815
0000380c: PUSH1 0xc0
0000380e: DUP4
0000380f: ADD
00003810: DUP5
00003811: PUSH2 0x33bc
00003814: JUMP
00003815: JUMPDEST
00003816: SWAP9
00003817: SWAP8
00003818: POP
00003819: POP
0000381a: POP
0000381b: POP
0000381c: POP
0000381d: POP
0000381e: POP
0000381f: POP
00003820: JUMP
00003821: JUMPDEST
00003822: DUP8
00003823: DUP2
00003824: MSTORE
00003825: PUSH1 0x00
00003827: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000383c: DUP1
0000383d: DUP10
0000383e: AND
0000383f: PUSH1 0x20
00003841: DUP5
00003842: ADD
00003843: MSTORE
00003844: DUP1
00003845: DUP9
00003846: AND
00003847: PUSH1 0x40
00003849: DUP5
0000384a: ADD
0000384b: MSTORE
0000384c: DUP1
0000384d: DUP8
0000384e: AND
0000384f: PUSH1 0x60
00003851: DUP5
00003852: ADD
00003853: MSTORE
00003854: DUP1
00003855: DUP7
00003856: AND
00003857: PUSH1 0x80
00003859: DUP5
0000385a: ADD
0000385b: MSTORE
0000385c: POP
0000385d: DUP4
0000385e: PUSH1 0xa0
00003860: DUP4
00003861: ADD
00003862: MSTORE
00003863: PUSH1 0xe0
00003865: PUSH1 0xc0
00003867: DUP4
00003868: ADD
00003869: MSTORE
0000386a: PUSH2 0x3876
0000386d: PUSH1 0xe0
0000386f: DUP4
00003870: ADD
00003871: DUP5
00003872: PUSH2 0x33bc
00003875: JUMP
00003876: JUMPDEST
00003877: SWAP10
00003878: SWAP9
00003879: POP
0000387a: POP
0000387b: POP
0000387c: POP
0000387d: POP
0000387e: POP
0000387f: POP
00003880: POP
00003881: POP
00003882: JUMP
00003883: JUMPDEST
00003884: PUSH1 0x00
00003886: PUSH1 0x20
00003888: DUP3
00003889: DUP5
0000388a: SUB
0000388b: SLT
0000388c: ISZERO
0000388d: PUSH2 0x3895
00003890: JUMPI
00003891: PUSH1 0x00
00003893: DUP1
00003894: REVERT
00003895: JUMPDEST
00003896: DUP2
00003897: MLOAD
00003898: DUP1
00003899: ISZERO
0000389a: ISZERO
0000389b: DUP2
0000389c: EQ
0000389d: PUSH2 0x2498
000038a0: JUMPI
000038a1: PUSH1 0x00
000038a3: DUP1
000038a4: REVERT
000038a5: JUMPDEST
000038a6: PUSH1 0x00
000038a8: DUP1
000038a9: PUSH1 0x40
000038ab: DUP4
000038ac: DUP6
000038ad: SUB
000038ae: SLT
000038af: ISZERO
000038b0: PUSH2 0x38b8
000038b3: JUMPI
000038b4: PUSH1 0x00
000038b6: DUP1
000038b7: REVERT
000038b8: JUMPDEST
000038b9: DUP3
000038ba: MLOAD
000038bb: PUSH2 0x38c3
000038be: DUP2
000038bf: PUSH2 0x2fe9
000038c2: JUMP
000038c3: JUMPDEST
000038c4: PUSH1 0x20
000038c6: DUP5
000038c7: ADD
000038c8: MLOAD
000038c9: SWAP1
000038ca: SWAP3
000038cb: POP
000038cc: PUSH1 0xff
000038ce: DUP2
000038cf: AND
000038d0: DUP2
000038d1: EQ
000038d2: PUSH2 0x35bc
000038d5: JUMPI
000038d6: PUSH1 0x00
000038d8: DUP1
000038d9: REVERT
000038da: JUMPDEST
000038db: PUSH1 0x00
000038dd: DUP3
000038de: MLOAD
000038df: PUSH2 0x38ec
000038e2: DUP2
000038e3: DUP5
000038e4: PUSH1 0x20
000038e6: DUP8
000038e7: ADD
000038e8: PUSH2 0x3390
000038eb: JUMP
000038ec: JUMPDEST
000038ed: SWAP2
000038ee: SWAP1
000038ef: SWAP2
000038f0: ADD
000038f1: SWAP3
000038f2: SWAP2
000038f3: POP
000038f4: POP
000038f5: JUMP
000038f6: JUMPDEST
000038f7: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000
00003918: DUP4
00003919: PUSH1 0xf8
0000391b: SHL
0000391c: AND
0000391d: DUP2
0000391e: MSTORE
0000391f: PUSH1 0x00
00003921: DUP3
00003922: MLOAD
00003923: PUSH2 0x3933
00003926: DUP2
00003927: PUSH1 0x01
00003929: DUP6
0000392a: ADD
0000392b: PUSH1 0x20
0000392d: DUP8
0000392e: ADD
0000392f: PUSH2 0x3390
00003932: JUMP
00003933: JUMPDEST
00003934: SWAP2
00003935: SWAP1
00003936: SWAP2
00003937: ADD
00003938: PUSH1 0x01
0000393a: ADD
0000393b: SWAP4
0000393c: SWAP3
0000393d: POP
0000393e: POP
0000393f: POP
00003940: JUMP
00003941: INVALID
00003942: LOG1
00003943: PUSH5 0x736f6c6343
00003949: STOP
0000394a: ADDMOD
0000394b: UNKNOWN(0x0F)
0000394c: STOP
0000394d: EXP

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x76d7712682a416c50a0c690a8e9f46b389bc985db3a10af5e84caa248c039518
call_targets: 0x77764bdf2b52c4b2635a73927945541b65df74e9
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x76d7712682a416c50a0c690a8e9f46b389bc985db3a10af5e84caa248c039518",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x77764bdf2b52c4b2635a73927945541b65df74e9"
    ],
    "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": "0xc89701a2",
            "selector": "0xc89701a2",
            "calldata_variants": [
                "0xc89701a2",
                "0xc89701a20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe11013dd",
            "selector": "0xe11013dd",
            "calldata_variants": [
                "0xe11013dd",
                "0xe11013dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf851a440",
            "selector": "0xf851a440",
            "calldata_variants": [
                "0xf851a440",
                "0xf851a4400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf8c8765e",
            "selector": "0xf8c8765e",
            "calldata_variants": [
                "0xf8c8765e",
                "0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9a2ac6d5",
            "selector": "0x9a2ac6d5",
            "calldata_variants": [
                "0x9a2ac6d5",
                "0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9f9e675",
            "selector": "0xa9f9e675",
            "calldata_variants": [
                "0xa9f9e675",
                "0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb1a1a882",
            "selector": "0xb1a1a882",
            "calldata_variants": [
                "0xb1a1a882",
                "0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc474889",
            "selector": "0xbc474889",
            "calldata_variants": [
                "0xbc474889",
                "0xbc4748890000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2310,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4597,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4693,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 7,
    "guards_detected": [
        {
            "pc": 4362,
            "type": "msg_sender_eq_const",
            "value": 1.0201278951675005e+48
        },
        {
            "pc": 4340,
            "type": "msg_sender_eq_const",
            "value": "0xb2b01decb6cd36e7396b78d3744482627f22c525"
        }
    ],
    "untrusted_call_count": 7
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x76d7712682a416c50a0c690a8e9f46b389bc985db3a10af5e84caa248c039518
call_targets: 0x77764bdf2b52c4b2635a73927945541b65df74e9
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x76d7712682a416c50a0c690a8e9f46b389bc985db3a10af5e84caa248c039518",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x77764bdf2b52c4b2635a73927945541b65df74e9"
    ],
    "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": "0xc89701a2",
            "selector": "0xc89701a2",
            "calldata_variants": [
                "0xc89701a2",
                "0xc89701a20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe11013dd",
            "selector": "0xe11013dd",
            "calldata_variants": [
                "0xe11013dd",
                "0xe11013dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf851a440",
            "selector": "0xf851a440",
            "calldata_variants": [
                "0xf851a440",
                "0xf851a4400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf8c8765e",
            "selector": "0xf8c8765e",
            "calldata_variants": [
                "0xf8c8765e",
                "0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9a2ac6d5",
            "selector": "0x9a2ac6d5",
            "calldata_variants": [
                "0x9a2ac6d5",
                "0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9f9e675",
            "selector": "0xa9f9e675",
            "calldata_variants": [
                "0xa9f9e675",
                "0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb1a1a882",
            "selector": "0xb1a1a882",
            "calldata_variants": [
                "0xb1a1a882",
                "0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc474889",
            "selector": "0xbc474889",
            "calldata_variants": [
                "0xbc474889",
                "0xbc4748890000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2310,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4597,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4693,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 7,
    "guards_detected": [
        {
            "pc": 4362,
            "type": "msg_sender_eq_const",
            "value": 1.0201278951675005e+48
        },
        {
            "pc": 4340,
            "type": "msg_sender_eq_const",
            "value": "0xb2b01decb6cd36e7396b78d3744482627f22c525"
        }
    ]
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 13
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 13
}