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

Analysis Run

20f8261a-5aab-46d9-81ea-dbd348c1dbea

failed
Chain ID
1
Address
Block Number
Created
Mon, Jan 5, 2026 8:58 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 DELEGATECALL target reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31768 report.consolidate complete 1 / 1 3 months ago
96031 artifact.fetch failed 1 / 3 1 week ago
96032 tool.cast_disasm complete 1 / 3 1 week ago
96033 analysis.bundle complete 1 / 3 1 week ago
96034 capability.graph complete 1 / 3 1 week ago
96035 detector.run complete 1 / 3 1 week ago
96036 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete exploitable profit paths found in the provided contracts.
View stderr
[codex:894262] OpenAI Codex v0.77.0 (research preview)
[codex:894262] --------
[codex:894262] workdir: /tmp/codex-multi-xql16vs6
[codex:894262] model: gpt-5.2-codex
[codex:894262] provider: openai
[codex:894262] approval: never
[codex:894262] sandbox: read-only
[codex:894262] reasoning effort: xhigh
[codex:894262] reasoning summaries: auto
[codex:894262] session id: 019b8ff0-0c79-7043-b502-23f161433f65
[codex:894262] --------
[codex:894262] user
[codex:894262] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:894262] 
[codex:894262] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:894262] 
[codex:894262] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:894262] - Gas inefficiency, code quality, naming, or best practices
[codex:894262] - Theoretical vulnerabilities without a clear extraction path
[codex:894262] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:894262] - Front-running unless it enables theft beyond MEV
[codex:894262] - DoS, griefing, or issues that don't result in attacker profit
[codex:894262] - Missing events, view function issues, or informational findings
[codex:894262] 
[codex:894262] HIGH-VALUE PATTERNS TO HUNT:
[codex:894262] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:894262] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:894262] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:894262] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:894262] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:894262] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:894262] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:894262] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:894262] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:894262] 
[codex:894262] For each finding, you MUST provide:
[codex:894262] 1. Exact file and line numbers of vulnerable code
[codex:894262] 2. Step-by-step exploit transaction sequence
[codex:894262] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:894262] 
[codex:894262] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:894262] 
[codex:894262] Output MUST be valid JSON matching the provided schema.
[codex:894262] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:894262] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:894262] mcp startup: no servers
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Preparing to read instructions**
[codex:894262] exec
[codex:894262] /bin/bash -lc ls in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] AUDIT_BUNDLE.txt
[codex:894262] codex-output-schema.json
[codex:894262] contracts
[codex:894262] exec
[codex:894262] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:894262] 
[codex:894262] ================================================================================
[codex:894262] FILE: contracts/contracts/distribution/ITokenDistributor.sol
[codex:894262] ================================================================================
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../tokens/IERC20.sol";
[codex:894262] 
[codex:894262] import "../party/Party.sol";
[codex:894262] 
[codex:894262] /// @notice Creates token distributions for parties.
[codex:894262] interface ITokenDistributor {
[codex:894262]     enum TokenType {
[codex:894262]         Native,
[codex:894262]         Erc20
[codex:894262]     }
[codex:894262] 
[codex:894262]     // Info on a distribution, created by createDistribution().
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Scanning for vulnerability patterns**
[codex:894262] exec
[codex:894262] /bin/bash -lc "rg -n \"initialize|init\\(|initializer|upgrade|UUPS|proxy\" contracts/contracts" in /tmp/codex-multi-xql16vs6 succeeded in 42ms:
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:79:    // it will be set in `_initialize()`.
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:84:    // Initialize storage for proxy contracts.
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:85:    function _initialize(
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:96:        PartyGovernance._initialize(
[codex:894262] contracts/contracts/party/IPartyFactory.sol:22:    /// @param opts Options used to initialize the party. These are fixed
[codex:894262] contracts/contracts/party/Party.sol:12:    // Arguments used to initialize the party.
[codex:894262] contracts/contracts/party/Party.sol:21:    // Arguments used to initialize the `PartyGovernanceNFT`.
[codex:894262] contracts/contracts/party/Party.sol:38:    /// @param initData Options used to initialize the party governance.
[codex:894262] contracts/contracts/party/Party.sol:39:    function initialize(PartyInitData memory initData) external onlyConstructor {
[codex:894262] contracts/contracts/party/Party.sol:40:        PartyGovernanceNFT._initialize(
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:40:            abi.encodeCall(IProposalExecutionEngine.initialize, (address(oldImpl), initData))
[codex:894262] contracts/contracts/proposals/IProposalExecutionEngine.sol:18:    function initialize(address oldImpl, bytes memory initData) external;
[codex:894262] contracts/contracts/party/PartyGovernance.sol:277:    // Initialize storage for proxy contracts and initialize the proposal execution engine.
[codex:894262] contracts/contracts/party/PartyGovernance.sol:278:    function _initialize(
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Investigating proxy initialization security**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,220p' contracts/contracts/party/Party.sol" in /tmp/codex-multi-xql16vs6 succeeded in 12ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262] 
[codex:894262] import "./PartyGovernanceNFT.sol";
[codex:894262] import "./PartyGovernance.sol";
[codex:894262] 
[codex:894262] /// @notice The governance contract that also custodies the precious NFTs. This
[codex:894262] ///         is also the Governance NFT 721 contract.
[codex:894262] contract Party is PartyGovernanceNFT {
[codex:894262]     // Arguments used to initialize the party.
[codex:894262]     struct PartyOptions {
[codex:894262]         PartyGovernance.GovernanceOpts governance;
[codex:894262]         ProposalStorage.ProposalEngineOpts proposalEngine;
[codex:894262]         string name;
[codex:894262]         string symbol;
[codex:894262]         uint256 customizationPresetId;
[codex:894262]     }
[codex:894262] 
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Checking Proxy initialization guard**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,220p' contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../utils/ReadOnlyDelegateCall.sol";
[codex:894262] import "../utils/LibSafeCast.sol";
[codex:894262] import "../utils/LibAddress.sol";
[codex:894262] import "openzeppelin/contracts/interfaces/IERC2981.sol";
[codex:894262] import "../globals/IGlobals.sol";
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262] import "../vendor/solmate/ERC721.sol";
[codex:894262] import "./PartyGovernance.sol";
[codex:894262] import "../renderers/RendererStorage.sol";
[codex:894262] 
[codex:894262] /// @notice ERC721 functionality built on top of `PartyGovernance`.
[codex:894262] contract PartyGovernanceNFT is PartyGovernance, ERC721, IERC2981 {
[codex:894262]     using LibSafeCast for uint256;
[codex:894262]     using LibSafeCast for uint96;
[codex:894262]     using LibERC20Compat for IERC20;
[codex:894262]     using LibAddress for address payable;
[codex:894262] 
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Identifying critical contract functions**
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg --files contracts/contracts' in /tmp/codex-multi-xql16vs6 succeeded in 36ms:
[codex:894262] contracts/contracts/globals/IGlobals.sol
[codex:894262] contracts/contracts/globals/LibGlobals.sol
[codex:894262] contracts/contracts/party/PartyGovernance.sol
[codex:894262] contracts/contracts/party/Party.sol
[codex:894262] contracts/contracts/party/IPartyFactory.sol
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol
[codex:894262] contracts/contracts/utils/LibAddress.sol
[codex:894262] contracts/contracts/utils/LibERC20Compat.sol
[codex:894262] contracts/contracts/utils/Multicall.sol
[codex:894262] contracts/contracts/utils/LibSafeCast.sol
[codex:894262] contracts/contracts/utils/ReadOnlyDelegateCall.sol
[codex:894262] contracts/contracts/utils/Implementation.sol
[codex:894262] contracts/contracts/utils/LibRawResult.sol
[codex:894262] contracts/contracts/utils/EIP165.sol
[codex:894262] contracts/contracts/distribution/ITokenDistributor.sol
[codex:894262] contracts/contracts/distribution/TokenDistributor.sol
[codex:894262] contracts/contracts/proposals/IProposalExecutionEngine.sol
[codex:894262] contracts/contracts/proposals/LibProposal.sol
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol
[codex:894262] contracts/contracts/renderers/RendererStorage.sol
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Inspecting PartyGovernance contract**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,260p' contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../distribution/ITokenDistributor.sol";
[codex:894262] import "../utils/ReadOnlyDelegateCall.sol";
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262] import "../tokens/IERC20.sol";
[codex:894262] import "../tokens/IERC1155.sol";
[codex:894262] import "../tokens/ERC721Receiver.sol";
[codex:894262] import "../tokens/ERC1155Receiver.sol";
[codex:894262] import "../utils/LibERC20Compat.sol";
[codex:894262] import "../utils/LibRawResult.sol";
[codex:894262] import "../utils/LibSafeCast.sol";
[codex:894262] import "../globals/IGlobals.sol";
[codex:894262] import "../globals/LibGlobals.sol";
[codex:894262] import "../proposals/IProposalExecutionEngine.sol";
[codex:894262] import "../proposals/LibProposal.sol";
[codex:894262] import "../proposals/ProposalStorage.sol";
[codex:894262] 
[codex:894262] import "./Party.sol";
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Searching for token transfers in PartyGovernance**
[codex:894262] exec
[codex:894262] /bin/bash -lc "rg -n \"transfer|call\\{|call\\(\" contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 15ms:
[codex:894262] 450:            // Cannot transfer host status to an existing host.
[codex:894262] 791:            ).delegatecall(abi.encodeCall(IProposalExecutionEngine.cancelProposal, (proposalId)));
[codex:894262] 809:        (bool success, bytes memory res) = targetAddress.call{ value: amountEth }(targetCallData);
[codex:894262] 849:            ).delegatecall(
[codex:894262] 897:    function _transferVotingPower(address from, address to, uint256 power) internal {
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Inspecting emergencyExecute and ragequit functions**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '260,560p' contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262]             revert OnlyWhenEmergencyActionsAllowedError();
[codex:894262]         }
[codex:894262]         _;
[codex:894262]     }
[codex:894262] 
[codex:894262]     modifier onlyWhenNotGloballyDisabled() {
[codex:894262]         if (_GLOBALS.getBool(LibGlobals.GLOBAL_DISABLE_PARTY_ACTIONS)) {
[codex:894262]             revert OnlyWhenEnabledError();
[codex:894262]         }
[codex:894262]         _;
[codex:894262]     }
[codex:894262] 
[codex:894262]     // Set the `Globals` contract.
[codex:894262]     constructor(IGlobals globals) {
[codex:894262]         _GLOBALS = globals;
[codex:894262]     }
[codex:894262] 
[codex:894262]     // Initialize storage for proxy contracts and initialize the proposal execution engine.
[codex:894262]     function _initialize(
[codex:894262]         GovernanceOpts memory govOpts,
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Exploring key functions**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '560,940p' contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262]         accept(proposalId, latestSnapIndex);
[codex:894262]     }
[codex:894262] 
[codex:894262]     /// @notice Vote to support a proposed proposal.
[codex:894262]     /// @dev The voting power cast will be the effective voting power of the caller
[codex:894262]     ///      just before `propose()` was called (see `getVotingPowerAt()`).
[codex:894262]     ///      If the proposal reaches `passThresholdBps` acceptance ratio then the
[codex:894262]     ///      proposal will be in the `Passed` state and will be executable after
[codex:894262]     ///      the `executionDelay` has passed, putting it in the `Ready` state.
[codex:894262]     /// @param proposalId The ID of the proposal to accept.
[codex:894262]     /// @param snapIndex The index of the caller's last voting power snapshot
[codex:894262]     ///                  before the proposal was created. Should be retrieved
[codex:894262]     ///                  off-chain and passed in.
[codex:894262]     /// @return totalVotes The total votes cast on the proposal.
[codex:894262]     function accept(uint256 proposalId, uint256 snapIndex) public returns (uint256 totalVotes) {
[codex:894262]         // Get the information about the proposal.
[codex:894262]         ProposalState storage info = _proposalStateByProposalId[proposalId];
[codex:894262]         ProposalStateValues memory values = info.values;
[codex:894262] 
[codex:894262]         // Can only vote in certain proposal statuses.
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Searching for rageQuit and withdraw references**
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg -n "rageQuit|withdraw|claim|transfer" contracts/contracts/party/PartyGovernanceNFT.sol' in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] 24:    error FixedRageQuitTimestampError(uint40 rageQuitTimestamp);
[codex:894262] 25:    error CannotRageQuitError(uint40 rageQuitTimestamp);
[codex:894262] 35:    event RageQuit(address caller, uint256[] tokenIds, IERC20[] withdrawTokens, address receiver);
[codex:894262] 58:    uint40 public rageQuitTimestamp;
[codex:894262] 94:        uint40 rageQuitTimestamp_
[codex:894262] 104:        rageQuitTimestamp = rageQuitTimestamp_;
[codex:894262] 308:        uint40 oldRageQuitTimestamp = rageQuitTimestamp;
[codex:894262] 318:        emit RageQuitSet(oldRageQuitTimestamp, rageQuitTimestamp = newRageQuitTimestamp);
[codex:894262] 321:    /// @notice Burn a governance NFT and withdraw a fair share of fungible tokens from the party.
[codex:894262] 323:    /// @param withdrawTokens The fungible tokens to withdraw. Specify the
[codex:894262] 324:    ///                       `ETH_ADDRESS` value to withdraw ETH.
[codex:894262] 325:    /// @param minWithdrawAmounts The minimum amount of to withdraw for each token.
[codex:894262] 326:    /// @param receiver The address to receive the withdrawn tokens.
[codex:894262] 327:    function rageQuit(
[codex:894262] 329:        IERC20[] calldata withdrawTokens,
[codex:894262] 336:        uint40 currentRageQuitTimestamp = rageQuitTimestamp;
[codex:894262] 347:        rageQuitTimestamp = DISABLE_RAGEQUIT_PERMANENTLY;
[codex:894262] 352:        // Sum up total amount of each token to withdraw.
[codex:894262] 353:        uint256[] memory withdrawAmounts = new uint256[](withdrawTokens.length);
[codex:894262] 356:            for (uint256 i; i < withdrawTokens.length; ++i) {
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Reviewing rageQuit for reentrancy**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '280,460p' contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 12ms:
[codex:894262] 
[codex:894262]             // Burn token.
[codex:894262]             _burn(tokenId);
[codex:894262] 
[codex:894262]             emit Burn(msg.sender, tokenId, votingPower);
[codex:894262]         }
[codex:894262] 
[codex:894262]         // Update minted voting power.
[codex:894262]         mintedVotingPower -= totalVotingPowerBurned;
[codex:894262]     }
[codex:894262] 
[codex:894262]     /// @notice Burn governance NFT and remove its voting power. Can only be
[codex:894262]     ///         called by an authority before the party has started.
[codex:894262]     /// @param tokenId The ID of the governance NFTs to burn.
[codex:894262]     function burn(uint256 tokenId) external {
[codex:894262]         uint256[] memory tokenIds = new uint256[](1);
[codex:894262]         tokenIds[0] = tokenId;
[codex:894262]         burn(tokenIds);
[codex:894262]     }
[codex:894262] 
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing potential reentrancy risks**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/utils/LibAddress.sol" in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] library LibAddress {
[codex:894262]     error EthTransferFailed(address receiver, bytes errData);
[codex:894262] 
[codex:894262]     // Transfer ETH with full gas stipend.
[codex:894262]     function transferEth(address payable receiver, uint256 amount) internal {
[codex:894262]         if (amount == 0) return;
[codex:894262] 
[codex:894262]         (bool s, bytes memory r) = receiver.call{ value: amount }("");
[codex:894262]         if (!s) {
[codex:894262]             revert EthTransferFailed(receiver, r);
[codex:894262]         }
[codex:894262]     }
[codex:894262] }
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing potential reentrancy vulnerabilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,220p' contracts/contracts/utils/LibERC20Compat.sol" in /tmp/codex-multi-xql16vs6 succeeded in 16ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../tokens/IERC20.sol";
[codex:894262] 
[codex:894262] // Compatibility helpers for ERC20s.
[codex:894262] library LibERC20Compat {
[codex:894262]     error NotATokenError(IERC20 token);
[codex:894262]     error TokenTransferFailedError(IERC20 token, address to, uint256 amount);
[codex:894262] 
[codex:894262]     // Perform an `IERC20.transfer()` handling non-compliant implementations.
[codex:894262]     function compatTransfer(IERC20 token, address to, uint256 amount) internal {
[codex:894262]         (bool s, bytes memory r) = address(token).call(
[codex:894262]             abi.encodeCall(IERC20.transfer, (to, amount))
[codex:894262]         );
[codex:894262]         if (s) {
[codex:894262]             if (r.length == 0) {
[codex:894262]                 uint256 cs;
[codex:894262]                 assembly {
[codex:894262]                     cs := extcodesize(token)
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing token transfer reliability**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/utils/Implementation.sol" in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] // Base contract for all contracts intended to be delegatecalled into.
[codex:894262] abstract contract Implementation {
[codex:894262]     error OnlyDelegateCallError();
[codex:894262]     error OnlyConstructorError();
[codex:894262] 
[codex:894262]     address public immutable IMPL;
[codex:894262] 
[codex:894262]     constructor() {
[codex:894262]         IMPL = address(this);
[codex:894262]     }
[codex:894262] 
[codex:894262]     // Reverts if the current function context is not inside of a delegatecall.
[codex:894262]     modifier onlyDelegateCall() virtual {
[codex:894262]         if (address(this) == IMPL) {
[codex:894262]             revert OnlyDelegateCallError();
[codex:894262]         }
[codex:894262]         _;
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Inspecting ProposalStorage for patterns**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,240p' contracts/contracts/proposals/ProposalStorage.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "./IProposalExecutionEngine.sol";
[codex:894262] import "../utils/LibRawResult.sol";
[codex:894262] 
[codex:894262] // The storage bucket shared by `PartyGovernance` and the `ProposalExecutionEngine`.
[codex:894262] // Read this for more context on the pattern motivating this:
[codex:894262] // https://github.com/dragonfly-xyz/useful-solidity-patterns/tree/main/patterns/explicit-storage-buckets
[codex:894262] abstract contract ProposalStorage {
[codex:894262]     using LibRawResult for bytes;
[codex:894262] 
[codex:894262]     struct SharedProposalStorage {
[codex:894262]         IProposalExecutionEngine engineImpl;
[codex:894262]         ProposalEngineOpts opts;
[codex:894262]     }
[codex:894262] 
[codex:894262]     struct ProposalEngineOpts {
[codex:894262]         // Whether the party can add new authorities with the add authority proposal.
[codex:894262]         bool enableAddAuthorityProposal;
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Checking IProposalExecutionEngine interface**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/proposals/IProposalExecutionEngine.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262] 
[codex:894262] // Upgradeable proposals logic contract interface.
[codex:894262] interface IProposalExecutionEngine {
[codex:894262]     struct ExecuteProposalParams {
[codex:894262]         uint256 proposalId;
[codex:894262]         bytes proposalData;
[codex:894262]         bytes progressData;
[codex:894262]         bytes extraData;
[codex:894262]         uint256 flags;
[codex:894262]         IERC721[] preciousTokens;
[codex:894262]         uint256[] preciousTokenIds;
[codex:894262]     }
[codex:894262] 
[codex:894262]     function initialize(address oldImpl, bytes memory initData) external;
[codex:894262] 
[codex:894262]     /// @notice Execute a proposal.
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Examining proposal execution engine**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,260p' contracts/contracts/proposals/LibProposal.sol" in /tmp/codex-multi-xql16vs6 succeeded in 12ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262] 
[codex:894262] library LibProposal {
[codex:894262]     uint256 internal constant PROPOSAL_FLAG_UNANIMOUS = 0x1;
[codex:894262] 
[codex:894262]     function isTokenPrecious(
[codex:894262]         IERC721 token,
[codex:894262]         IERC721[] memory preciousTokens
[codex:894262]     ) internal pure returns (bool) {
[codex:894262]         for (uint256 i; i < preciousTokens.length; ++i) {
[codex:894262]             if (token == preciousTokens[i]) {
[codex:894262]                 return true;
[codex:894262]             }
[codex:894262]         }
[codex:894262]         return false;
[codex:894262]     }
[codex:894262] 
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Evaluating potential token vulnerabilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/party/IPartyFactory.sol" in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../globals/IGlobals.sol";
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262] 
[codex:894262] import "./Party.sol";
[codex:894262] 
[codex:894262] // Creates generic Party instances.
[codex:894262] interface IPartyFactory {
[codex:894262]     event PartyCreated(
[codex:894262]         Party indexed party,
[codex:894262]         Party.PartyOptions opts,
[codex:894262]         IERC721[] preciousTokens,
[codex:894262]         uint256[] preciousTokenIds,
[codex:894262]         address creator
[codex:894262]     );
[codex:894262] 
[codex:894262]     /// @notice Deploy a new party instance.
[codex:894262]     /// @param partyImpl The implementation of the party to deploy.
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing potential reentrancy and token distribution risks**
[codex:894262] 
[codex:894262] I'm exploring whether reentrancy can happen during balanceOf calls on tokens in TokenDistributor, checking if malicious tokens might exploit supply calculations or stored balance updates. I'm also considering deflationary token behavior in transfers and reviewing contract functions related to token or ETH withdrawals, while planning to look for ProposalExecutionEngine implementations that might impact execution control.
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg -n "ExecutionEngine|ProposalExecution" contracts/contracts' in /tmp/codex-multi-xql16vs6 succeeded in 42ms:
[codex:894262] contracts/contracts/party/PartyGovernance.sol:16:import "../proposals/IProposalExecutionEngine.sol";
[codex:894262] contracts/contracts/party/PartyGovernance.sol:121:        // ProposalExecutionEngine for details.
[codex:894262] contracts/contracts/party/PartyGovernance.sol:293:            IProposalExecutionEngine(_GLOBALS.getAddress(LibGlobals.GLOBAL_PROPOSAL_ENGINE_IMPL)),
[codex:894262] contracts/contracts/party/PartyGovernance.sol:330:    /// @notice Get the current `ProposalExecutionEngine` instance.
[codex:894262] contracts/contracts/party/PartyGovernance.sol:331:    function getProposalExecutionEngine() external view returns (IProposalExecutionEngine) {
[codex:894262] contracts/contracts/party/PartyGovernance.sol:665:    ///      The `ProposalExecutionEngine` enforces that only one `InProgress` proposal
[codex:894262] contracts/contracts/party/PartyGovernance.sol:791:            ).delegatecall(abi.encodeCall(IProposalExecutionEngine.cancelProposal, (proposalId)));
[codex:894262] contracts/contracts/party/PartyGovernance.sol:833:        IProposalExecutionEngine.ExecuteProposalParams
[codex:894262] contracts/contracts/party/PartyGovernance.sol:834:            memory executeParams = IProposalExecutionEngine.ExecuteProposalParams({
[codex:894262] contracts/contracts/party/PartyGovernance.sol:850:                    abi.encodeCall(IProposalExecutionEngine.executeProposal, (executeParams))
[codex:894262] contracts/contracts/proposals/IProposalExecutionEngine.sol:7:interface IProposalExecutionEngine {
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:4:import "./IProposalExecutionEngine.sol";
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:7:// The storage bucket shared by `PartyGovernance` and the `ProposalExecutionEngine`.
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:14:        IProposalExecutionEngine engineImpl;
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:35:    function _initProposalImpl(IProposalExecutionEngine impl, bytes memory initData) internal {
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:37:        IProposalExecutionEngine oldImpl = stor.engineImpl;
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:40:            abi.encodeCall(IProposalExecutionEngine.initialize, (address(oldImpl), initData))
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Investigating potential vulnerability sources**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,220p' contracts/contracts/renderers/RendererStorage.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "solmate/utils/SSTORE2.sol";
[codex:894262] import "../utils/Multicall.sol";
[codex:894262] 
[codex:894262] contract RendererStorage is Multicall {
[codex:894262]     error AlreadySetError();
[codex:894262]     error NotOwnerError(address caller, address owner);
[codex:894262] 
[codex:894262]     event OwnershipTransferred(address previousOwner, address newOwner);
[codex:894262] 
[codex:894262]     uint256 constant CROWDFUND_CARD_DATA = 0;
[codex:894262]     uint256 constant PARTY_CARD_DATA = 1;
[codex:894262] 
[codex:894262]     /// @notice Address allowed to store new data.
[codex:894262]     address public owner;
[codex:894262] 
[codex:894262]     /// @notice Customization presets by ID, used for rendering cards. Begins at
[codex:894262]     ///         1, 0 is reserved to indicate in `getPresetFor()` that a
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing delegatecall vulnerabilities and access control**
[codex:894262] exec
[codex:894262] /bin/bash -lc "rg -n \"transferEth|compatTransfer|call\\{ value\" contracts/contracts" in /tmp/codex-multi-xql16vs6 succeeded in 40ms:
[codex:894262] contracts/contracts/party/PartyGovernance.sol:520:        IERC20(token).compatTransfer(address(distributor), amount);
[codex:894262] contracts/contracts/party/PartyGovernance.sol:809:        (bool success, bytes memory res) = targetAddress.call{ value: amountEth }(targetCallData);
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:402:                        payable(feeRecipient).transferEth(fee);
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:404:                        token.compatTransfer(feeRecipient, fee);
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:418:                        payable(receiver).transferEth(amount);
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:420:                        token.compatTransfer(receiver, amount);
[codex:894262] contracts/contracts/distribution/TokenDistributor.sol:364:            recipient.transferEth(amount);
[codex:894262] contracts/contracts/distribution/TokenDistributor.sol:367:            IERC20(token).compatTransfer(recipient, amount);
[codex:894262] contracts/contracts/utils/LibAddress.sol:8:    function transferEth(address payable receiver, uint256 amount) internal {
[codex:894262] contracts/contracts/utils/LibAddress.sol:11:        (bool s, bytes memory r) = receiver.call{ value: amount }("");
[codex:894262] contracts/contracts/utils/LibERC20Compat.sol:12:    function compatTransfer(IERC20 token, address to, uint256 amount) internal {
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing potential distribution vulnerabilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg -n "function _transfer" -n contracts/contracts/distribution/TokenDistributor.sol' in /tmp/codex-multi-xql16vs6 succeeded in 12ms:
[codex:894262] 344:    function _transfer(
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '320,420p' contracts/contracts/distribution/TokenDistributor.sol" in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262]             _storedBalances[balanceId] = args.currentTokenBalance;
[codex:894262]         }
[codex:894262] 
[codex:894262]         // Create a distribution.
[codex:894262]         uint128 fee = (supply * args.feeBps) / 1e4;
[codex:894262]         uint128 memberSupply = supply - fee;
[codex:894262] 
[codex:894262]         info = DistributionInfo({
[codex:894262]             tokenType: args.tokenType,
[codex:894262]             distributionId: ++lastDistributionIdPerParty[args.party],
[codex:894262]             token: args.token,
[codex:894262]             party: args.party,
[codex:894262]             memberSupply: memberSupply,
[codex:894262]             feeRecipient: args.feeRecipient,
[codex:894262]             fee: fee,
[codex:894262]             totalShares: args.party.getGovernanceValues().totalVotingPower
[codex:894262]         });
[codex:894262]         (
[codex:894262]             _distributionStates[args.party][info.distributionId].distributionHash,
[codex:894262]             _distributionStates[args.party][info.distributionId].remainingMemberSupply
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing potential reentrancy and tokenId ownership issues**
[codex:894262] exec
[codex:894262] /bin/bash -lc "rg -n \"_burnAndUpdateVotingPower|burn\\(\" -n contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] 244:    function burn(uint256[] memory tokenIds) public onlyAuthority {
[codex:894262] 250:        _burnAndUpdateVotingPower(tokenIds, false);
[codex:894262] 253:    function _burnAndUpdateVotingPower(
[codex:894262] 282:            _burn(tokenId);
[codex:894262] 294:    function burn(uint256 tokenId) external {
[codex:894262] 297:        burn(tokenIds);
[codex:894262] 383:            uint96 totalVotingPowerBurned = _burnAndUpdateVotingPower(tokenIds, true);
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '220,320p' contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262]         // initial crowdfund when there is no total voting power.
[codex:894262]         if (totalVotingPower != 0 && totalVotingPower - mintedVotingPower_ < votingPower_) {
[codex:894262]             unchecked {
[codex:894262]                 votingPower_ = totalVotingPower - mintedVotingPower_;
[codex:894262]             }
[codex:894262]         }
[codex:894262] 
[codex:894262]         // Update state.
[codex:894262]         mintedVotingPower += votingPower_;
[codex:894262]         votingPowerByTokenId[tokenId] += votingPower_;
[codex:894262] 
[codex:894262]         _adjustVotingPower(ownerOf(tokenId), votingPower_.safeCastUint96ToInt192(), address(0));
[codex:894262]     }
[codex:894262] 
[codex:894262]     /// @notice Update the total voting power of the party. Only callable by
[codex:894262]     ///         an authority.
[codex:894262]     /// @param newVotingPower The new total voting power to add.
[codex:894262]     function increaseTotalVotingPower(uint96 newVotingPower) external onlyAuthority {
[codex:894262]         _governanceValues.totalVotingPower += newVotingPower;
[codex:894262]     }
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Evaluating reentrancy and delegatecall risks**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '460,740p' contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262]     ///      authorities to prevent it from being used anywhere else.
[codex:894262]     function addAuthority(address authority) external onlySelf {
[codex:894262]         isAuthority[authority] = true;
[codex:894262] 
[codex:894262]         emit AuthorityAdded(authority);
[codex:894262]     }
[codex:894262] 
[codex:894262]     /// @notice Relinquish the authority role.
[codex:894262]     function abdicateAuthority() external onlyAuthority {
[codex:894262]         delete isAuthority[msg.sender];
[codex:894262] 
[codex:894262]         emit AuthorityRemoved(msg.sender);
[codex:894262]     }
[codex:894262] 
[codex:894262]     function _delegateToRenderer() private view {
[codex:894262]         _readOnlyDelegateCall(
[codex:894262]             // Instance of IERC721Renderer.
[codex:894262]             _GLOBALS.getAddress(LibGlobals.GLOBAL_GOVERNANCE_NFT_RENDER_IMPL),
[codex:894262]             msg.data
[codex:894262]         );
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing token distribution and claim mechanics**
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg -n "_getProposalStatus|_validateProposalHash|_getProposalFlags" contracts/contracts/party/PartyGovernance.sol' in /tmp/codex-multi-xql16vs6 succeeded in 13ms:
[codex:894262] 374:        status = _getProposalStatus(values);
[codex:894262] 581:            ProposalStatus status = _getProposalStatus(values);
[codex:894262] 644:            ProposalStatus status = _getProposalStatus(values);
[codex:894262] 686:        _validateProposalHash(proposal, proposalState.hash);
[codex:894262] 688:        ProposalStatus status = _getProposalStatus(values);
[codex:894262] 719:            _getProposalFlags(values),
[codex:894262] 742:        _validateProposalHash(proposal, proposalState.hash);
[codex:894262] 746:            ProposalStatus status = _getProposalStatus(values);
[codex:894262] 1001:    function _getProposalFlags(ProposalStateValues memory pv) private pure returns (uint256) {
[codex:894262] 1008:    function _getProposalStatus(
[codex:894262] 1099:    function _validateProposalHash(Proposal memory proposal, bytes32 expectedHash) private pure {
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '960,1145p' contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262]             if (newDelegate == oldDelegate) {
[codex:894262]                 // If the old and new delegate are the same, subtract the old
[codex:894262]                 // intrinsic voting power of the voter, or else we will double
[codex:894262]                 // count a portion of it.
[codex:894262]                 newDelegateDelegatedVotingPower -= oldSnap.intrinsicVotingPower;
[codex:894262]             }
[codex:894262]             VotingPowerSnapshot memory updatedNewDelegateSnap = VotingPowerSnapshot({
[codex:894262]                 timestamp: uint40(block.timestamp),
[codex:894262]                 delegatedVotingPower: newDelegateDelegatedVotingPower,
[codex:894262]                 intrinsicVotingPower: newDelegateSnap.intrinsicVotingPower,
[codex:894262]                 isDelegated: newDelegateSnap.isDelegated
[codex:894262]             });
[codex:894262]             _insertVotingPowerSnapshot(newDelegate, updatedNewDelegateSnap);
[codex:894262]         }
[codex:894262]     }
[codex:894262] 
[codex:894262]     // Append a new voting power snapshot, overwriting the last one if possible.
[codex:894262]     function _insertVotingPowerSnapshot(address voter, VotingPowerSnapshot memory snap) private {
[codex:894262]         VotingPowerSnapshot[] storage voterSnaps = _votingPowerSnapshotsByVoter[voter];
[codex:894262]         uint256 n = voterSnaps.length;
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing potential exploit paths and rounding issues**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,160p' contracts/contracts/tokens/ERC721Receiver.sol" in /tmp/codex-multi-xql16vs6 succeeded in 6ms:
[codex:894262] // SPDX-License-Identifier: Apache-2.0
[codex:894262] pragma solidity ^0.8;
[codex:894262] 
[codex:894262] import "./IERC721Receiver.sol";
[codex:894262] import "../utils/EIP165.sol";
[codex:894262] import "../vendor/solmate/ERC721.sol";
[codex:894262] 
[codex:894262] /// @notice Mixin for contracts that want to receive ERC721 tokens.
[codex:894262] /// @dev Use this instead of solmate's ERC721TokenReceiver because the
[codex:894262] ///      compiler has issues when overriding EIP165/IERC721Receiver functions.
[codex:894262] abstract contract ERC721Receiver is IERC721Receiver, EIP165, ERC721TokenReceiver {
[codex:894262]     /// @inheritdoc IERC721Receiver
[codex:894262]     function onERC721Received(
[codex:894262]         address,
[codex:894262]         address,
[codex:894262]         uint256,
[codex:894262]         bytes memory
[codex:894262]     ) public virtual override(IERC721Receiver, ERC721TokenReceiver) returns (bytes4) {
[codex:894262]         return IERC721Receiver.onERC721Received.selector;
[codex:894262]     }
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Analyzing reentrancy and token vulnerabilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/globals/IGlobals.sol" in /tmp/codex-multi-xql16vs6 succeeded in 7ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] import "../utils/Implementation.sol";
[codex:894262] 
[codex:894262] // Single registry of global values controlled by multisig.
[codex:894262] // See `LibGlobals` for all valid keys.
[codex:894262] interface IGlobals {
[codex:894262]     function multiSig() external view returns (address);
[codex:894262] 
[codex:894262]     function getBytes32(uint256 key) external view returns (bytes32);
[codex:894262] 
[codex:894262]     function getUint256(uint256 key) external view returns (uint256);
[codex:894262] 
[codex:894262]     function getBool(uint256 key) external view returns (bool);
[codex:894262] 
[codex:894262]     function getAddress(uint256 key) external view returns (address);
[codex:894262] 
[codex:894262]     function getImplementation(uint256 key) external view returns (Implementation);
[codex:894262] 
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Evaluating profit extraction possibilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/utils/LibRawResult.sol" in /tmp/codex-multi-xql16vs6 succeeded in 7ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262] 
[codex:894262] library LibRawResult {
[codex:894262]     // Revert with the data in `b`.
[codex:894262]     function rawRevert(bytes memory b) internal pure {
[codex:894262]         assembly {
[codex:894262]             revert(add(b, 32), mload(b))
[codex:894262]         }
[codex:894262]     }
[codex:894262] 
[codex:894262]     // Return with the data in `b`.
[codex:894262]     function rawReturn(bytes memory b) internal pure {
[codex:894262]         assembly {
[codex:894262]             return(add(b, 32), mload(b))
[codex:894262]         }
[codex:894262]     }
[codex:894262] }
[codex:894262] 
[codex:894262] thinking
[codex:894262] **Confirming security analysis and outputting results**
[codex:894262] codex
[codex:894262] {"no_findings":true,"summary":"No concrete exploitable profit paths found in the provided contracts.","findings":[]}
[codex:894262] tokens used
[codex:894262] 98,349
[codex:894262] {"no_findings":true,"summary":"No concrete exploitable profit paths found in the provided contracts.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-05T20:58:21.329474+00:00",
        "returncode": 0
    },
    "summary": "No concrete exploitable profit paths found in the provided contracts.",
    "raw_final": {
        "summary": "No concrete exploitable profit paths found in the provided contracts.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
10
EXT*/BALANCE
1
Total opcodes
4442
Flags
delegatecall_present
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: ISZERO
0000000a: PUSH2 0x0012
0000000d: JUMPI
0000000e: PUSH1 0x00
00000010: DUP1
00000011: REVERT
00000012: JUMPDEST
00000013: PUSH1 0x00
00000015: CALLDATALOAD
00000016: PUSH1 0xe0
00000018: SHR
00000019: DUP1
0000001a: PUSH4 0x074ae6f1
0000001f: EQ
00000020: PUSH2 0x00f7
00000023: JUMPI
00000024: DUP1
00000025: PUSH4 0x146a7b1a
0000002a: EQ
0000002b: PUSH2 0x00f2
0000002e: JUMPI
0000002f: DUP1
00000030: PUSH4 0x3a32e54e
00000035: EQ
00000036: PUSH2 0x00ed
00000039: JUMPI
0000003a: DUP1
0000003b: PUSH4 0x476f5125
00000040: EQ
00000041: PUSH2 0x00e8
00000044: JUMPI
00000045: DUP1
00000046: PUSH4 0x6984c669
0000004b: EQ
0000004c: PUSH2 0x00e3
0000004f: JUMPI
00000050: DUP1
00000051: PUSH4 0x69a467a4
00000056: EQ
00000057: PUSH2 0x00de
0000005a: JUMPI
0000005b: DUP1
0000005c: PUSH4 0x6e62c47d
00000061: EQ
00000062: PUSH2 0x00d9
00000065: JUMPI
00000066: DUP1
00000067: PUSH4 0xa0321a53
0000006c: EQ
0000006d: PUSH2 0x00d4
00000070: JUMPI
00000071: DUP1
00000072: PUSH4 0xb87db28b
00000077: EQ
00000078: PUSH2 0x00cf
0000007b: JUMPI
0000007c: DUP1
0000007d: PUSH4 0xbd717111
00000082: EQ
00000083: PUSH2 0x00ca
00000086: JUMPI
00000087: DUP1
00000088: PUSH4 0xc827a781
0000008d: EQ
0000008e: PUSH2 0x00c5
00000091: JUMPI
00000092: DUP1
00000093: PUSH4 0xe0af030c
00000098: EQ
00000099: PUSH2 0x00c0
0000009c: JUMPI
0000009d: DUP1
0000009e: PUSH4 0xe3a7ef55
000000a3: EQ
000000a4: PUSH2 0x00bb
000000a7: JUMPI
000000a8: PUSH4 0xeedaf00d
000000ad: EQ
000000ae: PUSH2 0x00b6
000000b1: JUMPI
000000b2: PUSH1 0x00
000000b4: DUP1
000000b5: REVERT
000000b6: JUMPDEST
000000b7: PUSH2 0x07cd
000000ba: JUMP
000000bb: JUMPDEST
000000bc: PUSH2 0x0775
000000bf: JUMP
000000c0: JUMPDEST
000000c1: PUSH2 0x071e
000000c4: JUMP
000000c5: JUMPDEST
000000c6: PUSH2 0x06d1
000000c9: JUMP
000000ca: JUMPDEST
000000cb: PUSH2 0x0694
000000ce: JUMP
000000cf: JUMPDEST
000000d0: PUSH2 0x066a
000000d3: JUMP
000000d4: JUMPDEST
000000d5: PUSH2 0x0546
000000d8: JUMP
000000d9: JUMPDEST
000000da: PUSH2 0x050b
000000dd: JUMP
000000de: JUMPDEST
000000df: PUSH2 0x0463
000000e2: JUMP
000000e3: JUMPDEST
000000e4: PUSH2 0x0345
000000e7: JUMP
000000e8: JUMPDEST
000000e9: PUSH2 0x0300
000000ec: JUMP
000000ed: JUMPDEST
000000ee: PUSH2 0x025a
000000f1: JUMP
000000f2: JUMPDEST
000000f3: PUSH2 0x016e
000000f6: JUMP
000000f7: JUMPDEST
000000f8: CALLVALUE
000000f9: PUSH2 0x0139
000000fc: JUMPI
000000fd: PUSH1 0x00
000000ff: CALLDATASIZE
00000100: PUSH1 0x03
00000102: NOT
00000103: ADD
00000104: SLT
00000105: PUSH2 0x0139
00000108: JUMPI
00000109: PUSH1 0x20
0000010b: PUSH1 0x40
0000010d: MLOAD
0000010e: PUSH5 0xffffffffff
00000114: PUSH32 0x00000000000000000000000000000000000000000000000000000000666b190b
00000135: AND
00000136: DUP2
00000137: MSTORE
00000138: RETURN
00000139: JUMPDEST
0000013a: PUSH1 0x00
0000013c: DUP1
0000013d: REVERT
0000013e: JUMPDEST
0000013f: PUSH2 0x0100
00000142: SWAP1
00000143: PUSH1 0x03
00000145: NOT
00000146: ADD
00000147: SLT
00000148: PUSH2 0x0139
0000014b: JUMPI
0000014c: PUSH1 0x04
0000014e: SWAP1
0000014f: JUMP
00000150: JUMPDEST
00000151: PUSH1 0x01
00000153: PUSH1 0x01
00000155: PUSH1 0xa0
00000157: SHL
00000158: SUB
00000159: DUP2
0000015a: AND
0000015b: SUB
0000015c: PUSH2 0x0139
0000015f: JUMPI
00000160: JUMP
00000161: JUMPDEST
00000162: CALLDATALOAD
00000163: SWAP1
00000164: PUSH2 0x016c
00000167: DUP3
00000168: PUSH2 0x0150
0000016b: JUMP
0000016c: JUMPDEST
0000016d: JUMP
0000016e: JUMPDEST
0000016f: CALLVALUE
00000170: PUSH2 0x0139
00000173: JUMPI
00000174: PUSH2 0x0120
00000177: CALLDATASIZE
00000178: PUSH1 0x03
0000017a: NOT
0000017b: ADD
0000017c: SLT
0000017d: PUSH2 0x0139
00000180: JUMPI
00000181: PUSH2 0x019f
00000184: PUSH2 0x018c
00000187: CALLDATASIZE
00000188: PUSH2 0x013e
0000018b: JUMP
0000018c: JUMPDEST
0000018d: PUSH2 0x0104
00000190: CALLDATALOAD
00000191: SWAP1
00000192: PUSH2 0x019a
00000195: DUP3
00000196: PUSH2 0x0150
00000199: JUMP
0000019a: JUMPDEST
0000019b: PUSH2 0x0ee3
0000019e: JUMP
0000019f: JUMPDEST
000001a0: STOP
000001a1: JUMPDEST
000001a2: PUSH2 0xffff
000001a5: DUP2
000001a6: AND
000001a7: SUB
000001a8: PUSH2 0x0139
000001ab: JUMPI
000001ac: JUMP
000001ad: JUMPDEST
000001ae: PUSH1 0x02
000001b0: GT
000001b1: ISZERO
000001b2: PUSH2 0x01b7
000001b5: JUMPI
000001b6: JUMP
000001b7: JUMPDEST
000001b8: PUSH4 0x4e487b71
000001bd: PUSH1 0xe0
000001bf: SHL
000001c0: PUSH1 0x00
000001c2: MSTORE
000001c3: PUSH1 0x21
000001c5: PUSH1 0x04
000001c7: MSTORE
000001c8: PUSH1 0x24
000001ca: PUSH1 0x00
000001cc: REVERT
000001cd: JUMPDEST
000001ce: SWAP1
000001cf: PUSH1 0x02
000001d1: DUP3
000001d2: LT
000001d3: ISZERO
000001d4: PUSH2 0x01b7
000001d7: JUMPI
000001d8: MSTORE
000001d9: JUMP
000001da: JUMPDEST
000001db: PUSH2 0x016c
000001de: SWAP1
000001df: SWAP3
000001e0: SWAP2
000001e1: SWAP3
000001e2: PUSH1 0xe0
000001e4: DUP1
000001e5: PUSH2 0x0100
000001e8: DUP4
000001e9: ADD
000001ea: SWAP6
000001eb: PUSH2 0x01f5
000001ee: DUP5
000001ef: DUP3
000001f0: MLOAD
000001f1: PUSH2 0x01cd
000001f4: JUMP
000001f5: JUMPDEST
000001f6: PUSH1 0x20
000001f8: DUP2
000001f9: ADD
000001fa: MLOAD
000001fb: PUSH1 0x20
000001fd: DUP6
000001fe: ADD
000001ff: MSTORE
00000200: PUSH1 0x01
00000202: DUP1
00000203: PUSH1 0xa0
00000205: SHL
00000206: SUB
00000207: DUP1
00000208: PUSH1 0x40
0000020a: DUP4
0000020b: ADD
0000020c: MLOAD
0000020d: AND
0000020e: PUSH1 0x40
00000210: DUP7
00000211: ADD
00000212: MSTORE
00000213: DUP1
00000214: PUSH1 0x60
00000216: DUP4
00000217: ADD
00000218: MLOAD
00000219: AND
0000021a: PUSH1 0x60
0000021c: DUP7
0000021d: ADD
0000021e: MSTORE
0000021f: PUSH1 0x80
00000221: DUP3
00000222: ADD
00000223: MLOAD
00000224: AND
00000225: PUSH1 0x80
00000227: DUP6
00000228: ADD
00000229: MSTORE
0000022a: PUSH1 0x01
0000022c: PUSH1 0x01
0000022e: PUSH1 0x80
00000230: SHL
00000231: SUB
00000232: DUP1
00000233: PUSH1 0xa0
00000235: DUP4
00000236: ADD
00000237: MLOAD
00000238: AND
00000239: PUSH1 0xa0
0000023b: DUP7
0000023c: ADD
0000023d: MSTORE
0000023e: PUSH1 0xc0
00000240: DUP3
00000241: ADD
00000242: MLOAD
00000243: AND
00000244: PUSH1 0xc0
00000246: DUP6
00000247: ADD
00000248: MSTORE
00000249: ADD
0000024a: MLOAD
0000024b: SWAP2
0000024c: ADD
0000024d: SWAP1
0000024e: PUSH1 0x01
00000250: PUSH1 0x01
00000252: PUSH1 0x60
00000254: SHL
00000255: SUB
00000256: AND
00000257: SWAP1
00000258: MSTORE
00000259: JUMP
0000025a: JUMPDEST
0000025b: PUSH1 0x60
0000025d: CALLDATASIZE
0000025e: PUSH1 0x03
00000260: NOT
00000261: ADD
00000262: SLT
00000263: PUSH2 0x0139
00000266: JUMPI
00000267: PUSH2 0x02fc
0000026a: PUSH2 0x02f0
0000026d: PUSH1 0x04
0000026f: CALLDATALOAD
00000270: PUSH2 0x0278
00000273: DUP2
00000274: PUSH2 0x0150
00000277: JUMP
00000278: JUMPDEST
00000279: PUSH2 0xffff
0000027c: PUSH1 0x24
0000027e: CALLDATALOAD
0000027f: SWAP2
00000280: PUSH2 0x0288
00000283: DUP4
00000284: PUSH2 0x0150
00000287: JUMP
00000288: JUMPDEST
00000289: PUSH1 0x44
0000028b: CALLDATALOAD
0000028c: SWAP1
0000028d: PUSH2 0x0295
00000290: DUP3
00000291: PUSH2 0x01a1
00000294: JUMP
00000295: JUMPDEST
00000296: PUSH2 0x029d
00000299: PUSH2 0x099e
0000029c: JUMP
0000029d: JUMPDEST
0000029e: POP
0000029f: PUSH1 0x40
000002a1: MLOAD
000002a2: SWAP4
000002a3: SELFBALANCE
000002a4: PUSH2 0x02ac
000002a7: DUP7
000002a8: PUSH2 0x0908
000002ab: JUMP
000002ac: JUMPDEST
000002ad: PUSH1 0x01
000002af: PUSH1 0x01
000002b1: PUSH1 0xa0
000002b3: SHL
000002b4: SUB
000002b5: SWAP3
000002b6: DUP4
000002b7: AND
000002b8: DUP7
000002b9: MSTORE
000002ba: PUSH1 0x00
000002bc: PUSH1 0x20
000002be: DUP8
000002bf: ADD
000002c0: MSTORE
000002c1: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
000002d6: PUSH1 0x40
000002d8: DUP8
000002d9: ADD
000002da: MSTORE
000002db: PUSH1 0x60
000002dd: DUP7
000002de: ADD
000002df: MSTORE
000002e0: AND
000002e1: PUSH1 0x80
000002e3: DUP5
000002e4: ADD
000002e5: MSTORE
000002e6: AND
000002e7: PUSH1 0xa0
000002e9: DUP3
000002ea: ADD
000002eb: MSTORE
000002ec: PUSH2 0x14e2
000002ef: JUMP
000002f0: JUMPDEST
000002f1: PUSH1 0x40
000002f3: MLOAD
000002f4: SWAP2
000002f5: DUP3
000002f6: SWAP2
000002f7: DUP3
000002f8: PUSH2 0x01da
000002fb: JUMP
000002fc: JUMPDEST
000002fd: SUB
000002fe: SWAP1
000002ff: RETURN
00000300: JUMPDEST
00000301: CALLVALUE
00000302: PUSH2 0x0139
00000305: JUMPI
00000306: PUSH1 0x00
00000308: CALLDATASIZE
00000309: PUSH1 0x03
0000030b: NOT
0000030c: ADD
0000030d: SLT
0000030e: PUSH2 0x0139
00000311: JUMPI
00000312: PUSH1 0x40
00000314: MLOAD
00000315: PUSH32 0x0000000000000000000000001ca20040ce6ad406bc2a6c89976388829e7fbade
00000336: PUSH1 0x01
00000338: PUSH1 0x01
0000033a: PUSH1 0xa0
0000033c: SHL
0000033d: SUB
0000033e: AND
0000033f: DUP2
00000340: MSTORE
00000341: PUSH1 0x20
00000343: SWAP1
00000344: RETURN
00000345: JUMPDEST
00000346: CALLVALUE
00000347: PUSH2 0x0139
0000034a: JUMPI
0000034b: PUSH1 0x40
0000034d: CALLDATASIZE
0000034e: PUSH1 0x03
00000350: NOT
00000351: ADD
00000352: SLT
00000353: PUSH2 0x0139
00000356: JUMPI
00000357: PUSH1 0x04
00000359: CALLDATALOAD
0000035a: PUSH2 0x0362
0000035d: DUP2
0000035e: PUSH2 0x0150
00000361: JUMP
00000362: JUMPDEST
00000363: PUSH1 0x01
00000365: DUP1
00000366: PUSH1 0xa0
00000368: SHL
00000369: SUB
0000036a: AND
0000036b: PUSH1 0x00
0000036d: MSTORE
0000036e: PUSH1 0x02
00000370: PUSH1 0x20
00000372: MSTORE
00000373: PUSH1 0x40
00000375: PUSH1 0x00
00000377: KECCAK256
00000378: PUSH1 0x24
0000037a: CALLDATALOAD
0000037b: PUSH1 0x00
0000037d: MSTORE
0000037e: PUSH1 0x20
00000380: MSTORE
00000381: PUSH1 0x20
00000383: PUSH1 0xff
00000385: PUSH1 0x01
00000387: PUSH1 0x40
00000389: PUSH1 0x00
0000038b: KECCAK256
0000038c: ADD
0000038d: SLOAD
0000038e: PUSH1 0x80
00000390: SHR
00000391: AND
00000392: PUSH1 0x40
00000394: MLOAD
00000395: SWAP1
00000396: ISZERO
00000397: ISZERO
00000398: DUP2
00000399: MSTORE
0000039a: RETURN
0000039b: JUMPDEST
0000039c: PUSH1 0x40
0000039e: PUSH1 0x03
000003a0: NOT
000003a1: DUP3
000003a2: ADD
000003a3: SLT
000003a4: PUSH2 0x0139
000003a7: JUMPI
000003a8: PUSH1 0x04
000003aa: CALLDATALOAD
000003ab: SWAP2
000003ac: PUSH8 0xffffffffffffffff
000003b5: SWAP1
000003b6: DUP2
000003b7: DUP5
000003b8: GT
000003b9: PUSH2 0x0139
000003bc: JUMPI
000003bd: DUP3
000003be: PUSH1 0x23
000003c0: DUP6
000003c1: ADD
000003c2: SLT
000003c3: ISZERO
000003c4: PUSH2 0x0139
000003c7: JUMPI
000003c8: DUP4
000003c9: PUSH1 0x04
000003cb: ADD
000003cc: CALLDATALOAD
000003cd: SWAP4
000003ce: DUP3
000003cf: DUP6
000003d0: GT
000003d1: PUSH2 0x0139
000003d4: JUMPI
000003d5: DUP4
000003d6: PUSH1 0x24
000003d8: DUP7
000003d9: PUSH1 0x08
000003db: SHL
000003dc: DUP4
000003dd: ADD
000003de: ADD
000003df: GT
000003e0: PUSH2 0x0139
000003e3: JUMPI
000003e4: PUSH1 0x24
000003e6: ADD
000003e7: SWAP4
000003e8: SWAP3
000003e9: PUSH1 0x24
000003eb: CALLDATALOAD
000003ec: SWAP1
000003ed: DUP4
000003ee: DUP3
000003ef: GT
000003f0: PUSH2 0x0139
000003f3: JUMPI
000003f4: DUP1
000003f5: PUSH1 0x23
000003f7: DUP4
000003f8: ADD
000003f9: SLT
000003fa: ISZERO
000003fb: PUSH2 0x0139
000003fe: JUMPI
000003ff: DUP2
00000400: PUSH1 0x04
00000402: ADD
00000403: CALLDATALOAD
00000404: SWAP4
00000405: DUP5
00000406: GT
00000407: PUSH2 0x0139
0000040a: JUMPI
0000040b: PUSH1 0x24
0000040d: DUP5
0000040e: PUSH1 0x05
00000410: SHL
00000411: DUP4
00000412: ADD
00000413: ADD
00000414: GT
00000415: PUSH2 0x0139
00000418: JUMPI
00000419: PUSH1 0x24
0000041b: ADD
0000041c: SWAP2
0000041d: SWAP1
0000041e: JUMP
0000041f: JUMPDEST
00000420: PUSH1 0x20
00000422: SWAP1
00000423: DUP2
00000424: PUSH1 0x40
00000426: DUP2
00000427: DUP4
00000428: ADD
00000429: SWAP3
0000042a: DUP3
0000042b: DUP2
0000042c: MSTORE
0000042d: DUP6
0000042e: MLOAD
0000042f: DUP1
00000430: SWAP5
00000431: MSTORE
00000432: ADD
00000433: SWAP4
00000434: ADD
00000435: SWAP2
00000436: PUSH1 0x00
00000438: JUMPDEST
00000439: DUP3
0000043a: DUP2
0000043b: LT
0000043c: PUSH2 0x0446
0000043f: JUMPI
00000440: POP
00000441: POP
00000442: POP
00000443: POP
00000444: SWAP1
00000445: JUMP
00000446: JUMPDEST
00000447: DUP4
00000448: MLOAD
00000449: PUSH1 0x01
0000044b: PUSH1 0x01
0000044d: PUSH1 0x80
0000044f: SHL
00000450: SUB
00000451: AND
00000452: DUP6
00000453: MSTORE
00000454: SWAP4
00000455: DUP2
00000456: ADD
00000457: SWAP4
00000458: SWAP3
00000459: DUP2
0000045a: ADD
0000045b: SWAP3
0000045c: PUSH1 0x01
0000045e: ADD
0000045f: PUSH2 0x0438
00000462: JUMP
00000463: JUMPDEST
00000464: CALLVALUE
00000465: PUSH2 0x0139
00000468: JUMPI
00000469: PUSH2 0x0471
0000046c: CALLDATASIZE
0000046d: PUSH2 0x039b
00000470: JUMP
00000471: JUMPDEST
00000472: SWAP2
00000473: SWAP3
00000474: SWAP1
00000475: PUSH2 0x047d
00000478: DUP5
00000479: PUSH2 0x108a
0000047c: JUMP
0000047d: JUMPDEST
0000047e: SWAP3
0000047f: PUSH2 0x048b
00000482: PUSH1 0x40
00000484: MLOAD
00000485: SWAP5
00000486: DUP6
00000487: PUSH2 0x0962
0000048a: JUMP
0000048b: JUMPDEST
0000048c: DUP5
0000048d: DUP5
0000048e: MSTORE
0000048f: PUSH1 0x1f
00000491: NOT
00000492: PUSH2 0x049a
00000495: DUP7
00000496: PUSH2 0x108a
00000499: JUMP
0000049a: JUMPDEST
0000049b: ADD
0000049c: SWAP5
0000049d: PUSH1 0x20
0000049f: SWAP6
000004a0: CALLDATASIZE
000004a1: DUP8
000004a2: DUP8
000004a3: ADD
000004a4: CALLDATACOPY
000004a5: PUSH1 0x00
000004a7: JUMPDEST
000004a8: DUP2
000004a9: DUP2
000004aa: LT
000004ab: PUSH2 0x04bc
000004ae: JUMPI
000004af: PUSH1 0x40
000004b1: MLOAD
000004b2: DUP1
000004b3: PUSH2 0x02fc
000004b6: DUP9
000004b7: DUP3
000004b8: PUSH2 0x041f
000004bb: JUMP
000004bc: JUMPDEST
000004bd: PUSH2 0x04dc
000004c0: PUSH2 0x04ca
000004c3: DUP3
000004c4: DUP5
000004c5: DUP9
000004c6: PUSH2 0x10c7
000004c9: JUMP
000004ca: JUMPDEST
000004cb: PUSH2 0x04d5
000004ce: DUP4
000004cf: DUP7
000004d0: DUP9
000004d1: PUSH2 0x10d7
000004d4: JUMP
000004d5: JUMPDEST
000004d6: CALLDATALOAD
000004d7: SWAP1
000004d8: PUSH2 0x0c54
000004db: JUMP
000004dc: JUMPDEST
000004dd: SWAP1
000004de: DUP7
000004df: MLOAD
000004e0: DUP2
000004e1: LT
000004e2: ISZERO
000004e3: PUSH2 0x0506
000004e6: JUMPI
000004e7: PUSH1 0x01
000004e9: PUSH1 0x01
000004eb: PUSH1 0x80
000004ed: SHL
000004ee: SUB
000004ef: PUSH2 0x0501
000004f2: SWAP3
000004f3: AND
000004f4: DUP9
000004f5: DUP3
000004f6: PUSH1 0x05
000004f8: SHL
000004f9: DUP10
000004fa: ADD
000004fb: ADD
000004fc: MSTORE
000004fd: PUSH2 0x10a2
00000500: JUMP
00000501: JUMPDEST
00000502: PUSH2 0x04a7
00000505: JUMP
00000506: JUMPDEST
00000507: PUSH2 0x10b1
0000050a: JUMP
0000050b: JUMPDEST
0000050c: CALLVALUE
0000050d: PUSH2 0x0139
00000510: JUMPI
00000511: PUSH2 0x0120
00000514: CALLDATASIZE
00000515: PUSH1 0x03
00000517: NOT
00000518: ADD
00000519: SLT
0000051a: PUSH2 0x0139
0000051d: JUMPI
0000051e: PUSH1 0x20
00000520: PUSH2 0x0535
00000523: PUSH2 0x052b
00000526: CALLDATASIZE
00000527: PUSH2 0x013e
0000052a: JUMP
0000052b: JUMPDEST
0000052c: PUSH2 0x0104
0000052f: CALLDATALOAD
00000530: SWAP1
00000531: PUSH2 0x11ab
00000534: JUMP
00000535: JUMPDEST
00000536: PUSH1 0x01
00000538: PUSH1 0x01
0000053a: PUSH1 0x80
0000053c: SHL
0000053d: SUB
0000053e: PUSH1 0x40
00000540: MLOAD
00000541: SWAP2
00000542: AND
00000543: DUP2
00000544: MSTORE
00000545: RETURN
00000546: JUMPDEST
00000547: CALLVALUE
00000548: PUSH2 0x0139
0000054b: JUMPI
0000054c: PUSH1 0x40
0000054e: CALLDATASIZE
0000054f: PUSH1 0x03
00000551: NOT
00000552: ADD
00000553: SLT
00000554: PUSH2 0x0139
00000557: JUMPI
00000558: PUSH1 0x04
0000055a: CALLDATALOAD
0000055b: PUSH2 0x0563
0000055e: DUP2
0000055f: PUSH2 0x0150
00000562: JUMP
00000563: JUMPDEST
00000564: PUSH1 0x24
00000566: CALLDATALOAD
00000567: SWAP1
00000568: PUSH8 0xffffffffffffffff
00000571: SWAP1
00000572: DUP2
00000573: DUP4
00000574: GT
00000575: PUSH2 0x0139
00000578: JUMPI
00000579: CALLDATASIZE
0000057a: PUSH1 0x23
0000057c: DUP5
0000057d: ADD
0000057e: SLT
0000057f: ISZERO
00000580: PUSH2 0x0139
00000583: JUMPI
00000584: DUP3
00000585: PUSH1 0x04
00000587: ADD
00000588: CALLDATALOAD
00000589: SWAP2
0000058a: DUP3
0000058b: GT
0000058c: PUSH2 0x0139
0000058f: JUMPI
00000590: CALLDATASIZE
00000591: PUSH1 0x24
00000593: DUP4
00000594: DUP6
00000595: ADD
00000596: ADD
00000597: GT
00000598: PUSH2 0x0139
0000059b: JUMPI
0000059c: PUSH1 0x40
0000059e: MLOAD
0000059f: PUSH4 0x5c9fcd85
000005a4: PUSH1 0xe1
000005a6: SHL
000005a7: DUP2
000005a8: MSTORE
000005a9: PUSH1 0x0b
000005ab: PUSH1 0x04
000005ad: DUP3
000005ae: ADD
000005af: MSTORE
000005b0: PUSH1 0x01
000005b2: PUSH1 0x01
000005b4: PUSH1 0xa0
000005b6: SHL
000005b7: SUB
000005b8: PUSH1 0x20
000005ba: DUP3
000005bb: PUSH1 0x24
000005bd: DUP2
000005be: PUSH32 0x0000000000000000000000001ca20040ce6ad406bc2a6c89976388829e7fbade
000005df: DUP6
000005e0: AND
000005e1: GAS
000005e2: STATICCALL
000005e3: SWAP2
000005e4: DUP3
000005e5: ISZERO
000005e6: PUSH2 0x0665
000005e9: JUMPI
000005ea: PUSH1 0x00
000005ec: SWAP3
000005ed: PUSH2 0x0635
000005f0: JUMPI
000005f1: JUMPDEST
000005f2: POP
000005f3: DUP2
000005f4: AND
000005f5: CALLER
000005f6: SUB
000005f7: PUSH2 0x0608
000005fa: JUMPI
000005fb: POP
000005fc: PUSH1 0x24
000005fe: PUSH2 0x019f
00000601: SWAP4
00000602: ADD
00000603: SWAP1
00000604: PUSH2 0x1366
00000607: JUMP
00000608: JUMPDEST
00000609: PUSH1 0x40
0000060b: MLOAD
0000060c: PUSH4 0x520b6b75
00000611: PUSH1 0xe0
00000613: SHL
00000614: DUP2
00000615: MSTORE
00000616: CALLER
00000617: PUSH1 0x04
00000619: DUP3
0000061a: ADD
0000061b: MSTORE
0000061c: PUSH1 0x01
0000061e: PUSH1 0x01
00000620: PUSH1 0xa0
00000622: SHL
00000623: SUB
00000624: SWAP2
00000625: SWAP1
00000626: SWAP2
00000627: AND
00000628: PUSH1 0x24
0000062a: DUP3
0000062b: ADD
0000062c: MSTORE
0000062d: PUSH1 0x44
0000062f: SWAP1
00000630: REVERT
00000631: JUMPDEST
00000632: SUB
00000633: SWAP1
00000634: REVERT
00000635: JUMPDEST
00000636: PUSH2 0x0657
00000639: SWAP2
0000063a: SWAP3
0000063b: POP
0000063c: PUSH1 0x20
0000063e: RETURNDATASIZE
0000063f: DUP2
00000640: GT
00000641: PUSH2 0x065e
00000644: JUMPI
00000645: JUMPDEST
00000646: PUSH2 0x064f
00000649: DUP2
0000064a: DUP4
0000064b: PUSH2 0x0962
0000064e: JUMP
0000064f: JUMPDEST
00000650: DUP2
00000651: ADD
00000652: SWAP1
00000653: PUSH2 0x0a10
00000656: JUMP
00000657: JUMPDEST
00000658: SWAP1
00000659: CODESIZE
0000065a: PUSH2 0x05f1
0000065d: JUMP
0000065e: JUMPDEST
0000065f: POP
00000660: RETURNDATASIZE
00000661: PUSH2 0x0645
00000664: JUMP
00000665: JUMPDEST
00000666: PUSH2 0x09f7
00000669: JUMP
0000066a: JUMPDEST
0000066b: CALLVALUE
0000066c: PUSH2 0x0139
0000066f: JUMPI
00000670: PUSH2 0x0120
00000673: CALLDATASIZE
00000674: PUSH1 0x03
00000676: NOT
00000677: ADD
00000678: SLT
00000679: PUSH2 0x0139
0000067c: JUMPI
0000067d: PUSH1 0x20
0000067f: PUSH2 0x0535
00000682: PUSH2 0x068a
00000685: CALLDATASIZE
00000686: PUSH2 0x013e
00000689: JUMP
0000068a: JUMPDEST
0000068b: PUSH2 0x0104
0000068e: CALLDATALOAD
0000068f: SWAP1
00000690: PUSH2 0x0c54
00000693: JUMP
00000694: JUMPDEST
00000695: CALLVALUE
00000696: PUSH2 0x0139
00000699: JUMPI
0000069a: PUSH1 0x20
0000069c: CALLDATASIZE
0000069d: PUSH1 0x03
0000069f: NOT
000006a0: ADD
000006a1: SLT
000006a2: PUSH2 0x0139
000006a5: JUMPI
000006a6: PUSH1 0x04
000006a8: CALLDATALOAD
000006a9: PUSH2 0x06b1
000006ac: DUP2
000006ad: PUSH2 0x0150
000006b0: JUMP
000006b1: JUMPDEST
000006b2: PUSH1 0x01
000006b4: DUP1
000006b5: PUSH1 0xa0
000006b7: SHL
000006b8: SUB
000006b9: AND
000006ba: PUSH1 0x00
000006bc: MSTORE
000006bd: PUSH1 0x00
000006bf: PUSH1 0x20
000006c1: MSTORE
000006c2: PUSH1 0x20
000006c4: PUSH1 0x40
000006c6: PUSH1 0x00
000006c8: KECCAK256
000006c9: SLOAD
000006ca: PUSH1 0x40
000006cc: MLOAD
000006cd: SWAP1
000006ce: DUP2
000006cf: MSTORE
000006d0: RETURN
000006d1: JUMPDEST
000006d2: CALLVALUE
000006d3: PUSH2 0x0139
000006d6: JUMPI
000006d7: PUSH2 0x06df
000006da: CALLDATASIZE
000006db: PUSH2 0x039b
000006de: JUMP
000006df: JUMPDEST
000006e0: SWAP1
000006e1: PUSH1 0x00
000006e3: JUMPDEST
000006e4: DUP4
000006e5: DUP2
000006e6: LT
000006e7: PUSH2 0x06ec
000006ea: JUMPI
000006eb: STOP
000006ec: JUMPDEST
000006ed: DUP1
000006ee: PUSH2 0x0714
000006f1: PUSH2 0x06fe
000006f4: PUSH2 0x0719
000006f7: SWAP4
000006f8: DUP8
000006f9: DUP10
000006fa: PUSH2 0x10c7
000006fd: JUMP
000006fe: JUMPDEST
000006ff: PUSH2 0x0709
00000702: DUP4
00000703: DUP8
00000704: DUP8
00000705: PUSH2 0x10d7
00000708: JUMP
00000709: JUMPDEST
0000070a: CALLDATALOAD
0000070b: SWAP1
0000070c: PUSH2 0x019a
0000070f: DUP3
00000710: PUSH2 0x0150
00000713: JUMP
00000714: JUMPDEST
00000715: PUSH2 0x10a2
00000718: JUMP
00000719: JUMPDEST
0000071a: PUSH2 0x06e3
0000071d: JUMP
0000071e: JUMPDEST
0000071f: CALLVALUE
00000720: PUSH2 0x0139
00000723: JUMPI
00000724: PUSH1 0x40
00000726: CALLDATASIZE
00000727: PUSH1 0x03
00000729: NOT
0000072a: ADD
0000072b: SLT
0000072c: PUSH2 0x0139
0000072f: JUMPI
00000730: PUSH1 0x04
00000732: CALLDATALOAD
00000733: PUSH2 0x073b
00000736: DUP2
00000737: PUSH2 0x0150
0000073a: JUMP
0000073b: JUMPDEST
0000073c: PUSH1 0x01
0000073e: DUP1
0000073f: PUSH1 0xa0
00000741: SHL
00000742: SUB
00000743: AND
00000744: PUSH1 0x00
00000746: MSTORE
00000747: PUSH1 0x02
00000749: PUSH1 0x20
0000074b: MSTORE
0000074c: PUSH1 0x40
0000074e: PUSH1 0x00
00000750: KECCAK256
00000751: PUSH1 0x24
00000753: CALLDATALOAD
00000754: PUSH1 0x00
00000756: MSTORE
00000757: PUSH1 0x20
00000759: MSTORE
0000075a: PUSH1 0x20
0000075c: PUSH1 0x01
0000075e: PUSH1 0x01
00000760: PUSH1 0x80
00000762: SHL
00000763: SUB
00000764: PUSH1 0x01
00000766: PUSH1 0x40
00000768: PUSH1 0x00
0000076a: KECCAK256
0000076b: ADD
0000076c: SLOAD
0000076d: AND
0000076e: PUSH1 0x40
00000770: MLOAD
00000771: SWAP1
00000772: DUP2
00000773: MSTORE
00000774: RETURN
00000775: JUMPDEST
00000776: CALLVALUE
00000777: PUSH2 0x0139
0000077a: JUMPI
0000077b: PUSH1 0x60
0000077d: CALLDATASIZE
0000077e: PUSH1 0x03
00000780: NOT
00000781: ADD
00000782: SLT
00000783: PUSH2 0x0139
00000786: JUMPI
00000787: PUSH1 0x20
00000789: PUSH1 0xff
0000078b: PUSH1 0x40
0000078d: PUSH1 0x04
0000078f: CALLDATALOAD
00000790: PUSH2 0x0798
00000793: DUP2
00000794: PUSH2 0x0150
00000797: JUMP
00000798: JUMPDEST
00000799: PUSH1 0x01
0000079b: PUSH1 0x01
0000079d: PUSH1 0xa0
0000079f: SHL
000007a0: SUB
000007a1: AND
000007a2: PUSH1 0x00
000007a4: SWAP1
000007a5: DUP2
000007a6: MSTORE
000007a7: PUSH1 0x02
000007a9: DUP1
000007aa: DUP6
000007ab: MSTORE
000007ac: DUP3
000007ad: DUP3
000007ae: KECCAK256
000007af: PUSH1 0x44
000007b1: CALLDATALOAD
000007b2: DUP4
000007b3: MSTORE
000007b4: DUP6
000007b5: MSTORE
000007b6: DUP3
000007b7: DUP3
000007b8: KECCAK256
000007b9: PUSH1 0x24
000007bb: CALLDATALOAD
000007bc: DUP4
000007bd: MSTORE
000007be: ADD
000007bf: DUP5
000007c0: MSTORE
000007c1: KECCAK256
000007c2: SLOAD
000007c3: PUSH1 0x40
000007c5: MLOAD
000007c6: SWAP2
000007c7: AND
000007c8: ISZERO
000007c9: ISZERO
000007ca: DUP2
000007cb: MSTORE
000007cc: RETURN
000007cd: JUMPDEST
000007ce: CALLVALUE
000007cf: PUSH2 0x0139
000007d2: JUMPI
000007d3: PUSH1 0x80
000007d5: CALLDATASIZE
000007d6: PUSH1 0x03
000007d8: NOT
000007d9: ADD
000007da: SLT
000007db: PUSH2 0x0139
000007de: JUMPI
000007df: PUSH1 0x04
000007e1: CALLDATALOAD
000007e2: PUSH2 0x07ea
000007e5: DUP2
000007e6: PUSH2 0x0150
000007e9: JUMP
000007ea: JUMPDEST
000007eb: PUSH1 0x24
000007ed: CALLDATALOAD
000007ee: SWAP1
000007ef: PUSH2 0x07f7
000007f2: DUP3
000007f3: PUSH2 0x0150
000007f6: JUMP
000007f7: JUMPDEST
000007f8: PUSH1 0x44
000007fa: CALLDATALOAD
000007fb: SWAP2
000007fc: PUSH2 0x0804
000007ff: DUP4
00000800: PUSH2 0x0150
00000803: JUMP
00000804: JUMPDEST
00000805: PUSH1 0x64
00000807: CALLDATALOAD
00000808: SWAP2
00000809: PUSH2 0x0811
0000080c: DUP4
0000080d: PUSH2 0x01a1
00000810: JUMP
00000811: JUMPDEST
00000812: PUSH2 0x0819
00000815: PUSH2 0x099e
00000818: JUMP
00000819: JUMPDEST
0000081a: POP
0000081b: PUSH1 0x40
0000081d: MLOAD
0000081e: PUSH4 0x70a08231
00000823: PUSH1 0xe0
00000825: SHL
00000826: DUP2
00000827: MSTORE
00000828: ADDRESS
00000829: PUSH1 0x04
0000082b: DUP3
0000082c: ADD
0000082d: MSTORE
0000082e: SWAP3
0000082f: PUSH1 0x01
00000831: PUSH1 0x01
00000833: PUSH1 0xa0
00000835: SHL
00000836: SUB
00000837: SWAP2
00000838: SWAP1
00000839: SWAP2
0000083a: AND
0000083b: SWAP1
0000083c: PUSH1 0x20
0000083e: DUP5
0000083f: PUSH1 0x24
00000841: DUP2
00000842: DUP6
00000843: GAS
00000844: STATICCALL
00000845: SWAP4
00000846: DUP5
00000847: ISZERO
00000848: PUSH2 0x0665
0000084b: JUMPI
0000084c: PUSH2 0x02fc
0000084f: SWAP6
00000850: PUSH2 0x02f0
00000853: SWAP6
00000854: PUSH2 0x08b9
00000857: SWAP5
00000858: PUSH2 0x08ae
0000085b: SWAP4
0000085c: PUSH1 0x00
0000085e: SWAP3
0000085f: PUSH2 0x08be
00000862: JUMPI
00000863: JUMPDEST
00000864: POP
00000865: PUSH2 0x0899
00000868: SWAP1
00000869: PUSH2 0x0882
0000086c: PUSH2 0x0873
0000086f: PUSH2 0x0984
00000872: JUMP
00000873: JUMPDEST
00000874: PUSH1 0x01
00000876: PUSH1 0x01
00000878: PUSH1 0xa0
0000087a: SHL
0000087b: SUB
0000087c: SWAP1
0000087d: SWAP10
0000087e: AND
0000087f: DUP10
00000880: MSTORE
00000881: JUMP
00000882: JUMPDEST
00000883: PUSH1 0x01
00000885: PUSH1 0x20
00000887: DUP10
00000888: ADD
00000889: MSTORE
0000088a: PUSH1 0x01
0000088c: PUSH1 0x01
0000088e: PUSH1 0xa0
00000890: SHL
00000891: SUB
00000892: AND
00000893: PUSH1 0x40
00000895: DUP9
00000896: ADD
00000897: MSTORE
00000898: JUMP
00000899: JUMPDEST
0000089a: PUSH1 0x60
0000089c: DUP7
0000089d: ADD
0000089e: MSTORE
0000089f: PUSH1 0x01
000008a1: PUSH1 0x01
000008a3: PUSH1 0xa0
000008a5: SHL
000008a6: SUB
000008a7: AND
000008a8: PUSH1 0x80
000008aa: DUP6
000008ab: ADD
000008ac: MSTORE
000008ad: JUMP
000008ae: JUMPDEST
000008af: PUSH2 0xffff
000008b2: AND
000008b3: PUSH1 0xa0
000008b5: DUP4
000008b6: ADD
000008b7: MSTORE
000008b8: JUMP
000008b9: JUMPDEST
000008ba: PUSH2 0x14e2
000008bd: JUMP
000008be: JUMPDEST
000008bf: PUSH2 0x0899
000008c2: SWAP2
000008c3: SWAP3
000008c4: POP
000008c5: PUSH2 0x08e4
000008c8: SWAP1
000008c9: PUSH1 0x20
000008cb: RETURNDATASIZE
000008cc: DUP2
000008cd: GT
000008ce: PUSH2 0x08eb
000008d1: JUMPI
000008d2: JUMPDEST
000008d3: PUSH2 0x08dc
000008d6: DUP2
000008d7: DUP4
000008d8: PUSH2 0x0962
000008db: JUMP
000008dc: JUMPDEST
000008dd: DUP2
000008de: ADD
000008df: SWAP1
000008e0: PUSH2 0x09e8
000008e3: JUMP
000008e4: JUMPDEST
000008e5: SWAP2
000008e6: SWAP1
000008e7: PUSH2 0x0863
000008ea: JUMP
000008eb: JUMPDEST
000008ec: POP
000008ed: RETURNDATASIZE
000008ee: PUSH2 0x08d2
000008f1: JUMP
000008f2: JUMPDEST
000008f3: PUSH4 0x4e487b71
000008f8: PUSH1 0xe0
000008fa: SHL
000008fb: PUSH1 0x00
000008fd: MSTORE
000008fe: PUSH1 0x41
00000900: PUSH1 0x04
00000902: MSTORE
00000903: PUSH1 0x24
00000905: PUSH1 0x00
00000907: REVERT
00000908: JUMPDEST
00000909: PUSH1 0xc0
0000090b: DUP2
0000090c: ADD
0000090d: SWAP1
0000090e: DUP2
0000090f: LT
00000910: PUSH8 0xffffffffffffffff
00000919: DUP3
0000091a: GT
0000091b: OR
0000091c: PUSH2 0x0924
0000091f: JUMPI
00000920: PUSH1 0x40
00000922: MSTORE
00000923: JUMP
00000924: JUMPDEST
00000925: PUSH2 0x08f2
00000928: JUMP
00000929: JUMPDEST
0000092a: PUSH2 0x0100
0000092d: DUP2
0000092e: ADD
0000092f: SWAP1
00000930: DUP2
00000931: LT
00000932: PUSH8 0xffffffffffffffff
0000093b: DUP3
0000093c: GT
0000093d: OR
0000093e: PUSH2 0x0924
00000941: JUMPI
00000942: PUSH1 0x40
00000944: MSTORE
00000945: JUMP
00000946: JUMPDEST
00000947: PUSH1 0x40
00000949: DUP2
0000094a: ADD
0000094b: SWAP1
0000094c: DUP2
0000094d: LT
0000094e: PUSH8 0xffffffffffffffff
00000957: DUP3
00000958: GT
00000959: OR
0000095a: PUSH2 0x0924
0000095d: JUMPI
0000095e: PUSH1 0x40
00000960: MSTORE
00000961: JUMP
00000962: JUMPDEST
00000963: SWAP1
00000964: PUSH1 0x1f
00000966: DUP1
00000967: NOT
00000968: SWAP2
00000969: ADD
0000096a: AND
0000096b: DUP2
0000096c: ADD
0000096d: SWAP1
0000096e: DUP2
0000096f: LT
00000970: PUSH8 0xffffffffffffffff
00000979: DUP3
0000097a: GT
0000097b: OR
0000097c: PUSH2 0x0924
0000097f: JUMPI
00000980: PUSH1 0x40
00000982: MSTORE
00000983: JUMP
00000984: JUMPDEST
00000985: PUSH1 0x40
00000987: MLOAD
00000988: SWAP1
00000989: PUSH2 0x016c
0000098c: DUP3
0000098d: PUSH2 0x0908
00000990: JUMP
00000991: JUMPDEST
00000992: PUSH1 0x40
00000994: MLOAD
00000995: SWAP1
00000996: PUSH2 0x016c
00000999: DUP3
0000099a: PUSH2 0x0929
0000099d: JUMP
0000099e: JUMPDEST
0000099f: PUSH1 0x40
000009a1: MLOAD
000009a2: SWAP1
000009a3: PUSH2 0x09ab
000009a6: DUP3
000009a7: PUSH2 0x0929
000009aa: JUMP
000009ab: JUMPDEST
000009ac: DUP2
000009ad: PUSH1 0xe0
000009af: PUSH1 0x00
000009b1: SWAP2
000009b2: DUP3
000009b3: DUP2
000009b4: MSTORE
000009b5: DUP3
000009b6: PUSH1 0x20
000009b8: DUP3
000009b9: ADD
000009ba: MSTORE
000009bb: DUP3
000009bc: PUSH1 0x40
000009be: DUP3
000009bf: ADD
000009c0: MSTORE
000009c1: DUP3
000009c2: PUSH1 0x60
000009c4: DUP3
000009c5: ADD
000009c6: MSTORE
000009c7: DUP3
000009c8: PUSH1 0x80
000009ca: DUP3
000009cb: ADD
000009cc: MSTORE
000009cd: DUP3
000009ce: PUSH1 0xa0
000009d0: DUP3
000009d1: ADD
000009d2: MSTORE
000009d3: DUP3
000009d4: PUSH1 0xc0
000009d6: DUP3
000009d7: ADD
000009d8: MSTORE
000009d9: ADD
000009da: MSTORE
000009db: JUMP
000009dc: JUMPDEST
000009dd: PUSH1 0x02
000009df: DUP3
000009e0: LT
000009e1: ISZERO
000009e2: PUSH2 0x01b7
000009e5: JUMPI
000009e6: MSTORE
000009e7: JUMP
000009e8: JUMPDEST
000009e9: SWAP1
000009ea: DUP2
000009eb: PUSH1 0x20
000009ed: SWAP2
000009ee: SUB
000009ef: SLT
000009f0: PUSH2 0x0139
000009f3: JUMPI
000009f4: MLOAD
000009f5: SWAP1
000009f6: JUMP
000009f7: JUMPDEST
000009f8: PUSH1 0x40
000009fa: MLOAD
000009fb: RETURNDATASIZE
000009fc: PUSH1 0x00
000009fe: DUP3
000009ff: RETURNDATACOPY
00000a00: RETURNDATASIZE
00000a01: SWAP1
00000a02: REVERT
00000a03: JUMPDEST
00000a04: CALLDATALOAD
00000a05: PUSH2 0x0a0d
00000a08: DUP2
00000a09: PUSH2 0x0150
00000a0c: JUMP
00000a0d: JUMPDEST
00000a0e: SWAP1
00000a0f: JUMP
00000a10: JUMPDEST
00000a11: SWAP1
00000a12: DUP2
00000a13: PUSH1 0x20
00000a15: SWAP2
00000a16: SUB
00000a17: SLT
00000a18: PUSH2 0x0139
00000a1b: JUMPI
00000a1c: MLOAD
00000a1d: PUSH2 0x0a0d
00000a20: DUP2
00000a21: PUSH2 0x0150
00000a24: JUMP
00000a25: JUMPDEST
00000a26: PUSH1 0x00
00000a28: MSTORE
00000a29: PUSH1 0x01
00000a2b: PUSH1 0x20
00000a2d: MSTORE
00000a2e: PUSH1 0x40
00000a30: PUSH1 0x00
00000a32: KECCAK256
00000a33: SWAP1
00000a34: JUMP
00000a35: JUMPDEST
00000a36: PUSH1 0x02
00000a38: GT
00000a39: ISZERO
00000a3a: PUSH2 0x0139
00000a3d: JUMPI
00000a3e: JUMP
00000a3f: JUMPDEST
00000a40: PUSH1 0x01
00000a42: PUSH1 0x01
00000a44: PUSH1 0x80
00000a46: SHL
00000a47: SUB
00000a48: DUP2
00000a49: AND
00000a4a: SUB
00000a4b: PUSH2 0x0139
00000a4e: JUMPI
00000a4f: JUMP
00000a50: JUMPDEST
00000a51: CALLDATALOAD
00000a52: SWAP1
00000a53: PUSH2 0x016c
00000a56: DUP3
00000a57: PUSH2 0x0a3f
00000a5a: JUMP
00000a5b: JUMPDEST
00000a5c: PUSH1 0x01
00000a5e: PUSH1 0x01
00000a60: PUSH1 0x60
00000a62: SHL
00000a63: SUB
00000a64: DUP2
00000a65: AND
00000a66: SUB
00000a67: PUSH2 0x0139
00000a6a: JUMPI
00000a6b: JUMP
00000a6c: JUMPDEST
00000a6d: CALLDATALOAD
00000a6e: SWAP1
00000a6f: PUSH2 0x016c
00000a72: DUP3
00000a73: PUSH2 0x0a5b
00000a76: JUMP
00000a77: JUMPDEST
00000a78: SWAP2
00000a79: SWAP1
00000a7a: DUP3
00000a7b: PUSH2 0x0100
00000a7e: SWAP2
00000a7f: SUB
00000a80: SLT
00000a81: PUSH2 0x0139
00000a84: JUMPI
00000a85: PUSH1 0x40
00000a87: MLOAD
00000a88: PUSH2 0x0a90
00000a8b: DUP2
00000a8c: PUSH2 0x0929
00000a8f: JUMP
00000a90: JUMPDEST
00000a91: PUSH1 0xe0
00000a93: PUSH2 0x0b0a
00000a96: DUP2
00000a97: DUP4
00000a98: SWAP6
00000a99: DUP1
00000a9a: CALLDATALOAD
00000a9b: PUSH2 0x0aa3
00000a9e: DUP2
00000a9f: PUSH2 0x0a35
00000aa2: JUMP
00000aa3: JUMPDEST
00000aa4: DUP6
00000aa5: MSTORE
00000aa6: PUSH1 0x20
00000aa8: DUP2
00000aa9: ADD
00000aaa: CALLDATALOAD
00000aab: PUSH1 0x20
00000aad: DUP7
00000aae: ADD
00000aaf: MSTORE
00000ab0: PUSH2 0x0abb
00000ab3: PUSH1 0x40
00000ab5: DUP3
00000ab6: ADD
00000ab7: PUSH2 0x0161
00000aba: JUMP
00000abb: JUMPDEST
00000abc: PUSH1 0x40
00000abe: DUP7
00000abf: ADD
00000ac0: MSTORE
00000ac1: PUSH2 0x0acc
00000ac4: PUSH1 0x60
00000ac6: DUP3
00000ac7: ADD
00000ac8: PUSH2 0x0161
00000acb: JUMP
00000acc: JUMPDEST
00000acd: PUSH1 0x60
00000acf: DUP7
00000ad0: ADD
00000ad1: MSTORE
00000ad2: PUSH2 0x0add
00000ad5: PUSH1 0x80
00000ad7: DUP3
00000ad8: ADD
00000ad9: PUSH2 0x0161
00000adc: JUMP
00000add: JUMPDEST
00000ade: PUSH1 0x80
00000ae0: DUP7
00000ae1: ADD
00000ae2: MSTORE
00000ae3: PUSH2 0x0aee
00000ae6: PUSH1 0xa0
00000ae8: DUP3
00000ae9: ADD
00000aea: PUSH2 0x0a50
00000aed: JUMP
00000aee: JUMPDEST
00000aef: PUSH1 0xa0
00000af1: DUP7
00000af2: ADD
00000af3: MSTORE
00000af4: PUSH2 0x0aff
00000af7: PUSH1 0xc0
00000af9: DUP3
00000afa: ADD
00000afb: PUSH2 0x0a50
00000afe: JUMP
00000aff: JUMPDEST
00000b00: PUSH1 0xc0
00000b02: DUP7
00000b03: ADD
00000b04: MSTORE
00000b05: ADD
00000b06: PUSH2 0x0a6c
00000b09: JUMP
00000b0a: JUMPDEST
00000b0b: SWAP2
00000b0c: ADD
00000b0d: MSTORE
00000b0e: JUMP
00000b0f: JUMPDEST
00000b10: PUSH2 0x016c
00000b13: SWAP1
00000b14: SWAP3
00000b15: SWAP2
00000b16: SWAP3
00000b17: PUSH1 0xe0
00000b19: PUSH2 0x0bd7
00000b1c: DUP2
00000b1d: PUSH2 0x0100
00000b20: DUP5
00000b21: ADD
00000b22: SWAP7
00000b23: PUSH2 0x0b36
00000b26: DUP6
00000b27: DUP3
00000b28: CALLDATALOAD
00000b29: PUSH2 0x0b31
00000b2c: DUP2
00000b2d: PUSH2 0x0a35
00000b30: JUMP
00000b31: JUMPDEST
00000b32: PUSH2 0x01cd
00000b35: JUMP
00000b36: JUMPDEST
00000b37: PUSH1 0x20
00000b39: DUP2
00000b3a: ADD
00000b3b: CALLDATALOAD
00000b3c: PUSH1 0x20
00000b3e: DUP7
00000b3f: ADD
00000b40: MSTORE
00000b41: PUSH1 0x40
00000b43: DUP2
00000b44: ADD
00000b45: CALLDATALOAD
00000b46: PUSH2 0x0b4e
00000b49: DUP2
00000b4a: PUSH2 0x0150
00000b4d: JUMP
00000b4e: JUMPDEST
00000b4f: PUSH1 0x01
00000b51: PUSH1 0x01
00000b53: PUSH1 0xa0
00000b55: SHL
00000b56: SUB
00000b57: SWAP1
00000b58: DUP2
00000b59: AND
00000b5a: PUSH1 0x40
00000b5c: DUP8
00000b5d: ADD
00000b5e: MSTORE
00000b5f: PUSH1 0x60
00000b61: DUP3
00000b62: ADD
00000b63: CALLDATALOAD
00000b64: PUSH2 0x0b6c
00000b67: DUP2
00000b68: PUSH2 0x0150
00000b6b: JUMP
00000b6c: JUMPDEST
00000b6d: AND
00000b6e: PUSH1 0x60
00000b70: DUP7
00000b71: ADD
00000b72: MSTORE
00000b73: PUSH2 0x0b93
00000b76: PUSH1 0x80
00000b78: DUP3
00000b79: ADD
00000b7a: CALLDATALOAD
00000b7b: PUSH2 0x0b83
00000b7e: DUP2
00000b7f: PUSH2 0x0150
00000b82: JUMP
00000b83: JUMPDEST
00000b84: PUSH1 0x01
00000b86: PUSH1 0x01
00000b88: PUSH1 0xa0
00000b8a: SHL
00000b8b: SUB
00000b8c: AND
00000b8d: PUSH1 0x80
00000b8f: DUP8
00000b90: ADD
00000b91: MSTORE
00000b92: JUMP
00000b93: JUMPDEST
00000b94: PUSH2 0x0bb2
00000b97: PUSH2 0x0ba2
00000b9a: PUSH1 0xa0
00000b9c: DUP4
00000b9d: ADD
00000b9e: PUSH2 0x0a50
00000ba1: JUMP
00000ba2: JUMPDEST
00000ba3: PUSH1 0x01
00000ba5: PUSH1 0x01
00000ba7: PUSH1 0x80
00000ba9: SHL
00000baa: SUB
00000bab: AND
00000bac: PUSH1 0xa0
00000bae: DUP8
00000baf: ADD
00000bb0: MSTORE
00000bb1: JUMP
00000bb2: JUMPDEST
00000bb3: PUSH2 0x0bd1
00000bb6: PUSH2 0x0bc1
00000bb9: PUSH1 0xc0
00000bbb: DUP4
00000bbc: ADD
00000bbd: PUSH2 0x0a50
00000bc0: JUMP
00000bc1: JUMPDEST
00000bc2: PUSH1 0x01
00000bc4: PUSH1 0x01
00000bc6: PUSH1 0x80
00000bc8: SHL
00000bc9: SUB
00000bca: AND
00000bcb: PUSH1 0xc0
00000bcd: DUP8
00000bce: ADD
00000bcf: MSTORE
00000bd0: JUMP
00000bd1: JUMPDEST
00000bd2: ADD
00000bd3: PUSH2 0x0a6c
00000bd6: JUMP
00000bd7: JUMPDEST
00000bd8: PUSH1 0x01
00000bda: PUSH1 0x01
00000bdc: PUSH1 0x60
00000bde: SHL
00000bdf: SUB
00000be0: AND
00000be1: SWAP2
00000be2: ADD
00000be3: MSTORE
00000be4: JUMP
00000be5: JUMPDEST
00000be6: PUSH4 0x4e487b71
00000beb: PUSH1 0xe0
00000bed: SHL
00000bee: PUSH1 0x00
00000bf0: MSTORE
00000bf1: PUSH1 0x11
00000bf3: PUSH1 0x04
00000bf5: MSTORE
00000bf6: PUSH1 0x24
00000bf8: PUSH1 0x00
00000bfa: REVERT
00000bfb: JUMPDEST
00000bfc: PUSH1 0x01
00000bfe: PUSH1 0x01
00000c00: PUSH1 0x80
00000c02: SHL
00000c03: SUB
00000c04: SWAP2
00000c05: DUP3
00000c06: AND
00000c07: SWAP1
00000c08: DUP3
00000c09: AND
00000c0a: SUB
00000c0b: SWAP2
00000c0c: SWAP1
00000c0d: DUP3
00000c0e: GT
00000c0f: PUSH2 0x0c14
00000c12: JUMPI
00000c13: JUMP
00000c14: JUMPDEST
00000c15: PUSH2 0x0be5
00000c18: JUMP
00000c19: JUMPDEST
00000c1a: CALLDATALOAD
00000c1b: PUSH2 0x0a0d
00000c1e: DUP2
00000c1f: PUSH2 0x0a35
00000c22: JUMP
00000c23: JUMPDEST
00000c24: SWAP2
00000c25: PUSH1 0x40
00000c27: SWAP2
00000c28: SWAP5
00000c29: SWAP4
00000c2a: PUSH1 0x01
00000c2c: PUSH1 0x01
00000c2e: PUSH1 0x80
00000c30: SHL
00000c31: SUB
00000c32: SWAP2
00000c33: PUSH2 0x0c40
00000c36: DUP6
00000c37: PUSH1 0x60
00000c39: DUP2
00000c3a: ADD
00000c3b: SWAP9
00000c3c: PUSH2 0x01cd
00000c3f: JUMP
00000c40: JUMPDEST
00000c41: PUSH1 0x01
00000c43: PUSH1 0x01
00000c45: PUSH1 0xa0
00000c47: SHL
00000c48: SUB
00000c49: AND
00000c4a: PUSH1 0x20
00000c4c: DUP6
00000c4d: ADD
00000c4e: MSTORE
00000c4f: AND
00000c50: SWAP2
00000c51: ADD
00000c52: MSTORE
00000c53: JUMP
00000c54: JUMPDEST
00000c55: PUSH1 0x40
00000c57: DUP1
00000c58: DUP3
00000c59: ADD
00000c5a: SWAP4
00000c5b: SWAP3
00000c5c: SWAP1
00000c5d: PUSH2 0x0c74
00000c60: PUSH2 0x0c68
00000c63: DUP7
00000c64: PUSH2 0x0a03
00000c67: JUMP
00000c68: JUMPDEST
00000c69: PUSH1 0x01
00000c6b: PUSH1 0x01
00000c6d: PUSH1 0xa0
00000c6f: SHL
00000c70: SUB
00000c71: AND
00000c72: SWAP1
00000c73: JUMP
00000c74: JUMPDEST
00000c75: DUP2
00000c76: MLOAD
00000c77: PUSH4 0x31a9108f
00000c7c: PUSH1 0xe1
00000c7e: SHL
00000c7f: DUP2
00000c80: MSTORE
00000c81: PUSH1 0x04
00000c83: DUP2
00000c84: ADD
00000c85: DUP5
00000c86: SWAP1
00000c87: MSTORE
00000c88: SWAP6
00000c89: SWAP1
00000c8a: PUSH1 0x20
00000c8c: SWAP1
00000c8d: DUP8
00000c8e: SWAP1
00000c8f: PUSH1 0x24
00000c91: SWAP1
00000c92: DUP3
00000c93: SWAP1
00000c94: GAS
00000c95: STATICCALL
00000c96: SWAP6
00000c97: DUP7
00000c98: ISZERO
00000c99: PUSH2 0x0665
00000c9c: JUMPI
00000c9d: PUSH1 0x00
00000c9f: SWAP7
00000ca0: PUSH2 0x0eb9
00000ca3: JUMPI
00000ca4: JUMPDEST
00000ca5: POP
00000ca6: PUSH1 0x01
00000ca8: PUSH1 0x01
00000caa: PUSH1 0xa0
00000cac: SHL
00000cad: SUB
00000cae: SWAP6
00000caf: DUP1
00000cb0: DUP8
00000cb1: AND
00000cb2: CALLER
00000cb3: SUB
00000cb4: PUSH2 0x0e89
00000cb7: JUMPI
00000cb8: POP
00000cb9: PUSH2 0x0cde
00000cbc: PUSH2 0x0cc4
00000cbf: DUP3
00000cc0: PUSH2 0x0a03
00000cc3: JUMP
00000cc4: JUMPDEST
00000cc5: PUSH1 0x01
00000cc7: PUSH1 0x01
00000cc9: PUSH1 0xa0
00000ccb: SHL
00000ccc: SUB
00000ccd: AND
00000cce: PUSH1 0x00
00000cd0: SWAP1
00000cd1: DUP2
00000cd2: MSTORE
00000cd3: PUSH1 0x02
00000cd5: PUSH1 0x20
00000cd7: MSTORE
00000cd8: PUSH1 0x40
00000cda: SWAP1
00000cdb: KECCAK256
00000cdc: SWAP1
00000cdd: JUMP
00000cde: JUMPDEST
00000cdf: SWAP6
00000ce0: PUSH2 0x0cf8
00000ce3: PUSH1 0x20
00000ce5: DUP7
00000ce6: ADD
00000ce7: CALLDATALOAD
00000ce8: DUP1
00000ce9: SWAP9
00000cea: SWAP1
00000ceb: PUSH1 0x00
00000ced: MSTORE
00000cee: PUSH1 0x20
00000cf0: MSTORE
00000cf1: PUSH1 0x40
00000cf3: PUSH1 0x00
00000cf5: KECCAK256
00000cf6: SWAP1
00000cf7: JUMP
00000cf8: JUMPDEST
00000cf9: SWAP7
00000cfa: DUP8
00000cfb: SLOAD
00000cfc: PUSH2 0x0d10
00000cff: PUSH2 0x0d08
00000d02: CALLDATASIZE
00000d03: DUP10
00000d04: PUSH2 0x0a77
00000d07: JUMP
00000d08: JUMPDEST
00000d09: PUSH2 0x0100
00000d0c: SWAP1
00000d0d: KECCAK256
00000d0e: SWAP1
00000d0f: JUMP
00000d10: JUMPDEST
00000d11: SUB
00000d12: PUSH2 0x0e6f
00000d15: JUMPI
00000d16: PUSH1 0x02
00000d18: DUP9
00000d19: ADD
00000d1a: SWAP1
00000d1b: PUSH2 0x0d38
00000d1e: PUSH2 0x0d31
00000d21: DUP8
00000d22: DUP5
00000d23: SWAP1
00000d24: PUSH1 0x00
00000d26: MSTORE
00000d27: PUSH1 0x20
00000d29: MSTORE
00000d2a: PUSH1 0x40
00000d2c: PUSH1 0x00
00000d2e: KECCAK256
00000d2f: SWAP1
00000d30: JUMP
00000d31: JUMPDEST
00000d32: SLOAD
00000d33: PUSH1 0xff
00000d35: AND
00000d36: SWAP1
00000d37: JUMP
00000d38: JUMPDEST
00000d39: PUSH2 0x0e4f
00000d3c: JUMPI
00000d3d: POP
00000d3e: PUSH2 0x0d54
00000d41: DUP6
00000d42: PUSH2 0x0d61
00000d45: SWAP3
00000d46: SWAP1
00000d47: PUSH1 0x00
00000d49: MSTORE
00000d4a: PUSH1 0x20
00000d4c: MSTORE
00000d4d: PUSH1 0x40
00000d4f: PUSH1 0x00
00000d51: KECCAK256
00000d52: SWAP1
00000d53: JUMP
00000d54: JUMPDEST
00000d55: DUP1
00000d56: SLOAD
00000d57: PUSH1 0xff
00000d59: NOT
00000d5a: AND
00000d5b: PUSH1 0x01
00000d5d: OR
00000d5e: SWAP1
00000d5f: SSTORE
00000d60: JUMP
00000d61: JUMPDEST
00000d62: PUSH1 0x01
00000d64: PUSH2 0x0d6d
00000d67: DUP6
00000d68: DUP8
00000d69: PUSH2 0x11ab
00000d6c: JUMP
00000d6d: JUMPDEST
00000d6e: SWAP8
00000d6f: ADD
00000d70: SWAP7
00000d71: PUSH2 0x0d81
00000d74: DUP9
00000d75: SLOAD
00000d76: PUSH1 0x01
00000d78: PUSH1 0x01
00000d7a: PUSH1 0x80
00000d7c: SHL
00000d7d: SUB
00000d7e: AND
00000d7f: SWAP1
00000d80: JUMP
00000d81: JUMPDEST
00000d82: SWAP3
00000d83: PUSH1 0x01
00000d85: PUSH1 0x01
00000d87: PUSH1 0x80
00000d89: SHL
00000d8a: SUB
00000d8b: SWAP2
00000d8c: DUP3
00000d8d: DUP6
00000d8e: AND
00000d8f: DUP2
00000d90: DUP5
00000d91: AND
00000d92: GT
00000d93: ISZERO
00000d94: PUSH2 0x0e47
00000d97: JUMPI
00000d98: POP
00000d99: DUP4
00000d9a: SWAP9
00000d9b: DUP10
00000d9c: SWAP5
00000d9d: JUMPDEST
00000d9e: DUP6
00000d9f: SWAP11
00000da0: PUSH2 0x0da8
00000da3: SWAP2
00000da4: PUSH2 0x0bfb
00000da7: JUMP
00000da8: JUMPDEST
00000da9: DUP2
00000daa: SLOAD
00000dab: PUSH16 0xffffffffffffffffffffffffffffffff
00000dbc: NOT
00000dbd: AND
00000dbe: PUSH1 0x01
00000dc0: PUSH1 0x01
00000dc2: PUSH1 0x80
00000dc4: SHL
00000dc5: SUB
00000dc6: SWAP1
00000dc7: SWAP2
00000dc8: AND
00000dc9: OR
00000dca: SWAP1
00000dcb: SSTORE
00000dcc: PUSH2 0x0dd4
00000dcf: DUP8
00000dd0: PUSH2 0x0c19
00000dd3: JUMP
00000dd4: JUMPDEST
00000dd5: PUSH1 0x80
00000dd7: DUP9
00000dd8: ADD
00000dd9: SWAP3
00000dda: PUSH2 0x0de2
00000ddd: DUP5
00000dde: PUSH2 0x0a03
00000de1: JUMP
00000de2: JUMPDEST
00000de3: SWAP1
00000de4: DUP7
00000de5: AND
00000de6: SWAP1
00000de7: CALLER
00000de8: SWAP1
00000de9: PUSH2 0x0df1
00000dec: SWAP4
00000ded: PUSH2 0x182b
00000df0: JUMP
00000df1: JUMPDEST
00000df2: PUSH2 0x0dfa
00000df5: SWAP1
00000df6: PUSH2 0x0a03
00000df9: JUMP
00000dfa: JUMPDEST
00000dfb: SWAP6
00000dfc: PUSH2 0x0e04
00000dff: SWAP1
00000e00: PUSH2 0x0c19
00000e03: JUMP
00000e04: JUMPDEST
00000e05: SWAP1
00000e06: PUSH2 0x0e0e
00000e09: SWAP1
00000e0a: PUSH2 0x0a03
00000e0d: JUMP
00000e0e: JUMPDEST
00000e0f: SWAP4
00000e10: MLOAD
00000e11: SWAP3
00000e12: DUP4
00000e13: SWAP3
00000e14: CALLER
00000e15: SWAP8
00000e16: AND
00000e17: SWAP5
00000e18: PUSH2 0x0e21
00000e1b: SWAP3
00000e1c: DUP5
00000e1d: PUSH2 0x0c23
00000e20: JUMP
00000e21: JUMPDEST
00000e22: SUB
00000e23: PUSH32 0x1ef0986161a82a71426dec04dd3ef55fbf8e44e3cfebccb087acb2f97839c05d
00000e44: SWAP2
00000e45: LOG4
00000e46: JUMP
00000e47: JUMPDEST
00000e48: SWAP9
00000e49: DUP10
00000e4a: SWAP5
00000e4b: PUSH2 0x0d9d
00000e4e: JUMP
00000e4f: JUMPDEST
00000e50: DUP5
00000e51: MLOAD
00000e52: PUSH4 0x671e4309
00000e57: PUSH1 0xe0
00000e59: SHL
00000e5a: DUP2
00000e5b: MSTORE
00000e5c: PUSH1 0x04
00000e5e: DUP2
00000e5f: ADD
00000e60: SWAP2
00000e61: SWAP1
00000e62: SWAP2
00000e63: MSTORE
00000e64: PUSH1 0x24
00000e66: DUP2
00000e67: ADD
00000e68: DUP7
00000e69: SWAP1
00000e6a: MSTORE
00000e6b: PUSH1 0x44
00000e6d: SWAP1
00000e6e: REVERT
00000e6f: JUMPDEST
00000e70: DUP4
00000e71: MLOAD
00000e72: PUSH4 0x7d21f895
00000e77: PUSH1 0xe0
00000e79: SHL
00000e7a: DUP2
00000e7b: MSTORE
00000e7c: DUP1
00000e7d: PUSH2 0x0631
00000e80: DUP9
00000e81: PUSH1 0x04
00000e83: DUP4
00000e84: ADD
00000e85: PUSH2 0x0b0f
00000e88: JUMP
00000e89: JUMPDEST
00000e8a: SWAP2
00000e8b: MLOAD
00000e8c: PUSH4 0x2a48cd05
00000e91: PUSH1 0xe0
00000e93: SHL
00000e94: DUP2
00000e95: MSTORE
00000e96: CALLER
00000e97: PUSH1 0x04
00000e99: DUP3
00000e9a: ADD
00000e9b: MSTORE
00000e9c: PUSH1 0x01
00000e9e: PUSH1 0x01
00000ea0: PUSH1 0xa0
00000ea2: SHL
00000ea3: SUB
00000ea4: SWAP1
00000ea5: SWAP3
00000ea6: AND
00000ea7: PUSH1 0x24
00000ea9: DUP4
00000eaa: ADD
00000eab: MSTORE
00000eac: POP
00000ead: PUSH1 0x44
00000eaf: DUP2
00000eb0: ADD
00000eb1: SWAP2
00000eb2: SWAP1
00000eb3: SWAP2
00000eb4: MSTORE
00000eb5: PUSH1 0x64
00000eb7: SWAP1
00000eb8: REVERT
00000eb9: JUMPDEST
00000eba: PUSH2 0x0ed2
00000ebd: SWAP2
00000ebe: SWAP7
00000ebf: POP
00000ec0: PUSH1 0x20
00000ec2: RETURNDATASIZE
00000ec3: DUP2
00000ec4: GT
00000ec5: PUSH2 0x065e
00000ec8: JUMPI
00000ec9: PUSH2 0x064f
00000ecc: DUP2
00000ecd: DUP4
00000ece: PUSH2 0x0962
00000ed1: JUMP
00000ed2: JUMPDEST
00000ed3: SWAP5
00000ed4: CODESIZE
00000ed5: PUSH2 0x0ca4
00000ed8: JUMP
00000ed9: JUMPDEST
00000eda: CALLDATALOAD
00000edb: PUSH2 0x0a0d
00000ede: DUP2
00000edf: PUSH2 0x0a3f
00000ee2: JUMP
00000ee3: JUMPDEST
00000ee4: PUSH1 0x40
00000ee6: DUP2
00000ee7: ADD
00000ee8: SWAP1
00000ee9: PUSH2 0x0ef4
00000eec: PUSH2 0x0cc4
00000eef: DUP4
00000ef0: PUSH2 0x0a03
00000ef3: JUMP
00000ef4: JUMPDEST
00000ef5: SWAP3
00000ef6: PUSH2 0x0f0e
00000ef9: PUSH1 0x20
00000efb: DUP4
00000efc: ADD
00000efd: CALLDATALOAD
00000efe: DUP1
00000eff: SWAP6
00000f00: SWAP1
00000f01: PUSH1 0x00
00000f03: MSTORE
00000f04: PUSH1 0x20
00000f06: MSTORE
00000f07: PUSH1 0x40
00000f09: PUSH1 0x00
00000f0b: KECCAK256
00000f0c: SWAP1
00000f0d: JUMP
00000f0e: JUMPDEST
00000f0f: SWAP3
00000f10: DUP4
00000f11: SLOAD
00000f12: PUSH2 0x0f1e
00000f15: PUSH2 0x0d08
00000f18: CALLDATASIZE
00000f19: DUP7
00000f1a: PUSH2 0x0a77
00000f1d: JUMP
00000f1e: JUMPDEST
00000f1f: SUB
00000f20: PUSH2 0x106f
00000f23: JUMPI
00000f24: PUSH1 0x60
00000f26: DUP4
00000f27: ADD
00000f28: SWAP5
00000f29: PUSH2 0x0f31
00000f2c: DUP7
00000f2d: PUSH2 0x0a03
00000f30: JUMP
00000f31: JUMPDEST
00000f32: PUSH1 0x01
00000f34: PUSH1 0x01
00000f36: PUSH1 0xa0
00000f38: SHL
00000f39: SUB
00000f3a: SWAP6
00000f3b: SWAP1
00000f3c: CALLER
00000f3d: SWAP1
00000f3e: DUP8
00000f3f: AND
00000f40: SUB
00000f41: PUSH2 0x1036
00000f44: JUMPI
00000f45: PUSH1 0x01
00000f47: ADD
00000f48: SWAP1
00000f49: PUSH2 0x0f57
00000f4c: DUP3
00000f4d: SLOAD
00000f4e: PUSH1 0xff
00000f50: SWAP1
00000f51: PUSH1 0x80
00000f53: SHR
00000f54: AND
00000f55: SWAP1
00000f56: JUMP
00000f57: JUMPDEST
00000f58: PUSH2 0x101c
00000f5b: JUMPI
00000f5c: POP
00000f5d: PUSH2 0x0fc4
00000f60: SWAP5
00000f61: SWAP3
00000f62: PUSH2 0x1005
00000f65: PUSH2 0x0fff
00000f68: PUSH2 0x0ff9
00000f6b: PUSH2 0x0ff3
00000f6e: PUSH2 0x0fed
00000f71: PUSH32 0x9ee811b8d470c07207b34bef36a0706a357a2e82032798c9bf96dd3d5b7f637c
00000f92: SWAP10
00000f93: SWAP8
00000f94: PUSH2 0x0fad
00000f97: PUSH2 0x1017
00000f9a: SWAP9
00000f9b: PUSH1 0x01
00000f9d: PUSH1 0x80
00000f9f: SHL
00000fa0: PUSH1 0xff
00000fa2: PUSH1 0x80
00000fa4: SHL
00000fa5: NOT
00000fa6: DUP3
00000fa7: SLOAD
00000fa8: AND
00000fa9: OR
00000faa: SWAP1
00000fab: SSTORE
00000fac: JUMP
00000fad: JUMPDEST
00000fae: PUSH2 0x0fe8
00000fb1: PUSH2 0x0fb9
00000fb4: DUP11
00000fb5: PUSH2 0x0c19
00000fb8: JUMP
00000fb9: JUMPDEST
00000fba: PUSH1 0x80
00000fbc: DUP12
00000fbd: ADD
00000fbe: SWAP14
00000fbf: DUP15
00000fc0: PUSH2 0x0a03
00000fc3: JUMP
00000fc4: JUMPDEST
00000fc5: SWAP9
00000fc6: PUSH1 0xc0
00000fc8: DUP13
00000fc9: ADD
00000fca: SWAP10
00000fcb: PUSH2 0x0fe2
00000fce: PUSH2 0x0fd6
00000fd1: DUP13
00000fd2: PUSH2 0x0ed9
00000fd5: JUMP
00000fd6: JUMPDEST
00000fd7: PUSH1 0x01
00000fd9: PUSH1 0x01
00000fdb: PUSH1 0x80
00000fdd: SHL
00000fde: SUB
00000fdf: AND
00000fe0: SWAP1
00000fe1: JUMP
00000fe2: JUMPDEST
00000fe3: SWAP3
00000fe4: PUSH2 0x182b
00000fe7: JUMP
00000fe8: JUMPDEST
00000fe9: PUSH2 0x0a03
00000fec: JUMP
00000fed: JUMPDEST
00000fee: SWAP11
00000fef: PUSH2 0x0a03
00000ff2: JUMP
00000ff3: JUMPDEST
00000ff4: SWAP6
00000ff5: PUSH2 0x0c19
00000ff8: JUMP
00000ff9: JUMPDEST
00000ffa: SWAP8
00000ffb: PUSH2 0x0a03
00000ffe: JUMP
00000fff: JUMPDEST
00001000: SWAP2
00001001: PUSH2 0x0ed9
00001004: JUMP
00001005: JUMPDEST
00001006: SWAP1
00001007: DUP5
00001008: PUSH1 0x40
0000100a: MLOAD
0000100b: SWAP6
0000100c: DUP7
0000100d: SWAP6
0000100e: AND
0000100f: SWAP9
00001010: AND
00001011: SWAP7
00001012: DUP5
00001013: PUSH2 0x0c23
00001016: JUMP
00001017: JUMPDEST
00001018: SUB
00001019: SWAP1
0000101a: LOG3
0000101b: JUMP
0000101c: JUMPDEST
0000101d: PUSH1 0x40
0000101f: MLOAD
00001020: PUSH4 0x08a63473
00001025: PUSH1 0xe1
00001027: SHL
00001028: DUP2
00001029: MSTORE
0000102a: PUSH1 0x04
0000102c: DUP2
0000102d: ADD
0000102e: SWAP2
0000102f: SWAP1
00001030: SWAP2
00001031: MSTORE
00001032: PUSH1 0x24
00001034: SWAP1
00001035: REVERT
00001036: JUMPDEST
00001037: PUSH2 0x0631
0000103a: PUSH2 0x1042
0000103d: DUP9
0000103e: PUSH2 0x0a03
00001041: JUMP
00001042: JUMPDEST
00001043: PUSH1 0x40
00001045: MLOAD
00001046: PUSH4 0x16fcee07
0000104b: PUSH1 0xe3
0000104d: SHL
0000104e: DUP2
0000104f: MSTORE
00001050: CALLER
00001051: PUSH1 0x04
00001053: DUP3
00001054: ADD
00001055: MSTORE
00001056: PUSH1 0x01
00001058: PUSH1 0x01
0000105a: PUSH1 0xa0
0000105c: SHL
0000105d: SUB
0000105e: SWAP1
0000105f: SWAP2
00001060: AND
00001061: PUSH1 0x24
00001063: DUP3
00001064: ADD
00001065: MSTORE
00001066: SWAP1
00001067: DUP2
00001068: SWAP1
00001069: PUSH1 0x44
0000106b: DUP3
0000106c: ADD
0000106d: SWAP1
0000106e: JUMP
0000106f: JUMPDEST
00001070: PUSH1 0x40
00001072: MLOAD
00001073: PUSH4 0x7d21f895
00001078: PUSH1 0xe0
0000107a: SHL
0000107b: DUP2
0000107c: MSTORE
0000107d: DUP1
0000107e: PUSH2 0x0631
00001081: DUP6
00001082: PUSH1 0x04
00001084: DUP4
00001085: ADD
00001086: PUSH2 0x0b0f
00001089: JUMP
0000108a: JUMPDEST
0000108b: PUSH8 0xffffffffffffffff
00001094: DUP2
00001095: GT
00001096: PUSH2 0x0924
00001099: JUMPI
0000109a: PUSH1 0x05
0000109c: SHL
0000109d: PUSH1 0x20
0000109f: ADD
000010a0: SWAP1
000010a1: JUMP
000010a2: JUMPDEST
000010a3: PUSH1 0x00
000010a5: NOT
000010a6: DUP2
000010a7: EQ
000010a8: PUSH2 0x0c14
000010ab: JUMPI
000010ac: PUSH1 0x01
000010ae: ADD
000010af: SWAP1
000010b0: JUMP
000010b1: JUMPDEST
000010b2: PUSH4 0x4e487b71
000010b7: PUSH1 0xe0
000010b9: SHL
000010ba: PUSH1 0x00
000010bc: MSTORE
000010bd: PUSH1 0x32
000010bf: PUSH1 0x04
000010c1: MSTORE
000010c2: PUSH1 0x24
000010c4: PUSH1 0x00
000010c6: REVERT
000010c7: JUMPDEST
000010c8: SWAP2
000010c9: SWAP1
000010ca: DUP2
000010cb: LT
000010cc: ISZERO
000010cd: PUSH2 0x0506
000010d0: JUMPI
000010d1: PUSH1 0x08
000010d3: SHL
000010d4: ADD
000010d5: SWAP1
000010d6: JUMP
000010d7: JUMPDEST
000010d8: SWAP2
000010d9: SWAP1
000010da: DUP2
000010db: LT
000010dc: ISZERO
000010dd: PUSH2 0x0506
000010e0: JUMPI
000010e1: PUSH1 0x05
000010e3: SHL
000010e4: ADD
000010e5: SWAP1
000010e6: JUMP
000010e7: JUMPDEST
000010e8: RETURNDATASIZE
000010e9: ISZERO
000010ea: PUSH2 0x1122
000010ed: JUMPI
000010ee: RETURNDATASIZE
000010ef: SWAP1
000010f0: PUSH8 0xffffffffffffffff
000010f9: DUP3
000010fa: GT
000010fb: PUSH2 0x0924
000010fe: JUMPI
000010ff: PUSH1 0x40
00001101: MLOAD
00001102: SWAP2
00001103: PUSH2 0x1116
00001106: PUSH1 0x1f
00001108: DUP3
00001109: ADD
0000110a: PUSH1 0x1f
0000110c: NOT
0000110d: AND
0000110e: PUSH1 0x20
00001110: ADD
00001111: DUP5
00001112: PUSH2 0x0962
00001115: JUMP
00001116: JUMPDEST
00001117: DUP3
00001118: MSTORE
00001119: RETURNDATASIZE
0000111a: PUSH1 0x00
0000111c: PUSH1 0x20
0000111e: DUP5
0000111f: ADD
00001120: RETURNDATACOPY
00001121: JUMP
00001122: JUMPDEST
00001123: PUSH1 0x60
00001125: SWAP1
00001126: JUMP
00001127: JUMPDEST
00001128: SWAP1
00001129: DUP2
0000112a: PUSH1 0x20
0000112c: SWAP2
0000112d: SUB
0000112e: SLT
0000112f: PUSH2 0x0139
00001132: JUMPI
00001133: MLOAD
00001134: PUSH2 0x0a0d
00001137: DUP2
00001138: PUSH2 0x01a1
0000113b: JUMP
0000113c: JUMPDEST
0000113d: SWAP1
0000113e: PUSH8 0x0de0b6b3a7640000
00001147: SWAP2
00001148: DUP3
00001149: DUP2
0000114a: MUL
0000114b: SWAP3
0000114c: DUP2
0000114d: DUP5
0000114e: DIV
0000114f: EQ
00001150: SWAP1
00001151: ISZERO
00001152: OR
00001153: ISZERO
00001154: PUSH2 0x0c14
00001157: JUMPI
00001158: JUMP
00001159: JUMPDEST
0000115a: DUP2
0000115b: DUP2
0000115c: MUL
0000115d: SWAP3
0000115e: SWAP2
0000115f: DUP2
00001160: ISZERO
00001161: SWAP2
00001162: DUP5
00001163: DIV
00001164: EQ
00001165: OR
00001166: ISZERO
00001167: PUSH2 0x0c14
0000116a: JUMPI
0000116b: JUMP
0000116c: JUMPDEST
0000116d: SWAP1
0000116e: PUSH8 0x0de0b6b3a763ffff
00001177: DUP3
00001178: ADD
00001179: DUP1
0000117a: SWAP3
0000117b: GT
0000117c: PUSH2 0x0c14
0000117f: JUMPI
00001180: JUMP
00001181: JUMPDEST
00001182: DUP2
00001183: ISZERO
00001184: PUSH2 0x118b
00001187: JUMPI
00001188: DIV
00001189: SWAP1
0000118a: JUMP
0000118b: JUMPDEST
0000118c: PUSH4 0x4e487b71
00001191: PUSH1 0xe0
00001193: SHL
00001194: PUSH1 0x00
00001196: MSTORE
00001197: PUSH1 0x12
00001199: PUSH1 0x04
0000119b: MSTORE
0000119c: PUSH1 0x24
0000119e: PUSH1 0x00
000011a0: REVERT
000011a1: JUMPDEST
000011a2: CALLDATALOAD
000011a3: PUSH2 0x0a0d
000011a6: DUP2
000011a7: PUSH2 0x0a5b
000011aa: JUMP
000011ab: JUMPDEST
000011ac: PUSH1 0x40
000011ae: DUP2
000011af: ADD
000011b0: SWAP2
000011b1: PUSH2 0x11bc
000011b4: PUSH2 0x0c68
000011b7: DUP5
000011b8: PUSH2 0x0a03
000011bb: JUMP
000011bc: JUMPDEST
000011bd: SWAP3
000011be: PUSH1 0x40
000011c0: MLOAD
000011c1: SWAP4
000011c2: PUSH1 0x00
000011c4: DUP1
000011c5: PUSH1 0x20
000011c7: SWAP7
000011c8: DUP8
000011c9: DUP2
000011ca: ADD
000011cb: SWAP1
000011cc: PUSH4 0x663dce83
000011d1: PUSH1 0xe1
000011d3: SHL
000011d4: DUP3
000011d5: MSTORE
000011d6: PUSH1 0x04
000011d8: DUP2
000011d9: MSTORE
000011da: PUSH2 0x11e2
000011dd: DUP2
000011de: PUSH2 0x0946
000011e1: JUMP
000011e2: JUMPDEST
000011e3: MLOAD
000011e4: SWAP1
000011e5: DUP5
000011e6: GAS
000011e7: STATICCALL
000011e8: PUSH2 0x11ef
000011eb: PUSH2 0x10e7
000011ee: JUMP
000011ef: JUMPDEST
000011f0: DUP2
000011f1: PUSH2 0x1344
000011f4: JUMPI
000011f5: JUMPDEST
000011f6: POP
000011f7: ISZERO
000011f8: PUSH2 0x12c9
000011fb: JUMPI
000011fc: POP
000011fd: SWAP3
000011fe: DUP1
000011ff: SWAP2
00001200: PUSH2 0x120f
00001203: PUSH2 0x0c68
00001206: PUSH2 0x122f
00001209: SWAP6
0000120a: SWAP7
0000120b: PUSH2 0x0a03
0000120e: JUMP
0000120f: JUMPDEST
00001210: PUSH1 0x40
00001212: MLOAD
00001213: DUP1
00001214: DUP1
00001215: SWAP7
00001216: DUP2
00001217: SWAP5
00001218: PUSH4 0x1e33eaeb
0000121d: PUSH1 0xe2
0000121f: SHL
00001220: DUP4
00001221: MSTORE
00001222: PUSH1 0x04
00001224: DUP4
00001225: ADD
00001226: SWAP2
00001227: SWAP1
00001228: PUSH1 0x20
0000122a: DUP4
0000122b: ADD
0000122c: SWAP3
0000122d: MSTORE
0000122e: JUMP
0000122f: JUMPDEST
00001230: SUB
00001231: SWAP2
00001232: GAS
00001233: STATICCALL
00001234: DUP1
00001235: ISZERO
00001236: PUSH2 0x0665
00001239: JUMPI
0000123a: PUSH2 0x0a0d
0000123d: SWAP4
0000123e: PUSH2 0x128e
00001241: PUSH2 0x0fd6
00001244: PUSH1 0xa0
00001246: PUSH2 0x1287
00001249: PUSH2 0x1266
0000124c: PUSH2 0x1294
0000124f: SWAP7
00001250: PUSH2 0x12a7
00001253: SWAP10
00001254: PUSH2 0x1299
00001257: SWAP10
00001258: PUSH1 0x00
0000125a: SWAP3
0000125b: PUSH2 0x12ac
0000125e: JUMPI
0000125f: JUMPDEST
00001260: POP
00001261: POP
00001262: PUSH2 0x113c
00001265: JUMP
00001266: JUMPDEST
00001267: PUSH2 0x1281
0000126a: PUSH2 0x1275
0000126d: PUSH1 0xe0
0000126f: DUP9
00001270: ADD
00001271: PUSH2 0x11a1
00001274: JUMP
00001275: JUMPDEST
00001276: PUSH1 0x01
00001278: PUSH1 0x01
0000127a: PUSH1 0x60
0000127c: SHL
0000127d: SUB
0000127e: AND
0000127f: SWAP1
00001280: JUMP
00001281: JUMPDEST
00001282: SWAP1
00001283: PUSH2 0x1181
00001286: JUMP
00001287: JUMPDEST
00001288: SWAP4
00001289: ADD
0000128a: PUSH2 0x0ed9
0000128d: JUMP
0000128e: JUMPDEST
0000128f: SWAP1
00001290: PUSH2 0x1159
00001293: JUMP
00001294: JUMPDEST
00001295: PUSH2 0x116c
00001298: JUMP
00001299: JUMPDEST
0000129a: PUSH8 0x0de0b6b3a7640000
000012a3: SWAP1
000012a4: DIV
000012a5: SWAP1
000012a6: JUMP
000012a7: JUMPDEST
000012a8: PUSH2 0x1a7e
000012ab: JUMP
000012ac: JUMPDEST
000012ad: PUSH2 0x12c2
000012b0: SWAP3
000012b1: POP
000012b2: DUP1
000012b3: RETURNDATASIZE
000012b4: LT
000012b5: PUSH2 0x08eb
000012b8: JUMPI
000012b9: PUSH2 0x08dc
000012bc: DUP2
000012bd: DUP4
000012be: PUSH2 0x0962
000012c1: JUMP
000012c2: JUMPDEST
000012c3: CODESIZE
000012c4: DUP1
000012c5: PUSH2 0x125f
000012c8: JUMP
000012c9: JUMPDEST
000012ca: PUSH1 0x40
000012cc: MLOAD
000012cd: PUSH4 0x1e33eaeb
000012d2: PUSH1 0xe2
000012d4: SHL
000012d5: DUP2
000012d6: MSTORE
000012d7: PUSH1 0x04
000012d9: DUP2
000012da: ADD
000012db: SWAP4
000012dc: SWAP1
000012dd: SWAP4
000012de: MSTORE
000012df: DUP5
000012e0: SWAP2
000012e1: POP
000012e2: DUP3
000012e3: SWAP1
000012e4: PUSH1 0x24
000012e6: SWAP1
000012e7: DUP3
000012e8: SWAP1
000012e9: GAS
000012ea: STATICCALL
000012eb: SWAP3
000012ec: DUP4
000012ed: ISZERO
000012ee: PUSH2 0x0665
000012f1: JUMPI
000012f2: PUSH2 0x0a0d
000012f5: SWAP4
000012f6: PUSH2 0x12a7
000012f9: SWAP4
000012fa: PUSH2 0x1299
000012fd: SWAP4
000012fe: PUSH2 0x1294
00001301: SWAP4
00001302: PUSH1 0x00
00001304: SWAP4
00001305: PUSH2 0x131a
00001308: JUMPI
00001309: JUMPDEST
0000130a: POP
0000130b: POP
0000130c: PUSH2 0x0fd6
0000130f: PUSH1 0xa0
00001311: PUSH2 0x128e
00001314: SWAP3
00001315: ADD
00001316: PUSH2 0x0ed9
00001319: JUMP
0000131a: JUMPDEST
0000131b: PUSH2 0x128e
0000131e: SWAP3
0000131f: SWAP4
00001320: POP
00001321: PUSH2 0x133c
00001324: PUSH2 0x0fd6
00001327: SWAP3
00001328: DUP3
00001329: PUSH1 0xa0
0000132b: SWAP4
0000132c: SWAP1
0000132d: RETURNDATASIZE
0000132e: LT
0000132f: PUSH2 0x08eb
00001332: JUMPI
00001333: PUSH2 0x08dc
00001336: DUP2
00001337: DUP4
00001338: PUSH2 0x0962
0000133b: JUMP
0000133c: JUMPDEST
0000133d: SWAP4
0000133e: SWAP3
0000133f: POP
00001340: PUSH2 0x1309
00001343: JUMP
00001344: JUMPDEST
00001345: PUSH1 0x01
00001347: SWAP2
00001348: POP
00001349: PUSH2 0x135d
0000134c: DUP2
0000134d: DUP9
0000134e: DUP1
0000134f: PUSH2 0xffff
00001352: SWAP5
00001353: MLOAD
00001354: DUP4
00001355: ADD
00001356: ADD
00001357: SWAP2
00001358: ADD
00001359: PUSH2 0x1127
0000135c: JUMP
0000135d: JUMPDEST
0000135e: AND
0000135f: LT
00001360: ISZERO
00001361: CODESIZE
00001362: PUSH2 0x11f5
00001365: JUMP
00001366: JUMPDEST
00001367: SWAP1
00001368: SWAP2
00001369: PUSH5 0xffffffffff
0000136f: PUSH32 0x00000000000000000000000000000000000000000000000000000000666b190b
00001390: AND
00001391: TIMESTAMP
00001392: GT
00001393: PUSH2 0x1424
00001396: JUMPI
00001397: PUSH1 0x00
00001399: DUP1
0000139a: PUSH1 0x40
0000139c: MLOAD
0000139d: DUP4
0000139e: DUP7
0000139f: DUP3
000013a0: CALLDATACOPY
000013a1: DUP1
000013a2: DUP5
000013a3: DUP2
000013a4: ADD
000013a5: DUP4
000013a6: DUP2
000013a7: MSTORE
000013a8: SUB
000013a9: SWAP1
000013aa: DUP6
000013ab: GAS
000013ac: DELEGATECALL
000013ad: PUSH2 0x13b4
000013b0: PUSH2 0x10e7
000013b3: JUMP
000013b4: JUMPDEST
000013b5: SWAP1
000013b6: ISZERO
000013b7: PUSH2 0x141c
000013ba: JUMPI
000013bb: POP
000013bc: PUSH1 0x40
000013be: DUP1
000013bf: MLOAD
000013c0: PUSH1 0x01
000013c2: PUSH1 0x01
000013c4: PUSH1 0xa0
000013c6: SHL
000013c7: SUB
000013c8: SWAP1
000013c9: SWAP4
000013ca: AND
000013cb: DUP4
000013cc: MSTORE
000013cd: PUSH1 0x20
000013cf: DUP4
000013d0: ADD
000013d1: DUP2
000013d2: SWAP1
000013d3: MSTORE
000013d4: DUP3
000013d5: ADD
000013d6: DUP2
000013d7: SWAP1
000013d8: MSTORE
000013d9: PUSH32 0x14558cdd2442ce65f94cbb821f6ab6b96098fb84a9b0e73fb770ecf12402823c
000013fa: SWAP3
000013fb: PUSH1 0x60
000013fd: SWAP2
000013fe: DUP4
000013ff: SWAP2
00001400: DUP2
00001401: SWAP1
00001402: DUP4
00001403: DUP6
00001404: ADD
00001405: CALLDATACOPY
00001406: PUSH1 0x00
00001408: DUP3
00001409: DUP3
0000140a: ADD
0000140b: DUP5
0000140c: ADD
0000140d: MSTORE
0000140e: PUSH1 0x1f
00001410: ADD
00001411: PUSH1 0x1f
00001413: NOT
00001414: AND
00001415: DUP2
00001416: ADD
00001417: SUB
00001418: ADD
00001419: SWAP1
0000141a: LOG1
0000141b: JUMP
0000141c: JUMPDEST
0000141d: PUSH1 0x20
0000141f: DUP2
00001420: MLOAD
00001421: SWAP2
00001422: ADD
00001423: REVERT
00001424: JUMPDEST
00001425: PUSH1 0x40
00001427: MLOAD
00001428: PUSH4 0x024780c7
0000142d: PUSH1 0xe1
0000142f: SHL
00001430: DUP2
00001431: MSTORE
00001432: PUSH1 0x04
00001434: SWAP1
00001435: REVERT
00001436: JUMPDEST
00001437: SWAP2
00001438: SWAP1
00001439: DUP3
0000143a: SUB
0000143b: SWAP2
0000143c: DUP3
0000143d: GT
0000143e: PUSH2 0x0c14
00001441: JUMPI
00001442: JUMP
00001443: JUMPDEST
00001444: SWAP2
00001445: SWAP1
00001446: SWAP2
00001447: PUSH1 0x01
00001449: PUSH1 0x01
0000144b: PUSH1 0x80
0000144d: SHL
0000144e: SUB
0000144f: DUP1
00001450: DUP1
00001451: SWAP5
00001452: AND
00001453: SWAP2
00001454: AND
00001455: MUL
00001456: SWAP2
00001457: DUP3
00001458: AND
00001459: SWAP2
0000145a: DUP3
0000145b: SUB
0000145c: PUSH2 0x0c14
0000145f: JUMPI
00001460: JUMP
00001461: JUMPDEST
00001462: MLOAD
00001463: SWAP1
00001464: PUSH5 0xffffffffff
0000146a: DUP3
0000146b: AND
0000146c: DUP3
0000146d: SUB
0000146e: PUSH2 0x0139
00001471: JUMPI
00001472: JUMP
00001473: JUMPDEST
00001474: SWAP1
00001475: DUP2
00001476: PUSH1 0x80
00001478: SWAP2
00001479: SUB
0000147a: SLT
0000147b: PUSH2 0x0139
0000147e: JUMPI
0000147f: PUSH1 0x40
00001481: MLOAD
00001482: SWAP1
00001483: PUSH1 0x80
00001485: DUP3
00001486: ADD
00001487: SWAP1
00001488: DUP3
00001489: DUP3
0000148a: LT
0000148b: PUSH8 0xffffffffffffffff
00001494: DUP4
00001495: GT
00001496: OR
00001497: PUSH2 0x0924
0000149a: JUMPI
0000149b: PUSH1 0x60
0000149d: SWAP2
0000149e: PUSH1 0x40
000014a0: MSTORE
000014a1: PUSH2 0x14a9
000014a4: DUP2
000014a5: PUSH2 0x1461
000014a8: JUMP
000014a9: JUMPDEST
000014aa: DUP4
000014ab: MSTORE
000014ac: PUSH2 0x14b7
000014af: PUSH1 0x20
000014b1: DUP3
000014b2: ADD
000014b3: PUSH2 0x1461
000014b6: JUMP
000014b7: JUMPDEST
000014b8: PUSH1 0x20
000014ba: DUP5
000014bb: ADD
000014bc: MSTORE
000014bd: PUSH1 0x40
000014bf: DUP2
000014c0: ADD
000014c1: MLOAD
000014c2: PUSH2 0x14ca
000014c5: DUP2
000014c6: PUSH2 0x01a1
000014c9: JUMP
000014ca: JUMPDEST
000014cb: PUSH1 0x40
000014cd: DUP5
000014ce: ADD
000014cf: MSTORE
000014d0: ADD
000014d1: MLOAD
000014d2: PUSH2 0x14da
000014d5: DUP2
000014d6: PUSH2 0x0a5b
000014d9: JUMP
000014da: JUMPDEST
000014db: PUSH1 0x60
000014dd: DUP3
000014de: ADD
000014df: MSTORE
000014e0: SWAP1
000014e1: JUMP
000014e2: JUMPDEST
000014e3: SWAP1
000014e4: PUSH2 0x14eb
000014e7: PUSH2 0x099e
000014ea: JUMP
000014eb: JUMPDEST
000014ec: POP
000014ed: PUSH1 0xa0
000014ef: DUP3
000014f0: ADD
000014f1: DUP1
000014f2: MLOAD
000014f3: PUSH2 0xffff
000014f6: AND
000014f7: PUSH2 0x2710
000014fa: DUP2
000014fb: GT
000014fc: PUSH2 0x17f0
000014ff: JUMPI
00001500: POP
00001501: PUSH1 0x20
00001503: DUP4
00001504: ADD
00001505: SWAP3
00001506: DUP4
00001507: MLOAD
00001508: SWAP4
00001509: PUSH2 0x1511
0000150c: DUP6
0000150d: PUSH2 0x01ad
00001510: JUMP
00001511: JUMPDEST
00001512: PUSH1 0x40
00001514: DUP3
00001515: ADD
00001516: DUP1
00001517: MLOAD
00001518: SWAP1
00001519: SWAP6
0000151a: PUSH2 0x152c
0000151d: SWAP2
0000151e: PUSH1 0x01
00001520: PUSH1 0x01
00001522: PUSH1 0xa0
00001524: SHL
00001525: SUB
00001526: AND
00001527: SWAP1
00001528: PUSH2 0x18b1
0000152b: JUMP
0000152c: JUMPDEST
0000152d: SWAP3
0000152e: PUSH1 0x60
00001530: DUP4
00001531: ADD
00001532: SWAP4
00001533: PUSH2 0x1555
00001536: PUSH2 0x12a7
00001539: DUP7
0000153a: MLOAD
0000153b: PUSH2 0x154e
0000153e: DUP5
0000153f: PUSH1 0x00
00001541: MSTORE
00001542: PUSH1 0x01
00001544: PUSH1 0x20
00001546: MSTORE
00001547: PUSH1 0x40
00001549: PUSH1 0x00
0000154b: KECCAK256
0000154c: SWAP1
0000154d: JUMP
0000154e: JUMPDEST
0000154f: SLOAD
00001550: SWAP1
00001551: PUSH2 0x1436
00001554: JUMP
00001555: JUMPDEST
00001556: SWAP5
00001557: PUSH1 0x01
00001559: PUSH1 0x01
0000155b: PUSH1 0x80
0000155d: SHL
0000155e: SUB
0000155f: DUP7
00001560: AND
00001561: ISZERO
00001562: PUSH2 0x17cf
00001565: JUMPI
00001566: PUSH2 0x159c
00001569: PUSH2 0x1595
0000156c: PUSH2 0x15ba
0000156f: SWAP5
00001570: PUSH2 0x15b3
00001573: SWAP5
00001574: PUSH2 0x158c
00001577: PUSH2 0x15a2
0000157a: SWAP6
0000157b: MLOAD
0000157c: SWAP2
0000157d: PUSH1 0x00
0000157f: MSTORE
00001580: PUSH1 0x01
00001582: PUSH1 0x20
00001584: MSTORE
00001585: PUSH1 0x40
00001587: PUSH1 0x00
00001589: KECCAK256
0000158a: SWAP1
0000158b: JUMP
0000158c: JUMPDEST
0000158d: SSTORE
0000158e: MLOAD
0000158f: PUSH2 0xffff
00001592: AND
00001593: SWAP1
00001594: JUMP
00001595: JUMPDEST
00001596: PUSH2 0xffff
00001599: AND
0000159a: SWAP1
0000159b: JUMP
0000159c: JUMPDEST
0000159d: DUP7
0000159e: PUSH2 0x1443
000015a1: JUMP
000015a2: JUMPDEST
000015a3: PUSH1 0x01
000015a5: PUSH1 0x01
000015a7: PUSH1 0x80
000015a9: SHL
000015aa: SUB
000015ab: PUSH2 0x2710
000015ae: SWAP2
000015af: AND
000015b0: DIV
000015b1: SWAP1
000015b2: JUMP
000015b3: JUMPDEST
000015b4: DUP1
000015b5: SWAP5
000015b6: PUSH2 0x0bfb
000015b9: JUMP
000015ba: JUMPDEST
000015bb: SWAP1
000015bc: MLOAD
000015bd: SWAP3
000015be: PUSH2 0x15c6
000015c1: DUP5
000015c2: PUSH2 0x01ad
000015c5: JUMP
000015c6: JUMPDEST
000015c7: DUP3
000015c8: MLOAD
000015c9: PUSH1 0x01
000015cb: PUSH1 0x01
000015cd: PUSH1 0xa0
000015cf: SHL
000015d0: SUB
000015d1: AND
000015d2: PUSH1 0x00
000015d4: SWAP1
000015d5: DUP2
000015d6: MSTORE
000015d7: PUSH1 0x20
000015d9: DUP2
000015da: SWAP1
000015db: MSTORE
000015dc: PUSH1 0x40
000015de: SWAP1
000015df: KECCAK256
000015e0: PUSH2 0x15ff
000015e3: SWAP1
000015e4: SWAP7
000015e5: PUSH2 0x15ee
000015e8: DUP9
000015e9: SLOAD
000015ea: PUSH2 0x10a2
000015ed: JUMP
000015ee: JUMPDEST
000015ef: SWAP8
000015f0: DUP9
000015f1: SWAP1
000015f2: SSTORE
000015f3: MLOAD
000015f4: PUSH1 0x01
000015f6: PUSH1 0x01
000015f8: PUSH1 0xa0
000015fa: SHL
000015fb: SUB
000015fc: AND
000015fd: SWAP1
000015fe: JUMP
000015ff: JUMPDEST
00001600: DUP4
00001601: MLOAD
00001602: SWAP1
00001603: SWAP2
00001604: SWAP1
00001605: PUSH1 0x01
00001607: PUSH1 0x01
00001609: PUSH1 0xa0
0000160b: SHL
0000160c: SUB
0000160d: AND
0000160e: PUSH1 0x80
00001610: DUP6
00001611: ADD
00001612: MLOAD
00001613: SWAP1
00001614: SWAP3
00001615: SWAP1
00001616: PUSH1 0x01
00001618: PUSH1 0x01
0000161a: PUSH1 0xa0
0000161c: SHL
0000161d: SUB
0000161e: AND
0000161f: PUSH1 0x40
00001621: MLOAD
00001622: PUSH4 0x59012077
00001627: PUSH1 0xe1
00001629: SHL
0000162a: DUP2
0000162b: MSTORE
0000162c: PUSH1 0x80
0000162e: DUP2
0000162f: PUSH1 0x04
00001631: DUP2
00001632: PUSH1 0x01
00001634: PUSH1 0x01
00001636: PUSH1 0xa0
00001638: SHL
00001639: SUB
0000163a: DUP10
0000163b: AND
0000163c: GAS
0000163d: STATICCALL
0000163e: DUP1
0000163f: ISZERO
00001640: PUSH2 0x0665
00001643: JUMPI
00001644: PUSH1 0x60
00001646: SWAP2
00001647: PUSH1 0x00
00001649: SWAP2
0000164a: PUSH2 0x17a1
0000164d: JUMPI
0000164e: JUMPDEST
0000164f: POP
00001650: ADD
00001651: MLOAD
00001652: PUSH1 0x01
00001654: PUSH1 0x01
00001656: PUSH1 0x60
00001658: SHL
00001659: SUB
0000165a: AND
0000165b: SWAP4
0000165c: PUSH2 0x1663
0000165f: PUSH2 0x0991
00001662: JUMP
00001663: JUMPDEST
00001664: SWAP8
00001665: PUSH2 0x166e
00001668: SWAP1
00001669: DUP10
0000166a: PUSH2 0x09dc
0000166d: JUMP
0000166e: JUMPDEST
0000166f: PUSH1 0x20
00001671: DUP9
00001672: ADD
00001673: SWAP10
00001674: DUP11
00001675: MSTORE
00001676: PUSH1 0x01
00001678: PUSH1 0x01
0000167a: PUSH1 0xa0
0000167c: SHL
0000167d: SUB
0000167e: AND
0000167f: PUSH1 0x40
00001681: DUP9
00001682: ADD
00001683: MSTORE
00001684: PUSH1 0x01
00001686: PUSH1 0x01
00001688: PUSH1 0xa0
0000168a: SHL
0000168b: SUB
0000168c: AND
0000168d: PUSH1 0x60
0000168f: DUP8
00001690: ADD
00001691: MSTORE
00001692: PUSH1 0x01
00001694: PUSH1 0x01
00001696: PUSH1 0xa0
00001698: SHL
00001699: SUB
0000169a: AND
0000169b: PUSH1 0x80
0000169d: DUP7
0000169e: ADD
0000169f: MSTORE
000016a0: PUSH1 0x01
000016a2: PUSH1 0x01
000016a4: PUSH1 0x80
000016a6: SHL
000016a7: SUB
000016a8: DUP4
000016a9: AND
000016aa: PUSH1 0xa0
000016ac: DUP7
000016ad: ADD
000016ae: MSTORE
000016af: PUSH1 0x01
000016b1: PUSH1 0x01
000016b3: PUSH1 0x80
000016b5: SHL
000016b6: SUB
000016b7: AND
000016b8: PUSH1 0xc0
000016ba: DUP6
000016bb: ADD
000016bc: MSTORE
000016bd: PUSH1 0x01
000016bf: PUSH1 0x01
000016c1: PUSH1 0x60
000016c3: SHL
000016c4: SUB
000016c5: AND
000016c6: PUSH1 0xe0
000016c8: DUP5
000016c9: ADD
000016ca: MSTORE
000016cb: PUSH2 0x0100
000016ce: DUP4
000016cf: KECCAK256
000016d0: DUP3
000016d1: MLOAD
000016d2: SWAP4
000016d3: SWAP6
000016d4: DUP7
000016d5: SWAP5
000016d6: SWAP2
000016d7: SWAP3
000016d8: SWAP1
000016d9: SWAP2
000016da: PUSH1 0x01
000016dc: PUSH1 0x01
000016de: PUSH1 0xa0
000016e0: SHL
000016e1: SUB
000016e2: AND
000016e3: PUSH1 0x01
000016e5: PUSH1 0x01
000016e7: PUSH1 0xa0
000016e9: SHL
000016ea: SUB
000016eb: AND
000016ec: PUSH1 0x00
000016ee: SWAP1
000016ef: DUP2
000016f0: MSTORE
000016f1: PUSH1 0x02
000016f3: PUSH1 0x20
000016f5: MSTORE
000016f6: PUSH1 0x40
000016f8: SWAP1
000016f9: KECCAK256
000016fa: DUP3
000016fb: MLOAD
000016fc: PUSH2 0x170e
000016ff: SWAP2
00001700: SWAP1
00001701: PUSH1 0x00
00001703: MSTORE
00001704: PUSH1 0x20
00001706: MSTORE
00001707: PUSH1 0x40
00001709: PUSH1 0x00
0000170b: KECCAK256
0000170c: SWAP1
0000170d: JUMP
0000170e: JUMPDEST
0000170f: DUP5
00001710: MLOAD
00001711: PUSH1 0x01
00001713: PUSH1 0x01
00001715: PUSH1 0xa0
00001717: SHL
00001718: SUB
00001719: AND
0000171a: PUSH1 0x00
0000171c: SWAP1
0000171d: DUP2
0000171e: MSTORE
0000171f: PUSH1 0x02
00001721: PUSH1 0x20
00001723: SWAP1
00001724: DUP2
00001725: MSTORE
00001726: PUSH1 0x40
00001728: DUP1
00001729: DUP4
0000172a: KECCAK256
0000172b: SWAP6
0000172c: MLOAD
0000172d: DUP4
0000172e: MSTORE
0000172f: SWAP5
00001730: SWAP1
00001731: MSTORE
00001732: SWAP3
00001733: SWAP1
00001734: SWAP3
00001735: KECCAK256
00001736: PUSH1 0x01
00001738: ADD
00001739: SWAP1
0000173a: PUSH2 0x1758
0000173d: SWAP2
0000173e: SWAP1
0000173f: PUSH1 0x01
00001741: PUSH1 0x01
00001743: PUSH1 0x80
00001745: SHL
00001746: SUB
00001747: AND
00001748: PUSH1 0x01
0000174a: PUSH1 0x01
0000174c: PUSH1 0x80
0000174e: SHL
0000174f: SUB
00001750: NOT
00001751: DUP3
00001752: SLOAD
00001753: AND
00001754: OR
00001755: SWAP1
00001756: SSTORE
00001757: JUMP
00001758: JUMPDEST
00001759: SSTORE
0000175a: MLOAD
0000175b: PUSH1 0x01
0000175d: PUSH1 0x01
0000175f: PUSH1 0xa0
00001761: SHL
00001762: SUB
00001763: AND
00001764: PUSH1 0x01
00001766: PUSH1 0x01
00001768: PUSH1 0xa0
0000176a: SHL
0000176b: SUB
0000176c: AND
0000176d: SWAP1
0000176e: PUSH1 0x40
00001770: MLOAD
00001771: PUSH2 0x177b
00001774: DUP2
00001775: SWAP3
00001776: DUP3
00001777: PUSH2 0x01da
0000177a: JUMP
0000177b: JUMPDEST
0000177c: SUB
0000177d: PUSH32 0xaad37e6445e4886d31aad66580be3aef14d33b5d09551ccb6cd6560d3ad95061
0000179e: SWAP2
0000179f: LOG2
000017a0: JUMP
000017a1: JUMPDEST
000017a2: PUSH2 0x17c2
000017a5: SWAP2
000017a6: POP
000017a7: PUSH1 0x80
000017a9: RETURNDATASIZE
000017aa: DUP2
000017ab: GT
000017ac: PUSH2 0x17c8
000017af: JUMPI
000017b0: JUMPDEST
000017b1: PUSH2 0x17ba
000017b4: DUP2
000017b5: DUP4
000017b6: PUSH2 0x0962
000017b9: JUMP
000017ba: JUMPDEST
000017bb: DUP2
000017bc: ADD
000017bd: SWAP1
000017be: PUSH2 0x1473
000017c1: JUMP
000017c2: JUMPDEST
000017c3: CODESIZE
000017c4: PUSH2 0x164e
000017c7: JUMP
000017c8: JUMPDEST
000017c9: POP
000017ca: RETURNDATASIZE
000017cb: PUSH2 0x17b0
000017ce: JUMP
000017cf: JUMPDEST
000017d0: PUSH1 0x40
000017d2: MLOAD
000017d3: PUSH4 0x971d978d
000017d8: PUSH1 0xe0
000017da: SHL
000017db: DUP2
000017dc: MSTORE
000017dd: PUSH1 0x01
000017df: PUSH1 0x01
000017e1: PUSH1 0x80
000017e3: SHL
000017e4: SUB
000017e5: DUP8
000017e6: AND
000017e7: PUSH1 0x04
000017e9: DUP3
000017ea: ADD
000017eb: MSTORE
000017ec: PUSH1 0x24
000017ee: SWAP1
000017ef: REVERT
000017f0: JUMPDEST
000017f1: PUSH1 0x40
000017f3: MLOAD
000017f4: PUSH4 0x1c5d6947
000017f9: PUSH1 0xe2
000017fb: SHL
000017fc: DUP2
000017fd: MSTORE
000017fe: PUSH2 0xffff
00001801: SWAP2
00001802: SWAP1
00001803: SWAP2
00001804: AND
00001805: PUSH1 0x04
00001807: DUP3
00001808: ADD
00001809: MSTORE
0000180a: PUSH1 0x24
0000180c: SWAP1
0000180d: REVERT
0000180e: JUMPDEST
0000180f: ISZERO
00001810: PUSH2 0x1815
00001813: JUMPI
00001814: JUMP
00001815: JUMPDEST
00001816: PUSH4 0x4e487b71
0000181b: PUSH1 0xe0
0000181d: SHL
0000181e: PUSH1 0x00
00001820: MSTORE
00001821: PUSH1 0x01
00001823: PUSH1 0x04
00001825: MSTORE
00001826: PUSH1 0x24
00001828: PUSH1 0x00
0000182a: REVERT
0000182b: JUMPDEST
0000182c: SWAP2
0000182d: SWAP3
0000182e: SWAP1
0000182f: SWAP3
00001830: PUSH2 0x1839
00001833: DUP5
00001834: DUP5
00001835: PUSH2 0x18b1
00001838: JUMP
00001839: JUMPDEST
0000183a: SWAP2
0000183b: DUP3
0000183c: PUSH1 0x00
0000183e: MSTORE
0000183f: PUSH1 0x01
00001841: PUSH1 0x20
00001843: MSTORE
00001844: PUSH1 0x40
00001846: PUSH1 0x00
00001848: KECCAK256
00001849: SLOAD
0000184a: SWAP5
0000184b: DUP2
0000184c: DUP7
0000184d: SUB
0000184e: SWAP6
0000184f: DUP7
00001850: GT
00001851: PUSH2 0x0c14
00001854: JUMPI
00001855: PUSH2 0x1883
00001858: SWAP5
00001859: DUP5
0000185a: PUSH1 0x00
0000185c: MSTORE
0000185d: PUSH1 0x01
0000185f: PUSH1 0x20
00001861: MSTORE
00001862: PUSH1 0x00
00001864: NOT
00001865: PUSH1 0x40
00001867: PUSH1 0x00
00001869: KECCAK256
0000186a: SSTORE
0000186b: PUSH2 0x1873
0000186e: DUP2
0000186f: PUSH2 0x01ad
00001872: JUMP
00001873: JUMPDEST
00001874: DUP1
00001875: PUSH2 0x1886
00001878: JUMPI
00001879: POP
0000187a: POP
0000187b: PUSH2 0x0a25
0000187e: SWAP2
0000187f: PUSH2 0x18e9
00001882: JUMP
00001883: JUMPDEST
00001884: SSTORE
00001885: JUMP
00001886: JUMPDEST
00001887: SWAP3
00001888: PUSH2 0x189f
0000188b: PUSH1 0x01
0000188d: DUP6
0000188e: PUSH2 0x1899
00001891: PUSH2 0x0a25
00001894: SWAP8
00001895: PUSH2 0x01ad
00001898: JUMP
00001899: JUMPDEST
0000189a: EQ
0000189b: PUSH2 0x180e
0000189e: JUMP
0000189f: JUMPDEST
000018a0: PUSH1 0x01
000018a2: PUSH1 0x01
000018a4: PUSH1 0xa0
000018a6: SHL
000018a7: SUB
000018a8: SWAP1
000018a9: DUP2
000018aa: AND
000018ab: SWAP2
000018ac: AND
000018ad: PUSH2 0x1993
000018b0: JUMP
000018b1: JUMPDEST
000018b2: PUSH1 0x02
000018b4: DUP2
000018b5: LT
000018b6: ISZERO
000018b7: PUSH2 0x01b7
000018ba: JUMPI
000018bb: DUP1
000018bc: ISZERO
000018bd: PUSH2 0x18cf
000018c0: JUMPI
000018c1: PUSH1 0x01
000018c3: DUP2
000018c4: PUSH2 0x1899
000018c7: PUSH2 0x0c68
000018ca: SWAP4
000018cb: PUSH2 0x01ad
000018ce: JUMP
000018cf: JUMPDEST
000018d0: POP
000018d1: POP
000018d2: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
000018e7: SWAP1
000018e8: JUMP
000018e9: JUMPDEST
000018ea: DUP2
000018eb: ISZERO
000018ec: PUSH2 0x1977
000018ef: JUMPI
000018f0: PUSH1 0x01
000018f2: DUP1
000018f3: PUSH1 0xa0
000018f5: SHL
000018f6: SUB
000018f7: AND
000018f8: SWAP1
000018f9: PUSH1 0x00
000018fb: DUP1
000018fc: DUP1
000018fd: DUP1
000018fe: DUP1
000018ff: SWAP5
00001900: DUP7
00001901: GAS
00001902: CALL
00001903: SWAP1
00001904: PUSH2 0x190b
00001907: PUSH2 0x10e7
0000190a: JUMP
0000190b: JUMPDEST
0000190c: SWAP2
0000190d: ISZERO
0000190e: PUSH2 0x1916
00001911: JUMPI
00001912: POP
00001913: POP
00001914: POP
00001915: JUMP
00001916: JUMPDEST
00001917: SWAP2
00001918: PUSH1 0x40
0000191a: MLOAD
0000191b: SWAP3
0000191c: DUP4
0000191d: SWAP2
0000191e: PUSH4 0x354db697
00001923: PUSH1 0xe0
00001925: SHL
00001926: DUP4
00001927: MSTORE
00001928: PUSH1 0x04
0000192a: DUP4
0000192b: ADD
0000192c: MSTORE
0000192d: PUSH1 0x40
0000192f: PUSH1 0x24
00001931: DUP4
00001932: ADD
00001933: MSTORE
00001934: DUP3
00001935: MLOAD
00001936: SWAP3
00001937: DUP4
00001938: PUSH1 0x44
0000193a: DUP5
0000193b: ADD
0000193c: MSTORE
0000193d: DUP2
0000193e: JUMPDEST
0000193f: DUP5
00001940: DUP2
00001941: LT
00001942: PUSH2 0x195f
00001945: JUMPI
00001946: POP
00001947: POP
00001948: SWAP2
00001949: PUSH1 0x64
0000194b: SWAP3
0000194c: DUP4
0000194d: DUP3
0000194e: DUP5
0000194f: ADD
00001950: ADD
00001951: MSTORE
00001952: PUSH1 0x1f
00001954: DUP1
00001955: NOT
00001956: SWAP2
00001957: ADD
00001958: AND
00001959: DUP2
0000195a: ADD
0000195b: SUB
0000195c: ADD
0000195d: SWAP1
0000195e: REVERT
0000195f: JUMPDEST
00001960: PUSH1 0x20
00001962: DUP3
00001963: DUP3
00001964: ADD
00001965: DUP2
00001966: ADD
00001967: MLOAD
00001968: PUSH1 0x64
0000196a: DUP9
0000196b: DUP5
0000196c: ADD
0000196d: ADD
0000196e: MSTORE
0000196f: DUP7
00001970: SWAP5
00001971: POP
00001972: ADD
00001973: PUSH2 0x193e
00001976: JUMP
00001977: JUMPDEST
00001978: POP
00001979: POP
0000197a: JUMP
0000197b: JUMPDEST
0000197c: SWAP1
0000197d: DUP2
0000197e: PUSH1 0x20
00001980: SWAP2
00001981: SUB
00001982: SLT
00001983: PUSH2 0x0139
00001986: JUMPI
00001987: MLOAD
00001988: DUP1
00001989: ISZERO
0000198a: ISZERO
0000198b: DUP2
0000198c: SUB
0000198d: PUSH2 0x0139
00001990: JUMPI
00001991: SWAP1
00001992: JUMP
00001993: JUMPDEST
00001994: PUSH1 0x40
00001996: MLOAD
00001997: PUSH4 0xa9059cbb
0000199c: PUSH1 0xe0
0000199e: SHL
0000199f: PUSH1 0x20
000019a1: DUP3
000019a2: ADD
000019a3: SWAP1
000019a4: DUP2
000019a5: MSTORE
000019a6: PUSH1 0x01
000019a8: PUSH1 0x01
000019aa: PUSH1 0xa0
000019ac: SHL
000019ad: SUB
000019ae: DUP5
000019af: AND
000019b0: PUSH1 0x24
000019b2: DUP4
000019b3: ADD
000019b4: MSTORE
000019b5: PUSH1 0x44
000019b7: DUP1
000019b8: DUP4
000019b9: ADD
000019ba: DUP7
000019bb: SWAP1
000019bc: MSTORE
000019bd: DUP3
000019be: MSTORE
000019bf: SWAP3
000019c0: SWAP5
000019c1: SWAP2
000019c2: SWAP4
000019c3: SWAP3
000019c4: PUSH1 0x00
000019c6: SWAP2
000019c7: DUP3
000019c8: SWAP2
000019c9: SWAP1
000019ca: PUSH2 0x19d4
000019cd: PUSH1 0x64
000019cf: DUP3
000019d0: PUSH2 0x0962
000019d3: JUMP
000019d4: JUMPDEST
000019d5: MLOAD
000019d6: SWAP1
000019d7: DUP3
000019d8: PUSH1 0x01
000019da: PUSH1 0x01
000019dc: PUSH1 0xa0
000019de: SHL
000019df: SUB
000019e0: DUP9
000019e1: AND
000019e2: GAS
000019e3: CALL
000019e4: PUSH2 0x19eb
000019e7: PUSH2 0x10e7
000019ea: JUMP
000019eb: JUMPDEST
000019ec: SWAP1
000019ed: PUSH2 0x1a23
000019f0: JUMPI
000019f1: JUMPDEST
000019f2: POP
000019f3: POP
000019f4: PUSH1 0x40
000019f6: MLOAD
000019f7: PUSH4 0x1702a987
000019fc: PUSH1 0xe1
000019fe: SHL
000019ff: DUP2
00001a00: MSTORE
00001a01: PUSH1 0x01
00001a03: PUSH1 0x01
00001a05: PUSH1 0xa0
00001a07: SHL
00001a08: SUB
00001a09: SWAP3
00001a0a: DUP4
00001a0b: AND
00001a0c: PUSH1 0x04
00001a0e: DUP3
00001a0f: ADD
00001a10: MSTORE
00001a11: SWAP3
00001a12: SWAP1
00001a13: SWAP2
00001a14: AND
00001a15: PUSH1 0x24
00001a17: DUP4
00001a18: ADD
00001a19: MSTORE
00001a1a: PUSH1 0x44
00001a1c: DUP3
00001a1d: ADD
00001a1e: MSTORE
00001a1f: PUSH1 0x64
00001a21: SWAP1
00001a22: REVERT
00001a23: JUMPDEST
00001a24: DUP1
00001a25: MLOAD
00001a26: ISZERO
00001a27: PUSH2 0x1a4d
00001a2a: JUMPI
00001a2b: DUP1
00001a2c: PUSH1 0x20
00001a2e: DUP1
00001a2f: PUSH2 0x1a3d
00001a32: SWAP4
00001a33: MLOAD
00001a34: DUP4
00001a35: ADD
00001a36: ADD
00001a37: SWAP2
00001a38: ADD
00001a39: PUSH2 0x197b
00001a3c: JUMP
00001a3d: JUMPDEST
00001a3e: PUSH2 0x1a47
00001a41: JUMPI
00001a42: DUP1
00001a43: PUSH2 0x19f1
00001a46: JUMP
00001a47: JUMPDEST
00001a48: SWAP3
00001a49: POP
00001a4a: POP
00001a4b: POP
00001a4c: JUMP
00001a4d: JUMPDEST
00001a4e: POP
00001a4f: SWAP3
00001a50: POP
00001a51: POP
00001a52: DUP1
00001a53: EXTCODESIZE
00001a54: ISZERO
00001a55: PUSH2 0x1a5b
00001a58: JUMPI
00001a59: POP
00001a5a: JUMP
00001a5b: JUMPDEST
00001a5c: PUSH1 0x40
00001a5e: MLOAD
00001a5f: PUSH4 0x9fe23a39
00001a64: PUSH1 0xe0
00001a66: SHL
00001a67: DUP2
00001a68: MSTORE
00001a69: PUSH1 0x01
00001a6b: PUSH1 0x01
00001a6d: PUSH1 0xa0
00001a6f: SHL
00001a70: SUB
00001a71: SWAP2
00001a72: SWAP1
00001a73: SWAP2
00001a74: AND
00001a75: PUSH1 0x04
00001a77: DUP3
00001a78: ADD
00001a79: MSTORE
00001a7a: PUSH1 0x24
00001a7c: SWAP1
00001a7d: REVERT
00001a7e: JUMPDEST
00001a7f: PUSH1 0x01
00001a81: PUSH1 0x01
00001a83: PUSH1 0x80
00001a85: SHL
00001a86: SUB
00001a87: SWAP1
00001a88: DUP2
00001a89: DUP2
00001a8a: GT
00001a8b: PUSH2 0x1a92
00001a8e: JUMPI
00001a8f: AND
00001a90: SWAP1
00001a91: JUMP
00001a92: JUMPDEST
00001a93: PUSH1 0x24
00001a95: SWAP1
00001a96: PUSH1 0x40
00001a98: MLOAD
00001a99: SWAP1
00001a9a: PUSH4 0x2dc9adf3
00001a9f: PUSH1 0xe0
00001aa1: SHL
00001aa2: DUP3
00001aa3: MSTORE
00001aa4: PUSH1 0x04
00001aa6: DUP3
00001aa7: ADD
00001aa8: MSTORE
00001aa9: REVERT
00001aaa: INVALID
00001aab: LOG2
00001aac: PUSH5 0x6970667358
00001ab2: UNKNOWN(0x22)
00001ab3: SLT
00001ab4: KECCAK256
00001ab5: STATICCALL
00001ab6: PUSH32 0x4b202850327abf83d68f0bfaf397cd2ac0ac4cd6a6c10332fe30e768cc896473
00001ad7: PUSH16

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0xdc152d8bb8fec9241f516703e02d710913c1b3271c1b6afeec64a5a2480ffb82
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 168,
    "trace_id": "0xdc152d8bb8fec9241f516703e02d710913c1b3271c1b6afeec64a5a2480ffb82",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x074ae6f1",
            "selector": "0x074ae6f1",
            "calldata_variants": [
                "0x074ae6f1",
                "0x074ae6f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x146a7b1a",
            "selector": "0x146a7b1a",
            "calldata_variants": [
                "0x146a7b1a",
                "0x146a7b1a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3a32e54e",
            "selector": "0x3a32e54e",
            "calldata_variants": [
                "0x3a32e54e",
                "0x3a32e54e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x476f5125",
            "selector": "0x476f5125",
            "calldata_variants": [
                "0x476f5125",
                "0x476f51250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6984c669",
            "selector": "0x6984c669",
            "calldata_variants": [
                "0x6984c669",
                "0x6984c6690000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x69a467a4",
            "selector": "0x69a467a4",
            "calldata_variants": [
                "0x69a467a4",
                "0x69a467a40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6e62c47d",
            "selector": "0x6e62c47d",
            "calldata_variants": [
                "0x6e62c47d",
                "0x6e62c47d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa0321a53",
            "selector": "0xa0321a53",
            "calldata_variants": [
                "0xa0321a53",
                "0xa0321a530000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5036,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xf5b775b5e00dda31483091e43a7dca11d1b191edcdc22faf05b20afb5d55fb17
call_targets: 0x49a3caab781f711ad74c9d2f34c3cbd835d6a608
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xf5b775b5e00dda31483091e43a7dca11d1b191edcdc22faf05b20afb5d55fb17",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x49a3caab781f711ad74c9d2f34c3cbd835d6a608"
    ],
    "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": "0x074ae6f1",
            "selector": "0x074ae6f1",
            "calldata_variants": [
                "0x074ae6f1",
                "0x074ae6f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x146a7b1a",
            "selector": "0x146a7b1a",
            "calldata_variants": [
                "0x146a7b1a",
                "0x146a7b1a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3a32e54e",
            "selector": "0x3a32e54e",
            "calldata_variants": [
                "0x3a32e54e",
                "0x3a32e54e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x476f5125",
            "selector": "0x476f5125",
            "calldata_variants": [
                "0x476f5125",
                "0x476f51250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6984c669",
            "selector": "0x6984c669",
            "calldata_variants": [
                "0x6984c669",
                "0x6984c6690000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x69a467a4",
            "selector": "0x69a467a4",
            "calldata_variants": [
                "0x69a467a4",
                "0x69a467a40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6e62c47d",
            "selector": "0x6e62c47d",
            "calldata_variants": [
                "0x6e62c47d",
                "0x6e62c47d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa0321a53",
            "selector": "0xa0321a53",
            "calldata_variants": [
                "0xa0321a53",
                "0xa0321a530000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 6402,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 6627,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [],
    "untrusted_call_count": 2
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xf5b775b5e00dda31483091e43a7dca11d1b191edcdc22faf05b20afb5d55fb17
call_targets: 0x49a3caab781f711ad74c9d2f34c3cbd835d6a608
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xf5b775b5e00dda31483091e43a7dca11d1b191edcdc22faf05b20afb5d55fb17",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x49a3caab781f711ad74c9d2f34c3cbd835d6a608"
    ],
    "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": "0x074ae6f1",
            "selector": "0x074ae6f1",
            "calldata_variants": [
                "0x074ae6f1",
                "0x074ae6f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x146a7b1a",
            "selector": "0x146a7b1a",
            "calldata_variants": [
                "0x146a7b1a",
                "0x146a7b1a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3a32e54e",
            "selector": "0x3a32e54e",
            "calldata_variants": [
                "0x3a32e54e",
                "0x3a32e54e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x476f5125",
            "selector": "0x476f5125",
            "calldata_variants": [
                "0x476f5125",
                "0x476f51250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6984c669",
            "selector": "0x6984c669",
            "calldata_variants": [
                "0x6984c669",
                "0x6984c6690000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x69a467a4",
            "selector": "0x69a467a4",
            "calldata_variants": [
                "0x69a467a4",
                "0x69a467a40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6e62c47d",
            "selector": "0x6e62c47d",
            "calldata_variants": [
                "0x6e62c47d",
                "0x6e62c47d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa0321a53",
            "selector": "0xa0321a53",
            "calldata_variants": [
                "0xa0321a53",
                "0xa0321a530000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 6402,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 6627,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": []
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}