aca2d46b-300e-46bf-9a99-6a2431d60400
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 8
}
|