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

Analysis Run

aca2d46b-300e-46bf-9a99-6a2431d60400

failed
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 2:35 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31530 report.consolidate complete 1 / 1 3 months ago
77807 artifact.fetch failed 1 / 3 1 week ago
77808 tool.cast_disasm complete 1 / 3 1 week ago
77809 analysis.bundle complete 1 / 3 1 week ago
77810 capability.graph complete 1 / 3 1 week ago
77811 detector.run complete 1 / 3 1 week ago
77812 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
Reviewed AUDIT_BUNDLE.txt and the provided first-party contracts; no concrete, attacker-profitable exploit paths were identified under the stated assumptions.
View stderr
[codex:1102116] OpenAI Codex v0.77.0 (research preview)
[codex:1102116] --------
[codex:1102116] workdir: /tmp/codex-multi-wge66nm0
[codex:1102116] model: gpt-5.2-codex
[codex:1102116] provider: openai
[codex:1102116] approval: never
[codex:1102116] sandbox: read-only
[codex:1102116] reasoning effort: xhigh
[codex:1102116] reasoning summaries: auto
[codex:1102116] session id: 019b86da-a02b-7161-b739-f0782c779e1b
[codex:1102116] --------
[codex:1102116] user
[codex:1102116] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1102116] 
[codex:1102116] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:1102116] 
[codex:1102116] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1102116] - Gas inefficiency, code quality, naming, or best practices
[codex:1102116] - Theoretical vulnerabilities without a clear extraction path
[codex:1102116] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:1102116] - Front-running unless it enables theft beyond MEV
[codex:1102116] - DoS, griefing, or issues that don't result in attacker profit
[codex:1102116] - Missing events, view function issues, or informational findings
[codex:1102116] 
[codex:1102116] HIGH-VALUE PATTERNS TO HUNT:
[codex:1102116] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:1102116] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:1102116] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:1102116] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:1102116] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:1102116] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:1102116] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:1102116] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:1102116] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:1102116] 
[codex:1102116] For each finding, you MUST provide:
[codex:1102116] 1. Exact file and line numbers of vulnerable code
[codex:1102116] 2. Step-by-step exploit transaction sequence
[codex:1102116] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:1102116] 
[codex:1102116] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:1102116] 
[codex:1102116] Output MUST be valid JSON matching the provided schema.
[codex:1102116] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1102116] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1102116] mcp startup: no servers
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Preparing to read AUDIT_BUNDLE**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc ls in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116] AUDIT_BUNDLE.txt
[codex:1102116] codex-output-schema.json
[codex:1102116] contracts
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Reading AUDIT_BUNDLE file**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-wge66nm0 succeeded in 6ms:
[codex:1102116] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:1102116] 
[codex:1102116] ================================================================================
[codex:1102116] FILE: contracts/src/EnclaveVerifier.sol
[codex:1102116] ================================================================================
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] import { RAVE } from "rave/RAVE.sol";
[codex:1102116] import { X509Verifier } from "rave/X509Verifier.sol";
[codex:1102116] import { IEnclaveVerifier } from "./interface/IEnclaveVerifier.sol";
[codex:1102116] import { RaveEvidence } from "./struct/RaveEvidence.sol";
[codex:1102116] import { AccessManaged } from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
[codex:1102116] import { InvalidAddress } from "./Errors.sol";
[codex:1102116] 
[codex:1102116] /**
[codex:1102116]  * @title EnclaveVerifier
[codex:1102116]  * @author Puffer Finance
[codex:1102116]  * @custom:security-contact security@puffer.fi
[codex:1102116]  */
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Searching for exploitable contracts**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc 'rg --files contracts/src' in /tmp/codex-multi-wge66nm0 succeeded in 10ms:
[codex:1102116] contracts/src/struct/StoppedValidatorInfo.sol
[codex:1102116] contracts/src/struct/ModuleStorage.sol
[codex:1102116] contracts/src/struct/ProtocolStorage.sol
[codex:1102116] contracts/src/struct/NodeInfo.sol
[codex:1102116] contracts/src/struct/ValidatorKeyData.sol
[codex:1102116] contracts/src/struct/Validator.sol
[codex:1102116] contracts/src/struct/Status.sol
[codex:1102116] contracts/src/struct/RaveEvidence.sol
[codex:1102116] contracts/src/PufferModuleManager.sol
[codex:1102116] contracts/src/RestakingOperator.sol
[codex:1102116] contracts/src/PufferModule.sol
[codex:1102116] contracts/src/PufferVaultStorage.sol
[codex:1102116] contracts/src/interface/IPufferVaultV5.sol
[codex:1102116] contracts/src/interface/Other/IWETH.sol
[codex:1102116] contracts/src/interface/IPufferVault.sol
[codex:1102116] contracts/src/interface/IBeaconDepositContract.sol
[codex:1102116] contracts/src/interface/IPufferOracle.sol
[codex:1102116] contracts/src/interface/libraries/OperatorSetLib.sol
[codex:1102116] contracts/src/interface/libraries/BeaconChainProofs.sol
[codex:1102116] contracts/src/PufferVaultV5.sol
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Identifying key contract files**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '1,260p' contracts/src/PufferVaultV5.sol" in /tmp/codex-multi-wge66nm0 succeeded in 8ms:
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] import { PufferVaultStorage } from "./PufferVaultStorage.sol";
[codex:1102116] import { IERC721Receiver } from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
[codex:1102116] import { UUPSUpgradeable } from "@openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
[codex:1102116] import { AccessManagedUpgradeable } from
[codex:1102116]     "@openzeppelin-contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
[codex:1102116] import { ERC4626Upgradeable } from "@openzeppelin-contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol";
[codex:1102116] import { ERC20Upgradeable } from "@openzeppelin-contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
[codex:1102116] import { ERC20PermitUpgradeable } from
[codex:1102116]     "@openzeppelin-contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol";
[codex:1102116] import { IStETH } from "./interface/Lido/IStETH.sol";
[codex:1102116] import { ILidoWithdrawalQueue } from "./interface/Lido/ILidoWithdrawalQueue.sol";
[codex:1102116] import { IWETH } from "./interface/Other/IWETH.sol";
[codex:1102116] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1102116] import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
[codex:1102116] import { EnumerableMap } from "@openzeppelin/contracts/utils/structs/EnumerableMap.sol";
[codex:1102116] import { IPufferVaultV5 } from "./interface/IPufferVaultV5.sol";
[codex:1102116] import { IPufferOracleV2 } from "./interface/IPufferOracleV2.sol";
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Continuing process**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '260,520p' contracts/src/PufferVaultV5.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116]         $.totalRewardMintAmount = newMintAmount;
[codex:1102116] 
[codex:1102116]         emit UpdatedTotalRewardsAmount(previousMintAmount, newMintAmount, 0);
[codex:1102116] 
[codex:1102116]         // msg.sender is the L1RewardManager contract
[codex:1102116]         _burn(msg.sender, pufETHAmount);
[codex:1102116]     }
[codex:1102116] 
[codex:1102116]     /**
[codex:1102116]      * @notice Withdrawals WETH assets from the vault, burning the `owner`'s (pufETH) shares.
[codex:1102116]      * The caller of this function does not have to be the `owner` if the `owner` has approved the caller to spend their pufETH.
[codex:1102116]      * Copied the original ERC4626 code back to override `PufferVault` + wrap ETH logic
[codex:1102116]      * @param assets The amount of assets (WETH) to withdraw
[codex:1102116]      * @param receiver The address to receive the assets (WETH)
[codex:1102116]      * @param owner The address of the owner for which the shares (pufETH) are burned.
[codex:1102116]      * @return shares The amount of shares (pufETH) burned
[codex:1102116]      *
[codex:1102116]      * @dev Restricted in this context is like `whenNotPaused` modifier from Pausable.sol
[codex:1102116]      */
[codex:1102116]     function withdraw(uint256 assets, address receiver, address owner)
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '520,1040p' contracts/src/PufferVaultV5.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116]         VaultStorage storage $ = _getPufferVaultStorage();
[codex:1102116]         return $.totalRewardMintAmount;
[codex:1102116]     }
[codex:1102116] 
[codex:1102116]     /**
[codex:1102116]      * @notice Returns the total reward deposit amount
[codex:1102116]      * @return The total deposited rewards amount
[codex:1102116]      */
[codex:1102116]     function getTotalRewardDepositAmount() public view returns (uint256) {
[codex:1102116]         VaultStorage storage $ = _getPufferVaultStorage();
[codex:1102116]         return $.totalRewardDepositAmount;
[codex:1102116]     }
[codex:1102116] 
[codex:1102116]     /**
[codex:1102116]      * @notice Returns the amount of shares (pufETH) for the `assets` amount rounded up
[codex:1102116]      * @param assets The amount of assets
[codex:1102116]      */
[codex:1102116]     function convertToSharesUp(uint256 assets) public view returns (uint256) {
[codex:1102116]         return _convertToShares(assets, Math.Rounding.Ceil);
[codex:1102116]     }
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Analyzing initializer vulnerabilities**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '1,260p' contracts/src/PufferVaultStorage.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] import { EnumerableSet } from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
[codex:1102116] import { EnumerableMap } from "@openzeppelin/contracts/utils/structs/EnumerableMap.sol";
[codex:1102116] 
[codex:1102116] /**
[codex:1102116]  * @title PufferVaultStorage
[codex:1102116]  * @author Puffer Finance
[codex:1102116]  * @custom:security-contact security@puffer.fi
[codex:1102116]  */
[codex:1102116] abstract contract PufferVaultStorage {
[codex:1102116]     /**
[codex:1102116]      * @custom:storage-location erc7201:puffervault.storage
[codex:1102116]      * @dev +-----------------------------------------------------------+
[codex:1102116]      *      |                                                           |
[codex:1102116]      *      | DO NOT CHANGE, REORDER, REMOVE EXISTING STORAGE VARIABLES |
[codex:1102116]      *      |                                                           |
[codex:1102116]      *      +-----------------------------------------------------------+
[codex:1102116]      */
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Searching for PufferProtocol contract**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc 'rg -n "contract PufferProtocol" contracts/src' in /tmp/codex-multi-wge66nm0 exited 1 in 10ms:
[codex:1102116] 
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Checking ValidatorTicket presence**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '1,260p' contracts/src/ValidatorTicket.sol" in /tmp/codex-multi-wge66nm0 succeeded in 6ms:
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
[codex:1102116] import { AccessManagedUpgradeable } from
[codex:1102116]     "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
[codex:1102116] import { ERC20PermitUpgradeable } from
[codex:1102116]     "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol";
[codex:1102116] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1102116] import { Address } from "@openzeppelin/contracts/utils/Address.sol";
[codex:1102116] import { ValidatorTicketStorage } from "./ValidatorTicketStorage.sol";
[codex:1102116] import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
[codex:1102116] import { PufferVaultV5 } from "./PufferVaultV5.sol";
[codex:1102116] import { IPufferOracle } from "./interface/IPufferOracle.sol";
[codex:1102116] import { IValidatorTicket } from "./interface/IValidatorTicket.sol";
[codex:1102116] import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
[codex:1102116] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1102116] import { IERC20Permit } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol";
[codex:1102116] import { Permit } from "./structs/Permit.sol";
[codex:1102116] 
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '260,520p' contracts/src/ValidatorTicket.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116]      * GuardianModule cannot handle ERC20-compatible pufETH. This differs from ETH purchases where
[codex:1102116]      * the guardians' portion goes directly to the GuardianModule.
[codex:1102116]      * @param recipient The address to receive the minted VTs
[codex:1102116]      * @param vtAmount The amount of Validator Tickets to purchase
[codex:1102116]      * @return pufEthUsed The amount of pufETH used for the purchase
[codex:1102116]      */
[codex:1102116]     function _processPurchaseValidatorTicketWithPufETH(address recipient, uint256 vtAmount)
[codex:1102116]         internal
[codex:1102116]         returns (uint256 pufEthUsed)
[codex:1102116]     {
[codex:1102116]         require(recipient != address(0), RecipientIsZeroAddress());
[codex:1102116] 
[codex:1102116]         uint256 mintPrice = PUFFER_ORACLE.getValidatorTicketPrice();
[codex:1102116] 
[codex:1102116]         uint256 requiredETH = vtAmount.mulDiv(mintPrice, 1 ether, Math.Rounding.Ceil);
[codex:1102116] 
[codex:1102116]         pufEthUsed = PufferVaultV5(PUFFER_VAULT).convertToSharesUp(requiredETH);
[codex:1102116] 
[codex:1102116]         IERC20(PUFFER_VAULT).transferFrom(msg.sender, address(this), pufEthUsed);
[codex:1102116] 
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Noting dependencies and needs**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '1,260p' contracts/src/RestakingOperator.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] import { AccessManagedUpgradeable } from
[codex:1102116]     "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
[codex:1102116] import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:1102116] import { IDelegationManager } from "../src/interface/Eigenlayer-Slashing/IDelegationManager.sol";
[codex:1102116] import { IAllocationManager } from "../src/interface/Eigenlayer-Slashing/IAllocationManager.sol";
[codex:1102116] import { IRewardsCoordinator } from "../src/interface/Eigenlayer-Slashing/IRewardsCoordinator.sol";
[codex:1102116] import { Unauthorized, InvalidAddress } from "./Errors.sol";
[codex:1102116] import { IPufferModuleManager } from "./interface/IPufferModuleManager.sol";
[codex:1102116] import { IERC1271 } from "@openzeppelin/contracts/interfaces/IERC1271.sol";
[codex:1102116] import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
[codex:1102116] import { Address } from "@openzeppelin/contracts/utils/Address.sol";
[codex:1102116] 
[codex:1102116] /**
[codex:1102116]  * @title RestakingOperator
[codex:1102116]  * @author Puffer Finance
[codex:1102116]  * @notice PufferModule
[codex:1102116]  * @custom:security-contact security@puffer.fi
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Checking dependencies for ValidatorTicketStorage**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '1,200p' contracts/src/ValidatorTicketStorage.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] /**
[codex:1102116]  * @title ValidatorTicketStorage
[codex:1102116]  * @author Puffer Finance
[codex:1102116]  * @custom:security-contact security@puffer.fi
[codex:1102116]  */
[codex:1102116] abstract contract ValidatorTicketStorage {
[codex:1102116]     /**
[codex:1102116]      * @custom:storage-location erc7201:ValidatorTicket.storage
[codex:1102116]      * @dev +-----------------------------------------------------------+
[codex:1102116]      *      |                                                           |
[codex:1102116]      *      | DO NOT CHANGE, REORDER, REMOVE EXISTING STORAGE VARIABLES |
[codex:1102116]      *      |                                                           |
[codex:1102116]      *      +-----------------------------------------------------------+
[codex:1102116]      */
[codex:1102116]     struct ValidatorTicket {
[codex:1102116]         /**
[codex:1102116]          * @dev Protocol fee rate, can be updated by governance (10,000 = 100%, 100 = 1%)
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Analyzing potential vulnerabilities and access control**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "rg -n \"sendValue|transfer\\(|call\\{ value|withdraw|redeem|burn\\(\" contracts/src" in /tmp/codex-multi-wge66nm0 succeeded in 10ms:
[codex:1102116] contracts/src/struct/StoppedValidatorInfo.sol:20:    /// @dev Amount of funds withdrawn upon validator stoppage.
[codex:1102116] contracts/src/struct/StoppedValidatorInfo.sol:21:    uint256 withdrawalAmount;
[codex:1102116] contracts/src/ValidatorTicket.sol:125:            TREASURY.sendValue(msg.value);
[codex:1102116] contracts/src/ValidatorTicket.sol:136:        PUFFER_VAULT.sendValue(vaultAmount);
[codex:1102116] contracts/src/ValidatorTicket.sol:180:    function burn(uint256 amount) external virtual restricted {
[codex:1102116] contracts/src/ValidatorTicket.sol:181:        _burn(msg.sender, amount);
[codex:1102116] contracts/src/ValidatorTicket.sol:231:            payable(to).sendValue(toSend);
[codex:1102116] contracts/src/ValidatorTicket.sol:284:            IERC20(PUFFER_VAULT).transfer(TREASURY, pufEthUsed);
[codex:1102116] contracts/src/ValidatorTicket.sol:295:        PufferVaultV5(PUFFER_VAULT).burn(burnAmount);
[codex:1102116] contracts/src/ValidatorTicket.sol:313:            IERC20(PUFFER_VAULT).transfer(to, toSend);
[codex:1102116] contracts/src/PufferVaultStorage.sol:29:        // 1 Slot for daily withdrawal limits
[codex:1102116] contracts/src/PufferVaultStorage.sol:33:        // 1 slot for withdrawal fee
[codex:1102116] contracts/src/PufferModuleManager.sol:59:     * @notice Completes queued withdrawals
[codex:1102116] contracts/src/PufferModuleManager.sol:61:     * @param withdrawals The list of withdrawals to complete
[codex:1102116] contracts/src/PufferModuleManager.sol:62:     * @param tokens The list of tokens to withdraw
[codex:1102116] contracts/src/PufferModuleManager.sol:68:        IDelegationManagerTypes.Withdrawal[] calldata withdrawals,
[codex:1102116] contracts/src/PufferModuleManager.sol:75:            withdrawals: withdrawals,
[codex:1102116] contracts/src/PufferModuleManager.sol:82:        for (uint256 i = 0; i < withdrawals.length; ++i) {
[codex:1102116] contracts/src/PufferModuleManager.sol:84:            for (uint256 j = 0; j < withdrawals[i].scaledShares.length; ++j) {
[codex:1102116] contracts/src/PufferModuleManager.sol:85:                sharesWithdrawn += withdrawals[i].scaledShares[j];
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Analyzing contract access controls and potential exploits**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '1,260p' contracts/src/interface/IPufferProtocol.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] import { Validator } from "../struct/Validator.sol";
[codex:1102116] import { ValidatorKeyData } from "../struct/ValidatorKeyData.sol";
[codex:1102116] import { IGuardianModule } from "../interface/IGuardianModule.sol";
[codex:1102116] import { PufferModuleManager } from "../PufferModuleManager.sol";
[codex:1102116] import { PufferVaultV5 } from "../PufferVaultV5.sol";
[codex:1102116] import { IPufferOracleV2 } from "../interface/IPufferOracleV2.sol";
[codex:1102116] import { Status } from "../struct/Status.sol";
[codex:1102116] import { Permit } from "../structs/Permit.sol";
[codex:1102116] import { ValidatorTicket } from "../ValidatorTicket.sol";
[codex:1102116] import { NodeInfo } from "../struct/NodeInfo.sol";
[codex:1102116] import { ModuleLimit } from "../struct/ProtocolStorage.sol";
[codex:1102116] import { StoppedValidatorInfo } from "../struct/StoppedValidatorInfo.sol";
[codex:1102116] import { IBeaconDepositContract } from "../interface/IBeaconDepositContract.sol";
[codex:1102116] 
[codex:1102116] /**
[codex:1102116]  * @title IPufferProtocol
[codex:1102116]  * @author Puffer Finance
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Searching for PufferProtocol implementation**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc 'rg --files -g "*PufferProtocol*"' in /tmp/codex-multi-wge66nm0 succeeded in 10ms:
[codex:1102116] contracts/src/interface/IPufferProtocol.sol
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Analyzing potential vulnerabilities and exploit paths**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '1,260p' contracts/src/PufferModuleManager.sol" in /tmp/codex-multi-wge66nm0 succeeded in 6ms:
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] import { IPufferProtocol } from "./interface/IPufferProtocol.sol";
[codex:1102116] import { Unauthorized, InvalidAmount } from "./Errors.sol";
[codex:1102116] import { IPufferProtocol } from "./interface/IPufferProtocol.sol";
[codex:1102116] import { PufferModule } from "./PufferModule.sol";
[codex:1102116] import { PufferVaultV5 } from "./PufferVaultV5.sol";
[codex:1102116] import { RestakingOperator } from "./RestakingOperator.sol";
[codex:1102116] import { IPufferModuleManager } from "./interface/IPufferModuleManager.sol";
[codex:1102116] import { BeaconProxy } from "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
[codex:1102116] import { Create2 } from "@openzeppelin/contracts/utils/Create2.sol";
[codex:1102116] import { AccessManagedUpgradeable } from
[codex:1102116]     "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
[codex:1102116] import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
[codex:1102116] import { IDelegationManagerTypes } from "../src/interface/Eigenlayer-Slashing/IDelegationManager.sol";
[codex:1102116] import { ISignatureUtils } from "../src/interface/Eigenlayer-Slashing/ISignatureUtils.sol";
[codex:1102116] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1102116] import { RestakingOperator } from "./RestakingOperator.sol";
[codex:1102116] import { IAllocationManager } from "../src/interface/Eigenlayer-Slashing/IAllocationManager.sol";
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '260,520p' contracts/src/PufferModuleManager.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116] 
[codex:1102116]     /**
[codex:1102116]      * @notice Calls the `target` contract with `customCalldata` from the Restaking Operator contract
[codex:1102116]      * @param restakingOperator is the Restaking Operator contract
[codex:1102116]      * @param target is the address of the target contract that ReOp will call
[codex:1102116]      * @param customCalldata is the calldata to be passed to the target contract
[codex:1102116]      * @dev Restricted to the DAO
[codex:1102116]      */
[codex:1102116]     function customExternalCall(RestakingOperator restakingOperator, address target, bytes calldata customCalldata)
[codex:1102116]         external
[codex:1102116]         payable
[codex:1102116]         virtual
[codex:1102116]         restricted
[codex:1102116]     {
[codex:1102116]         bytes memory response = restakingOperator.customCalldataCall{ value: msg.value }(target, customCalldata);
[codex:1102116] 
[codex:1102116]         emit CustomCallSucceeded(address(restakingOperator), target, customCalldata, response);
[codex:1102116]     }
[codex:1102116] 
[codex:1102116]     /**
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Examining potential financial exploits**
[codex:1102116] exec
[codex:1102116] /bin/bash -lc "sed -n '1,220p' contracts/src/interface/IPufferOracle.sol" in /tmp/codex-multi-wge66nm0 succeeded in 5ms:
[codex:1102116] // SPDX-License-Identifier: GPL-3.0
[codex:1102116] pragma solidity >=0.8.0 <0.9.0;
[codex:1102116] 
[codex:1102116] /**
[codex:1102116]  * @title IPufferOracle
[codex:1102116]  * @author Puffer Finance
[codex:1102116]  * @custom:security-contact security@puffer.fi
[codex:1102116]  */
[codex:1102116] interface IPufferOracle {
[codex:1102116]     /**
[codex:1102116]      * @notice Thrown if the new ValidatorTicket mint price is invalid
[codex:1102116]      */
[codex:1102116]     error InvalidValidatorTicketPrice();
[codex:1102116] 
[codex:1102116]     /**
[codex:1102116]      * @notice Emitted when the price to mint ValidatorTicket is updated
[codex:1102116]      * @dev Signature "0xf76811fec27423d0853e6bf49d7ea78c666629c2f67e29647d689954021ae0ea"
[codex:1102116]      */
[codex:1102116]     event ValidatorTicketMintPriceUpdated(uint256 oldPrice, uint256 newPrice);
[codex:1102116] 
[codex:1102116] 
[codex:1102116] thinking
[codex:1102116] **Evaluating potential exploits and preparing report**
[codex:1102116] 
[codex:1102116] I’m reviewing possible exploitable initialization issues in upgradeable contracts and verifying AccessManaged logic, but no concrete profit-focused exploits emerged. After checking the audit bundle and protocol structures, I’m preparing a JSON report indicating no findings per the user’s instructions.
[codex:1102116] codex
[codex:1102116] {"no_findings":true,"summary":"Reviewed AUDIT_BUNDLE.txt and the provided first-party contracts; no concrete, attacker-profitable exploit paths were identified under the stated assumptions.","findings":[]}
[codex:1102116] tokens used
[codex:1102116] 45,997
[codex:1102116] {"no_findings":true,"summary":"Reviewed AUDIT_BUNDLE.txt and the provided first-party contracts; no concrete, attacker-profitable exploit paths were identified under the stated assumptions.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-04T02:35:36.964558+00:00",
        "returncode": 0
    },
    "summary": "Reviewed AUDIT_BUNDLE.txt and the provided first-party contracts; no concrete, attacker-profitable exploit paths were identified under the stated assumptions.",
    "raw_final": {
        "summary": "Reviewed AUDIT_BUNDLE.txt and the provided first-party contracts; no concrete, attacker-profitable exploit paths were identified under the stated assumptions.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
9
EXT*/BALANCE
8
Total opcodes
4223
Flags
heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x011e
0000000c: JUMPI
0000000d: PUSH0
0000000e: CALLDATALOAD
0000000f: PUSH1 0xe0
00000011: SHR
00000012: DUP1
00000013: PUSH4 0x8fb36037
00000018: GT
00000019: PUSH2 0x009d
0000001c: JUMPI
0000001d: DUP1
0000001e: PUSH4 0xbf7e214f
00000023: GT
00000024: PUSH2 0x0062
00000027: JUMPI
00000028: DUP1
00000029: PUSH4 0xbf7e214f
0000002e: EQ
0000002f: PUSH2 0x041c
00000032: JUMPI
00000033: DUP1
00000034: PUSH4 0xd06d5587
00000039: EQ
0000003a: PUSH2 0x0445
0000003d: JUMPI
0000003e: DUP1
0000003f: PUSH4 0xeff7c503
00000044: EQ
00000045: PUSH2 0x0464
00000048: JUMPI
00000049: DUP1
0000004a: PUSH4 0xf2251b0f
0000004f: EQ
00000050: PUSH2 0x0478
00000053: JUMPI
00000054: DUP1
00000055: PUSH4 0xfe363bd4
0000005a: EQ
0000005b: PUSH2 0x04ab
0000005e: JUMPI
0000005f: PUSH0
00000060: PUSH0
00000061: REVERT
00000062: JUMPDEST
00000063: DUP1
00000064: PUSH4 0x8fb36037
00000069: EQ
0000006a: PUSH2 0x0325
0000006d: JUMPI
0000006e: DUP1
0000006f: PUSH4 0x9435bb43
00000074: EQ
00000075: PUSH2 0x0352
00000078: JUMPI
00000079: DUP1
0000007a: PUSH4 0x972546f8
0000007f: EQ
00000080: PUSH2 0x0371
00000083: JUMPI
00000084: DUP1
00000085: PUSH4 0xa3f4df7e
0000008a: EQ
0000008b: PUSH2 0x03a4
0000008e: JUMPI
0000008f: DUP1
00000090: PUSH4 0xbcbb073a
00000095: EQ
00000096: PUSH2 0x03e0
00000099: JUMPI
0000009a: PUSH0
0000009b: PUSH0
0000009c: REVERT
0000009d: JUMPDEST
0000009e: DUP1
0000009f: PUSH4 0x56396715
000000a4: GT
000000a5: PUSH2 0x00e3
000000a8: JUMPI
000000a9: DUP1
000000aa: PUSH4 0x56396715
000000af: EQ
000000b0: PUSH2 0x0213
000000b3: JUMPI
000000b4: DUP1
000000b5: PUSH4 0x6910e334
000000ba: EQ
000000bb: PUSH2 0x028e
000000be: JUMPI
000000bf: DUP1
000000c0: PUSH4 0x6dbf2fa0
000000c5: EQ
000000c6: PUSH2 0x02ad
000000c9: JUMPI
000000ca: DUP1
000000cb: PUSH4 0x7a9e5e4b
000000d0: EQ
000000d1: PUSH2 0x02da
000000d4: JUMPI
000000d5: DUP1
000000d6: PUSH4 0x852aa33d
000000db: EQ
000000dc: PUSH2 0x02f9
000000df: JUMPI
000000e0: PUSH0
000000e1: PUSH0
000000e2: REVERT
000000e3: JUMPDEST
000000e4: DUP1
000000e5: PUSH4 0x0575c0a9
000000ea: EQ
000000eb: PUSH2 0x0129
000000ee: JUMPI
000000ef: DUP1
000000f0: PUSH4 0x0a732358
000000f5: EQ
000000f6: PUSH2 0x0179
000000f9: JUMPI
000000fa: DUP1
000000fb: PUSH4 0x0f1a3c75
00000100: EQ
00000101: PUSH2 0x01ac
00000104: JUMPI
00000105: DUP1
00000106: PUSH4 0x141fbdf2
0000010b: EQ
0000010c: PUSH2 0x01c1
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0x2fb403e4
00000116: EQ
00000117: PUSH2 0x01f4
0000011a: JUMPI
0000011b: PUSH0
0000011c: PUSH0
0000011d: REVERT
0000011e: JUMPDEST
0000011f: CALLDATASIZE
00000120: PUSH2 0x0125
00000123: JUMPI
00000124: STOP
00000125: JUMPDEST
00000126: PUSH0
00000127: PUSH0
00000128: REVERT
00000129: JUMPDEST
0000012a: CALLVALUE
0000012b: DUP1
0000012c: ISZERO
0000012d: PUSH2 0x0134
00000130: JUMPI
00000131: PUSH0
00000132: PUSH0
00000133: REVERT
00000134: JUMPDEST
00000135: POP
00000136: PUSH2 0x015c
00000139: PUSH32 0x0000000000000000000000009e1e4fcb49931df5743e659ad910d331735c3860
0000015a: DUP2
0000015b: JUMP
0000015c: JUMPDEST
0000015d: PUSH1 0x40
0000015f: MLOAD
00000160: PUSH1 0x01
00000162: PUSH1 0x01
00000164: PUSH1 0xa0
00000166: SHL
00000167: SUB
00000168: SWAP1
00000169: SWAP2
0000016a: AND
0000016b: DUP2
0000016c: MSTORE
0000016d: PUSH1 0x20
0000016f: ADD
00000170: JUMPDEST
00000171: PUSH1 0x40
00000173: MLOAD
00000174: DUP1
00000175: SWAP2
00000176: SUB
00000177: SWAP1
00000178: RETURN
00000179: JUMPDEST
0000017a: CALLVALUE
0000017b: DUP1
0000017c: ISZERO
0000017d: PUSH2 0x0184
00000180: JUMPI
00000181: PUSH0
00000182: PUSH0
00000183: REVERT
00000184: JUMPDEST
00000185: POP
00000186: PUSH2 0x015c
00000189: PUSH32 0x00000000000000000000000091e677b07f7af907ec9a428aafa9fc14a0d3a338
000001aa: DUP2
000001ab: JUMP
000001ac: JUMPDEST
000001ad: PUSH2 0x01bf
000001b0: PUSH2 0x01ba
000001b3: CALLDATASIZE
000001b4: PUSH1 0x04
000001b6: PUSH2 0x10b0
000001b9: JUMP
000001ba: JUMPDEST
000001bb: PUSH2 0x04ca
000001be: JUMP
000001bf: JUMPDEST
000001c0: STOP
000001c1: JUMPDEST
000001c2: CALLVALUE
000001c3: DUP1
000001c4: ISZERO
000001c5: PUSH2 0x01cc
000001c8: JUMPI
000001c9: PUSH0
000001ca: PUSH0
000001cb: REVERT
000001cc: JUMPDEST
000001cd: POP
000001ce: PUSH2 0x015c
000001d1: PUSH32 0x0000000000000000000000007750d328b314effa365a0402ccfd489b80b0adda
000001f2: DUP2
000001f3: JUMP
000001f4: JUMPDEST
000001f5: CALLVALUE
000001f6: DUP1
000001f7: ISZERO
000001f8: PUSH2 0x01ff
000001fb: JUMPI
000001fc: PUSH0
000001fd: PUSH0
000001fe: REVERT
000001ff: JUMPDEST
00000200: POP
00000201: PUSH2 0x01bf
00000204: PUSH2 0x020e
00000207: CALLDATASIZE
00000208: PUSH1 0x04
0000020a: PUSH2 0x1140
0000020d: JUMP
0000020e: JUMPDEST
0000020f: PUSH2 0x05a6
00000212: JUMP
00000213: JUMPDEST
00000214: CALLVALUE
00000215: DUP1
00000216: ISZERO
00000217: PUSH2 0x021e
0000021a: JUMPI
0000021b: PUSH0
0000021c: PUSH0
0000021d: REVERT
0000021e: JUMPDEST
0000021f: POP
00000220: PUSH32 0x501caad7d5b9c1542c99d193b659cbf5c57571609bcfc93d65f1e159821d6201
00000241: SLOAD
00000242: PUSH1 0x40
00000244: DUP1
00000245: MLOAD
00000246: PUSH1 0x01
00000248: PUSH1 0xf8
0000024a: SHL
0000024b: PUSH1 0x20
0000024d: DUP1
0000024e: DUP4
0000024f: ADD
00000250: SWAP2
00000251: SWAP1
00000252: SWAP2
00000253: MSTORE
00000254: PUSH0
00000255: PUSH1 0x21
00000257: DUP4
00000258: ADD
00000259: MSTORE
0000025a: PUSH1 0x60
0000025c: SWAP4
0000025d: SWAP1
0000025e: SWAP4
0000025f: SHL
00000260: PUSH12 0xffffffffffffffffffffffff
0000026d: NOT
0000026e: AND
0000026f: PUSH1 0x2c
00000271: DUP3
00000272: ADD
00000273: MSTORE
00000274: DUP2
00000275: MLOAD
00000276: DUP1
00000277: DUP3
00000278: SUB
00000279: SWAP1
0000027a: SWAP4
0000027b: ADD
0000027c: DUP4
0000027d: MSTORE
0000027e: DUP2
0000027f: ADD
00000280: SWAP1
00000281: MSTORE
00000282: PUSH1 0x40
00000284: MLOAD
00000285: PUSH2 0x0170
00000288: SWAP2
00000289: SWAP1
0000028a: PUSH2 0x11c7
0000028d: JUMP
0000028e: JUMPDEST
0000028f: CALLVALUE
00000290: DUP1
00000291: ISZERO
00000292: PUSH2 0x0299
00000295: JUMPI
00000296: PUSH0
00000297: PUSH0
00000298: REVERT
00000299: JUMPDEST
0000029a: POP
0000029b: PUSH2 0x01bf
0000029e: PUSH2 0x02a8
000002a1: CALLDATASIZE
000002a2: PUSH1 0x04
000002a4: PUSH2 0x11e0
000002a7: JUMP
000002a8: JUMPDEST
000002a9: PUSH2 0x0670
000002ac: JUMP
000002ad: JUMPDEST
000002ae: CALLVALUE
000002af: DUP1
000002b0: ISZERO
000002b1: PUSH2 0x02b8
000002b4: JUMPI
000002b5: PUSH0
000002b6: PUSH0
000002b7: REVERT
000002b8: JUMPDEST
000002b9: POP
000002ba: PUSH2 0x02cc
000002bd: PUSH2 0x02c7
000002c0: CALLDATASIZE
000002c1: PUSH1 0x04
000002c3: PUSH2 0x120e
000002c6: JUMP
000002c7: JUMPDEST
000002c8: PUSH2 0x084b
000002cb: JUMP
000002cc: JUMPDEST
000002cd: PUSH1 0x40
000002cf: MLOAD
000002d0: PUSH2 0x0170
000002d3: SWAP3
000002d4: SWAP2
000002d5: SWAP1
000002d6: PUSH2 0x1265
000002d9: JUMP
000002da: JUMPDEST
000002db: CALLVALUE
000002dc: DUP1
000002dd: ISZERO
000002de: PUSH2 0x02e5
000002e1: JUMPI
000002e2: PUSH0
000002e3: PUSH0
000002e4: REVERT
000002e5: JUMPDEST
000002e6: POP
000002e7: PUSH2 0x01bf
000002ea: PUSH2 0x02f4
000002ed: CALLDATASIZE
000002ee: PUSH1 0x04
000002f0: PUSH2 0x1287
000002f3: JUMP
000002f4: JUMPDEST
000002f5: PUSH2 0x0935
000002f8: JUMP
000002f9: JUMPDEST
000002fa: CALLVALUE
000002fb: DUP1
000002fc: ISZERO
000002fd: PUSH2 0x0304
00000300: JUMPI
00000301: PUSH0
00000302: PUSH0
00000303: REVERT
00000304: JUMPDEST
00000305: POP
00000306: PUSH2 0x0318
00000309: PUSH2 0x0313
0000030c: CALLDATASIZE
0000030d: PUSH1 0x04
0000030f: PUSH2 0x12a2
00000312: JUMP
00000313: JUMPDEST
00000314: PUSH2 0x09d6
00000317: JUMP
00000318: JUMPDEST
00000319: PUSH1 0x40
0000031b: MLOAD
0000031c: PUSH2 0x0170
0000031f: SWAP2
00000320: SWAP1
00000321: PUSH2 0x12b9
00000324: JUMP
00000325: JUMPDEST
00000326: CALLVALUE
00000327: DUP1
00000328: ISZERO
00000329: PUSH2 0x0330
0000032c: JUMPI
0000032d: PUSH0
0000032e: PUSH0
0000032f: REVERT
00000330: JUMPDEST
00000331: POP
00000332: PUSH2 0x0339
00000335: PUSH2 0x0bd5
00000338: JUMP
00000339: JUMPDEST
0000033a: PUSH1 0x40
0000033c: MLOAD
0000033d: PUSH1 0x01
0000033f: PUSH1 0x01
00000341: PUSH1 0xe0
00000343: SHL
00000344: SUB
00000345: NOT
00000346: SWAP1
00000347: SWAP2
00000348: AND
00000349: DUP2
0000034a: MSTORE
0000034b: PUSH1 0x20
0000034d: ADD
0000034e: PUSH2 0x0170
00000351: JUMP
00000352: JUMPDEST
00000353: CALLVALUE
00000354: DUP1
00000355: ISZERO
00000356: PUSH2 0x035d
00000359: JUMPI
0000035a: PUSH0
0000035b: PUSH0
0000035c: REVERT
0000035d: JUMPDEST
0000035e: POP
0000035f: PUSH2 0x01bf
00000362: PUSH2 0x036c
00000365: CALLDATASIZE
00000366: PUSH1 0x04
00000368: PUSH2 0x133b
0000036b: JUMP
0000036c: JUMPDEST
0000036d: PUSH2 0x0c0b
00000370: JUMP
00000371: JUMPDEST
00000372: CALLVALUE
00000373: DUP1
00000374: ISZERO
00000375: PUSH2 0x037c
00000378: JUMPI
00000379: PUSH0
0000037a: PUSH0
0000037b: REVERT
0000037c: JUMPDEST
0000037d: POP
0000037e: PUSH2 0x015c
00000381: PUSH32 0x000000000000000000000000f7b6b32492c2e13799d921e84202450131bd238b
000003a2: DUP2
000003a3: JUMP
000003a4: JUMPDEST
000003a5: CALLVALUE
000003a6: DUP1
000003a7: ISZERO
000003a8: PUSH2 0x03af
000003ab: JUMPI
000003ac: PUSH0
000003ad: PUSH0
000003ae: REVERT
000003af: JUMPDEST
000003b0: POP
000003b1: PUSH32 0x501caad7d5b9c1542c99d193b659cbf5c57571609bcfc93d65f1e159821d6200
000003d2: SLOAD
000003d3: PUSH1 0x40
000003d5: MLOAD
000003d6: SWAP1
000003d7: DUP2
000003d8: MSTORE
000003d9: PUSH1 0x20
000003db: ADD
000003dc: PUSH2 0x0170
000003df: JUMP
000003e0: JUMPDEST
000003e1: CALLVALUE
000003e2: DUP1
000003e3: ISZERO
000003e4: PUSH2 0x03eb
000003e7: JUMPI
000003e8: PUSH0
000003e9: PUSH0
000003ea: REVERT
000003eb: JUMPDEST
000003ec: POP
000003ed: PUSH32 0x501caad7d5b9c1542c99d193b659cbf5c57571609bcfc93d65f1e159821d6201
0000040e: SLOAD
0000040f: PUSH1 0x01
00000411: PUSH1 0x01
00000413: PUSH1 0xa0
00000415: SHL
00000416: SUB
00000417: AND
00000418: PUSH2 0x015c
0000041b: JUMP
0000041c: JUMPDEST
0000041d: CALLVALUE
0000041e: DUP1
0000041f: ISZERO
00000420: PUSH2 0x0427
00000423: JUMPI
00000424: PUSH0
00000425: PUSH0
00000426: REVERT
00000427: JUMPDEST
00000428: POP
00000429: PUSH0
0000042a: MLOAD
0000042b: PUSH1 0x20
0000042d: PUSH2 0x19ba
00000430: PUSH0
00000431: CODECOPY
00000432: PUSH0
00000433: MLOAD
00000434: SWAP1
00000435: PUSH0
00000436: MSTORE
00000437: SLOAD
00000438: PUSH1 0x01
0000043a: PUSH1 0x01
0000043c: PUSH1 0xa0
0000043e: SHL
0000043f: SUB
00000440: AND
00000441: PUSH2 0x015c
00000444: JUMP
00000445: JUMPDEST
00000446: CALLVALUE
00000447: DUP1
00000448: ISZERO
00000449: PUSH2 0x0450
0000044c: JUMPI
0000044d: PUSH0
0000044e: PUSH0
0000044f: REVERT
00000450: JUMPDEST
00000451: POP
00000452: PUSH2 0x01bf
00000455: PUSH2 0x045f
00000458: CALLDATASIZE
00000459: PUSH1 0x04
0000045b: PUSH2 0x1287
0000045e: JUMP
0000045f: JUMPDEST
00000460: PUSH2 0x0d37
00000463: JUMP
00000464: JUMPDEST
00000465: CALLVALUE
00000466: DUP1
00000467: ISZERO
00000468: PUSH2 0x046f
0000046b: JUMPI
0000046c: PUSH0
0000046d: PUSH0
0000046e: REVERT
0000046f: JUMPDEST
00000470: POP
00000471: PUSH2 0x0318
00000474: PUSH2 0x0e03
00000477: JUMP
00000478: JUMPDEST
00000479: CALLVALUE
0000047a: DUP1
0000047b: ISZERO
0000047c: PUSH2 0x0483
0000047f: JUMPI
00000480: PUSH0
00000481: PUSH0
00000482: REVERT
00000483: JUMPDEST
00000484: POP
00000485: PUSH2 0x015c
00000488: PUSH32 0x00000000000000000000000039053d51b77dc0d36036fc1fcc8cb819df8ef37a
000004a9: DUP2
000004aa: JUMP
000004ab: JUMPDEST
000004ac: CALLVALUE
000004ad: DUP1
000004ae: ISZERO
000004af: PUSH2 0x04b6
000004b2: JUMPI
000004b3: PUSH0
000004b4: PUSH0
000004b5: REVERT
000004b6: JUMPDEST
000004b7: POP
000004b8: PUSH2 0x01bf
000004bb: PUSH2 0x04c5
000004be: CALLDATASIZE
000004bf: PUSH1 0x04
000004c1: PUSH2 0x1287
000004c4: JUMP
000004c5: JUMPDEST
000004c6: PUSH2 0x0edb
000004c9: JUMP
000004ca: JUMPDEST
000004cb: CALLER
000004cc: PUSH1 0x01
000004ce: PUSH1 0x01
000004d0: PUSH1 0xa0
000004d2: SHL
000004d3: SUB
000004d4: PUSH32 0x000000000000000000000000f7b6b32492c2e13799d921e84202450131bd238b
000004f5: AND
000004f6: EQ
000004f7: PUSH2 0x0512
000004fa: JUMPI
000004fb: PUSH1 0x40
000004fd: MLOAD
000004fe: PUSH3 0x82b429
00000502: PUSH1 0xe8
00000504: SHL
00000505: DUP2
00000506: MSTORE
00000507: PUSH1 0x04
00000509: ADD
0000050a: PUSH1 0x40
0000050c: MLOAD
0000050d: DUP1
0000050e: SWAP2
0000050f: SUB
00000510: SWAP1
00000511: REVERT
00000512: JUMPDEST
00000513: PUSH1 0x40
00000515: MLOAD
00000516: PUSH4 0x26d3918d
0000051b: PUSH1 0xe2
0000051d: SHL
0000051e: DUP2
0000051f: MSTORE
00000520: PUSH1 0x01
00000522: PUSH1 0x01
00000524: PUSH1 0xa0
00000526: SHL
00000527: SUB
00000528: PUSH32 0x00000000000000000000000091e677b07f7af907ec9a428aafa9fc14a0d3a338
00000549: AND
0000054a: SWAP1
0000054b: PUSH4 0x9b4e4634
00000550: SWAP1
00000551: PUSH9 0x01bc16d674ec800000
0000055b: SWAP1
0000055c: PUSH2 0x0571
0000055f: SWAP1
00000560: DUP10
00000561: SWAP1
00000562: DUP10
00000563: SWAP1
00000564: DUP10
00000565: SWAP1
00000566: DUP10
00000567: SWAP1
00000568: DUP10
00000569: SWAP1
0000056a: PUSH1 0x04
0000056c: ADD
0000056d: PUSH2 0x13ff
00000570: JUMP
00000571: JUMPDEST
00000572: PUSH0
00000573: PUSH1 0x40
00000575: MLOAD
00000576: DUP1
00000577: DUP4
00000578: SUB
00000579: DUP2
0000057a: DUP6
0000057b: DUP9
0000057c: DUP1
0000057d: EXTCODESIZE
0000057e: ISZERO
0000057f: DUP1
00000580: ISZERO
00000581: PUSH2 0x0588
00000584: JUMPI
00000585: PUSH0
00000586: PUSH0
00000587: REVERT
00000588: JUMPDEST
00000589: POP
0000058a: GAS
0000058b: CALL
0000058c: ISZERO
0000058d: DUP1
0000058e: ISZERO
0000058f: PUSH2 0x059a
00000592: JUMPI
00000593: RETURNDATASIZE
00000594: PUSH0
00000595: PUSH0
00000596: RETURNDATACOPY
00000597: RETURNDATASIZE
00000598: PUSH0
00000599: REVERT
0000059a: JUMPDEST
0000059b: POP
0000059c: POP
0000059d: POP
0000059e: POP
0000059f: POP
000005a0: POP
000005a1: POP
000005a2: POP
000005a3: POP
000005a4: POP
000005a5: JUMP
000005a6: JUMPDEST
000005a7: CALLER
000005a8: PUSH1 0x01
000005aa: PUSH1 0x01
000005ac: PUSH1 0xa0
000005ae: SHL
000005af: SUB
000005b0: PUSH32 0x0000000000000000000000009e1e4fcb49931df5743e659ad910d331735c3860
000005d1: AND
000005d2: EQ
000005d3: PUSH2 0x05ee
000005d6: JUMPI
000005d7: PUSH1 0x40
000005d9: MLOAD
000005da: PUSH3 0x82b429
000005de: PUSH1 0xe8
000005e0: SHL
000005e1: DUP2
000005e2: MSTORE
000005e3: PUSH1 0x04
000005e5: ADD
000005e6: PUSH1 0x40
000005e8: MLOAD
000005e9: DUP1
000005ea: SWAP2
000005eb: SUB
000005ec: SWAP1
000005ed: REVERT
000005ee: JUMPDEST
000005ef: PUSH1 0x40
000005f1: MLOAD
000005f2: PUSH4 0xeea9064b
000005f7: PUSH1 0xe0
000005f9: SHL
000005fa: DUP2
000005fb: MSTORE
000005fc: PUSH1 0x01
000005fe: PUSH1 0x01
00000600: PUSH1 0xa0
00000602: SHL
00000603: SUB
00000604: PUSH32 0x00000000000000000000000039053d51b77dc0d36036fc1fcc8cb819df8ef37a
00000625: AND
00000626: SWAP1
00000627: PUSH4 0xeea9064b
0000062c: SWAP1
0000062d: PUSH2 0x063e
00000630: SWAP1
00000631: DUP7
00000632: SWAP1
00000633: DUP7
00000634: SWAP1
00000635: DUP7
00000636: SWAP1
00000637: PUSH1 0x04
00000639: ADD
0000063a: PUSH2 0x1438
0000063d: JUMP
0000063e: JUMPDEST
0000063f: PUSH0
00000640: PUSH1 0x40
00000642: MLOAD
00000643: DUP1
00000644: DUP4
00000645: SUB
00000646: DUP2
00000647: PUSH0
00000648: DUP8
00000649: DUP1
0000064a: EXTCODESIZE
0000064b: ISZERO
0000064c: DUP1
0000064d: ISZERO
0000064e: PUSH2 0x0655
00000651: JUMPI
00000652: PUSH0
00000653: PUSH0
00000654: REVERT
00000655: JUMPDEST
00000656: POP
00000657: GAS
00000658: CALL
00000659: ISZERO
0000065a: DUP1
0000065b: ISZERO
0000065c: PUSH2 0x0667
0000065f: JUMPI
00000660: RETURNDATASIZE
00000661: PUSH0
00000662: PUSH0
00000663: RETURNDATACOPY
00000664: RETURNDATASIZE
00000665: PUSH0
00000666: REVERT
00000667: JUMPDEST
00000668: POP
00000669: POP
0000066a: POP
0000066b: POP
0000066c: POP
0000066d: POP
0000066e: POP
0000066f: JUMP
00000670: JUMPDEST
00000671: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
00000692: DUP1
00000693: SLOAD
00000694: PUSH1 0x01
00000696: PUSH1 0x40
00000698: SHL
00000699: DUP2
0000069a: DIV
0000069b: PUSH1 0xff
0000069d: AND
0000069e: ISZERO
0000069f: SWAP1
000006a0: PUSH1 0x01
000006a2: PUSH1 0x01
000006a4: PUSH1 0x40
000006a6: SHL
000006a7: SUB
000006a8: AND
000006a9: PUSH0
000006aa: DUP2
000006ab: ISZERO
000006ac: DUP1
000006ad: ISZERO
000006ae: PUSH2 0x06b4
000006b1: JUMPI
000006b2: POP
000006b3: DUP3
000006b4: JUMPDEST
000006b5: SWAP1
000006b6: POP
000006b7: PUSH0
000006b8: DUP3
000006b9: PUSH1 0x01
000006bb: PUSH1 0x01
000006bd: PUSH1 0x40
000006bf: SHL
000006c0: SUB
000006c1: AND
000006c2: PUSH1 0x01
000006c4: EQ
000006c5: DUP1
000006c6: ISZERO
000006c7: PUSH2 0x06cf
000006ca: JUMPI
000006cb: POP
000006cc: ADDRESS
000006cd: EXTCODESIZE
000006ce: ISZERO
000006cf: JUMPDEST
000006d0: SWAP1
000006d1: POP
000006d2: DUP2
000006d3: ISZERO
000006d4: DUP1
000006d5: ISZERO
000006d6: PUSH2 0x06dd
000006d9: JUMPI
000006da: POP
000006db: DUP1
000006dc: ISZERO
000006dd: JUMPDEST
000006de: ISZERO
000006df: PUSH2 0x06fb
000006e2: JUMPI
000006e3: PUSH1 0x40
000006e5: MLOAD
000006e6: PUSH4 0xf92ee8a9
000006eb: PUSH1 0xe0
000006ed: SHL
000006ee: DUP2
000006ef: MSTORE
000006f0: PUSH1 0x04
000006f2: ADD
000006f3: PUSH1 0x40
000006f5: MLOAD
000006f6: DUP1
000006f7: SWAP2
000006f8: SUB
000006f9: SWAP1
000006fa: REVERT
000006fb: JUMPDEST
000006fc: DUP5
000006fd: SLOAD
000006fe: PUSH8 0xffffffffffffffff
00000707: NOT
00000708: AND
00000709: PUSH1 0x01
0000070b: OR
0000070c: DUP6
0000070d: SSTORE
0000070e: DUP4
0000070f: ISZERO
00000710: PUSH2 0x0725
00000713: JUMPI
00000714: DUP5
00000715: SLOAD
00000716: PUSH1 0xff
00000718: PUSH1 0x40
0000071a: SHL
0000071b: NOT
0000071c: AND
0000071d: PUSH1 0x01
0000071f: PUSH1 0x40
00000721: SHL
00000722: OR
00000723: DUP6
00000724: SSTORE
00000725: JUMPDEST
00000726: PUSH2 0x072e
00000729: DUP7
0000072a: PUSH2 0x0f9c
0000072d: JUMP
0000072e: JUMPDEST
0000072f: PUSH32 0x501caad7d5b9c1542c99d193b659cbf5c57571609bcfc93d65f1e159821d6200
00000750: DUP8
00000751: DUP2
00000752: SSTORE
00000753: PUSH1 0x40
00000755: DUP1
00000756: MLOAD
00000757: PUSH4 0x426c0831
0000075c: PUSH1 0xe1
0000075e: SHL
0000075f: DUP2
00000760: MSTORE
00000761: SWAP1
00000762: MLOAD
00000763: PUSH1 0x01
00000765: PUSH1 0x01
00000767: PUSH1 0xa0
00000769: SHL
0000076a: SUB
0000076b: PUSH32 0x00000000000000000000000091e677b07f7af907ec9a428aafa9fc14a0d3a338
0000078c: AND
0000078d: SWAP2
0000078e: PUSH4 0x84d81062
00000793: SWAP2
00000794: PUSH1 0x04
00000796: DUP1
00000797: DUP4
00000798: ADD
00000799: SWAP3
0000079a: PUSH1 0x20
0000079c: SWAP3
0000079d: SWAP2
0000079e: SWAP1
0000079f: DUP3
000007a0: SWAP1
000007a1: SUB
000007a2: ADD
000007a3: DUP2
000007a4: PUSH0
000007a5: DUP8
000007a6: GAS
000007a7: CALL
000007a8: ISZERO
000007a9: DUP1
000007aa: ISZERO
000007ab: PUSH2 0x07b6
000007ae: JUMPI
000007af: RETURNDATASIZE
000007b0: PUSH0
000007b1: PUSH0
000007b2: RETURNDATACOPY
000007b3: RETURNDATASIZE
000007b4: PUSH0
000007b5: REVERT
000007b6: JUMPDEST
000007b7: POP
000007b8: POP
000007b9: POP
000007ba: POP
000007bb: PUSH1 0x40
000007bd: MLOAD
000007be: RETURNDATASIZE
000007bf: PUSH1 0x1f
000007c1: NOT
000007c2: PUSH1 0x1f
000007c4: DUP3
000007c5: ADD
000007c6: AND
000007c7: DUP3
000007c8: ADD
000007c9: DUP1
000007ca: PUSH1 0x40
000007cc: MSTORE
000007cd: POP
000007ce: DUP2
000007cf: ADD
000007d0: SWAP1
000007d1: PUSH2 0x07da
000007d4: SWAP2
000007d5: SWAP1
000007d6: PUSH2 0x14b6
000007d9: JUMP
000007da: JUMPDEST
000007db: PUSH1 0x01
000007dd: SWAP2
000007de: SWAP1
000007df: SWAP2
000007e0: ADD
000007e1: DUP1
000007e2: SLOAD
000007e3: PUSH1 0x01
000007e5: PUSH1 0x01
000007e7: PUSH1 0xa0
000007e9: SHL
000007ea: SUB
000007eb: NOT
000007ec: AND
000007ed: PUSH1 0x01
000007ef: PUSH1 0x01
000007f1: PUSH1 0xa0
000007f3: SHL
000007f4: SUB
000007f5: SWAP1
000007f6: SWAP3
000007f7: AND
000007f8: SWAP2
000007f9: SWAP1
000007fa: SWAP2
000007fb: OR
000007fc: SWAP1
000007fd: SSTORE
000007fe: DUP4
000007ff: ISZERO
00000800: PUSH2 0x0667
00000803: JUMPI
00000804: DUP5
00000805: SLOAD
00000806: PUSH1 0xff
00000808: PUSH1 0x40
0000080a: SHL
0000080b: NOT
0000080c: AND
0000080d: DUP6
0000080e: SSTORE
0000080f: PUSH1 0x40
00000811: MLOAD
00000812: PUSH1 0x01
00000814: DUP2
00000815: MSTORE
00000816: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2
00000837: SWAP1
00000838: PUSH1 0x20
0000083a: ADD
0000083b: PUSH1 0x40
0000083d: MLOAD
0000083e: DUP1
0000083f: SWAP2
00000840: SUB
00000841: SWAP1
00000842: LOG1
00000843: POP
00000844: POP
00000845: POP
00000846: POP
00000847: POP
00000848: POP
00000849: POP
0000084a: JUMP
0000084b: JUMPDEST
0000084c: PUSH0
0000084d: PUSH1 0x60
0000084f: CALLER
00000850: PUSH1 0x01
00000852: PUSH1 0x01
00000854: PUSH1 0xa0
00000856: SHL
00000857: SUB
00000858: PUSH32 0x0000000000000000000000009e1e4fcb49931df5743e659ad910d331735c3860
00000879: AND
0000087a: EQ
0000087b: DUP1
0000087c: ISZERO
0000087d: SWAP1
0000087e: PUSH2 0x08b0
00000881: JUMPI
00000882: POP
00000883: CALLER
00000884: PUSH1 0x01
00000886: PUSH1 0x01
00000888: PUSH1 0xa0
0000088a: SHL
0000088b: SUB
0000088c: PUSH32 0x000000000000000000000000f7b6b32492c2e13799d921e84202450131bd238b
000008ad: AND
000008ae: EQ
000008af: ISZERO
000008b0: JUMPDEST
000008b1: ISZERO
000008b2: PUSH2 0x08cd
000008b5: JUMPI
000008b6: PUSH1 0x40
000008b8: MLOAD
000008b9: PUSH3 0x82b429
000008bd: PUSH1 0xe8
000008bf: SHL
000008c0: DUP2
000008c1: MSTORE
000008c2: PUSH1 0x04
000008c4: ADD
000008c5: PUSH1 0x40
000008c7: MLOAD
000008c8: DUP1
000008c9: SWAP2
000008ca: SUB
000008cb: SWAP1
000008cc: REVERT
000008cd: JUMPDEST
000008ce: DUP6
000008cf: PUSH1 0x01
000008d1: PUSH1 0x01
000008d3: PUSH1 0xa0
000008d5: SHL
000008d6: SUB
000008d7: AND
000008d8: DUP6
000008d9: DUP6
000008da: DUP6
000008db: PUSH1 0x40
000008dd: MLOAD
000008de: PUSH2 0x08e8
000008e1: SWAP3
000008e2: SWAP2
000008e3: SWAP1
000008e4: PUSH2 0x14d1
000008e7: JUMP
000008e8: JUMPDEST
000008e9: PUSH0
000008ea: PUSH1 0x40
000008ec: MLOAD
000008ed: DUP1
000008ee: DUP4
000008ef: SUB
000008f0: DUP2
000008f1: DUP6
000008f2: DUP8
000008f3: GAS
000008f4: CALL
000008f5: SWAP3
000008f6: POP
000008f7: POP
000008f8: POP
000008f9: RETURNDATASIZE
000008fa: DUP1
000008fb: PUSH0
000008fc: DUP2
000008fd: EQ
000008fe: PUSH2 0x0922
00000901: JUMPI
00000902: PUSH1 0x40
00000904: MLOAD
00000905: SWAP2
00000906: POP
00000907: PUSH1 0x1f
00000909: NOT
0000090a: PUSH1 0x3f
0000090c: RETURNDATASIZE
0000090d: ADD
0000090e: AND
0000090f: DUP3
00000910: ADD
00000911: PUSH1 0x40
00000913: MSTORE
00000914: RETURNDATASIZE
00000915: DUP3
00000916: MSTORE
00000917: RETURNDATASIZE
00000918: PUSH0
00000919: PUSH1 0x20
0000091b: DUP5
0000091c: ADD
0000091d: RETURNDATACOPY
0000091e: PUSH2 0x0927
00000921: JUMP
00000922: JUMPDEST
00000923: PUSH1 0x60
00000925: SWAP2
00000926: POP
00000927: JUMPDEST
00000928: POP
00000929: SWAP2
0000092a: POP
0000092b: SWAP2
0000092c: POP
0000092d: SWAP5
0000092e: POP
0000092f: SWAP5
00000930: SWAP3
00000931: POP
00000932: POP
00000933: POP
00000934: JUMP
00000935: JUMPDEST
00000936: CALLER
00000937: PUSH2 0x0954
0000093a: PUSH0
0000093b: MLOAD
0000093c: PUSH1 0x20
0000093e: PUSH2 0x19ba
00000941: PUSH0
00000942: CODECOPY
00000943: PUSH0
00000944: MLOAD
00000945: SWAP1
00000946: PUSH0
00000947: MSTORE
00000948: SLOAD
00000949: PUSH1 0x01
0000094b: PUSH1 0x01
0000094d: PUSH1 0xa0
0000094f: SHL
00000950: SUB
00000951: AND
00000952: SWAP1
00000953: JUMP
00000954: JUMPDEST
00000955: PUSH1 0x01
00000957: PUSH1 0x01
00000959: PUSH1 0xa0
0000095b: SHL
0000095c: SUB
0000095d: AND
0000095e: DUP2
0000095f: PUSH1 0x01
00000961: PUSH1 0x01
00000963: PUSH1 0xa0
00000965: SHL
00000966: SUB
00000967: AND
00000968: EQ
00000969: PUSH2 0x0994
0000096c: JUMPI
0000096d: PUSH1 0x40
0000096f: MLOAD
00000970: PUSH3 0xd1953b
00000974: PUSH1 0xe3
00000976: SHL
00000977: DUP2
00000978: MSTORE
00000979: PUSH1 0x01
0000097b: PUSH1 0x01
0000097d: PUSH1 0xa0
0000097f: SHL
00000980: SUB
00000981: DUP3
00000982: AND
00000983: PUSH1 0x04
00000985: DUP3
00000986: ADD
00000987: MSTORE
00000988: PUSH1 0x24
0000098a: ADD
0000098b: JUMPDEST
0000098c: PUSH1 0x40
0000098e: MLOAD
0000098f: DUP1
00000990: SWAP2
00000991: SUB
00000992: SWAP1
00000993: REVERT
00000994: JUMPDEST
00000995: DUP2
00000996: PUSH1 0x01
00000998: PUSH1 0x01
0000099a: PUSH1 0xa0
0000099c: SHL
0000099d: SUB
0000099e: AND
0000099f: EXTCODESIZE
000009a0: PUSH0
000009a1: SUB
000009a2: PUSH2 0x09c9
000009a5: JUMPI
000009a6: PUSH1 0x40
000009a8: MLOAD
000009a9: PUSH4 0x61798f2f
000009ae: PUSH1 0xe1
000009b0: SHL
000009b1: DUP2
000009b2: MSTORE
000009b3: PUSH1 0x01
000009b5: PUSH1 0x01
000009b7: PUSH1 0xa0
000009b9: SHL
000009ba: SUB
000009bb: DUP4
000009bc: AND
000009bd: PUSH1 0x04
000009bf: DUP3
000009c0: ADD
000009c1: MSTORE
000009c2: PUSH1 0x24
000009c4: ADD
000009c5: PUSH2 0x098b
000009c8: JUMP
000009c9: JUMPDEST
000009ca: PUSH2 0x09d2
000009cd: DUP3
000009ce: PUSH2 0x0fb0
000009d1: JUMP
000009d2: JUMPDEST
000009d3: POP
000009d4: POP
000009d5: JUMP
000009d6: JUMPDEST
000009d7: PUSH1 0x60
000009d9: CALLER
000009da: PUSH1 0x01
000009dc: PUSH1 0x01
000009de: PUSH1 0xa0
000009e0: SHL
000009e1: SUB
000009e2: PUSH32 0x0000000000000000000000009e1e4fcb49931df5743e659ad910d331735c3860
00000a03: AND
00000a04: EQ
00000a05: PUSH2 0x0a20
00000a08: JUMPI
00000a09: PUSH1 0x40
00000a0b: MLOAD
00000a0c: PUSH3 0x82b429
00000a10: PUSH1 0xe8
00000a12: SHL
00000a13: DUP2
00000a14: MSTORE
00000a15: PUSH1 0x04
00000a17: ADD
00000a18: PUSH1 0x40
00000a1a: MLOAD
00000a1b: DUP1
00000a1c: SWAP2
00000a1d: SUB
00000a1e: SWAP1
00000a1f: REVERT
00000a20: JUMPDEST
00000a21: PUSH1 0x40
00000a23: DUP1
00000a24: MLOAD
00000a25: PUSH1 0x01
00000a27: DUP1
00000a28: DUP3
00000a29: MSTORE
00000a2a: DUP2
00000a2b: DUP4
00000a2c: ADD
00000a2d: SWAP1
00000a2e: SWAP3
00000a2f: MSTORE
00000a30: PUSH0
00000a31: SWAP2
00000a32: DUP2
00000a33: PUSH1 0x20
00000a35: ADD
00000a36: JUMPDEST
00000a37: PUSH1 0x40
00000a39: DUP1
00000a3a: MLOAD
00000a3b: PUSH1 0x60
00000a3d: DUP1
00000a3e: DUP3
00000a3f: ADD
00000a40: DUP4
00000a41: MSTORE
00000a42: DUP1
00000a43: DUP3
00000a44: MSTORE
00000a45: PUSH1 0x20
00000a47: DUP3
00000a48: ADD
00000a49: MSTORE
00000a4a: PUSH0
00000a4b: SWAP2
00000a4c: DUP2
00000a4d: ADD
00000a4e: SWAP2
00000a4f: SWAP1
00000a50: SWAP2
00000a51: MSTORE
00000a52: DUP2
00000a53: MSTORE
00000a54: PUSH1 0x20
00000a56: ADD
00000a57: SWAP1
00000a58: PUSH1 0x01
00000a5a: SWAP1
00000a5b: SUB
00000a5c: SWAP1
00000a5d: DUP2
00000a5e: PUSH2 0x0a36
00000a61: JUMPI
00000a62: POP
00000a63: POP
00000a64: PUSH1 0x40
00000a66: DUP1
00000a67: MLOAD
00000a68: PUSH1 0x01
00000a6a: DUP1
00000a6b: DUP3
00000a6c: MSTORE
00000a6d: DUP2
00000a6e: DUP4
00000a6f: ADD
00000a70: SWAP1
00000a71: SWAP3
00000a72: MSTORE
00000a73: SWAP2
00000a74: SWAP3
00000a75: POP
00000a76: PUSH0
00000a77: SWAP2
00000a78: SWAP1
00000a79: PUSH1 0x20
00000a7b: DUP1
00000a7c: DUP4
00000a7d: ADD
00000a7e: SWAP1
00000a7f: DUP1
00000a80: CALLDATASIZE
00000a81: DUP4
00000a82: CALLDATACOPY
00000a83: ADD
00000a84: SWAP1
00000a85: POP
00000a86: POP
00000a87: SWAP1
00000a88: POP
00000a89: DUP4
00000a8a: DUP2
00000a8b: PUSH0
00000a8c: DUP2
00000a8d: MLOAD
00000a8e: DUP2
00000a8f: LT
00000a90: PUSH2 0x0a9b
00000a93: JUMPI
00000a94: PUSH2 0x0a9b
00000a97: PUSH2 0x14f4
00000a9a: JUMP
00000a9b: JUMPDEST
00000a9c: PUSH1 0x20
00000a9e: SWAP1
00000a9f: DUP2
00000aa0: MUL
00000aa1: SWAP2
00000aa2: SWAP1
00000aa3: SWAP2
00000aa4: ADD
00000aa5: ADD
00000aa6: MSTORE
00000aa7: PUSH1 0x40
00000aa9: DUP1
00000aaa: MLOAD
00000aab: PUSH1 0x01
00000aad: DUP1
00000aae: DUP3
00000aaf: MSTORE
00000ab0: DUP2
00000ab1: DUP4
00000ab2: ADD
00000ab3: SWAP1
00000ab4: SWAP3
00000ab5: MSTORE
00000ab6: PUSH0
00000ab7: SWAP2
00000ab8: DUP2
00000ab9: PUSH1 0x20
00000abb: ADD
00000abc: PUSH1 0x20
00000abe: DUP3
00000abf: MUL
00000ac0: DUP1
00000ac1: CALLDATASIZE
00000ac2: DUP4
00000ac3: CALLDATACOPY
00000ac4: ADD
00000ac5: SWAP1
00000ac6: POP
00000ac7: POP
00000ac8: SWAP1
00000ac9: POP
00000aca: PUSH20 0xbeac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0
00000adf: DUP2
00000ae0: PUSH0
00000ae1: DUP2
00000ae2: MLOAD
00000ae3: DUP2
00000ae4: LT
00000ae5: PUSH2 0x0af0
00000ae8: JUMPI
00000ae9: PUSH2 0x0af0
00000aec: PUSH2 0x14f4
00000aef: JUMP
00000af0: JUMPDEST
00000af1: PUSH1 0x01
00000af3: PUSH1 0x01
00000af5: PUSH1 0xa0
00000af7: SHL
00000af8: SUB
00000af9: SWAP1
00000afa: SWAP3
00000afb: AND
00000afc: PUSH1 0x20
00000afe: SWAP3
00000aff: DUP4
00000b00: MUL
00000b01: SWAP2
00000b02: SWAP1
00000b03: SWAP2
00000b04: ADD
00000b05: DUP3
00000b06: ADD
00000b07: MSTORE
00000b08: PUSH1 0x40
00000b0a: DUP1
00000b0b: MLOAD
00000b0c: PUSH1 0x60
00000b0e: DUP2
00000b0f: ADD
00000b10: DUP3
00000b11: MSTORE
00000b12: DUP4
00000b13: DUP2
00000b14: MSTORE
00000b15: SWAP2
00000b16: DUP3
00000b17: ADD
00000b18: DUP5
00000b19: SWAP1
00000b1a: MSTORE
00000b1b: ADDRESS
00000b1c: SWAP1
00000b1d: DUP3
00000b1e: ADD
00000b1f: MSTORE
00000b20: DUP4
00000b21: MLOAD
00000b22: DUP5
00000b23: SWAP1
00000b24: PUSH0
00000b25: SWAP1
00000b26: PUSH2 0x0b31
00000b29: JUMPI
00000b2a: PUSH2 0x0b31
00000b2d: PUSH2 0x14f4
00000b30: JUMP
00000b31: JUMPDEST
00000b32: PUSH1 0x20
00000b34: SWAP1
00000b35: DUP2
00000b36: MUL
00000b37: SWAP2
00000b38: SWAP1
00000b39: SWAP2
00000b3a: ADD
00000b3b: ADD
00000b3c: MSTORE
00000b3d: PUSH1 0x40
00000b3f: MLOAD
00000b40: PUSH4 0x06ec6e81
00000b45: PUSH1 0xe1
00000b47: SHL
00000b48: DUP2
00000b49: MSTORE
00000b4a: PUSH1 0x01
00000b4c: PUSH1 0x01
00000b4e: PUSH1 0xa0
00000b50: SHL
00000b51: SUB
00000b52: PUSH32 0x00000000000000000000000039053d51b77dc0d36036fc1fcc8cb819df8ef37a
00000b73: AND
00000b74: SWAP1
00000b75: PUSH4 0x0dd8dd02
00000b7a: SWAP1
00000b7b: PUSH2 0x0b88
00000b7e: SWAP1
00000b7f: DUP7
00000b80: SWAP1
00000b81: PUSH1 0x04
00000b83: ADD
00000b84: PUSH2 0x1508
00000b87: JUMP
00000b88: JUMPDEST
00000b89: PUSH0
00000b8a: PUSH1 0x40
00000b8c: MLOAD
00000b8d: DUP1
00000b8e: DUP4
00000b8f: SUB
00000b90: DUP2
00000b91: PUSH0
00000b92: DUP8
00000b93: GAS
00000b94: CALL
00000b95: ISZERO
00000b96: DUP1
00000b97: ISZERO
00000b98: PUSH2 0x0ba3
00000b9b: JUMPI
00000b9c: RETURNDATASIZE
00000b9d: PUSH0
00000b9e: PUSH0
00000b9f: RETURNDATACOPY
00000ba0: RETURNDATASIZE
00000ba1: PUSH0
00000ba2: REVERT
00000ba3: JUMPDEST
00000ba4: POP
00000ba5: POP
00000ba6: POP
00000ba7: POP
00000ba8: PUSH1 0x40
00000baa: MLOAD
00000bab: RETURNDATASIZE
00000bac: PUSH0
00000bad: DUP3
00000bae: RETURNDATACOPY
00000baf: PUSH1 0x1f
00000bb1: RETURNDATASIZE
00000bb2: SWAP1
00000bb3: DUP2
00000bb4: ADD
00000bb5: PUSH1 0x1f
00000bb7: NOT
00000bb8: AND
00000bb9: DUP3
00000bba: ADD
00000bbb: PUSH1 0x40
00000bbd: MSTORE
00000bbe: PUSH2 0x0bca
00000bc1: SWAP2
00000bc2: SWAP1
00000bc3: DUP2
00000bc4: ADD
00000bc5: SWAP1
00000bc6: PUSH2 0x160d
00000bc9: JUMP
00000bca: JUMPDEST
00000bcb: SWAP4
00000bcc: POP
00000bcd: POP
00000bce: POP
00000bcf: POP
00000bd0: JUMPDEST
00000bd1: SWAP2
00000bd2: SWAP1
00000bd3: POP
00000bd4: JUMP
00000bd5: JUMPDEST
00000bd6: PUSH0
00000bd7: MLOAD
00000bd8: PUSH1 0x20
00000bda: PUSH2 0x19ba
00000bdd: PUSH0
00000bde: CODECOPY
00000bdf: PUSH0
00000be0: MLOAD
00000be1: SWAP1
00000be2: PUSH0
00000be3: MSTORE
00000be4: DUP1
00000be5: SLOAD
00000be6: PUSH0
00000be7: SWAP2
00000be8: SWAP1
00000be9: PUSH1 0x01
00000beb: PUSH1 0xa0
00000bed: SHL
00000bee: SWAP1
00000bef: DIV
00000bf0: PUSH1 0xff
00000bf2: AND
00000bf3: PUSH2 0x0bfc
00000bf6: JUMPI
00000bf7: PUSH0
00000bf8: PUSH2 0x0c05
00000bfb: JUMP
00000bfc: JUMPDEST
00000bfd: PUSH4 0x8fb36037
00000c02: PUSH1 0xe0
00000c04: SHL
00000c05: JUMPDEST
00000c06: SWAP2
00000c07: POP
00000c08: POP
00000c09: SWAP1
00000c0a: JUMP
00000c0b: JUMPDEST
00000c0c: PUSH32 0x000000000000000000000000f7b6b32492c2e13799d921e84202450131bd238b
00000c2d: PUSH1 0x01
00000c2f: PUSH1 0x01
00000c31: PUSH1 0xa0
00000c33: SHL
00000c34: SUB
00000c35: AND
00000c36: PUSH4 0x532329ca
00000c3b: PUSH1 0x40
00000c3d: MLOAD
00000c3e: DUP2
00000c3f: PUSH4 0xffffffff
00000c44: AND
00000c45: PUSH1 0xe0
00000c47: SHL
00000c48: DUP2
00000c49: MSTORE
00000c4a: PUSH1 0x04
00000c4c: ADD
00000c4d: PUSH0
00000c4e: PUSH1 0x40
00000c50: MLOAD
00000c51: DUP1
00000c52: DUP4
00000c53: SUB
00000c54: DUP2
00000c55: PUSH0
00000c56: DUP8
00000c57: DUP1
00000c58: EXTCODESIZE
00000c59: ISZERO
00000c5a: DUP1
00000c5b: ISZERO
00000c5c: PUSH2 0x0c63
00000c5f: JUMPI
00000c60: PUSH0
00000c61: PUSH0
00000c62: REVERT
00000c63: JUMPDEST
00000c64: POP
00000c65: GAS
00000c66: CALL
00000c67: ISZERO
00000c68: DUP1
00000c69: ISZERO
00000c6a: PUSH2 0x0c75
00000c6d: JUMPI
00000c6e: RETURNDATASIZE
00000c6f: PUSH0
00000c70: PUSH0
00000c71: RETURNDATACOPY
00000c72: RETURNDATASIZE
00000c73: PUSH0
00000c74: REVERT
00000c75: JUMPDEST
00000c76: POP
00000c77: POP
00000c78: POP
00000c79: POP
00000c7a: PUSH32 0x0000000000000000000000009e1e4fcb49931df5743e659ad910d331735c3860
00000c9b: PUSH1 0x01
00000c9d: PUSH1 0x01
00000c9f: PUSH1 0xa0
00000ca1: SHL
00000ca2: SUB
00000ca3: AND
00000ca4: CALLER
00000ca5: PUSH1 0x01
00000ca7: PUSH1 0x01
00000ca9: PUSH1 0xa0
00000cab: SHL
00000cac: SUB
00000cad: AND
00000cae: EQ
00000caf: PUSH2 0x0cca
00000cb2: JUMPI
00000cb3: PUSH1 0x40
00000cb5: MLOAD
00000cb6: PUSH3 0x82b429
00000cba: PUSH1 0xe8
00000cbc: SHL
00000cbd: DUP2
00000cbe: MSTORE
00000cbf: PUSH1 0x04
00000cc1: ADD
00000cc2: PUSH1 0x40
00000cc4: MLOAD
00000cc5: DUP1
00000cc6: SWAP2
00000cc7: SUB
00000cc8: SWAP1
00000cc9: REVERT
00000cca: JUMPDEST
00000ccb: PUSH1 0x40
00000ccd: MLOAD
00000cce: PUSH4 0x9435bb43
00000cd3: PUSH1 0xe0
00000cd5: SHL
00000cd6: DUP2
00000cd7: MSTORE
00000cd8: PUSH1 0x01
00000cda: PUSH1 0x01
00000cdc: PUSH1 0xa0
00000cde: SHL
00000cdf: SUB
00000ce0: PUSH32 0x00000000000000000000000039053d51b77dc0d36036fc1fcc8cb819df8ef37a
00000d01: AND
00000d02: SWAP1
00000d03: PUSH4 0x9435bb43
00000d08: SWAP1
00000d09: PUSH2 0x0d20
00000d0c: SWAP1
00000d0d: DUP10
00000d0e: SWAP1
00000d0f: DUP10
00000d10: SWAP1
00000d11: DUP10
00000d12: SWAP1
00000d13: DUP10
00000d14: SWAP1
00000d15: DUP10
00000d16: SWAP1
00000d17: DUP10
00000d18: SWAP1
00000d19: PUSH1 0x04
00000d1b: ADD
00000d1c: PUSH2 0x186c
00000d1f: JUMP
00000d20: JUMPDEST
00000d21: PUSH0
00000d22: PUSH1 0x40
00000d24: MLOAD
00000d25: DUP1
00000d26: DUP4
00000d27: SUB
00000d28: DUP2
00000d29: PUSH0
00000d2a: DUP8
00000d2b: DUP1
00000d2c: EXTCODESIZE
00000d2d: ISZERO
00000d2e: DUP1
00000d2f: ISZERO
00000d30: PUSH2 0x0588
00000d33: JUMPI
00000d34: PUSH0
00000d35: PUSH0
00000d36: REVERT
00000d37: JUMPDEST
00000d38: CALLER
00000d39: PUSH1 0x01
00000d3b: PUSH1 0x01
00000d3d: PUSH1 0xa0
00000d3f: SHL
00000d40: SUB
00000d41: PUSH32 0x0000000000000000000000009e1e4fcb49931df5743e659ad910d331735c3860
00000d62: AND
00000d63: EQ
00000d64: PUSH2 0x0d7f
00000d67: JUMPI
00000d68: PUSH1 0x40
00000d6a: MLOAD
00000d6b: PUSH3 0x82b429
00000d6f: PUSH1 0xe8
00000d71: SHL
00000d72: DUP2
00000d73: MSTORE
00000d74: PUSH1 0x04
00000d76: ADD
00000d77: PUSH1 0x40
00000d79: MLOAD
00000d7a: DUP1
00000d7b: SWAP2
00000d7c: SUB
00000d7d: SWAP1
00000d7e: REVERT
00000d7f: JUMPDEST
00000d80: PUSH0
00000d81: PUSH32 0x501caad7d5b9c1542c99d193b659cbf5c57571609bcfc93d65f1e159821d6200
00000da2: PUSH1 0x01
00000da4: DUP2
00000da5: ADD
00000da6: SLOAD
00000da7: PUSH1 0x40
00000da9: MLOAD
00000daa: PUSH4 0xd06d5587
00000daf: PUSH1 0xe0
00000db1: SHL
00000db2: DUP2
00000db3: MSTORE
00000db4: PUSH1 0x01
00000db6: PUSH1 0x01
00000db8: PUSH1 0xa0
00000dba: SHL
00000dbb: SUB
00000dbc: DUP6
00000dbd: DUP2
00000dbe: AND
00000dbf: PUSH1 0x04
00000dc1: DUP4
00000dc2: ADD
00000dc3: MSTORE
00000dc4: SWAP3
00000dc5: SWAP4
00000dc6: POP
00000dc7: SWAP2
00000dc8: AND
00000dc9: SWAP1
00000dca: PUSH4 0xd06d5587
00000dcf: SWAP1
00000dd0: PUSH1 0x24
00000dd2: ADD
00000dd3: PUSH0
00000dd4: PUSH1 0x40
00000dd6: MLOAD
00000dd7: DUP1
00000dd8: DUP4
00000dd9: SUB
00000dda: DUP2
00000ddb: PUSH0
00000ddc: DUP8
00000ddd: DUP1
00000dde: EXTCODESIZE
00000ddf: ISZERO
00000de0: DUP1
00000de1: ISZERO
00000de2: PUSH2 0x0de9
00000de5: JUMPI
00000de6: PUSH0
00000de7: PUSH0
00000de8: REVERT
00000de9: JUMPDEST
00000dea: POP
00000deb: GAS
00000dec: CALL
00000ded: ISZERO
00000dee: DUP1
00000def: ISZERO
00000df0: PUSH2 0x0dfb
00000df3: JUMPI
00000df4: RETURNDATASIZE
00000df5: PUSH0
00000df6: PUSH0
00000df7: RETURNDATACOPY
00000df8: RETURNDATASIZE
00000df9: PUSH0
00000dfa: REVERT
00000dfb: JUMPDEST
00000dfc: POP
00000dfd: POP
00000dfe: POP
00000dff: POP
00000e00: POP
00000e01: POP
00000e02: JUMP
00000e03: JUMPDEST
00000e04: PUSH1 0x60
00000e06: CALLER
00000e07: PUSH1 0x01
00000e09: PUSH1 0x01
00000e0b: PUSH1 0xa0
00000e0d: SHL
00000e0e: SUB
00000e0f: PUSH32 0x0000000000000000000000009e1e4fcb49931df5743e659ad910d331735c3860
00000e30: AND
00000e31: EQ
00000e32: PUSH2 0x0e4d
00000e35: JUMPI
00000e36: PUSH1 0x40
00000e38: MLOAD
00000e39: PUSH3 0x82b429
00000e3d: PUSH1 0xe8
00000e3f: SHL
00000e40: DUP2
00000e41: MSTORE
00000e42: PUSH1 0x04
00000e44: ADD
00000e45: PUSH1 0x40
00000e47: MLOAD
00000e48: DUP1
00000e49: SWAP2
00000e4a: SUB
00000e4b: SWAP1
00000e4c: REVERT
00000e4d: JUMPDEST
00000e4e: PUSH1 0x40
00000e50: MLOAD
00000e51: PUSH4 0x36a2fa19
00000e56: PUSH1 0xe2
00000e58: SHL
00000e59: DUP2
00000e5a: MSTORE
00000e5b: ADDRESS
00000e5c: PUSH1 0x04
00000e5e: DUP3
00000e5f: ADD
00000e60: MSTORE
00000e61: PUSH32 0x00000000000000000000000039053d51b77dc0d36036fc1fcc8cb819df8ef37a
00000e82: PUSH1 0x01
00000e84: PUSH1 0x01
00000e86: PUSH1 0xa0
00000e88: SHL
00000e89: SUB
00000e8a: AND
00000e8b: SWAP1
00000e8c: PUSH4 0xda8be864
00000e91: SWAP1
00000e92: PUSH1 0x24
00000e94: ADD
00000e95: PUSH0
00000e96: PUSH1 0x40
00000e98: MLOAD
00000e99: DUP1
00000e9a: DUP4
00000e9b: SUB
00000e9c: DUP2
00000e9d: PUSH0
00000e9e: DUP8
00000e9f: GAS
00000ea0: CALL
00000ea1: ISZERO
00000ea2: DUP1
00000ea3: ISZERO
00000ea4: PUSH2 0x0eaf
00000ea7: JUMPI
00000ea8: RETURNDATASIZE
00000ea9: PUSH0
00000eaa: PUSH0
00000eab: RETURNDATACOPY
00000eac: RETURNDATASIZE
00000ead: PUSH0
00000eae: REVERT
00000eaf: JUMPDEST
00000eb0: POP
00000eb1: POP
00000eb2: POP
00000eb3: POP
00000eb4: PUSH1 0x40
00000eb6: MLOAD
00000eb7: RETURNDATASIZE
00000eb8: PUSH0
00000eb9: DUP3
00000eba: RETURNDATACOPY
00000ebb: PUSH1 0x1f
00000ebd: RETURNDATASIZE
00000ebe: SWAP1
00000ebf: DUP2
00000ec0: ADD
00000ec1: PUSH1 0x1f
00000ec3: NOT
00000ec4: AND
00000ec5: DUP3
00000ec6: ADD
00000ec7: PUSH1 0x40
00000ec9: MSTORE
00000eca: PUSH2 0x0ed6
00000ecd: SWAP2
00000ece: SWAP1
00000ecf: DUP2
00000ed0: ADD
00000ed1: SWAP1
00000ed2: PUSH2 0x160d
00000ed5: JUMP
00000ed6: JUMPDEST
00000ed7: SWAP1
00000ed8: POP
00000ed9: SWAP1
00000eda: JUMP
00000edb: JUMPDEST
00000edc: CALLER
00000edd: PUSH1 0x01
00000edf: PUSH1 0x01
00000ee1: PUSH1 0xa0
00000ee3: SHL
00000ee4: SUB
00000ee5: PUSH32 0x0000000000000000000000009e1e4fcb49931df5743e659ad910d331735c3860
00000f06: AND
00000f07: EQ
00000f08: PUSH2 0x0f23
00000f0b: JUMPI
00000f0c: PUSH1 0x40
00000f0e: MLOAD
00000f0f: PUSH3 0x82b429
00000f13: PUSH1 0xe8
00000f15: SHL
00000f16: DUP2
00000f17: MSTORE
00000f18: PUSH1 0x04
00000f1a: ADD
00000f1b: PUSH1 0x40
00000f1d: MLOAD
00000f1e: DUP1
00000f1f: SWAP2
00000f20: SUB
00000f21: SWAP1
00000f22: REVERT
00000f23: JUMPDEST
00000f24: PUSH1 0x40
00000f26: MLOAD
00000f27: PUSH4 0xa0169ddd
00000f2c: PUSH1 0xe0
00000f2e: SHL
00000f2f: DUP2
00000f30: MSTORE
00000f31: PUSH1 0x01
00000f33: PUSH1 0x01
00000f35: PUSH1 0xa0
00000f37: SHL
00000f38: SUB
00000f39: DUP3
00000f3a: DUP2
00000f3b: AND
00000f3c: PUSH1 0x04
00000f3e: DUP4
00000f3f: ADD
00000f40: MSTORE
00000f41: PUSH32 0x0000000000000000000000007750d328b314effa365a0402ccfd489b80b0adda
00000f62: AND
00000f63: SWAP1
00000f64: PUSH4 0xa0169ddd
00000f69: SWAP1
00000f6a: PUSH1 0x24
00000f6c: ADD
00000f6d: PUSH0
00000f6e: PUSH1 0x40
00000f70: MLOAD
00000f71: DUP1
00000f72: DUP4
00000f73: SUB
00000f74: DUP2
00000f75: PUSH0
00000f76: DUP8
00000f77: DUP1
00000f78: EXTCODESIZE
00000f79: ISZERO
00000f7a: DUP1
00000f7b: ISZERO
00000f7c: PUSH2 0x0f83
00000f7f: JUMPI
00000f80: PUSH0
00000f81: PUSH0
00000f82: REVERT
00000f83: JUMPDEST
00000f84: POP
00000f85: GAS
00000f86: CALL
00000f87: ISZERO
00000f88: DUP1
00000f89: ISZERO
00000f8a: PUSH2 0x0f95
00000f8d: JUMPI
00000f8e: RETURNDATASIZE
00000f8f: PUSH0
00000f90: PUSH0
00000f91: RETURNDATACOPY
00000f92: RETURNDATASIZE
00000f93: PUSH0
00000f94: REVERT
00000f95: JUMPDEST
00000f96: POP
00000f97: POP
00000f98: POP
00000f99: POP
00000f9a: POP
00000f9b: JUMP
00000f9c: JUMPDEST
00000f9d: PUSH2 0x0fa4
00000fa0: PUSH2 0x1010
00000fa3: JUMP
00000fa4: JUMPDEST
00000fa5: PUSH2 0x0fad
00000fa8: DUP2
00000fa9: PUSH2 0x105b
00000fac: JUMP
00000fad: JUMPDEST
00000fae: POP
00000faf: JUMP
00000fb0: JUMPDEST
00000fb1: PUSH0
00000fb2: MLOAD
00000fb3: PUSH1 0x20
00000fb5: PUSH2 0x19ba
00000fb8: PUSH0
00000fb9: CODECOPY
00000fba: PUSH0
00000fbb: MLOAD
00000fbc: SWAP1
00000fbd: PUSH0
00000fbe: MSTORE
00000fbf: DUP1
00000fc0: SLOAD
00000fc1: PUSH1 0x01
00000fc3: PUSH1 0x01
00000fc5: PUSH1 0xa0
00000fc7: SHL
00000fc8: SUB
00000fc9: DUP4
00000fca: AND
00000fcb: PUSH1 0x01
00000fcd: PUSH1 0x01
00000fcf: PUSH1 0xa0
00000fd1: SHL
00000fd2: SUB
00000fd3: NOT
00000fd4: SWAP1
00000fd5: SWAP2
00000fd6: AND
00000fd7: DUP2
00000fd8: OR
00000fd9: DUP3
00000fda: SSTORE
00000fdb: PUSH1 0x40
00000fdd: DUP1
00000fde: MLOAD
00000fdf: SWAP2
00000fe0: DUP3
00000fe1: MSTORE
00000fe2: MLOAD
00000fe3: PUSH32 0x2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad
00001004: SWAP2
00001005: DUP2
00001006: SWAP1
00001007: SUB
00001008: PUSH1 0x20
0000100a: ADD
0000100b: SWAP1
0000100c: LOG1
0000100d: POP
0000100e: POP
0000100f: JUMP
00001010: JUMPDEST
00001011: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
00001032: SLOAD
00001033: PUSH1 0x01
00001035: PUSH1 0x40
00001037: SHL
00001038: SWAP1
00001039: DIV
0000103a: PUSH1 0xff
0000103c: AND
0000103d: PUSH2 0x1059
00001040: JUMPI
00001041: PUSH1 0x40
00001043: MLOAD
00001044: PUSH4 0x1afcd79f
00001049: PUSH1 0xe3
0000104b: SHL
0000104c: DUP2
0000104d: MSTORE
0000104e: PUSH1 0x04
00001050: ADD
00001051: PUSH1 0x40
00001053: MLOAD
00001054: DUP1
00001055: SWAP2
00001056: SUB
00001057: SWAP1
00001058: REVERT
00001059: JUMPDEST
0000105a: JUMP
0000105b: JUMPDEST
0000105c: PUSH2 0x1063
0000105f: PUSH2 0x1010
00001062: JUMP
00001063: JUMPDEST
00001064: PUSH2 0x0fad
00001067: DUP2
00001068: PUSH2 0x0fb0
0000106b: JUMP
0000106c: JUMPDEST
0000106d: PUSH0
0000106e: PUSH0
0000106f: DUP4
00001070: PUSH1 0x1f
00001072: DUP5
00001073: ADD
00001074: SLT
00001075: PUSH2 0x107c
00001078: JUMPI
00001079: PUSH0
0000107a: PUSH0
0000107b: REVERT
0000107c: JUMPDEST
0000107d: POP
0000107e: DUP2
0000107f: CALLDATALOAD
00001080: PUSH1 0x01
00001082: PUSH1 0x01
00001084: PUSH1 0x40
00001086: SHL
00001087: SUB
00001088: DUP2
00001089: GT
0000108a: ISZERO
0000108b: PUSH2 0x1092
0000108e: JUMPI
0000108f: PUSH0
00001090: PUSH0
00001091: REVERT
00001092: JUMPDEST
00001093: PUSH1 0x20
00001095: DUP4
00001096: ADD
00001097: SWAP2
00001098: POP
00001099: DUP4
0000109a: PUSH1 0x20
0000109c: DUP3
0000109d: DUP6
0000109e: ADD
0000109f: ADD
000010a0: GT
000010a1: ISZERO
000010a2: PUSH2 0x10a9
000010a5: JUMPI
000010a6: PUSH0
000010a7: PUSH0
000010a8: REVERT
000010a9: JUMPDEST
000010aa: SWAP3
000010ab: POP
000010ac: SWAP3
000010ad: SWAP1
000010ae: POP
000010af: JUMP
000010b0: JUMPDEST
000010b1: PUSH0
000010b2: PUSH0
000010b3: PUSH0
000010b4: PUSH0
000010b5: PUSH0
000010b6: PUSH1 0x60
000010b8: DUP7
000010b9: DUP9
000010ba: SUB
000010bb: SLT
000010bc: ISZERO
000010bd: PUSH2 0x10c4
000010c0: JUMPI
000010c1: PUSH0
000010c2: PUSH0
000010c3: REVERT
000010c4: JUMPDEST
000010c5: DUP6
000010c6: CALLDATALOAD
000010c7: PUSH1 0x01
000010c9: PUSH1 0x01
000010cb: PUSH1 0x40
000010cd: SHL
000010ce: SUB
000010cf: DUP2
000010d0: GT
000010d1: ISZERO
000010d2: PUSH2 0x10d9
000010d5: JUMPI
000010d6: PUSH0
000010d7: PUSH0
000010d8: REVERT
000010d9: JUMPDEST
000010da: PUSH2 0x10e5
000010dd: DUP9
000010de: DUP3
000010df: DUP10
000010e0: ADD
000010e1: PUSH2 0x106c
000010e4: JUMP
000010e5: JUMPDEST
000010e6: SWAP1
000010e7: SWAP7
000010e8: POP
000010e9: SWAP5
000010ea: POP
000010eb: POP
000010ec: PUSH1 0x20
000010ee: DUP7
000010ef: ADD
000010f0: CALLDATALOAD
000010f1: PUSH1 0x01
000010f3: PUSH1 0x01
000010f5: PUSH1 0x40
000010f7: SHL
000010f8: SUB
000010f9: DUP2
000010fa: GT
000010fb: ISZERO
000010fc: PUSH2 0x1103
000010ff: JUMPI
00001100: PUSH0
00001101: PUSH0
00001102: REVERT
00001103: JUMPDEST
00001104: PUSH2 0x110f
00001107: DUP9
00001108: DUP3
00001109: DUP10
0000110a: ADD
0000110b: PUSH2 0x106c
0000110e: JUMP
0000110f: JUMPDEST
00001110: SWAP7
00001111: SWAP10
00001112: SWAP6
00001113: SWAP9
00001114: POP
00001115: SWAP7
00001116: PUSH1 0x40
00001118: ADD
00001119: CALLDATALOAD
0000111a: SWAP5
0000111b: SWAP4
0000111c: POP
0000111d: POP
0000111e: POP
0000111f: POP
00001120: JUMP
00001121: JUMPDEST
00001122: PUSH1 0x01
00001124: PUSH1 0x01
00001126: PUSH1 0xa0
00001128: SHL
00001129: SUB
0000112a: DUP2
0000112b: AND
0000112c: DUP2
0000112d: EQ
0000112e: PUSH2 0x0fad
00001131: JUMPI
00001132: PUSH0
00001133: PUSH0
00001134: REVERT
00001135: JUMPDEST
00001136: DUP1
00001137: CALLDATALOAD
00001138: PUSH2 0x0bd0
0000113b: DUP2
0000113c: PUSH2 0x1121
0000113f: JUMP
00001140: JUMPDEST
00001141: PUSH0
00001142: PUSH0
00001143: PUSH0
00001144: PUSH1 0x60
00001146: DUP5
00001147: DUP7
00001148: SUB
00001149: SLT
0000114a: ISZERO
0000114b: PUSH2 0x1152
0000114e: JUMPI
0000114f: PUSH0
00001150: PUSH0
00001151: REVERT
00001152: JUMPDEST
00001153: DUP4
00001154: CALLDATALOAD
00001155: PUSH2 0x115d
00001158: DUP2
00001159: PUSH2 0x1121
0000115c: JUMP
0000115d: JUMPDEST
0000115e: SWAP3
0000115f: POP
00001160: PUSH1 0x20
00001162: DUP5
00001163: ADD
00001164: CALLDATALOAD
00001165: PUSH1 0x01
00001167: PUSH1 0x01
00001169: PUSH1 0x40
0000116b: SHL
0000116c: SUB
0000116d: DUP2
0000116e: GT
0000116f: ISZERO
00001170: PUSH2 0x1177
00001173: JUMPI
00001174: PUSH0
00001175: PUSH0
00001176: REVERT
00001177: JUMPDEST
00001178: DUP5
00001179: ADD
0000117a: PUSH1 0x40
0000117c: DUP2
0000117d: DUP8
0000117e: SUB
0000117f: SLT
00001180: ISZERO
00001181: PUSH2 0x1188
00001184: JUMPI
00001185: PUSH0
00001186: PUSH0
00001187: REVERT
00001188: JUMPDEST
00001189: SWAP3
0000118a: SWAP6
0000118b: SWAP3
0000118c: SWAP5
0000118d: POP
0000118e: POP
0000118f: POP
00001190: PUSH1 0x40
00001192: SWAP2
00001193: SWAP1
00001194: SWAP2
00001195: ADD
00001196: CALLDATALOAD
00001197: SWAP1
00001198: JUMP
00001199: JUMPDEST
0000119a: PUSH0
0000119b: DUP2
0000119c: MLOAD
0000119d: DUP1
0000119e: DUP5
0000119f: MSTORE
000011a0: DUP1
000011a1: PUSH1 0x20
000011a3: DUP5
000011a4: ADD
000011a5: PUSH1 0x20
000011a7: DUP7
000011a8: ADD
000011a9: MCOPY
000011aa: PUSH0
000011ab: PUSH1 0x20
000011ad: DUP3
000011ae: DUP7
000011af: ADD
000011b0: ADD
000011b1: MSTORE
000011b2: PUSH1 0x20
000011b4: PUSH1 0x1f
000011b6: NOT
000011b7: PUSH1 0x1f
000011b9: DUP4
000011ba: ADD
000011bb: AND
000011bc: DUP6
000011bd: ADD
000011be: ADD
000011bf: SWAP2
000011c0: POP
000011c1: POP
000011c2: SWAP3
000011c3: SWAP2
000011c4: POP
000011c5: POP
000011c6: JUMP
000011c7: JUMPDEST
000011c8: PUSH1 0x20
000011ca: DUP2
000011cb: MSTORE
000011cc: PUSH0
000011cd: PUSH2 0x11d9
000011d0: PUSH1 0x20
000011d2: DUP4
000011d3: ADD
000011d4: DUP5
000011d5: PUSH2 0x1199
000011d8: JUMP
000011d9: JUMPDEST
000011da: SWAP4
000011db: SWAP3
000011dc: POP
000011dd: POP
000011de: POP
000011df: JUMP
000011e0: JUMPDEST
000011e1: PUSH0
000011e2: PUSH0
000011e3: PUSH1 0x40
000011e5: DUP4
000011e6: DUP6
000011e7: SUB
000011e8: SLT
000011e9: ISZERO
000011ea: PUSH2 0x11f1
000011ed: JUMPI
000011ee: PUSH0
000011ef: PUSH0
000011f0: REVERT
000011f1: JUMPDEST
000011f2: DUP3
000011f3: CALLDATALOAD
000011f4: SWAP2
000011f5: POP
000011f6: PUSH1 0x20
000011f8: DUP4
000011f9: ADD
000011fa: CALLDATALOAD
000011fb: PUSH2 0x1203
000011fe: DUP2
000011ff: PUSH2 0x1121
00001202: JUMP
00001203: JUMPDEST
00001204: DUP1
00001205: SWAP2
00001206: POP
00001207: POP
00001208: SWAP3
00001209: POP
0000120a: SWAP3
0000120b: SWAP1
0000120c: POP
0000120d: JUMP
0000120e: JUMPDEST
0000120f: PUSH0
00001210: PUSH0
00001211: PUSH0
00001212: PUSH0
00001213: PUSH1 0x60
00001215: DUP6
00001216: DUP8
00001217: SUB
00001218: SLT
00001219: ISZERO
0000121a: PUSH2 0x1221
0000121d: JUMPI
0000121e: PUSH0
0000121f: PUSH0
00001220: REVERT
00001221: JUMPDEST
00001222: DUP5
00001223: CALLDATALOAD
00001224: PUSH2 0x122c
00001227: DUP2
00001228: PUSH2 0x1121
0000122b: JUMP
0000122c: JUMPDEST
0000122d: SWAP4
0000122e: POP
0000122f: PUSH1 0x20
00001231: DUP6
00001232: ADD
00001233: CALLDATALOAD
00001234: SWAP3
00001235: POP
00001236: PUSH1 0x40
00001238: DUP6
00001239: ADD
0000123a: CALLDATALOAD
0000123b: PUSH1 0x01
0000123d: PUSH1 0x01
0000123f: PUSH1 0x40
00001241: SHL
00001242: SUB
00001243: DUP2
00001244: GT
00001245: ISZERO
00001246: PUSH2 0x124d
00001249: JUMPI
0000124a: PUSH0
0000124b: PUSH0
0000124c: REVERT
0000124d: JUMPDEST
0000124e: PUSH2 0x1259
00001251: DUP8
00001252: DUP3
00001253: DUP9
00001254: ADD
00001255: PUSH2 0x106c
00001258: JUMP
00001259: JUMPDEST
0000125a: SWAP6
0000125b: SWAP9
0000125c: SWAP5
0000125d: SWAP8
0000125e: POP
0000125f: SWAP6
00001260: POP
00001261: POP
00001262: POP
00001263: POP
00001264: JUMP
00001265: JUMPDEST
00001266: DUP3
00001267: ISZERO
00001268: ISZERO
00001269: DUP2
0000126a: MSTORE
0000126b: PUSH1 0x40
0000126d: PUSH1 0x20
0000126f: DUP3
00001270: ADD
00001271: MSTORE
00001272: PUSH0
00001273: PUSH2 0x127f
00001276: PUSH1 0x40
00001278: DUP4
00001279: ADD
0000127a: DUP5
0000127b: PUSH2 0x1199
0000127e: JUMP
0000127f: JUMPDEST
00001280: SWAP5
00001281: SWAP4
00001282: POP
00001283: POP
00001284: POP
00001285: POP
00001286: JUMP
00001287: JUMPDEST
00001288: PUSH0
00001289: PUSH1 0x20
0000128b: DUP3
0000128c: DUP5
0000128d: SUB
0000128e: SLT
0000128f: ISZERO
00001290: PUSH2 0x1297
00001293: JUMPI
00001294: PUSH0
00001295: PUSH0
00001296: REVERT
00001297: JUMPDEST
00001298: DUP2
00001299: CALLDATALOAD
0000129a: PUSH2 0x11d9
0000129d: DUP2
0000129e: PUSH2 0x1121
000012a1: JUMP
000012a2: JUMPDEST
000012a3: PUSH0
000012a4: PUSH1 0x20
000012a6: DUP3
000012a7: DUP5
000012a8: SUB
000012a9: SLT
000012aa: ISZERO
000012ab: PUSH2 0x12b2
000012ae: JUMPI
000012af: PUSH0
000012b0: PUSH0
000012b1: REVERT
000012b2: JUMPDEST
000012b3: POP
000012b4: CALLDATALOAD
000012b5: SWAP2
000012b6: SWAP1
000012b7: POP
000012b8: JUMP
000012b9: JUMPDEST
000012ba: PUSH1 0x20
000012bc: DUP1
000012bd: DUP3
000012be: MSTORE
000012bf: DUP3
000012c0: MLOAD
000012c1: DUP3
000012c2: DUP3
000012c3: ADD
000012c4: DUP2
000012c5: SWAP1
000012c6: MSTORE
000012c7: PUSH0
000012c8: SWAP2
000012c9: DUP5
000012ca: ADD
000012cb: SWAP1
000012cc: PUSH1 0x40
000012ce: DUP5
000012cf: ADD
000012d0: SWAP1
000012d1: DUP4
000012d2: JUMPDEST
000012d3: DUP2
000012d4: DUP2
000012d5: LT
000012d6: ISZERO
000012d7: PUSH2 0x12f0
000012da: JUMPI
000012db: DUP4
000012dc: MLOAD
000012dd: DUP4
000012de: MSTORE
000012df: PUSH1 0x20
000012e1: SWAP4
000012e2: DUP5
000012e3: ADD
000012e4: SWAP4
000012e5: SWAP1
000012e6: SWAP3
000012e7: ADD
000012e8: SWAP2
000012e9: PUSH1 0x01
000012eb: ADD
000012ec: PUSH2 0x12d2
000012ef: JUMP
000012f0: JUMPDEST
000012f1: POP
000012f2: SWAP1
000012f3: SWAP6
000012f4: SWAP5
000012f5: POP
000012f6: POP
000012f7: POP
000012f8: POP
000012f9: POP
000012fa: JUMP
000012fb: JUMPDEST
000012fc: PUSH0
000012fd: PUSH0
000012fe: DUP4
000012ff: PUSH1 0x1f
00001301: DUP5
00001302: ADD
00001303: SLT
00001304: PUSH2 0x130b
00001307: JUMPI
00001308: PUSH0
00001309: PUSH0
0000130a: REVERT
0000130b: JUMPDEST
0000130c: POP
0000130d: DUP2
0000130e: CALLDATALOAD
0000130f: PUSH1 0x01
00001311: PUSH1 0x01
00001313: PUSH1 0x40
00001315: SHL
00001316: SUB
00001317: DUP2
00001318: GT
00001319: ISZERO
0000131a: PUSH2 0x1321
0000131d: JUMPI
0000131e: PUSH0
0000131f: PUSH0
00001320: REVERT
00001321: JUMPDEST
00001322: PUSH1 0x20
00001324: DUP4
00001325: ADD
00001326: SWAP2
00001327: POP
00001328: DUP4
00001329: PUSH1 0x20
0000132b: DUP3
0000132c: PUSH1 0x05
0000132e: SHL
0000132f: DUP6
00001330: ADD
00001331: ADD
00001332: GT
00001333: ISZERO
00001334: PUSH2 0x10a9
00001337: JUMPI
00001338: PUSH0
00001339: PUSH0
0000133a: REVERT
0000133b: JUMPDEST
0000133c: PUSH0
0000133d: PUSH0
0000133e: PUSH0
0000133f: PUSH0
00001340: PUSH0
00001341: PUSH0
00001342: PUSH1 0x60
00001344: DUP8
00001345: DUP10
00001346: SUB
00001347: SLT
00001348: ISZERO
00001349: PUSH2 0x1350
0000134c: JUMPI
0000134d: PUSH0
0000134e: PUSH0
0000134f: REVERT
00001350: JUMPDEST
00001351: DUP7
00001352: CALLDATALOAD
00001353: PUSH1 0x01
00001355: PUSH1 0x01
00001357: PUSH1 0x40
00001359: SHL
0000135a: SUB
0000135b: DUP2
0000135c: GT
0000135d: ISZERO
0000135e: PUSH2 0x1365
00001361: JUMPI
00001362: PUSH0
00001363: PUSH0
00001364: REVERT
00001365: JUMPDEST
00001366: PUSH2 0x1371
00001369: DUP10
0000136a: DUP3
0000136b: DUP11
0000136c: ADD
0000136d: PUSH2 0x12fb
00001370: JUMP
00001371: JUMPDEST
00001372: SWAP1
00001373: SWAP8
00001374: POP
00001375: SWAP6
00001376: POP
00001377: POP
00001378: PUSH1 0x20
0000137a: DUP8
0000137b: ADD
0000137c: CALLDATALOAD
0000137d: PUSH1 0x01
0000137f: PUSH1 0x01
00001381: PUSH1 0x40
00001383: SHL
00001384: SUB
00001385: DUP2
00001386: GT
00001387: ISZERO
00001388: PUSH2 0x138f
0000138b: JUMPI
0000138c: PUSH0
0000138d: PUSH0
0000138e: REVERT
0000138f: JUMPDEST
00001390: PUSH2 0x139b
00001393: DUP10
00001394: DUP3
00001395: DUP11
00001396: ADD
00001397: PUSH2 0x12fb
0000139a: JUMP
0000139b: JUMPDEST
0000139c: SWAP1
0000139d: SWAP6
0000139e: POP
0000139f: SWAP4
000013a0: POP
000013a1: POP
000013a2: PUSH1 0x40
000013a4: DUP8
000013a5: ADD
000013a6: CALLDATALOAD
000013a7: PUSH1 0x01
000013a9: PUSH1 0x01
000013ab: PUSH1 0x40
000013ad: SHL
000013ae: SUB
000013af: DUP2
000013b0: GT
000013b1: ISZERO
000013b2: PUSH2 0x13b9
000013b5: JUMPI
000013b6: PUSH0
000013b7: PUSH0
000013b8: REVERT
000013b9: JUMPDEST
000013ba: PUSH2 0x13c5
000013bd: DUP10
000013be: DUP3
000013bf: DUP11
000013c0: ADD
000013c1: PUSH2 0x12fb
000013c4: JUMP
000013c5: JUMPDEST
000013c6: SWAP8
000013c7: SWAP11
000013c8: SWAP7
000013c9: SWAP10
000013ca: POP
000013cb: SWAP5
000013cc: SWAP8
000013cd: POP
000013ce: SWAP3
000013cf: SWAP6
000013d0: SWAP4
000013d1: SWAP5
000013d2: SWAP3
000013d3: POP
000013d4: POP
000013d5: POP
000013d6: JUMP
000013d7: JUMPDEST
000013d8: DUP2
000013d9: DUP4
000013da: MSTORE
000013db: DUP2
000013dc: DUP2
000013dd: PUSH1 0x20
000013df: DUP6
000013e0: ADD
000013e1: CALLDATACOPY
000013e2: POP
000013e3: PUSH0
000013e4: DUP3
000013e5: DUP3
000013e6: ADD
000013e7: PUSH1 0x20
000013e9: SWAP1
000013ea: DUP2
000013eb: ADD
000013ec: SWAP2
000013ed: SWAP1
000013ee: SWAP2
000013ef: MSTORE
000013f0: PUSH1 0x1f
000013f2: SWAP1
000013f3: SWAP2
000013f4: ADD
000013f5: PUSH1 0x1f
000013f7: NOT
000013f8: AND
000013f9: SWAP1
000013fa: SWAP2
000013fb: ADD
000013fc: ADD
000013fd: SWAP1
000013fe: JUMP
000013ff: JUMPDEST
00001400: PUSH1 0x60
00001402: DUP2
00001403: MSTORE
00001404: PUSH0
00001405: PUSH2 0x1412
00001408: PUSH1 0x60
0000140a: DUP4
0000140b: ADD
0000140c: DUP8
0000140d: DUP10
0000140e: PUSH2 0x13d7
00001411: JUMP
00001412: JUMPDEST
00001413: DUP3
00001414: DUP2
00001415: SUB
00001416: PUSH1 0x20
00001418: DUP5
00001419: ADD
0000141a: MSTORE
0000141b: PUSH2 0x1425
0000141e: DUP2
0000141f: DUP7
00001420: DUP9
00001421: PUSH2 0x13d7
00001424: JUMP
00001425: JUMPDEST
00001426: SWAP2
00001427: POP
00001428: POP
00001429: DUP3
0000142a: PUSH1 0x40
0000142c: DUP4
0000142d: ADD
0000142e: MSTORE
0000142f: SWAP7
00001430: SWAP6
00001431: POP
00001432: POP
00001433: POP
00001434: POP
00001435: POP
00001436: POP
00001437: JUMP
00001438: JUMPDEST
00001439: PUSH1 0x01
0000143b: PUSH1 0x01
0000143d: PUSH1 0xa0
0000143f: SHL
00001440: SUB
00001441: DUP5
00001442: AND
00001443: DUP2
00001444: MSTORE
00001445: PUSH1 0x60
00001447: PUSH1 0x20
00001449: DUP3
0000144a: ADD
0000144b: MSTORE
0000144c: PUSH0
0000144d: DUP4
0000144e: CALLDATALOAD
0000144f: CALLDATASIZE
00001450: DUP6
00001451: SWAP1
00001452: SUB
00001453: PUSH1 0x1e
00001455: NOT
00001456: ADD
00001457: DUP2
00001458: SLT
00001459: PUSH2 0x1460
0000145c: JUMPI
0000145d: PUSH0
0000145e: PUSH0
0000145f: REVERT
00001460: JUMPDEST
00001461: DUP5
00001462: ADD
00001463: PUSH1 0x20
00001465: DUP2
00001466: ADD
00001467: SWAP1
00001468: CALLDATALOAD
00001469: PUSH1 0x01
0000146b: PUSH1 0x01
0000146d: PUSH1 0x40
0000146f: SHL
00001470: SUB
00001471: DUP2
00001472: GT
00001473: ISZERO
00001474: PUSH2 0x147b
00001477: JUMPI
00001478: PUSH0
00001479: PUSH0
0000147a: REVERT
0000147b: JUMPDEST
0000147c: DUP1
0000147d: CALLDATASIZE
0000147e: SUB
0000147f: DUP3
00001480: SGT
00001481: ISZERO
00001482: PUSH2 0x1489
00001485: JUMPI
00001486: PUSH0
00001487: PUSH0
00001488: REVERT
00001489: JUMPDEST
0000148a: PUSH1 0x40
0000148c: PUSH1 0x60
0000148e: DUP6
0000148f: ADD
00001490: MSTORE
00001491: PUSH2 0x149e
00001494: PUSH1 0xa0
00001496: DUP6
00001497: ADD
00001498: DUP3
00001499: DUP5
0000149a: PUSH2 0x13d7
0000149d: JUMP
0000149e: JUMPDEST
0000149f: PUSH1 0x20
000014a1: SWAP7
000014a2: SWAP1
000014a3: SWAP7
000014a4: ADD
000014a5: CALLDATALOAD
000014a6: PUSH1 0x80
000014a8: DUP6
000014a9: ADD
000014aa: MSTORE
000014ab: POP
000014ac: POP
000014ad: POP
000014ae: PUSH1 0x40
000014b0: ADD
000014b1: MSTORE
000014b2: SWAP2
000014b3: SWAP1
000014b4: POP
000014b5: JUMP
000014b6: JUMPDEST
000014b7: PUSH0
000014b8: PUSH1 0x20
000014ba: DUP3
000014bb: DUP5
000014bc: SUB
000014bd: SLT
000014be: ISZERO
000014bf: PUSH2 0x14c6
000014c2: JUMPI
000014c3: PUSH0
000014c4: PUSH0
000014c5: REVERT
000014c6: JUMPDEST
000014c7: DUP2
000014c8: MLOAD
000014c9: PUSH2 0x11d9
000014cc: DUP2
000014cd: PUSH2 0x1121
000014d0: JUMP
000014d1: JUMPDEST
000014d2: DUP2
000014d3: DUP4
000014d4: DUP3
000014d5: CALLDATACOPY
000014d6: PUSH0
000014d7: SWAP2
000014d8: ADD
000014d9: SWAP1
000014da: DUP2
000014db: MSTORE
000014dc: SWAP2
000014dd: SWAP1
000014de: POP
000014df: JUMP
000014e0: JUMPDEST
000014e1: PUSH4 0x4e487b71
000014e6: PUSH1 0xe0
000014e8: SHL
000014e9: PUSH0
000014ea: MSTORE
000014eb: PUSH1 0x41
000014ed: PUSH1 0x04
000014ef: MSTORE
000014f0: PUSH1 0x24
000014f2: PUSH0
000014f3: REVERT
000014f4: JUMPDEST
000014f5: PUSH4 0x4e487b71
000014fa: PUSH1 0xe0
000014fc: SHL
000014fd: PUSH0
000014fe: MSTORE
000014ff: PUSH1 0x32
00001501: PUSH1 0x04
00001503: MSTORE
00001504: PUSH1 0x24
00001506: PUSH0
00001507: REVERT
00001508: JUMPDEST
00001509: PUSH0
0000150a: PUSH1 0x20
0000150c: DUP3
0000150d: ADD
0000150e: PUSH1 0x20
00001510: DUP4
00001511: MSTORE
00001512: DUP1
00001513: DUP5
00001514: MLOAD
00001515: DUP1
00001516: DUP4
00001517: MSTORE
00001518: PUSH1 0x40
0000151a: DUP6
0000151b: ADD
0000151c: SWAP2
0000151d: POP
0000151e: PUSH1 0x40
00001520: DUP2
00001521: PUSH1 0x05
00001523: SHL
00001524: DUP7
00001525: ADD
00001526: ADD
00001527: SWAP3
00001528: POP
00001529: PUSH1 0x20
0000152b: DUP7
0000152c: ADD
0000152d: PUSH0
0000152e: JUMPDEST
0000152f: DUP3
00001530: DUP2
00001531: LT
00001532: ISZERO
00001533: PUSH2 0x1601
00001536: JUMPI
00001537: DUP7
00001538: DUP6
00001539: SUB
0000153a: PUSH1 0x3f
0000153c: NOT
0000153d: ADD
0000153e: DUP5
0000153f: MSTORE
00001540: DUP2
00001541: MLOAD
00001542: DUP1
00001543: MLOAD
00001544: PUSH1 0x60
00001546: DUP1
00001547: DUP9
00001548: MSTORE
00001549: DUP2
0000154a: MLOAD
0000154b: SWAP1
0000154c: DUP9
0000154d: ADD
0000154e: DUP2
0000154f: SWAP1
00001550: MSTORE
00001551: PUSH1 0x20
00001553: SWAP1
00001554: SWAP2
00001555: ADD
00001556: SWAP1
00001557: PUSH0
00001558: SWAP1
00001559: PUSH1 0x80
0000155b: DUP10
0000155c: ADD
0000155d: SWAP1
0000155e: JUMPDEST
0000155f: DUP1
00001560: DUP4
00001561: LT
00001562: ISZERO
00001563: PUSH2 0x158a
00001566: JUMPI
00001567: DUP4
00001568: MLOAD
00001569: PUSH1 0x01
0000156b: PUSH1 0x01
0000156d: PUSH1 0xa0
0000156f: SHL
00001570: SUB
00001571: AND
00001572: DUP3
00001573: MSTORE
00001574: PUSH1 0x20
00001576: DUP3
00001577: ADD
00001578: SWAP2
00001579: POP
0000157a: PUSH1 0x20
0000157c: DUP5
0000157d: ADD
0000157e: SWAP4
0000157f: POP
00001580: PUSH1 0x01
00001582: DUP4
00001583: ADD
00001584: SWAP3
00001585: POP
00001586: PUSH2 0x155e
00001589: JUMP
0000158a: JUMPDEST
0000158b: POP
0000158c: PUSH1 0x20
0000158e: DUP5
0000158f: DUP2
00001590: ADD
00001591: MLOAD
00001592: DUP11
00001593: DUP4
00001594: SUB
00001595: DUP12
00001596: DUP4
00001597: ADD
00001598: MSTORE
00001599: DUP1
0000159a: MLOAD
0000159b: DUP1
0000159c: DUP5
0000159d: MSTORE
0000159e: SWAP1
0000159f: DUP3
000015a0: ADD
000015a1: SWAP5
000015a2: POP
000015a3: SWAP2
000015a4: ADD
000015a5: SWAP2
000015a6: POP
000015a7: PUSH0
000015a8: SWAP1
000015a9: JUMPDEST
000015aa: DUP1
000015ab: DUP3
000015ac: LT
000015ad: ISZERO
000015ae: PUSH2 0x15cc
000015b1: JUMPI
000015b2: DUP4
000015b3: MLOAD
000015b4: DUP4
000015b5: MSTORE
000015b6: PUSH1 0x20
000015b8: DUP4
000015b9: ADD
000015ba: SWAP3
000015bb: POP
000015bc: PUSH1 0x20
000015be: DUP5
000015bf: ADD
000015c0: SWAP4
000015c1: POP
000015c2: PUSH1 0x01
000015c4: DUP3
000015c5: ADD
000015c6: SWAP2
000015c7: POP
000015c8: PUSH2 0x15a9
000015cb: JUMP
000015cc: JUMPDEST
000015cd: POP
000015ce: POP
000015cf: PUSH1 0x40
000015d1: DUP4
000015d2: ADD
000015d3: MLOAD
000015d4: SWAP3
000015d5: POP
000015d6: PUSH2 0x15ea
000015d9: PUSH1 0x40
000015db: DUP10
000015dc: ADD
000015dd: DUP5
000015de: PUSH1 0x01
000015e0: PUSH1 0x01
000015e2: PUSH1 0xa0
000015e4: SHL
000015e5: SUB
000015e6: AND
000015e7: SWAP1
000015e8: MSTORE
000015e9: JUMP
000015ea: JUMPDEST
000015eb: SWAP7
000015ec: POP
000015ed: POP
000015ee: POP
000015ef: PUSH1 0x20
000015f1: SWAP4
000015f2: DUP5
000015f3: ADD
000015f4: SWAP4
000015f5: SWAP2
000015f6: SWAP1
000015f7: SWAP2
000015f8: ADD
000015f9: SWAP1
000015fa: PUSH1 0x01
000015fc: ADD
000015fd: PUSH2 0x152e
00001600: JUMP
00001601: JUMPDEST
00001602: POP
00001603: SWAP3
00001604: SWAP7
00001605: SWAP6
00001606: POP
00001607: POP
00001608: POP
00001609: POP
0000160a: POP
0000160b: POP
0000160c: JUMP
0000160d: JUMPDEST
0000160e: PUSH0
0000160f: PUSH1 0x20
00001611: DUP3
00001612: DUP5
00001613: SUB
00001614: SLT
00001615: ISZERO
00001616: PUSH2 0x161d
00001619: JUMPI
0000161a: PUSH0
0000161b: PUSH0
0000161c: REVERT
0000161d: JUMPDEST
0000161e: DUP2
0000161f: MLOAD
00001620: PUSH1 0x01
00001622: PUSH1 0x01
00001624: PUSH1 0x40
00001626: SHL
00001627: SUB
00001628: DUP2
00001629: GT
0000162a: ISZERO
0000162b: PUSH2 0x1632
0000162e: JUMPI
0000162f: PUSH0
00001630: PUSH0
00001631: REVERT
00001632: JUMPDEST
00001633: DUP3
00001634: ADD
00001635: PUSH1 0x1f
00001637: DUP2
00001638: ADD
00001639: DUP5
0000163a: SGT
0000163b: PUSH2 0x1642
0000163e: JUMPI
0000163f: PUSH0
00001640: PUSH0
00001641: REVERT
00001642: JUMPDEST
00001643: DUP1
00001644: MLOAD
00001645: PUSH1 0x01
00001647: PUSH1 0x01
00001649: PUSH1 0x40
0000164b: SHL
0000164c: SUB
0000164d: DUP2
0000164e: GT
0000164f: ISZERO
00001650: PUSH2 0x165b
00001653: JUMPI
00001654: PUSH2 0x165b
00001657: PUSH2 0x14e0
0000165a: JUMP
0000165b: JUMPDEST
0000165c: DUP1
0000165d: PUSH1 0x05
0000165f: SHL
00001660: PUSH1 0x40
00001662: MLOAD
00001663: PUSH1 0x1f
00001665: NOT
00001666: PUSH1 0x3f
00001668: DUP4
00001669: ADD
0000166a: AND
0000166b: DUP2
0000166c: ADD
0000166d: DUP2
0000166e: DUP2
0000166f: LT
00001670: PUSH1 0x01
00001672: PUSH1 0x01
00001674: PUSH1 0x40
00001676: SHL
00001677: SUB
00001678: DUP3
00001679: GT
0000167a: OR
0000167b: ISZERO
0000167c: PUSH2 0x1687
0000167f: JUMPI
00001680: PUSH2 0x1687
00001683: PUSH2 0x14e0
00001686: JUMP
00001687: JUMPDEST
00001688: PUSH1 0x40
0000168a: MSTORE
0000168b: SWAP2
0000168c: DUP3
0000168d: MSTORE
0000168e: PUSH1 0x20
00001690: DUP2
00001691: DUP5
00001692: ADD
00001693: DUP2
00001694: ADD
00001695: SWAP3
00001696: SWAP1
00001697: DUP2
00001698: ADD
00001699: DUP8
0000169a: DUP5
0000169b: GT
0000169c: ISZERO
0000169d: PUSH2 0x16a4
000016a0: JUMPI
000016a1: PUSH0
000016a2: PUSH0
000016a3: REVERT
000016a4: JUMPDEST
000016a5: PUSH1 0x20
000016a7: DUP6
000016a8: ADD
000016a9: SWAP5
000016aa: POP
000016ab: JUMPDEST
000016ac: DUP4
000016ad: DUP6
000016ae: LT
000016af: ISZERO
000016b0: PUSH2 0x16c7
000016b3: JUMPI
000016b4: DUP5
000016b5: MLOAD
000016b6: DUP1
000016b7: DUP3
000016b8: MSTORE
000016b9: PUSH1 0x20
000016bb: SWAP6
000016bc: DUP7
000016bd: ADD
000016be: SWAP6
000016bf: SWAP1
000016c0: SWAP4
000016c1: POP
000016c2: ADD
000016c3: PUSH2 0x16ab
000016c6: JUMP
000016c7: JUMPDEST
000016c8: POP
000016c9: SWAP7
000016ca: SWAP6
000016cb: POP
000016cc: POP
000016cd: POP
000016ce: POP
000016cf: POP
000016d0: POP
000016d1: JUMP
000016d2: JUMPDEST
000016d3: DUP1
000016d4: CALLDATALOAD
000016d5: PUSH4 0xffffffff
000016da: DUP2
000016db: AND
000016dc: DUP2
000016dd: EQ
000016de: PUSH2 0x0bd0
000016e1: JUMPI
000016e2: PUSH0
000016e3: PUSH0
000016e4: REVERT
000016e5: JUMPDEST
000016e6: PUSH0
000016e7: PUSH0
000016e8: DUP4
000016e9: CALLDATALOAD
000016ea: PUSH1 0x1e
000016ec: NOT
000016ed: DUP5
000016ee: CALLDATASIZE
000016ef: SUB
000016f0: ADD
000016f1: DUP2
000016f2: SLT
000016f3: PUSH2 0x16fa
000016f6: JUMPI
000016f7: PUSH0
000016f8: PUSH0
000016f9: REVERT
000016fa: JUMPDEST
000016fb: DUP4
000016fc: ADD
000016fd: PUSH1 0x20
000016ff: DUP2
00001700: ADD
00001701: SWAP3
00001702: POP
00001703: CALLDATALOAD
00001704: SWAP1
00001705: POP
00001706: PUSH1 0x01
00001708: PUSH1 0x01
0000170a: PUSH1 0x40
0000170c: SHL
0000170d: SUB
0000170e: DUP2
0000170f: GT
00001710: ISZERO
00001711: PUSH2 0x1718
00001714: JUMPI
00001715: PUSH0
00001716: PUSH0
00001717: REVERT
00001718: JUMPDEST
00001719: DUP1
0000171a: PUSH1 0x05
0000171c: SHL
0000171d: CALLDATASIZE
0000171e: SUB
0000171f: DUP3
00001720: SGT
00001721: ISZERO
00001722: PUSH2 0x10a9
00001725: JUMPI
00001726: PUSH0
00001727: PUSH0
00001728: REVERT
00001729: JUMPDEST
0000172a: DUP2
0000172b: DUP4
0000172c: MSTORE
0000172d: PUSH1 0x20
0000172f: DUP4
00001730: ADD
00001731: SWAP3
00001732: POP
00001733: PUSH0
00001734: DUP2
00001735: PUSH0
00001736: JUMPDEST
00001737: DUP5
00001738: DUP2
00001739: LT
0000173a: ISZERO
0000173b: PUSH2 0x1767
0000173e: JUMPI
0000173f: DUP2
00001740: CALLDATALOAD
00001741: PUSH2 0x1749
00001744: DUP2
00001745: PUSH2 0x1121
00001748: JUMP
00001749: JUMPDEST
0000174a: PUSH1 0x01
0000174c: PUSH1 0x01
0000174e: PUSH1 0xa0
00001750: SHL
00001751: SUB
00001752: AND
00001753: DUP7
00001754: MSTORE
00001755: PUSH1 0x20
00001757: SWAP6
00001758: DUP7
00001759: ADD
0000175a: SWAP6
0000175b: SWAP2
0000175c: SWAP1
0000175d: SWAP2
0000175e: ADD
0000175f: SWAP1
00001760: PUSH1 0x01
00001762: ADD
00001763: PUSH2 0x1736
00001766: JUMP
00001767: JUMPDEST
00001768: POP
00001769: SWAP4
0000176a: SWAP5
0000176b: SWAP4
0000176c: POP
0000176d: POP
0000176e: POP
0000176f: POP
00001770: JUMP
00001771: JUMPDEST
00001772: DUP2
00001773: DUP4
00001774: MSTORE
00001775: PUSH0
00001776: PUSH1 0x01
00001778: PUSH1 0x01
0000177a: PUSH1 0xfb
0000177c: SHL
0000177d: SUB
0000177e: DUP4
0000177f: GT
00001780: ISZERO
00001781: PUSH2 0x1788
00001784: JUMPI
00001785: PUSH0
00001786: PUSH0
00001787: REVERT
00001788: JUMPDEST
00001789: DUP3
0000178a: PUSH1 0x05
0000178c: SHL
0000178d: DUP1
0000178e: DUP4
0000178f: PUSH1 0x20
00001791: DUP8
00001792: ADD
00001793: CALLDATACOPY
00001794: SWAP4
00001795: SWAP1
00001796: SWAP4
00001797: ADD
00001798: PUSH1 0x20
0000179a: ADD
0000179b: SWAP4
0000179c: SWAP3
0000179d: POP
0000179e: POP
0000179f: POP
000017a0: JUMP
000017a1: JUMPDEST
000017a2: PUSH0
000017a3: DUP4
000017a4: DUP4
000017a5: DUP6
000017a6: MSTORE
000017a7: PUSH1 0x20
000017a9: DUP6
000017aa: ADD
000017ab: SWAP5
000017ac: POP
000017ad: PUSH1 0x20
000017af: DUP5
000017b0: PUSH1 0x05
000017b2: SHL
000017b3: DUP3
000017b4: ADD
000017b5: ADD
000017b6: DUP4
000017b7: PUSH0
000017b8: JUMPDEST
000017b9: DUP7
000017ba: DUP2
000017bb: LT
000017bc: ISZERO
000017bd: PUSH2 0x1825
000017c0: JUMPI
000017c1: DUP4
000017c2: DUP4
000017c3: SUB
000017c4: PUSH1 0x1f
000017c6: NOT
000017c7: ADD
000017c8: DUP9
000017c9: MSTORE
000017ca: PUSH2 0x17d3
000017cd: DUP3
000017ce: DUP8
000017cf: PUSH2 0x16e5
000017d2: JUMP
000017d3: JUMPDEST
000017d4: DUP1
000017d5: DUP6
000017d6: MSTORE
000017d7: PUSH1 0x20
000017d9: DUP6
000017da: ADD
000017db: PUSH0
000017dc: JUMPDEST
000017dd: DUP3
000017de: DUP2
000017df: LT
000017e0: ISZERO
000017e1: PUSH2 0x180c
000017e4: JUMPI
000017e5: DUP4
000017e6: CALLDATALOAD
000017e7: PUSH2 0x17ef
000017ea: DUP2
000017eb: PUSH2 0x1121
000017ee: JUMP
000017ef: JUMPDEST
000017f0: PUSH1 0x01
000017f2: PUSH1 0x01
000017f4: PUSH1 0xa0
000017f6: SHL
000017f7: SUB
000017f8: AND
000017f9: DUP3
000017fa: MSTORE
000017fb: PUSH1 0x20
000017fd: SWAP4
000017fe: DUP5
000017ff: ADD
00001800: SWAP4
00001801: SWAP1
00001802: SWAP2
00001803: ADD
00001804: SWAP1
00001805: PUSH1 0x01
00001807: ADD
00001808: PUSH2 0x17dc
0000180b: JUMP
0000180c: JUMPDEST
0000180d: POP
0000180e: PUSH1 0x20
00001810: SWAP11
00001811: DUP12
00001812: ADD
00001813: SWAP11
00001814: SWAP1
00001815: SWAP6
00001816: POP
00001817: SWAP4
00001818: SWAP1
00001819: SWAP4
0000181a: ADD
0000181b: SWAP3
0000181c: POP
0000181d: POP
0000181e: PUSH1 0x01
00001820: ADD
00001821: PUSH2 0x17b8
00001824: JUMP
00001825: JUMPDEST
00001826: POP
00001827: SWAP1
00001828: SWAP7
00001829: SWAP6
0000182a: POP
0000182b: POP
0000182c: POP
0000182d: POP
0000182e: POP
0000182f: POP
00001830: JUMP
00001831: JUMPDEST
00001832: DUP2
00001833: DUP4
00001834: MSTORE
00001835: PUSH1 0x20
00001837: DUP4
00001838: ADD
00001839: SWAP3
0000183a: POP
0000183b: PUSH0
0000183c: DUP2
0000183d: PUSH0
0000183e: JUMPDEST
0000183f: DUP5
00001840: DUP2
00001841: LT
00001842: ISZERO
00001843: PUSH2 0x1767
00001846: JUMPI
00001847: DUP2
00001848: CALLDATALOAD
00001849: DUP1
0000184a: ISZERO
0000184b: ISZERO
0000184c: DUP1
0000184d: DUP3
0000184e: EQ
0000184f: PUSH2 0x1856
00001852: JUMPI
00001853: PUSH0
00001854: PUSH0
00001855: REVERT
00001856: JUMPDEST
00001857: DUP8
00001858: MSTORE
00001859: POP
0000185a: PUSH1 0x20
0000185c: SWAP6
0000185d: DUP7
0000185e: ADD
0000185f: SWAP6
00001860: SWAP2
00001861: SWAP1
00001862: SWAP2
00001863: ADD
00001864: SWAP1
00001865: PUSH1 0x01
00001867: ADD
00001868: PUSH2 0x183e
0000186b: JUMP
0000186c: JUMPDEST
0000186d: PUSH1 0x60
0000186f: DUP1
00001870: DUP3
00001871: MSTORE
00001872: DUP2
00001873: ADD
00001874: DUP7
00001875: SWAP1
00001876: MSTORE
00001877: PUSH0
00001878: PUSH1 0x80
0000187a: PUSH1 0x05
0000187c: DUP9
0000187d: SWAP1
0000187e: SHL
0000187f: DUP4
00001880: ADD
00001881: DUP2
00001882: ADD
00001883: SWAP1
00001884: DUP4
00001885: ADD
00001886: DUP10
00001887: DUP4
00001888: PUSH1 0xde
0000188a: NOT
0000188b: CALLDATASIZE
0000188c: DUP4
0000188d: SWAP1
0000188e: SUB
0000188f: ADD
00001890: JUMPDEST
00001891: DUP12
00001892: DUP3
00001893: LT
00001894: ISZERO
00001895: PUSH2 0x1980
00001898: JUMPI
00001899: DUP7
0000189a: DUP6
0000189b: SUB
0000189c: PUSH1 0x7f
0000189e: NOT
0000189f: ADD
000018a0: DUP5
000018a1: MSTORE
000018a2: DUP3
000018a3: CALLDATALOAD
000018a4: DUP2
000018a5: DUP2
000018a6: SLT
000018a7: PUSH2 0x18ae
000018aa: JUMPI
000018ab: PUSH0
000018ac: PUSH0
000018ad: REVERT
000018ae: JUMPDEST
000018af: DUP14
000018b0: ADD
000018b1: DUP1
000018b2: CALLDATALOAD
000018b3: PUSH2 0x18bb
000018b6: DUP2
000018b7: PUSH2 0x1121
000018ba: JUMP
000018bb: JUMPDEST
000018bc: PUSH1 0x01
000018be: PUSH1 0x01
000018c0: PUSH1 0xa0
000018c2: SHL
000018c3: SUB
000018c4: AND
000018c5: DUP7
000018c6: MSTORE
000018c7: PUSH1 0x20
000018c9: DUP2
000018ca: ADD
000018cb: CALLDATALOAD
000018cc: PUSH2 0x18d4
000018cf: DUP2
000018d0: PUSH2 0x1121
000018d3: JUMP
000018d4: JUMPDEST
000018d5: PUSH1 0x01
000018d7: PUSH1 0x01
000018d9: PUSH1 0xa0
000018db: SHL
000018dc: SUB
000018dd: AND
000018de: PUSH1 0x20
000018e0: DUP8
000018e1: ADD
000018e2: MSTORE
000018e3: PUSH2 0x18ee
000018e6: PUSH1 0x40
000018e8: DUP3
000018e9: ADD
000018ea: PUSH2 0x1135
000018ed: JUMP
000018ee: JUMPDEST
000018ef: PUSH1 0x01
000018f1: PUSH1 0x01
000018f3: PUSH1 0xa0
000018f5: SHL
000018f6: SUB
000018f7: AND
000018f8: PUSH1 0x40
000018fa: DUP8
000018fb: ADD
000018fc: MSTORE
000018fd: PUSH1 0x60
000018ff: DUP2
00001900: DUP2
00001901: ADD
00001902: CALLDATALOAD
00001903: SWAP1
00001904: DUP8
00001905: ADD
00001906: MSTORE
00001907: PUSH2 0x1912
0000190a: PUSH1 0x80
0000190c: DUP3
0000190d: ADD
0000190e: PUSH2 0x16d2
00001911: JUMP
00001912: JUMPDEST
00001913: PUSH4 0xffffffff
00001918: AND
00001919: PUSH1 0x80
0000191b: DUP8
0000191c: ADD
0000191d: MSTORE
0000191e: PUSH2 0x192a
00001921: PUSH1 0xa0
00001923: DUP3
00001924: ADD
00001925: DUP3
00001926: PUSH2 0x16e5
00001929: JUMP
0000192a: JUMPDEST
0000192b: PUSH1 0xe0
0000192d: PUSH1 0xa0
0000192f: DUP10
00001930: ADD
00001931: MSTORE
00001932: PUSH2 0x193f
00001935: PUSH1 0xe0
00001937: DUP10
00001938: ADD
00001939: DUP3
0000193a: DUP5
0000193b: PUSH2 0x1729
0000193e: JUMP
0000193f: JUMPDEST
00001940: SWAP2
00001941: POP
00001942: POP
00001943: PUSH2 0x194f
00001946: PUSH1 0xc0
00001948: DUP4
00001949: ADD
0000194a: DUP4
0000194b: PUSH2 0x16e5
0000194e: JUMP
0000194f: JUMPDEST
00001950: SWAP3
00001951: POP
00001952: DUP8
00001953: DUP3
00001954: SUB
00001955: PUSH1 0xc0
00001957: DUP10
00001958: ADD
00001959: MSTORE
0000195a: PUSH2 0x1964
0000195d: DUP3
0000195e: DUP5
0000195f: DUP4
00001960: PUSH2 0x1771
00001963: JUMP
00001964: JUMPDEST
00001965: SWAP8
00001966: POP
00001967: POP
00001968: POP
00001969: POP
0000196a: PUSH1 0x20
0000196c: DUP4
0000196d: ADD
0000196e: SWAP3
0000196f: POP
00001970: PUSH1 0x20
00001972: DUP5
00001973: ADD
00001974: SWAP4
00001975: POP
00001976: PUSH1 0x01
00001978: DUP3
00001979: ADD
0000197a: SWAP2
0000197b: POP
0000197c: PUSH2 0x1890
0000197f: JUMP
00001980: JUMPDEST
00001981: POP
00001982: POP
00001983: POP
00001984: POP
00001985: DUP3
00001986: DUP2
00001987: SUB
00001988: PUSH1 0x20
0000198a: DUP5
0000198b: ADD
0000198c: MSTORE
0000198d: PUSH2 0x1997
00001990: DUP2
00001991: DUP8
00001992: DUP10
00001993: PUSH2 0x17a1
00001996: JUMP
00001997: JUMPDEST
00001998: SWAP1
00001999: POP
0000199a: DUP3
0000199b: DUP2
0000199c: SUB
0000199d: PUSH1 0x40
0000199f: DUP5
000019a0: ADD
000019a1: MSTORE
000019a2: PUSH2 0x19ac
000019a5: DUP2
000019a6: DUP6
000019a7: DUP8
000019a8: PUSH2 0x1831
000019ab: JUMP
000019ac: JUMPDEST
000019ad: SWAP10
000019ae: SWAP9
000019af: POP
000019b0: POP
000019b1: POP
000019b2: POP
000019b3: POP
000019b4: POP
000019b5: POP
000019b6: POP
000019b7: POP
000019b8: JUMP
000019b9: INVALID
000019ba: RETURN
000019bb: OR
000019bc: PUSH20 0x57ab46d8af007ab3fdb9af81da189e1068fefdc0
000019d1: SMOD
000019d2: RETURNDATASIZE
000019d3: UNKNOWN(0xCA)
000019d4: DUP9
000019d5: LOG2
000019d6: UNKNOWN(0xCA)
000019d7: UNKNOWN(0xB4)
000019d8: EXP
000019d9: STOP
000019da: LOG2
000019db: PUSH5 0x6970667358
000019e1: UNKNOWN(0x22)
000019e2: SLT
000019e3: KECCAK256
000019e4: UNKNOWN(0xC6)
000019e5: DUP13
000019e6: LT
000019e7: PUSH17 0x218ac647397dc3508a97b3fe8e73a3f929
000019f9: PUSH25

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x51fba8d6d7ade0f5b4ab444fdaeaebe48a976d9c0c7a6f618d9101d85f48d325
call_targets: 0x181cdaf63623819d2da7f3dc83d0996402875075
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x51fba8d6d7ade0f5b4ab444fdaeaebe48a976d9c0c7a6f618d9101d85f48d325",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x181cdaf63623819d2da7f3dc83d0996402875075"
    ],
    "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": "0xbf7e214f",
            "selector": "0xbf7e214f",
            "calldata_variants": [
                "0xbf7e214f",
                "0xbf7e214f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd06d5587",
            "selector": "0xd06d5587",
            "calldata_variants": [
                "0xd06d5587",
                "0xd06d55870000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeff7c503",
            "selector": "0xeff7c503",
            "calldata_variants": [
                "0xeff7c503",
                "0xeff7c5030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2251b0f",
            "selector": "0xf2251b0f",
            "calldata_variants": [
                "0xf2251b0f",
                "0xf2251b0f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfe363bd4",
            "selector": "0xfe363bd4",
            "calldata_variants": [
                "0xfe363bd4",
                "0xfe363bd40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8fb36037",
            "selector": "0x8fb36037",
            "calldata_variants": [
                "0x8fb36037",
                "0x8fb360370000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9435bb43",
            "selector": "0x9435bb43",
            "calldata_variants": [
                "0x9435bb43",
                "0x9435bb430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x972546f8",
            "selector": "0x972546f8",
            "calldata_variants": [
                "0x972546f8",
                "0x972546f80000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1419,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1624,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1959,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 9,
    "guards_detected": [],
    "untrusted_call_count": 9
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x51fba8d6d7ade0f5b4ab444fdaeaebe48a976d9c0c7a6f618d9101d85f48d325
call_targets: 0x181cdaf63623819d2da7f3dc83d0996402875075
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x51fba8d6d7ade0f5b4ab444fdaeaebe48a976d9c0c7a6f618d9101d85f48d325",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x181cdaf63623819d2da7f3dc83d0996402875075"
    ],
    "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": "0xbf7e214f",
            "selector": "0xbf7e214f",
            "calldata_variants": [
                "0xbf7e214f",
                "0xbf7e214f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd06d5587",
            "selector": "0xd06d5587",
            "calldata_variants": [
                "0xd06d5587",
                "0xd06d55870000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeff7c503",
            "selector": "0xeff7c503",
            "calldata_variants": [
                "0xeff7c503",
                "0xeff7c5030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2251b0f",
            "selector": "0xf2251b0f",
            "calldata_variants": [
                "0xf2251b0f",
                "0xf2251b0f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfe363bd4",
            "selector": "0xfe363bd4",
            "calldata_variants": [
                "0xfe363bd4",
                "0xfe363bd40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8fb36037",
            "selector": "0x8fb36037",
            "calldata_variants": [
                "0x8fb36037",
                "0x8fb360370000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9435bb43",
            "selector": "0x9435bb43",
            "calldata_variants": [
                "0x9435bb43",
                "0x9435bb430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x972546f8",
            "selector": "0x972546f8",
            "calldata_variants": [
                "0x972546f8",
                "0x972546f80000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1419,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1624,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1959,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 9,
    "guards_detected": []
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 8
}