882b3f33-ba07-4c93-8fb6-781332075158
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 |
|---|---|---|---|---|
| 30524 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 104003 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 104004 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 104005 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 104006 | capability.graph | complete | 1 / 3 | 1 week ago |
| 104007 | detector.run | complete | 1 / 3 | 1 week ago |
| 104008 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1042731] OpenAI Codex v0.77.0 (research preview)
[codex:1042731] --------
[codex:1042731] workdir: /tmp/codex-multi-ch14js71
[codex:1042731] model: gpt-5.2-codex
[codex:1042731] provider: openai
[codex:1042731] approval: never
[codex:1042731] sandbox: read-only
[codex:1042731] reasoning effort: xhigh
[codex:1042731] reasoning summaries: auto
[codex:1042731] session id: 019b6aea-a35d-7cc0-b5bb-88b9c4141f77
[codex:1042731] --------
[codex:1042731] user
[codex:1042731] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1042731] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1042731] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1042731]
[codex:1042731] Scope rules:
[codex:1042731] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1042731] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1042731]
[codex:1042731] Output MUST be valid JSON matching the provided schema.
[codex:1042731] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1042731] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1042731]
[codex:1042731] Output constraints (IMPORTANT):
[codex:1042731] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1042731] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1042731] mcp startup: no servers
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Preparing to read instructions**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc ls in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] AUDIT_BUNDLE.txt
[codex:1042731] codex-output-schema.json
[codex:1042731] contracts
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-ch14js71 succeeded in 9ms:
[codex:1042731] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1042731]
[codex:1042731] ================================================================================
[codex:1042731] FILE: contracts/@openzeppelin/contracts/access/IAccessControl.sol
[codex:1042731] ================================================================================
[codex:1042731] // SPDX-License-Identifier: MIT
[codex:1042731] // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
[codex:1042731]
[codex:1042731] pragma solidity ^0.8.0;
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @dev External interface of AccessControl declared to support ERC165 detection.
[codex:1042731] */
[codex:1042731] interface IAccessControl {
[codex:1042731] /**
[codex:1042731] * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
[codex:1042731] *
[codex:1042731] * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
[codex:1042731] * {RoleAdminChanged} not being emitted signaling this.
[codex:1042731] *
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Scanning contracts directory for audit targets**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg --files contracts/contracts' in /tmp/codex-multi-ch14js71 succeeded in 10ms:
[codex:1042731] contracts/contracts/ComptrollerInterface.sol
[codex:1042731] contracts/contracts/Comptroller.sol
[codex:1042731] contracts/contracts/ExponentialNoError.sol
[codex:1042731] contracts/contracts/InterestRateModel.sol
[codex:1042731] contracts/contracts/ComptrollerStorage.sol
[codex:1042731] contracts/contracts/VToken.sol
[codex:1042731] contracts/contracts/VTokenInterfaces.sol
[codex:1042731] contracts/contracts/MaxLoopsLimitHelper.sol
[codex:1042731] contracts/contracts/ErrorReporter.sol
[codex:1042731] contracts/contracts/Rewards/RewardsDistributorStorage.sol
[codex:1042731] contracts/contracts/Rewards/RewardsDistributor.sol
[codex:1042731] contracts/contracts/lib/constants.sol
[codex:1042731] contracts/contracts/lib/validators.sol
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Opening and scanning contract files**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1,240p' contracts/contracts/VToken.sol" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] // SPDX-License-Identifier: BSD-3-Clause
[codex:1042731] pragma solidity 0.8.25;
[codex:1042731]
[codex:1042731] import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
[codex:1042731] import { IERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";
[codex:1042731] import { SafeERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol";
[codex:1042731] import { AccessControlledV8 } from "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol";
[codex:1042731] import { IProtocolShareReserve } from "@venusprotocol/protocol-reserve/contracts/Interfaces/IProtocolShareReserve.sol";
[codex:1042731]
[codex:1042731] import { VTokenInterface } from "./VTokenInterfaces.sol";
[codex:1042731] import { ComptrollerInterface, ComptrollerViewInterface } from "./ComptrollerInterface.sol";
[codex:1042731] import { TokenErrorReporter } from "./ErrorReporter.sol";
[codex:1042731] import { InterestRateModel } from "./InterestRateModel.sol";
[codex:1042731] import { ExponentialNoError } from "./ExponentialNoError.sol";
[codex:1042731] import { TimeManagerV8 } from "@venusprotocol/solidity-utilities/contracts/TimeManagerV8.sol";
[codex:1042731] import { ensureNonzeroAddress } from "./lib/validators.sol";
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @title VToken
[codex:1042731] * @author Venus
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '240,480p' contracts/contracts/VToken.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] * @notice Get the underlying balance of the `owner`
[codex:1042731] * @dev This also accrues interest in a transaction
[codex:1042731] * @param owner The address of the account to query
[codex:1042731] * @return amount The amount of underlying owned by `owner`
[codex:1042731] */
[codex:1042731] function balanceOfUnderlying(address owner) external override returns (uint256) {
[codex:1042731] Exp memory exchangeRate = Exp({ mantissa: exchangeRateCurrent() });
[codex:1042731] return mul_ScalarTruncate(exchangeRate, accountTokens[owner]);
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Returns the current total borrows plus accrued interest
[codex:1042731] * @return totalBorrows The total borrows with interest
[codex:1042731] */
[codex:1042731] function totalBorrowsCurrent() external override nonReentrant returns (uint256) {
[codex:1042731] accrueInterest();
[codex:1042731] return totalBorrows;
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '480,960p' contracts/contracts/VToken.sol" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] protocolSeizeShareMantissa = newProtocolSeizeShareMantissa_;
[codex:1042731] emit NewProtocolSeizeShare(oldProtocolSeizeShareMantissa, newProtocolSeizeShareMantissa_);
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice accrues interest and sets a new reserve factor for the protocol using _setReserveFactorFresh
[codex:1042731] * @dev Admin function to accrue interest and set a new reserve factor
[codex:1042731] * @param newReserveFactorMantissa New reserve factor (from 0 to 1e18)
[codex:1042731] * @custom:event Emits NewReserveFactor event; may emit AccrueInterest
[codex:1042731] * @custom:error Unauthorized error is thrown when the call is not authorized by AccessControlManager
[codex:1042731] * @custom:error SetReserveFactorBoundsCheck is thrown when the new reserve factor is too high
[codex:1042731] * @custom:access Controlled by AccessControlManager
[codex:1042731] */
[codex:1042731] function setReserveFactor(uint256 newReserveFactorMantissa) external override nonReentrant {
[codex:1042731] _checkAccessAllowed("setReserveFactor(uint256)");
[codex:1042731]
[codex:1042731] accrueInterest();
[codex:1042731] _setReserveFactorFresh(newReserveFactorMantissa);
[codex:1042731] }
[codex:1042731]
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '960,1440p' contracts/contracts/VToken.sol" in /tmp/codex-multi-ch14js71 succeeded in 7ms:
[codex:1042731] Exp memory exchangeRate = Exp({ mantissa: _exchangeRateStored() });
[codex:1042731]
[codex:1042731] uint256 redeemTokens;
[codex:1042731] uint256 redeemAmount;
[codex:1042731]
[codex:1042731] /* If redeemTokensIn > 0: */
[codex:1042731] if (redeemTokensIn > 0) {
[codex:1042731] /*
[codex:1042731] * We calculate the exchange rate and the amount of underlying to be redeemed:
[codex:1042731] * redeemTokens = redeemTokensIn
[codex:1042731] */
[codex:1042731] redeemTokens = redeemTokensIn;
[codex:1042731] } else {
[codex:1042731] /*
[codex:1042731] * We get the current exchange rate and calculate the amount to be redeemed:
[codex:1042731] * redeemTokens = redeemAmountIn / exchangeRate
[codex:1042731] */
[codex:1042731] redeemTokens = div_(redeemAmountIn, exchangeRate);
[codex:1042731]
[codex:1042731] uint256 _redeemAmount = mul_(redeemTokens, exchangeRate);
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1440,1920p' contracts/contracts/VToken.sol" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731]
[codex:1042731] // Set the interest rate model to newInterestRateModel
[codex:1042731] interestRateModel = newInterestRateModel;
[codex:1042731]
[codex:1042731] // Emit NewMarketInterestRateModel(oldInterestRateModel, newInterestRateModel)
[codex:1042731] emit NewMarketInterestRateModel(oldInterestRateModel, newInterestRateModel);
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * Safe Token **
[codex:1042731] */
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @dev Similar to ERC-20 transfer, but handles tokens that have transfer fees.
[codex:1042731] * This function returns the actual amount received,
[codex:1042731] * which may be less than `amount` if there is a fee attached to the transfer.
[codex:1042731] * @param from Sender of the underlying tokens
[codex:1042731] * @param amount Amount of underlying to transfer
[codex:1042731] * @return Actual amount received
[codex:1042731] */
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing reentrancy risks in VToken and related functions**
[codex:1042731]
[codex:1042731] I'm carefully tracing through VToken’s methods to see if missing nonReentrant guards, especially in borrowBehalf and setInterestRateModel, could open reentrancy vulnerabilities via external token transfers—thinking through how state updates and delegate approvals interact with possible malicious underlying tokens. I'll next check Comptroller.sol for related concerns.
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1,240p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] // SPDX-License-Identifier: BSD-3-Clause
[codex:1042731] pragma solidity 0.8.25;
[codex:1042731]
[codex:1042731] import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
[codex:1042731] import { ResilientOracleInterface } from "@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol";
[codex:1042731] import { AccessControlledV8 } from "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol";
[codex:1042731] import { IPrime } from "@venusprotocol/venus-protocol/contracts/Tokens/Prime/Interfaces/IPrime.sol";
[codex:1042731]
[codex:1042731] import { ComptrollerInterface, Action } from "./ComptrollerInterface.sol";
[codex:1042731] import { ComptrollerStorage } from "./ComptrollerStorage.sol";
[codex:1042731] import { ExponentialNoError } from "./ExponentialNoError.sol";
[codex:1042731] import { VToken } from "./VToken.sol";
[codex:1042731] import { RewardsDistributor } from "./Rewards/RewardsDistributor.sol";
[codex:1042731] import { MaxLoopsLimitHelper } from "./MaxLoopsLimitHelper.sol";
[codex:1042731] import { ensureNonzeroAddress } from "./lib/validators.sol";
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @title Comptroller
[codex:1042731] * @author Venus
[codex:1042731] * @notice The Comptroller is designed to provide checks for all minting, redeeming, transferring, borrowing, lending, repaying, liquidating,
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Investigating access control in Comptroller**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "function set|function _set|set[A-Z]" contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 9ms:
[codex:1042731] 220: _setMaxLoopsLimit(loopLimit);
[codex:1042731] 391: VToken[] memory userAssetList = accountAssets[msg.sender];
[codex:1042731] 392: uint256 len = userAssetList.length;
[codex:1042731] 394: uint256 assetIndex = len;
[codex:1042731] 396: if (userAssetList[i] == vToken) {
[codex:1042731] 397: assetIndex = i;
[codex:1042731] 403: assert(assetIndex < len);
[codex:1042731] 407: storedList[assetIndex] = storedList[storedList.length - 1];
[codex:1042731] 996: function setCloseFactor(uint256 newCloseFactorMantissa) external {
[codex:1042731] 997: _checkAccessAllowed("setCloseFactor(uint256)");
[codex:1042731] 1020: function setCollateralFactor(
[codex:1042731] 1025: _checkAccessAllowed("setCollateralFactor(address,uint256,uint256)");
[codex:1042731] 1073: function setLiquidationIncentive(uint256 newLiquidationIncentiveMantissa) external {
[codex:1042731] 1076: _checkAccessAllowed("setLiquidationIncentive(uint256)");
[codex:1042731] 1130: function setMarketBorrowCaps(VToken[] calldata vTokens, uint256[] calldata newBorrowCaps) external {
[codex:1042731] 1131: _checkAccessAllowed("setMarketBorrowCaps(address[],uint256[])");
[codex:1042731] 1156: function setMarketSupplyCaps(VToken[] calldata vTokens, uint256[] calldata newSupplyCaps) external {
[codex:1042731] 1157: _checkAccessAllowed("setMarketSupplyCaps(address[],uint256[])");
[codex:1042731] 1179: function setActionsPaused(VToken[] calldata marketsList, Action[] calldata actionsList, bool paused) external {
[codex:1042731] 1180: _checkAccessAllowed("setActionsPaused(address[],uint256[],bool)");
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Reviewing access control and initialization safeguards**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "_disableInitializers|initializer" contracts/contracts/Rewards/RewardsDistributor.sol' in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 109: // Note that the contract is upgradeable. Use initialize() or reinitializers
[codex:1042731] 111: _disableInitializers();
[codex:1042731] 115: * @notice RewardsDistributor initializer
[codex:1042731] 127: ) external initializer {
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1,200p' contracts/contracts/Rewards/RewardsDistributor.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] // SPDX-License-Identifier: BSD-3-Clause
[codex:1042731] pragma solidity 0.8.25;
[codex:1042731]
[codex:1042731] import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
[codex:1042731] import { IERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";
[codex:1042731] import { SafeERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol";
[codex:1042731] import { AccessControlledV8 } from "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol";
[codex:1042731] import { TimeManagerV8 } from "@venusprotocol/solidity-utilities/contracts/TimeManagerV8.sol";
[codex:1042731]
[codex:1042731] import { ExponentialNoError } from "../ExponentialNoError.sol";
[codex:1042731] import { VToken } from "../VToken.sol";
[codex:1042731] import { Comptroller } from "../Comptroller.sol";
[codex:1042731] import { MaxLoopsLimitHelper } from "../MaxLoopsLimitHelper.sol";
[codex:1042731] import { RewardsDistributorStorage } from "./RewardsDistributorStorage.sol";
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @title `RewardsDistributor`
[codex:1042731] * @author Venus
[codex:1042731] * @notice Contract used to configure, track and distribute rewards to users based on their actions (borrows and supplies) in the protocol.
[codex:1042731] * Users can receive additional rewards through a `RewardsDistributor`. Each `RewardsDistributor` proxy is initialized with a specific reward
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Inspecting RewardsDistributor security**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "claim|grant|setReward|_grant|delegate|transfer" contracts/contracts/Rewards/RewardsDistributor.sol' in /tmp/codex-multi-ch14js71 succeeded in 7ms:
[codex:1042731] 27: * The owner has the ability to transfer any amount of reward tokens held by the contract to any other address. Rewards are not distributed
[codex:1042731] 28: * automatically and must be claimed by a user calling `claimRewardToken()`. Users should be aware that it is up to the owner and other centralized
[codex:1042731] 68: /// @notice Emitted when REWARD TOKEN is granted by admin
[codex:1042731] 155: * @notice Calculate reward token accrued by a borrower and possibly transfer it to them
[codex:1042731] 178: * @dev Note: If there is not enough REWARD TOKEN, we do not perform the transfer all
[codex:1042731] 179: * @param recipient The address of the recipient to transfer REWARD TOKEN to
[codex:1042731] 180: * @param amount The amount of REWARD TOKEN to (possibly) transfer
[codex:1042731] 182: function grantRewardToken(address recipient, uint256 amount) external onlyOwner {
[codex:1042731] 183: uint256 amountLeft = _grantRewardToken(recipient, amount);
[codex:1042731] 184: require(amountLeft == 0, "insufficient rewardToken for grant");
[codex:1042731] 198: function setRewardTokenSpeeds(
[codex:1042731] 203: _checkAccessAllowed("setRewardTokenSpeeds(address[],uint256[],uint256[])");
[codex:1042731] 205: require(numTokens == supplySpeeds.length && numTokens == borrowSpeeds.length, "invalid setRewardTokenSpeeds");
[codex:1042731] 208: _setRewardTokenSpeed(vTokens[i], supplySpeeds[i], borrowSpeeds[i]);
[codex:1042731] 298: * @param holder The address to claim REWARD TOKEN for
[codex:1042731] 300: function claimRewardToken(address holder) external {
[codex:1042731] 301: return claimRewardToken(holder, comptroller.getAllMarkets());
[codex:1042731] 333: * @param holder The address to claim REWARD TOKEN for
[codex:1042731] 334: * @param vTokens The list of markets to claim REWARD TOKEN in
[codex:1042731] 336: function claimRewardToken(address holder, VToken[] memory vTokens) public {
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '280,380p' contracts/contracts/Rewards/RewardsDistributor.sol" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] updateContributorRewards(contributor);
[codex:1042731] if (rewardTokenSpeed == 0) {
[codex:1042731] // release storage
[codex:1042731] delete lastContributorBlock[contributor];
[codex:1042731] } else {
[codex:1042731] lastContributorBlock[contributor] = getBlockNumberOrTimestamp();
[codex:1042731] }
[codex:1042731] rewardTokenContributorSpeeds[contributor] = rewardTokenSpeed;
[codex:1042731]
[codex:1042731] emit ContributorRewardTokenSpeedUpdated(contributor, rewardTokenSpeed);
[codex:1042731] }
[codex:1042731]
[codex:1042731] function distributeSupplierRewardToken(address vToken, address supplier) external onlyComptroller {
[codex:1042731] _distributeSupplierRewardToken(vToken, supplier);
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Claim all the rewardToken accrued by holder in all markets
[codex:1042731] * @param holder The address to claim REWARD TOKEN for
[codex:1042731] */
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '520,640p' contracts/contracts/Rewards/RewardsDistributor.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] TimeBasedRewardToken storage borrowStateTimeBased = rewardTokenBorrowStateTimeBased[vToken];
[codex:1042731]
[codex:1042731] uint256 borrowIndex = isTimeBased ? borrowStateTimeBased.index : borrowState.index;
[codex:1042731] uint256 borrowerIndex = rewardTokenBorrowerIndex[vToken][borrower];
[codex:1042731]
[codex:1042731] // Update borrowers's index to the current index since we are distributing accrued REWARD TOKEN
[codex:1042731] rewardTokenBorrowerIndex[vToken][borrower] = borrowIndex;
[codex:1042731]
[codex:1042731] if (borrowerIndex == 0 && borrowIndex >= INITIAL_INDEX) {
[codex:1042731] // Covers the case where users borrowed tokens before the market's borrow state index was set.
[codex:1042731] // Rewards the user with REWARD TOKEN accrued from the start of when borrower rewards were first
[codex:1042731] // set for the market.
[codex:1042731] borrowerIndex = INITIAL_INDEX;
[codex:1042731] }
[codex:1042731]
[codex:1042731] // Calculate change in the cumulative sum of the REWARD TOKEN per borrowed unit accrued
[codex:1042731] Double memory deltaIndex = Double({ mantissa: sub_(borrowIndex, borrowerIndex) });
[codex:1042731]
[codex:1042731] uint256 borrowerAmount = div_(VToken(vToken).borrowBalanceStored(borrower), marketBorrowIndex);
[codex:1042731]
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing reentrancy risks and access controls**
[codex:1042731]
[codex:1042731] I'm scrutinizing claimRewardToken for reentrancy risks due to external token transfers, especially with ERC777 hooks potentially enabling repeated claims before state updates. I'm also checking VToken's external calls in _seize and inspecting ComptrollerInterface for proper access control to prevent unauthorized calls. This gives me a broad view of possible attack surfaces around external calls and missing guardrails.
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1,200p' contracts/contracts/ComptrollerInterface.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] // SPDX-License-Identifier: BSD-3-Clause
[codex:1042731] pragma solidity ^0.8.25;
[codex:1042731]
[codex:1042731] import { ResilientOracleInterface } from "@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol";
[codex:1042731]
[codex:1042731] import { VToken } from "./VToken.sol";
[codex:1042731] import { RewardsDistributor } from "./Rewards/RewardsDistributor.sol";
[codex:1042731]
[codex:1042731] enum Action {
[codex:1042731] MINT,
[codex:1042731] REDEEM,
[codex:1042731] BORROW,
[codex:1042731] REPAY,
[codex:1042731] SEIZE,
[codex:1042731] LIQUIDATE,
[codex:1042731] TRANSFER,
[codex:1042731] ENTER_MARKET,
[codex:1042731] EXIT_MARKET
[codex:1042731] }
[codex:1042731]
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Searching for preMintHook usage**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "preMintHook|preRedeemHook|preBorrowHook|preRepayHook|preLiquidateHook|preSeizeHook|transferVerify|borrowVerify|redeemVerify" contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 427: function preMintHook(address vToken, address minter, uint256 mintAmount) external override {
[codex:1042731] 481: function preRedeemHook(address vToken, address redeemer, uint256 redeemTokens) external override {
[codex:1042731] 503: function redeemVerify(address vToken, address redeemer, uint256 redeemAmount, uint256 redeemTokens) external {
[codex:1042731] 580: function transferVerify(address vToken, address src, address dst, uint256 transferTokens) external {
[codex:1042731] 601: function preBorrowHook(address vToken, address borrower, uint256 borrowAmount) external override {
[codex:1042731] 665: function borrowVerify(address vToken, address borrower, uint256 borrowAmount) external {
[codex:1042731] 679: function preRepayHook(address vToken, address borrower) external override {
[codex:1042731] 714: function preLiquidateHook(
[codex:1042731] 776: function preSeizeHook(
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '400,520p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] }
[codex:1042731]
[codex:1042731] // We *must* have found the asset in the list or our redundant data structure is broken
[codex:1042731] assert(assetIndex < len);
[codex:1042731]
[codex:1042731] // copy last item in list to location of item to be removed, reduce length by 1
[codex:1042731] VToken[] storage storedList = accountAssets[msg.sender];
[codex:1042731] storedList[assetIndex] = storedList[storedList.length - 1];
[codex:1042731] storedList.pop();
[codex:1042731]
[codex:1042731] emit MarketExited(vToken, msg.sender);
[codex:1042731]
[codex:1042731] return NO_ERROR;
[codex:1042731] }
[codex:1042731]
[codex:1042731] /*** Policy Hooks ***/
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Checks if the account should be allowed to mint tokens in the given market
[codex:1042731] * @param vToken The market to verify the mint against
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '520,720p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 7ms:
[codex:1042731] uint256 actualRepayAmount, // solhint-disable-line no-unused-vars
[codex:1042731] uint256 borrowerIndex // solhint-disable-line no-unused-vars
[codex:1042731] ) external {
[codex:1042731] if (address(prime) != address(0)) {
[codex:1042731] prime.accrueInterestAndUpdateScore(borrower, vToken);
[codex:1042731] }
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Validates liquidateBorrow, accrues interest and updates score in prime. Reverts on rejection. May emit logs.
[codex:1042731] * @param vTokenBorrowed Asset which was borrowed by the borrower
[codex:1042731] * @param vTokenCollateral Asset which was used as collateral and will be seized
[codex:1042731] * @param liquidator The address repaying the borrow and seizing the collateral
[codex:1042731] * @param borrower The address of the borrower
[codex:1042731] * @param actualRepayAmount The amount of underlying being repaid
[codex:1042731] * @param seizeTokens The amount of collateral token that will be seized
[codex:1042731] */
[codex:1042731] function liquidateBorrowVerify(
[codex:1042731] address vTokenBorrowed,
[codex:1042731] address vTokenCollateral, // solhint-disable-line no-unused-vars
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '720,860p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] ) external override {
[codex:1042731] // Pause Action.LIQUIDATE on BORROWED TOKEN to prevent liquidating it.
[codex:1042731] // If we want to pause liquidating to vTokenCollateral, we should pause
[codex:1042731] // Action.SEIZE on it
[codex:1042731] _checkActionPauseState(vTokenBorrowed, Action.LIQUIDATE);
[codex:1042731]
[codex:1042731] // Update the prices of tokens
[codex:1042731] updatePrices(borrower);
[codex:1042731]
[codex:1042731] if (!markets[vTokenBorrowed].isListed) {
[codex:1042731] revert MarketNotListed(address(vTokenBorrowed));
[codex:1042731] }
[codex:1042731] if (!markets[vTokenCollateral].isListed) {
[codex:1042731] revert MarketNotListed(address(vTokenCollateral));
[codex:1042731] }
[codex:1042731]
[codex:1042731] uint256 borrowBalance = VToken(vTokenBorrowed).borrowBalanceStored(borrower);
[codex:1042731]
[codex:1042731] /* Allow accounts to be liquidated if it is a forced liquidation */
[codex:1042731] if (skipLiquidityCheck || isForcedLiquidationEnabled[vTokenBorrowed]) {
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Reviewing access control in hooks and delegate updates**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "delegate" contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 7ms:
[codex:1042731] 103: /// @notice Emitted when the borrowing or redeeming delegate rights are updated for an account
[codex:1042731] 104: event DelegateUpdated(address indexed approver, address indexed delegate, bool approved);
[codex:1042731] 199: /// @notice Thrown if delegate approval status is already set to the requested value
[codex:1042731] 327: * @notice Grants or revokes the borrowing or redeeming delegate rights to / from an account
[codex:1042731] 328: * If allowed, the delegate will be able to borrow funds on behalf of the sender
[codex:1042731] 329: * Upon a delegated borrow, the delegate will receive the funds, and the borrower
[codex:1042731] 331: * Upon a delegated redeem, the delegate will receive the redeemed amount and the approver
[codex:1042731] 333: * @param delegate The address to update the rights for
[codex:1042731] 336: * @custom:error ZeroAddressNotAllowed is thrown when delegate address is zero
[codex:1042731] 340: function updateDelegate(address delegate, bool approved) external {
[codex:1042731] 341: ensureNonzeroAddress(delegate);
[codex:1042731] 342: if (approvedDelegates[msg.sender][delegate] == approved) {
[codex:1042731] 346: approvedDelegates[msg.sender][delegate] = approved;
[codex:1042731] 347: emit DelegateUpdated(msg.sender, delegate, approved);
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '300,360p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] if (!actionPaused(market, Action.TRANSFER)) {
[codex:1042731] revert TransferActionNotPaused();
[codex:1042731] }
[codex:1042731]
[codex:1042731] if (!actionPaused(market, Action.EXIT_MARKET)) {
[codex:1042731] revert ExitMarketActionNotPaused();
[codex:1042731] }
[codex:1042731]
[codex:1042731] if (borrowCaps[market] != 0) {
[codex:1042731] revert BorrowCapIsNotZero();
[codex:1042731] }
[codex:1042731]
[codex:1042731] if (supplyCaps[market] != 0) {
[codex:1042731] revert SupplyCapIsNotZero();
[codex:1042731] }
[codex:1042731]
[codex:1042731] if (_market.collateralFactorMantissa != 0) {
[codex:1042731] revert CollateralFactorIsNotZero();
[codex:1042731] }
[codex:1042731]
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing potential reward manipulation risks**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "_checkSenderIs" -n contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 7ms:
[codex:1042731] 610: _checkSenderIs(vToken);
[codex:1042731] 1096: _checkSenderIs(poolRegistry);
[codex:1042731] 1744: function _checkSenderIs(address expectedSender) internal view {
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1720,1765p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @dev Returns supply and borrow balances of user in vToken, reverts on failure
[codex:1042731] * @param vToken Market to query
[codex:1042731] * @param user Account address
[codex:1042731] * @return vTokenBalance Balance of vTokens, the same as vToken.balanceOf(user)
[codex:1042731] * @return borrowBalance Borrowed amount, including the interest
[codex:1042731] * @return exchangeRateMantissa Stored exchange rate
[codex:1042731] */
[codex:1042731] function _safeGetAccountSnapshot(
[codex:1042731] VToken vToken,
[codex:1042731] address user
[codex:1042731] ) internal view returns (uint256 vTokenBalance, uint256 borrowBalance, uint256 exchangeRateMantissa) {
[codex:1042731] uint256 err;
[codex:1042731] (err, vTokenBalance, borrowBalance, exchangeRateMantissa) = vToken.getAccountSnapshot(user);
[codex:1042731] if (err != 0) {
[codex:1042731] revert SnapshotError(address(vToken), user);
[codex:1042731] }
[codex:1042731] return (vTokenBalance, borrowBalance, exchangeRateMantissa);
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing potential vulnerabilities and upgrade risks**
[codex:1042731]
[codex:1042731] I'm reviewing access control and arithmetic issues in Comptroller and checking VToken for safe token handling and reentrancy protections. I'm focusing on the guard coverage in functions like _seize and examining oracle reliance and upgradeable contract risks, especially delegatecall usage.
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "delegatecall" contracts/contracts' in /tmp/codex-multi-ch14js71 exited 1 in 10ms:
[codex:1042731]
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Searching for permit usage**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "permit|signature|sig" contracts/contracts' in /tmp/codex-multi-ch14js71 succeeded in 9ms:
[codex:1042731] contracts/contracts/Comptroller.sol:20: * @notice The Comptroller is designed to provide checks for all minting, redeeming, transferring, borrowing, lending, repaying, liquidating,
[codex:1042731] contracts/contracts/Comptroller.sol:376: /* Fail if the sender is not permitted to redeem all of their tokens */
[codex:1042731] contracts/contracts/Comptroller.sol:1522: // NOTE: we store these somewhat redundantly as a significant optimization
[codex:1042731] contracts/contracts/ExponentialNoError.sol:37: * @dev Multiply an Exp by a scalar, then truncate to return an unsigned integer.
[codex:1042731] contracts/contracts/ExponentialNoError.sol:46: * @dev Multiply an Exp by a scalar, truncate, then add an to an unsigned integer, returning an unsigned integer.
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing upgradeable and reentrancy risks**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "updatePrices" -n contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 617: updatePrices(borrower);
[codex:1042731] 727: updatePrices(borrower);
[codex:1042731] 1455: function updatePrices(address account) public {
[codex:1042731] 1581: updatePrices(redeemer);
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1420,1490p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] function getRewardsByMarket(address vToken) external view returns (RewardSpeeds[] memory rewardSpeeds) {
[codex:1042731] uint256 rewardsDistributorsLength = rewardsDistributors.length;
[codex:1042731] rewardSpeeds = new RewardSpeeds[](rewardsDistributorsLength);
[codex:1042731] for (uint256 i; i < rewardsDistributorsLength; ++i) {
[codex:1042731] RewardsDistributor rewardsDistributor = rewardsDistributors[i];
[codex:1042731] address rewardToken = address(rewardsDistributor.rewardToken());
[codex:1042731] rewardSpeeds[i] = RewardSpeeds({
[codex:1042731] rewardToken: rewardToken,
[codex:1042731] supplySpeed: rewardsDistributor.rewardTokenSupplySpeeds(vToken),
[codex:1042731] borrowSpeed: rewardsDistributor.rewardTokenBorrowSpeeds(vToken)
[codex:1042731] });
[codex:1042731] }
[codex:1042731] return rewardSpeeds;
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Return all reward distributors for this pool
[codex:1042731] * @return Array of RewardDistributor addresses
[codex:1042731] */
[codex:1042731] function getRewardDistributors() external view returns (RewardsDistributor[] memory) {
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing potential reentrancy risks**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "setLastRewarding|setContributor|setRewardToken" contracts/contracts/Rewards/RewardsDistributor.sol' in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 198: function setRewardTokenSpeeds(
[codex:1042731] 203: _checkAccessAllowed("setRewardTokenSpeeds(address[],uint256[],uint256[])");
[codex:1042731] 205: require(numTokens == supplySpeeds.length && numTokens == borrowSpeeds.length, "invalid setRewardTokenSpeeds");
[codex:1042731] 208: _setRewardTokenSpeed(vTokens[i], supplySpeeds[i], borrowSpeeds[i]);
[codex:1042731] 218: function setLastRewardingBlocks(
[codex:1042731] 223: _checkAccessAllowed("setLastRewardingBlocks(address[],uint32[],uint32[])");
[codex:1042731] 229: "RewardsDistributor::setLastRewardingBlocks invalid input"
[codex:1042731] 233: _setLastRewardingBlock(vTokens[i], supplyLastRewardingBlocks[i], borrowLastRewardingBlocks[i]);
[codex:1042731] 246: function setLastRewardingBlockTimestamps(
[codex:1042731] 251: _checkAccessAllowed("setLastRewardingBlockTimestamps(address[],uint256[],uint256[])");
[codex:1042731] 258: "RewardsDistributor::setLastRewardingBlockTimestamps invalid input"
[codex:1042731] 262: _setLastRewardingBlockTimestamp(
[codex:1042731] 278: function setContributorRewardTokenSpeed(address contributor, uint256 rewardTokenSpeed) external onlyOwner {
[codex:1042731] 359: function _setLastRewardingBlock(
[codex:1042731] 400: function _setLastRewardingBlockTimestamp(
[codex:1042731] 449: function _setRewardTokenSpeed(VToken vToken, uint256 supplySpeed, uint256 borrowSpeed) internal {
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Reviewing reward token settings and liquidity checks**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "_checkRedeemAllowed|_getHypotheticalLiquiditySnapshot|_getLiquidationThreshold" contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 377: _checkRedeemAllowed(vTokenAddress, msg.sender, tokensHeld);
[codex:1042731] 484: _checkRedeemAllowed(vToken, redeemer, redeemTokens);
[codex:1042731] 634: AccountLiquiditySnapshot memory snapshot = _getHypotheticalLiquiditySnapshot(
[codex:1042731] 747: AccountLiquiditySnapshot memory snapshot = _getCurrentLiquiditySnapshot(borrower, _getLiquidationThreshold);
[codex:1042731] 843: _checkRedeemAllowed(vToken, src, transferTokens);
[codex:1042731] 883: AccountLiquiditySnapshot memory snapshot = _getCurrentLiquiditySnapshot(user, _getLiquidationThreshold);
[codex:1042731] 938: AccountLiquiditySnapshot memory snapshot = _getCurrentLiquiditySnapshot(borrower, _getLiquidationThreshold);
[codex:1042731] 1299: AccountLiquiditySnapshot memory snapshot = _getCurrentLiquiditySnapshot(account, _getLiquidationThreshold);
[codex:1042731] 1335: AccountLiquiditySnapshot memory snapshot = _getHypotheticalLiquiditySnapshot(
[codex:1042731] 1568: function _checkRedeemAllowed(address vToken, address redeemer, uint256 redeemTokens) internal {
[codex:1042731] 1584: AccountLiquiditySnapshot memory snapshot = _getHypotheticalLiquiditySnapshot(
[codex:1042731] 1609: return _getHypotheticalLiquiditySnapshot(account, VToken(address(0)), 0, 0, weight);
[codex:1042731] 1624: function _getHypotheticalLiquiditySnapshot(
[codex:1042731] 1718: function _getLiquidationThreshold(VToken asset) internal view returns (Exp memory) {
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1540,1635p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] for (uint256 i; i < marketsCount; ++i) {
[codex:1042731] if (allMarkets[i] == VToken(vToken)) {
[codex:1042731] revert MarketAlreadyListed(vToken);
[codex:1042731] }
[codex:1042731] }
[codex:1042731] allMarkets.push(VToken(vToken));
[codex:1042731] marketsCount = allMarkets.length;
[codex:1042731] _ensureMaxLoops(marketsCount);
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @dev Pause/unpause an action on a market
[codex:1042731] * @param market Market to pause/unpause the action on
[codex:1042731] * @param action Action id to pause/unpause
[codex:1042731] * @param paused The new paused state (true=paused, false=unpaused)
[codex:1042731] */
[codex:1042731] function _setActionPaused(address market, Action action, bool paused) internal {
[codex:1042731] require(markets[market].isListed, "cannot pause a market that is not listed");
[codex:1042731] _actionPaused[market][action] = paused;
[codex:1042731] emit ActionPausedMarket(VToken(market), action, paused);
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1635,1715p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] for (uint256 i; i < assetsCount; ++i) {
[codex:1042731] VToken asset = assets[i];
[codex:1042731]
[codex:1042731] // Read the balances and exchange rate from the vToken
[codex:1042731] (uint256 vTokenBalance, uint256 borrowBalance, uint256 exchangeRateMantissa) = _safeGetAccountSnapshot(
[codex:1042731] asset,
[codex:1042731] account
[codex:1042731] );
[codex:1042731]
[codex:1042731] // Get the normalized price of the asset
[codex:1042731] Exp memory oraclePrice = Exp({ mantissa: _safeGetUnderlyingPrice(asset) });
[codex:1042731]
[codex:1042731] // Pre-compute conversion factors from vTokens -> usd
[codex:1042731] Exp memory vTokenPrice = mul_(Exp({ mantissa: exchangeRateMantissa }), oraclePrice);
[codex:1042731] Exp memory weightedVTokenPrice = mul_(weight(asset), vTokenPrice);
[codex:1042731]
[codex:1042731] // weightedCollateral += weightedVTokenPrice * vTokenBalance
[codex:1042731] snapshot.weightedCollateral = mul_ScalarTruncateAddUInt(
[codex:1042731] weightedVTokenPrice,
[codex:1042731] vTokenBalance,
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Reviewing access controls and validations**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1220,1268p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 7ms:
[codex:1042731]
[codex:1042731] uint256 rewardsDistributorsLen = rewardsDistributors.length;
[codex:1042731] _ensureMaxLoops(rewardsDistributorsLen + 1);
[codex:1042731]
[codex:1042731] rewardsDistributors.push(_rewardsDistributor);
[codex:1042731] rewardsDistributorExists[address(_rewardsDistributor)] = true;
[codex:1042731]
[codex:1042731] uint256 marketsCount = allMarkets.length;
[codex:1042731]
[codex:1042731] for (uint256 i; i < marketsCount; ++i) {
[codex:1042731] _rewardsDistributor.initializeMarket(address(allMarkets[i]));
[codex:1042731] }
[codex:1042731]
[codex:1042731] emit NewRewardsDistributor(address(_rewardsDistributor), address(_rewardsDistributor.rewardToken()));
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Sets a new price oracle for the Comptroller
[codex:1042731] * @dev Only callable by the admin
[codex:1042731] * @param newOracle Address of the new price oracle to set
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Reviewing access control and financial logic**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "supportMarket|_supportMarket|addMarket|listMarket|unlist" contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 7ms:
[codex:1042731] 101: /// @notice Emitted when a market is unlisted
[codex:1042731] 249: * @param market The address of the market (token) to unlist
[codex:1042731] 263: function unlistMarket(address market) external returns (uint256) {
[codex:1042731] 264: _checkAccessAllowed("unlistMarket(address)");
[codex:1042731] 1095: function supportMarket(VToken vToken) external {
[codex:1042731] 1109: _addMarket(address(vToken));
[codex:1042731] 1537: function _addMarket(address vToken) internal {
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1060,1145p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] if (newLiquidationThresholdMantissa != oldLiquidationThresholdMantissa) {
[codex:1042731] market.liquidationThresholdMantissa = newLiquidationThresholdMantissa;
[codex:1042731] emit NewLiquidationThreshold(vToken, oldLiquidationThresholdMantissa, newLiquidationThresholdMantissa);
[codex:1042731] }
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Sets liquidationIncentive
[codex:1042731] * @dev This function is restricted by the AccessControlManager
[codex:1042731] * @param newLiquidationIncentiveMantissa New liquidationIncentive scaled by 1e18
[codex:1042731] * @custom:event Emits NewLiquidationIncentive on success
[codex:1042731] * @custom:access Controlled by AccessControlManager
[codex:1042731] */
[codex:1042731] function setLiquidationIncentive(uint256 newLiquidationIncentiveMantissa) external {
[codex:1042731] require(newLiquidationIncentiveMantissa >= MANTISSA_ONE, "liquidation incentive should be greater than 1e18");
[codex:1042731]
[codex:1042731] _checkAccessAllowed("setLiquidationIncentive(uint256)");
[codex:1042731]
[codex:1042731] // Save current value for use in log
[codex:1042731] uint256 oldLiquidationIncentiveMantissa = liquidationIncentiveMantissa;
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing access control and oracle risks**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "liquidateCalculateSeizeTokens" -n contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 1385: function liquidateCalculateSeizeTokens(
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1360,1420p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] return markets[address(vToken)].isListed;
[codex:1042731] }
[codex:1042731]
[codex:1042731] /*** Assets You Are In ***/
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Returns whether the given account is entered in a given market
[codex:1042731] * @param account The address of the account to check
[codex:1042731] * @param vToken The vToken to check
[codex:1042731] * @return True if the account is in the market specified, otherwise false.
[codex:1042731] */
[codex:1042731] function checkMembership(address account, VToken vToken) external view returns (bool) {
[codex:1042731] return markets[address(vToken)].accountMembership[account];
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Calculate number of tokens of collateral asset to seize given an underlying amount
[codex:1042731] * @dev Used in liquidation (called in vToken.liquidateBorrowFresh)
[codex:1042731] * @param vTokenBorrowed The address of the borrowed vToken
[codex:1042731] * @param vTokenCollateral The address of the collateral vToken
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing potential contract vulnerabilities**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc 'rg -n "healAccount|liquidateAccount" contracts/contracts/Comptroller.sol' in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 29: * The `Comptroller` also includes two functions `liquidateAccount()` and `healAccount()`, which are meant to handle accounts that do not exceed
[codex:1042731] 32: * - `healAccount()`: This function is called to seize all of a given user’s collateral, requiring the `msg.sender` repay a certain percentage
[codex:1042731] 34: * 100%, because otherwise no `badDebt` would be created and `liquidateAccount()` should be used instead. The difference in the actual amount of debt
[codex:1042731] 36: * - `liquidateAccount()`: This function can only be called if the collateral seized will cover all borrows of an account, as well as the liquidation
[codex:1042731] 37: * incentive. Otherwise, the pool will incur bad debt, in which case the function `healAccount()` should be used instead. This function skips the logic
[codex:1042731] 168: * a predefined threshold. In this case only batch liquidations (either liquidateAccount
[codex:1042731] 169: * or healAccount) are available.
[codex:1042731] 750: /* The liquidator should use either liquidateAccount or healAccount */
[codex:1042731] 869: function healAccount(address user) external {
[codex:1042731] 926: * below the threshold, and the account is insolvent, use healAccount.
[codex:1042731] 935: function liquidateAccount(address borrower, LiquidationOrder[] calldata orders) external {
[codex:1042731] 1197: * operations like liquidateAccount or healAccount.
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '860,980p' contracts/contracts/Comptroller.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] * borrows, and treats the rest of the debt as bad debt (for each market).
[codex:1042731] * The sender has to repay a certain percentage of the debt, computed as
[codex:1042731] * collateral / (borrows * liquidationIncentive).
[codex:1042731] * @param user account to heal
[codex:1042731] * @custom:error CollateralExceedsThreshold error is thrown when the collateral is too big for healing
[codex:1042731] * @custom:error SnapshotError is thrown if some vToken fails to return the account's supply and borrows
[codex:1042731] * @custom:error PriceError is thrown if the oracle returns an incorrect price for some asset
[codex:1042731] * @custom:access Not restricted
[codex:1042731] */
[codex:1042731] function healAccount(address user) external {
[codex:1042731] VToken[] memory userAssets = getAssetsIn(user);
[codex:1042731] uint256 userAssetsCount = userAssets.length;
[codex:1042731]
[codex:1042731] address liquidator = msg.sender;
[codex:1042731] {
[codex:1042731] ResilientOracleInterface oracle_ = oracle;
[codex:1042731] // We need all user's markets to be fresh for the computations to be correct
[codex:1042731] for (uint256 i; i < userAssetsCount; ++i) {
[codex:1042731] userAssets[i].accrueInterest();
[codex:1042731] oracle_.updatePrice(address(userAssets[i]));
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing potential reentrancy and access control risks**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1,200p' contracts/contracts/ExponentialNoError.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] // SPDX-License-Identifier: BSD-3-Clause
[codex:1042731] pragma solidity 0.8.25;
[codex:1042731]
[codex:1042731] import { EXP_SCALE as EXP_SCALE_, MANTISSA_ONE as MANTISSA_ONE_ } from "./lib/constants.sol";
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @title Exponential module for storing fixed-precision decimals
[codex:1042731] * @author Compound
[codex:1042731] * @notice Exp is a struct which stores decimals with a fixed precision of 18 decimal places.
[codex:1042731] * Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is:
[codex:1042731] * `Exp({mantissa: 5100000000000000000})`.
[codex:1042731] */
[codex:1042731] contract ExponentialNoError {
[codex:1042731] struct Exp {
[codex:1042731] uint256 mantissa;
[codex:1042731] }
[codex:1042731]
[codex:1042731] struct Double {
[codex:1042731] uint256 mantissa;
[codex:1042731] }
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Checking MaxLoopsLimitHelper**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '1,200p' contracts/contracts/MaxLoopsLimitHelper.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] // SPDX-License-Identifier: BSD-3-Clause
[codex:1042731] pragma solidity 0.8.25;
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @title MaxLoopsLimitHelper
[codex:1042731] * @author Venus
[codex:1042731] * @notice Abstract contract used to avoid collection with too many items that would generate gas errors and DoS.
[codex:1042731] */
[codex:1042731] abstract contract MaxLoopsLimitHelper {
[codex:1042731] // Limit for the loops to avoid the DOS
[codex:1042731] uint256 public maxLoopsLimit;
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @dev This empty reserved space is put in place to allow future versions to add new
[codex:1042731] * variables without shifting down storage in the inheritance chain.
[codex:1042731] * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
[codex:1042731] */
[codex:1042731] uint256[49] private __gap;
[codex:1042731]
[codex:1042731] /// @notice Emitted when max loops limit is set
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Analyzing possible reentrancy vulnerabilities**
[codex:1042731]
[codex:1042731] I'm examining the code for reentrancy issues, especially in RewardsDistributor.claimRewardToken where token transfers happen before state updates, potentially allowing double claims via ERC777 hooks on recipient contracts. I’m also checking VToken functions like borrowBehalf which lack nonReentrant guards, possibly enabling nested calls during external transfers. Additionally, I’m considering external call patterns in Comptroller and the risk of malicious contracts or misconfigurations causing state inconsistencies. Overall, this looks like a solid lead on medium-level reentrancy risks worth reporting.
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "rg -n \"call\\(|delegatecall|staticcall\" contracts/contracts" in /tmp/codex-multi-ch14js71 exited 1 in 10ms:
[codex:1042731]
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Evaluating reentrancy and accounting risks**
[codex:1042731]
[codex:1042731] I'm closely examining reentrancy risks in borrowBehalf due to missing nonReentrant guards and complex token transfer hooks, especially with ERC777 tokens. I’m also weighing subtle accounting edge cases in RewardsDistributor and VToken, considering whether state updates before external calls fully prevent exploitation or allow other invariant breaks. There is a lot to unpack with reserve transfers, reward distributions, and potential griefing vectors that seem unlikely exploitable but deserve mention. I'll keep all these angles in mind.
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "sed -n '430,520p' contracts/contracts/Rewards/RewardsDistributor.sol" in /tmp/codex-multi-ch14js71 succeeded in 5ms:
[codex:1042731] );
[codex:1042731]
[codex:1042731] if (currentSupplyLastRewardingBlockTimestamp != supplyLastRewardingBlockTimestamp) {
[codex:1042731] rewardTokenSupplyStateTimeBased[address(vToken)].lastRewardingTimestamp = supplyLastRewardingBlockTimestamp;
[codex:1042731] emit SupplyLastRewardingBlockTimestampUpdated(address(vToken), supplyLastRewardingBlockTimestamp);
[codex:1042731] }
[codex:1042731]
[codex:1042731] if (currentBorrowLastRewardingBlockTimestamp != borrowLastRewardingBlockTimestamp) {
[codex:1042731] rewardTokenBorrowStateTimeBased[address(vToken)].lastRewardingTimestamp = borrowLastRewardingBlockTimestamp;
[codex:1042731] emit BorrowLastRewardingBlockTimestampUpdated(address(vToken), borrowLastRewardingBlockTimestamp);
[codex:1042731] }
[codex:1042731] }
[codex:1042731]
[codex:1042731] /**
[codex:1042731] * @notice Set REWARD TOKEN speed for a single market.
[codex:1042731] * @param vToken market's whose reward token rate to be updated
[codex:1042731] * @param supplySpeed New supply-side REWARD TOKEN speed for market
[codex:1042731] * @param borrowSpeed New borrow-side REWARD TOKEN speed for market
[codex:1042731] */
[codex:1042731] function _setRewardTokenSpeed(VToken vToken, uint256 supplySpeed, uint256 borrowSpeed) internal {
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Identifying potential reentrancy and oracle issues**
[codex:1042731]
[codex:1042731] I'm analyzing reentrancy risks mainly in claimRewardToken and grantRewardToken, noting grantRewardToken's onlyOwner limitation reduces risk. I'm also spotting a logic bug in loop limits for liquidateAccount and considering a serious oracle price staleness vulnerability: liquidateAccount uses cached prices without forced update, allowing improper liquidations based on outdated data since the actual liquidation bypasses collateral checks due to skip flags. This inconsistency could enable attackers to liquidate healthy accounts if the oracle price feed is stale.
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "nl -ba contracts/contracts/Rewards/RewardsDistributor.sol | sed -n '320,380p'" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 320 if (deltaBlocksOrTimestamp > 0 && rewardTokenSpeed > 0) {
[codex:1042731] 321 uint256 newAccrued = mul_(deltaBlocksOrTimestamp, rewardTokenSpeed);
[codex:1042731] 322 uint256 contributorAccrued = add_(rewardTokenAccrued[contributor], newAccrued);
[codex:1042731] 323
[codex:1042731] 324 rewardTokenAccrued[contributor] = contributorAccrued;
[codex:1042731] 325 lastContributorBlock[contributor] = blockNumberOrTimestamp;
[codex:1042731] 326
[codex:1042731] 327 emit ContributorRewardsUpdated(contributor, rewardTokenAccrued[contributor]);
[codex:1042731] 328 }
[codex:1042731] 329 }
[codex:1042731] 330
[codex:1042731] 331 /**
[codex:1042731] 332 * @notice Claim all the rewardToken accrued by holder in the specified markets
[codex:1042731] 333 * @param holder The address to claim REWARD TOKEN for
[codex:1042731] 334 * @param vTokens The list of markets to claim REWARD TOKEN in
[codex:1042731] 335 */
[codex:1042731] 336 function claimRewardToken(address holder, VToken[] memory vTokens) public {
[codex:1042731] 337 uint256 vTokensCount = vTokens.length;
[codex:1042731] 338
[codex:1042731] 339 _ensureMaxLoops(vTokensCount);
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Noticing missing _grantRewardToken line**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "nl -ba contracts/contracts/Rewards/RewardsDistributor.sol | sed -n '540,600p'" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 540 // Calculate REWARD TOKEN accrued: vTokenAmount * accruedPerBorrowedUnit
[codex:1042731] 541 if (borrowerAmount != 0) {
[codex:1042731] 542 uint256 borrowerDelta = mul_(borrowerAmount, deltaIndex);
[codex:1042731] 543
[codex:1042731] 544 uint256 borrowerAccrued = add_(rewardTokenAccrued[borrower], borrowerDelta);
[codex:1042731] 545 rewardTokenAccrued[borrower] = borrowerAccrued;
[codex:1042731] 546
[codex:1042731] 547 emit DistributedBorrowerRewardToken(VToken(vToken), borrower, borrowerDelta, borrowerAccrued, borrowIndex);
[codex:1042731] 548 }
[codex:1042731] 549 }
[codex:1042731] 550
[codex:1042731] 551 /**
[codex:1042731] 552 * @notice Transfer REWARD TOKEN to the user.
[codex:1042731] 553 * @dev Note: If there is not enough REWARD TOKEN, we do not perform the transfer all.
[codex:1042731] 554 * @param user The address of the user to transfer REWARD TOKEN to
[codex:1042731] 555 * @param amount The amount of REWARD TOKEN to (possibly) transfer
[codex:1042731] 556 * @return The amount of REWARD TOKEN which was NOT transferred to the user
[codex:1042731] 557 */
[codex:1042731] 558 function _grantRewardToken(address user, uint256 amount) internal returns (uint256) {
[codex:1042731] 559 uint256 rewardTokenRemaining = rewardToken.balanceOf(address(this));
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Adding line numbers to snapshot**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "nl -ba contracts/contracts/Comptroller.sol | sed -n '900,980p'" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 900 Exp memory percentage = div_(collateral, scaledBorrows);
[codex:1042731] 901 if (lessThanExp(Exp({ mantissa: MANTISSA_ONE }), percentage)) {
[codex:1042731] 902 revert CollateralExceedsThreshold(scaledBorrows.mantissa, collateral.mantissa);
[codex:1042731] 903 }
[codex:1042731] 904
[codex:1042731] 905 for (uint256 i; i < userAssetsCount; ++i) {
[codex:1042731] 906 VToken market = userAssets[i];
[codex:1042731] 907
[codex:1042731] 908 (uint256 tokens, uint256 borrowBalance, ) = _safeGetAccountSnapshot(market, user);
[codex:1042731] 909 uint256 repaymentAmount = mul_ScalarTruncate(percentage, borrowBalance);
[codex:1042731] 910
[codex:1042731] 911 // Seize the entire collateral
[codex:1042731] 912 if (tokens != 0) {
[codex:1042731] 913 market.seize(liquidator, user, tokens);
[codex:1042731] 914 }
[codex:1042731] 915 // Repay a certain percentage of the borrow, forgive the rest
[codex:1042731] 916 if (borrowBalance != 0) {
[codex:1042731] 917 market.healBorrow(liquidator, user, repaymentAmount);
[codex:1042731] 918 }
[codex:1042731] 919 }
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Documenting oracle price update issue**
[codex:1042731] exec
[codex:1042731] /bin/bash -lc "nl -ba contracts/contracts/Comptroller.sol | sed -n '1580,1705p'" in /tmp/codex-multi-ch14js71 succeeded in 6ms:
[codex:1042731] 1580 // Update the prices of tokens
[codex:1042731] 1581 updatePrices(redeemer);
[codex:1042731] 1582
[codex:1042731] 1583 /* Otherwise, perform a hypothetical liquidity check to guard against shortfall */
[codex:1042731] 1584 AccountLiquiditySnapshot memory snapshot = _getHypotheticalLiquiditySnapshot(
[codex:1042731] 1585 redeemer,
[codex:1042731] 1586 VToken(vToken),
[codex:1042731] 1587 redeemTokens,
[codex:1042731] 1588 0,
[codex:1042731] 1589 _getCollateralFactor
[codex:1042731] 1590 );
[codex:1042731] 1591 if (snapshot.shortfall > 0) {
[codex:1042731] 1592 revert InsufficientLiquidity();
[codex:1042731] 1593 }
[codex:1042731] 1594 }
[codex:1042731] 1595
[codex:1042731] 1596 /**
[codex:1042731] 1597 * @notice Get the total collateral, weighted collateral, borrow balance, liquidity, shortfall
[codex:1042731] 1598 * @param account The account to get the snapshot for
[codex:1042731] 1599 * @param weight The function to compute the weight of the collateral – either collateral factor or
[codex:1042731]
[codex:1042731] thinking
[codex:1042731] **Summarizing security findings and recommendations**
[codex:1042731] codex
[codex:1042731] {"no_findings":false,"summary":"Identified two issues: reentrant reward claims can double-spend accrued rewards, and batch liquidations rely on potentially stale oracle/interest data for eligibility checks.","findings":[{"severity":"medium","category":"reentrancy","title":"Reentrant reward claims can double-spend `rewardTokenAccrued`","exploit_scenario":"A contract holder with accrued rewards calls `claimRewardToken`. During `_grantRewardToken`, the reward token transfer triggers a callback (e.g., ERC777 `tokensReceived`) that reenters `claimRewardToken` before `rewardTokenAccrued[holder]` is cleared. The reentrant call sees the same accrued balance and can claim again, draining the reward token balance.","recommendation":"Apply checks-effects-interactions: set `rewardTokenAccrued[holder]=0` before the transfer and restore any leftover after, or add a reentrancy guard around `claimRewardToken`/`_grantRewardToken`.","evidence":"`claimRewardToken` clears accrued rewards only after `_grantRewardToken` performs the external transfer.","locations":["contracts/contracts/Rewards/RewardsDistributor.sol:336","contracts/contracts/Rewards/RewardsDistributor.sol:350","contracts/contracts/Rewards/RewardsDistributor.sol:558"]},{"severity":"medium","category":"oracle","title":"Batch liquidations use potentially stale prices/interest for eligibility checks","exploit_scenario":"`liquidateAccount` decides eligibility using `_getCurrentLiquiditySnapshot` without updating oracle prices or accruing interest. If the oracle returns stale prices (or exchange rates are stale), an attacker can liquidate an account that would be healthy under fresh data. Subsequent `forceLiquidateBorrow(..., true)` skips liquidity checks, so the stale snapshot becomes the only gate.","recommendation":"Before computing the snapshot, update prices for the borrower’s markets and accrue interest (similar to `healAccount`). Alternatively, revalidate eligibility after price updates or avoid skipping liquidity checks in batch liquidations.","evidence":"`liquidateAccount` calls `_getCurrentLiquiditySnapshot` directly; the snapshot uses `oracle.getUnderlyingPrice` and stored exchange rates without refresh.","locations":["contracts/contracts/Comptroller.sol:935","contracts/contracts/Comptroller.sol:938","contracts/contracts/Comptroller.sol:1605","contracts/contracts/Comptroller.sol:1696"]}]}
[codex:1042731] tokens used
[codex:1042731] 91,124
[codex:1042731] {"no_findings":false,"summary":"Identified two issues: reentrant reward claims can double-spend accrued rewards, and batch liquidations rely on potentially stale oracle/interest data for eligibility checks.","findings":[{"severity":"medium","category":"reentrancy","title":"Reentrant reward claims can double-spend `rewardTokenAccrued`","exploit_scenario":"A contract holder with accrued rewards calls `claimRewardToken`. During `_grantRewardToken`, the reward token transfer triggers a callback (e.g., ERC777 `tokensReceived`) that reenters `claimRewardToken` before `rewardTokenAccrued[holder]` is cleared. The reentrant call sees the same accrued balance and can claim again, draining the reward token balance.","recommendation":"Apply checks-effects-interactions: set `rewardTokenAccrued[holder]=0` before the transfer and restore any leftover after, or add a reentrancy guard around `claimRewardToken`/`_grantRewardToken`.","evidence":"`claimRewardToken` clears accrued rewards only after `_grantRewardToken` performs the external transfer.","locations":["contracts/contracts/Rewards/RewardsDistributor.sol:336","contracts/contracts/Rewards/RewardsDistributor.sol:350","contracts/contracts/Rewards/RewardsDistributor.sol:558"]},{"severity":"medium","category":"oracle","title":"Batch liquidations use potentially stale prices/interest for eligibility checks","exploit_scenario":"`liquidateAccount` decides eligibility using `_getCurrentLiquiditySnapshot` without updating oracle prices or accruing interest. If the oracle returns stale prices (or exchange rates are stale), an attacker can liquidate an account that would be healthy under fresh data. Subsequent `forceLiquidateBorrow(..., true)` skips liquidity checks, so the stale snapshot becomes the only gate.","recommendation":"Before computing the snapshot, update prices for the borrower’s markets and accrue interest (similar to `healAccount`). Alternatively, revalidate eligibility after price updates or avoid skipping liquidity checks in batch liquidations.","evidence":"`liquidateAccount` calls `_getCurrentLiquiditySnapshot` directly; the snapshot uses `oracle.getUnderlyingPrice` and stored exchange rates without refresh.","locations":["contracts/contracts/Comptroller.sol:935","contracts/contracts/Comptroller.sol:938","contracts/contracts/Comptroller.sol:1605","contracts/contracts/Comptroller.sol:1696"]}]}
{
"codex": {
"ran_at": "2025-12-29T16:30:34.650603+00:00",
"returncode": 0
},
"summary": "Identified two issues: reentrant reward claims can double-spend accrued rewards, and batch liquidations rely on potentially stale oracle/interest data for eligibility checks.",
"raw_final": {
"summary": "Identified two issues: reentrant reward claims can double-spend accrued rewards, and batch liquidations rely on potentially stale oracle/interest data for eligibility checks.",
"findings": [
{
"title": "Reentrant reward claims can double-spend `rewardTokenAccrued`",
"category": "reentrancy",
"evidence": "`claimRewardToken` clears accrued rewards only after `_grantRewardToken` performs the external transfer.",
"severity": "medium",
"locations": [
"contracts/contracts/Rewards/RewardsDistributor.sol:336",
"contracts/contracts/Rewards/RewardsDistributor.sol:350",
"contracts/contracts/Rewards/RewardsDistributor.sol:558"
],
"recommendation": "Apply checks-effects-interactions: set `rewardTokenAccrued[holder]=0` before the transfer and restore any leftover after, or add a reentrancy guard around `claimRewardToken`/`_grantRewardToken`.",
"exploit_scenario": "A contract holder with accrued rewards calls `claimRewardToken`. During `_grantRewardToken`, the reward token transfer triggers a callback (e.g., ERC777 `tokensReceived`) that reenters `claimRewardToken` before `rewardTokenAccrued[holder]` is cleared. The reentrant call sees the same accrued balance and can claim again, draining the reward token balance."
},
{
"title": "Batch liquidations use potentially stale prices/interest for eligibility checks",
"category": "oracle",
"evidence": "`liquidateAccount` calls `_getCurrentLiquiditySnapshot` directly; the snapshot uses `oracle.getUnderlyingPrice` and stored exchange rates without refresh.",
"severity": "medium",
"locations": [
"contracts/contracts/Comptroller.sol:935",
"contracts/contracts/Comptroller.sol:938",
"contracts/contracts/Comptroller.sol:1605",
"contracts/contracts/Comptroller.sol:1696"
],
"recommendation": "Before computing the snapshot, update prices for the borrower\u2019s markets and accrue interest (similar to `healAccount`). Alternatively, revalidate eligibility after price updates or avoid skipping liquidity checks in batch liquidations.",
"exploit_scenario": "`liquidateAccount` decides eligibility using `_getCurrentLiquiditySnapshot` without updating oracle prices or accruing interest. If the oracle returns stale prices (or exchange rates are stale), an attacker can liquidate an account that would be healthy under fresh data. Subsequent `forceLiquidateBorrow(..., true)` skips liquidity checks, so the stale snapshot becomes the only gate."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x0433 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x7821a514 00000026: GT 00000027: PUSH2 0x0236 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xb2a02ff1 00000031: GT 00000032: PUSH2 0x013b 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xdd62ed3e 0000003c: GT 0000003d: PUSH2 0x00c3 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xef60450c 00000047: GT 00000048: PUSH2 0x0087 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xef60450c 00000052: EQ 00000053: PUSH2 0x0932 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xf2fde38b 0000005d: EQ 0000005e: PUSH2 0x0945 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xf3fdb15a 00000068: EQ 00000069: PUSH2 0x0958 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0xf5e3c462 00000073: EQ 00000074: PUSH2 0x096b 00000077: JUMPI 00000078: DUP1 00000079: PUSH4 0xf8f9da28 0000007e: EQ 0000007f: PUSH2 0x097e 00000082: JUMPI 00000083: PUSH1 0x00 00000085: DUP1 00000086: REVERT 00000087: JUMPDEST 00000088: DUP1 00000089: PUSH4 0xdd62ed3e 0000008e: EQ 0000008f: PUSH2 0x08b5 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0xdf3a516e 00000099: EQ 0000009a: PUSH2 0x08ee 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0xe1d146fb 000000a4: EQ 000000a5: PUSH2 0x0901 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0xe30c3978 000000af: EQ 000000b0: PUSH2 0x0909 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0xe9a44fd9 000000ba: EQ 000000bb: PUSH2 0x091a 000000be: JUMPI 000000bf: PUSH1 0x00 000000c1: DUP1 000000c2: REVERT 000000c3: JUMPDEST 000000c4: DUP1 000000c5: PUSH4 0xc37f68e2 000000ca: GT 000000cb: PUSH2 0x010a 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0xc37f68e2 000000d5: EQ 000000d6: PUSH2 0x082c 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0xc5ebeaec 000000e0: EQ 000000e1: PUSH2 0x085f 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0xc7ad0895 000000eb: EQ 000000ec: PUSH2 0x0872 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0xd1109c2f 000000f6: EQ 000000f7: PUSH2 0x0899 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0xdb006a75 00000101: EQ 00000102: PUSH2 0x08a2 00000105: JUMPI 00000106: PUSH1 0x00 00000108: DUP1 00000109: REVERT 0000010a: JUMPDEST 0000010b: DUP1 0000010c: PUSH4 0xb2a02ff1 00000111: EQ 00000112: PUSH2 0x07f7 00000115: JUMPI 00000116: DUP1 00000117: PUSH4 0xb4a0bdf3 0000011c: EQ 0000011d: PUSH2 0x080a 00000120: JUMPI 00000121: DUP1 00000122: PUSH4 0xbbcac557 00000127: EQ 00000128: PUSH2 0x081b 0000012b: JUMPI 0000012c: DUP1 0000012d: PUSH4 0xbd6d894d 00000132: EQ 00000133: PUSH2 0x0824 00000136: JUMPI 00000137: PUSH1 0x00 00000139: DUP1 0000013a: REVERT 0000013b: JUMPDEST 0000013c: DUP1 0000013d: PUSH4 0x95d89b41 00000142: GT 00000143: PUSH2 0x01be 00000146: JUMPI 00000147: DUP1 00000148: PUSH4 0xa6afed95 0000014d: GT 0000014e: PUSH2 0x018d 00000151: JUMPI 00000152: DUP1 00000153: PUSH4 0xa6afed95 00000158: EQ 00000159: PUSH2 0x07c2 0000015c: JUMPI 0000015d: DUP1 0000015e: PUSH4 0xa9059cbb 00000163: EQ 00000164: PUSH2 0x07ca 00000167: JUMPI 00000168: DUP1 00000169: PUSH4 0xaa5af0fd 0000016e: EQ 0000016f: PUSH2 0x07dd 00000172: JUMPI 00000173: DUP1 00000174: PUSH4 0xae96f141 00000179: EQ 0000017a: PUSH2 0x07e6 0000017d: JUMPI 0000017e: DUP1 0000017f: PUSH4 0xae9d70b0 00000184: EQ 00000185: PUSH2 0x07ef 00000188: JUMPI 00000189: PUSH1 0x00 0000018b: DUP1 0000018c: REVERT 0000018d: JUMPDEST 0000018e: DUP1 0000018f: PUSH4 0x95d89b41 00000194: EQ 00000195: PUSH2 0x0781 00000198: JUMPI 00000199: DUP1 0000019a: PUSH4 0x95dd9193 0000019f: EQ 000001a0: PUSH2 0x0789 000001a3: JUMPI 000001a4: DUP1 000001a5: PUSH4 0xa0712d68 000001aa: EQ 000001ab: PUSH2 0x079c 000001ae: JUMPI 000001af: DUP1 000001b0: PUSH4 0xa457c2d7 000001b5: EQ 000001b6: PUSH2 0x07af 000001b9: JUMPI 000001ba: PUSH1 0x00 000001bc: DUP1 000001bd: REVERT 000001be: JUMPDEST 000001bf: DUP1 000001c0: PUSH4 0x8a42c319 000001c5: GT 000001c6: PUSH2 0x0205 000001c9: JUMPI 000001ca: DUP1 000001cb: PUSH4 0x8a42c319 000001d0: EQ 000001d1: PUSH2 0x072e 000001d4: JUMPI 000001d5: DUP1 000001d6: PUSH4 0x8bbdb6db 000001db: EQ 000001dc: PUSH2 0x0741 000001df: JUMPI 000001e0: DUP1 000001e1: PUSH4 0x8bcd4016 000001e6: EQ 000001e7: PUSH2 0x0754 000001ea: JUMPI 000001eb: DUP1 000001ec: PUSH4 0x8da5cb5b 000001f1: EQ 000001f2: PUSH2 0x0767 000001f5: JUMPI 000001f6: DUP1 000001f7: PUSH4 0x8f840ddd 000001fc: EQ 000001fd: PUSH2 0x0778 00000200: JUMPI 00000201: PUSH1 0x00 00000203: DUP1 00000204: REVERT 00000205: JUMPDEST 00000206: DUP1 00000207: PUSH4 0x7821a514 0000020c: EQ 0000020d: PUSH2 0x06ed 00000210: JUMPI 00000211: DUP1 00000212: PUSH4 0x79ba5097 00000217: EQ 00000218: PUSH2 0x0700 0000021b: JUMPI 0000021c: DUP1 0000021d: PUSH4 0x852a12e3 00000222: EQ 00000223: PUSH2 0x0708 00000226: JUMPI 00000227: DUP1 00000228: PUSH4 0x856e5bb3 0000022d: EQ 0000022e: PUSH2 0x071b 00000231: JUMPI 00000232: PUSH1 0x00 00000234: DUP1 00000235: REVERT 00000236: JUMPDEST 00000237: DUP1 00000238: PUSH4 0x313ce567 0000023d: GT 0000023e: PUSH2 0x033c 00000241: JUMPI 00000242: DUP1 00000243: PUSH4 0x6752e702 00000248: GT 00000249: PUSH2 0x02c4 0000024c: JUMPI 0000024d: DUP1 0000024e: PUSH4 0x6f307dc3 00000253: GT 00000254: PUSH2 0x0293 00000257: JUMPI 00000258: DUP1 00000259: PUSH4 0x6f307dc3 0000025e: EQ 0000025f: PUSH2 0x0689 00000262: JUMPI 00000263: DUP1 00000264: PUSH4 0x70a08231 00000269: EQ 0000026a: PUSH2 0x06a1 0000026d: JUMPI 0000026e: DUP1 0000026f: PUSH4 0x715018a6 00000274: EQ 00000275: PUSH2 0x06ca 00000278: JUMPI 00000279: DUP1 0000027a: PUSH4 0x73acee98 0000027f: EQ 00000280: PUSH2 0x06d2 00000283: JUMPI 00000284: DUP1 00000285: PUSH4 0x757212f0 0000028a: EQ 0000028b: PUSH2 0x06da 0000028e: JUMPI 0000028f: PUSH1 0x00 00000291: DUP1 00000292: REVERT 00000293: JUMPDEST 00000294: DUP1 00000295: PUSH4 0x6752e702 0000029a: EQ 0000029b: PUSH2 0x0648 0000029e: JUMPI 0000029f: DUP1 000002a0: PUSH4 0x6857249c 000002a5: EQ 000002a6: PUSH2 0x0651 000002a9: JUMPI 000002aa: DUP1 000002ab: PUSH4 0x69ab3250 000002b0: EQ 000002b1: PUSH2 0x0678 000002b4: JUMPI 000002b5: DUP1 000002b6: PUSH4 0x6c540baf 000002bb: EQ 000002bc: PUSH2 0x0680 000002bf: JUMPI 000002c0: PUSH1 0x00 000002c2: DUP1 000002c3: REVERT 000002c4: JUMPDEST 000002c5: DUP1 000002c6: PUSH4 0x3d9ea3a1 000002cb: GT 000002cc: PUSH2 0x030b 000002cf: JUMPI 000002d0: DUP1 000002d1: PUSH4 0x3d9ea3a1 000002d6: EQ 000002d7: PUSH2 0x05ff 000002da: JUMPI 000002db: DUP1 000002dc: PUSH4 0x41f641ee 000002e1: EQ 000002e2: PUSH2 0x0606 000002e5: JUMPI 000002e6: DUP1 000002e7: PUSH4 0x44fe6ffe 000002ec: EQ 000002ed: PUSH2 0x0619 000002f0: JUMPI 000002f1: DUP1 000002f2: PUSH4 0x47bd3718 000002f7: EQ 000002f8: PUSH2 0x062c 000002fb: JUMPI 000002fc: DUP1 000002fd: PUSH4 0x5fe3b567 00000302: EQ 00000303: PUSH2 0x0635 00000306: JUMPI 00000307: PUSH1 0x00 00000309: DUP1 0000030a: REVERT 0000030b: JUMPDEST 0000030c: DUP1 0000030d: PUSH4 0x313ce567 00000312: EQ 00000313: PUSH2 0x05b2 00000316: JUMPI 00000317: DUP1 00000318: PUSH4 0x39509351 0000031d: EQ 0000031e: PUSH2 0x05d1 00000321: JUMPI 00000322: DUP1 00000323: PUSH4 0x3af9e669 00000328: EQ 00000329: PUSH2 0x05e4 0000032c: JUMPI 0000032d: DUP1 0000032e: PUSH4 0x3b1d21a2 00000333: EQ 00000334: PUSH2 0x05f7 00000337: JUMPI 00000338: PUSH1 0x00 0000033a: DUP1 0000033b: REVERT 0000033c: JUMPDEST 0000033d: DUP1 0000033e: PUSH4 0x182df0f5 00000343: GT 00000344: PUSH2 0x03bf 00000347: JUMPI 00000348: DUP1 00000349: PUSH4 0x210bc052 0000034e: GT 0000034f: PUSH2 0x038e 00000352: JUMPI 00000353: DUP1 00000354: PUSH4 0x210bc052 00000359: EQ 0000035a: PUSH2 0x0553 0000035d: JUMPI 0000035e: DUP1 0000035f: PUSH4 0x23323e03 00000364: EQ 00000365: PUSH2 0x0566 00000368: JUMPI 00000369: DUP1 0000036a: PUSH4 0x23b872dd 0000036f: EQ 00000370: PUSH2 0x0579 00000373: JUMPI 00000374: DUP1 00000375: PUSH4 0x2464176b 0000037a: EQ 0000037b: PUSH2 0x058c 0000037e: JUMPI 0000037f: DUP1 00000380: PUSH4 0x2608f818 00000385: EQ 00000386: PUSH2 0x059f 00000389: JUMPI 0000038a: PUSH1 0x00 0000038c: DUP1 0000038d: REVERT 0000038e: JUMPDEST 0000038f: DUP1 00000390: PUSH4 0x182df0f5 00000395: EQ 00000396: PUSH2 0x04fa 00000399: JUMPI 0000039a: DUP1 0000039b: PUSH4 0x19b1faef 000003a0: EQ 000003a1: PUSH2 0x0502 000003a4: JUMPI 000003a5: DUP1 000003a6: PUSH4 0x1be19560 000003ab: EQ 000003ac: PUSH2 0x052d 000003af: JUMPI 000003b0: DUP1 000003b1: PUSH4 0x1c446983 000003b6: EQ 000003b7: PUSH2 0x0540 000003ba: JUMPI 000003bb: PUSH1 0x00 000003bd: DUP1 000003be: REVERT 000003bf: JUMPDEST 000003c0: DUP1 000003c1: PUSH4 0x0e752702 000003c6: GT 000003c7: PUSH2 0x0406 000003ca: JUMPI 000003cb: DUP1 000003cc: PUSH4 0x0e752702 000003d1: EQ 000003d2: PUSH2 0x04a1 000003d5: JUMPI 000003d6: DUP1 000003d7: PUSH4 0x107568df 000003dc: EQ 000003dd: PUSH2 0x04c2 000003e0: JUMPI 000003e1: DUP1 000003e2: PUSH4 0x173b9904 000003e7: EQ 000003e8: PUSH2 0x04d5 000003eb: JUMPI 000003ec: DUP1 000003ed: PUSH4 0x17bfdfbc 000003f2: EQ 000003f3: PUSH2 0x04de 000003f6: JUMPI 000003f7: DUP1 000003f8: PUSH4 0x18160ddd 000003fd: EQ 000003fe: PUSH2 0x04f1 00000401: JUMPI 00000402: PUSH1 0x00 00000404: DUP1 00000405: REVERT 00000406: JUMPDEST 00000407: DUP1 00000408: PUSH4 0x06fdde03 0000040d: EQ 0000040e: PUSH2 0x0438 00000411: JUMPI 00000412: DUP1 00000413: PUSH4 0x07e27959 00000418: EQ 00000419: PUSH2 0x0456 0000041c: JUMPI 0000041d: DUP1 0000041e: PUSH4 0x095ea7b3 00000423: EQ 00000424: PUSH2 0x046b 00000427: JUMPI 00000428: DUP1 00000429: PUSH4 0x0e32cb86 0000042e: EQ 0000042f: PUSH2 0x048e 00000432: JUMPI 00000433: JUMPDEST 00000434: PUSH1 0x00 00000436: DUP1 00000437: REVERT 00000438: JUMPDEST 00000439: PUSH2 0x0440 0000043c: PUSH2 0x0986 0000043f: JUMP 00000440: JUMPDEST 00000441: PUSH1 0x40 00000443: MLOAD 00000444: PUSH2 0x044d 00000447: SWAP2 00000448: SWAP1 00000449: PUSH2 0x468f 0000044c: JUMP 0000044d: JUMPDEST 0000044e: PUSH1 0x40 00000450: MLOAD 00000451: DUP1 00000452: SWAP2 00000453: SUB 00000454: SWAP1 00000455: RETURN 00000456: JUMPDEST 00000457: PUSH2 0x0469 0000045a: PUSH2 0x0464 0000045d: CALLDATASIZE 0000045e: PUSH1 0x04 00000460: PUSH2 0x46a2 00000463: JUMP 00000464: JUMPDEST 00000465: PUSH2 0x0a14 00000468: JUMP 00000469: JUMPDEST 0000046a: STOP 0000046b: JUMPDEST 0000046c: PUSH2 0x047e 0000046f: PUSH2 0x0479 00000472: CALLDATASIZE 00000473: PUSH1 0x04 00000475: PUSH2 0x46e0 00000478: JUMP 00000479: JUMPDEST 0000047a: PUSH2 0x0a7b 0000047d: JUMP 0000047e: JUMPDEST 0000047f: PUSH1 0x40 00000481: MLOAD 00000482: SWAP1 00000483: ISZERO 00000484: ISZERO 00000485: DUP2 00000486: MSTORE 00000487: PUSH1 0x20 00000489: ADD 0000048a: PUSH2 0x044d 0000048d: JUMP 0000048e: JUMPDEST 0000048f: PUSH2 0x0469 00000492: PUSH2 0x049c 00000495: CALLDATASIZE 00000496: PUSH1 0x04 00000498: PUSH2 0x470c 0000049b: JUMP 0000049c: JUMPDEST 0000049d: PUSH2 0x0aec 000004a0: JUMP 000004a1: JUMPDEST 000004a2: PUSH2 0x04b4 000004a5: PUSH2 0x04af 000004a8: CALLDATASIZE 000004a9: PUSH1 0x04 000004ab: PUSH2 0x46a2 000004ae: JUMP 000004af: JUMPDEST 000004b0: PUSH2 0x0b00 000004b3: JUMP 000004b4: JUMPDEST 000004b5: PUSH1 0x40 000004b7: MLOAD 000004b8: SWAP1 000004b9: DUP2 000004ba: MSTORE 000004bb: PUSH1 0x20 000004bd: ADD 000004be: PUSH2 0x044d 000004c1: JUMP 000004c2: JUMPDEST 000004c3: PUSH2 0x0469 000004c6: PUSH2 0x04d0 000004c9: CALLDATASIZE 000004ca: PUSH1 0x04 000004cc: PUSH2 0x470c 000004cf: JUMP 000004d0: JUMPDEST 000004d1: PUSH2 0x0b5a 000004d4: JUMP 000004d5: JUMPDEST 000004d6: PUSH2 0x04b4 000004d9: PUSH1 0xd0 000004db: SLOAD 000004dc: DUP2 000004dd: JUMP 000004de: JUMPDEST 000004df: PUSH2 0x04b4 000004e2: PUSH2 0x04ec 000004e5: CALLDATASIZE 000004e6: PUSH1 0x04 000004e8: PUSH2 0x470c 000004eb: JUMP 000004ec: JUMPDEST 000004ed: PUSH2 0x0b6b 000004f0: JUMP 000004f1: JUMPDEST 000004f2: PUSH2 0x04b4 000004f5: PUSH1 0xd5 000004f7: SLOAD 000004f8: DUP2 000004f9: JUMP 000004fa: JUMPDEST 000004fb: PUSH2 0x04b4 000004fe: PUSH2 0x0bc0 00000501: JUMP 00000502: JUMPDEST 00000503: PUSH1 0xdb 00000505: SLOAD 00000506: PUSH2 0x0515 00000509: SWAP1 0000050a: PUSH1 0x01 0000050c: PUSH1 0x01 0000050e: PUSH1 0xa0 00000510: SHL 00000511: SUB 00000512: AND 00000513: DUP2 00000514: JUMP 00000515: JUMPDEST 00000516: PUSH1 0x40 00000518: MLOAD 00000519: PUSH1 0x01 0000051b: PUSH1 0x01 0000051d: PUSH1 0xa0 0000051f: SHL 00000520: SUB 00000521: SWAP1 00000522: SWAP2 00000523: AND 00000524: DUP2 00000525: MSTORE 00000526: PUSH1 0x20 00000528: ADD 00000529: PUSH2 0x044d 0000052c: JUMP 0000052d: JUMPDEST 0000052e: PUSH2 0x0469 00000531: PUSH2 0x053b 00000534: CALLDATASIZE 00000535: PUSH1 0x04 00000537: PUSH2 0x470c 0000053a: JUMP 0000053b: JUMPDEST 0000053c: PUSH2 0x0bcf 0000053f: JUMP 00000540: JUMPDEST 00000541: PUSH2 0x0469 00000544: PUSH2 0x054e 00000547: CALLDATASIZE 00000548: PUSH1 0x04 0000054a: PUSH2 0x46a2 0000054d: JUMP 0000054e: JUMPDEST 0000054f: PUSH2 0x0d8a 00000552: JUMP 00000553: JUMPDEST 00000554: PUSH2 0x04b4 00000557: PUSH2 0x0561 0000055a: CALLDATASIZE 0000055b: PUSH1 0x04 0000055d: PUSH2 0x46e0 00000560: JUMP 00000561: JUMPDEST 00000562: PUSH2 0x0e05 00000565: JUMP 00000566: JUMPDEST 00000567: PUSH2 0x04b4 0000056a: PUSH2 0x0574 0000056d: CALLDATASIZE 0000056e: PUSH1 0x04 00000570: PUSH2 0x46e0 00000573: JUMP 00000574: JUMPDEST 00000575: PUSH2 0x0e69 00000578: JUMP 00000579: JUMPDEST 0000057a: PUSH2 0x047e 0000057d: PUSH2 0x0587 00000580: CALLDATASIZE 00000581: PUSH1 0x04 00000583: PUSH2 0x4729 00000586: JUMP 00000587: JUMPDEST 00000588: PUSH2 0x0eb5 0000058b: JUMP 0000058c: JUMPDEST 0000058d: PUSH2 0x0469 00000590: PUSH2 0x059a 00000593: CALLDATASIZE 00000594: PUSH1 0x04 00000596: PUSH2 0x46a2 00000599: JUMP 0000059a: JUMPDEST 0000059b: PUSH2 0x0f07 0000059e: JUMP 0000059f: JUMPDEST 000005a0: PUSH2 0x04b4 000005a3: PUSH2 0x05ad 000005a6: CALLDATASIZE 000005a7: PUSH1 0x04 000005a9: PUSH2 0x46e0 000005ac: JUMP 000005ad: JUMPDEST 000005ae: PUSH2 0x0fa9 000005b1: JUMP 000005b2: JUMPDEST 000005b3: PUSH1 0xcc 000005b5: SLOAD 000005b6: PUSH2 0x05bf 000005b9: SWAP1 000005ba: PUSH1 0xff 000005bc: AND 000005bd: DUP2 000005be: JUMP 000005bf: JUMPDEST 000005c0: PUSH1 0x40 000005c2: MLOAD 000005c3: PUSH1 0xff 000005c5: SWAP1 000005c6: SWAP2 000005c7: AND 000005c8: DUP2 000005c9: MSTORE 000005ca: PUSH1 0x20 000005cc: ADD 000005cd: PUSH2 0x044d 000005d0: JUMP 000005d1: JUMPDEST 000005d2: PUSH2 0x047e 000005d5: PUSH2 0x05df 000005d8: CALLDATASIZE 000005d9: PUSH1 0x04 000005db: PUSH2 0x46e0 000005de: JUMP 000005df: JUMPDEST 000005e0: PUSH2 0x1004 000005e3: JUMP 000005e4: JUMPDEST 000005e5: PUSH2 0x04b4 000005e8: PUSH2 0x05f2 000005eb: CALLDATASIZE 000005ec: PUSH1 0x04 000005ee: PUSH2 0x470c 000005f1: JUMP 000005f2: JUMPDEST 000005f3: PUSH2 0x10ac 000005f6: JUMP 000005f7: JUMPDEST 000005f8: PUSH2 0x04b4 000005fb: PUSH2 0x10f2 000005fe: JUMP 000005ff: JUMPDEST 00000600: PUSH1 0x01 00000602: PUSH2 0x047e 00000605: JUMP 00000606: JUMPDEST 00000607: PUSH2 0x0469 0000060a: PUSH2 0x0614 0000060d: CALLDATASIZE 0000060e: PUSH1 0x04 00000610: PUSH2 0x470c 00000613: JUMP 00000614: JUMPDEST 00000615: PUSH2 0x10fc 00000618: JUMP 00000619: JUMPDEST 0000061a: PUSH2 0x0469 0000061d: PUSH2 0x0627 00000620: CALLDATASIZE 00000621: PUSH1 0x04 00000623: PUSH2 0x4729 00000626: JUMP 00000627: JUMPDEST 00000628: PUSH2 0x110d 0000062b: JUMP 0000062c: JUMPDEST 0000062d: PUSH2 0x04b4 00000630: PUSH1 0xd3 00000632: SLOAD 00000633: DUP2 00000634: JUMP 00000635: JUMPDEST 00000636: PUSH1 0xcd 00000638: SLOAD 00000639: PUSH2 0x0515 0000063c: SWAP1 0000063d: PUSH1 0x01 0000063f: PUSH1 0x01 00000641: PUSH1 0xa0 00000643: SHL 00000644: SUB 00000645: AND 00000646: DUP2 00000647: JUMP 00000648: JUMPDEST 00000649: PUSH2 0x04b4 0000064c: PUSH1 0xda 0000064e: SLOAD 0000064f: DUP2 00000650: JUMP 00000651: JUMPDEST 00000652: PUSH2 0x04b4 00000655: PUSH32 0x00000000000000000000000000000000000000000000000000000000002819a0 00000676: DUP2 00000677: JUMP 00000678: JUMPDEST 00000679: PUSH2 0x04b4 0000067c: PUSH1 0x00 0000067e: DUP2 0000067f: JUMP 00000680: JUMPDEST 00000681: PUSH2 0x04b4 00000684: PUSH1 0xd1 00000686: SLOAD 00000687: DUP2 00000688: JUMP 00000689: JUMPDEST 0000068a: PUSH1 0xc9 0000068c: SLOAD 0000068d: PUSH2 0x0515 00000690: SWAP1 00000691: PUSH2 0x0100 00000694: SWAP1 00000695: DIV 00000696: PUSH1 0x01 00000698: PUSH1 0x01 0000069a: PUSH1 0xa0 0000069c: SHL 0000069d: SUB 0000069e: AND 0000069f: DUP2 000006a0: JUMP 000006a1: JUMPDEST 000006a2: PUSH2 0x04b4 000006a5: PUSH2 0x06af 000006a8: CALLDATASIZE 000006a9: PUSH1 0x04 000006ab: PUSH2 0x470c 000006ae: JUMP 000006af: JUMPDEST 000006b0: PUSH1 0x01 000006b2: PUSH1 0x01 000006b4: PUSH1 0xa0 000006b6: SHL 000006b7: SUB 000006b8: AND 000006b9: PUSH1 0x00 000006bb: SWAP1 000006bc: DUP2 000006bd: MSTORE 000006be: PUSH1 0xd7 000006c0: PUSH1 0x20 000006c2: MSTORE 000006c3: PUSH1 0x40 000006c5: SWAP1 000006c6: KECCAK256 000006c7: SLOAD 000006c8: SWAP1 000006c9: JUMP 000006ca: JUMPDEST 000006cb: PUSH2 0x0469 000006ce: PUSH2 0x13b0 000006d1: JUMP 000006d2: JUMPDEST 000006d3: PUSH2 0x04b4 000006d6: PUSH2 0x13c4 000006d9: JUMP 000006da: JUMPDEST 000006db: PUSH2 0x0469 000006de: PUSH2 0x06e8 000006e1: CALLDATASIZE 000006e2: PUSH1 0x04 000006e4: PUSH2 0x46a2 000006e7: JUMP 000006e8: JUMPDEST 000006e9: PUSH2 0x1410 000006ec: JUMP 000006ed: JUMPDEST 000006ee: PUSH2 0x0469 000006f1: PUSH2 0x06fb 000006f4: CALLDATASIZE 000006f5: PUSH1 0x04 000006f7: PUSH2 0x46a2 000006fa: JUMP 000006fb: JUMPDEST 000006fc: PUSH2 0x1537 000006ff: JUMP 00000700: JUMPDEST 00000701: PUSH2 0x0469 00000704: PUSH2 0x1586 00000707: JUMP 00000708: JUMPDEST 00000709: PUSH2 0x04b4 0000070c: PUSH2 0x0716 0000070f: CALLDATASIZE 00000710: PUSH1 0x04 00000712: PUSH2 0x46a2 00000715: JUMP 00000716: JUMPDEST 00000717: PUSH2 0x15fd 0000071a: JUMP 0000071b: JUMPDEST 0000071c: PUSH2 0x04b4 0000071f: PUSH2 0x0729 00000722: CALLDATASIZE 00000723: PUSH1 0x04 00000725: PUSH2 0x46e0 00000728: JUMP 00000729: JUMPDEST 0000072a: PUSH2 0x1657 0000072d: JUMP 0000072e: JUMPDEST 0000072f: PUSH2 0x0469 00000732: PUSH2 0x073c 00000735: CALLDATASIZE 00000736: PUSH1 0x04 00000738: PUSH2 0x4881 0000073b: JUMP 0000073c: JUMPDEST 0000073d: PUSH2 0x167f 00000740: JUMP 00000741: JUMPDEST 00000742: PUSH2 0x0469 00000745: PUSH2 0x074f 00000748: CALLDATASIZE 00000749: PUSH1 0x04 0000074b: PUSH2 0x4982 0000074e: JUMP 0000074f: JUMPDEST 00000750: PUSH2 0x17af 00000753: JUMP 00000754: JUMPDEST 00000755: PUSH2 0x0469 00000758: PUSH2 0x0762 0000075b: CALLDATASIZE 0000075c: PUSH1 0x04 0000075e: PUSH2 0x470c 00000761: JUMP 00000762: JUMPDEST 00000763: PUSH2 0x17ee 00000766: JUMP 00000767: JUMPDEST 00000768: PUSH1 0x33 0000076a: SLOAD 0000076b: PUSH1 0x01 0000076d: PUSH1 0x01 0000076f: PUSH1 0xa0 00000771: SHL 00000772: SUB 00000773: AND 00000774: PUSH2 0x0515 00000777: JUMP 00000778: JUMPDEST 00000779: PUSH2 0x04b4 0000077c: PUSH1 0xd4 0000077e: SLOAD 0000077f: DUP2 00000780: JUMP 00000781: JUMPDEST 00000782: PUSH2 0x0440 00000785: PUSH2 0x183e 00000788: JUMP 00000789: JUMPDEST 0000078a: PUSH2 0x04b4 0000078d: PUSH2 0x0797 00000790: CALLDATASIZE 00000791: PUSH1 0x04 00000793: PUSH2 0x470c 00000796: JUMP 00000797: JUMPDEST 00000798: PUSH2 0x184b 0000079b: JUMP 0000079c: JUMPDEST 0000079d: PUSH2 0x04b4 000007a0: PUSH2 0x07aa 000007a3: CALLDATASIZE 000007a4: PUSH1 0x04 000007a6: PUSH2 0x46a2 000007a9: JUMP 000007aa: JUMPDEST 000007ab: PUSH2 0x1856 000007ae: JUMP 000007af: JUMPDEST 000007b0: PUSH2 0x047e 000007b3: PUSH2 0x07bd 000007b6: CALLDATASIZE 000007b7: PUSH1 0x04 000007b9: PUSH2 0x46e0 000007bc: JUMP 000007bd: JUMPDEST 000007be: PUSH2 0x1899 000007c1: JUMP 000007c2: JUMPDEST 000007c3: PUSH2 0x04b4 000007c6: PUSH2 0x1976 000007c9: JUMP 000007ca: JUMPDEST 000007cb: PUSH2 0x047e 000007ce: PUSH2 0x07d8 000007d1: CALLDATASIZE 000007d2: PUSH1 0x04 000007d4: PUSH2 0x46e0 000007d7: JUMP 000007d8: JUMPDEST 000007d9: PUSH2 0x1bcb 000007dc: JUMP 000007dd: JUMPDEST 000007de: PUSH2 0x04b4 000007e1: PUSH1 0xd2 000007e3: SLOAD 000007e4: DUP2 000007e5: JUMP 000007e6: JUMPDEST 000007e7: PUSH2 0x04b4 000007ea: PUSH1 0xdd 000007ec: SLOAD 000007ed: DUP2 000007ee: JUMP 000007ef: JUMPDEST 000007f0: PUSH2 0x04b4 000007f3: PUSH2 0x1c1c 000007f6: JUMP 000007f7: JUMPDEST 000007f8: PUSH2 0x0469 000007fb: PUSH2 0x0805 000007fe: CALLDATASIZE 000007ff: PUSH1 0x04 00000801: PUSH2 0x4729 00000804: JUMP 00000805: JUMPDEST 00000806: PUSH2 0x1cbf 00000809: JUMP 0000080a: JUMPDEST 0000080b: PUSH1 0x97 0000080d: SLOAD 0000080e: PUSH1 0x01 00000810: PUSH1 0x01 00000812: PUSH1 0xa0 00000814: SHL 00000815: SUB 00000816: AND 00000817: PUSH2 0x0515 0000081a: JUMP 0000081b: JUMPDEST 0000081c: PUSH2 0x04b4 0000081f: PUSH1 0xd6 00000821: SLOAD 00000822: DUP2 00000823: JUMP 00000824: JUMPDEST 00000825: PUSH2 0x04b4 00000828: PUSH2 0x1d09 0000082b: JUMP 0000082c: JUMPDEST 0000082d: PUSH2 0x083f 00000830: PUSH2 0x083a 00000833: CALLDATASIZE 00000834: PUSH1 0x04 00000836: PUSH2 0x470c 00000839: JUMP 0000083a: JUMPDEST 0000083b: PUSH2 0x1d5b 0000083e: JUMP 0000083f: JUMPDEST 00000840: PUSH1 0x40 00000842: DUP1 00000843: MLOAD 00000844: SWAP5 00000845: DUP6 00000846: MSTORE 00000847: PUSH1 0x20 00000849: DUP6 0000084a: ADD 0000084b: SWAP4 0000084c: SWAP1 0000084d: SWAP4 0000084e: MSTORE 0000084f: SWAP2 00000850: DUP4 00000851: ADD 00000852: MSTORE 00000853: PUSH1 0x60 00000855: DUP3 00000856: ADD 00000857: MSTORE 00000858: PUSH1 0x80 0000085a: ADD 0000085b: PUSH2 0x044d 0000085e: JUMP 0000085f: JUMPDEST 00000860: PUSH2 0x04b4 00000863: PUSH2 0x086d 00000866: CALLDATASIZE 00000867: PUSH1 0x04 00000869: PUSH2 0x46a2 0000086c: JUMP 0000086d: JUMPDEST 0000086e: PUSH2 0x1d9c 00000871: JUMP 00000872: JUMPDEST 00000873: PUSH2 0x047e 00000876: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000000 00000897: DUP2 00000898: JUMP 00000899: JUMPDEST 0000089a: PUSH2 0x04b4 0000089d: PUSH1 0xdc 0000089f: SLOAD 000008a0: DUP2 000008a1: JUMP 000008a2: JUMPDEST 000008a3: PUSH2 0x04b4 000008a6: PUSH2 0x08b0 000008a9: CALLDATASIZE 000008aa: PUSH1 0x04 000008ac: PUSH2 0x46a2 000008af: JUMP 000008b0: JUMPDEST 000008b1: PUSH2 0x1ddf 000008b4: JUMP 000008b5: JUMPDEST 000008b6: PUSH2 0x04b4 000008b9: PUSH2 0x08c3 000008bc: CALLDATASIZE 000008bd: PUSH1 0x04 000008bf: PUSH2 0x49ea 000008c2: JUMP 000008c3: JUMPDEST 000008c4: PUSH1 0x01 000008c6: PUSH1 0x01 000008c8: PUSH1 0xa0 000008ca: SHL 000008cb: SUB 000008cc: SWAP2 000008cd: DUP3 000008ce: AND 000008cf: PUSH1 0x00 000008d1: SWAP1 000008d2: DUP2 000008d3: MSTORE 000008d4: PUSH1 0xd8 000008d6: PUSH1 0x20 000008d8: SWAP1 000008d9: DUP2 000008da: MSTORE 000008db: PUSH1 0x40 000008dd: DUP1 000008de: DUP4 000008df: KECCAK256 000008e0: SWAP4 000008e1: SWAP1 000008e2: SWAP5 000008e3: AND 000008e4: DUP3 000008e5: MSTORE 000008e6: SWAP2 000008e7: SWAP1 000008e8: SWAP2 000008e9: MSTORE 000008ea: KECCAK256 000008eb: SLOAD 000008ec: SWAP1 000008ed: JUMP 000008ee: JUMPDEST 000008ef: PUSH2 0x04b4 000008f2: PUSH2 0x08fc 000008f5: CALLDATASIZE 000008f6: PUSH1 0x04 000008f8: PUSH2 0x46e0 000008fb: JUMP 000008fc: JUMPDEST 000008fd: PUSH2 0x1e24 00000900: JUMP 00000901: JUMPDEST 00000902: PUSH2 0x04b4 00000905: PUSH2 0x1e72 00000908: JUMP 00000909: JUMPDEST 0000090a: PUSH1 0x65 0000090c: SLOAD 0000090d: PUSH1 0x01 0000090f: PUSH1 0x01 00000911: PUSH1 0xa0 00000913: SHL 00000914: SUB 00000915: AND 00000916: PUSH2 0x0515 00000919: JUMP 0000091a: JUMPDEST 0000091b: PUSH1 0xcc 0000091d: SLOAD 0000091e: PUSH2 0x0515 00000921: SWAP1 00000922: PUSH2 0x0100 00000925: SWAP1 00000926: DIV 00000927: PUSH1 0x01 00000929: PUSH1 0x01 0000092b: PUSH1 0xa0 0000092d: SHL 0000092e: SUB 0000092f: AND 00000930: DUP2 00000931: JUMP 00000932: JUMPDEST 00000933: PUSH2 0x0469 00000936: PUSH2 0x0940 00000939: CALLDATASIZE 0000093a: PUSH1 0x04 0000093c: PUSH2 0x46a2 0000093f: JUMP 00000940: JUMPDEST 00000941: PUSH2 0x1ea0 00000944: JUMP 00000945: JUMPDEST 00000946: PUSH2 0x0469 00000949: PUSH2 0x0953 0000094c: CALLDATASIZE 0000094d: PUSH1 0x04 0000094f: PUSH2 0x470c 00000952: JUMP 00000953: JUMPDEST 00000954: PUSH2 0x1fbf 00000957: JUMP 00000958: JUMPDEST 00000959: PUSH1 0xce 0000095b: SLOAD 0000095c: PUSH2 0x0515 0000095f: SWAP1 00000960: PUSH1 0x01 00000962: PUSH1 0x01 00000964: PUSH1 0xa0 00000966: SHL 00000967: SUB 00000968: AND 00000969: DUP2 0000096a: JUMP 0000096b: JUMPDEST 0000096c: PUSH2 0x04b4 0000096f: PUSH2 0x0979 00000972: CALLDATASIZE 00000973: PUSH1 0x04 00000975: PUSH2 0x4a23 00000978: JUMP 00000979: JUMPDEST 0000097a: PUSH2 0x2030 0000097d: JUMP 0000097e: JUMPDEST 0000097f: PUSH2 0x04b4 00000982: PUSH2 0x204a 00000985: JUMP 00000986: JUMPDEST 00000987: PUSH1 0xca 00000989: DUP1 0000098a: SLOAD 0000098b: PUSH2 0x0993 0000098e: SWAP1 0000098f: PUSH2 0x4a65 00000992: JUMP 00000993: JUMPDEST 00000994: DUP1 00000995: PUSH1 0x1f 00000997: ADD 00000998: PUSH1 0x20 0000099a: DUP1 0000099b: SWAP2 0000099c: DIV 0000099d: MUL 0000099e: PUSH1 0x20 000009a0: ADD 000009a1: PUSH1 0x40 000009a3: MLOAD 000009a4: SWAP1 000009a5: DUP2 000009a6: ADD 000009a7: PUSH1 0x40 000009a9: MSTORE 000009aa: DUP1 000009ab: SWAP3 000009ac: SWAP2 000009ad: SWAP1 000009ae: DUP2 000009af: DUP2 000009b0: MSTORE 000009b1: PUSH1 0x20 000009b3: ADD 000009b4: DUP3 000009b5: DUP1 000009b6: SLOAD 000009b7: PUSH2 0x09bf 000009ba: SWAP1 000009bb: PUSH2 0x4a65 000009be: JUMP 000009bf: JUMPDEST 000009c0: DUP1 000009c1: ISZERO 000009c2: PUSH2 0x0a0c 000009c5: JUMPI 000009c6: DUP1 000009c7: PUSH1 0x1f 000009c9: LT 000009ca: PUSH2 0x09e1 000009cd: JUMPI 000009ce: PUSH2 0x0100 000009d1: DUP1 000009d2: DUP4 000009d3: SLOAD 000009d4: DIV 000009d5: MUL 000009d6: DUP4 000009d7: MSTORE 000009d8: SWAP2 000009d9: PUSH1 0x20 000009db: ADD 000009dc: SWAP2 000009dd: PUSH2 0x0a0c 000009e0: JUMP 000009e1: JUMPDEST 000009e2: DUP3 000009e3: ADD 000009e4: SWAP2 000009e5: SWAP1 000009e6: PUSH1 0x00 000009e8: MSTORE 000009e9: PUSH1 0x20 000009eb: PUSH1 0x00 000009ed: KECCAK256 000009ee: SWAP1 000009ef: JUMPDEST 000009f0: DUP2 000009f1: SLOAD 000009f2: DUP2 000009f3: MSTORE 000009f4: SWAP1 000009f5: PUSH1 0x01 000009f7: ADD 000009f8: SWAP1 000009f9: PUSH1 0x20 000009fb: ADD 000009fc: DUP1 000009fd: DUP4 000009fe: GT 000009ff: PUSH2 0x09ef 00000a02: JUMPI 00000a03: DUP3 00000a04: SWAP1 00000a05: SUB 00000a06: PUSH1 0x1f 00000a08: AND 00000a09: DUP3 00000a0a: ADD 00000a0b: SWAP2 00000a0c: JUMPDEST 00000a0d: POP 00000a0e: POP 00000a0f: POP 00000a10: POP 00000a11: POP 00000a12: DUP2 00000a13: JUMP 00000a14: JUMPDEST 00000a15: PUSH1 0xc9 00000a17: SLOAD 00000a18: PUSH1 0xff 00000a1a: AND 00000a1b: PUSH2 0x0a3f 00000a1e: JUMPI 00000a1f: PUSH1 0x40 00000a21: MLOAD 00000a22: PUSH3 0x461bcd 00000a26: PUSH1 0xe5 00000a28: SHL 00000a29: DUP2 00000a2a: MSTORE 00000a2b: PUSH1 0x04 00000a2d: ADD 00000a2e: PUSH2 0x0a36 00000a31: SWAP1 00000a32: PUSH2 0x4a9f 00000a35: JUMP 00000a36: JUMPDEST 00000a37: PUSH1 0x40 00000a39: MLOAD 00000a3a: DUP1 00000a3b: SWAP2 00000a3c: SUB 00000a3d: SWAP1 00000a3e: REVERT 00000a3f: JUMPDEST 00000a40: PUSH1 0xc9 00000a42: DUP1 00000a43: SLOAD 00000a44: PUSH1 0xff 00000a46: NOT 00000a47: AND 00000a48: SWAP1 00000a49: SSTORE 00000a4a: PUSH2 0x0a51 00000a4d: PUSH2 0x1976 00000a50: JUMP 00000a51: JUMPDEST 00000a52: POP 00000a53: PUSH2 0x0a5a 00000a56: PUSH2 0x1e72 00000a59: JUMP 00000a5a: JUMPDEST 00000a5b: PUSH1 0xdd 00000a5d: SLOAD 00000a5e: EQ 00000a5f: PUSH2 0x0a6b 00000a62: JUMPI 00000a63: PUSH2 0x0a6b 00000a66: DUP2 00000a67: PUSH2 0x20ad 00000a6a: JUMP 00000a6b: JUMPDEST 00000a6c: POP 00000a6d: PUSH1 0xc9 00000a6f: DUP1 00000a70: SLOAD 00000a71: PUSH1 0xff 00000a73: NOT 00000a74: AND 00000a75: PUSH1 0x01 00000a77: OR 00000a78: SWAP1 00000a79: SSTORE 00000a7a: JUMP 00000a7b: JUMPDEST 00000a7c: PUSH1 0x00 00000a7e: PUSH2 0x0a86 00000a81: DUP4 00000a82: PUSH2 0x2229 00000a85: JUMP 00000a86: JUMPDEST 00000a87: CALLER 00000a88: PUSH1 0x00 00000a8a: DUP2 00000a8b: DUP2 00000a8c: MSTORE 00000a8d: PUSH1 0xd8 00000a8f: PUSH1 0x20 00000a91: SWAP1 00000a92: DUP2 00000a93: MSTORE 00000a94: PUSH1 0x40 00000a96: DUP1 00000a97: DUP4 00000a98: KECCAK256 00000a99: PUSH1 0x01 00000a9b: PUSH1 0x01 00000a9d: PUSH1 0xa0 00000a9f: SHL 00000aa0: SUB 00000aa1: DUP9 00000aa2: AND 00000aa3: DUP1 00000aa4: DUP6 00000aa5: MSTORE 00000aa6: SWAP1 00000aa7: DUP4 00000aa8: MSTORE 00000aa9: SWAP3 00000aaa: DUP2 00000aab: SWAP1 00000aac: KECCAK256 00000aad: DUP7 00000aae: SWAP1 00000aaf: SSTORE 00000ab0: MLOAD 00000ab1: DUP6 00000ab2: DUP2 00000ab3: MSTORE 00000ab4: DUP4 00000ab5: SWAP2 00000ab6: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000ad7: SWAP2 00000ad8: ADD 00000ad9: PUSH1 0x40 00000adb: MLOAD 00000adc: DUP1 00000add: SWAP2 00000ade: SUB 00000adf: SWAP1 00000ae0: LOG3 00000ae1: PUSH1 0x01 00000ae3: SWAP2 00000ae4: POP 00000ae5: POP 00000ae6: JUMPDEST 00000ae7: SWAP3 00000ae8: SWAP2 00000ae9: POP 00000aea: POP 00000aeb: JUMP 00000aec: JUMPDEST 00000aed: PUSH2 0x0af4 00000af0: PUSH2 0x2250 00000af3: JUMP 00000af4: JUMPDEST 00000af5: PUSH2 0x0afd 00000af8: DUP2 00000af9: PUSH2 0x22aa 00000afc: JUMP 00000afd: JUMPDEST 00000afe: POP 00000aff: JUMP 00000b00: JUMPDEST 00000b01: PUSH1 0xc9 00000b03: SLOAD 00000b04: PUSH1 0x00 00000b06: SWAP1 00000b07: PUSH1 0xff 00000b09: AND 00000b0a: PUSH2 0x0b25 00000b0d: JUMPI 00000b0e: PUSH1 0x40 00000b10: MLOAD 00000b11: PUSH3 0x461bcd 00000b15: PUSH1 0xe5 00000b17: SHL 00000b18: DUP2 00000b19: MSTORE 00000b1a: PUSH1 0x04 00000b1c: ADD 00000b1d: PUSH2 0x0a36 00000b20: SWAP1 00000b21: PUSH2 0x4a9f 00000b24: JUMP 00000b25: JUMPDEST 00000b26: PUSH1 0xc9 00000b28: DUP1 00000b29: SLOAD 00000b2a: PUSH1 0xff 00000b2c: NOT 00000b2d: AND 00000b2e: SWAP1 00000b2f: SSTORE 00000b30: PUSH2 0x0b37 00000b33: PUSH2 0x1976 00000b36: JUMP 00000b37: JUMPDEST 00000b38: POP 00000b39: PUSH2 0x0b43 00000b3c: CALLER 00000b3d: CALLER 00000b3e: DUP5 00000b3f: PUSH2 0x2370 00000b42: JUMP 00000b43: JUMPDEST 00000b44: POP 00000b45: PUSH1 0x00 00000b47: SWAP1 00000b48: POP 00000b49: PUSH1 0xc9 00000b4b: DUP1 00000b4c: SLOAD 00000b4d: PUSH1 0xff 00000b4f: NOT 00000b50: AND 00000b51: PUSH1 0x01 00000b53: OR 00000b54: SWAP1 00000b55: SSTORE 00000b56: SWAP2 00000b57: SWAP1 00000b58: POP 00000b59: JUMP 00000b5a: JUMPDEST 00000b5b: PUSH2 0x0b62 00000b5e: PUSH2 0x2250 00000b61: JUMP 00000b62: JUMPDEST 00000b63: PUSH2 0x0afd 00000b66: DUP2 00000b67: PUSH2 0x254b 00000b6a: JUMP 00000b6b: JUMPDEST 00000b6c: PUSH1 0xc9 00000b6e: SLOAD 00000b6f: PUSH1 0x00 00000b71: SWAP1 00000b72: PUSH1 0xff 00000b74: AND 00000b75: PUSH2 0x0b90 00000b78: JUMPI 00000b79: PUSH1 0x40 00000b7b: MLOAD 00000b7c: PUSH3 0x461bcd 00000b80: PUSH1 0xe5 00000b82: SHL 00000b83: DUP2 00000b84: MSTORE 00000b85: PUSH1 0x04 00000b87: ADD 00000b88: PUSH2 0x0a36 00000b8b: SWAP1 00000b8c: PUSH2 0x4a9f 00000b8f: JUMP 00000b90: JUMPDEST 00000b91: PUSH1 0xc9 00000b93: DUP1 00000b94: SLOAD 00000b95: PUSH1 0xff 00000b97: NOT 00000b98: AND 00000b99: SWAP1 00000b9a: SSTORE 00000b9b: PUSH2 0x0ba2 00000b9e: PUSH2 0x1976 00000ba1: JUMP 00000ba2: JUMPDEST 00000ba3: POP 00000ba4: PUSH2 0x0bac 00000ba7: DUP3 00000ba8: PUSH2 0x25ae 00000bab: JUMP 00000bac: JUMPDEST 00000bad: SWAP1 00000bae: POP 00000baf: PUSH1 0xc9 00000bb1: DUP1 00000bb2: SLOAD 00000bb3: PUSH1 0xff 00000bb5: NOT 00000bb6: AND 00000bb7: PUSH1 0x01 00000bb9: OR 00000bba: SWAP1 00000bbb: SSTORE 00000bbc: SWAP2 00000bbd: SWAP1 00000bbe: POP 00000bbf: JUMP 00000bc0: JUMPDEST 00000bc1: PUSH1 0x00 00000bc3: PUSH2 0x0bca 00000bc6: PUSH2 0x261e 00000bc9: JUMP 00000bca: JUMPDEST 00000bcb: SWAP1 00000bcc: POP 00000bcd: SWAP1 00000bce: JUMP 00000bcf: JUMPDEST 00000bd0: PUSH1 0x33 00000bd2: SLOAD 00000bd3: PUSH1 0x01 00000bd5: PUSH1 0x01 00000bd7: PUSH1 0xa0 00000bd9: SHL 00000bda: SUB 00000bdb: AND 00000bdc: CALLER 00000bdd: EQ 00000bde: PUSH2 0x0c41 00000be1: JUMPI 00000be2: PUSH1 0x40 00000be4: MLOAD 00000be5: PUSH3 0x461bcd 00000be9: PUSH1 0xe5 00000beb: SHL 00000bec: DUP2 00000bed: MSTORE 00000bee: PUSH1 0x20 00000bf0: PUSH1 0x04 00000bf2: DUP3 00000bf3: ADD 00000bf4: MSTORE 00000bf5: PUSH1 0x2f 00000bf7: PUSH1 0x24 00000bf9: DUP3 00000bfa: ADD 00000bfb: MSTORE 00000bfc: PUSH32 0x56546f6b656e3a3a7377656570546f6b656e3a206f6e6c792061646d696e2063 00000c1d: PUSH1 0x44 00000c1f: DUP3 00000c20: ADD 00000c21: MSTORE 00000c22: PUSH15 0x616e20737765657020746f6b656e73 00000c32: PUSH1 0x88 00000c34: SHL 00000c35: PUSH1 0x64 00000c37: DUP3 00000c38: ADD 00000c39: MSTORE 00000c3a: PUSH1 0x84 00000c3c: ADD 00000c3d: PUSH2 0x0a36 00000c40: JUMP 00000c41: JUMPDEST 00000c42: PUSH1 0xc9 00000c44: SLOAD 00000c45: PUSH1 0x01 00000c47: PUSH1 0x01 00000c49: PUSH1 0xa0 00000c4b: SHL 00000c4c: SUB 00000c4d: PUSH2 0x0100 00000c50: SWAP1 00000c51: SWAP2 00000c52: DIV 00000c53: DUP2 00000c54: AND 00000c55: SWAP1 00000c56: DUP3 00000c57: AND 00000c58: SUB 00000c59: PUSH2 0x0cbf 00000c5c: JUMPI 00000c5d: PUSH1 0x40 00000c5f: MLOAD 00000c60: PUSH3 0x461bcd 00000c64: PUSH1 0xe5 00000c66: SHL 00000c67: DUP2 00000c68: MSTORE 00000c69: PUSH1 0x20 00000c6b: PUSH1 0x04 00000c6d: DUP3 00000c6e: ADD 00000c6f: MSTORE 00000c70: PUSH1 0x32 00000c72: PUSH1 0x24 00000c74: DUP3 00000c75: ADD 00000c76: MSTORE 00000c77: PUSH32 0x56546f6b656e3a3a7377656570546f6b656e3a2063616e206e6f742073776565 00000c98: PUSH1 0x44 00000c9a: DUP3 00000c9b: ADD 00000c9c: MSTORE 00000c9d: PUSH18 0x38103ab73232b9363cb4b733903a37b5b2b7 00000cb0: PUSH1 0x71 00000cb2: SHL 00000cb3: PUSH1 0x64 00000cb5: DUP3 00000cb6: ADD 00000cb7: MSTORE 00000cb8: PUSH1 0x84 00000cba: ADD 00000cbb: PUSH2 0x0a36 00000cbe: JUMP 00000cbf: JUMPDEST 00000cc0: PUSH1 0x40 00000cc2: MLOAD 00000cc3: PUSH4 0x70a08231 00000cc8: PUSH1 0xe0 00000cca: SHL 00000ccb: DUP2 00000ccc: MSTORE 00000ccd: ADDRESS 00000cce: PUSH1 0x04 00000cd0: DUP3 00000cd1: ADD 00000cd2: MSTORE 00000cd3: PUSH1 0x00 00000cd5: SWAP1 00000cd6: PUSH1 0x01 00000cd8: PUSH1 0x01 00000cda: PUSH1 0xa0 00000cdc: SHL 00000cdd: SUB 00000cde: DUP4 00000cdf: AND 00000ce0: SWAP1 00000ce1: PUSH4 0x70a08231 00000ce6: SWAP1 00000ce7: PUSH1 0x24 00000ce9: ADD 00000cea: PUSH1 0x20 00000cec: PUSH1 0x40 00000cee: MLOAD 00000cef: DUP1 00000cf0: DUP4 00000cf1: SUB 00000cf2: DUP2 00000cf3: DUP7 00000cf4: GAS 00000cf5: STATICCALL 00000cf6: ISZERO 00000cf7: DUP1 00000cf8: ISZERO 00000cf9: PUSH2 0x0d06 00000cfc: JUMPI 00000cfd: RETURNDATASIZE 00000cfe: PUSH1 0x00 00000d00: DUP1 00000d01: RETURNDATACOPY 00000d02: RETURNDATASIZE 00000d03: PUSH1 0x00 00000d05: REVERT 00000d06: JUMPDEST 00000d07: POP 00000d08: POP 00000d09: POP 00000d0a: POP 00000d0b: PUSH1 0x40 00000d0d: MLOAD 00000d0e: RETURNDATASIZE 00000d0f: PUSH1 0x1f 00000d11: NOT 00000d12: PUSH1 0x1f 00000d14: DUP3 00000d15: ADD 00000d16: AND 00000d17: DUP3 00000d18: ADD 00000d19: DUP1 00000d1a: PUSH1 0x40 00000d1c: MSTORE 00000d1d: POP 00000d1e: DUP2 00000d1f: ADD 00000d20: SWAP1 00000d21: PUSH2 0x0d2a 00000d24: SWAP2 00000d25: SWAP1 00000d26: PUSH2 0x4ac3 00000d29: JUMP 00000d2a: JUMPDEST 00000d2b: SWAP1 00000d2c: POP 00000d2d: PUSH2 0x0d52 00000d30: PUSH2 0x0d41 00000d33: PUSH1 0x33 00000d35: SLOAD 00000d36: PUSH1 0x01 00000d38: PUSH1 0x01 00000d3a: PUSH1 0xa0 00000d3c: SHL 00000d3d: SUB 00000d3e: AND 00000d3f: SWAP1 00000d40: JUMP 00000d41: JUMPDEST 00000d42: PUSH1 0x01 00000d44: PUSH1 0x01 00000d46: PUSH1 0xa0 00000d48: SHL 00000d49: SUB 00000d4a: DUP5 00000d4b: AND 00000d4c: SWAP1 00000d4d: DUP4 00000d4e: PUSH2 0x2693 00000d51: JUMP 00000d52: JUMPDEST 00000d53: PUSH1 0x40 00000d55: MLOAD 00000d56: PUSH1 0x01 00000d58: PUSH1 0x01 00000d5a: PUSH1 0xa0 00000d5c: SHL 00000d5d: SUB 00000d5e: DUP4 00000d5f: AND 00000d60: SWAP1 00000d61: PUSH32 0x35ce4c546a473796a8e70ec2d4af4f2031afe357afa7057b6ea7fa340730e1b2 00000d82: SWAP1 00000d83: PUSH1 0x00 00000d85: SWAP1 00000d86: LOG2 00000d87: POP 00000d88: POP 00000d89: JUMP 00000d8a: JUMPDEST 00000d8b: PUSH1 0xc9 00000d8d: SLOAD 00000d8e: PUSH1 0xff 00000d90: AND 00000d91: PUSH2 0x0dac 00000d94: JUMPI 00000d95: PUSH1 0x40 00000d97: MLOAD 00000d98: PUSH3 0x461bcd 00000d9c: PUSH1 0xe5 00000d9e: SHL 00000d9f: DUP2 00000da0: MSTORE 00000da1: PUSH1 0x04 00000da3: ADD 00000da4: PUSH2 0x0a36 00000da7: SWAP1 00000da8: PUSH2 0x4a9f 00000dab: JUMP 00000dac: JUMPDEST 00000dad: PUSH1 0xc9 00000daf: DUP1 00000db0: SLOAD 00000db1: PUSH1 0xff 00000db3: NOT 00000db4: AND 00000db5: SWAP1 00000db6: SSTORE 00000db7: PUSH1 0x40 00000db9: DUP1 00000dba: MLOAD 00000dbb: DUP1 00000dbc: DUP3 00000dbd: ADD 00000dbe: SWAP1 00000dbf: SWAP2 00000dc0: MSTORE 00000dc1: PUSH1 0x19 00000dc3: DUP2 00000dc4: MSTORE 00000dc5: PUSH32 0x73657452657365727665466163746f722875696e743235362900000000000000 00000de6: PUSH1 0x20 00000de8: DUP3 00000de9: ADD 00000dea: MSTORE 00000deb: PUSH2 0x0df3 00000dee: SWAP1 00000def: PUSH2 0x26fb 00000df2: JUMP 00000df3: JUMPDEST 00000df4: PUSH2 0x0dfb 00000df7: PUSH2 0x1976 00000dfa: JUMP 00000dfb: JUMPDEST 00000dfc: POP 00000dfd: PUSH2 0x0a6b 00000e00: DUP2 00000e01: PUSH2 0x2799 00000e04: JUMP 00000e05: JUMPDEST 00000e06: PUSH1 0xc9 00000e08: SLOAD 00000e09: PUSH1 0x00 00000e0b: SWAP1 00000e0c: PUSH1 0xff 00000e0e: AND 00000e0f: PUSH2 0x0e2a 00000e12: JUMPI 00000e13: PUSH1 0x40 00000e15: MLOAD 00000e16: PUSH3 0x461bcd 00000e1a: PUSH1 0xe5 00000e1c: SHL 00000e1d: DUP2 00000e1e: MSTORE 00000e1f: PUSH1 0x04 00000e21: ADD 00000e22: PUSH2 0x0a36 00000e25: SWAP1 00000e26: PUSH2 0x4a9f 00000e29: JUMP 00000e2a: JUMPDEST 00000e2b: PUSH1 0xc9 00000e2d: DUP1 00000e2e: SLOAD 00000e2f: PUSH1 0xff 00000e31: NOT 00000e32: AND 00000e33: SWAP1 00000e34: SSTORE 00000e35: PUSH2 0x0e3d 00000e38: DUP4 00000e39: PUSH2 0x2829 00000e3c: JUMP 00000e3d: JUMPDEST 00000e3e: PUSH2 0x0e45 00000e41: PUSH2 0x1976 00000e44: JUMP 00000e45: JUMPDEST 00000e46: POP 00000e47: PUSH2 0x0e53 00000e4a: DUP4 00000e4b: CALLER 00000e4c: DUP5 00000e4d: PUSH1 0x00 00000e4f: PUSH2 0x28ba 00000e52: JUMP 00000e53: JUMPDEST 00000e54: POP 00000e55: PUSH1 0x00 00000e57: PUSH1 0xc9 00000e59: DUP1 00000e5a: SLOAD 00000e5b: PUSH1 0xff 00000e5d: NOT 00000e5e: AND 00000e5f: PUSH1 0x01 00000e61: OR 00000e62: SWAP1 00000e63: SSTORE 00000e64: SWAP3 00000e65: SWAP2 00000e66: POP 00000e67: POP 00000e68: JUMP 00000e69: JUMPDEST 00000e6a: PUSH1 0xc9 00000e6c: SLOAD 00000e6d: PUSH1 0x00 00000e6f: SWAP1 00000e70: PUSH1 0xff 00000e72: AND 00000e73: PUSH2 0x0e8e 00000e76: JUMPI 00000e77: PUSH1 0x40 00000e79: MLOAD 00000e7a: PUSH3 0x461bcd 00000e7e: PUSH1 0xe5 00000e80: SHL 00000e81: DUP2 00000e82: MSTORE 00000e83: PUSH1 0x04 00000e85: ADD 00000e86: PUSH2 0x0a36 00000e89: SWAP1 00000e8a: PUSH2 0x4a9f 00000e8d: JUMP 00000e8e: JUMPDEST 00000e8f: PUSH1 0xc9 00000e91: DUP1 00000e92: SLOAD 00000e93: PUSH1 0xff 00000e95: NOT 00000e96: AND 00000e97: SWAP1 00000e98: SSTORE 00000e99: PUSH2 0x0ea1 00000e9c: DUP4 00000e9d: PUSH2 0x2229 00000ea0: JUMP 00000ea1: JUMPDEST 00000ea2: PUSH2 0x0ea9 00000ea5: PUSH2 0x1976 00000ea8: JUMP 00000ea9: JUMPDEST 00000eaa: POP 00000eab: PUSH2 0x0e53 00000eae: CALLER 00000eaf: DUP5 00000eb0: DUP5 00000eb1: PUSH2 0x2bf3 00000eb4: JUMP 00000eb5: JUMPDEST 00000eb6: PUSH1 0xc9 00000eb8: SLOAD 00000eb9: PUSH1 0x00 00000ebb: SWAP1 00000ebc: PUSH1 0xff 00000ebe: AND 00000ebf: PUSH2 0x0eda 00000ec2: JUMPI 00000ec3: PUSH1 0x40 00000ec5: MLOAD 00000ec6: PUSH3 0x461bcd 00000eca: PUSH1 0xe5 00000ecc: SHL 00000ecd: DUP2 00000ece: MSTORE 00000ecf: PUSH1 0x04 00000ed1: ADD 00000ed2: PUSH2 0x0a36 00000ed5: SWAP1 00000ed6: PUSH2 0x4a9f 00000ed9: JUMP 00000eda: JUMPDEST 00000edb: PUSH1 0xc9 00000edd: DUP1 00000ede: SLOAD 00000edf: PUSH1 0xff 00000ee1: NOT 00000ee2: AND 00000ee3: SWAP1 00000ee4: SSTORE 00000ee5: PUSH2 0x0ef0 00000ee8: CALLER 00000ee9: DUP6 00000eea: DUP6 00000eeb: DUP6 00000eec: PUSH2 0x2df8 00000eef: JUMP 00000ef0: JUMPDEST 00000ef1: POP 00000ef2: PUSH1 0x01 00000ef4: PUSH1 0xc9 00000ef6: DUP1 00000ef7: SLOAD 00000ef8: PUSH1 0xff 00000efa: NOT 00000efb: AND 00000efc: PUSH1 0x01 00000efe: OR 00000eff: SWAP1 00000f00: SSTORE 00000f01: SWAP4 00000f02: SWAP3 00000f03: POP 00000f04: POP 00000f05: POP 00000f06: JUMP 00000f07: JUMPDEST 00000f08: PUSH2 0x0f28 00000f0b: PUSH1 0x40 00000f0d: MLOAD 00000f0e: DUP1 00000f0f: PUSH1 0x60 00000f11: ADD 00000f12: PUSH1 0x40 00000f14: MSTORE 00000f15: DUP1 00000f16: PUSH1 0x24 00000f18: DUP2 00000f19: MSTORE 00000f1a: PUSH1 0x20 00000f1c: ADD 00000f1d: PUSH2 0x4ddb 00000f20: PUSH1 0x24 00000f22: SWAP2 00000f23: CODECOPY 00000f24: PUSH2 0x26fb 00000f27: JUMP 00000f28: JUMPDEST 00000f29: PUSH1 0x00 00000f2b: DUP2 00000f2c: GT 00000f2d: PUSH2 0x0f68 00000f30: JUMPI 00000f31: PUSH1 0x40 00000f33: MLOAD 00000f34: PUSH3 0x461bcd 00000f38: PUSH1 0xe5 00000f3a: SHL 00000f3b: DUP2 00000f3c: MSTORE 00000f3d: PUSH1 0x20 00000f3f: PUSH1 0x04 00000f41: DUP3 00000f42: ADD 00000f43: MSTORE 00000f44: PUSH1 0x0d 00000f46: PUSH1 0x24 00000f48: DUP3 00000f49: ADD 00000f4a: MSTORE 00000f4b: PUSH13 0x125b9d985b1a5908125b9c1d5d 00000f59: PUSH1 0x9a 00000f5b: SHL 00000f5c: PUSH1 0x44 00000f5e: DUP3 00000f5f: ADD 00000f60: MSTORE 00000f61: PUSH1 0x64 00000f63: ADD 00000f64: PUSH2 0x0a36 00000f67: JUMP 00000f68: JUMPDEST 00000f69: PUSH1 0xdc 00000f6b: SLOAD 00000f6c: PUSH1 0x40 00000f6e: DUP1 00000f6f: MLOAD 00000f70: SWAP2 00000f71: DUP3 00000f72: MSTORE 00000f73: PUSH1 0x20 00000f75: DUP3 00000f76: ADD 00000f77: DUP4 00000f78: SWAP1 00000f79: MSTORE 00000f7a: PUSH32 0xc2ac513cdb57f91eb2bef4db918c285829524f549682b99717c6cb06cc011183 00000f9b: SWAP2 00000f9c: ADD 00000f9d: PUSH1 0x40 00000f9f: MLOAD 00000fa0: DUP1 00000fa1: SWAP2 00000fa2: SUB 00000fa3: SWAP1 00000fa4: LOG1 00000fa5: PUSH1 0xdc 00000fa7: SSTORE 00000fa8: JUMP 00000fa9: JUMPDEST 00000faa: PUSH1 0xc9 00000fac: SLOAD 00000fad: PUSH1 0x00 00000faf: SWAP1 00000fb0: PUSH1 0xff 00000fb2: AND 00000fb3: PUSH2 0x0fce 00000fb6: JUMPI 00000fb7: PUSH1 0x40 00000fb9: MLOAD 00000fba: PUSH3 0x461bcd 00000fbe: PUSH1 0xe5 00000fc0: SHL 00000fc1: DUP2 00000fc2: MSTORE 00000fc3: PUSH1 0x04 00000fc5: ADD 00000fc6: PUSH2 0x0a36 00000fc9: SWAP1 00000fca: PUSH2 0x4a9f 00000fcd: JUMP 00000fce: JUMPDEST 00000fcf: PUSH1 0xc9 00000fd1: DUP1 00000fd2: SLOAD 00000fd3: PUSH1 0xff 00000fd5: NOT 00000fd6: AND 00000fd7: SWAP1 00000fd8: SSTORE 00000fd9: PUSH2 0x0fe0 00000fdc: PUSH2 0x1976 00000fdf: JUMP 00000fe0: JUMPDEST 00000fe1: POP 00000fe2: PUSH2 0x0fec 00000fe5: CALLER 00000fe6: DUP5 00000fe7: DUP5 00000fe8: PUSH2 0x2370 00000feb: JUMP 00000fec: JUMPDEST 00000fed: POP 00000fee: PUSH1 0x00 00000ff0: SWAP1 00000ff1: POP 00000ff2: PUSH1 0xc9 00000ff4: DUP1 00000ff5: SLOAD 00000ff6: PUSH1 0xff 00000ff8: NOT 00000ff9: AND 00000ffa: PUSH1 0x01 00000ffc: OR 00000ffd: SWAP1 00000ffe: SSTORE 00000fff: SWAP3 00001000: SWAP2 00001001: POP 00001002: POP 00001003: JUMP 00001004: JUMPDEST 00001005: PUSH1 0x00 00001007: PUSH2 0x100f 0000100a: DUP4 0000100b: PUSH2 0x2229 0000100e: JUMP 0000100f: JUMPDEST 00001010: CALLER 00001011: PUSH1 0x00 00001013: DUP2 00001014: DUP2 00001015: MSTORE 00001016: PUSH1 0xd8 00001018: PUSH1 0x20 0000101a: SWAP1 0000101b: DUP2 0000101c: MSTORE 0000101d: PUSH1 0x40 0000101f: DUP1 00001020: DUP4 00001021: KECCAK256 00001022: PUSH1 0x01 00001024: PUSH1 0x01 00001026: PUSH1 0xa0 00001028: SHL 00001029: SUB 0000102a: DUP9 0000102b: AND 0000102c: DUP5 0000102d: MSTORE 0000102e: SWAP1 0000102f: SWAP2 00001030: MSTORE 00001031: SWAP1 00001032: KECCAK256 00001033: SLOAD 00001034: PUSH2 0x103d 00001037: DUP5 00001038: DUP3 00001039: PUSH2 0x4af2 0000103c: JUMP 0000103d: JUMPDEST 0000103e: PUSH1 0x01 00001040: PUSH1 0x01 00001042: PUSH1 0xa0 00001044: SHL 00001045: SUB 00001046: DUP4 00001047: DUP2 00001048: AND 00001049: PUSH1 0x00 0000104b: DUP2 0000104c: DUP2 0000104d: MSTORE 0000104e: PUSH1 0xd8 00001050: PUSH1 0x20 00001052: SWAP1 00001053: DUP2 00001054: MSTORE 00001055: PUSH1 0x40 00001057: DUP1 00001058: DUP4 00001059: KECCAK256 0000105a: SWAP5 0000105b: DUP12 0000105c: AND 0000105d: DUP1 0000105e: DUP5 0000105f: MSTORE 00001060: SWAP5 00001061: DUP3 00001062: MSTORE 00001063: SWAP2 00001064: DUP3 00001065: SWAP1 00001066: KECCAK256 00001067: DUP6 00001068: SWAP1 00001069: SSTORE 0000106a: SWAP1 0000106b: MLOAD 0000106c: DUP5 0000106d: DUP2 0000106e: MSTORE 0000106f: SWAP4 00001070: SWAP5 00001071: POP 00001072: SWAP2 00001073: SWAP3 00001074: SWAP1 00001075: SWAP2 00001076: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00001097: SWAP2 00001098: ADD 00001099: JUMPDEST 0000109a: PUSH1 0x40 0000109c: MLOAD 0000109d: DUP1 0000109e: SWAP2 0000109f: SUB 000010a0: SWAP1 000010a1: LOG3 000010a2: POP 000010a3: PUSH1 0x01 000010a5: SWAP5 000010a6: SWAP4 000010a7: POP 000010a8: POP 000010a9: POP 000010aa: POP 000010ab: JUMP 000010ac: JUMPDEST 000010ad: PUSH1 0x00 000010af: DUP1 000010b0: PUSH1 0x40 000010b2: MLOAD 000010b3: DUP1 000010b4: PUSH1 0x20 000010b6: ADD 000010b7: PUSH1 0x40 000010b9: MSTORE 000010ba: DUP1 000010bb: PUSH2 0x10c2 000010be: PUSH2 0x1d09 000010c1: JUMP 000010c2: JUMPDEST 000010c3: SWAP1 000010c4: MSTORE 000010c5: PUSH1 0x01 000010c7: PUSH1 0x01 000010c9: PUSH1 0xa0 000010cb: SHL 000010cc: SUB 000010cd: DUP5 000010ce: AND 000010cf: PUSH1 0x00 000010d1: SWAP1 000010d2: DUP2 000010d3: MSTORE 000010d4: PUSH1 0xd7 000010d6: PUSH1 0x20 000010d8: MSTORE 000010d9: PUSH1 0x40 000010db: SWAP1 000010dc: KECCAK256 000010dd: SLOAD 000010de: SWAP1 000010df: SWAP2 000010e0: POP 000010e1: PUSH2 0x10eb 000010e4: SWAP1 000010e5: DUP3 000010e6: SWAP1 000010e7: PUSH2 0x3022 000010ea: JUMP 000010eb: JUMPDEST 000010ec: SWAP4 000010ed: SWAP3 000010ee: POP 000010ef: POP 000010f0: POP 000010f1: JUMP 000010f2: JUMPDEST 000010f3: PUSH1 0x00 000010f5: PUSH2 0x0bca 000010f8: PUSH2 0x303a 000010fb: JUMP 000010fc: JUMPDEST 000010fd: PUSH2 0x1104 00001100: PUSH2 0x2250 00001103: JUMP 00001104: JUMPDEST 00001105: PUSH2 0x0afd 00001108: DUP2 00001109: PUSH2 0x3070 0000110c: JUMP 0000110d: JUMPDEST 0000110e: PUSH1 0xc9 00001110: SLOAD 00001111: PUSH1 0xff 00001113: AND 00001114: PUSH2 0x112f 00001117: JUMPI 00001118: PUSH1 0x40 0000111a: MLOAD 0000111b: PUSH3 0x461bcd 0000111f: PUSH1 0xe5 00001121: SHL 00001122: DUP2 00001123: MSTORE 00001124: PUSH1 0x04 00001126: ADD 00001127: PUSH2 0x0a36 0000112a: SWAP1 0000112b: PUSH2 0x4a9f 0000112e: JUMP 0000112f: JUMPDEST 00001130: PUSH1 0xc9 00001132: DUP1 00001133: SLOAD 00001134: PUSH1 0xff 00001136: NOT 00001137: AND 00001138: SWAP1 00001139: SSTORE 0000113a: DUP1 0000113b: ISZERO 0000113c: PUSH2 0x11a5 0000113f: JUMPI 00001140: PUSH1 0xcd 00001142: SLOAD 00001143: PUSH1 0x40 00001145: MLOAD 00001146: PUSH4 0xeade3eed 0000114b: PUSH1 0xe0 0000114d: SHL 0000114e: DUP2 0000114f: MSTORE 00001150: ADDRESS 00001151: PUSH1 0x04 00001153: DUP3 00001154: ADD 00001155: MSTORE 00001156: PUSH1 0x01 00001158: PUSH1 0x01 0000115a: PUSH1 0xa0 0000115c: SHL 0000115d: SUB 0000115e: DUP5 0000115f: DUP2 00001160: AND 00001161: PUSH1 0x24 00001163: DUP4 00001164: ADD 00001165: MSTORE 00001166: SWAP1 00001167: SWAP2 00001168: AND 00001169: SWAP1 0000116a: PUSH4 0xeade3eed 0000116f: SWAP1 00001170: PUSH1 0x44 00001172: ADD 00001173: PUSH1 0x00 00001175: PUSH1 0x40 00001177: MLOAD 00001178: DUP1 00001179: DUP4 0000117a: SUB 0000117b: DUP2 0000117c: PUSH1 0x00 0000117e: DUP8 0000117f: DUP1 00001180: EXTCODESIZE 00001181: ISZERO 00001182: DUP1 00001183: ISZERO 00001184: PUSH2 0x118c 00001187: JUMPI 00001188: PUSH1 0x00 0000118a: DUP1 0000118b: REVERT 0000118c: JUMPDEST 0000118d: POP 0000118e: GAS 0000118f: CALL 00001190: ISZERO 00001191: DUP1 00001192: ISZERO 00001193: PUSH2 0x11a0 00001196: JUMPI 00001197: RETURNDATASIZE 00001198: PUSH1 0x00 0000119a: DUP1 0000119b: RETURNDATACOPY 0000119c: RETURNDATASIZE 0000119d: PUSH1 0x00 0000119f: REVERT 000011a0: JUMPDEST 000011a1: POP 000011a2: POP 000011a3: POP 000011a4: POP 000011a5: JUMPDEST 000011a6: PUSH1 0xcd 000011a8: SLOAD 000011a9: PUSH1 0x01 000011ab: PUSH1 0x01 000011ad: PUSH1 0xa0 000011af: SHL 000011b0: SUB 000011b1: AND 000011b2: CALLER 000011b3: EQ 000011b4: PUSH2 0x11d0 000011b7: JUMPI 000011b8: PUSH1 0x40 000011ba: MLOAD 000011bb: PUSH4 0x2c402925 000011c0: PUSH1 0xe0 000011c2: SHL 000011c3: DUP2 000011c4: MSTORE 000011c5: PUSH1 0x04 000011c7: ADD 000011c8: PUSH1 0x40 000011ca: MLOAD 000011cb: DUP1 000011cc: SWAP2 000011cd: SUB 000011ce: SWAP1 000011cf: REVERT 000011d0: JUMPDEST 000011d1: PUSH1 0x00 000011d3: PUSH2 0x11db 000011d6: DUP4 000011d7: PUSH2 0x25ae 000011da: JUMP 000011db: JUMPDEST 000011dc: PUSH1 0xd3 000011de: SLOAD 000011df: SWAP1 000011e0: SWAP2 000011e1: POP 000011e2: PUSH1 0x00 000011e4: DUP4 000011e5: ISZERO 000011e6: PUSH2 0x125b 000011e9: JUMPI 000011ea: PUSH2 0x11f3 000011ed: DUP7 000011ee: DUP6 000011ef: PUSH2 0x30cb 000011f2: JUMP 000011f3: JUMPDEST 000011f4: SWAP1 000011f5: POP 000011f6: PUSH2 0x11ff 000011f9: DUP2 000011fa: DUP4 000011fb: PUSH2 0x4b05 000011fe: JUMP 000011ff: JUMPDEST 00001200: SWAP2 00001201: POP 00001202: PUSH1 0x01 00001204: PUSH1 0x01 00001206: PUSH1 0xa0 00001208: SHL 00001209: SUB 0000120a: DUP1 0000120b: DUP7 0000120c: AND 0000120d: SWAP1 0000120e: DUP8 0000120f: AND 00001210: PUSH32 0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1 00001231: DUP4 00001232: PUSH2 0x123b 00001235: DUP2 00001236: DUP9 00001237: PUSH2 0x4b05 0000123a: JUMP 0000123b: JUMPDEST 0000123c: PUSH1 0x40 0000123e: DUP1 0000123f: MLOAD 00001240: SWAP3 00001241: DUP4 00001242: MSTORE 00001243: PUSH1 0x20 00001245: DUP4 00001246: ADD 00001247: SWAP2 00001248: SWAP1 00001249: SWAP2 0000124a: MSTORE 0000124b: DUP2 0000124c: ADD 0000124d: DUP7 0000124e: SWAP1 0000124f: MSTORE 00001250: PUSH1 0x60 00001252: ADD 00001253: PUSH1 0x40 00001255: MLOAD 00001256: DUP1 00001257: SWAP2 00001258: SUB 00001259: SWAP1 0000125a: LOG3 0000125b: JUMPDEST 0000125c: PUSH1 0x00 0000125e: PUSH2 0x1267 00001261: DUP3 00001262: DUP6 00001263: PUSH2 0x4b05 00001266: JUMP 00001267: JUMPDEST 00001268: SWAP1 00001269: POP 0000126a: DUP1 0000126b: ISZERO 0000126c: PUSH2 0x132f 0000126f: JUMPI 00001270: PUSH1 0xd6 00001272: SLOAD 00001273: PUSH1 0x00 00001275: PUSH2 0x127e 00001278: DUP4 00001279: DUP4 0000127a: PUSH2 0x4af2 0000127d: JUMP 0000127e: JUMPDEST 0000127f: SWAP1 00001280: POP 00001281: PUSH2 0x128a 00001284: DUP4 00001285: DUP7 00001286: PUSH2 0x4b05 00001289: JUMP 0000128a: JUMPDEST 0000128b: PUSH1 0xd6 0000128d: DUP3 0000128e: SWAP1 0000128f: SSTORE 00001290: PUSH1 0x40 00001292: DUP1 00001293: MLOAD 00001294: DUP6 00001295: DUP2 00001296: MSTORE 00001297: PUSH1 0x00 00001299: PUSH1 0x20 0000129b: DUP3 0000129c: ADD 0000129d: MSTORE 0000129e: SWAP1 0000129f: DUP2 000012a0: ADD 000012a1: DUP3 000012a2: SWAP1 000012a3: MSTORE 000012a4: SWAP1 000012a5: SWAP6 000012a6: POP 000012a7: PUSH1 0x01 000012a9: PUSH1 0x01 000012ab: PUSH1 0xa0 000012ad: SHL 000012ae: SUB 000012af: DUP10 000012b0: AND 000012b1: SWAP1 000012b2: ADDRESS 000012b3: SWAP1 000012b4: PUSH32 0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1 000012d5: SWAP1 000012d6: PUSH1 0x60 000012d8: ADD 000012d9: PUSH1 0x40 000012db: MLOAD 000012dc: DUP1 000012dd: SWAP2 000012de: SUB 000012df: SWAP1 000012e0: LOG3 000012e1: PUSH1 0x40 000012e3: DUP1 000012e4: MLOAD 000012e5: DUP5 000012e6: DUP2 000012e7: MSTORE 000012e8: PUSH1 0x20 000012ea: DUP2 000012eb: ADD 000012ec: DUP5 000012ed: SWAP1 000012ee: MSTORE 000012ef: SWAP1 000012f0: DUP2 000012f1: ADD 000012f2: DUP3 000012f3: SWAP1 000012f4: MSTORE 000012f5: PUSH1 0x01 000012f7: PUSH1 0x01 000012f9: PUSH1 0xa0 000012fb: SHL 000012fc: SUB 000012fd: DUP10 000012fe: AND 000012ff: SWAP1 00001300: PUSH32 0x90125ffdb441e57c4f6bf69789206424859f206bea5727f2d81ad2470826ef6a 00001321: SWAP1 00001322: PUSH1 0x60 00001324: ADD 00001325: PUSH1 0x40 00001327: MLOAD 00001328: DUP1 00001329: SWAP2 0000132a: SUB 0000132b: SWAP1 0000132c: LOG2 0000132d: POP 0000132e: POP 0000132f: JUMPDEST 00001330: PUSH1 0x01 00001332: PUSH1 0x01 00001334: PUSH1 0xa0 00001336: SHL 00001337: SUB 00001338: DUP1 00001339: DUP8 0000133a: AND 0000133b: PUSH1 0x00 0000133d: DUP2 0000133e: DUP2 0000133f: MSTORE 00001340: PUSH1 0xd9 00001342: PUSH1 0x20 00001344: MSTORE 00001345: PUSH1 0x40 00001347: DUP1 00001348: DUP3 00001349: KECCAK256 0000134a: SWAP2 0000134b: DUP3 0000134c: SSTORE 0000134d: PUSH1 0xd2 0000134f: SLOAD 00001350: PUSH1 0x01 00001352: SWAP1 00001353: SWAP3 00001354: ADD 00001355: SWAP2 00001356: SWAP1 00001357: SWAP2 00001358: SSTORE 00001359: PUSH1 0xd3 0000135b: DUP7 0000135c: SWAP1 0000135d: SSTORE 0000135e: MLOAD 0000135f: SWAP1 00001360: SWAP2 00001361: DUP10 00001362: AND 00001363: SWAP1 00001364: PUSH32 0x9fe0294717a8efbc6ace1c151b73a4c89982339b2228a27d1ca21394e348986f 00001385: SWAP1 00001386: PUSH2 0x1392 00001389: SWAP1 0000138a: DUP10 0000138b: DUP2 0000138c: MSTORE 0000138d: PUSH1 0x20 0000138f: ADD 00001390: SWAP1 00001391: JUMP 00001392: JUMPDEST 00001393: PUSH1 0x40 00001395: MLOAD 00001396: DUP1 00001397: SWAP2 00001398: SUB 00001399: SWAP1 0000139a: LOG3 0000139b: POP 0000139c: POP 0000139d: PUSH1 0xc9 0000139f: DUP1 000013a0: SLOAD 000013a1: PUSH1 0xff 000013a3: NOT 000013a4: AND 000013a5: PUSH1 0x01 000013a7: OR 000013a8: SWAP1 000013a9: SSTORE 000013aa: POP 000013ab: POP 000013ac: POP 000013ad: POP 000013ae: POP 000013af: JUMP 000013b0: JUMPDEST 000013b1: PUSH2 0x13b8 000013b4: PUSH2 0x2250 000013b7: JUMP 000013b8: JUMPDEST 000013b9: PUSH2 0x13c2 000013bc: PUSH1 0x00 000013be: PUSH2 0x31d9 000013c1: JUMP 000013c2: JUMPDEST 000013c3: JUMP 000013c4: JUMPDEST 000013c5: PUSH1 0xc9 000013c7: SLOAD 000013c8: PUSH1 0x00 000013ca: SWAP1 000013cb: PUSH1 0xff 000013cd: AND 000013ce: PUSH2 0x13e9 000013d1: JUMPI 000013d2: PUSH1 0x40 000013d4: MLOAD 000013d5: PUSH3 0x461bcd 000013d9: PUSH1 0xe5 000013db: SHL 000013dc: DUP2 000013dd: MSTORE 000013de: PUSH1 0x04 000013e0: ADD 000013e1: PUSH2 0x0a36 000013e4: SWAP1 000013e5: PUSH2 0x4a9f 000013e8: JUMP 000013e9: JUMPDEST 000013ea: PUSH1 0xc9 000013ec: DUP1 000013ed: SLOAD 000013ee: PUSH1 0xff 000013f0: NOT 000013f1: AND 000013f2: SWAP1 000013f3: SSTORE 000013f4: PUSH2 0x13fb 000013f7: PUSH2 0x1976 000013fa: JUMP 000013fb: JUMPDEST 000013fc: POP 000013fd: POP 000013fe: PUSH1 0xd3 00001400: SLOAD 00001401: PUSH1 0xc9 00001403: DUP1 00001404: SLOAD 00001405: PUSH1 0xff 00001407: NOT 00001408: AND 00001409: PUSH1 0x01 0000140b: OR 0000140c: SWAP1 0000140d: SSTORE 0000140e: SWAP1 0000140f: JUMP 00001410: JUMPDEST 00001411: PUSH2 0x144e 00001414: PUSH1 0x40 00001416: MLOAD 00001417: DUP1 00001418: PUSH1 0x40 0000141a: ADD 0000141b: PUSH1 0x40 0000141d: MSTORE 0000141e: DUP1 0000141f: PUSH1 0x1e 00001421: DUP2 00001422: MSTORE 00001423: PUSH1 0x20 00001425: ADD 00001426: PUSH32 0x73657450726f746f636f6c5365697a6553686172652875696e74323536290000 00001447: DUP2 00001448: MSTORE 00001449: POP 0000144a: PUSH2 0x26fb 0000144d: JUMP 0000144e: JUMPDEST 0000144f: PUSH1 0xcd 00001451: SLOAD 00001452: PUSH1 0x40 00001454: DUP1 00001455: MLOAD 00001456: PUSH4 0x4ada90af 0000145b: PUSH1 0xe0 0000145d: SHL 0000145e: DUP2 0000145f: MSTORE 00001460: SWAP1 00001461: MLOAD 00001462: PUSH1 0x00 00001464: SWAP3 00001465: PUSH1 0x01 00001467: PUSH1 0x01 00001469: PUSH1 0xa0 0000146b: SHL 0000146c: SUB 0000146d: AND 0000146e: SWAP2 0000146f: PUSH4 0x4ada90af 00001474: SWAP2 00001475: PUSH1 0x04 00001477: DUP1 00001478: DUP4 00001479: ADD 0000147a: SWAP3 0000147b: PUSH1 0x20 0000147d: SWAP3 0000147e: SWAP2 0000147f: SWAP1 00001480: DUP3 00001481: SWAP1 00001482: SUB 00001483: ADD 00001484: DUP2 00001485: DUP7 00001486: GAS 00001487: STATICCALL 00001488: ISZERO 00001489: DUP1 0000148a: ISZERO 0000148b: PUSH2 0x1498 0000148e: JUMPI 0000148f: RETURNDATASIZE 00001490: PUSH1 0x00 00001492: DUP1 00001493: RETURNDATACOPY 00001494: RETURNDATASIZE 00001495: PUSH1 0x00 00001497: REVERT 00001498: JUMPDEST 00001499: POP 0000149a: POP 0000149b: POP 0000149c: POP 0000149d: PUSH1 0x40 0000149f: MLOAD 000014a0: RETURNDATASIZE 000014a1: PUSH1 0x1f 000014a3: NOT 000014a4: PUSH1 0x1f 000014a6: DUP3 000014a7: ADD 000014a8: AND 000014a9: DUP3 000014aa: ADD 000014ab: DUP1 000014ac: PUSH1 0x40 000014ae: MSTORE 000014af: POP 000014b0: DUP2 000014b1: ADD 000014b2: SWAP1 000014b3: PUSH2 0x14bc 000014b6: SWAP2 000014b7: SWAP1 000014b8: PUSH2 0x4ac3 000014bb: JUMP 000014bc: JUMPDEST 000014bd: SWAP1 000014be: POP 000014bf: DUP1 000014c0: PUSH2 0x14d1 000014c3: PUSH8 0x0de0b6b3a7640000 000014cc: DUP5 000014cd: PUSH2 0x4af2 000014d0: JUMP 000014d1: JUMPDEST 000014d2: GT 000014d3: ISZERO 000014d4: PUSH2 0x14f0 000014d7: JUMPI 000014d8: PUSH1 0x40 000014da: MLOAD 000014db: PUSH4 0x034dd2c1 000014e0: PUSH1 0xe1 000014e2: SHL 000014e3: DUP2 000014e4: MSTORE 000014e5: PUSH1 0x04 000014e7: ADD 000014e8: PUSH1 0x40 000014ea: MLOAD 000014eb: DUP1 000014ec: SWAP2 000014ed: SUB 000014ee: SWAP1 000014ef: REVERT 000014f0: JUMPDEST 000014f1: PUSH1 0xda 000014f3: DUP1 000014f4: SLOAD 000014f5: SWAP1 000014f6: DUP4 000014f7: SWAP1 000014f8: SSTORE 000014f9: PUSH1 0x40 000014fb: DUP1 000014fc: MLOAD 000014fd: DUP3 000014fe: DUP2 000014ff: MSTORE 00001500: PUSH1 0x20 00001502: DUP2 00001503: ADD 00001504: DUP6 00001505: SWAP1 00001506: MSTORE 00001507: PUSH32 0xf5815f353a60e815cce7553e4f60c533a59d26b1b5504ea4b6db8d60da3e4da2 00001528: SWAP2 00001529: ADD 0000152a: JUMPDEST 0000152b: PUSH1 0x40 0000152d: MLOAD 0000152e: DUP1 0000152f: SWAP2 00001530: SUB 00001531: SWAP1 00001532: LOG1 00001533: POP 00001534: POP 00001535: POP 00001536: JUMP 00001537: JUMPDEST 00001538: PUSH1 0xc9 0000153a: SLOAD 0000153b: PUSH1 0xff 0000153d: AND 0000153e: PUSH2 0x1559 00001541: JUMPI 00001542: PUSH1 0x40 00001544: MLOAD 00001545: PUSH3 0x461bcd 00001549: PUSH1 0xe5 0000154b: SHL 0000154c: DUP2 0000154d: MSTORE 0000154e: PUSH1 0x04 00001550: ADD 00001551: PUSH2 0x0a36 00001554: SWAP1 00001555: PUSH2 0x4a9f 00001558: JUMP 00001559: JUMPDEST 0000155a: PUSH1 0xc9 0000155c: DUP1 0000155d: SLOAD 0000155e: PUSH1 0xff 00001560: NOT 00001561: AND 00001562: SWAP1 00001563: SSTORE 00001564: PUSH2 0x156b 00001567: PUSH2 0x1976 0000156a: JUMP 0000156b: JUMPDEST 0000156c: POP 0000156d: PUSH2 0x1575 00001570: DUP2 00001571: PUSH2 0x31f2 00001574: JUMP 00001575: JUMPDEST 00001576: POP 00001577: POP 00001578: PUSH1 0xc9 0000157a: DUP1 0000157b: SLOAD 0000157c: PUSH1 0xff 0000157e: NOT 0000157f: AND 00001580: PUSH1 0x01 00001582: OR 00001583: SWAP1 00001584: SSTORE 00001585: JUMP 00001586: JUMPDEST 00001587: PUSH1 0x65 00001589: SLOAD 0000158a: CALLER 0000158b: SWAP1 0000158c: PUSH1 0x01 0000158e: PUSH1 0x01 00001590: PUSH1 0xa0 00001592: SHL 00001593: SUB 00001594: AND 00001595: DUP2 00001596: EQ 00001597: PUSH2 0x15f4 0000159a: JUMPI 0000159b: PUSH1 0x40 0000159d: MLOAD 0000159e: PUSH3 0x461bcd 000015a2: PUSH1 0xe5 000015a4: SHL 000015a5: DUP2 000015a6: MSTORE 000015a7: PUSH1 0x20 000015a9: PUSH1 0x04 000015ab: DUP3 000015ac: ADD 000015ad: MSTORE 000015ae: PUSH1 0x29 000015b0: PUSH1 0x24 000015b2: DUP3 000015b3: ADD 000015b4: MSTORE 000015b5: PUSH32 0x4f776e61626c6532537465703a2063616c6c6572206973206e6f742074686520 000015d6: PUSH1 0x44 000015d8: DUP3 000015d9: ADD 000015da: MSTORE 000015db: PUSH9 0x3732bb9037bbb732b9 000015e5: PUSH1 0xb9 000015e7: SHL 000015e8: PUSH1 0x64 000015ea: DUP3 000015eb: ADD 000015ec: MSTORE 000015ed: PUSH1 0x84 000015ef: ADD 000015f0: PUSH2 0x0a36 000015f3: JUMP 000015f4: JUMPDEST 000015f5: PUSH2 0x0afd 000015f8: DUP2 000015f9: PUSH2 0x31d9 000015fc: JUMP 000015fd: JUMPDEST 000015fe: PUSH1 0xc9 00001600: SLOAD 00001601: PUSH1 0x00 00001603: SWAP1 00001604: PUSH1 0xff 00001606: AND 00001607: PUSH2 0x1622 0000160a: JUMPI 0000160b: PUSH1 0x40 0000160d: MLOAD 0000160e: PUSH3 0x461bcd 00001612: PUSH1 0xe5 00001614: SHL 00001615: DUP2 00001616: MSTORE 00001617: PUSH1 0x04 00001619: ADD 0000161a: PUSH2 0x0a36 0000161d: SWAP1 0000161e: PUSH2 0x4a9f 00001621: JUMP 00001622: JUMPDEST 00001623: PUSH1 0xc9 00001625: DUP1 00001626: SLOAD 00001627: PUSH1 0xff 00001629: NOT 0000162a: AND 0000162b: SWAP1 0000162c: SSTORE 0000162d: PUSH2 0x1634 00001630: PUSH2 0x1976 00001633: JUMP 00001634: JUMPDEST 00001635: POP 00001636: PUSH2 0x1642 00001639: CALLER 0000163a: CALLER 0000163b: PUSH1 0x00 0000163d: DUP6 0000163e: PUSH2 0x28ba 00001641: JUMP 00001642: JUMPDEST 00001643: POP 00001644: PUSH1 0x00 00001646: PUSH1 0xc9 00001648: DUP1 00001649: SLOAD 0000164a: PUSH1 0xff 0000164c: NOT 0000164d: AND 0000164e: PUSH1 0x01 00001650: OR 00001651: SWAP1 00001652: SSTORE 00001653: SWAP2 00001654: SWAP1 00001655: POP 00001656: JUMP 00001657: JUMPDEST 00001658: PUSH1 0x00 0000165a: PUSH2 0x1662 0000165d: DUP4 0000165e: PUSH2 0x2829 00001661: JUMP 00001662: JUMPDEST 00001663: PUSH2 0x166a 00001666: PUSH2 0x1976 00001669: JUMP 0000166a: JUMPDEST 0000166b: POP 0000166c: PUSH2 0x1676 0000166f: DUP4 00001670: CALLER 00001671: DUP5 00001672: PUSH2 0x3287 00001675: JUMP 00001676: JUMPDEST 00001677: POP 00001678: PUSH1 0x00 0000167a: SWAP3 0000167b: SWAP2 0000167c: POP 0000167d: POP 0000167e: JUMP 0000167f: JUMPDEST 00001680: PUSH1 0x00 00001682: SLOAD 00001683: PUSH2 0x0100 00001686: SWAP1 00001687: DIV 00001688: PUSH1 0xff 0000168a: AND 0000168b: ISZERO 0000168c: DUP1 0000168d: DUP1 0000168e: ISZERO 0000168f: PUSH2 0x169f 00001692: JUMPI 00001693: POP 00001694: PUSH1 0x00 00001696: SLOAD 00001697: PUSH1 0x01 00001699: PUSH1 0xff 0000169b: SWAP1 0000169c: SWAP2 0000169d: AND 0000169e: LT 0000169f: JUMPDEST 000016a0: DUP1 000016a1: PUSH2 0x16b9 000016a4: JUMPI 000016a5: POP 000016a6: ADDRESS 000016a7: EXTCODESIZE 000016a8: ISZERO 000016a9: DUP1 000016aa: ISZERO 000016ab: PUSH2 0x16b9 000016ae: JUMPI 000016af: POP 000016b0: PUSH1 0x00 000016b2: SLOAD 000016b3: PUSH1 0xff 000016b5: AND 000016b6: PUSH1 0x01 000016b8: EQ 000016b9: JUMPDEST 000016ba: PUSH2 0x171c 000016bd: JUMPI 000016be: PUSH1 0x40 000016c0: MLOAD 000016c1: PUSH3 0x461bcd 000016c5: PUSH1 0xe5 000016c7: SHL 000016c8: DUP2 000016c9: MSTORE 000016ca: PUSH1 0x20 000016cc: PUSH1 0x04 000016ce: DUP3 000016cf: ADD 000016d0: MSTORE 000016d1: PUSH1 0x2e 000016d3: PUSH1 0x24 000016d5: DUP3 000016d6: ADD 000016d7: MSTORE 000016d8: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 000016f9: PUSH1 0x44 000016fb: DUP3 000016fc: ADD 000016fd: MSTORE 000016fe: PUSH14 0x191e481a5b9a5d1a585b1a5e9959 0000170d: PUSH1 0x92 0000170f: SHL 00001710: PUSH1 0x64 00001712: DUP3 00001713: ADD 00001714: MSTORE 00001715: PUSH1 0x84 00001717: ADD 00001718: PUSH2 0x0a36 0000171b: JUMP 0000171c: JUMPDEST 0000171d: PUSH1 0x00 0000171f: DUP1 00001720: SLOAD 00001721: PUSH1 0xff 00001723: NOT 00001724: AND 00001725: PUSH1 0x01 00001727: OR 00001728: SWAP1 00001729: SSTORE 0000172a: DUP1 0000172b: ISZERO 0000172c: PUSH2 0x173f 0000172f: JUMPI 00001730: PUSH1 0x00 00001732: DUP1 00001733: SLOAD 00001734: PUSH2 0xff00 00001737: NOT 00001738: AND 00001739: PUSH2 0x0100 0000173c: OR 0000173d: SWAP1 0000173e: SSTORE 0000173f: JUMPDEST 00001740: PUSH2 0x1748 00001743: DUP6 00001744: PUSH2 0x2229 00001747: JUMP 00001748: JUMPDEST 00001749: PUSH2 0x175b 0000174c: DUP13 0000174d: DUP13 0000174e: DUP13 0000174f: DUP13 00001750: DUP13 00001751: DUP13 00001752: DUP13 00001753: DUP13 00001754: DUP13 00001755: DUP13 00001756: DUP13 00001757: PUSH2 0x3465 0000175a: JUMP 0000175b: JUMPDEST 0000175c: DUP1 0000175d: ISZERO 0000175e: PUSH2 0x17a1 00001761: JUMPI 00001762: PUSH1 0x00 00001764: DUP1 00001765: SLOAD 00001766: PUSH2 0xff00 00001769: NOT 0000176a: AND 0000176b: SWAP1 0000176c: SSTORE 0000176d: PUSH1 0x40 0000176f: MLOAD 00001770: PUSH1 0x01 00001772: DUP2 00001773: MSTORE 00001774: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 00001795: SWAP1 00001796: PUSH1 0x20 00001798: ADD 00001799: PUSH1 0x40 0000179b: MLOAD 0000179c: DUP1 0000179d: SWAP2 0000179e: SUB 0000179f: SWAP1 000017a0: LOG1 000017a1: JUMPDEST 000017a2: POP 000017a3: POP 000017a4: POP 000017a5: POP 000017a6: POP 000017a7: POP 000017a8: POP 000017a9: POP 000017aa: POP 000017ab: POP 000017ac: POP 000017ad: POP 000017ae: JUMP 000017af: JUMPDEST 000017b0: PUSH1 0xcd 000017b2: SLOAD 000017b3: PUSH1 0x01 000017b5: PUSH1 0x01 000017b7: PUSH1 0xa0 000017b9: SHL 000017ba: SUB 000017bb: AND 000017bc: CALLER 000017bd: EQ 000017be: PUSH2 0x17da 000017c1: JUMPI 000017c2: PUSH1 0x40 000017c4: MLOAD 000017c5: PUSH4 0x5c85a5e7 000017ca: PUSH1 0xe0 000017cc: SHL 000017cd: DUP2 000017ce: MSTORE 000017cf: PUSH1 0x04 000017d1: ADD 000017d2: PUSH1 0x40 000017d4: MLOAD 000017d5: DUP1 000017d6: SWAP2 000017d7: SUB 000017d8: SWAP1 000017d9: REVERT 000017da: JUMPDEST 000017db: PUSH2 0x17e7 000017de: DUP6 000017df: DUP6 000017e0: DUP6 000017e1: DUP6 000017e2: DUP6 000017e3: PUSH2 0x3692 000017e6: JUMP 000017e7: JUMPDEST 000017e8: POP 000017e9: POP 000017ea: POP 000017eb: POP 000017ec: POP 000017ed: JUMP 000017ee: JUMPDEST 000017ef: PUSH2 0x182c 000017f2: PUSH1 0x40 000017f4: MLOAD 000017f5: DUP1 000017f6: PUSH1 0x40 000017f8: ADD 000017f9: PUSH1 0x40 000017fb: MSTORE 000017fc: DUP1 000017fd: PUSH1 0x1d 000017ff: DUP2 00001800: MSTORE 00001801: PUSH1 0x20 00001803: ADD 00001804: PUSH32 0x736574496e746572657374526174654d6f64656c286164647265737329000000 00001825: DUP2 00001826: MSTORE 00001827: POP 00001828: PUSH2 0x26fb 0000182b: JUMP 0000182c: JUMPDEST 0000182d: PUSH2 0x1834 00001830: PUSH2 0x1976 00001833: JUMP 00001834: JUMPDEST 00001835: POP 00001836: PUSH2 0x0afd 00001839: DUP2 0000183a: PUSH2 0x3773 0000183d: JUMP 0000183e: JUMPDEST 0000183f: PUSH1 0xcb 00001841: DUP1 00001842: SLOAD 00001843: PUSH2 0x0993 00001846: SWAP1 00001847: PUSH2 0x4a65 0000184a: JUMP 0000184b: JUMPDEST 0000184c: PUSH1 0x00 0000184e: PUSH2 0x0ae6 00001851: DUP3 00001852: PUSH2 0x25ae 00001855: JUMP 00001856: JUMPDEST 00001857: PUSH1 0xc9 00001859: SLOAD 0000185a: PUSH1 0x00 0000185c: SWAP1 0000185d: PUSH1 0xff 0000185f: AND 00001860: PUSH2 0x187b 00001863: JUMPI 00001864: PUSH1 0x40 00001866: MLOAD 00001867: PUSH3 0x461bcd 0000186b: PUSH1 0xe5 0000186d: SHL 0000186e: DUP2 0000186f: MSTORE 00001870: PUSH1 0x04 00001872: ADD 00001873: PUSH2 0x0a36 00001876: SWAP1 00001877: PUSH2 0x4a9f 0000187a: JUMP 0000187b: JUMPDEST 0000187c: PUSH1 0xc9 0000187e: DUP1 0000187f: SLOAD 00001880: PUSH1 0xff 00001882: NOT 00001883: AND 00001884: SWAP1 00001885: SSTORE 00001886: PUSH2 0x188d 00001889: PUSH2 0x1976 0000188c: JUMP 0000188d: JUMPDEST 0000188e: POP 0000188f: PUSH2 0x1642 00001892: CALLER 00001893: CALLER 00001894: DUP5 00001895: PUSH2 0x2bf3 00001898: JUMP 00001899: JUMPDEST 0000189a: PUSH1 0x00 0000189c: PUSH2 0x18a4 0000189f: DUP4 000018a0: PUSH2 0x2229 000018a3: JUMP 000018a4: JUMPDEST 000018a5: CALLER 000018a6: PUSH1 0x00 000018a8: DUP2 000018a9: DUP2 000018aa: MSTORE 000018ab: PUSH1 0xd8 000018ad: PUSH1 0x20 000018af: SWAP1 000018b0: DUP2 000018b1: MSTORE 000018b2: PUSH1 0x40 000018b4: DUP1 000018b5: DUP4 000018b6: KECCAK256 000018b7: PUSH1 0x01 000018b9: PUSH1 0x01 000018bb: PUSH1 0xa0 000018bd: SHL 000018be: SUB 000018bf: DUP9 000018c0: AND 000018c1: DUP5 000018c2: MSTORE 000018c3: SWAP1 000018c4: SWAP2 000018c5: MSTORE 000018c6: SWAP1 000018c7: KECCAK256 000018c8: SLOAD 000018c9: DUP4 000018ca: DUP2 000018cb: LT 000018cc: ISZERO 000018cd: PUSH2 0x1918 000018d0: JUMPI 000018d1: PUSH1 0x40 000018d3: MLOAD 000018d4: PUSH3 0x461bcd 000018d8: PUSH1 0xe5 000018da: SHL 000018db: DUP2 000018dc: MSTORE 000018dd: PUSH1 0x20 000018df: PUSH1 0x04 000018e1: DUP3 000018e2: ADD 000018e3: MSTORE 000018e4: PUSH1 0x1e 000018e6: PUSH1 0x24 000018e8: DUP3 000018e9: ADD 000018ea: MSTORE 000018eb: PUSH32 0x64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000 0000190c: PUSH1 0x44 0000190e: DUP3 0000190f: ADD 00001910: MSTORE 00001911: PUSH1 0x64 00001913: ADD 00001914: PUSH2 0x0a36 00001917: JUMP 00001918: JUMPDEST 00001919: PUSH1 0x01 0000191b: PUSH1 0x01 0000191d: PUSH1 0xa0 0000191f: SHL 00001920: SUB 00001921: DUP3 00001922: DUP2 00001923: AND 00001924: PUSH1 0x00 00001926: DUP2 00001927: DUP2 00001928: MSTORE 00001929: PUSH1 0xd8 0000192b: PUSH1 0x20 0000192d: SWAP1 0000192e: DUP2 0000192f: MSTORE 00001930: PUSH1 0x40 00001932: DUP1 00001933: DUP4 00001934: KECCAK256 00001935: SWAP5 00001936: DUP11 00001937: AND 00001938: DUP1 00001939: DUP5 0000193a: MSTORE 0000193b: SWAP5 0000193c: DUP3 0000193d: MSTORE 0000193e: SWAP2 0000193f: DUP3 00001940: SWAP1 00001941: KECCAK256 00001942: SWAP5 00001943: DUP9 00001944: SWAP1 00001945: SUB 00001946: SWAP5 00001947: DUP6 00001948: SWAP1 00001949: SSTORE 0000194a: SWAP1 0000194b: MLOAD 0000194c: DUP5 0000194d: DUP2 0000194e: MSTORE 0000194f: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00001970: SWAP2 00001971: ADD 00001972: PUSH2 0x1099 00001975: JUMP 00001976: JUMPDEST 00001977: PUSH1 0x00 00001979: DUP1 0000197a: PUSH2 0x1981 0000197d: PUSH2 0x1e72 00001980: JUMP 00001981: JUMPDEST 00001982: PUSH1 0xd1 00001984: SLOAD 00001985: SWAP1 00001986: SWAP2 00001987: POP 00001988: DUP2 00001989: DUP2 0000198a: SUB 0000198b: PUSH2 0x1997 0000198e: JUMPI 0000198f: PUSH1 0x00 00001991: SWAP3 00001992: POP 00001993: POP 00001994: POP 00001995: SWAP1 00001996: JUMP 00001997: JUMPDEST 00001998: PUSH1 0x00 0000199a: PUSH2 0x19a1 0000199d: PUSH2 0x303a 000019a0: JUMP 000019a1: JUMPDEST 000019a2: PUSH1 0xd3 000019a4: SLOAD 000019a5: PUSH1 0xd4 000019a7: SLOAD 000019a8: PUSH1 0xd2 000019aa: SLOAD 000019ab: PUSH1 0xce 000019ad: SLOAD 000019ae: PUSH1 0xd6 000019b0: SLOAD 000019b1: PUSH1 0x40 000019b3: MLOAD 000019b4: PUSH4 0x01cee29d 000019b9: PUSH1 0xe2 000019bb: SHL 000019bc: DUP2 000019bd: MSTORE 000019be: PUSH1 0x04 000019c0: DUP2 000019c1: ADD 000019c2: DUP8 000019c3: SWAP1 000019c4: MSTORE 000019c5: PUSH1 0x24 000019c7: DUP2 000019c8: ADD 000019c9: DUP7 000019ca: SWAP1 000019cb: MSTORE 000019cc: PUSH1 0x44 000019ce: DUP2 000019cf: ADD 000019d0: DUP6 000019d1: SWAP1 000019d2: MSTORE 000019d3: PUSH1 0x64 000019d5: DUP2 000019d6: ADD 000019d7: SWAP2 000019d8: SWAP1 000019d9: SWAP2 000019da: MSTORE 000019db: SWAP5 000019dc: SWAP6 000019dd: POP 000019de: SWAP3 000019df: SWAP4 000019e0: SWAP2 000019e1: SWAP3 000019e2: SWAP1 000019e3: SWAP2 000019e4: PUSH1 0x00 000019e6: SWAP2 000019e7: PUSH1 0x01 000019e9: PUSH1 0x01 000019eb: PUSH1 0xa0 000019ed: SHL 000019ee: SUB 000019ef: AND 000019f0: SWAP1 000019f1: PUSH4 0x073b8a74 000019f6: SWAP1 000019f7: PUSH1 0x84 000019f9: ADD 000019fa: PUSH1 0x20 000019fc: PUSH1 0x40 000019fe: MLOAD 000019ff: DUP1 00001a00: DUP4 00001a01: SUB 00001a02: DUP2 00001a03: DUP7 00001a04: GAS 00001a05: STATICCALL 00001a06: ISZERO 00001a07: DUP1 00001a08: ISZERO 00001a09: PUSH2 0x1a16 00001a0c: JUMPI 00001a0d: RETURNDATASIZE 00001a0e: PUSH1 0x00 00001a10: DUP1 00001a11: RETURNDATACOPY 00001a12: RETURNDATASIZE 00001a13: PUSH1 0x00 00001a15: REVERT 00001a16: JUMPDEST 00001a17: POP 00001a18: POP 00001a19: POP 00001a1a: POP 00001a1b: PUSH1 0x40 00001a1d: MLOAD 00001a1e: RETURNDATASIZE 00001a1f: PUSH1 0x1f 00001a21: NOT 00001a22: PUSH1 0x1f 00001a24: DUP3 00001a25: ADD 00001a26: AND 00001a27: DUP3 00001a28: ADD 00001a29: DUP1 00001a2a: PUSH1 0x40 00001a2c: MSTORE 00001a2d: POP 00001a2e: DUP2 00001a2f: ADD 00001a30: SWAP1 00001a31: PUSH2 0x1a3a 00001a34: SWAP2 00001a35: SWAP1 00001a36: PUSH2 0x4ac3 00001a39: JUMP 00001a3a: JUMPDEST 00001a3b: SWAP1 00001a3c: POP 00001a3d: PUSH32 0x0000000000000000000000000000000000000000000000000000048c27395000 00001a5e: DUP2 00001a5f: GT 00001a60: ISZERO 00001a61: PUSH2 0x1aac 00001a64: JUMPI 00001a65: PUSH1 0x40 00001a67: MLOAD 00001a68: PUSH3 0x461bcd 00001a6c: PUSH1 0xe5 00001a6e: SHL 00001a6f: DUP2 00001a70: MSTORE 00001a71: PUSH1 0x20 00001a73: PUSH1 0x04 00001a75: DUP3 00001a76: ADD 00001a77: MSTORE 00001a78: PUSH1 0x1c 00001a7a: PUSH1 0x24 00001a7c: DUP3 00001a7d: ADD 00001a7e: MSTORE 00001a7f: PUSH32 0x626f72726f772072617465206973206162737572646c79206869676800000000 00001aa0: PUSH1 0x44 00001aa2: DUP3 00001aa3: ADD 00001aa4: MSTORE 00001aa5: PUSH1 0x64 00001aa7: ADD 00001aa8: PUSH2 0x0a36 00001aab: JUMP 00001aac: JUMPDEST 00001aad: PUSH1 0x00 00001aaf: PUSH2 0x1ab8 00001ab2: DUP8 00001ab3: DUP10 00001ab4: PUSH2 0x4b05 00001ab7: JUMP 00001ab8: JUMPDEST 00001ab9: SWAP1 00001aba: POP 00001abb: PUSH1 0x00 00001abd: PUSH2 0x1ad4 00001ac0: PUSH1 0x40 00001ac2: MLOAD 00001ac3: DUP1 00001ac4: PUSH1 0x20 00001ac6: ADD 00001ac7: PUSH1 0x40 00001ac9: MSTORE 00001aca: DUP1 00001acb: DUP6 00001acc: DUP2 00001acd: MSTORE 00001ace: POP 00001acf: DUP4 00001ad0: PUSH2 0x38b5 00001ad3: JUMP 00001ad4: JUMPDEST 00001ad5: SWAP1 00001ad6: POP 00001ad7: PUSH1 0x00 00001ad9: PUSH2 0x1ae2 00001adc: DUP3 00001add: DUP9 00001ade: PUSH2 0x3022 00001ae1: JUMP 00001ae2: JUMPDEST 00001ae3: SWAP1 00001ae4: POP 00001ae5: PUSH1 0x00 00001ae7: PUSH2 0x1af0 00001aea: DUP9 00001aeb: DUP4 00001aec: PUSH2 0x4af2 00001aef: JUMP 00001af0: JUMPDEST 00001af1: SWAP1 00001af2: POP 00001af3: PUSH1 0x00 00001af5: PUSH2 0x1b0f 00001af8: PUSH1 0x40 00001afa: MLOAD 00001afb: DUP1 00001afc: PUSH1 0x20 00001afe: ADD 00001aff: PUSH1 0x40 00001b01: MSTORE 00001b02: DUP1 00001b03: PUSH1 0xd0 00001b05: SLOAD 00001b06: DUP2 00001b07: MSTORE 00001b08: POP 00001b09: DUP5 00001b0a: DUP11 00001b0b: PUSH2 0x38e6 00001b0e: JUMP 00001b0f: JUMPDEST 00001b10: SWAP1 00001b11: POP 00001b12: PUSH1 0x00 00001b14: PUSH2 0x1b1e 00001b17: DUP6 00001b18: DUP10 00001b19: DUP11 00001b1a: PUSH2 0x38e6 00001b1d: JUMP 00001b1e: JUMPDEST 00001b1f: PUSH1 0xd1 00001b21: DUP15 00001b22: SWAP1 00001b23: SSTORE 00001b24: PUSH1 0xd2 00001b26: DUP2 00001b27: SWAP1 00001b28: SSTORE 00001b29: PUSH1 0xd3 00001b2b: DUP5 00001b2c: SWAP1 00001b2d: SSTORE 00001b2e: PUSH1 0xd4 00001b30: DUP4 00001b31: SWAP1 00001b32: SSTORE 00001b33: PUSH1 0xdc 00001b35: SLOAD 00001b36: PUSH1 0xdd 00001b38: SLOAD 00001b39: SWAP2 00001b3a: SWAP3 00001b3b: POP 00001b3c: SWAP1 00001b3d: PUSH2 0x1b46 00001b40: SWAP1 00001b41: DUP16 00001b42: PUSH2 0x4b05 00001b45: JUMP 00001b46: JUMPDEST 00001b47: LT 00001b48: PUSH2 0x1b6f 00001b4b: JUMPI 00001b4c: PUSH1 0xdd 00001b4e: DUP14 00001b4f: SWAP1 00001b50: SSTORE 00001b51: DUP2 00001b52: DUP12 00001b53: LT 00001b54: ISZERO 00001b55: PUSH2 0x1b66 00001b58: JUMPI 00001b59: PUSH2 0x1b61 00001b5c: DUP12 00001b5d: PUSH2 0x20ad 00001b60: JUMP 00001b61: JUMPDEST 00001b62: PUSH2 0x1b6f 00001b65: JUMP 00001b66: JUMPDEST 00001b67: PUSH2 0x1b6f 00001b6a: DUP3 00001b6b: PUSH2 0x20ad 00001b6e: JUMP 00001b6f: JUMPDEST 00001b70: PUSH1 0x40 00001b72: DUP1 00001b73: MLOAD 00001b74: DUP13 00001b75: DUP2 00001b76: MSTORE 00001b77: PUSH1 0x20 00001b79: DUP2 00001b7a: ADD 00001b7b: DUP7 00001b7c: SWAP1 00001b7d: MSTORE 00001b7e: SWAP1 00001b7f: DUP2 00001b80: ADD 00001b81: DUP3 00001b82: SWAP1 00001b83: MSTORE 00001b84: PUSH1 0x60 00001b86: DUP2 00001b87: ADD 00001b88: DUP5 00001b89: SWAP1 00001b8a: MSTORE 00001b8b: PUSH32 0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04 00001bac: SWAP1 00001bad: PUSH1 0x80 00001baf: ADD 00001bb0: PUSH1 0x40 00001bb2: MLOAD 00001bb3: DUP1 00001bb4: SWAP2 00001bb5: SUB 00001bb6: SWAP1 00001bb7: LOG1 00001bb8: PUSH1 0x00 00001bba: SWAP14 00001bbb: POP 00001bbc: POP 00001bbd: POP 00001bbe: POP 00001bbf: POP 00001bc0: POP 00001bc1: POP 00001bc2: POP 00001bc3: POP 00001bc4: POP 00001bc5: POP 00001bc6: POP 00001bc7: POP 00001bc8: POP 00001bc9: SWAP1 00001bca: JUMP 00001bcb: JUMPDEST 00001bcc: PUSH1 0xc9 00001bce: SLOAD 00001bcf: PUSH1 0x00 00001bd1: SWAP1 00001bd2: PUSH1 0xff 00001bd4: AND 00001bd5: PUSH2 0x1bf0 00001bd8: JUMPI 00001bd9: PUSH1 0x40 00001bdb: MLOAD 00001bdc: PUSH3 0x461bcd 00001be0: PUSH1 0xe5 00001be2: SHL 00001be3: DUP2 00001be4: MSTORE 00001be5: PUSH1 0x04 00001be7: ADD 00001be8: PUSH2 0x0a36 00001beb: SWAP1 00001bec: PUSH2 0x4a9f 00001bef: JUMP 00001bf0: JUMPDEST 00001bf1: PUSH1 0xc9 00001bf3: DUP1 00001bf4: SLOAD 00001bf5: PUSH1 0xff 00001bf7: NOT 00001bf8: AND 00001bf9: SWAP1 00001bfa: SSTORE 00001bfb: PUSH2 0x1c06 00001bfe: CALLER 00001bff: DUP1 00001c00: DUP6 00001c01: DUP6 00001c02: PUSH2 0x2df8 00001c05: JUMP 00001c06: JUMPDEST 00001c07: POP 00001c08: PUSH1 0x01 00001c0a: PUSH1 0xc9 00001c0c: DUP1 00001c0d: SLOAD 00001c0e: PUSH1 0xff 00001c10: NOT 00001c11: AND 00001c12: PUSH1 0x01 00001c14: OR 00001c15: SWAP1 00001c16: SSTORE 00001c17: SWAP3 00001c18: SWAP2 00001c19: POP 00001c1a: POP 00001c1b: JUMP 00001c1c: JUMPDEST 00001c1d: PUSH1 0xce 00001c1f: SLOAD 00001c20: PUSH1 0x00 00001c22: SWAP1 00001c23: PUSH1 0x01 00001c25: PUSH1 0x01 00001c27: PUSH1 0xa0 00001c29: SHL 00001c2a: SUB 00001c2b: AND 00001c2c: PUSH4 0x0cde8d1c 00001c31: PUSH2 0x1c38 00001c34: PUSH2 0x303a 00001c37: JUMP 00001c38: JUMPDEST 00001c39: PUSH1 0xd3 00001c3b: SLOAD 00001c3c: PUSH1 0xd4 00001c3e: SLOAD 00001c3f: PUSH1 0xd0 00001c41: SLOAD 00001c42: PUSH1 0xd6 00001c44: SLOAD 00001c45: PUSH1 0x40 00001c47: MLOAD 00001c48: PUSH1 0x01 00001c4a: PUSH1 0x01 00001c4c: PUSH1 0xe0 00001c4e: SHL 00001c4f: SUB 00001c50: NOT 00001c51: PUSH1 0xe0 00001c53: DUP9 00001c54: SWAP1 00001c55: SHL 00001c56: AND 00001c57: DUP2 00001c58: MSTORE 00001c59: PUSH1 0x04 00001c5b: DUP2 00001c5c: ADD 00001c5d: SWAP6 00001c5e: SWAP1 00001c5f: SWAP6 00001c60: MSTORE 00001c61: PUSH1 0x24 00001c63: DUP6 00001c64: ADD 00001c65: SWAP4 00001c66: SWAP1 00001c67: SWAP4 00001c68: MSTORE 00001c69: PUSH1 0x44 00001c6b: DUP5 00001c6c: ADD 00001c6d: SWAP2 00001c6e: SWAP1 00001c6f: SWAP2 00001c70: MSTORE 00001c71: PUSH1 0x64 00001c73: DUP4 00001c74: ADD 00001c75: MSTORE 00001c76: PUSH1 0x84 00001c78: DUP3 00001c79: ADD 00001c7a: MSTORE 00001c7b: PUSH1 0xa4 00001c7d: ADD 00001c7e: JUMPDEST 00001c7f: PUSH1 0x20 00001c81: PUSH1 0x40 00001c83: MLOAD 00001c84: DUP1 00001c85: DUP4 00001c86: SUB 00001c87: DUP2 00001c88: DUP7 00001c89: GAS 00001c8a: STATICCALL 00001c8b: ISZERO 00001c8c: DUP1 00001c8d: ISZERO 00001c8e: PUSH2 0x1c9b 00001c91: JUMPI 00001c92: RETURNDATASIZE 00001c93: PUSH1 0x00 00001c95: DUP1 00001c96: RETURNDATACOPY 00001c97: RETURNDATASIZE 00001c98: PUSH1 0x00 00001c9a: REVERT 00001c9b: JUMPDEST 00001c9c: POP 00001c9d: POP 00001c9e: POP 00001c9f: POP 00001ca0: PUSH1 0x40 00001ca2: MLOAD 00001ca3: RETURNDATASIZE 00001ca4: PUSH1 0x1f 00001ca6: NOT 00001ca7: PUSH1 0x1f 00001ca9: DUP3 00001caa: ADD 00001cab: AND 00001cac: DUP3 00001cad: ADD 00001cae: DUP1 00001caf: PUSH1 0x40 00001cb1: MSTORE 00001cb2: POP 00001cb3: DUP2 00001cb4: ADD 00001cb5: SWAP1 00001cb6: PUSH2 0x0bca 00001cb9: SWAP2 00001cba: SWAP1 00001cbb: PUSH2 0x4ac3 00001cbe: JUMP 00001cbf: JUMPDEST 00001cc0: PUSH1 0xc9 00001cc2: SLOAD 00001cc3: PUSH1 0xff 00001cc5: AND 00001cc6: PUSH2 0x1ce1 00001cc9: JUMPI 00001cca: PUSH1 0x40 00001ccc: MLOAD 00001ccd: PUSH3 0x461bcd 00001cd1: PUSH1 0xe5 00001cd3: SHL 00001cd4: DUP2 00001cd5: MSTORE 00001cd6: PUSH1 0x04 00001cd8: ADD 00001cd9: PUSH2 0x0a36 00001cdc: SWAP1 00001cdd: PUSH2 0x4a9f 00001ce0: JUMP 00001ce1: JUMPDEST 00001ce2: PUSH1 0xc9 00001ce4: DUP1 00001ce5: SLOAD 00001ce6: PUSH1 0xff 00001ce8: NOT 00001ce9: AND 00001cea: SWAP1 00001ceb: SSTORE 00001cec: PUSH2 0x1cf7 00001cef: CALLER 00001cf0: DUP5 00001cf1: DUP5 00001cf2: DUP5 00001cf3: PUSH2 0x3907 00001cf6: JUMP 00001cf7: JUMPDEST 00001cf8: POP 00001cf9: POP 00001cfa: PUSH1 0xc9 00001cfc: DUP1 00001cfd: SLOAD 00001cfe: PUSH1 0xff 00001d00: NOT 00001d01: AND 00001d02: PUSH1 0x01 00001d04: OR 00001d05: SWAP1 00001d06: SSTORE 00001d07: POP 00001d08: JUMP 00001d09: JUMPDEST 00001d0a: PUSH1 0xc9 00001d0c: SLOAD 00001d0d: PUSH1 0x00 00001d0f: SWAP1 00001d10: PUSH1 0xff 00001d12: AND 00001d13: PUSH2 0x1d2e 00001d16: JUMPI 00001d17: PUSH1 0x40 00001d19: MLOAD 00001d1a: PUSH3 0x461bcd 00001d1e: PUSH1 0xe5 00001d20: SHL 00001d21: DUP2 00001d22: MSTORE 00001d23: PUSH1 0x04 00001d25: ADD 00001d26: PUSH2 0x0a36 00001d29: SWAP1 00001d2a: PUSH2 0x4a9f 00001d2d: JUMP 00001d2e: JUMPDEST 00001d2f: PUSH1 0xc9 00001d31: DUP1 00001d32: SLOAD 00001d33: PUSH1 0xff 00001d35: NOT 00001d36: AND 00001d37: SWAP1 00001d38: SSTORE 00001d39: PUSH2 0x1d40 00001d3c: PUSH2 0x1976 00001d3f: JUMP 00001d40: JUMPDEST 00001d41: POP 00001d42: PUSH2 0x1d49 00001d45: PUSH2 0x261e 00001d48: JUMP 00001d49: JUMPDEST 00001d4a: SWAP1 00001d4b: POP 00001d4c: PUSH1 0xc9 00001d4e: DUP1 00001d4f: SLOAD 00001d50: PUSH1 0xff 00001d52: NOT 00001d53: AND 00001d54: PUSH1 0x01 00001d56: OR 00001d57: SWAP1 00001d58: SSTORE 00001d59: SWAP1 00001d5a: JUMP 00001d5b: JUMPDEST 00001d5c: PUSH1 0x01 00001d5e: PUSH1 0x01 00001d60: PUSH1 0xa0 00001d62: SHL 00001d63: SUB 00001d64: DUP2 00001d65: AND 00001d66: PUSH1 0x00 00001d68: SWAP1 00001d69: DUP2 00001d6a: MSTORE 00001d6b: PUSH1 0xd7 00001d6d: PUSH1 0x20 00001d6f: MSTORE 00001d70: PUSH1 0x40 00001d72: DUP2 00001d73: KECCAK256 00001d74: SLOAD 00001d75: DUP2 00001d76: SWAP1 00001d77: DUP2 00001d78: SWAP1 00001d79: DUP2 00001d7a: SWAP1 00001d7b: DUP2 00001d7c: SWAP1 00001d7d: PUSH2 0x1d85 00001d80: DUP8 00001d81: PUSH2 0x25ae 00001d84: JUMP 00001d85: JUMPDEST 00001d86: PUSH2 0x1d8d 00001d89: PUSH2 0x261e 00001d8c: JUMP 00001d8d: JUMPDEST 00001d8e: SWAP4 00001d8f: POP 00001d90: SWAP4 00001d91: POP 00001d92: SWAP4 00001d93: POP 00001d94: SWAP4 00001d95: POP 00001d96: SWAP2 00001d97: SWAP4 00001d98: POP 00001d99: SWAP2 00001d9a: SWAP4 00001d9b: JUMP 00001d9c: JUMPDEST 00001d9d: PUSH1 0xc9 00001d9f: SLOAD 00001da0: PUSH1 0x00 00001da2: SWAP1 00001da3: PUSH1 0xff 00001da5: AND 00001da6: PUSH2 0x1dc1 00001da9: JUMPI 00001daa: PUSH1 0x40 00001dac: MLOAD 00001dad: PUSH3 0x461bcd 00001db1: PUSH1 0xe5 00001db3: SHL 00001db4: DUP2 00001db5: MSTORE 00001db6: PUSH1 0x04 00001db8: ADD 00001db9: PUSH2 0x0a36 00001dbc: SWAP1 00001dbd: PUSH2 0x4a9f 00001dc0: JUMP 00001dc1: JUMPDEST 00001dc2: PUSH1 0xc9 00001dc4: DUP1 00001dc5: SLOAD 00001dc6: PUSH1 0xff 00001dc8: NOT 00001dc9: AND 00001dca: SWAP1 00001dcb: SSTORE 00001dcc: PUSH2 0x1dd3 00001dcf: PUSH2 0x1976 00001dd2: JUMP 00001dd3: JUMPDEST 00001dd4: POP 00001dd5: PUSH2 0x1642 00001dd8: CALLER 00001dd9: CALLER 00001dda: DUP5 00001ddb: PUSH2 0x3287 00001dde: JUMP 00001ddf: JUMPDEST 00001de0: PUSH1 0xc9 00001de2: SLOAD 00001de3: PUSH1 0x00 00001de5: SWAP1 00001de6: PUSH1 0xff 00001de8: AND 00001de9: PUSH2 0x1e04 00001dec: JUMPI 00001ded: PUSH1 0x40 00001def: MLOAD 00001df0: PUSH3 0x461bcd 00001df4: PUSH1 0xe5 00001df6: SHL 00001df7: DUP2 00001df8: MSTORE 00001df9: PUSH1 0x04 00001dfb: ADD 00001dfc: PUSH2 0x0a36 00001dff: SWAP1 00001e00: PUSH2 0x4a9f 00001e03: JUMP 00001e04: JUMPDEST 00001e05: PUSH1 0xc9 00001e07: DUP1 00001e08: SLOAD 00001e09: PUSH1 0xff 00001e0b: NOT 00001e0c: AND 00001e0d: SWAP1 00001e0e: SSTORE 00001e0f: PUSH2 0x1e16 00001e12: PUSH2 0x1976 00001e15: JUMP 00001e16: JUMPDEST 00001e17: POP 00001e18: PUSH2 0x1642 00001e1b: CALLER 00001e1c: CALLER 00001e1d: DUP5 00001e1e: PUSH1 0x00 00001e20: PUSH2 0x28ba 00001e23: JUMP 00001e24: JUMPDEST 00001e25: PUSH1 0xc9 00001e27: SLOAD 00001e28: PUSH1 0x00 00001e2a: SWAP1 00001e2b: PUSH1 0xff 00001e2d: AND 00001e2e: PUSH2 0x1e49 00001e31: JUMPI 00001e32: PUSH1 0x40 00001e34: MLOAD 00001e35: PUSH3 0x461bcd 00001e39: PUSH1 0xe5 00001e3b: SHL 00001e3c: DUP2 00001e3d: MSTORE 00001e3e: PUSH1 0x04 00001e40: ADD 00001e41: PUSH2 0x0a36 00001e44: SWAP1 00001e45: PUSH2 0x4a9f 00001e48: JUMP 00001e49: JUMPDEST 00001e4a: PUSH1 0xc9 00001e4c: DUP1 00001e4d: SLOAD 00001e4e: PUSH1 0xff 00001e50: NOT 00001e51: AND 00001e52: SWAP1 00001e53: SSTORE 00001e54: PUSH2 0x1e5c 00001e57: DUP4 00001e58: PUSH2 0x2829 00001e5b: JUMP 00001e5c: JUMPDEST 00001e5d: PUSH2 0x1e64 00001e60: PUSH2 0x1976 00001e63: JUMP 00001e64: JUMPDEST 00001e65: POP 00001e66: PUSH2 0x0e53 00001e69: DUP4 00001e6a: CALLER 00001e6b: PUSH1 0x00 00001e6d: DUP6 00001e6e: PUSH2 0x28ba 00001e71: JUMP 00001e72: JUMPDEST 00001e73: PUSH1 0x00 00001e75: PUSH2 0x0bca 00001e78: PUSH32 0x0000000000000000000000000000000000000000000000000000013f000020a5 00001e99: PUSH4 0xffffffff 00001e9e: AND 00001e9f: JUMP 00001ea0: JUMPDEST 00001ea1: PUSH1 0xdb 00001ea3: SLOAD 00001ea4: PUSH1 0x01 00001ea6: PUSH1 0x01 00001ea8: PUSH1 0xa0 00001eaa: SHL 00001eab: SUB 00001eac: AND 00001ead: CALLER 00001eae: EQ 00001eaf: PUSH2 0x1f0e 00001eb2: JUMPI 00001eb3: PUSH1 0x40 00001eb5: MLOAD 00001eb6: PUSH3 0x461bcd 00001eba: PUSH1 0xe5 00001ebc: SHL 00001ebd: DUP2 00001ebe: MSTORE 00001ebf: PUSH1 0x20 00001ec1: PUSH1 0x04 00001ec3: DUP3 00001ec4: ADD 00001ec5: MSTORE 00001ec6: PUSH1 0x2b 00001ec8: PUSH1 0x24 00001eca: DUP3 00001ecb: ADD 00001ecc: MSTORE 00001ecd: PUSH32 0x6f6e6c792073686f727466616c6c20636f6e74726163742063616e2075706461 00001eee: PUSH1 0x44 00001ef0: DUP3 00001ef1: ADD 00001ef2: MSTORE 00001ef3: PUSH11 0x1d1948189859081919589d 00001eff: PUSH1 0xaa 00001f01: SHL 00001f02: PUSH1 0x64 00001f04: DUP3 00001f05: ADD 00001f06: MSTORE 00001f07: PUSH1 0x84 00001f09: ADD 00001f0a: PUSH2 0x0a36 00001f0d: JUMP 00001f0e: JUMPDEST 00001f0f: PUSH1 0xd6 00001f11: SLOAD 00001f12: DUP2 00001f13: GT 00001f14: ISZERO 00001f15: PUSH2 0x1f72 00001f18: JUMPI 00001f19: PUSH1 0x40 00001f1b: MLOAD 00001f1c: PUSH3 0x461bcd 00001f20: PUSH1 0xe5 00001f22: SHL 00001f23: DUP2 00001f24: MSTORE 00001f25: PUSH1 0x20 00001f27: PUSH1 0x04 00001f29: DUP3 00001f2a: ADD 00001f2b: MSTORE 00001f2c: PUSH1 0x29 00001f2e: PUSH1 0x24 00001f30: DUP3 00001f31: ADD 00001f32: MSTORE 00001f33: PUSH32 0x6d6f7265207468616e206261642064656274207265636f76657265642066726f 00001f54: PUSH1 0x44 00001f56: DUP3 00001f57: ADD 00001f58: MSTORE 00001f59: PUSH9 0x369030bab1ba34b7b7 00001f63: PUSH1 0xb9 00001f65: SHL 00001f66: PUSH1 0x64 00001f68: DUP3 00001f69: ADD 00001f6a: MSTORE 00001f6b: PUSH1 0x84 00001f6d: ADD 00001f6e: PUSH2 0x0a36 00001f71: JUMP 00001f72: JUMPDEST 00001f73: PUSH1 0xd6 00001f75: SLOAD 00001f76: PUSH1 0x00 00001f78: PUSH2 0x1f81 00001f7b: DUP4 00001f7c: DUP4 00001f7d: PUSH2 0x4b05 00001f80: JUMP 00001f81: JUMPDEST 00001f82: PUSH1 0xd6 00001f84: DUP2 00001f85: SWAP1 00001f86: SSTORE 00001f87: PUSH1 0x40 00001f89: DUP1 00001f8a: MLOAD 00001f8b: DUP5 00001f8c: DUP2 00001f8d: MSTORE 00001f8e: PUSH1 0x20 00001f90: DUP2 00001f91: ADD 00001f92: DUP4 00001f93: SWAP1 00001f94: MSTORE 00001f95: SWAP2 00001f96: SWAP3 00001f97: POP 00001f98: PUSH32 0x9e19ec7d2b8f8a94df8cc0072453ace318d221e3cbb2731d0eaa0baac856520f 00001fb9: SWAP2 00001fba: ADD 00001fbb: PUSH2 0x152a 00001fbe: JUMP 00001fbf: JUMPDEST 00001fc0: PUSH2 0x1fc7 00001fc3: PUSH2 0x2250 00001fc6: JUMP 00001fc7: JUMPDEST 00001fc8: PUSH1 0x65 00001fca: DUP1 00001fcb: SLOAD 00001fcc: PUSH1 0x01 00001fce: PUSH1 0x01 00001fd0: PUSH1 0xa0 00001fd2: SHL 00001fd3: SUB 00001fd4: DUP4 00001fd5: AND 00001fd6: PUSH1 0x01 00001fd8: PUSH1 0x01 00001fda: PUSH1 0xa0 00001fdc: SHL 00001fdd: SUB 00001fde: NOT 00001fdf: SWAP1 00001fe0: SWAP2 00001fe1: AND 00001fe2: DUP2 00001fe3: OR 00001fe4: SWAP1 00001fe5: SWAP2 00001fe6: SSTORE 00001fe7: PUSH2 0x1ff8 00001fea: PUSH1 0x33 00001fec: SLOAD 00001fed: PUSH1 0x01 00001fef: PUSH1 0x01 00001ff1: PUSH1 0xa0 00001ff3: SHL 00001ff4: SUB 00001ff5: AND 00001ff6: SWAP1 00001ff7: JUMP 00001ff8: JUMPDEST 00001ff9: PUSH1 0x01 00001ffb: PUSH1 0x01 00001ffd: PUSH1 0xa0 00001fff: SHL 00002000: SUB 00002001: AND 00002002: PUSH32 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700 00002023: PUSH1 0x40 00002025: MLOAD 00002026: PUSH1 0x40 00002028: MLOAD 00002029: DUP1 0000202a: SWAP2 0000202b: SUB 0000202c: SWAP1 0000202d: LOG3 0000202e: POP 0000202f: JUMP 00002030: JUMPDEST 00002031: PUSH1 0x00 00002033: PUSH2 0x2040 00002036: CALLER 00002037: DUP6 00002038: DUP6 00002039: DUP6 0000203a: PUSH1 0x00 0000203c: PUSH2 0x3692 0000203f: JUMP 00002040: JUMPDEST 00002041: POP 00002042: PUSH1 0x00 00002044: SWAP4 00002045: SWAP3 00002046: POP 00002047: POP 00002048: POP 00002049: JUMP 0000204a: JUMPDEST 0000204b: PUSH1 0xce 0000204d: SLOAD 0000204e: PUSH1 0x00 00002050: SWAP1 00002051: PUSH1 0x01 00002053: PUSH1 0x01 00002055: PUSH1 0xa0 00002057: SHL 00002058: SUB 00002059: AND 0000205a: PUSH4 0x073b8a74 0000205f: PUSH2 0x2066 00002062: PUSH2 0x303a 00002065: JUMP 00002066: JUMPDEST 00002067: PUSH1 0xd3 00002069: SLOAD 0000206a: PUSH1 0xd4 0000206c: SLOAD 0000206d: PUSH1 0xd6 0000206f: SLOAD 00002070: PUSH1 0x40 00002072: MLOAD 00002073: PUSH1 0x01 00002075: PUSH1 0x01 00002077: PUSH1 0xe0 00002079: SHL 0000207a: SUB 0000207b: NOT 0000207c: PUSH1 0xe0 0000207e: DUP8 0000207f: SWAP1 00002080: SHL 00002081: AND 00002082: DUP2 00002083: MSTORE 00002084: PUSH1 0x04 00002086: DUP2 00002087: ADD 00002088: SWAP5 00002089: SWAP1 0000208a: SWAP5 0000208b: MSTORE 0000208c: PUSH1 0x24 0000208e: DUP5 0000208f: ADD 00002090: SWAP3 00002091: SWAP1 00002092: SWAP3 00002093: MSTORE 00002094: PUSH1 0x44 00002096: DUP4 00002097: ADD 00002098: MSTORE 00002099: PUSH1 0x64 0000209b: DUP3 0000209c: ADD 0000209d: MSTORE 0000209e: PUSH1 0x84 000020a0: ADD 000020a1: PUSH2 0x1c7e 000020a4: JUMP 000020a5: JUMPDEST 000020a6: NUMBER 000020a7: SWAP1 000020a8: JUMP 000020a9: JUMPDEST 000020aa: TIMESTAMP 000020ab: SWAP1 000020ac: JUMP 000020ad: JUMPDEST 000020ae: DUP1 000020af: PUSH1 0x00 000020b1: SUB 000020b2: PUSH2 0x20b8 000020b5: JUMPI 000020b6: POP 000020b7: JUMP 000020b8: JUMPDEST 000020b9: PUSH1 0x00 000020bb: PUSH2 0x20c2 000020be: PUSH2 0x1e72 000020c1: JUMP 000020c2: JUMPDEST 000020c3: PUSH1 0xd1 000020c5: SLOAD 000020c6: EQ 000020c7: PUSH2 0x20e3 000020ca: JUMPI 000020cb: PUSH1 0x40 000020cd: MLOAD 000020ce: PUSH4 0x0dff50cb 000020d3: PUSH1 0xe4 000020d5: SHL 000020d6: DUP2 000020d7: MSTORE 000020d8: PUSH1 0x04 000020da: ADD 000020db: PUSH1 0x40 000020dd: MLOAD 000020de: DUP1 000020df: SWAP2 000020e0: SUB 000020e1: SWAP1 000020e2: REVERT 000020e3: JUMPDEST 000020e4: DUP2 000020e5: PUSH2 0x20ec 000020e8: PUSH2 0x303a 000020eb: JUMP 000020ec: JUMPDEST 000020ed: LT 000020ee: ISZERO 000020ef: PUSH2 0x210b 000020f2: JUMPI 000020f3: PUSH1 0x40 000020f5: MLOAD 000020f6: PUSH4 0x3345e999 000020fb: PUSH1 0xe0 000020fd: SHL 000020fe: DUP2 000020ff: MSTORE 00002100: PUSH1 0x04 00002102: ADD 00002103: PUSH1 0x40 00002105: MLOAD 00002106: DUP1 00002107: SWAP2 00002108: SUB 00002109: SWAP1 0000210a: REVERT 0000210b: JUMPDEST 0000210c: PUSH1 0xd4 0000210e: SLOAD 0000210f: DUP3 00002110: GT 00002111: ISZERO 00002112: PUSH2 0x212e 00002115: JUMPI 00002116: PUSH1 0x40 00002118: MLOAD 00002119: PUSH4 0x78d29805 0000211e: PUSH1 0xe1 00002120: SHL 00002121: DUP2 00002122: MSTORE 00002123: PUSH1 0x04 00002125: ADD 00002126: PUSH1 0x40 00002128: MLOAD 00002129: DUP1 0000212a: SWAP2 0000212b: SUB 0000212c: SWAP1 0000212d: REVERT 0000212e: JUMPDEST 0000212f: DUP2 00002130: PUSH1 0xd4 00002132: SLOAD 00002133: PUSH2 0x213c 00002136: SWAP2 00002137: SWAP1 00002138: PUSH2 0x4b05 0000213b: JUMP 0000213c: JUMPDEST 0000213d: PUSH1 0xd4 0000213f: DUP2 00002140: SWAP1 00002141: SSTORE 00002142: PUSH1 0xcc 00002144: SLOAD 00002145: SWAP1 00002146: SWAP2 00002147: POP 00002148: PUSH2 0x215f 0000214b: SWAP1 0000214c: PUSH2 0x0100 0000214f: SWAP1 00002150: DIV 00002151: PUSH1 0x01 00002153: PUSH1 0x01 00002155: PUSH1 0xa0 00002157: SHL 00002158: SUB 00002159: AND 0000215a: DUP4 0000215b: PUSH2 0x3cb1 0000215e: JUMP 0000215f: JUMPDEST 00002160: PUSH1 0xcc 00002162: SLOAD 00002163: PUSH1 0xcd 00002165: SLOAD 00002166: PUSH1 0xc9 00002168: SLOAD 00002169: PUSH1 0x40 0000216b: MLOAD 0000216c: PUSH4 0x05bebb3b 00002171: PUSH1 0xe2 00002173: SHL 00002174: DUP2 00002175: MSTORE 00002176: PUSH1 0x01 00002178: PUSH1 0x01 0000217a: PUSH1 0xa0 0000217c: SHL 0000217d: SUB 0000217e: PUSH2 0x0100 00002181: SWAP5 00002182: DUP6 00002183: SWAP1 00002184: DIV 00002185: DUP2 00002186: AND 00002187: SWAP5 00002188: PUSH4 0x16faecec 0000218d: SWAP5 0000218e: PUSH2 0x21a7 00002191: SWAP5 00002192: SWAP1 00002193: DUP4 00002194: AND 00002195: SWAP4 00002196: SWAP2 00002197: SWAP1 00002198: DIV 00002199: SWAP1 0000219a: SWAP2 0000219b: AND 0000219c: SWAP1 0000219d: PUSH1 0x00 0000219f: SWAP1 000021a0: PUSH1 0x04 000021a2: ADD 000021a3: PUSH2 0x4b18 000021a6: JUMP 000021a7: JUMPDEST 000021a8: PUSH1 0x00 000021aa: PUSH1 0x40 000021ac: MLOAD 000021ad: DUP1 000021ae: DUP4 000021af: SUB 000021b0: DUP2 000021b1: PUSH1 0x00 000021b3: DUP8 000021b4: DUP1 000021b5: EXTCODESIZE 000021b6: ISZERO 000021b7: DUP1 000021b8: ISZERO 000021b9: PUSH2 0x21c1 000021bc: JUMPI 000021bd: PUSH1 0x00 000021bf: DUP1 000021c0: REVERT 000021c1: JUMPDEST 000021c2: POP 000021c3: GAS 000021c4: CALL 000021c5: ISZERO 000021c6: DUP1 000021c7: ISZERO 000021c8: PUSH2 0x21d5 000021cb: JUMPI 000021cc: RETURNDATASIZE 000021cd: PUSH1 0x00 000021cf: DUP1 000021d0: RETURNDATACOPY 000021d1: RETURNDATASIZE 000021d2: PUSH1 0x00 000021d4: REVERT 000021d5: JUMPDEST 000021d6: POP 000021d7: POP 000021d8: PUSH1 0xcc 000021da: SLOAD 000021db: PUSH1 0x40 000021dd: DUP1 000021de: MLOAD 000021df: DUP7 000021e0: DUP2 000021e1: MSTORE 000021e2: PUSH1 0x20 000021e4: DUP2 000021e5: ADD 000021e6: DUP7 000021e7: SWAP1 000021e8: MSTORE 000021e9: PUSH2 0x0100 000021ec: SWAP1 000021ed: SWAP3 000021ee: DIV 000021ef: PUSH1 0x01 000021f1: PUSH1 0x01 000021f3: PUSH1 0xa0 000021f5: SHL 000021f6: SUB 000021f7: AND 000021f8: SWAP4 000021f9: POP 000021fa: PUSH32 0x9cc63bb4ef37ad6a5f5f657dfaf94865531d4234acbc431cc8ac035468f62720 0000221b: SWAP3 0000221c: POP 0000221d: ADD 0000221e: PUSH1 0x40 00002220: MLOAD 00002221: DUP1 00002222: SWAP2 00002223: SUB 00002224: SWAP1 00002225: LOG2 00002226: POP 00002227: POP 00002228: JUMP 00002229: JUMPDEST 0000222a: PUSH1 0x01 0000222c: PUSH1 0x01 0000222e: PUSH1 0xa0 00002230: SHL 00002231: SUB 00002232: DUP2 00002233: AND 00002234: PUSH2 0x0afd 00002237: JUMPI 00002238: PUSH1 0x40 0000223a: MLOAD 0000223b: PUSH4 0x42bcdf7f 00002240: PUSH1 0xe1 00002242: SHL 00002243: DUP2 00002244: MSTORE 00002245: PUSH1 0x04 00002247: ADD 00002248: PUSH1 0x40 0000224a: MLOAD 0000224b: DUP1 0000224c: SWAP2 0000224d: SUB 0000224e: SWAP1 0000224f: REVERT 00002250: JUMPDEST 00002251: PUSH1 0x33 00002253: SLOAD 00002254: PUSH1 0x01 00002256: PUSH1 0x01 00002258: PUSH1 0xa0 0000225a: SHL 0000225b: SUB 0000225c: AND 0000225d: CALLER 0000225e: EQ 0000225f: PUSH2 0x13c2 00002262: JUMPI 00002263: PUSH1 0x40 00002265: MLOAD 00002266: PUSH3 0x461bcd 0000226a: PUSH1 0xe5 0000226c: SHL 0000226d: DUP2 0000226e: MSTORE 0000226f: PUSH1 0x20 00002271: PUSH1 0x04 00002273: DUP3 00002274: ADD 00002275: DUP2 00002276: SWAP1 00002277: MSTORE 00002278: PUSH1 0x24 0000227a: DUP3 0000227b: ADD 0000227c: MSTORE 0000227d: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0000229e: PUSH1 0x44 000022a0: DUP3 000022a1: ADD 000022a2: MSTORE 000022a3: PUSH1 0x64 000022a5: ADD 000022a6: PUSH2 0x0a36 000022a9: JUMP 000022aa: JUMPDEST 000022ab: PUSH1 0x01 000022ad: PUSH1 0x01 000022af: PUSH1 0xa0 000022b1: SHL 000022b2: SUB 000022b3: DUP2 000022b4: AND 000022b5: PUSH2 0x230e 000022b8: JUMPI 000022b9: PUSH1 0x40 000022bb: MLOAD 000022bc: PUSH3 0x461bcd 000022c0: PUSH1 0xe5 000022c2: SHL 000022c3: DUP2 000022c4: MSTORE 000022c5: PUSH1 0x20 000022c7: PUSH1 0x04 000022c9: DUP3 000022ca: ADD 000022cb: MSTORE 000022cc: PUSH1 0x25 000022ce: PUSH1 0x24 000022d0: DUP3 000022d1: ADD 000022d2: MSTORE 000022d3: PUSH32 0x696e76616c696420616365737320636f6e74726f6c206d616e61676572206164 000022f4: PUSH1 0x44 000022f6: DUP3 000022f7: ADD 000022f8: MSTORE 000022f9: PUSH5 0x6472657373 000022ff: PUSH1 0xd8 00002301: SHL 00002302: PUSH1 0x64 00002304: DUP3 00002305: ADD 00002306: MSTORE 00002307: PUSH1 0x84 00002309: ADD 0000230a: PUSH2 0x0a36 0000230d: JUMP 0000230e: JUMPDEST 0000230f: PUSH1 0x97 00002311: DUP1 00002312: SLOAD 00002313: PUSH1 0x01 00002315: PUSH1 0x01 00002317: PUSH1 0xa0 00002319: SHL 0000231a: SUB 0000231b: DUP4 0000231c: DUP2 0000231d: AND 0000231e: PUSH1 0x01 00002320: PUSH1 0x01 00002322: PUSH1 0xa0 00002324: SHL 00002325: SUB 00002326: NOT 00002327: DUP4 00002328: AND 00002329: DUP2 0000232a: OR 0000232b: SWAP1 0000232c: SWAP4 0000232d: SSTORE 0000232e: PUSH1 0x40 00002330: DUP1 00002331: MLOAD 00002332: SWAP2 00002333: SWAP1 00002334: SWAP3 00002335: AND 00002336: DUP1 00002337: DUP3 00002338: MSTORE 00002339: PUSH1 0x20 0000233b: DUP3 0000233c: ADD 0000233d: SWAP4 0000233e: SWAP1 0000233f: SWAP4 00002340: MSTORE 00002341: PUSH32 0x66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0 00002362: SWAP2 00002363: ADD 00002364: JUMPDEST 00002365: PUSH1 0x40 00002367: MLOAD 00002368: DUP1 00002369: SWAP2 0000236a: SUB 0000236b: SWAP1 0000236c: LOG1 0000236d: POP 0000236e: POP 0000236f: JUMP 00002370: JUMPDEST 00002371: PUSH1 0xcd 00002373: SLOAD 00002374: PUSH1 0x40 00002376: MLOAD 00002377: PUSH4 0xeade3eed 0000237c: PUSH1 0xe0 0000237e: SHL 0000237f: DUP2 00002380: MSTORE 00002381: ADDRESS 00002382: PUSH1 0x04 00002384: DUP3 00002385: ADD 00002386: MSTORE 00002387: PUSH1 0x01 00002389: PUSH1 0x01 0000238b: PUSH1 0xa0 0000238d: SHL 0000238e: SUB 0000238f: DUP5 00002390: DUP2 00002391: AND 00002392: PUSH1 0x24 00002394: DUP4 00002395: ADD 00002396: MSTORE 00002397: PUSH1 0x00 00002399: SWAP3 0000239a: AND 0000239b: SWAP1 0000239c: PUSH4 0xeade3eed 000023a1: SWAP1 000023a2: PUSH1 0x44 000023a4: ADD 000023a5: PUSH1 0x00 000023a7: PUSH1 0x40 000023a9: MLOAD 000023aa: DUP1 000023ab: DUP4 000023ac: SUB 000023ad: DUP2 000023ae: PUSH1 0x00 000023b0: DUP8 000023b1: DUP1 000023b2: EXTCODESIZE 000023b3: ISZERO 000023b4: DUP1 000023b5: ISZERO 000023b6: PUSH2 0x23be 000023b9: JUMPI 000023ba: PUSH1 0x00 000023bc: DUP1 000023bd: REVERT 000023be: JUMPDEST 000023bf: POP 000023c0: GAS 000023c1: CALL 000023c2: ISZERO 000023c3: DUP1 000023c4: ISZERO 000023c5: PUSH2 0x23d2 000023c8: JUMPI 000023c9: RETURNDATASIZE 000023ca: PUSH1 0x00 000023cc: DUP1 000023cd: RETURNDATACOPY 000023ce: RETURNDATASIZE 000023cf: PUSH1 0x00 000023d1: REVERT 000023d2: JUMPDEST 000023d3: POP 000023d4: POP 000023d5: POP 000023d6: POP 000023d7: PUSH2 0x23de 000023da: PUSH2 0x1e72 000023dd: JUMP 000023de: JUMPDEST 000023df: PUSH1 0xd1 000023e1: SLOAD 000023e2: EQ 000023e3: PUSH2 0x23ff 000023e6: JUMPI 000023e7: PUSH1 0x40 000023e9: MLOAD 000023ea: PUSH4 0xc9021e2f 000023ef: PUSH1 0xe0 000023f1: SHL 000023f2: DUP2 000023f3: MSTORE 000023f4: PUSH1 0x04 000023f6: ADD 000023f7: PUSH1 0x40 000023f9: MLOAD 000023fa: DUP1 000023fb: SWAP2 000023fc: SUB 000023fd: SWAP1 000023fe: REVERT 000023ff: JUMPDEST 00002400: PUSH1 0x00 00002402: PUSH2 0x240a 00002405: DUP5 00002406: PUSH2 0x25ae 00002409: JUMP 0000240a: JUMPDEST 0000240b: SWAP1 0000240c: POP 0000240d: PUSH1 0x00 0000240f: DUP2 00002410: DUP5 00002411: LT 00002412: ISZERO 00002413: PUSH2 0x241c 00002416: JUMPI 00002417: DUP4 00002418: PUSH2 0x241e 0000241b: JUMP 0000241c: JUMPDEST 0000241d: DUP2 0000241e: JUMPDEST 0000241f: SWAP1 00002420: POP 00002421: PUSH1 0x00 00002423: PUSH2 0x242c 00002426: DUP8 00002427: DUP4 00002428: PUSH2 0x30cb 0000242b: JUMP 0000242c: JUMPDEST 0000242d: SWAP1 0000242e: POP 0000242f: PUSH1 0x00 00002431: PUSH2 0x243a 00002434: DUP3 00002435: DUP6 00002436: PUSH2 0x4b05 00002439: JUMP 0000243a: JUMPDEST 0000243b: SWAP1 0000243c: POP 0000243d: PUSH1 0x00 0000243f: DUP3 00002440: PUSH1 0xd3 00002442: SLOAD 00002443: PUSH2 0x244c 00002446: SWAP2 00002447: SWAP1 00002448: PUSH2 0x4b05 0000244b: JUMP 0000244c: JUMPDEST 0000244d: PUSH1 0x01 0000244f: PUSH1 0x01 00002451: PUSH1 0xa0 00002453: SHL 00002454: SUB 00002455: DUP10 00002456: DUP2 00002457: AND 00002458: PUSH1 0x00 0000245a: DUP2 0000245b: DUP2 0000245c: MSTORE 0000245d: PUSH1 0xd9 0000245f: PUSH1 0x20 00002461: SWAP1 00002462: DUP2 00002463: MSTORE 00002464: PUSH1 0x40 00002466: SWAP2 00002467: DUP3 00002468: SWAP1 00002469: KECCAK256 0000246a: DUP8 0000246b: DUP2 0000246c: SSTORE 0000246d: PUSH1 0xd2 0000246f: SLOAD 00002470: PUSH1 0x01 00002472: SWAP1 00002473: SWAP2 00002474: ADD 00002475: SSTORE 00002476: PUSH1 0xd3 00002478: DUP6 00002479: SWAP1 0000247a: SSTORE 0000247b: DUP2 0000247c: MLOAD 0000247d: DUP9 0000247e: DUP2 0000247f: MSTORE 00002480: SWAP1 00002481: DUP2 00002482: ADD 00002483: DUP8 00002484: SWAP1 00002485: MSTORE 00002486: SWAP1 00002487: DUP2 00002488: ADD 00002489: DUP5 0000248a: SWAP1 0000248b: MSTORE 0000248c: SWAP3 0000248d: SWAP4 0000248e: POP 0000248f: SWAP2 00002490: SWAP1 00002491: DUP12 00002492: AND 00002493: SWAP1 00002494: PUSH32 0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1 000024b5: SWAP1 000024b6: PUSH1 0x60 000024b8: ADD 000024b9: PUSH1 0x40 000024bb: MLOAD 000024bc: DUP1 000024bd: SWAP2 000024be: SUB 000024bf: SWAP1 000024c0: LOG3 000024c1: PUSH1 0xcd 000024c3: SLOAD 000024c4: PUSH1 0xd2 000024c6: SLOAD 000024c7: PUSH1 0x40 000024c9: MLOAD 000024ca: PUSH4 0x1ededc91 000024cf: PUSH1 0xe0 000024d1: SHL 000024d2: DUP2 000024d3: MSTORE 000024d4: ADDRESS 000024d5: PUSH1 0x04 000024d7: DUP3 000024d8: ADD 000024d9: MSTORE 000024da: PUSH1 0x01 000024dc: PUSH1 0x01 000024de: PUSH1 0xa0 000024e0: SHL 000024e1: SUB 000024e2: DUP13 000024e3: DUP2 000024e4: AND 000024e5: PUSH1 0x24 000024e7: DUP4 000024e8: ADD 000024e9: MSTORE 000024ea: DUP12 000024eb: DUP2 000024ec: AND 000024ed: PUSH1 0x44 000024ef: DUP4 000024f0: ADD 000024f1: MSTORE 000024f2: PUSH1 0x64 000024f4: DUP3 000024f5: ADD 000024f6: DUP8 000024f7: SWAP1 000024f8: MSTORE 000024f9: PUSH1 0x84 000024fb: DUP3 000024fc: ADD 000024fd: SWAP3 000024fe: SWAP1 000024ff: SWAP3 00002500: MSTORE 00002501: SWAP2 00002502: AND 00002503: SWAP1 00002504: PUSH4 0x1ededc91 00002509: SWAP1 0000250a: PUSH1 0xa4 0000250c: ADD 0000250d: PUSH1 0x00 0000250f: PUSH1 0x40 00002511: MLOAD 00002512: DUP1 00002513: DUP4 00002514: SUB 00002515: DUP2 00002516: PUSH1 0x00 00002518: DUP8 00002519: DUP1 0000251a: EXTCODESIZE 0000251b: ISZERO 0000251c: DUP1 0000251d: ISZERO 0000251e: PUSH2 0x2526 00002521: JUMPI 00002522: PUSH1 0x00 00002524: DUP1 00002525: REVERT 00002526: JUMPDEST 00002527: POP 00002528: GAS 00002529: CALL 0000252a: ISZERO 0000252b: DUP1 0000252c: ISZERO 0000252d: PUSH2 0x253a 00002530: JUMPI 00002531: RETURNDATASIZE 00002532: PUSH1 0x00 00002534: DUP1 00002535: RETURNDATACOPY 00002536: RETURNDATASIZE 00002537: PUSH1 0x00 00002539: REVERT 0000253a: JUMPDEST 0000253b: POP 0000253c: SWAP5 0000253d: SWAP12 0000253e: SWAP11 0000253f: POP 00002540: POP 00002541: POP 00002542: POP 00002543: POP 00002544: POP 00002545: POP 00002546: POP 00002547: POP 00002548: POP 00002549: POP 0000254a: JUMP 0000254b: JUMPDEST 0000254c: PUSH2 0x2554 0000254f: DUP2 00002550: PUSH2 0x2229 00002553: JUMP 00002554: JUMPDEST 00002555: PUSH1 0xcc 00002557: DUP1 00002558: SLOAD 00002559: PUSH1 0x01 0000255b: PUSH1 0x01 0000255d: PUSH1 0xa0 0000255f: SHL 00002560: SUB 00002561: DUP4 00002562: DUP2 00002563: AND 00002564: PUSH2 0x0100 00002567: DUP2 00002568: DUP2 00002569: MUL 0000256a: PUSH2 0x0100 0000256d: PUSH1 0x01 0000256f: PUSH1 0xa8 00002571: SHL 00002572: SUB 00002573: NOT 00002574: DUP6 00002575: AND 00002576: OR 00002577: SWAP1 00002578: SWAP5 00002579: SSTORE 0000257a: PUSH1 0x40 0000257c: MLOAD 0000257d: SWAP4 0000257e: SWAP1 0000257f: SWAP3 00002580: DIV 00002581: AND 00002582: SWAP2 00002583: DUP3 00002584: SWAP1 00002585: PUSH32 0xafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b 000025a6: SWAP1 000025a7: PUSH1 0x00 000025a9: SWAP1 000025aa: LOG3 000025ab: POP 000025ac: POP 000025ad: JUMP 000025ae: JUMPDEST 000025af: PUSH1 0x01 000025b1: PUSH1 0x01 000025b3: PUSH1 0xa0 000025b5: SHL 000025b6: SUB 000025b7: DUP2 000025b8: AND 000025b9: PUSH1 0x00 000025bb: SWAP1 000025bc: DUP2 000025bd: MSTORE 000025be: PUSH1 0xd9 000025c0: PUSH1 0x20 000025c2: SWAP1 000025c3: DUP2 000025c4: MSTORE 000025c5: PUSH1 0x40 000025c7: DUP1 000025c8: DUP4 000025c9: KECCAK256 000025ca: DUP2 000025cb: MLOAD 000025cc: DUP1 000025cd: DUP4 000025ce: ADD 000025cf: SWAP1 000025d0: SWAP3 000025d1: MSTORE 000025d2: DUP1 000025d3: SLOAD 000025d4: DUP1 000025d5: DUP4 000025d6: MSTORE 000025d7: PUSH1 0x01 000025d9: SWAP1 000025da: SWAP2 000025db: ADD 000025dc: SLOAD 000025dd: SWAP3 000025de: DUP3 000025df: ADD 000025e0: SWAP3 000025e1: SWAP1 000025e2: SWAP3 000025e3: MSTORE 000025e4: SWAP1 000025e5: DUP3 000025e6: SUB 000025e7: PUSH2 0x25f3 000025ea: JUMPI 000025eb: POP 000025ec: PUSH1 0x00 000025ee: SWAP3 000025ef: SWAP2 000025f0: POP 000025f1: POP 000025f2: JUMP 000025f3: JUMPDEST 000025f4: PUSH1 0xd2 000025f6: SLOAD 000025f7: DUP2 000025f8: MLOAD 000025f9: PUSH1 0x00 000025fb: SWAP2 000025fc: PUSH2 0x2604 000025ff: SWAP2 00002600: PUSH2 0x4b5c 00002603: JUMP 00002604: JUMPDEST 00002605: SWAP1 00002606: POP 00002607: DUP2 00002608: PUSH1 0x20 0000260a: ADD 0000260b: MLOAD 0000260c: DUP2 0000260d: PUSH2 0x2616 00002610: SWAP2 00002611: SWAP1 00002612: PUSH2 0x4b73 00002615: JUMP 00002616: JUMPDEST 00002617: SWAP5 00002618: SWAP4 00002619: POP 0000261a: POP 0000261b: POP 0000261c: POP 0000261d: JUMP 0000261e: JUMPDEST 0000261f: PUSH1 0xd5 00002621: SLOAD 00002622: PUSH1 0x00 00002624: SWAP1 00002625: DUP1 00002626: DUP3 00002627: SUB 00002628: PUSH2 0x2633 0000262b: JUMPI 0000262c: POP 0000262d: POP 0000262e: PUSH1 0xcf 00002630: SLOAD 00002631: SWAP1 00002632: JUMP 00002633: JUMPDEST 00002634: PUSH1 0x00 00002636: PUSH2 0x263d 00002639: PUSH2 0x303a 0000263c: JUMP 0000263d: JUMPDEST 0000263e: SWAP1 0000263f: POP 00002640: PUSH1 0x00 00002642: PUSH1 0xd4 00002644: SLOAD 00002645: PUSH1 0xd6 00002647: SLOAD 00002648: PUSH1 0xd3 0000264a: SLOAD 0000264b: DUP5 0000264c: PUSH2 0x2655 0000264f: SWAP2 00002650: SWAP1 00002651: PUSH2 0x4af2 00002654: JUMP 00002655: JUMPDEST 00002656: PUSH2 0x265f 00002659: SWAP2 0000265a: SWAP1 0000265b: PUSH2 0x4af2 0000265e: JUMP 0000265f: JUMPDEST 00002660: PUSH2 0x2669 00002663: SWAP2 00002664: SWAP1 00002665: PUSH2 0x4b05 00002668: JUMP 00002669: JUMPDEST 0000266a: SWAP1 0000266b: POP 0000266c: PUSH1 0x00 0000266e: DUP4 0000266f: PUSH2 0x2680 00002672: PUSH8 0x0de0b6b3a7640000 0000267b: DUP5 0000267c: PUSH2 0x4b5c 0000267f: JUMP 00002680: JUMPDEST 00002681: PUSH2 0x268a 00002684: SWAP2 00002685: SWAP1 00002686: PUSH2 0x4b73 00002689: JUMP 0000268a: JUMPDEST 0000268b: SWAP6 0000268c: SWAP5 0000268d: POP 0000268e: POP 0000268f: POP 00002690: POP 00002691: POP 00002692: JUMP 00002693: JUMPDEST 00002694: PUSH1 0x40 00002696: MLOAD 00002697: PUSH1 0x01 00002699: PUSH1 0x01 0000269b: PUSH1 0xa0 0000269d: SHL 0000269e: SUB 0000269f: DUP4 000026a0: AND 000026a1: PUSH1 0x24 000026a3: DUP3 000026a4: ADD 000026a5: MSTORE 000026a6: PUSH1 0x44 000026a8: DUP2 000026a9: ADD 000026aa: DUP3 000026ab: SWAP1 000026ac: MSTORE 000026ad: PUSH2 0x26f6 000026b0: SWAP1 000026b1: DUP5 000026b2: SWAP1 000026b3: PUSH4 0xa9059cbb 000026b8: PUSH1 0xe0 000026ba: SHL 000026bb: SWAP1 000026bc: PUSH1 0x64 000026be: ADD 000026bf: JUMPDEST 000026c0: PUSH1 0x40 000026c2: DUP1 000026c3: MLOAD 000026c4: PUSH1 0x1f 000026c6: NOT 000026c7: DUP2 000026c8: DUP5 000026c9: SUB 000026ca: ADD 000026cb: DUP2 000026cc: MSTORE 000026cd: SWAP2 000026ce: SWAP1 000026cf: MSTORE 000026d0: PUSH1 0x20 000026d2: DUP2 000026d3: ADD 000026d4: DUP1 000026d5: MLOAD 000026d6: PUSH1 0x01 000026d8: PUSH1 0x01 000026da: PUSH1 0xe0 000026dc: SHL 000026dd: SUB 000026de: AND 000026df: PUSH1 0x01 000026e1: PUSH1 0x01 000026e3: PUSH1 0xe0 000026e5: SHL 000026e6: SUB 000026e7: NOT 000026e8: SWAP1 000026e9: SWAP4 000026ea: AND 000026eb: SWAP3 000026ec: SWAP1 000026ed: SWAP3 000026ee: OR 000026ef: SWAP1 000026f0: SWAP2 000026f1: MSTORE 000026f2: PUSH2 0x3ccd 000026f5: JUMP 000026f6: JUMPDEST 000026f7: POP 000026f8: POP 000026f9: POP 000026fa: JUMP 000026fb: JUMPDEST 000026fc: PUSH1 0x97 000026fe: SLOAD 000026ff: PUSH1 0x40 00002701: MLOAD 00002702: PUSH4 0x18c5e8ab 00002707: PUSH1 0xe0 00002709: SHL 0000270a: DUP2 0000270b: MSTORE 0000270c: PUSH1 0x00 0000270e: SWAP2 0000270f: PUSH1 0x01 00002711: PUSH1 0x01 00002713: PUSH1 0xa0 00002715: SHL 00002716: SUB 00002717: AND 00002718: SWAP1 00002719: PUSH4 0x18c5e8ab 0000271e: SWAP1 0000271f: PUSH2 0x272e 00002722: SWAP1 00002723: CALLER 00002724: SWAP1 00002725: DUP7 00002726: SWAP1 00002727: PUSH1 0x04 00002729: ADD 0000272a: PUSH2 0x4b95 0000272d: JUMP 0000272e: JUMPDEST 0000272f: PUSH1 0x20 00002731: PUSH1 0x40 00002733: MLOAD 00002734: DUP1 00002735: DUP4 00002736: SUB 00002737: DUP2 00002738: DUP7 00002739: GAS 0000273a: STATICCALL 0000273b: ISZERO 0000273c: DUP1 0000273d: ISZERO 0000273e: PUSH2 0x274b 00002741: JUMPI 00002742: RETURNDATASIZE 00002743: PUSH1 0x00 00002745: DUP1 00002746: RETURNDATACOPY 00002747: RETURNDATASIZE 00002748: PUSH1 0x00 0000274a: REVERT 0000274b: JUMPDEST 0000274c: POP 0000274d: POP 0000274e: POP 0000274f: POP 00002750: PUSH1 0x40 00002752: MLOAD 00002753: RETURNDATASIZE 00002754: PUSH1 0x1f 00002756: NOT 00002757: PUSH1 0x1f 00002759: DUP3 0000275a: ADD 0000275b: AND 0000275c: DUP3 0000275d: ADD 0000275e: DUP1 0000275f: PUSH1 0x40 00002761: MSTORE 00002762: POP 00002763: DUP2 00002764: ADD 00002765: SWAP1 00002766: PUSH2 0x276f 00002769: SWAP2 0000276a: SWAP1 0000276b: PUSH2 0x4bb9 0000276e: JUMP 0000276f: JUMPDEST 00002770: SWAP1 00002771: POP 00002772: DUP1 00002773: PUSH2 0x2795 00002776: JUMPI 00002777: CALLER 00002778: ADDRESS 00002779: DUP4 0000277a: PUSH1 0x40 0000277c: MLOAD 0000277d: PUSH4 0x4a3fa293 00002782: PUSH1 0xe0 00002784: SHL 00002785: DUP2 00002786: MSTORE 00002787: PUSH1 0x04 00002789: ADD 0000278a: PUSH2 0x0a36 0000278d: SWAP4 0000278e: SWAP3 0000278f: SWAP2 00002790: SWAP1 00002791: PUSH2 0x4bd6 00002794: JUMP 00002795: JUMPDEST 00002796: POP 00002797: POP 00002798: JUMP 00002799: JUMPDEST 0000279a: PUSH2 0x27a1 0000279d: PUSH2 0x1e72 000027a0: JUMP 000027a1: JUMPDEST 000027a2: PUSH1 0xd1 000027a4: SLOAD 000027a5: EQ 000027a6: PUSH2 0x27c2 000027a9: JUMPI 000027aa: PUSH1 0x40 000027ac: MLOAD 000027ad: PUSH4 0x7dfca6b7 000027b2: PUSH1 0xe1 000027b4: SHL 000027b5: DUP2 000027b6: MSTORE 000027b7: PUSH1 0x04 000027b9: ADD 000027ba: PUSH1 0x40 000027bc: MLOAD 000027bd: DUP1 000027be: SWAP2 000027bf: SUB 000027c0: SWAP1 000027c1: REVERT 000027c2: JUMPDEST 000027c3: PUSH8 0x0de0b6b3a7640000 000027cc: DUP2 000027cd: GT 000027ce: ISZERO 000027cf: PUSH2 0x27eb 000027d2: JUMPI 000027d3: PUSH1 0x40 000027d5: MLOAD 000027d6: PUSH4 0x717220f3 000027db: PUSH1 0xe1 000027dd: SHL 000027de: DUP2 000027df: MSTORE 000027e0: PUSH1 0x04 000027e2: ADD 000027e3: PUSH1 0x40 000027e5: MLOAD 000027e6: DUP1 000027e7: SWAP2 000027e8: SUB 000027e9: SWAP1 000027ea: REVERT 000027eb: JUMPDEST 000027ec: PUSH1 0xd0 000027ee: DUP1 000027ef: SLOAD 000027f0: SWAP1 000027f1: DUP3 000027f2: SWAP1 000027f3: SSTORE 000027f4: PUSH1 0x40 000027f6: DUP1 000027f7: MLOAD 000027f8: DUP3 000027f9: DUP2 000027fa: MSTORE 000027fb: PUSH1 0x20 000027fd: DUP2 000027fe: ADD 000027ff: DUP5 00002800: SWAP1 00002801: MSTORE 00002802: PUSH32 0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460 00002823: SWAP2 00002824: ADD 00002825: PUSH2 0x2364 00002828: JUMP 00002829: JUMPDEST 0000282a: PUSH1 0xcd 0000282c: SLOAD 0000282d: PUSH1 0x40 0000282f: MLOAD 00002830: PUSH4 0x02173067 00002835: PUSH1 0xe3 00002837: SHL 00002838: DUP2 00002839: MSTORE 0000283a: PUSH1 0x01 0000283c: PUSH1 0x01 0000283e: PUSH1 0xa0 00002840: SHL 00002841: SUB 00002842: DUP4 00002843: DUP2 00002844: AND 00002845: PUSH1 0x04 00002847: DUP4 00002848: ADD 00002849: MSTORE 0000284a: CALLER 0000284b: PUSH1 0x24 0000284d: DUP4 0000284e: ADD 0000284f: MSTORE 00002850: SWAP1 00002851: SWAP2 00002852: AND 00002853: SWAP1 00002854: PUSH4 0x10b98338 00002859: SWAP1 0000285a: PUSH1 0x44 0000285c: ADD 0000285d: PUSH1 0x20 0000285f: PUSH1 0x40 00002861: MLOAD 00002862: DUP1 00002863: DUP4 00002864: SUB 00002865: DUP2 00002866: DUP7 00002867: GAS 00002868: STATICCALL 00002869: ISZERO 0000286a: DUP1 0000286b: ISZERO 0000286c: PUSH2 0x2879 0000286f: JUMPI 00002870: RETURNDATASIZE 00002871: PUSH1 0x00 00002873: DUP1 00002874: RETURNDATACOPY 00002875: RETURNDATASIZE 00002876: PUSH1 0x00 00002878: REVERT 00002879: JUMPDEST 0000287a: POP 0000287b: POP 0000287c: POP 0000287d: POP 0000287e: PUSH1 0x40 00002880: MLOAD 00002881: RETURNDATASIZE 00002882: PUSH1 0x1f 00002884: NOT 00002885: PUSH1 0x1f 00002887: DUP3 00002888: ADD 00002889: AND 0000288a: DUP3 0000288b: ADD 0000288c: DUP1 0000288d: PUSH1 0x40 0000288f: MSTORE 00002890: POP 00002891: DUP2 00002892: ADD 00002893: SWAP1 00002894: PUSH2 0x289d 00002897: SWAP2 00002898: SWAP1 00002899: PUSH2 0x4bb9 0000289c: JUMP 0000289d: JUMPDEST 0000289e: PUSH2 0x0afd 000028a1: JUMPI 000028a2: PUSH1 0x40 000028a4: MLOAD 000028a5: PUSH4 0x0cf0b6f5 000028aa: PUSH1 0xe0 000028ac: SHL 000028ad: DUP2 000028ae: MSTORE 000028af: PUSH1 0x04 000028b1: ADD 000028b2: PUSH1 0x40 000028b4: MLOAD 000028b5: DUP1 000028b6: SWAP2 000028b7: SUB 000028b8: SWAP1 000028b9: REVERT 000028ba: JUMPDEST 000028bb: DUP2 000028bc: ISZERO 000028bd: DUP1 000028be: PUSH2 0x28c5 000028c1: JUMPI 000028c2: POP 000028c3: DUP1 000028c4: ISZERO 000028c5: JUMPDEST 000028c6: PUSH2 0x292e 000028c9: JUMPI 000028ca: PUSH1 0x40 000028cc: MLOAD 000028cd: PUSH3 0x461bcd 000028d1: PUSH1 0xe5 000028d3: SHL 000028d4: DUP2 000028d5: MSTORE 000028d6: PUSH1 0x20 000028d8: PUSH1 0x04 000028da: DUP3 000028db: ADD 000028dc: MSTORE 000028dd: PUSH1 0x34 000028df: PUSH1 0x24 000028e1: DUP3 000028e2: ADD 000028e3: MSTORE 000028e4: PUSH32 0x6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d41 00002905: PUSH1 0x44 00002907: DUP3 00002908: ADD 00002909: MSTORE 0000290a: PUSH20 0x6d6f756e74496e206d757374206265207a65726f 0000291f: PUSH1 0x60 00002921: SHL 00002922: PUSH1 0x64 00002924: DUP3 00002925: ADD 00002926: MSTORE 00002927: PUSH1 0x84 00002929: ADD 0000292a: PUSH2 0x0a36 0000292d: JUMP 0000292e: JUMPDEST 0000292f: PUSH2 0x2936 00002932: PUSH2 0x1e72 00002935: JUMP 00002936: JUMPDEST 00002937: PUSH1 0xd1 00002939: SLOAD 0000293a: EQ 0000293b: PUSH2 0x2957 0000293e: JUMPI 0000293f: PUSH1 0x40 00002941: MLOAD 00002942: PUSH4 0x97b5cfcd 00002947: PUSH1 0xe0 00002949: SHL 0000294a: DUP2 0000294b: MSTORE 0000294c: PUSH1 0x04 0000294e: ADD 0000294f: PUSH1 0x40 00002951: MLOAD 00002952: DUP1 00002953: SWAP2 00002954: SUB 00002955: SWAP1 00002956: REVERT 00002957: JUMPDEST 00002958: PUSH1 0x00 0000295a: PUSH1 0x40 0000295c: MLOAD 0000295d: DUP1 0000295e: PUSH1 0x20 00002960: ADD 00002961: PUSH1 0x40 00002963: MSTORE 00002964: DUP1 00002965: PUSH2 0x296c 00002968: PUSH2 0x261e 0000296b: JUMP 0000296c: JUMPDEST 0000296d: SWAP1 0000296e: MSTORE 0000296f: SWAP1 00002970: POP 00002971: PUSH1 0x00 00002973: DUP1 00002974: DUP5 00002975: ISZERO 00002976: PUSH2 0x2981 00002979: JUMPI 0000297a: DUP5 0000297b: SWAP2 0000297c: POP 0000297d: PUSH2 0x29bf 00002980: JUMP 00002981: JUMPDEST 00002982: PUSH2 0x298b 00002985: DUP5 00002986: DUP5 00002987: PUSH2 0x3da2 0000298a: JUMP 0000298b: JUMPDEST 0000298c: SWAP2 0000298d: POP 0000298e: PUSH1 0x00 00002990: PUSH2 0x2999 00002993: DUP4 00002994: DUP6 00002995: PUSH2 0x3dc0 00002998: JUMP 00002999: JUMPDEST 0000299a: SWAP1 0000299b: POP 0000299c: DUP1 0000299d: ISZERO 0000299e: DUP1 0000299f: ISZERO 000029a0: SWAP1 000029a1: PUSH2 0x29aa 000029a4: JUMPI 000029a5: POP 000029a6: DUP5 000029a7: DUP2 000029a8: EQ 000029a9: ISZERO 000029aa: JUMPDEST 000029ab: ISZERO 000029ac: PUSH2 0x29bd 000029af: JUMPI 000029b0: DUP3 000029b1: PUSH2 0x29b9 000029b4: DUP2 000029b5: PUSH2 0x4c02 000029b8: JUMP 000029b9: JUMPDEST 000029ba: SWAP4 000029bb: POP 000029bc: POP 000029bd: JUMPDEST 000029be: POP 000029bf: JUMPDEST 000029c0: PUSH2 0x29c9 000029c3: DUP4 000029c4: DUP4 000029c5: PUSH2 0x3022 000029c8: JUMP 000029c9: JUMPDEST 000029ca: SWAP1 000029cb: POP 000029cc: DUP1 000029cd: PUSH1 0x00 000029cf: SUB 000029d0: PUSH2 0x2a12 000029d3: JUMPI 000029d4: PUSH1 0x40 000029d6: MLOAD 000029d7: PUSH3 0x461bcd 000029db: PUSH1 0xe5 000029dd: SHL 000029de: DUP2 000029df: MSTORE 000029e0: PUSH1 0x20 000029e2: PUSH1 0x04 000029e4: DUP3 000029e5: ADD 000029e6: MSTORE 000029e7: PUSH1 0x14 000029e9: PUSH1 0x24 000029eb: DUP3 000029ec: ADD 000029ed: MSTORE 000029ee: PUSH20 0x72656465656d416d6f756e74206973207a65726f 00002a03: PUSH1 0x60 00002a05: SHL 00002a06: PUSH1 0x44 00002a08: DUP3 00002a09: ADD 00002a0a: MSTORE 00002a0b: PUSH1 0x64 00002a0d: ADD 00002a0e: PUSH2 0x0a36 00002a11: JUMP 00002a12: JUMPDEST 00002a13: PUSH1 0xcd 00002a15: SLOAD 00002a16: PUSH1 0x40 00002a18: MLOAD 00002a19: PUSH4 0x47323875 00002a1e: PUSH1 0xe1 00002a20: SHL 00002a21: DUP2 00002a22: MSTORE 00002a23: PUSH1 0x01 00002a25: PUSH1 0x01 00002a27: PUSH1 0xa0 00002a29: SHL 00002a2a: SUB 00002a2b: SWAP1 00002a2c: SWAP2 00002a2d: AND 00002a2e: SWAP1 00002a2f: PUSH4 0x8e6470ea 00002a34: SWAP1 00002a35: PUSH2 0x2a46 00002a38: SWAP1 00002a39: ADDRESS 00002a3a: SWAP1 00002a3b: DUP12 00002a3c: SWAP1 00002a3d: DUP8 00002a3e: SWAP1 00002a3f: PUSH1 0x04 00002a41: ADD 00002a42: PUSH2 0x4c1b 00002a45: JUMP 00002a46: JUMPDEST 00002a47: PUSH1 0x00 00002a49: PUSH1 0x40 00002a4b: MLOAD 00002a4c: DUP1 00002a4d: DUP4 00002a4e: SUB 00002a4f: DUP2 00002a50: PUSH1 0x00 00002a52: DUP8 00002a53: DUP1 00002a54: EXTCODESIZE 00002a55: ISZERO 00002a56: DUP1 00002a57: ISZERO 00002a58: PUSH2 0x2a60 00002a5b: JUMPI 00002a5c: PUSH1 0x00 00002a5e: DUP1 00002a5f: REVERT 00002a60: JUMPDEST 00002a61: POP 00002a62: GAS 00002a63: CALL 00002a64: ISZERO 00002a65: DUP1 00002a66: ISZERO 00002a67: PUSH2 0x2a74 00002a6a: JUMPI 00002a6b: RETURNDATASIZE 00002a6c: PUSH1 0x00 00002a6e: DUP1 00002a6f: RETURNDATACOPY 00002a70: RETURNDATASIZE 00002a71: PUSH1 0x00 00002a73: REVERT 00002a74: JUMPDEST 00002a75: POP 00002a76: POP 00002a77: POP 00002a78: POP 00002a79: DUP1 00002a7a: PUSH1 0xd4 00002a7c: SLOAD 00002a7d: PUSH2 0x2a84 00002a80: PUSH2 0x303a 00002a83: JUMP 00002a84: JUMPDEST 00002a85: PUSH2 0x2a8e 00002a88: SWAP2 00002a89: SWAP1 00002a8a: PUSH2 0x4b05 00002a8d: JUMP 00002a8e: JUMPDEST 00002a8f: LT 00002a90: ISZERO 00002a91: PUSH2 0x2aad 00002a94: JUMPI 00002a95: PUSH1 0x40 00002a97: MLOAD 00002a98: PUSH4 0x91240a1b 00002a9d: PUSH1 0xe0 00002a9f: SHL 00002aa0: DUP2 00002aa1: MSTORE 00002aa2: PUSH1 0x04 00002aa4: ADD 00002aa5: PUSH1 0x40 00002aa7: MLOAD 00002aa8: DUP1 00002aa9: SWAP2 00002aaa: SUB 00002aab: SWAP1 00002aac: REVERT 00002aad: JUMPDEST 00002aae: DUP2 00002aaf: PUSH1 0xd5 00002ab1: SLOAD 00002ab2: PUSH2 0x2abb 00002ab5: SWAP2 00002ab6: SWAP1 00002ab7: PUSH2 0x4b05 00002aba: JUMP 00002abb: JUMPDEST 00002abc: PUSH1 0xd5 00002abe: SSTORE 00002abf: PUSH1 0x01 00002ac1: PUSH1 0x01 00002ac3: PUSH1 0xa0 00002ac5: SHL 00002ac6: SUB 00002ac7: DUP8 00002ac8: AND 00002ac9: PUSH1 0x00 00002acb: SWAP1 00002acc: DUP2 00002acd: MSTORE 00002ace: PUSH1 0xd7 00002ad0: PUSH1 0x20 00002ad2: MSTORE 00002ad3: PUSH1 0x40 00002ad5: DUP2 00002ad6: KECCAK256 00002ad7: SLOAD 00002ad8: PUSH2 0x2ae2 00002adb: SWAP1 00002adc: DUP5 00002add: SWAP1 00002ade: PUSH2 0x4b05 00002ae1: JUMP 00002ae2: JUMPDEST 00002ae3: PUSH1 0x01 00002ae5: PUSH1 0x01 00002ae7: PUSH1 0xa0 00002ae9: SHL 00002aea: SUB 00002aeb: DUP10 00002aec: AND 00002aed: PUSH1 0x00 00002aef: SWAP1 00002af0: DUP2 00002af1: MSTORE 00002af2: PUSH1 0xd7 00002af4: PUSH1 0x20 00002af6: MSTORE 00002af7: PUSH1 0x40 00002af9: SWAP1 00002afa: KECCAK256 00002afb: DUP2 00002afc: SWAP1 00002afd: SSTORE 00002afe: SWAP1 00002aff: POP 00002b00: PUSH2 0x2b09 00002b03: DUP8 00002b04: DUP4 00002b05: PUSH2 0x3cb1 00002b08: JUMP 00002b09: JUMPDEST 00002b0a: PUSH1 0x40 00002b0c: MLOAD 00002b0d: DUP4 00002b0e: DUP2 00002b0f: MSTORE 00002b10: ADDRESS 00002b11: SWAP1 00002b12: PUSH1 0x01 00002b14: PUSH1 0x01 00002b16: PUSH1 0xa0 00002b18: SHL 00002b19: SUB 00002b1a: DUP11 00002b1b: AND 00002b1c: SWAP1 00002b1d: PUSH1 0x00 00002b1f: DUP1 00002b20: MLOAD 00002b21: PUSH1 0x20 00002b23: PUSH2 0x4dff 00002b26: DUP4 00002b27: CODECOPY 00002b28: DUP2 00002b29: MLOAD 00002b2a: SWAP2 00002b2b: MSTORE 00002b2c: SWAP1 00002b2d: PUSH1 0x20 00002b2f: ADD 00002b30: PUSH1 0x40 00002b32: MLOAD 00002b33: DUP1 00002b34: SWAP2 00002b35: SUB 00002b36: SWAP1 00002b37: LOG3 00002b38: PUSH1 0x40 00002b3a: DUP1 00002b3b: MLOAD 00002b3c: DUP4 00002b3d: DUP2 00002b3e: MSTORE 00002b3f: PUSH1 0x20 00002b41: DUP2 00002b42: ADD 00002b43: DUP6 00002b44: SWAP1 00002b45: MSTORE 00002b46: SWAP1 00002b47: DUP2 00002b48: ADD 00002b49: DUP3 00002b4a: SWAP1 00002b4b: MSTORE 00002b4c: PUSH1 0x01 00002b4e: PUSH1 0x01 00002b50: PUSH1 0xa0 00002b52: SHL 00002b53: SUB 00002b54: DUP10 00002b55: AND 00002b56: SWAP1 00002b57: PUSH32 0xbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646 00002b78: SWAP1 00002b79: PUSH1 0x60 00002b7b: ADD 00002b7c: PUSH1 0x40 00002b7e: MLOAD 00002b7f: DUP1 00002b80: SWAP2 00002b81: SUB 00002b82: SWAP1 00002b83: LOG2 00002b84: PUSH1 0xcd 00002b86: SLOAD 00002b87: PUSH1 0x40 00002b89: MLOAD 00002b8a: PUSH4 0x51dff989 00002b8f: PUSH1 0xe0 00002b91: SHL 00002b92: DUP2 00002b93: MSTORE 00002b94: ADDRESS 00002b95: PUSH1 0x04 00002b97: DUP3 00002b98: ADD 00002b99: MSTORE 00002b9a: PUSH1 0x01 00002b9c: PUSH1 0x01 00002b9e: PUSH1 0xa0 00002ba0: SHL 00002ba1: SUB 00002ba2: DUP11 00002ba3: DUP2 00002ba4: AND 00002ba5: PUSH1 0x24 00002ba7: DUP4 00002ba8: ADD 00002ba9: MSTORE 00002baa: PUSH1 0x44 00002bac: DUP3 00002bad: ADD 00002bae: DUP6 00002baf: SWAP1 00002bb0: MSTORE 00002bb1: PUSH1 0x64 00002bb3: DUP3 00002bb4: ADD 00002bb5: DUP7 00002bb6: SWAP1 00002bb7: MSTORE 00002bb8: SWAP1 00002bb9: SWAP2 00002bba: AND 00002bbb: SWAP1 00002bbc: PUSH4 0x51dff989 00002bc1: SWAP1 00002bc2: PUSH1 0x84 00002bc4: ADD 00002bc5: JUMPDEST 00002bc6: PUSH1 0x00 00002bc8: PUSH1 0x40 00002bca: MLOAD 00002bcb: DUP1 00002bcc: DUP4 00002bcd: SUB 00002bce: DUP2 00002bcf: PUSH1 0x00 00002bd1: DUP8 00002bd2: DUP1 00002bd3: EXTCODESIZE 00002bd4: ISZERO 00002bd5: DUP1 00002bd6: ISZERO 00002bd7: PUSH2 0x2bdf 00002bda: JUMPI 00002bdb: PUSH1 0x00 00002bdd: DUP1 00002bde: REVERT 00002bdf: JUMPDEST 00002be0: POP 00002be1: GAS 00002be2: CALL 00002be3: ISZERO 00002be4: DUP1 00002be5: ISZERO 00002be6: PUSH2 0x17a1 00002be9: JUMPI 00002bea: RETURNDATASIZE 00002beb: PUSH1 0x00 00002bed: DUP1 00002bee: RETURNDATACOPY 00002bef: RETURNDATASIZE 00002bf0: PUSH1 0x00 00002bf2: REVERT 00002bf3: JUMPDEST 00002bf4: PUSH1 0xcd 00002bf6: SLOAD 00002bf7: PUSH1 0x40 00002bf9: MLOAD 00002bfa: PUSH4 0xc0891ba9 00002bff: PUSH1 0xe0 00002c01: SHL 00002c02: DUP2 00002c03: MSTORE 00002c04: PUSH1 0x01 00002c06: PUSH1 0x01 00002c08: PUSH1 0xa0 00002c0a: SHL 00002c0b: SUB 00002c0c: SWAP1 00002c0d: SWAP2 00002c0e: AND 00002c0f: SWAP1 00002c10: PUSH4 0xc0891ba9 00002c15: SWAP1 00002c16: PUSH2 0x2c27 00002c19: SWAP1 00002c1a: ADDRESS 00002c1b: SWAP1 00002c1c: DUP7 00002c1d: SWAP1 00002c1e: DUP7 00002c1f: SWAP1 00002c20: PUSH1 0x04 00002c22: ADD 00002c23: PUSH2 0x4c1b 00002c26: JUMP 00002c27: JUMPDEST 00002c28: PUSH1 0x00 00002c2a: PUSH1 0x40 00002c2c: MLOAD 00002c2d: DUP1 00002c2e: DUP4 00002c2f: SUB 00002c30: DUP2 00002c31: PUSH1 0x00 00002c33: DUP8 00002c34: DUP1 00002c35: EXTCODESIZE 00002c36: ISZERO 00002c37: DUP1 00002c38: ISZERO 00002c39: PUSH2 0x2c41 00002c3c: JUMPI 00002c3d: PUSH1 0x00 00002c3f: DUP1 00002c40: REVERT 00002c41: JUMPDEST 00002c42: POP 00002c43: GAS 00002c44: CALL 00002c45: ISZERO 00002c46: DUP1 00002c47: ISZERO 00002c48: PUSH2 0x2c55 00002c4b: JUMPI 00002c4c: RETURNDATASIZE 00002c4d: PUSH1 0x00 00002c4f: DUP1 00002c50: RETURNDATACOPY 00002c51: RETURNDATASIZE 00002c52: PUSH1 0x00 00002c54: REVERT 00002c55: JUMPDEST 00002c56: POP 00002c57: POP 00002c58: POP 00002c59: POP 00002c5a: PUSH2 0x2c61 00002c5d: PUSH2 0x1e72 00002c60: JUMP 00002c61: JUMPDEST 00002c62: PUSH1 0xd1 00002c64: SLOAD 00002c65: EQ 00002c66: PUSH2 0x2c82 00002c69: JUMPI 00002c6a: PUSH1 0x40 00002c6c: MLOAD 00002c6d: PUSH4 0x38d88597 00002c72: PUSH1 0xe0 00002c74: SHL 00002c75: DUP2 00002c76: MSTORE 00002c77: PUSH1 0x04 00002c79: ADD 00002c7a: PUSH1 0x40 00002c7c: MLOAD 00002c7d: DUP1 00002c7e: SWAP2 00002c7f: SUB 00002c80: SWAP1 00002c81: REVERT 00002c82: JUMPDEST 00002c83: PUSH1 0x00 00002c85: PUSH1 0x40 00002c87: MLOAD 00002c88: DUP1 00002c89: PUSH1 0x20 00002c8b: ADD 00002c8c: PUSH1 0x40 00002c8e: MSTORE 00002c8f: DUP1 00002c90: PUSH2 0x2c97 00002c93: PUSH2 0x261e 00002c96: JUMP 00002c97: JUMPDEST 00002c98: SWAP1 00002c99: MSTORE 00002c9a: SWAP1 00002c9b: POP 00002c9c: PUSH1 0x00 00002c9e: PUSH2 0x2ca7 00002ca1: DUP6 00002ca2: DUP5 00002ca3: PUSH2 0x30cb 00002ca6: JUMP 00002ca7: JUMPDEST 00002ca8: SWAP1 00002ca9: POP 00002caa: PUSH1 0x00 00002cac: PUSH2 0x2cb5 00002caf: DUP3 00002cb0: DUP5 00002cb1: PUSH2 0x3da2 00002cb4: JUMP 00002cb5: JUMPDEST 00002cb6: SWAP1 00002cb7: POP 00002cb8: DUP1 00002cb9: PUSH1 0xd5 00002cbb: SLOAD 00002cbc: PUSH2 0x2cc5 00002cbf: SWAP2 00002cc0: SWAP1 00002cc1: PUSH2 0x4af2 00002cc4: JUMP 00002cc5: JUMPDEST 00002cc6: PUSH1 0xd5 00002cc8: SSTORE 00002cc9: PUSH1 0x01 00002ccb: PUSH1 0x01 00002ccd: PUSH1 0xa0 00002ccf: SHL 00002cd0: SUB 00002cd1: DUP6 00002cd2: AND 00002cd3: PUSH1 0x00 00002cd5: SWAP1 00002cd6: DUP2 00002cd7: MSTORE 00002cd8: PUSH1 0xd7 00002cda: PUSH1 0x20 00002cdc: MSTORE 00002cdd: PUSH1 0x40 00002cdf: DUP2 00002ce0: KECCAK256 00002ce1: SLOAD 00002ce2: PUSH2 0x2cec 00002ce5: SWAP1 00002ce6: DUP4 00002ce7: SWAP1 00002ce8: PUSH2 0x4af2 00002ceb: JUMP 00002cec: JUMPDEST 00002ced: PUSH1 0x01 00002cef: PUSH1 0x01 00002cf1: PUSH1 0xa0 00002cf3: SHL 00002cf4: SUB 00002cf5: DUP8 00002cf6: AND 00002cf7: PUSH1 0x00 00002cf9: DUP2 00002cfa: DUP2 00002cfb: MSTORE 00002cfc: PUSH1 0xd7 00002cfe: PUSH1 0x20 00002d00: SWAP1 00002d01: DUP2 00002d02: MSTORE 00002d03: PUSH1 0x40 00002d05: SWAP2 00002d06: DUP3 00002d07: SWAP1 00002d08: KECCAK256 00002d09: DUP5 00002d0a: SWAP1 00002d0b: SSTORE 00002d0c: DUP2 00002d0d: MLOAD 00002d0e: DUP8 00002d0f: DUP2 00002d10: MSTORE 00002d11: SWAP1 00002d12: DUP2 00002d13: ADD 00002d14: DUP7 00002d15: SWAP1 00002d16: MSTORE 00002d17: SWAP1 00002d18: DUP2 00002d19: ADD 00002d1a: DUP4 00002d1b: SWAP1 00002d1c: MSTORE 00002d1d: SWAP2 00002d1e: SWAP3 00002d1f: POP 00002d20: SWAP1 00002d21: PUSH32 0xb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb 00002d42: SWAP1 00002d43: PUSH1 0x60 00002d45: ADD 00002d46: PUSH1 0x40 00002d48: MLOAD 00002d49: DUP1 00002d4a: SWAP2 00002d4b: SUB 00002d4c: SWAP1 00002d4d: LOG2 00002d4e: PUSH1 0x40 00002d50: MLOAD 00002d51: DUP3 00002d52: DUP2 00002d53: MSTORE 00002d54: PUSH1 0x01 00002d56: PUSH1 0x01 00002d58: PUSH1 0xa0 00002d5a: SHL 00002d5b: SUB 00002d5c: DUP8 00002d5d: AND 00002d5e: SWAP1 00002d5f: PUSH1 0x00 00002d61: SWAP1 00002d62: PUSH1 0x00 00002d64: DUP1 00002d65: MLOAD 00002d66: PUSH1 0x20 00002d68: PUSH2 0x4dff 00002d6b: DUP4 00002d6c: CODECOPY 00002d6d: DUP2 00002d6e: MLOAD 00002d6f: SWAP2 00002d70: MSTORE 00002d71: SWAP1 00002d72: PUSH1 0x20 00002d74: ADD 00002d75: PUSH1 0x40 00002d77: MLOAD 00002d78: DUP1 00002d79: SWAP2 00002d7a: SUB 00002d7b: SWAP1 00002d7c: LOG3 00002d7d: PUSH1 0xcd 00002d7f: SLOAD 00002d80: PUSH1 0x40 00002d82: MLOAD 00002d83: PUSH4 0x41c728b9 00002d88: PUSH1 0xe0 00002d8a: SHL 00002d8b: DUP2 00002d8c: MSTORE 00002d8d: ADDRESS 00002d8e: PUSH1 0x04 00002d90: DUP3 00002d91: ADD 00002d92: MSTORE 00002d93: PUSH1 0x01 00002d95: PUSH1 0x01 00002d97: PUSH1 0xa0 00002d99: SHL 00002d9a: SUB 00002d9b: DUP9 00002d9c: DUP2 00002d9d: AND 00002d9e: PUSH1 0x24 00002da0: DUP4 00002da1: ADD 00002da2: MSTORE 00002da3: PUSH1 0x44 00002da5: DUP3 00002da6: ADD 00002da7: DUP7 00002da8: SWAP1 00002da9: MSTORE 00002daa: PUSH1 0x64 00002dac: DUP3 00002dad: ADD 00002dae: DUP6 00002daf: SWAP1 00002db0: MSTORE 00002db1: SWAP1 00002db2: SWAP2 00002db3: AND 00002db4: SWAP1 00002db5: PUSH4 0x41c728b9 00002dba: SWAP1 00002dbb: PUSH1 0x84 00002dbd: ADD 00002dbe: PUSH1 0x00 00002dc0: PUSH1 0x40 00002dc2: MLOAD 00002dc3: DUP1 00002dc4: DUP4 00002dc5: SUB 00002dc6: DUP2 00002dc7: PUSH1 0x00 00002dc9: DUP8 00002dca: DUP1 00002dcb: EXTCODESIZE 00002dcc: ISZERO 00002dcd: DUP1 00002dce: ISZERO 00002dcf: PUSH2 0x2dd7 00002dd2: JUMPI 00002dd3: PUSH1 0x00 00002dd5: DUP1 00002dd6: REVERT 00002dd7: JUMPDEST 00002dd8: POP 00002dd9: GAS 00002dda: CALL 00002ddb: ISZERO 00002ddc: DUP1 00002ddd: ISZERO 00002dde: PUSH2 0x2deb 00002de1: JUMPI 00002de2: RETURNDATASIZE 00002de3: PUSH1 0x00 00002de5: DUP1 00002de6: RETURNDATACOPY 00002de7: RETURNDATASIZE 00002de8: PUSH1 0x00 00002dea: REVERT 00002deb: JUMPDEST 00002dec: POP 00002ded: POP 00002dee: POP 00002def: POP 00002df0: POP 00002df1: POP 00002df2: POP 00002df3: POP 00002df4: POP 00002df5: POP 00002df6: POP 00002df7: JUMP 00002df8: JUMPDEST 00002df9: PUSH1 0xcd 00002dfb: SLOAD 00002dfc: PUSH1 0x40 00002dfe: MLOAD 00002dff: PUSH4 0x6d0be88d 00002e04: PUSH1 0xe0 00002e06: SHL 00002e07: DUP2 00002e08: MSTORE 00002e09: ADDRESS 00002e0a: PUSH1 0x04 00002e0c: DUP3 00002e0d: ADD 00002e0e: MSTORE 00002e0f: PUSH1 0x01 00002e11: PUSH1 0x01 00002e13: PUSH1 0xa0 00002e15: SHL 00002e16: SUB 00002e17: DUP6 00002e18: DUP2 00002e19: AND 00002e1a: PUSH1 0x24 00002e1c: DUP4 00002e1d: ADD 00002e1e: MSTORE 00002e1f: DUP5 00002e20: DUP2 00002e21: AND 00002e22: PUSH1 0x44 00002e24: DUP4 00002e25: ADD 00002e26: MSTORE 00002e27: PUSH1 0x64 00002e29: DUP3 00002e2a: ADD 00002e2b: DUP5 00002e2c: SWAP1 00002e2d: MSTORE 00002e2e: SWAP1 00002e2f: SWAP2 00002e30: AND 00002e31: SWAP1 00002e32: PUSH4 0x6d0be88d 00002e37: SWAP1 00002e38: PUSH1 0x84 00002e3a: ADD 00002e3b: PUSH1 0x00 00002e3d: PUSH1 0x40 00002e3f: MLOAD 00002e40: DUP1 00002e41: DUP4 00002e42: SUB 00002e43: DUP2 00002e44: PUSH1 0x00 00002e46: DUP8 00002e47: DUP1 00002e48: EXTCODESIZE 00002e49: ISZERO 00002e4a: DUP1 00002e4b: ISZERO 00002e4c: PUSH2 0x2e54 00002e4f: JUMPI 00002e50: PUSH1 0x00 00002e52: DUP1 00002e53: REVERT 00002e54: JUMPDEST 00002e55: POP 00002e56: GAS 00002e57: CALL 00002e58: ISZERO 00002e59: DUP1 00002e5a: ISZERO 00002e5b: PUSH2 0x2e68 00002e5e: JUMPI 00002e5f: RETURNDATASIZE 00002e60: PUSH1 0x00 00002e62: DUP1 00002e63: RETURNDATACOPY 00002e64: RETURNDATASIZE 00002e65: PUSH1 0x00 00002e67: REVERT 00002e68: JUMPDEST 00002e69: POP 00002e6a: POP 00002e6b: POP 00002e6c: POP 00002e6d: DUP2 00002e6e: PUSH1 0x01 00002e70: PUSH1 0x01 00002e72: PUSH1 0xa0 00002e74: SHL 00002e75: SUB 00002e76: AND 00002e77: DUP4 00002e78: PUSH1 0x01 00002e7a: PUSH1 0x01 00002e7c: PUSH1 0xa0 00002e7e: SHL 00002e7f: SUB 00002e80: AND 00002e81: SUB 00002e82: PUSH2 0x2e9e 00002e85: JUMPI 00002e86: PUSH1 0x40 00002e88: MLOAD 00002e89: PUSH4 0x8cd22d19 00002e8e: PUSH1 0xe0 00002e90: SHL 00002e91: DUP2 00002e92: MSTORE 00002e93: PUSH1 0x04 00002e95: ADD 00002e96: PUSH1 0x40 00002e98: MLOAD 00002e99: DUP1 00002e9a: SWAP2 00002e9b: SUB 00002e9c: SWAP1 00002e9d: REVERT 00002e9e: JUMPDEST 00002e9f: PUSH1 0x00 00002ea1: DUP4 00002ea2: PUSH1 0x01 00002ea4: PUSH1 0x01 00002ea6: PUSH1 0xa0 00002ea8: SHL 00002ea9: SUB 00002eaa: AND 00002eab: DUP6 00002eac: PUSH1 0x01 00002eae: PUSH1 0x01 00002eb0: PUSH1 0xa0 00002eb2: SHL 00002eb3: SUB 00002eb4: AND 00002eb5: SUB 00002eb6: PUSH2 0x2ec2 00002eb9: JUMPI 00002eba: POP 00002ebb: PUSH1 0x00 00002ebd: NOT 00002ebe: PUSH2 0x2eea 00002ec1: JUMP 00002ec2: JUMPDEST 00002ec3: POP 00002ec4: PUSH1 0x01 00002ec6: PUSH1 0x01 00002ec8: PUSH1 0xa0 00002eca: SHL 00002ecb: SUB 00002ecc: DUP1 00002ecd: DUP5 00002ece: AND 00002ecf: PUSH1 0x00 00002ed1: SWAP1 00002ed2: DUP2 00002ed3: MSTORE 00002ed4: PUSH1 0xd8 00002ed6: PUSH1 0x20 00002ed8: SWAP1 00002ed9: DUP2 00002eda: MSTORE 00002edb: PUSH1 0x40 00002edd: DUP1 00002ede: DUP4 00002edf: KECCAK256 00002ee0: SWAP4 00002ee1: DUP9 00002ee2: AND 00002ee3: DUP4 00002ee4: MSTORE 00002ee5: SWAP3 00002ee6: SWAP1 00002ee7: MSTORE 00002ee8: KECCAK256 00002ee9: SLOAD 00002eea: JUMPDEST 00002eeb: PUSH1 0x00 00002eed: PUSH2 0x2ef6 00002ef0: DUP4 00002ef1: DUP4 00002ef2: PUSH2 0x4b05 00002ef5: JUMP 00002ef6: JUMPDEST 00002ef7: PUSH1 0x01 00002ef9: PUSH1 0x01 00002efb: PUSH1 0xa0 00002efd: SHL 00002efe: SUB 00002eff: DUP7 00002f00: AND 00002f01: PUSH1 0x00 00002f03: SWAP1 00002f04: DUP2 00002f05: MSTORE 00002f06: PUSH1 0xd7 00002f08: PUSH1 0x20 00002f0a: MSTORE 00002f0b: PUSH1 0x40 00002f0d: DUP2 00002f0e: KECCAK256 00002f0f: SLOAD 00002f10: SWAP2 00002f11: SWAP3 00002f12: POP 00002f13: SWAP1 00002f14: PUSH2 0x2f1e 00002f17: SWAP1 00002f18: DUP6 00002f19: SWAP1 00002f1a: PUSH2 0x4b05 00002f1d: JUMP 00002f1e: JUMPDEST 00002f1f: PUSH1 0x01 00002f21: PUSH1 0x01 00002f23: PUSH1 0xa0 00002f25: SHL 00002f26: SUB 00002f27: DUP7 00002f28: AND 00002f29: PUSH1 0x00 00002f2b: SWAP1 00002f2c: DUP2 00002f2d: MSTORE 00002f2e: PUSH1 0xd7 00002f30: PUSH1 0x20 00002f32: MSTORE 00002f33: PUSH1 0x40 00002f35: DUP2 00002f36: KECCAK256 00002f37: SLOAD 00002f38: SWAP2 00002f39: SWAP3 00002f3a: POP 00002f3b: SWAP1 00002f3c: PUSH2 0x2f46 00002f3f: SWAP1 00002f40: DUP7 00002f41: SWAP1 00002f42: PUSH2 0x4af2 00002f45: JUMP 00002f46: JUMPDEST 00002f47: PUSH1 0x01 00002f49: PUSH1 0x01 00002f4b: PUSH1 0xa0 00002f4d: SHL 00002f4e: SUB 00002f4f: DUP1 00002f50: DUP10 00002f51: AND 00002f52: PUSH1 0x00 00002f54: SWAP1 00002f55: DUP2 00002f56: MSTORE 00002f57: PUSH1 0xd7 00002f59: PUSH1 0x20 00002f5b: MSTORE 00002f5c: PUSH1 0x40 00002f5e: DUP1 00002f5f: DUP3 00002f60: KECCAK256 00002f61: DUP7 00002f62: SWAP1 00002f63: SSTORE 00002f64: SWAP2 00002f65: DUP10 00002f66: AND 00002f67: DUP2 00002f68: MSTORE 00002f69: KECCAK256 00002f6a: DUP2 00002f6b: SWAP1 00002f6c: SSTORE 00002f6d: SWAP1 00002f6e: POP 00002f6f: PUSH1 0x00 00002f71: NOT 00002f72: DUP5 00002f73: EQ 00002f74: PUSH2 0x2fa0 00002f77: JUMPI 00002f78: PUSH1 0x01 00002f7a: PUSH1 0x01 00002f7c: PUSH1 0xa0 00002f7e: SHL 00002f7f: SUB 00002f80: DUP1 00002f81: DUP9 00002f82: AND 00002f83: PUSH1 0x00 00002f85: SWAP1 00002f86: DUP2 00002f87: MSTORE 00002f88: PUSH1 0xd8 00002f8a: PUSH1 0x20 00002f8c: SWAP1 00002f8d: DUP2 00002f8e: MSTORE 00002f8f: PUSH1 0x40 00002f91: DUP1 00002f92: DUP4 00002f93: KECCAK256 00002f94: SWAP4 00002f95: DUP13 00002f96: AND 00002f97: DUP4 00002f98: MSTORE 00002f99: SWAP3 00002f9a: SWAP1 00002f9b: MSTORE 00002f9c: KECCAK256 00002f9d: DUP4 00002f9e: SWAP1 00002f9f: SSTORE 00002fa0: JUMPDEST 00002fa1: DUP6 00002fa2: PUSH1 0x01 00002fa4: PUSH1 0x01 00002fa6: PUSH1 0xa0 00002fa8: SHL 00002fa9: SUB 00002faa: AND 00002fab: DUP8 00002fac: PUSH1 0x01 00002fae: PUSH1 0x01 00002fb0: PUSH1 0xa0 00002fb2: SHL 00002fb3: SUB 00002fb4: AND 00002fb5: PUSH1 0x00 00002fb7: DUP1 00002fb8: MLOAD 00002fb9: PUSH1 0x20 00002fbb: PUSH2 0x4dff 00002fbe: DUP4 00002fbf: CODECOPY 00002fc0: DUP2 00002fc1: MLOAD 00002fc2: SWAP2 00002fc3: MSTORE 00002fc4: DUP8 00002fc5: PUSH1 0x40 00002fc7: MLOAD 00002fc8: PUSH2 0x2fd3 00002fcb: SWAP2 00002fcc: DUP2 00002fcd: MSTORE 00002fce: PUSH1 0x20 00002fd0: ADD 00002fd1: SWAP1 00002fd2: JUMP 00002fd3: JUMPDEST 00002fd4: PUSH1 0x40 00002fd6: MLOAD 00002fd7: DUP1 00002fd8: SWAP2 00002fd9: SUB 00002fda: SWAP1 00002fdb: LOG3 00002fdc: PUSH1 0xcd 00002fde: SLOAD 00002fdf: PUSH1 0x40 00002fe1: MLOAD 00002fe2: PUSH4 0x352b4a3f 00002fe7: PUSH1 0xe1 00002fe9: SHL 00002fea: DUP2 00002feb: MSTORE 00002fec: ADDRESS 00002fed: PUSH1 0x04 00002fef: DUP3 00002ff0: ADD 00002ff1: MSTORE 00002ff2: PUSH1 0x01 00002ff4: PUSH1 0x01 00002ff6: PUSH1 0xa0 00002ff8: SHL 00002ff9: SUB 00002ffa: DUP10 00002ffb: DUP2 00002ffc: AND 00002ffd: PUSH1 0x24 00002fff: DUP4 00003000: ADD 00003001: MSTORE 00003002: DUP9 00003003: DUP2 00003004: AND 00003005: PUSH1 0x44 00003007: DUP4 00003008: ADD 00003009: MSTORE 0000300a: PUSH1 0x64 0000300c: DUP3 0000300d: ADD 0000300e: DUP9 0000300f: SWAP1 00003010: MSTORE 00003011: SWAP1 00003012: SWAP2 00003013: AND 00003014: SWAP1 00003015: PUSH4 0x6a56947e 0000301a: SWAP1 0000301b: PUSH1 0x84 0000301d: ADD 0000301e: PUSH2 0x2bc5 00003021: JUMP 00003022: JUMPDEST 00003023: PUSH1 0x00 00003025: DUP1 00003026: PUSH2 0x302f 00003029: DUP5 0000302a: DUP5 0000302b: PUSH2 0x38b5 0000302e: JUMP 0000302f: JUMPDEST 00003030: SWAP1 00003031: POP 00003032: PUSH2 0x2616 00003035: DUP2 00003036: PUSH2 0x3de3 00003039: JUMP 0000303a: JUMPDEST 0000303b: PUSH1 0xc9 0000303d: SLOAD 0000303e: PUSH1 0x40 00003040: MLOAD 00003041: PUSH4 0x70a08231 00003046: PUSH1 0xe0 00003048: SHL 00003049: DUP2 0000304a: MSTORE 0000304b: ADDRESS 0000304c: PUSH1 0x04 0000304e: DUP3 0000304f: ADD 00003050: MSTORE 00003051: PUSH1 0x00 00003053: SWAP2 00003054: PUSH2 0x0100 00003057: SWAP1 00003058: DIV 00003059: PUSH1 0x01 0000305b: PUSH1 0x01 0000305d: PUSH1 0xa0 0000305f: SHL 00003060: SUB 00003061: AND 00003062: SWAP1 00003063: PUSH4 0x70a08231 00003068: SWAP1 00003069: PUSH1 0x24 0000306b: ADD 0000306c: PUSH2 0x1c7e 0000306f: JUMP 00003070: JUMPDEST 00003071: PUSH2 0x3079 00003074: DUP2 00003075: PUSH2 0x2229 00003078: JUMP 00003079: JUMPDEST 0000307a: PUSH1 0xdb 0000307c: DUP1 0000307d: SLOAD 0000307e: PUSH1 0x01 00003080: PUSH1 0x01 00003082: PUSH1 0xa0 00003084: SHL 00003085: SUB 00003086: DUP4 00003087: DUP2 00003088: AND 00003089: PUSH1 0x01 0000308b: PUSH1 0x01 0000308d: PUSH1 0xa0 0000308f: SHL 00003090: SUB 00003091: NOT 00003092: DUP4 00003093: AND 00003094: DUP2 00003095: OR 00003096: SWAP1 00003097: SWAP4 00003098: SSTORE 00003099: PUSH1 0x40 0000309b: MLOAD 0000309c: SWAP2 0000309d: AND 0000309e: SWAP2 0000309f: SWAP1 000030a0: DUP3 000030a1: SWAP1 000030a2: PUSH32 0x6dbf1ff28f860de5edafa4c6505e37c0aba213288cc4166c5352b6d3776c79ef 000030c3: SWAP1 000030c4: PUSH1 0x00 000030c6: SWAP1 000030c7: LOG3 000030c8: POP 000030c9: POP 000030ca: JUMP 000030cb: JUMPDEST 000030cc: PUSH1 0xc9 000030ce: SLOAD 000030cf: PUSH1 0x40 000030d1: MLOAD 000030d2: PUSH4 0x70a08231 000030d7: PUSH1 0xe0 000030d9: SHL 000030da: DUP2 000030db: MSTORE 000030dc: ADDRESS 000030dd: PUSH1 0x04 000030df: DUP3 000030e0: ADD 000030e1: MSTORE 000030e2: PUSH1 0x00 000030e4: SWAP2 000030e5: PUSH2 0x0100 000030e8: SWAP1 000030e9: DIV 000030ea: PUSH1 0x01 000030ec: PUSH1 0x01 000030ee: PUSH1 0xa0 000030f0: SHL 000030f1: SUB 000030f2: AND 000030f3: SWAP1 000030f4: DUP3 000030f5: SWAP1 000030f6: DUP3 000030f7: SWAP1 000030f8: PUSH4 0x70a08231 000030fd: SWAP1 000030fe: PUSH1 0x24 00003100: ADD 00003101: PUSH1 0x20 00003103: PUSH1 0x40 00003105: MLOAD 00003106: DUP1 00003107: DUP4 00003108: SUB 00003109: DUP2 0000310a: DUP7 0000310b: GAS 0000310c: STATICCALL 0000310d: ISZERO 0000310e: DUP1 0000310f: ISZERO 00003110: PUSH2 0x311d 00003113: JUMPI 00003114: RETURNDATASIZE 00003115: PUSH1 0x00 00003117: DUP1 00003118: RETURNDATACOPY 00003119: RETURNDATASIZE 0000311a: PUSH1 0x00 0000311c: REVERT 0000311d: JUMPDEST 0000311e: POP 0000311f: POP 00003120: POP 00003121: POP 00003122: PUSH1 0x40 00003124: MLOAD 00003125: RETURNDATASIZE 00003126: PUSH1 0x1f 00003128: NOT 00003129: PUSH1 0x1f 0000312b: DUP3 0000312c: ADD 0000312d: AND 0000312e: DUP3 0000312f: ADD 00003130: DUP1 00003131: PUSH1 0x40 00003133: MSTORE 00003134: POP 00003135: DUP2 00003136: ADD 00003137: SWAP1 00003138: PUSH2 0x3141 0000313b: SWAP2 0000313c: SWAP1 0000313d: PUSH2 0x4ac3 00003140: JUMP 00003141: JUMPDEST 00003142: SWAP1 00003143: POP 00003144: PUSH2 0x3158 00003147: PUSH1 0x01 00003149: PUSH1 0x01 0000314b: PUSH1 0xa0 0000314d: SHL 0000314e: SUB 0000314f: DUP4 00003150: AND 00003151: DUP7 00003152: ADDRESS 00003153: DUP8 00003154: PUSH2 0x3dfb 00003157: JUMP 00003158: JUMPDEST 00003159: PUSH1 0x40 0000315b: MLOAD 0000315c: PUSH4 0x70a08231 00003161: PUSH1 0xe0 00003163: SHL 00003164: DUP2 00003165: MSTORE 00003166: ADDRESS 00003167: PUSH1 0x04 00003169: DUP3 0000316a: ADD 0000316b: MSTORE 0000316c: PUSH1 0x00 0000316e: SWAP1 0000316f: PUSH1 0x01 00003171: PUSH1 0x01 00003173: PUSH1 0xa0 00003175: SHL 00003176: SUB 00003177: DUP5 00003178: AND 00003179: SWAP1 0000317a: PUSH4 0x70a08231 0000317f: SWAP1 00003180: PUSH1 0x24 00003182: ADD 00003183: PUSH1 0x20 00003185: PUSH1 0x40 00003187: MLOAD 00003188: DUP1 00003189: DUP4 0000318a: SUB 0000318b: DUP2 0000318c: DUP7 0000318d: GAS 0000318e: STATICCALL 0000318f: ISZERO 00003190: DUP1 00003191: ISZERO 00003192: PUSH2 0x319f 00003195: JUMPI 00003196: RETURNDATASIZE 00003197: PUSH1 0x00 00003199: DUP1 0000319a: RETURNDATACOPY 0000319b: RETURNDATASIZE 0000319c: PUSH1 0x00 0000319e: REVERT 0000319f: JUMPDEST 000031a0: POP 000031a1: POP 000031a2: POP 000031a3: POP 000031a4: PUSH1 0x40 000031a6: MLOAD 000031a7: RETURNDATASIZE 000031a8: PUSH1 0x1f 000031aa: NOT 000031ab: PUSH1 0x1f 000031ad: DUP3 000031ae: ADD 000031af: AND 000031b0: DUP3 000031b1: ADD 000031b2: DUP1 000031b3: PUSH1 0x40 000031b5: MSTORE 000031b6: POP 000031b7: DUP2 000031b8: ADD 000031b9: SWAP1 000031ba: PUSH2 0x31c3 000031bd: SWAP2 000031be: SWAP1 000031bf: PUSH2 0x4ac3 000031c2: JUMP 000031c3: JUMPDEST 000031c4: SWAP1 000031c5: POP 000031c6: PUSH2 0x31cf 000031c9: DUP3 000031ca: DUP3 000031cb: PUSH2 0x4b05 000031ce: JUMP 000031cf: JUMPDEST 000031d0: SWAP7 000031d1: SWAP6 000031d2: POP 000031d3: POP 000031d4: POP 000031d5: POP 000031d6: POP 000031d7: POP 000031d8: JUMP 000031d9: JUMPDEST 000031da: PUSH1 0x65 000031dc: DUP1 000031dd: SLOAD 000031de: PUSH1 0x01 000031e0: PUSH1 0x01 000031e2: PUSH1 0xa0 000031e4: SHL 000031e5: SUB 000031e6: NOT 000031e7: AND 000031e8: SWAP1 000031e9: SSTORE 000031ea: PUSH2 0x0afd 000031ed: DUP2 000031ee: PUSH2 0x3e22 000031f1: JUMP 000031f2: JUMPDEST 000031f3: PUSH1 0x00 000031f5: DUP1 000031f6: PUSH1 0x00 000031f8: PUSH2 0x31ff 000031fb: PUSH2 0x1e72 000031fe: JUMP 000031ff: JUMPDEST 00003200: PUSH1 0xd1 00003202: SLOAD 00003203: EQ 00003204: PUSH2 0x3223 00003207: JUMPI 00003208: PUSH1 0x40 0000320a: MLOAD 0000320b: PUSH4 0x38acf799 00003210: PUSH1 0xe0 00003212: SHL 00003213: DUP2 00003214: MSTORE 00003215: PUSH1 0x04 00003217: DUP2 00003218: ADD 00003219: DUP3 0000321a: SWAP1 0000321b: MSTORE 0000321c: PUSH1 0x24 0000321e: ADD 0000321f: PUSH2 0x0a36 00003222: JUMP 00003223: JUMPDEST 00003224: PUSH2 0x322d 00003227: CALLER 00003228: DUP6 00003229: PUSH2 0x30cb 0000322c: JUMP 0000322d: JUMPDEST 0000322e: SWAP1 0000322f: POP 00003230: DUP1 00003231: PUSH1 0xd4 00003233: SLOAD 00003234: PUSH2 0x323d 00003237: SWAP2 00003238: SWAP1 00003239: PUSH2 0x4af2 0000323c: JUMP 0000323d: JUMPDEST 0000323e: PUSH1 0xd4 00003240: DUP2 00003241: SWAP1 00003242: SSTORE 00003243: PUSH1 0x40 00003245: DUP1 00003246: MLOAD 00003247: DUP4 00003248: DUP2 00003249: MSTORE 0000324a: PUSH1 0x20 0000324c: DUP2 0000324d: ADD 0000324e: DUP4 0000324f: SWAP1 00003250: MSTORE 00003251: SWAP2 00003252: SWAP4 00003253: POP 00003254: CALLER 00003255: SWAP2 00003256: PUSH32 0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5 00003277: SWAP2 00003278: ADD 00003279: PUSH1 0x40 0000327b: MLOAD 0000327c: DUP1 0000327d: SWAP2 0000327e: SUB 0000327f: SWAP1 00003280: LOG2 00003281: SWAP4 00003282: SWAP3 00003283: POP 00003284: POP 00003285: POP 00003286: JUMP 00003287: JUMPDEST 00003288: PUSH1 0xcd 0000328a: SLOAD 0000328b: PUSH1 0x40 0000328d: MLOAD 0000328e: PUSH4 0xdf71403b 00003293: PUSH1 0xe0 00003295: SHL 00003296: DUP2 00003297: MSTORE 00003298: PUSH1 0x01 0000329a: PUSH1 0x01 0000329c: PUSH1 0xa0 0000329e: SHL 0000329f: SUB 000032a0: SWAP1 000032a1: SWAP2 000032a2: AND 000032a3: SWAP1 000032a4: PUSH4 0xdf71403b 000032a9: SWAP1 000032aa: PUSH2 0x32bb 000032ad: SWAP1 000032ae: ADDRESS 000032af: SWAP1 000032b0: DUP8 000032b1: SWAP1 000032b2: DUP7 000032b3: SWAP1 000032b4: PUSH1 0x04 000032b6: ADD 000032b7: PUSH2 0x4c1b 000032ba: JUMP 000032bb: JUMPDEST 000032bc: PUSH1 0x00 000032be: PUSH1 0x40 000032c0: MLOAD 000032c1: DUP1 000032c2: DUP4 000032c3: SUB 000032c4: DUP2 000032c5: PUSH1 0x00 000032c7: DUP8 000032c8: DUP1 000032c9: EXTCODESIZE 000032ca: ISZERO 000032cb: DUP1 000032cc: ISZERO 000032cd: PUSH2 0x32d5 000032d0: JUMPI 000032d1: PUSH1 0x00 000032d3: DUP1 000032d4: REVERT 000032d5: JUMPDEST 000032d6: POP 000032d7: GAS 000032d8: CALL 000032d9: ISZERO 000032da: DUP1 000032db: ISZERO 000032dc: PUSH2 0x32e9 000032df: JUMPI 000032e0: RETURNDATASIZE 000032e1: PUSH1 0x00 000032e3: DUP1 000032e4: RETURNDATACOPY 000032e5: RETURNDATASIZE 000032e6: PUSH1 0x00 000032e8: REVERT 000032e9: JUMPDEST 000032ea: POP 000032eb: POP 000032ec: POP 000032ed: POP 000032ee: PUSH2 0x32f5 000032f1: PUSH2 0x1e72 000032f4: JUMP 000032f5: JUMPDEST 000032f6: PUSH1 0xd1 000032f8: SLOAD 000032f9: EQ 000032fa: PUSH2 0x3316 000032fd: JUMPI 000032fe: PUSH1 0x40 00003300: MLOAD 00003301: PUSH4 0x0e8d8c61 00003306: PUSH1 0xe2 00003308: SHL 00003309: DUP2 0000330a: MSTORE 0000330b: PUSH1 0x04 0000330d: ADD 0000330e: PUSH1 0x40 00003310: MLOAD 00003311: DUP1 00003312: SWAP2 00003313: SUB 00003314: SWAP1 00003315: REVERT 00003316: JUMPDEST 00003317: DUP1 00003318: PUSH1 0xd4 0000331a: SLOAD 0000331b: PUSH2 0x3322 0000331e: PUSH2 0x303a 00003321: JUMP 00003322: JUMPDEST 00003323: PUSH2 0x332c 00003326: SWAP2 00003327: SWAP1 00003328: PUSH2 0x4b05 0000332b: JUMP 0000332c: JUMPDEST 0000332d: LT 0000332e: ISZERO 0000332f: PUSH2 0x334b 00003332: JUMPI 00003333: PUSH1 0x40 00003335: MLOAD 00003336: PUSH4 0x48c25881 0000333b: PUSH1 0xe0 0000333d: SHL 0000333e: DUP2 0000333f: MSTORE 00003340: PUSH1 0x04 00003342: ADD 00003343: PUSH1 0x40 00003345: MLOAD 00003346: DUP1 00003347: SWAP2 00003348: SUB 00003349: SWAP1 0000334a: REVERT 0000334b: JUMPDEST 0000334c: PUSH1 0x00 0000334e: PUSH2 0x3356 00003351: DUP5 00003352: PUSH2 0x25ae 00003355: JUMP 00003356: JUMPDEST 00003357: SWAP1 00003358: POP 00003359: PUSH1 0x00 0000335b: PUSH2 0x3364 0000335e: DUP4 0000335f: DUP4 00003360: PUSH2 0x4af2 00003363: JUMP 00003364: JUMPDEST 00003365: SWAP1 00003366: POP 00003367: PUSH1 0x00 00003369: DUP4 0000336a: PUSH1 0xd3 0000336c: SLOAD 0000336d: PUSH2 0x3376 00003370: SWAP2 00003371: SWAP1 00003372: PUSH2 0x4af2 00003375: JUMP 00003376: JUMPDEST 00003377: PUSH1 0x01 00003379: PUSH1 0x01 0000337b: PUSH1 0xa0 0000337d: SHL 0000337e: SUB 0000337f: DUP8 00003380: AND 00003381: PUSH1 0x00 00003383: SWAP1 00003384: DUP2 00003385: MSTORE 00003386: PUSH1 0xd9 00003388: PUSH1 0x20 0000338a: MSTORE 0000338b: PUSH1 0x40 0000338d: SWAP1 0000338e: KECCAK256 0000338f: DUP4 00003390: DUP2 00003391: SSTORE 00003392: PUSH1 0xd2 00003394: SLOAD 00003395: PUSH1 0x01 00003397: SWAP1 00003398: SWAP2 00003399: ADD 0000339a: SSTORE 0000339b: PUSH1 0xd3 0000339d: DUP2 0000339e: SWAP1 0000339f: SSTORE 000033a0: SWAP1 000033a1: POP 000033a2: PUSH2 0x33ab 000033a5: DUP6 000033a6: DUP6 000033a7: PUSH2 0x3cb1 000033aa: JUMP 000033ab: JUMPDEST 000033ac: PUSH1 0x40 000033ae: DUP1 000033af: MLOAD 000033b0: DUP6 000033b1: DUP2 000033b2: MSTORE 000033b3: PUSH1 0x20 000033b5: DUP2 000033b6: ADD 000033b7: DUP5 000033b8: SWAP1 000033b9: MSTORE 000033ba: SWAP1 000033bb: DUP2 000033bc: ADD 000033bd: DUP3 000033be: SWAP1 000033bf: MSTORE 000033c0: PUSH1 0x01 000033c2: PUSH1 0x01 000033c4: PUSH1 0xa0 000033c6: SHL 000033c7: SUB 000033c8: DUP8 000033c9: AND 000033ca: SWAP1 000033cb: PUSH32 0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80 000033ec: SWAP1 000033ed: PUSH1 0x60 000033ef: ADD 000033f0: PUSH1 0x40 000033f2: MLOAD 000033f3: DUP1 000033f4: SWAP2 000033f5: SUB 000033f6: SWAP1 000033f7: LOG2 000033f8: PUSH1 0xcd 000033fa: SLOAD 000033fb: PUSH1 0x40 000033fd: MLOAD 000033fe: PUSH4 0x5c778605 00003403: PUSH1 0xe0 00003405: SHL 00003406: DUP2 00003407: MSTORE 00003408: PUSH1 0x01 0000340a: PUSH1 0x01 0000340c: PUSH1 0xa0 0000340e: SHL 0000340f: SUB 00003410: SWAP1 00003411: SWAP2 00003412: AND 00003413: SWAP1 00003414: PUSH4 0x5c778605 00003419: SWAP1 0000341a: PUSH2 0x342b 0000341d: SWAP1 0000341e: ADDRESS 0000341f: SWAP1 00003420: DUP11 00003421: SWAP1 00003422: DUP10 00003423: SWAP1 00003424: PUSH1 0x04 00003426: ADD 00003427: PUSH2 0x4c1b 0000342a: JUMP 0000342b: JUMPDEST 0000342c: PUSH1 0x00 0000342e: PUSH1 0x40 00003430: MLOAD 00003431: DUP1 00003432: DUP4 00003433: SUB 00003434: DUP2 00003435: PUSH1 0x00 00003437: DUP8 00003438: DUP1 00003439: EXTCODESIZE 0000343a: ISZERO 0000343b: DUP1 0000343c: ISZERO 0000343d: PUSH2 0x3445 00003440: JUMPI 00003441: PUSH1 0x00 00003443: DUP1 00003444: REVERT 00003445: JUMPDEST 00003446: POP 00003447: GAS 00003448: CALL 00003449: ISZERO 0000344a: DUP1 0000344b: ISZERO 0000344c: PUSH2 0x3459 0000344f: JUMPI 00003450: RETURNDATASIZE 00003451: PUSH1 0x00 00003453: DUP1 00003454: RETURNDATACOPY 00003455: RETURNDATASIZE 00003456: PUSH1 0x00 00003458: REVERT 00003459: JUMPDEST 0000345a: POP 0000345b: POP 0000345c: POP 0000345d: POP 0000345e: POP 0000345f: POP 00003460: POP 00003461: POP 00003462: POP 00003463: POP 00003464: JUMP 00003465: JUMPDEST 00003466: PUSH1 0x00 00003468: SLOAD 00003469: PUSH2 0x0100 0000346c: SWAP1 0000346d: DIV 0000346e: PUSH1 0xff 00003470: AND 00003471: PUSH2 0x348c 00003474: JUMPI 00003475: PUSH1 0x40 00003477: MLOAD 00003478: PUSH3 0x461bcd 0000347c: PUSH1 0xe5 0000347e: SHL 0000347f: DUP2 00003480: MSTORE 00003481: PUSH1 0x04 00003483: ADD 00003484: PUSH2 0x0a36 00003487: SWAP1 00003488: PUSH2 0x4c3f 0000348b: JUMP 0000348c: JUMPDEST 0000348d: PUSH2 0x3494 00003490: PUSH2 0x3e74 00003493: JUMP 00003494: JUMPDEST 00003495: PUSH2 0x349d 00003498: DUP4 00003499: PUSH2 0x3ea3 0000349c: JUMP 0000349d: JUMPDEST 0000349e: PUSH1 0xd1 000034a0: SLOAD 000034a1: ISZERO 000034a2: DUP1 000034a3: ISZERO 000034a4: PUSH2 0x34ad 000034a7: JUMPI 000034a8: POP 000034a9: PUSH1 0xd2 000034ab: SLOAD 000034ac: ISZERO 000034ad: JUMPDEST 000034ae: PUSH2 0x3505 000034b1: JUMPI 000034b2: PUSH1 0x40 000034b4: MLOAD 000034b5: PUSH3 0x461bcd 000034b9: PUSH1 0xe5 000034bb: SHL 000034bc: DUP2 000034bd: MSTORE 000034be: PUSH1 0x20 000034c0: PUSH1 0x04 000034c2: DUP3 000034c3: ADD 000034c4: MSTORE 000034c5: PUSH1 0x23 000034c7: PUSH1 0x24 000034c9: DUP3 000034ca: ADD 000034cb: MSTORE 000034cc: PUSH32 0x6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f 000034ed: PUSH1 0x44 000034ef: DUP3 000034f0: ADD 000034f1: MSTORE 000034f2: PUSH3 0x6e6365 000034f6: PUSH1 0xe8 000034f8: SHL 000034f9: PUSH1 0x64 000034fb: DUP3 000034fc: ADD 000034fd: MSTORE 000034fe: PUSH1 0x84 00003500: ADD 00003501: PUSH2 0x0a36 00003504: JUMP 00003505: JUMPDEST 00003506: PUSH1 0xcf 00003508: DUP9 00003509: SWAP1 0000350a: SSTORE 0000350b: DUP8 0000350c: PUSH2 0x3570 0000350f: JUMPI 00003510: PUSH1 0x40 00003512: MLOAD 00003513: PUSH3 0x461bcd 00003517: PUSH1 0xe5 00003519: SHL 0000351a: DUP2 0000351b: MSTORE 0000351c: PUSH1 0x20 0000351e: PUSH1 0x04 00003520: DUP3 00003521: ADD 00003522: MSTORE 00003523: PUSH1 0x30 00003525: PUSH1 0x24 00003527: DUP3 00003528: ADD 00003529: MSTORE 0000352a: PUSH32 0x696e697469616c2065786368616e67652072617465206d757374206265206772 0000354b: PUSH1 0x44 0000354d: DUP3 0000354e: ADD 0000354f: MSTORE 00003550: PUSH16 0x32b0ba32b9103a3430b7103d32b93797 00003561: PUSH1 0x81 00003563: SHL 00003564: PUSH1 0x64 00003566: DUP3 00003567: ADD 00003568: MSTORE 00003569: PUSH1 0x84 0000356b: ADD 0000356c: PUSH2 0x0a36 0000356f: JUMP 00003570: JUMPDEST 00003571: PUSH2 0x3579 00003574: DUP11 00003575: PUSH2 0x3eca 00003578: JUMP 00003579: JUMPDEST 0000357a: PUSH2 0x3581 0000357d: PUSH2 0x1e72 00003580: JUMP 00003581: JUMPDEST 00003582: PUSH1 0xd1 00003584: SSTORE 00003585: PUSH8 0x0de0b6b3a7640000 0000358e: PUSH1 0xd2 00003590: SSTORE 00003591: PUSH2 0x3599 00003594: DUP10 00003595: PUSH2 0x3773 00003598: JUMP 00003599: JUMPDEST 0000359a: PUSH2 0x35a2 0000359d: DUP2 0000359e: PUSH2 0x2799 000035a1: JUMP 000035a2: JUMPDEST 000035a3: PUSH1 0xca 000035a5: PUSH2 0x35ae 000035a8: DUP9 000035a9: DUP3 000035aa: PUSH2 0x4cda 000035ad: JUMP 000035ae: JUMPDEST 000035af: POP 000035b0: PUSH1 0xcb 000035b2: PUSH2 0x35bb 000035b5: DUP8 000035b6: DUP3 000035b7: PUSH2 0x4cda 000035ba: JUMP 000035bb: JUMPDEST 000035bc: POP 000035bd: PUSH1 0xcc 000035bf: DUP1 000035c0: SLOAD 000035c1: PUSH1 0xff 000035c3: NOT 000035c4: AND 000035c5: PUSH1 0xff 000035c7: DUP8 000035c8: AND 000035c9: OR 000035ca: SWAP1 000035cb: SSTORE 000035cc: DUP2 000035cd: MLOAD 000035ce: PUSH2 0x35d6 000035d1: SWAP1 000035d2: PUSH2 0x3070 000035d5: JUMP 000035d6: JUMPDEST 000035d7: PUSH2 0x35e3 000035da: DUP3 000035db: PUSH1 0x20 000035dd: ADD 000035de: MLOAD 000035df: PUSH2 0x254b 000035e2: JUMP 000035e3: JUMPDEST 000035e4: PUSH7 0xb1a2bc2ec50000 000035ec: PUSH1 0xda 000035ee: SSTORE 000035ef: PUSH1 0xc9 000035f1: DUP1 000035f2: SLOAD 000035f3: PUSH2 0x0100 000035f6: PUSH1 0x01 000035f8: PUSH1 0xa8 000035fa: SHL 000035fb: SUB 000035fc: NOT 000035fd: AND 000035fe: PUSH2 0x0100 00003601: PUSH1 0x01 00003603: PUSH1 0x01 00003605: PUSH1 0xa0 00003607: SHL 00003608: SUB 00003609: DUP15 0000360a: DUP2 0000360b: AND 0000360c: DUP3 0000360d: MUL 0000360e: SWAP3 0000360f: SWAP1 00003610: SWAP3 00003611: OR 00003612: SWAP3 00003613: DUP4 00003614: SWAP1 00003615: SSTORE 00003616: PUSH1 0x40 00003618: DUP1 00003619: MLOAD 0000361a: PUSH4 0x18160ddd 0000361f: PUSH1 0xe0 00003621: SHL 00003622: DUP2 00003623: MSTORE 00003624: SWAP1 00003625: MLOAD 00003626: SWAP2 00003627: SWAP1 00003628: SWAP4 00003629: DIV 0000362a: SWAP1 0000362b: SWAP2 0000362c: AND 0000362d: SWAP2 0000362e: PUSH4 0x18160ddd 00003633: SWAP2 00003634: PUSH1 0x04 00003636: DUP1 00003637: DUP4 00003638: ADD 00003639: SWAP3 0000363a: PUSH1 0x20 0000363c: SWAP3 0000363d: SWAP2 0000363e: SWAP1 0000363f: DUP3 00003640: SWAP1 00003641: SUB 00003642: ADD 00003643: DUP2 00003644: DUP7 00003645: GAS 00003646: STATICCALL 00003647: ISZERO 00003648: DUP1 00003649: ISZERO 0000364a: PUSH2 0x3657 0000364d: JUMPI 0000364e: RETURNDATASIZE 0000364f: PUSH1 0x00 00003651: DUP1 00003652: RETURNDATACOPY 00003653: RETURNDATASIZE 00003654: PUSH1 0x00 00003656: REVERT 00003657: JUMPDEST 00003658: POP 00003659: POP 0000365a: POP 0000365b: POP 0000365c: PUSH1 0x40 0000365e: MLOAD 0000365f: RETURNDATASIZE 00003660: PUSH1 0x1f 00003662: NOT 00003663: PUSH1 0x1f 00003665: DUP3 00003666: ADD 00003667: AND 00003668: DUP3 00003669: ADD 0000366a: DUP1 0000366b: PUSH1 0x40 0000366d: MSTORE 0000366e: POP 0000366f: DUP2 00003670: ADD 00003671: SWAP1 00003672: PUSH2 0x367b 00003675: SWAP2 00003676: SWAP1 00003677: PUSH2 0x4ac3 0000367a: JUMP 0000367b: JUMPDEST 0000367c: POP 0000367d: PUSH1 0xc9 0000367f: DUP1 00003680: SLOAD 00003681: PUSH1 0xff 00003683: NOT 00003684: AND 00003685: PUSH1 0x01 00003687: OR 00003688: SWAP1 00003689: SSTORE 0000368a: PUSH2 0x2deb 0000368d: DUP5 0000368e: PUSH2 0x31d9 00003691: JUMP 00003692: JUMPDEST 00003693: PUSH1 0xc9 00003695: SLOAD 00003696: PUSH1 0xff 00003698: AND 00003699: PUSH2 0x36b4 0000369c: JUMPI 0000369d: PUSH1 0x40 0000369f: MLOAD 000036a0: PUSH3 0x461bcd 000036a4: PUSH1 0xe5 000036a6: SHL 000036a7: DUP2 000036a8: MSTORE 000036a9: PUSH1 0x04 000036ab: ADD 000036ac: PUSH2 0x0a36 000036af: SWAP1 000036b0: PUSH2 0x4a9f 000036b3: JUMP 000036b4: JUMPDEST 000036b5: PUSH1 0xc9 000036b7: DUP1 000036b8: SLOAD 000036b9: PUSH1 0xff 000036bb: NOT 000036bc: AND 000036bd: SWAP1 000036be: SSTORE 000036bf: PUSH2 0x36c6 000036c2: PUSH2 0x1976 000036c5: JUMP 000036c6: JUMPDEST 000036c7: POP 000036c8: PUSH1 0x00 000036ca: DUP3 000036cb: PUSH1 0x01 000036cd: PUSH1 0x01 000036cf: PUSH1 0xa0 000036d1: SHL 000036d2: SUB 000036d3: AND 000036d4: PUSH4 0xa6afed95 000036d9: PUSH1 0x40 000036db: MLOAD 000036dc: DUP2 000036dd: PUSH4 0xffffffff 000036e2: AND 000036e3: PUSH1 0xe0 000036e5: SHL 000036e6: DUP2 000036e7: MSTORE 000036e8: PUSH1 0x04 000036ea: ADD 000036eb: PUSH1 0x20 000036ed: PUSH1 0x40 000036ef: MLOAD 000036f0: DUP1 000036f1: DUP4 000036f2: SUB 000036f3: DUP2 000036f4: PUSH1 0x00 000036f6: DUP8 000036f7: GAS 000036f8: CALL 000036f9: ISZERO 000036fa: DUP1 000036fb: ISZERO 000036fc: PUSH2 0x3709 000036ff: JUMPI 00003700: RETURNDATASIZE 00003701: PUSH1 0x00 00003703: DUP1 00003704: RETURNDATACOPY 00003705: RETURNDATASIZE 00003706: PUSH1 0x00 00003708: REVERT 00003709: JUMPDEST 0000370a: POP 0000370b: POP 0000370c: POP 0000370d: POP 0000370e: PUSH1 0x40 00003710: MLOAD 00003711: RETURNDATASIZE 00003712: PUSH1 0x1f 00003714: NOT 00003715: PUSH1 0x1f 00003717: DUP3 00003718: ADD 00003719: AND 0000371a: DUP3 0000371b: ADD 0000371c: DUP1 0000371d: PUSH1 0x40 0000371f: MSTORE 00003720: POP 00003721: DUP2 00003722: ADD 00003723: SWAP1 00003724: PUSH2 0x372d 00003727: SWAP2 00003728: SWAP1 00003729: PUSH2 0x4ac3 0000372c: JUMP 0000372d: JUMPDEST 0000372e: SWAP1 0000372f: POP 00003730: DUP1 00003731: ISZERO 00003732: PUSH2 0x3751 00003735: JUMPI 00003736: PUSH1 0x40 00003738: MLOAD 00003739: PUSH4 0x3eea49b7 0000373e: PUSH1 0xe1 00003740: SHL 00003741: DUP2 00003742: MSTORE 00003743: PUSH1 0x04 00003745: DUP2 00003746: ADD 00003747: DUP3 00003748: SWAP1 00003749: MSTORE 0000374a: PUSH1 0x24 0000374c: ADD 0000374d: PUSH2 0x0a36 00003750: JUMP 00003751: JUMPDEST 00003752: PUSH2 0x375e 00003755: DUP7 00003756: DUP7 00003757: DUP7 00003758: DUP7 00003759: DUP7 0000375a: PUSH2 0x3fd5 0000375d: JUMP 0000375e: JUMPDEST 0000375f: POP 00003760: POP 00003761: PUSH1 0xc9 00003763: DUP1 00003764: SLOAD 00003765: PUSH1 0xff 00003767: NOT 00003768: AND 00003769: PUSH1 0x01 0000376b: OR 0000376c: SWAP1 0000376d: SSTORE 0000376e: POP 0000376f: POP 00003770: POP 00003771: POP 00003772: JUMP 00003773: JUMPDEST 00003774: PUSH1 0x00 00003776: PUSH2 0x377d 00003779: PUSH2 0x1e72 0000377c: JUMP 0000377d: JUMPDEST 0000377e: PUSH1 0xd1 00003780: SLOAD 00003781: EQ 00003782: PUSH2 0x379e 00003785: JUMPI 00003786: PUSH1 0x40 00003788: MLOAD 00003789: PUSH4 0x0be2a5cb 0000378e: PUSH1 0xe1 00003790: SHL 00003791: DUP2 00003792: MSTORE 00003793: PUSH1 0x04 00003795: ADD 00003796: PUSH1 0x40 00003798: MLOAD 00003799: DUP1 0000379a: SWAP2 0000379b: SUB 0000379c: SWAP1 0000379d: REVERT 0000379e: JUMPDEST 0000379f: PUSH1 0xce 000037a1: PUSH1 0x00 000037a3: SWAP1 000037a4: SLOAD 000037a5: SWAP1 000037a6: PUSH2 0x0100 000037a9: EXP 000037aa: SWAP1 000037ab: DIV 000037ac: PUSH1 0x01 000037ae: PUSH1 0x01 000037b0: PUSH1 0xa0 000037b2: SHL 000037b3: SUB 000037b4: AND 000037b5: SWAP1 000037b6: POP 000037b7: DUP2 000037b8: PUSH1 0x01 000037ba: PUSH1 0x01 000037bc: PUSH1 0xa0 000037be: SHL 000037bf: SUB 000037c0: AND 000037c1: PUSH4 0x2191f92a 000037c6: PUSH1 0x40 000037c8: MLOAD 000037c9: DUP2 000037ca: PUSH4 0xffffffff 000037cf: AND 000037d0: PUSH1 0xe0 000037d2: SHL 000037d3: DUP2 000037d4: MSTORE 000037d5: PUSH1 0x04 000037d7: ADD 000037d8: PUSH1 0x20 000037da: PUSH1 0x40 000037dc: MLOAD 000037dd: DUP1 000037de: DUP4 000037df: SUB 000037e0: DUP2 000037e1: DUP7 000037e2: GAS 000037e3: STATICCALL 000037e4: ISZERO 000037e5: DUP1 000037e6: ISZERO 000037e7: PUSH2 0x37f4 000037ea: JUMPI 000037eb: RETURNDATASIZE 000037ec: PUSH1 0x00 000037ee: DUP1 000037ef: RETURNDATACOPY 000037f0: RETURNDATASIZE 000037f1: PUSH1 0x00 000037f3: REVERT 000037f4: JUMPDEST 000037f5: POP 000037f6: POP 000037f7: POP 000037f8: POP 000037f9: PUSH1 0x40 000037fb: MLOAD 000037fc: RETURNDATASIZE 000037fd: PUSH1 0x1f 000037ff: NOT 00003800: PUSH1 0x1f 00003802: DUP3 00003803: ADD 00003804: AND 00003805: DUP3 00003806: ADD 00003807: DUP1 00003808: PUSH1 0x40 0000380a: MSTORE 0000380b: POP 0000380c: DUP2 0000380d: ADD 0000380e: SWAP1 0000380f: PUSH2 0x3818 00003812: SWAP2 00003813: SWAP1 00003814: PUSH2 0x4bb9 00003817: JUMP 00003818: JUMPDEST 00003819: PUSH2 0x3864 0000381c: JUMPI 0000381d: PUSH1 0x40 0000381f: MLOAD 00003820: PUSH3 0x461bcd 00003824: PUSH1 0xe5 00003826: SHL 00003827: DUP2 00003828: MSTORE 00003829: PUSH1 0x20 0000382b: PUSH1 0x04 0000382d: DUP3 0000382e: ADD 0000382f: MSTORE 00003830: PUSH1 0x1c 00003832: PUSH1 0x24 00003834: DUP3 00003835: ADD 00003836: MSTORE 00003837: PUSH32 0x6d61726b6572206d6574686f642072657475726e65642066616c736500000000 00003858: PUSH1 0x44 0000385a: DUP3 0000385b: ADD 0000385c: MSTORE 0000385d: PUSH1 0x64 0000385f: ADD 00003860: PUSH2 0x0a36 00003863: JUMP 00003864: JUMPDEST 00003865: PUSH1 0xce 00003867: DUP1 00003868: SLOAD 00003869: PUSH1 0x01 0000386b: PUSH1 0x01 0000386d: PUSH1 0xa0 0000386f: SHL 00003870: SUB 00003871: NOT 00003872: AND 00003873: PUSH1 0x01 00003875: PUSH1 0x01 00003877: PUSH1 0xa0 00003879: SHL 0000387a: SUB 0000387b: DUP5 0000387c: DUP2 0000387d: AND 0000387e: SWAP2 0000387f: DUP3 00003880: OR 00003881: SWAP1 00003882: SWAP3 00003883: SSTORE 00003884: PUSH1 0x40 00003886: MLOAD 00003887: SWAP1 00003888: SWAP2 00003889: DUP4 0000388a: AND 0000388b: SWAP1 0000388c: PUSH32 0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926 000038ad: SWAP1 000038ae: PUSH1 0x00 000038b0: SWAP1 000038b1: LOG3 000038b2: POP 000038b3: POP 000038b4: JUMP 000038b5: JUMPDEST 000038b6: PUSH1 0x40 000038b8: DUP1 000038b9: MLOAD 000038ba: PUSH1 0x20 000038bc: DUP2 000038bd: ADD 000038be: SWAP1 000038bf: SWAP2 000038c0: MSTORE 000038c1: PUSH1 0x00 000038c3: DUP2 000038c4: MSTORE 000038c5: PUSH1 0x40 000038c7: MLOAD 000038c8: DUP1 000038c9: PUSH1 0x20 000038cb: ADD 000038cc: PUSH1 0x40 000038ce: MSTORE 000038cf: DUP1 000038d0: PUSH2 0x38dd 000038d3: DUP6 000038d4: PUSH1 0x00 000038d6: ADD 000038d7: MLOAD 000038d8: DUP6 000038d9: PUSH2 0x4463 000038dc: JUMP 000038dd: JUMPDEST 000038de: SWAP1 000038df: MSTORE 000038e0: SWAP4 000038e1: SWAP3 000038e2: POP 000038e3: POP 000038e4: POP 000038e5: JUMP 000038e6: JUMPDEST 000038e7: PUSH1 0x00 000038e9: DUP1 000038ea: PUSH2 0x38f3 000038ed: DUP6 000038ee: DUP6 000038ef: PUSH2 0x38b5 000038f2: JUMP 000038f3: JUMPDEST 000038f4: SWAP1 000038f5: POP 000038f6: PUSH2 0x268a 000038f9: PUSH2 0x3901 000038fc: DUP3 000038fd: PUSH2 0x3de3 00003900: JUMP 00003901: JUMPDEST 00003902: DUP5 00003903: PUSH2 0x446f 00003906: JUMP 00003907: JUMPDEST 00003908: PUSH1 0xcd 0000390a: SLOAD 0000390b: PUSH1 0x40 0000390d: MLOAD 0000390e: PUSH4 0x037883e5 00003913: PUSH1 0xe3 00003915: SHL 00003916: DUP2 00003917: MSTORE 00003918: ADDRESS 00003919: PUSH1 0x04 0000391b: DUP3 0000391c: ADD 0000391d: MSTORE 0000391e: PUSH1 0x01 00003920: PUSH1 0x01 00003922: PUSH1 0xa0 00003924: SHL 00003925: SUB 00003926: DUP7 00003927: DUP2 00003928: AND 00003929: PUSH1 0x24 0000392b: DUP4 0000392c: ADD 0000392d: MSTORE 0000392e: DUP6 0000392f: DUP2 00003930: AND 00003931: PUSH1 0x44 00003933: DUP4 00003934: ADD 00003935: MSTORE 00003936: DUP5 00003937: DUP2 00003938: AND 00003939: PUSH1 0x64 0000393b: DUP4 0000393c: ADD 0000393d: MSTORE 0000393e: SWAP1 0000393f: SWAP2 00003940: AND 00003941: SWAP1 00003942: PUSH4 0x1bc41f28 00003947: SWAP1 00003948: PUSH1 0x84 0000394a: ADD 0000394b: PUSH1 0x00 0000394d: PUSH1 0x40 0000394f: MLOAD 00003950: DUP1 00003951: DUP4 00003952: SUB 00003953: DUP2 00003954: PUSH1 0x00 00003956: DUP8 00003957: DUP1 00003958: EXTCODESIZE 00003959: ISZERO 0000395a: DUP1 0000395b: ISZERO 0000395c: PUSH2 0x3964 0000395f: JUMPI 00003960: PUSH1 0x00 00003962: DUP1 00003963: REVERT 00003964: JUMPDEST 00003965: POP 00003966: GAS 00003967: CALL 00003968: ISZERO 00003969: DUP1 0000396a: ISZERO 0000396b: PUSH2 0x3978 0000396e: JUMPI 0000396f: RETURNDATASIZE 00003970: PUSH1 0x00 00003972: DUP1 00003973: RETURNDATACOPY 00003974: RETURNDATASIZE 00003975: PUSH1 0x00 00003977: REVERT 00003978: JUMPDEST 00003979: POP 0000397a: POP 0000397b: POP 0000397c: POP 0000397d: DUP3 0000397e: PUSH1 0x01 00003980: PUSH1 0x01 00003982: PUSH1 0xa0 00003984: SHL 00003985: SUB 00003986: AND 00003987: DUP3 00003988: PUSH1 0x01 0000398a: PUSH1 0x01 0000398c: PUSH1 0xa0 0000398e: SHL 0000398f: SUB 00003990: AND 00003991: SUB 00003992: PUSH2 0x39ae 00003995: JUMPI 00003996: PUSH1 0x40 00003998: MLOAD 00003999: PUSH4 0x3a946267 0000399e: PUSH1 0xe1 000039a0: SHL 000039a1: DUP2 000039a2: MSTORE 000039a3: PUSH1 0x04 000039a5: ADD 000039a6: PUSH1 0x40 000039a8: MLOAD 000039a9: DUP1 000039aa: SWAP2 000039ab: SUB 000039ac: SWAP1 000039ad: REVERT 000039ae: JUMPDEST 000039af: PUSH1 0xcd 000039b1: SLOAD 000039b2: PUSH1 0x40 000039b4: DUP1 000039b5: MLOAD 000039b6: PUSH4 0x4ada90af 000039bb: PUSH1 0xe0 000039bd: SHL 000039be: DUP2 000039bf: MSTORE 000039c0: SWAP1 000039c1: MLOAD 000039c2: PUSH1 0x00 000039c4: SWAP3 000039c5: PUSH1 0x01 000039c7: PUSH1 0x01 000039c9: PUSH1 0xa0 000039cb: SHL 000039cc: SUB 000039cd: AND 000039ce: SWAP2 000039cf: PUSH4 0x4ada90af 000039d4: SWAP2 000039d5: PUSH1 0x04 000039d7: DUP1 000039d8: DUP4 000039d9: ADD 000039da: SWAP3 000039db: PUSH1 0x20 000039dd: SWAP3 000039de: SWAP2 000039df: SWAP1 000039e0: DUP3 000039e1: SWAP1 000039e2: SUB 000039e3: ADD 000039e4: DUP2 000039e5: DUP7 000039e6: GAS 000039e7: STATICCALL 000039e8: ISZERO 000039e9: DUP1 000039ea: ISZERO 000039eb: PUSH2 0x39f8 000039ee: JUMPI 000039ef: RETURNDATASIZE 000039f0: PUSH1 0x00 000039f2: DUP1 000039f3: RETURNDATACOPY 000039f4: RETURNDATASIZE 000039f5: PUSH1 0x00 000039f7: REVERT 000039f8: JUMPDEST 000039f9: POP 000039fa: POP 000039fb: POP 000039fc: POP 000039fd: PUSH1 0x40 000039ff: MLOAD 00003a00: RETURNDATASIZE 00003a01: PUSH1 0x1f 00003a03: NOT 00003a04: PUSH1 0x1f 00003a06: DUP3 00003a07: ADD 00003a08: AND 00003a09: DUP3 00003a0a: ADD 00003a0b: DUP1 00003a0c: PUSH1 0x40 00003a0e: MSTORE 00003a0f: POP 00003a10: DUP2 00003a11: ADD 00003a12: SWAP1 00003a13: PUSH2 0x3a1c 00003a16: SWAP2 00003a17: SWAP1 00003a18: PUSH2 0x4ac3 00003a1b: JUMP 00003a1c: JUMPDEST 00003a1d: SWAP1 00003a1e: POP 00003a1f: PUSH1 0x00 00003a21: PUSH2 0x3a3a 00003a24: DUP4 00003a25: PUSH1 0x40 00003a27: MLOAD 00003a28: DUP1 00003a29: PUSH1 0x20 00003a2b: ADD 00003a2c: PUSH1 0x40 00003a2e: MSTORE 00003a2f: DUP1 00003a30: PUSH1 0xda 00003a32: SLOAD 00003a33: DUP2 00003a34: MSTORE 00003a35: POP 00003a36: PUSH2 0x3dc0 00003a39: JUMP 00003a3a: JUMPDEST 00003a3b: SWAP1 00003a3c: POP 00003a3d: PUSH1 0x00 00003a3f: PUSH2 0x3a56 00003a42: DUP3 00003a43: PUSH1 0x40 00003a45: MLOAD 00003a46: DUP1 00003a47: PUSH1 0x20 00003a49: ADD 00003a4a: PUSH1 0x40 00003a4c: MSTORE 00003a4d: DUP1 00003a4e: DUP7 00003a4f: DUP2 00003a50: MSTORE 00003a51: POP 00003a52: PUSH2 0x3da2 00003a55: JUMP 00003a56: JUMPDEST 00003a57: SWAP1 00003a58: POP 00003a59: PUSH1 0x00 00003a5b: PUSH2 0x3a64 00003a5e: DUP3 00003a5f: DUP7 00003a60: PUSH2 0x4b05 00003a63: JUMP 00003a64: JUMPDEST 00003a65: SWAP1 00003a66: POP 00003a67: PUSH1 0x00 00003a69: PUSH1 0x40 00003a6b: MLOAD 00003a6c: DUP1 00003a6d: PUSH1 0x20 00003a6f: ADD 00003a70: PUSH1 0x40 00003a72: MSTORE 00003a73: DUP1 00003a74: PUSH2 0x3a7b 00003a77: PUSH2 0x261e 00003a7a: JUMP 00003a7b: JUMPDEST 00003a7c: SWAP1 00003a7d: MSTORE 00003a7e: SWAP1 00003a7f: POP 00003a80: PUSH1 0x00 00003a82: PUSH2 0x3a8b 00003a85: DUP3 00003a86: DUP6 00003a87: PUSH2 0x3022 00003a8a: JUMP 00003a8b: JUMPDEST 00003a8c: SWAP1 00003a8d: POP 00003a8e: DUP4 00003a8f: PUSH1 0xd5 00003a91: SLOAD 00003a92: PUSH2 0x3a9b 00003a95: SWAP2 00003a96: SWAP1 00003a97: PUSH2 0x4b05 00003a9a: JUMP 00003a9b: JUMPDEST 00003a9c: PUSH1 0xd5 00003a9e: SSTORE 00003a9f: PUSH1 0x01 00003aa1: PUSH1 0x01 00003aa3: PUSH1 0xa0 00003aa5: SHL 00003aa6: SUB 00003aa7: DUP9 00003aa8: AND 00003aa9: PUSH1 0x00 00003aab: SWAP1 00003aac: DUP2 00003aad: MSTORE 00003aae: PUSH1 0xd7 00003ab0: PUSH1 0x20 00003ab2: MSTORE 00003ab3: PUSH1 0x40 00003ab5: SWAP1 00003ab6: KECCAK256 00003ab7: SLOAD 00003ab8: PUSH2 0x3ac2 00003abb: SWAP1 00003abc: DUP9 00003abd: SWAP1 00003abe: PUSH2 0x4b05 00003ac1: JUMP 00003ac2: JUMPDEST 00003ac3: PUSH1 0x01 00003ac5: PUSH1 0x01 00003ac7: PUSH1 0xa0 00003ac9: SHL 00003aca: SUB 00003acb: DUP1 00003acc: DUP11 00003acd: AND 00003ace: PUSH1 0x00 00003ad0: SWAP1 00003ad1: DUP2 00003ad2: MSTORE 00003ad3: PUSH1 0xd7 00003ad5: PUSH1 0x20 00003ad7: MSTORE 00003ad8: PUSH1 0x40 00003ada: DUP1 00003adb: DUP3 00003adc: KECCAK256 00003add: SWAP4 00003ade: SWAP1 00003adf: SWAP4 00003ae0: SSTORE 00003ae1: SWAP1 00003ae2: DUP12 00003ae3: AND 00003ae4: DUP2 00003ae5: MSTORE 00003ae6: KECCAK256 00003ae7: SLOAD 00003ae8: PUSH2 0x3af2 00003aeb: SWAP1 00003aec: DUP5 00003aed: SWAP1 00003aee: PUSH2 0x4af2 00003af1: JUMP 00003af2: JUMPDEST 00003af3: PUSH1 0x01 00003af5: PUSH1 0x01 00003af7: PUSH1 0xa0 00003af9: SHL 00003afa: SUB 00003afb: DUP1 00003afc: DUP12 00003afd: AND 00003afe: PUSH1 0x00 00003b00: SWAP1 00003b01: DUP2 00003b02: MSTORE 00003b03: PUSH1 0xd7 00003b05: PUSH1 0x20 00003b07: MSTORE 00003b08: PUSH1 0x40 00003b0a: SWAP1 00003b0b: KECCAK256 00003b0c: SWAP2 00003b0d: SWAP1 00003b0e: SWAP2 00003b0f: SSTORE 00003b10: PUSH1 0xcc 00003b12: SLOAD 00003b13: PUSH2 0x3b23 00003b16: SWAP2 00003b17: PUSH2 0x0100 00003b1a: SWAP1 00003b1b: SWAP2 00003b1c: DIV 00003b1d: AND 00003b1e: DUP3 00003b1f: PUSH2 0x3cb1 00003b22: JUMP 00003b23: JUMPDEST 00003b24: PUSH1 0xcc 00003b26: SLOAD 00003b27: PUSH1 0xcd 00003b29: SLOAD 00003b2a: PUSH1 0xc9 00003b2c: SLOAD 00003b2d: PUSH1 0x40 00003b2f: MLOAD 00003b30: PUSH4 0x05bebb3b 00003b35: PUSH1 0xe2 00003b37: SHL 00003b38: DUP2 00003b39: MSTORE 00003b3a: PUSH1 0x01 00003b3c: PUSH1 0x01 00003b3e: PUSH1 0xa0 00003b40: SHL 00003b41: SUB 00003b42: PUSH2 0x0100 00003b45: SWAP5 00003b46: DUP6 00003b47: SWAP1 00003b48: DIV 00003b49: DUP2 00003b4a: AND 00003b4b: SWAP5 00003b4c: PUSH4 0x16faecec 00003b51: SWAP5 00003b52: PUSH2 0x3b6b 00003b55: SWAP5 00003b56: SWAP1 00003b57: DUP4 00003b58: AND 00003b59: SWAP4 00003b5a: SWAP2 00003b5b: SWAP1 00003b5c: DIV 00003b5d: SWAP1 00003b5e: SWAP2 00003b5f: AND 00003b60: SWAP1 00003b61: PUSH1 0x01 00003b63: SWAP1 00003b64: PUSH1 0x04 00003b66: ADD 00003b67: PUSH2 0x4b18 00003b6a: JUMP 00003b6b: JUMPDEST 00003b6c: PUSH1 0x00 00003b6e: PUSH1 0x40 00003b70: MLOAD 00003b71: DUP1 00003b72: DUP4 00003b73: SUB 00003b74: DUP2 00003b75: PUSH1 0x00 00003b77: DUP8 00003b78: DUP1 00003b79: EXTCODESIZE 00003b7a: ISZERO 00003b7b: DUP1 00003b7c: ISZERO 00003b7d: PUSH2 0x3b85 00003b80: JUMPI 00003b81: PUSH1 0x00 00003b83: DUP1 00003b84: REVERT 00003b85: JUMPDEST 00003b86: POP 00003b87: GAS 00003b88: CALL 00003b89: ISZERO 00003b8a: DUP1 00003b8b: ISZERO 00003b8c: PUSH2 0x3b99 00003b8f: JUMPI 00003b90: RETURNDATASIZE 00003b91: PUSH1 0x00 00003b93: DUP1 00003b94: RETURNDATACOPY 00003b95: RETURNDATASIZE 00003b96: PUSH1 0x00 00003b98: REVERT 00003b99: JUMPDEST 00003b9a: POP 00003b9b: POP 00003b9c: POP 00003b9d: POP 00003b9e: DUP9 00003b9f: PUSH1 0x01 00003ba1: PUSH1 0x01 00003ba3: PUSH1 0xa0 00003ba5: SHL 00003ba6: SUB 00003ba7: AND 00003ba8: DUP9 00003ba9: PUSH1 0x01 00003bab: PUSH1 0x01 00003bad: PUSH1 0xa0 00003baf: SHL 00003bb0: SUB 00003bb1: AND 00003bb2: PUSH1 0x00 00003bb4: DUP1 00003bb5: MLOAD 00003bb6: PUSH1 0x20 00003bb8: PUSH2 0x4dff 00003bbb: DUP4 00003bbc: CODECOPY 00003bbd: DUP2 00003bbe: MLOAD 00003bbf: SWAP2 00003bc0: MSTORE 00003bc1: DUP6 00003bc2: PUSH1 0x40 00003bc4: MLOAD 00003bc5: PUSH2 0x3bd0 00003bc8: SWAP2 00003bc9: DUP2 00003bca: MSTORE 00003bcb: PUSH1 0x20 00003bcd: ADD 00003bce: SWAP1 00003bcf: JUMP 00003bd0: JUMPDEST 00003bd1: PUSH1 0x40 00003bd3: MLOAD 00003bd4: DUP1 00003bd5: SWAP2 00003bd6: SUB 00003bd7: SWAP1 00003bd8: LOG3 00003bd9: PUSH1 0xcc 00003bdb: SLOAD 00003bdc: PUSH1 0x40 00003bde: MLOAD 00003bdf: PUSH1 0x01 00003be1: PUSH1 0x01 00003be3: PUSH1 0xa0 00003be5: SHL 00003be6: SUB 00003be7: PUSH2 0x0100 00003bea: SWAP1 00003beb: SWAP3 00003bec: DIV 00003bed: DUP3 00003bee: AND 00003bef: SWAP2 00003bf0: DUP11 00003bf1: AND 00003bf2: SWAP1 00003bf3: PUSH32 0x3ac0548d62d3fa3c9a817cd33899b9acacd57e8958ebe51bc7d9a79f26a8a5db 00003c14: SWAP1 00003c15: PUSH2 0x3c21 00003c18: SWAP1 00003c19: DUP6 00003c1a: DUP2 00003c1b: MSTORE 00003c1c: PUSH1 0x20 00003c1e: ADD 00003c1f: SWAP1 00003c20: JUMP 00003c21: JUMPDEST 00003c22: PUSH1 0x40 00003c24: MLOAD 00003c25: DUP1 00003c26: SWAP2 00003c27: SUB 00003c28: SWAP1 00003c29: LOG3 00003c2a: PUSH1 0xcd 00003c2c: SLOAD 00003c2d: PUSH1 0x40 00003c2f: MLOAD 00003c30: PUSH4 0x6d35bf91 00003c35: PUSH1 0xe0 00003c37: SHL 00003c38: DUP2 00003c39: MSTORE 00003c3a: ADDRESS 00003c3b: PUSH1 0x04 00003c3d: DUP3 00003c3e: ADD 00003c3f: MSTORE 00003c40: PUSH1 0x01 00003c42: PUSH1 0x01 00003c44: PUSH1 0xa0 00003c46: SHL 00003c47: SUB 00003c48: DUP13 00003c49: DUP2 00003c4a: AND 00003c4b: PUSH1 0x24 00003c4d: DUP4 00003c4e: ADD 00003c4f: MSTORE 00003c50: DUP12 00003c51: DUP2 00003c52: AND 00003c53: PUSH1 0x44 00003c55: DUP4 00003c56: ADD 00003c57: MSTORE 00003c58: DUP11 00003c59: DUP2 00003c5a: AND 00003c5b: PUSH1 0x64 00003c5d: DUP4 00003c5e: ADD 00003c5f: MSTORE 00003c60: PUSH1 0x84 00003c62: DUP3 00003c63: ADD 00003c64: DUP11 00003c65: SWAP1 00003c66: MSTORE 00003c67: SWAP1 00003c68: SWAP2 00003c69: AND 00003c6a: SWAP1 00003c6b: PUSH4 0x6d35bf91 00003c70: SWAP1 00003c71: PUSH1 0xa4 00003c73: ADD 00003c74: PUSH1 0x00 00003c76: PUSH1 0x40 00003c78: MLOAD 00003c79: DUP1 00003c7a: DUP4 00003c7b: SUB 00003c7c: DUP2 00003c7d: PUSH1 0x00 00003c7f: DUP8 00003c80: DUP1 00003c81: EXTCODESIZE 00003c82: ISZERO 00003c83: DUP1 00003c84: ISZERO 00003c85: PUSH2 0x3c8d 00003c88: JUMPI 00003c89: PUSH1 0x00 00003c8b: DUP1 00003c8c: REVERT 00003c8d: JUMPDEST 00003c8e: POP 00003c8f: GAS 00003c90: CALL 00003c91: ISZERO 00003c92: DUP1 00003c93: ISZERO 00003c94: PUSH2 0x3ca1 00003c97: JUMPI 00003c98: RETURNDATASIZE 00003c99: PUSH1 0x00 00003c9b: DUP1 00003c9c: RETURNDATACOPY 00003c9d: RETURNDATASIZE 00003c9e: PUSH1 0x00 00003ca0: REVERT 00003ca1: JUMPDEST 00003ca2: POP 00003ca3: POP 00003ca4: POP 00003ca5: POP 00003ca6: POP 00003ca7: POP 00003ca8: POP 00003ca9: POP 00003caa: POP 00003cab: POP 00003cac: POP 00003cad: POP 00003cae: POP 00003caf: POP 00003cb0: JUMP 00003cb1: JUMPDEST 00003cb2: PUSH1 0xc9 00003cb4: SLOAD 00003cb5: PUSH2 0x0100 00003cb8: SWAP1 00003cb9: DIV 00003cba: PUSH1 0x01 00003cbc: PUSH1 0x01 00003cbe: PUSH1 0xa0 00003cc0: SHL 00003cc1: SUB 00003cc2: AND 00003cc3: PUSH2 0x26f6 00003cc6: DUP2 00003cc7: DUP5 00003cc8: DUP5 00003cc9: PUSH2 0x2693 00003ccc: JUMP 00003ccd: JUMPDEST 00003cce: PUSH1 0x00 00003cd0: PUSH2 0x3d22 00003cd3: DUP3 00003cd4: PUSH1 0x40 00003cd6: MLOAD 00003cd7: DUP1 00003cd8: PUSH1 0x40 00003cda: ADD 00003cdb: PUSH1 0x40 00003cdd: MSTORE 00003cde: DUP1 00003cdf: PUSH1 0x20 00003ce1: DUP2 00003ce2: MSTORE 00003ce3: PUSH1 0x20 00003ce5: ADD 00003ce6: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00003d07: DUP2 00003d08: MSTORE 00003d09: POP 00003d0a: DUP6 00003d0b: PUSH1 0x01 00003d0d: PUSH1 0x01 00003d0f: PUSH1 0xa0 00003d11: SHL 00003d12: SUB 00003d13: AND 00003d14: PUSH2 0x447b 00003d17: SWAP1 00003d18: SWAP3 00003d19: SWAP2 00003d1a: SWAP1 00003d1b: PUSH4 0xffffffff 00003d20: AND 00003d21: JUMP 00003d22: JUMPDEST 00003d23: SWAP1 00003d24: POP 00003d25: DUP1 00003d26: MLOAD 00003d27: PUSH1 0x00 00003d29: EQ 00003d2a: DUP1 00003d2b: PUSH2 0x3d43 00003d2e: JUMPI 00003d2f: POP 00003d30: DUP1 00003d31: DUP1 00003d32: PUSH1 0x20 00003d34: ADD 00003d35: SWAP1 00003d36: MLOAD 00003d37: DUP2 00003d38: ADD 00003d39: SWAP1 00003d3a: PUSH2 0x3d43 00003d3d: SWAP2 00003d3e: SWAP1 00003d3f: PUSH2 0x4bb9 00003d42: JUMP 00003d43: JUMPDEST 00003d44: PUSH2 0x26f6 00003d47: JUMPI 00003d48: PUSH1 0x40 00003d4a: MLOAD 00003d4b: PUSH3 0x461bcd 00003d4f: PUSH1 0xe5 00003d51: SHL 00003d52: DUP2 00003d53: MSTORE 00003d54: PUSH1 0x20 00003d56: PUSH1 0x04 00003d58: DUP3 00003d59: ADD 00003d5a: MSTORE 00003d5b: PUSH1 0x2a 00003d5d: PUSH1 0x24 00003d5f: DUP3 00003d60: ADD 00003d61: MSTORE 00003d62: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00003d83: PUSH1 0x44 00003d85: DUP3 00003d86: ADD 00003d87: MSTORE 00003d88: PUSH10 0x1bdd081cdd58d8d95959 00003d93: PUSH1 0xb2 00003d95: SHL 00003d96: PUSH1 0x64 00003d98: DUP3 00003d99: ADD 00003d9a: MSTORE 00003d9b: PUSH1 0x84 00003d9d: ADD 00003d9e: PUSH2 0x0a36 00003da1: JUMP 00003da2: JUMPDEST 00003da3: PUSH1 0x00 00003da5: PUSH2 0x10eb 00003da8: PUSH2 0x3db9 00003dab: DUP5 00003dac: PUSH8 0x0de0b6b3a7640000 00003db5: PUSH2 0x4463 00003db8: JUMP 00003db9: JUMPDEST 00003dba: DUP4 00003dbb: MLOAD 00003dbc: PUSH2 0x448a 00003dbf: JUMP 00003dc0: JUMPDEST 00003dc1: PUSH1 0x00 00003dc3: PUSH8 0x0de0b6b3a7640000 00003dcc: PUSH2 0x3dd9 00003dcf: DUP5 00003dd0: DUP5 00003dd1: PUSH1 0x00 00003dd3: ADD 00003dd4: MLOAD 00003dd5: PUSH2 0x4463 00003dd8: JUMP 00003dd9: JUMPDEST 00003dda: PUSH2 0x10eb 00003ddd: SWAP2 00003dde: SWAP1 00003ddf: PUSH2 0x4b73 00003de2: JUMP 00003de3: JUMPDEST 00003de4: DUP1 00003de5: MLOAD 00003de6: PUSH1 0x00 00003de8: SWAP1 00003de9: PUSH2 0x0ae6 00003dec: SWAP1 00003ded: PUSH8 0x0de0b6b3a7640000 00003df6: SWAP1 00003df7: PUSH2 0x4b73 00003dfa: JUMP 00003dfb: JUMPDEST 00003dfc: PUSH2 0x3e1c 00003dff: DUP5 00003e00: PUSH4 0x23b872dd 00003e05: PUSH1 0xe0 00003e07: SHL 00003e08: DUP6 00003e09: DUP6 00003e0a: DUP6 00003e0b: PUSH1 0x40 00003e0d: MLOAD 00003e0e: PUSH1 0x24 00003e10: ADD 00003e11: PUSH2 0x26bf 00003e14: SWAP4 00003e15: SWAP3 00003e16: SWAP2 00003e17: SWAP1 00003e18: PUSH2 0x4c1b 00003e1b: JUMP 00003e1c: JUMPDEST 00003e1d: POP 00003e1e: POP 00003e1f: POP 00003e20: POP 00003e21: JUMP 00003e22: JUMPDEST 00003e23: PUSH1 0x33 00003e25: DUP1 00003e26: SLOAD 00003e27: PUSH1 0x01 00003e29: PUSH1 0x01 00003e2b: PUSH1 0xa0 00003e2d: SHL 00003e2e: SUB 00003e2f: DUP4 00003e30: DUP2 00003e31: AND 00003e32: PUSH1 0x01 00003e34: PUSH1 0x01 00003e36: PUSH1 0xa0 00003e38: SHL 00003e39: SUB 00003e3a: NOT 00003e3b: DUP4 00003e3c: AND 00003e3d: DUP2 00003e3e: OR 00003e3f: SWAP1 00003e40: SWAP4 00003e41: SSTORE 00003e42: PUSH1 0x40 00003e44: MLOAD 00003e45: SWAP2 00003e46: AND 00003e47: SWAP2 00003e48: SWAP1 00003e49: DUP3 00003e4a: SWAP1 00003e4b: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00003e6c: SWAP1 00003e6d: PUSH1 0x00 00003e6f: SWAP1 00003e70: LOG3 00003e71: POP 00003e72: POP 00003e73: JUMP 00003e74: JUMPDEST 00003e75: PUSH1 0x00 00003e77: SLOAD 00003e78: PUSH2 0x0100 00003e7b: SWAP1 00003e7c: DIV 00003e7d: PUSH1 0xff 00003e7f: AND 00003e80: PUSH2 0x3e9b 00003e83: JUMPI 00003e84: PUSH1 0x40 00003e86: MLOAD 00003e87: PUSH3 0x461bcd 00003e8b: PUSH1 0xe5 00003e8d: SHL 00003e8e: DUP2 00003e8f: MSTORE 00003e90: PUSH1 0x04 00003e92: ADD 00003e93: PUSH2 0x0a36 00003e96: SWAP1 00003e97: PUSH2 0x4c3f 00003e9a: JUMP 00003e9b: JUMPDEST 00003e9c: PUSH2 0x13c2 00003e9f: PUSH2 0x4496 00003ea2: JUMP 00003ea3: JUMPDEST 00003ea4: PUSH1 0x00 00003ea6: SLOAD 00003ea7: PUSH2 0x0100 00003eaa: SWAP1 00003eab: DIV 00003eac: PUSH1 0xff 00003eae: AND 00003eaf: PUSH2 0x0af4 00003eb2: JUMPI 00003eb3: PUSH1 0x40 00003eb5: MLOAD 00003eb6: PUSH3 0x461bcd 00003eba: PUSH1 0xe5 00003ebc: SHL 00003ebd: DUP2 00003ebe: MSTORE 00003ebf: PUSH1 0x04 00003ec1: ADD 00003ec2: PUSH2 0x0a36 00003ec5: SWAP1 00003ec6: PUSH2 0x4c3f 00003ec9: JUMP 00003eca: JUMPDEST 00003ecb: PUSH1 0xcd 00003ecd: SLOAD 00003ece: PUSH1 0x40 00003ed0: DUP1 00003ed1: MLOAD 00003ed2: PUSH3 0x3f1ee9 00003ed6: PUSH1 0xe1 00003ed8: SHL 00003ed9: DUP2 00003eda: MSTORE 00003edb: SWAP1 00003edc: MLOAD 00003edd: PUSH1 0x01 00003edf: PUSH1 0x01 00003ee1: PUSH1 0xa0 00003ee3: SHL 00003ee4: SUB 00003ee5: SWAP3 00003ee6: DUP4 00003ee7: AND 00003ee8: SWAP3 00003ee9: DUP5 00003eea: AND 00003eeb: SWAP2 00003eec: PUSH3 0x7e3dd2 00003ef0: SWAP2 00003ef1: PUSH1 0x04 00003ef3: DUP1 00003ef4: DUP4 00003ef5: ADD 00003ef6: SWAP3 00003ef7: PUSH1 0x20 00003ef9: SWAP3 00003efa: SWAP2 00003efb: SWAP1 00003efc: DUP3 00003efd: SWAP1 00003efe: SUB 00003eff: ADD 00003f00: DUP2 00003f01: DUP7 00003f02: GAS 00003f03: STATICCALL 00003f04: ISZERO 00003f05: DUP1 00003f06: ISZERO 00003f07: PUSH2 0x3f14 00003f0a: JUMPI 00003f0b: RETURNDATASIZE 00003f0c: PUSH1 0x00 00003f0e: DUP1 00003f0f: RETURNDATACOPY 00003f10: RETURNDATASIZE 00003f11: PUSH1 0x00 00003f13: REVERT 00003f14: JUMPDEST 00003f15: POP 00003f16: POP 00003f17: POP 00003f18: POP 00003f19: PUSH1 0x40 00003f1b: MLOAD 00003f1c: RETURNDATASIZE 00003f1d: PUSH1 0x1f 00003f1f: NOT 00003f20: PUSH1 0x1f 00003f22: DUP3 00003f23: ADD 00003f24: AND 00003f25: DUP3 00003f26: ADD 00003f27: DUP1 00003f28: PUSH1 0x40 00003f2a: MSTORE 00003f2b: POP 00003f2c: DUP2 00003f2d: ADD 00003f2e: SWAP1 00003f2f: PUSH2 0x3f38 00003f32: SWAP2 00003f33: SWAP1 00003f34: PUSH2 0x4bb9 00003f37: JUMP 00003f38: JUMPDEST 00003f39: PUSH2 0x3f84 00003f3c: JUMPI 00003f3d: PUSH1 0x40 00003f3f: MLOAD 00003f40: PUSH3 0x461bcd 00003f44: PUSH1 0xe5 00003f46: SHL 00003f47: DUP2 00003f48: MSTORE 00003f49: PUSH1 0x20 00003f4b: PUSH1 0x04 00003f4d: DUP3 00003f4e: ADD 00003f4f: MSTORE 00003f50: PUSH1 0x1c 00003f52: PUSH1 0x24 00003f54: DUP3 00003f55: ADD 00003f56: MSTORE 00003f57: PUSH32 0x6d61726b6572206d6574686f642072657475726e65642066616c736500000000 00003f78: PUSH1 0x44 00003f7a: DUP3 00003f7b: ADD 00003f7c: MSTORE 00003f7d: PUSH1 0x64 00003f7f: ADD 00003f80: PUSH2 0x0a36 00003f83: JUMP 00003f84: JUMPDEST 00003f85: PUSH1 0xcd 00003f87: DUP1 00003f88: SLOAD 00003f89: PUSH1 0x01 00003f8b: PUSH1 0x01 00003f8d: PUSH1 0xa0 00003f8f: SHL 00003f90: SUB 00003f91: NOT 00003f92: AND 00003f93: PUSH1 0x01 00003f95: PUSH1 0x01 00003f97: PUSH1 0xa0 00003f99: SHL 00003f9a: SUB 00003f9b: DUP5 00003f9c: DUP2 00003f9d: AND 00003f9e: SWAP2 00003f9f: DUP3 00003fa0: OR 00003fa1: SWAP1 00003fa2: SWAP3 00003fa3: SSTORE 00003fa4: PUSH1 0x40 00003fa6: MLOAD 00003fa7: SWAP1 00003fa8: SWAP2 00003fa9: DUP4 00003faa: AND 00003fab: SWAP1 00003fac: PUSH32 0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d 00003fcd: SWAP1 00003fce: PUSH1 0x00 00003fd0: SWAP1 00003fd1: LOG3 00003fd2: POP 00003fd3: POP 00003fd4: JUMP 00003fd5: JUMPDEST 00003fd6: PUSH1 0xcd 00003fd8: SLOAD 00003fd9: PUSH1 0x40 00003fdb: MLOAD 00003fdc: PUSH4 0xe89d51ad 00003fe1: PUSH1 0xe0 00003fe3: SHL 00003fe4: DUP2 00003fe5: MSTORE 00003fe6: ADDRESS 00003fe7: PUSH1 0x04 00003fe9: DUP3 00003fea: ADD 00003feb: MSTORE 00003fec: PUSH1 0x01 00003fee: PUSH1 0x01 00003ff0: PUSH1 0xa0 00003ff2: SHL 00003ff3: SUB 00003ff4: DUP5 00003ff5: DUP2 00003ff6: AND 00003ff7: PUSH1 0x24 00003ff9: DUP4 00003ffa: ADD 00003ffb: MSTORE 00003ffc: DUP7 00003ffd: DUP2 00003ffe: AND 00003fff: PUSH1 0x44 00004001: DUP4 00004002: ADD 00004003: MSTORE 00004004: PUSH1 0x64 00004006: DUP3 00004007: ADD 00004008: DUP7 00004009: SWAP1 0000400a: MSTORE 0000400b: DUP4 0000400c: ISZERO 0000400d: ISZERO 0000400e: PUSH1 0x84 00004010: DUP4 00004011: ADD 00004012: MSTORE 00004013: SWAP1 00004014: SWAP2 00004015: AND 00004016: SWAP1 00004017: PUSH4 0xe89d51ad 0000401c: SWAP1 0000401d: PUSH1 0xa4 0000401f: ADD 00004020: PUSH1 0x00 00004022: PUSH1 0x40 00004024: MLOAD 00004025: DUP1 00004026: DUP4 00004027: SUB 00004028: DUP2 00004029: PUSH1 0x00 0000402b: DUP8 0000402c: DUP1 0000402d: EXTCODESIZE 0000402e: ISZERO 0000402f: DUP1 00004030: ISZERO 00004031: PUSH2 0x4039 00004034: JUMPI 00004035: PUSH1 0x00 00004037: DUP1 00004038: REVERT 00004039: JUMPDEST 0000403a: POP 0000403b: GAS 0000403c: CALL 0000403d: ISZERO 0000403e: DUP1 0000403f: ISZERO 00004040: PUSH2 0x404d 00004043: JUMPI 00004044: RETURNDATASIZE 00004045: PUSH1 0x00 00004047: DUP1 00004048: RETURNDATACOPY 00004049: RETURNDATASIZE 0000404a: PUSH1 0x00 0000404c: REVERT 0000404d: JUMPDEST 0000404e: POP 0000404f: POP 00004050: POP 00004051: POP 00004052: PUSH2 0x4059 00004055: PUSH2 0x1e72 00004058: JUMP 00004059: JUMPDEST 0000405a: PUSH1 0xd1 0000405c: SLOAD 0000405d: EQ 0000405e: PUSH2 0x407a 00004061: JUMPI 00004062: PUSH1 0x40 00004064: MLOAD 00004065: PUSH4 0x80965b1b 0000406a: PUSH1 0xe0 0000406c: SHL 0000406d: DUP2 0000406e: MSTORE 0000406f: PUSH1 0x04 00004071: ADD 00004072: PUSH1 0x40 00004074: MLOAD 00004075: DUP1 00004076: SWAP2 00004077: SUB 00004078: SWAP1 00004079: REVERT 0000407a: JUMPDEST 0000407b: PUSH2 0x4082 0000407e: PUSH2 0x1e72 00004081: JUMP 00004082: JUMPDEST 00004083: DUP3 00004084: PUSH1 0x01 00004086: PUSH1 0x01 00004088: PUSH1 0xa0 0000408a: SHL 0000408b: SUB 0000408c: AND 0000408d: PUSH4 0x6c540baf 00004092: PUSH1 0x40 00004094: MLOAD 00004095: DUP2 00004096: PUSH4 0xffffffff 0000409b: AND 0000409c: PUSH1 0xe0 0000409e: SHL 0000409f: DUP2 000040a0: MSTORE 000040a1: PUSH1 0x04 000040a3: ADD 000040a4: PUSH1 0x20 000040a6: PUSH1 0x40 000040a8: MLOAD 000040a9: DUP1 000040aa: DUP4 000040ab: SUB 000040ac: DUP2 000040ad: DUP7 000040ae: GAS 000040af: STATICCALL 000040b0: ISZERO 000040b1: DUP1 000040b2: ISZERO 000040b3: PUSH2 0x40c0 000040b6: JUMPI 000040b7: RETURNDATASIZE 000040b8: PUSH1 0x00 000040ba: DUP1 000040bb: RETURNDATACOPY 000040bc: RETURNDATASIZE 000040bd: PUSH1 0x00 000040bf: REVERT 000040c0: JUMPDEST 000040c1: POP 000040c2: POP 000040c3: POP 000040c4: POP 000040c5: PUSH1 0x40 000040c7: MLOAD 000040c8: RETURNDATASIZE 000040c9: PUSH1 0x1f 000040cb: NOT 000040cc: PUSH1 0x1f 000040ce: DUP3 000040cf: ADD 000040d0: AND 000040d1: DUP3 000040d2: ADD 000040d3: DUP1 000040d4: PUSH1 0x40 000040d6: MSTORE 000040d7: POP 000040d8: DUP2 000040d9: ADD 000040da: SWAP1 000040db: PUSH2 0x40e4 000040de: SWAP2 000040df: SWAP1 000040e0: PUSH2 0x4ac3 000040e3: JUMP 000040e4: JUMPDEST 000040e5: EQ 000040e6: PUSH2 0x4102 000040e9: JUMPI 000040ea: PUSH1 0x40 000040ec: MLOAD 000040ed: PUSH4 0x1046f38d 000040f2: PUSH1 0xe3 000040f4: SHL 000040f5: DUP2 000040f6: MSTORE 000040f7: PUSH1 0x04 000040f9: ADD 000040fa: PUSH1 0x40 000040fc: MLOAD 000040fd: DUP1 000040fe: SWAP2 000040ff: SUB 00004100: SWAP1 00004101: REVERT 00004102: JUMPDEST 00004103: DUP5 00004104: PUSH1 0x01 00004106: PUSH1 0x01 00004108: PUSH1 0xa0 0000410a: SHL 0000410b: SUB 0000410c: AND 0000410d: DUP5 0000410e: PUSH1 0x01 00004110: PUSH1 0x01 00004112: PUSH1 0xa0 00004114: SHL 00004115: SUB 00004116: AND 00004117: SUB 00004118: PUSH2 0x4134 0000411b: JUMPI 0000411c: PUSH1 0x40 0000411e: MLOAD 0000411f: PUSH4 0x1bd1a621 00004124: PUSH1 0xe2 00004126: SHL 00004127: DUP2 00004128: MSTORE 00004129: PUSH1 0x04 0000412b: ADD 0000412c: PUSH1 0x40 0000412e: MLOAD 0000412f: DUP1 00004130: SWAP2 00004131: SUB 00004132: SWAP1 00004133: REVERT 00004134: JUMPDEST 00004135: DUP3 00004136: PUSH1 0x00 00004138: SUB 00004139: PUSH2 0x4155 0000413c: JUMPI 0000413d: PUSH1 0x40 0000413f: MLOAD 00004140: PUSH4 0xd29da7ef 00004145: PUSH1 0xe0 00004147: SHL 00004148: DUP2 00004149: MSTORE 0000414a: PUSH1 0x04 0000414c: ADD 0000414d: PUSH1 0x40 0000414f: MLOAD 00004150: DUP1 00004151: SWAP2 00004152: SUB 00004153: SWAP1 00004154: REVERT 00004155: JUMPDEST 00004156: PUSH1 0x00 00004158: NOT 00004159: DUP4 0000415a: SUB 0000415b: PUSH2 0x4177 0000415e: JUMPI 0000415f: PUSH1 0x40 00004161: MLOAD 00004162: PUSH4 0x5982c5bb 00004167: PUSH1 0xe1 00004169: SHL 0000416a: DUP2 0000416b: MSTORE 0000416c: PUSH1 0x04 0000416e: ADD 0000416f: PUSH1 0x40 00004171: MLOAD 00004172: DUP1 00004173: SWAP2 00004174: SUB 00004175: SWAP1 00004176: REVERT 00004177: JUMPDEST 00004178: PUSH1 0x00 0000417a: PUSH2 0x4184 0000417d: DUP7 0000417e: DUP7 0000417f: DUP7 00004180: PUSH2 0x2370 00004183: JUMP 00004184: JUMPDEST 00004185: PUSH1 0xcd 00004187: SLOAD 00004188: PUSH1 0x40 0000418a: MLOAD 0000418b: PUSH4 0xc488847b 00004190: PUSH1 0xe0 00004192: SHL 00004193: DUP2 00004194: MSTORE 00004195: SWAP2 00004196: SWAP3 00004197: POP 00004198: PUSH1 0x00 0000419a: SWAP2 0000419b: DUP3 0000419c: SWAP2 0000419d: PUSH1 0x01 0000419f: PUSH1 0x01 000041a1: PUSH1 0xa0 000041a3: SHL 000041a4: SUB 000041a5: AND 000041a6: SWAP1 000041a7: PUSH4 0xc488847b 000041ac: SWAP1 000041ad: PUSH2 0x41be 000041b0: SWAP1 000041b1: ADDRESS 000041b2: SWAP1 000041b3: DUP10 000041b4: SWAP1 000041b5: DUP9 000041b6: SWAP1 000041b7: PUSH1 0x04 000041b9: ADD 000041ba: PUSH2 0x4c1b 000041bd: JUMP 000041be: JUMPDEST 000041bf: PUSH1 0x40 000041c1: DUP1 000041c2: MLOAD 000041c3: DUP1 000041c4: DUP4 000041c5: SUB 000041c6: DUP2 000041c7: DUP7 000041c8: GAS 000041c9: STATICCALL 000041ca: ISZERO 000041cb: DUP1 000041cc: ISZERO 000041cd: PUSH2 0x41da 000041d0: JUMPI 000041d1: RETURNDATASIZE 000041d2: PUSH1 0x00 000041d4: DUP1 000041d5: RETURNDATACOPY 000041d6: RETURNDATASIZE 000041d7: PUSH1 0x00 000041d9: REVERT 000041da: JUMPDEST 000041db: POP 000041dc: POP 000041dd: POP 000041de: POP 000041df: PUSH1 0x40 000041e1: MLOAD 000041e2: RETURNDATASIZE 000041e3: PUSH1 0x1f 000041e5: NOT 000041e6: PUSH1 0x1f 000041e8: DUP3 000041e9: ADD 000041ea: AND 000041eb: DUP3 000041ec: ADD 000041ed: DUP1 000041ee: PUSH1 0x40 000041f0: MSTORE 000041f1: POP 000041f2: DUP2 000041f3: ADD 000041f4: SWAP1 000041f5: PUSH2 0x41fe 000041f8: SWAP2 000041f9: SWAP1 000041fa: PUSH2 0x4d9a 000041fd: JUMP 000041fe: JUMPDEST 000041ff: SWAP2 00004200: POP 00004201: SWAP2 00004202: POP 00004203: PUSH1 0x00 00004205: DUP3 00004206: EQ 00004207: PUSH2 0x426e 0000420a: JUMPI 0000420b: PUSH1 0x40 0000420d: MLOAD 0000420e: PUSH3 0x461bcd 00004212: PUSH1 0xe5 00004214: SHL 00004215: DUP2 00004216: MSTORE 00004217: PUSH1 0x20 00004219: PUSH1 0x04 0000421b: DUP3 0000421c: ADD 0000421d: MSTORE 0000421e: PUSH1 0x33 00004220: PUSH1 0x24 00004222: DUP3 00004223: ADD 00004224: MSTORE 00004225: PUSH32 0x4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f 00004246: PUSH1 0x44 00004248: DUP3 00004249: ADD 0000424a: MSTORE 0000424b: PUSH19 0x105353d5539517d4d152569157d19052531151 0000425f: PUSH1 0x6a 00004261: SHL 00004262: PUSH1 0x64 00004264: DUP3 00004265: ADD 00004266: MSTORE 00004267: PUSH1 0x84 00004269: ADD 0000426a: PUSH2 0x0a36 0000426d: JUMP 0000426e: JUMPDEST 0000426f: PUSH1 0x40 00004271: MLOAD 00004272: PUSH4 0x70a08231 00004277: PUSH1 0xe0 00004279: SHL 0000427a: DUP2 0000427b: MSTORE 0000427c: PUSH1 0x01 0000427e: PUSH1 0x01 00004280: PUSH1 0xa0 00004282: SHL 00004283: SUB 00004284: DUP9 00004285: DUP2 00004286: AND 00004287: PUSH1 0x04 00004289: DUP4 0000428a: ADD 0000428b: MSTORE 0000428c: DUP3 0000428d: SWAP2 0000428e: SWAP1 0000428f: DUP8 00004290: AND 00004291: SWAP1 00004292: PUSH4 0x70a08231 00004297: SWAP1 00004298: PUSH1 0x24 0000429a: ADD 0000429b: PUSH1 0x20 0000429d: PUSH1 0x40 0000429f: MLOAD 000042a0: DUP1 000042a1: DUP4 000042a2: SUB 000042a3: DUP2 000042a4: DUP7 000042a5: GAS 000042a6: STATICCALL 000042a7: ISZERO 000042a8: DUP1 000042a9: ISZERO 000042aa: PUSH2 0x42b7 000042ad: JUMPI 000042ae: RETURNDATASIZE 000042af: PUSH1 0x00 000042b1: DUP1 000042b2: RETURNDATACOPY 000042b3: RETURNDATASIZE 000042b4: PUSH1 0x00 000042b6: REVERT 000042b7: JUMPDEST 000042b8: POP 000042b9: POP 000042ba: POP 000042bb: POP 000042bc: PUSH1 0x40 000042be: MLOAD 000042bf: RETURNDATASIZE 000042c0: PUSH1 0x1f 000042c2: NOT 000042c3: PUSH1 0x1f 000042c5: DUP3 000042c6: ADD 000042c7: AND 000042c8: DUP3 000042c9: ADD 000042ca: DUP1 000042cb: PUSH1 0x40 000042cd: MSTORE 000042ce: POP 000042cf: DUP2 000042d0: ADD 000042d1: SWAP1 000042d2: PUSH2 0x42db 000042d5: SWAP2 000042d6: SWAP1 000042d7: PUSH2 0x4ac3 000042da: JUMP 000042db: JUMPDEST 000042dc: LT 000042dd: ISZERO 000042de: PUSH2 0x4329 000042e1: JUMPI 000042e2: PUSH1 0x40 000042e4: MLOAD 000042e5: PUSH3 0x461bcd 000042e9: PUSH1 0xe5 000042eb: SHL 000042ec: DUP2 000042ed: MSTORE 000042ee: PUSH1 0x20 000042f0: PUSH1 0x04 000042f2: DUP3 000042f3: ADD 000042f4: MSTORE 000042f5: PUSH1 0x18 000042f7: PUSH1 0x24 000042f9: DUP3 000042fa: ADD 000042fb: MSTORE 000042fc: PUSH32 0x4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000 0000431d: PUSH1 0x44 0000431f: DUP3 00004320: ADD 00004321: MSTORE 00004322: PUSH1 0x64 00004324: ADD 00004325: PUSH2 0x0a36 00004328: JUMP 00004329: JUMPDEST 0000432a: ADDRESS 0000432b: PUSH1 0x01 0000432d: PUSH1 0x01 0000432f: PUSH1 0xa0 00004331: SHL 00004332: SUB 00004333: DUP7 00004334: AND 00004335: SUB 00004336: PUSH2 0x434a 00004339: JUMPI 0000433a: PUSH2 0x4345 0000433d: ADDRESS 0000433e: DUP10 0000433f: DUP10 00004340: DUP5 00004341: PUSH2 0x3907 00004344: JUMP 00004345: JUMPDEST 00004346: PUSH2 0x43ad 00004349: JUMP 0000434a: JUMPDEST 0000434b: PUSH1 0x40 0000434d: MLOAD 0000434e: PUSH4 0xb2a02ff1 00004353: PUSH1 0xe0 00004355: SHL 00004356: DUP2 00004357: MSTORE 00004358: PUSH1 0x01 0000435a: PUSH1 0x01 0000435c: PUSH1 0xa0 0000435e: SHL 0000435f: SUB 00004360: DUP7 00004361: AND 00004362: SWAP1 00004363: PUSH4 0xb2a02ff1 00004368: SWAP1 00004369: PUSH2 0x437a 0000436c: SWAP1 0000436d: DUP12 0000436e: SWAP1 0000436f: DUP12 00004370: SWAP1 00004371: DUP7 00004372: SWAP1 00004373: PUSH1 0x04 00004375: ADD 00004376: PUSH2 0x4c1b 00004379: JUMP 0000437a: JUMPDEST 0000437b: PUSH1 0x00 0000437d: PUSH1 0x40 0000437f: MLOAD 00004380: DUP1 00004381: DUP4 00004382: SUB 00004383: DUP2 00004384: PUSH1 0x00 00004386: DUP8 00004387: DUP1 00004388: EXTCODESIZE 00004389: ISZERO 0000438a: DUP1 0000438b: ISZERO 0000438c: PUSH2 0x4394 0000438f: JUMPI 00004390: PUSH1 0x00 00004392: DUP1 00004393: REVERT 00004394: JUMPDEST 00004395: POP 00004396: GAS 00004397: CALL 00004398: ISZERO 00004399: DUP1 0000439a: ISZERO 0000439b: PUSH2 0x43a8 0000439e: JUMPI 0000439f: RETURNDATASIZE 000043a0: PUSH1 0x00 000043a2: DUP1 000043a3: RETURNDATACOPY 000043a4: RETURNDATASIZE 000043a5: PUSH1 0x00 000043a7: REVERT 000043a8: JUMPDEST 000043a9: POP 000043aa: POP 000043ab: POP 000043ac: POP 000043ad: JUMPDEST 000043ae: DUP5 000043af: PUSH1 0x01 000043b1: PUSH1 0x01 000043b3: PUSH1 0xa0 000043b5: SHL 000043b6: SUB 000043b7: AND 000043b8: DUP8 000043b9: PUSH1 0x01 000043bb: PUSH1 0x01 000043bd: PUSH1 0xa0 000043bf: SHL 000043c0: SUB 000043c1: AND 000043c2: DUP10 000043c3: PUSH1 0x01 000043c5: PUSH1 0x01 000043c7: PUSH1 0xa0 000043c9: SHL 000043ca: SUB 000043cb: AND 000043cc: PUSH32 0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52 000043ed: DUP7 000043ee: DUP6 000043ef: PUSH1 0x40 000043f1: MLOAD 000043f2: PUSH2 0x4405 000043f5: SWAP3 000043f6: SWAP2 000043f7: SWAP1 000043f8: SWAP2 000043f9: DUP3 000043fa: MSTORE 000043fb: PUSH1 0x20 000043fd: DUP3 000043fe: ADD 000043ff: MSTORE 00004400: PUSH1 0x40 00004402: ADD 00004403: SWAP1 00004404: JUMP 00004405: JUMPDEST 00004406: PUSH1 0x40 00004408: MLOAD 00004409: DUP1 0000440a: SWAP2 0000440b: SUB 0000440c: SWAP1 0000440d: LOG4 0000440e: PUSH1 0xcd 00004410: SLOAD 00004411: PUSH1 0x40 00004413: MLOAD 00004414: PUSH4 0x47ef3b3b 00004419: PUSH1 0xe0 0000441b: SHL 0000441c: DUP2 0000441d: MSTORE 0000441e: ADDRESS 0000441f: PUSH1 0x04 00004421: DUP3 00004422: ADD 00004423: MSTORE 00004424: PUSH1 0x01 00004426: PUSH1 0x01 00004428: PUSH1 0xa0 0000442a: SHL 0000442b: SUB 0000442c: DUP8 0000442d: DUP2 0000442e: AND 0000442f: PUSH1 0x24 00004431: DUP4 00004432: ADD 00004433: MSTORE 00004434: DUP11 00004435: DUP2 00004436: AND 00004437: PUSH1 0x44 00004439: DUP4 0000443a: ADD 0000443b: MSTORE 0000443c: DUP10 0000443d: DUP2 0000443e: AND 0000443f: PUSH1 0x64 00004441: DUP4 00004442: ADD 00004443: MSTORE 00004444: PUSH1 0x84 00004446: DUP3 00004447: ADD 00004448: DUP7 00004449: SWAP1 0000444a: MSTORE 0000444b: PUSH1 0xa4 0000444d: DUP3 0000444e: ADD 0000444f: DUP5 00004450: SWAP1 00004451: MSTORE 00004452: SWAP1 00004453: SWAP2 00004454: AND 00004455: SWAP1 00004456: PUSH4 0x47ef3b3b 0000445b: SWAP1 0000445c: PUSH1 0xc4 0000445e: ADD 0000445f: PUSH2 0x2bc5 00004462: JUMP 00004463: JUMPDEST 00004464: PUSH1 0x00 00004466: PUSH2 0x10eb 00004469: DUP3 0000446a: DUP5 0000446b: PUSH2 0x4b5c 0000446e: JUMP 0000446f: JUMPDEST 00004470: PUSH1 0x00 00004472: PUSH2 0x10eb 00004475: DUP3 00004476: DUP5 00004477: PUSH2 0x4af2 0000447a: JUMP 0000447b: JUMPDEST 0000447c: PUSH1 0x60 0000447e: PUSH2 0x2616 00004481: DUP5 00004482: DUP5 00004483: PUSH1 0x00 00004485: DUP6 00004486: PUSH2 0x44c6 00004489: JUMP 0000448a: JUMPDEST 0000448b: PUSH1 0x00 0000448d: PUSH2 0x10eb 00004490: DUP3 00004491: DUP5 00004492: PUSH2 0x4b73 00004495: JUMP 00004496: JUMPDEST 00004497: PUSH1 0x00 00004499: SLOAD 0000449a: PUSH2 0x0100 0000449d: SWAP1 0000449e: DIV 0000449f: PUSH1 0xff 000044a1: AND 000044a2: PUSH2 0x44bd 000044a5: JUMPI 000044a6: PUSH1 0x40 000044a8: MLOAD 000044a9: PUSH3 0x461bcd 000044ad: PUSH1 0xe5 000044af: SHL 000044b0: DUP2 000044b1: MSTORE 000044b2: PUSH1 0x04 000044b4: ADD 000044b5: PUSH2 0x0a36 000044b8: SWAP1 000044b9: PUSH2 0x4c3f 000044bc: JUMP 000044bd: JUMPDEST 000044be: PUSH2 0x13c2 000044c1: CALLER 000044c2: PUSH2 0x31d9 000044c5: JUMP 000044c6: JUMPDEST 000044c7: PUSH1 0x60 000044c9: DUP3 000044ca: SELFBALANCE 000044cb: LT 000044cc: ISZERO 000044cd: PUSH2 0x4527 000044d0: JUMPI 000044d1: PUSH1 0x40 000044d3: MLOAD 000044d4: PUSH3 0x461bcd 000044d8: PUSH1 0xe5 000044da: SHL 000044db: DUP2 000044dc: MSTORE 000044dd: PUSH1 0x20 000044df: PUSH1 0x04 000044e1: DUP3 000044e2: ADD 000044e3: MSTORE 000044e4: PUSH1 0x26 000044e6: PUSH1 0x24 000044e8: DUP3 000044e9: ADD 000044ea: MSTORE 000044eb: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 0000450c: PUSH1 0x44 0000450e: DUP3 0000450f: ADD 00004510: MSTORE 00004511: PUSH6 0x1c8818d85b1b 00004518: PUSH1 0xd2 0000451a: SHL 0000451b: PUSH1 0x64 0000451d: DUP3 0000451e: ADD 0000451f: MSTORE 00004520: PUSH1 0x84 00004522: ADD 00004523: PUSH2 0x0a36 00004526: JUMP 00004527: JUMPDEST 00004528: PUSH1 0x00 0000452a: DUP1 0000452b: DUP7 0000452c: PUSH1 0x01 0000452e: PUSH1 0x01 00004530: PUSH1 0xa0 00004532: SHL 00004533: SUB 00004534: AND 00004535: DUP6 00004536: DUP8 00004537: PUSH1 0x40 00004539: MLOAD 0000453a: PUSH2 0x4543 0000453d: SWAP2 0000453e: SWAP1 0000453f: PUSH2 0x4dbe 00004542: JUMP 00004543: JUMPDEST 00004544: PUSH1 0x00 00004546: PUSH1 0x40 00004548: MLOAD 00004549: DUP1 0000454a: DUP4 0000454b: SUB 0000454c: DUP2 0000454d: DUP6 0000454e: DUP8 0000454f: GAS 00004550: CALL 00004551: SWAP3 00004552: POP 00004553: POP 00004554: POP 00004555: RETURNDATASIZE 00004556: DUP1 00004557: PUSH1 0x00 00004559: DUP2 0000455a: EQ 0000455b: PUSH2 0x4580 0000455e: JUMPI 0000455f: PUSH1 0x40 00004561: MLOAD 00004562: SWAP2 00004563: POP 00004564: PUSH1 0x1f 00004566: NOT 00004567: PUSH1 0x3f 00004569: RETURNDATASIZE 0000456a: ADD 0000456b: AND 0000456c: DUP3 0000456d: ADD 0000456e: PUSH1 0x40 00004570: MSTORE 00004571: RETURNDATASIZE 00004572: DUP3 00004573: MSTORE 00004574: RETURNDATASIZE 00004575: PUSH1 0x00 00004577: PUSH1 0x20 00004579: DUP5 0000457a: ADD 0000457b: RETURNDATACOPY 0000457c: PUSH2 0x4585 0000457f: JUMP 00004580: JUMPDEST 00004581: PUSH1 0x60 00004583: SWAP2 00004584: POP 00004585: JUMPDEST 00004586: POP 00004587: SWAP2 00004588: POP 00004589: SWAP2 0000458a: POP 0000458b: PUSH2 0x4596 0000458e: DUP8 0000458f: DUP4 00004590: DUP4 00004591: DUP8 00004592: PUSH2 0x45a1 00004595: JUMP 00004596: JUMPDEST 00004597: SWAP8 00004598: SWAP7 00004599: POP 0000459a: POP 0000459b: POP 0000459c: POP 0000459d: POP 0000459e: POP 0000459f: POP 000045a0: JUMP 000045a1: JUMPDEST 000045a2: PUSH1 0x60 000045a4: DUP4 000045a5: ISZERO 000045a6: PUSH2 0x4610 000045a9: JUMPI 000045aa: DUP3 000045ab: MLOAD 000045ac: PUSH1 0x00 000045ae: SUB 000045af: PUSH2 0x4609 000045b2: JUMPI 000045b3: PUSH1 0x01 000045b5: PUSH1 0x01 000045b7: PUSH1 0xa0 000045b9: SHL 000045ba: SUB 000045bb: DUP6 000045bc: AND 000045bd: EXTCODESIZE 000045be: PUSH2 0x4609 000045c1: JUMPI 000045c2: PUSH1 0x40 000045c4: MLOAD 000045c5: PUSH3 0x461bcd 000045c9: PUSH1 0xe5 000045cb: SHL 000045cc: DUP2 000045cd: MSTORE 000045ce: PUSH1 0x20 000045d0: PUSH1 0x04 000045d2: DUP3 000045d3: ADD 000045d4: MSTORE 000045d5: PUSH1 0x1d 000045d7: PUSH1 0x24 000045d9: DUP3 000045da: ADD 000045db: MSTORE 000045dc: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 000045fd: PUSH1 0x44 000045ff: DUP3 00004600: ADD 00004601: MSTORE 00004602: PUSH1 0x64 00004604: ADD 00004605: PUSH2 0x0a36 00004608: JUMP 00004609: JUMPDEST 0000460a: POP 0000460b: DUP2 0000460c: PUSH2 0x2616 0000460f: JUMP 00004610: JUMPDEST 00004611: PUSH2 0x2616 00004614: DUP4 00004615: DUP4 00004616: DUP2 00004617: MLOAD 00004618: ISZERO 00004619: PUSH2 0x4625 0000461c: JUMPI 0000461d: DUP2 0000461e: MLOAD 0000461f: DUP1 00004620: DUP4 00004621: PUSH1 0x20 00004623: ADD 00004624: REVERT 00004625: JUMPDEST 00004626: DUP1 00004627: PUSH1 0x40 00004629: MLOAD 0000462a: PUSH3 0x461bcd 0000462e: PUSH1 0xe5 00004630: SHL 00004631: DUP2 00004632: MSTORE 00004633: PUSH1 0x04 00004635: ADD 00004636: PUSH2 0x0a36 00004639: SWAP2 0000463a: SWAP1 0000463b: PUSH2 0x468f 0000463e: JUMP 0000463f: JUMPDEST 00004640: PUSH1 0x00 00004642: JUMPDEST 00004643: DUP4 00004644: DUP2 00004645: LT 00004646: ISZERO 00004647: PUSH2 0x465a 0000464a: JUMPI 0000464b: DUP2 0000464c: DUP2 0000464d: ADD 0000464e: MLOAD 0000464f: DUP4 00004650: DUP3 00004651: ADD 00004652: MSTORE 00004653: PUSH1 0x20 00004655: ADD 00004656: PUSH2 0x4642 00004659: JUMP 0000465a: JUMPDEST 0000465b: POP 0000465c: POP 0000465d: PUSH1 0x00 0000465f: SWAP2 00004660: ADD 00004661: MSTORE 00004662: JUMP 00004663: JUMPDEST 00004664: PUSH1 0x00 00004666: DUP2 00004667: MLOAD 00004668: DUP1 00004669: DUP5 0000466a: MSTORE 0000466b: PUSH2 0x467b 0000466e: DUP2 0000466f: PUSH1 0x20 00004671: DUP7 00004672: ADD 00004673: PUSH1 0x20 00004675: DUP7 00004676: ADD 00004677: PUSH2 0x463f 0000467a: JUMP 0000467b: JUMPDEST 0000467c: PUSH1 0x1f 0000467e: ADD 0000467f: PUSH1 0x1f 00004681: NOT 00004682: AND 00004683: SWAP3 00004684: SWAP1 00004685: SWAP3 00004686: ADD 00004687: PUSH1 0x20 00004689: ADD 0000468a: SWAP3 0000468b: SWAP2 0000468c: POP 0000468d: POP 0000468e: JUMP 0000468f: JUMPDEST 00004690: PUSH1 0x20 00004692: DUP2 00004693: MSTORE 00004694: PUSH1 0x00 00004696: PUSH2 0x10eb 00004699: PUSH1 0x20 0000469b: DUP4 0000469c: ADD 0000469d: DUP5 0000469e: PUSH2 0x4663 000046a1: JUMP 000046a2: JUMPDEST 000046a3: PUSH1 0x00 000046a5: PUSH1 0x20 000046a7: DUP3 000046a8: DUP5 000046a9: SUB 000046aa: SLT 000046ab: ISZERO 000046ac: PUSH2 0x46b4 000046af: JUMPI 000046b0: PUSH1 0x00 000046b2: DUP1 000046b3: REVERT 000046b4: JUMPDEST 000046b5: POP 000046b6: CALLDATALOAD 000046b7: SWAP2 000046b8: SWAP1 000046b9: POP 000046ba: JUMP 000046bb: JUMPDEST 000046bc: PUSH1 0x01 000046be: PUSH1 0x01 000046c0: PUSH1 0xa0 000046c2: SHL 000046c3: SUB 000046c4: DUP2 000046c5: AND 000046c6: DUP2 000046c7: EQ 000046c8: PUSH2 0x0afd 000046cb: JUMPI 000046cc: PUSH1 0x00 000046ce: DUP1 000046cf: REVERT 000046d0: JUMPDEST 000046d1: DUP1 000046d2: CALLDATALOAD 000046d3: PUSH2 0x46db 000046d6: DUP2 000046d7: PUSH2 0x46bb 000046da: JUMP 000046db: JUMPDEST 000046dc: SWAP2 000046dd: SWAP1 000046de: POP 000046df: JUMP 000046e0: JUMPDEST 000046e1: PUSH1 0x00 000046e3: DUP1 000046e4: PUSH1 0x40 000046e6: DUP4 000046e7: DUP6 000046e8: SUB 000046e9: SLT 000046ea: ISZERO 000046eb: PUSH2 0x46f3 000046ee: JUMPI 000046ef: PUSH1 0x00 000046f1: DUP1 000046f2: REVERT 000046f3: JUMPDEST 000046f4: DUP3 000046f5: CALLDATALOAD 000046f6: PUSH2 0x46fe 000046f9: DUP2 000046fa: PUSH2 0x46bb 000046fd: JUMP 000046fe: JUMPDEST 000046ff: SWAP5 00004700: PUSH1 0x20 00004702: SWAP4 00004703: SWAP1 00004704: SWAP4 00004705: ADD 00004706: CALLDATALOAD 00004707: SWAP4 00004708: POP 00004709: POP 0000470a: POP 0000470b: JUMP 0000470c: JUMPDEST 0000470d: PUSH1 0x00 0000470f: PUSH1 0x20 00004711: DUP3 00004712: DUP5 00004713: SUB 00004714: SLT 00004715: ISZERO 00004716: PUSH2 0x471e 00004719: JUMPI 0000471a: PUSH1 0x00 0000471c: DUP1 0000471d: REVERT 0000471e: JUMPDEST 0000471f: DUP2 00004720: CALLDATALOAD 00004721: PUSH2 0x10eb 00004724: DUP2 00004725: PUSH2 0x46bb 00004728: JUMP 00004729: JUMPDEST 0000472a: PUSH1 0x00 0000472c: DUP1 0000472d: PUSH1 0x00 0000472f: PUSH1 0x60 00004731: DUP5 00004732: DUP7 00004733: SUB 00004734: SLT 00004735: ISZERO 00004736: PUSH2 0x473e 00004739: JUMPI 0000473a: PUSH1 0x00 0000473c: DUP1 0000473d: REVERT 0000473e: JUMPDEST 0000473f: DUP4 00004740: CALLDATALOAD 00004741: PUSH2 0x4749 00004744: DUP2 00004745: PUSH2 0x46bb 00004748: JUMP 00004749: JUMPDEST 0000474a: SWAP3 0000474b: POP 0000474c: PUSH1 0x20 0000474e: DUP5 0000474f: ADD 00004750: CALLDATALOAD 00004751: PUSH2 0x4759 00004754: DUP2 00004755: PUSH2 0x46bb 00004758: JUMP 00004759: JUMPDEST 0000475a: SWAP3 0000475b: SWAP6 0000475c: SWAP3 0000475d: SWAP5 0000475e: POP 0000475f: POP 00004760: POP 00004761: PUSH1 0x40 00004763: SWAP2 00004764: SWAP1 00004765: SWAP2 00004766: ADD 00004767: CALLDATALOAD 00004768: SWAP1 00004769: JUMP 0000476a: JUMPDEST 0000476b: PUSH4 0x4e487b71 00004770: PUSH1 0xe0 00004772: SHL 00004773: PUSH1 0x00 00004775: MSTORE 00004776: PUSH1 0x41 00004778: PUSH1 0x04 0000477a: MSTORE 0000477b: PUSH1 0x24 0000477d: PUSH1 0x00 0000477f: REVERT 00004780: JUMPDEST 00004781: PUSH1 0x00 00004783: DUP3 00004784: PUSH1 0x1f 00004786: DUP4 00004787: ADD 00004788: SLT 00004789: PUSH2 0x4791 0000478c: JUMPI 0000478d: PUSH1 0x00 0000478f: DUP1 00004790: REVERT 00004791: JUMPDEST 00004792: DUP2 00004793: CALLDATALOAD 00004794: PUSH8 0xffffffffffffffff 0000479d: DUP1 0000479e: DUP3 0000479f: GT 000047a0: ISZERO 000047a1: PUSH2 0x47ac 000047a4: JUMPI 000047a5: PUSH2 0x47ac 000047a8: PUSH2 0x476a 000047ab: JUMP 000047ac: JUMPDEST 000047ad: PUSH1 0x40 000047af: MLOAD 000047b0: PUSH1 0x1f 000047b2: DUP4 000047b3: ADD 000047b4: PUSH1 0x1f 000047b6: NOT 000047b7: SWAP1 000047b8: DUP2 000047b9: AND 000047ba: PUSH1 0x3f 000047bc: ADD 000047bd: AND 000047be: DUP2 000047bf: ADD 000047c0: SWAP1 000047c1: DUP3 000047c2: DUP3 000047c3: GT 000047c4: DUP2 000047c5: DUP4 000047c6: LT 000047c7: OR 000047c8: ISZERO 000047c9: PUSH2 0x47d4 000047cc: JUMPI 000047cd: PUSH2 0x47d4 000047d0: PUSH2 0x476a 000047d3: JUMP 000047d4: JUMPDEST 000047d5: DUP2 000047d6: PUSH1 0x40 000047d8: MSTORE 000047d9: DUP4 000047da: DUP2 000047db: MSTORE 000047dc: DUP7 000047dd: PUSH1 0x20 000047df: DUP6 000047e0: DUP9 000047e1: ADD 000047e2: ADD 000047e3: GT 000047e4: ISZERO 000047e5: PUSH2 0x47ed 000047e8: JUMPI 000047e9: PUSH1 0x00 000047eb: DUP1 000047ec: REVERT 000047ed: JUMPDEST 000047ee: DUP4 000047ef: PUSH1 0x20 000047f1: DUP8 000047f2: ADD 000047f3: PUSH1 0x20 000047f5: DUP4 000047f6: ADD 000047f7: CALLDATACOPY 000047f8: PUSH1 0x00 000047fa: PUSH1 0x20 000047fc: DUP6 000047fd: DUP4 000047fe: ADD 000047ff: ADD 00004800: MSTORE 00004801: DUP1 00004802: SWAP5 00004803: POP 00004804: POP 00004805: POP 00004806: POP 00004807: POP 00004808: SWAP3 00004809: SWAP2 0000480a: POP 0000480b: POP 0000480c: JUMP 0000480d: JUMPDEST 0000480e: DUP1 0000480f: CALLDATALOAD 00004810: PUSH1 0xff 00004812: DUP2 00004813: AND 00004814: DUP2 00004815: EQ 00004816: PUSH2 0x46db 00004819: JUMPI 0000481a: PUSH1 0x00 0000481c: DUP1 0000481d: REVERT 0000481e: JUMPDEST 0000481f: PUSH1 0x00 00004821: PUSH1 0x40 00004823: DUP3 00004824: DUP5 00004825: SUB 00004826: SLT 00004827: ISZERO 00004828: PUSH2 0x4830 0000482b: JUMPI 0000482c: PUSH1 0x00 0000482e: DUP1 0000482f: REVERT 00004830: JUMPDEST 00004831: PUSH1 0x40 00004833: MLOAD 00004834: PUSH1 0x40 00004836: DUP2 00004837: ADD 00004838: DUP2 00004839: DUP2 0000483a: LT 0000483b: PUSH8 0xffffffffffffffff 00004844: DUP3 00004845: GT 00004846: OR 00004847: ISZERO 00004848: PUSH2 0x4853 0000484b: JUMPI 0000484c: PUSH2 0x4853 0000484f: PUSH2 0x476a 00004852: JUMP 00004853: JUMPDEST 00004854: PUSH1 0x40 00004856: MSTORE 00004857: SWAP1 00004858: POP 00004859: DUP1 0000485a: DUP3 0000485b: CALLDATALOAD 0000485c: PUSH2 0x4864 0000485f: DUP2 00004860: PUSH2 0x46bb 00004863: JUMP 00004864: JUMPDEST 00004865: DUP2 00004866: MSTORE 00004867: PUSH1 0x20 00004869: DUP4 0000486a: ADD 0000486b: CALLDATALOAD 0000486c: PUSH2 0x4874 0000486f: DUP2 00004870: PUSH2 0x46bb 00004873: JUMP 00004874: JUMPDEST 00004875: PUSH1 0x20 00004877: SWAP2 00004878: SWAP1 00004879: SWAP2 0000487a: ADD 0000487b: MSTORE 0000487c: SWAP3 0000487d: SWAP2 0000487e: POP 0000487f: POP 00004880: JUMP 00004881: JUMPDEST 00004882: PUSH1 0x00 00004884: DUP1 00004885: PUSH1 0x00 00004887: DUP1 00004888: PUSH1 0x00 0000488a: DUP1 0000488b: PUSH1 0x00 0000488d: DUP1 0000488e: PUSH1 0x00 00004890: DUP1 00004891: PUSH1 0x00 00004893: PUSH2 0x0180 00004896: DUP13 00004897: DUP15 00004898: SUB 00004899: SLT 0000489a: ISZERO 0000489b: PUSH2 0x48a3 0000489e: JUMPI 0000489f: PUSH1 0x00 000048a1: DUP1 000048a2: REVERT 000048a3: JUMPDEST 000048a4: PUSH2 0x48ac 000048a7: DUP13 000048a8: PUSH2 0x46d0 000048ab: JUMP 000048ac: JUMPDEST 000048ad: SWAP11 000048ae: POP 000048af: PUSH2 0x48ba 000048b2: PUSH1 0x20 000048b4: DUP14 000048b5: ADD 000048b6: PUSH2 0x46d0 000048b9: JUMP 000048ba: JUMPDEST 000048bb: SWAP10 000048bc: POP 000048bd: PUSH2 0x48c8 000048c0: PUSH1 0x40 000048c2: DUP14 000048c3: ADD 000048c4: PUSH2 0x46d0 000048c7: JUMP 000048c8: JUMPDEST 000048c9: SWAP9 000048ca: POP 000048cb: PUSH1 0x60 000048cd: DUP13 000048ce: ADD 000048cf: CALLDATALOAD 000048d0: SWAP8 000048d1: POP 000048d2: PUSH8 0xffffffffffffffff 000048db: DUP1 000048dc: PUSH1 0x80 000048de: DUP15 000048df: ADD 000048e0: CALLDATALOAD 000048e1: GT 000048e2: ISZERO 000048e3: PUSH2 0x48eb 000048e6: JUMPI 000048e7: PUSH1 0x00 000048e9: DUP1 000048ea: REVERT 000048eb: JUMPDEST 000048ec: PUSH2 0x48fb 000048ef: DUP15 000048f0: PUSH1 0x80 000048f2: DUP16 000048f3: ADD 000048f4: CALLDATALOAD 000048f5: DUP16 000048f6: ADD 000048f7: PUSH2 0x4780 000048fa: JUMP 000048fb: JUMPDEST 000048fc: SWAP8 000048fd: POP 000048fe: DUP1 000048ff: PUSH1 0xa0 00004901: DUP15 00004902: ADD 00004903: CALLDATALOAD 00004904: GT 00004905: ISZERO 00004906: PUSH2 0x490e 00004909: JUMPI 0000490a: PUSH1 0x00 0000490c: DUP1 0000490d: REVERT 0000490e: JUMPDEST 0000490f: POP 00004910: PUSH2 0x491f 00004913: DUP14 00004914: PUSH1 0xa0 00004916: DUP15 00004917: ADD 00004918: CALLDATALOAD 00004919: DUP15 0000491a: ADD 0000491b: PUSH2 0x4780 0000491e: JUMP 0000491f: JUMPDEST 00004920: SWAP6 00004921: POP 00004922: PUSH2 0x492d 00004925: PUSH1 0xc0 00004927: DUP14 00004928: ADD 00004929: PUSH2 0x480d 0000492c: JUMP 0000492d: JUMPDEST 0000492e: SWAP5 0000492f: POP 00004930: PUSH2 0x493b 00004933: PUSH1 0xe0 00004935: DUP14 00004936: ADD 00004937: PUSH2 0x46d0 0000493a: JUMP 0000493b: JUMPDEST 0000493c: SWAP4 0000493d: POP 0000493e: PUSH2 0x494a 00004941: PUSH2 0x0100 00004944: DUP14 00004945: ADD 00004946: PUSH2 0x46d0 00004949: JUMP 0000494a: JUMPDEST 0000494b: SWAP3 0000494c: POP 0000494d: PUSH2 0x495a 00004950: DUP14 00004951: PUSH2 0x0120 00004954: DUP15 00004955: ADD 00004956: PUSH2 0x481e 00004959: JUMP 0000495a: JUMPDEST 0000495b: SWAP2 0000495c: POP 0000495d: PUSH2 0x0160 00004960: DUP13 00004961: ADD 00004962: CALLDATALOAD 00004963: SWAP1 00004964: POP 00004965: SWAP3 00004966: SWAP6 00004967: SWAP9 00004968: SWAP12 00004969: POP 0000496a: SWAP3 0000496b: SWAP6 0000496c: SWAP9 0000496d: SWAP12 0000496e: SWAP1 0000496f: SWAP4 00004970: SWAP7 00004971: SWAP10 00004972: POP 00004973: JUMP 00004974: JUMPDEST 00004975: DUP1 00004976: ISZERO 00004977: ISZERO 00004978: DUP2 00004979: EQ 0000497a: PUSH2 0x0afd 0000497d: JUMPI 0000497e: PUSH1 0x00 00004980: DUP1 00004981: REVERT 00004982: JUMPDEST 00004983: PUSH1 0x00 00004985: DUP1 00004986: PUSH1 0x00 00004988: DUP1 00004989: PUSH1 0x00 0000498b: PUSH1 0xa0 0000498d: DUP7 0000498e: DUP9 0000498f: SUB 00004990: SLT 00004991: ISZERO 00004992: PUSH2 0x499a 00004995: JUMPI 00004996: PUSH1 0x00 00004998: DUP1 00004999: REVERT 0000499a: JUMPDEST 0000499b: DUP6 0000499c: CALLDATALOAD 0000499d: PUSH2 0x49a5 000049a0: DUP2 000049a1: PUSH2 0x46bb 000049a4: JUMP 000049a5: JUMPDEST 000049a6: SWAP5 000049a7: POP 000049a8: PUSH1 0x20 000049aa: DUP7 000049ab: ADD 000049ac: CALLDATALOAD 000049ad: PUSH2 0x49b5 000049b0: DUP2 000049b1: PUSH2 0x46bb 000049b4: JUMP 000049b5: JUMPDEST 000049b6: SWAP4 000049b7: POP 000049b8: PUSH1 0x40 000049ba: DUP7 000049bb: ADD 000049bc: CALLDATALOAD 000049bd: SWAP3 000049be: POP 000049bf: PUSH1 0x60 000049c1: DUP7 000049c2: ADD 000049c3: CALLDATALOAD 000049c4: PUSH2 0x49cc 000049c7: DUP2 000049c8: PUSH2 0x46bb 000049cb: JUMP 000049cc: JUMPDEST 000049cd: SWAP2 000049ce: POP 000049cf: PUSH1 0x80 000049d1: DUP7 000049d2: ADD 000049d3: CALLDATALOAD 000049d4: PUSH2 0x49dc 000049d7: DUP2 000049d8: PUSH2 0x4974 000049db: JUMP 000049dc: JUMPDEST 000049dd: DUP1 000049de: SWAP2 000049df: POP 000049e0: POP 000049e1: SWAP3 000049e2: SWAP6 000049e3: POP 000049e4: SWAP3 000049e5: SWAP6 000049e6: SWAP1 000049e7: SWAP4 000049e8: POP 000049e9: JUMP 000049ea: JUMPDEST 000049eb: PUSH1 0x00 000049ed: DUP1 000049ee: PUSH1 0x40 000049f0: DUP4 000049f1: DUP6 000049f2: SUB 000049f3: SLT 000049f4: ISZERO 000049f5: PUSH2 0x49fd 000049f8: JUMPI 000049f9: PUSH1 0x00 000049fb: DUP1 000049fc: REVERT 000049fd: JUMPDEST 000049fe: DUP3 000049ff: CALLDATALOAD 00004a00: PUSH2 0x4a08 00004a03: DUP2 00004a04: PUSH2 0x46bb 00004a07: JUMP 00004a08: JUMPDEST 00004a09: SWAP2 00004a0a: POP 00004a0b: PUSH1 0x20 00004a0d: DUP4 00004a0e: ADD 00004a0f: CALLDATALOAD 00004a10: PUSH2 0x4a18 00004a13: DUP2 00004a14: PUSH2 0x46bb 00004a17: JUMP 00004a18: JUMPDEST 00004a19: DUP1 00004a1a: SWAP2 00004a1b: POP 00004a1c: POP 00004a1d: SWAP3 00004a1e: POP 00004a1f: SWAP3 00004a20: SWAP1 00004a21: POP 00004a22: JUMP 00004a23: JUMPDEST 00004a24: PUSH1 0x00 00004a26: DUP1 00004a27: PUSH1 0x00 00004a29: PUSH1 0x60 00004a2b: DUP5 00004a2c: DUP7 00004a2d: SUB 00004a2e: SLT 00004a2f: ISZERO 00004a30: PUSH2 0x4a38 00004a33: JUMPI 00004a34: PUSH1 0x00 00004a36: DUP1 00004a37: REVERT 00004a38: JUMPDEST 00004a39: DUP4 00004a3a: CALLDATALOAD 00004a3b: PUSH2 0x4a43 00004a3e: DUP2 00004a3f: PUSH2 0x46bb 00004a42: JUMP 00004a43: JUMPDEST 00004a44: SWAP3 00004a45: POP 00004a46: PUSH1 0x20 00004a48: DUP5 00004a49: ADD 00004a4a: CALLDATALOAD 00004a4b: SWAP2 00004a4c: POP 00004a4d: PUSH1 0x40 00004a4f: DUP5 00004a50: ADD 00004a51: CALLDATALOAD 00004a52: PUSH2 0x4a5a 00004a55: DUP2 00004a56: PUSH2 0x46bb 00004a59: JUMP 00004a5a: JUMPDEST 00004a5b: DUP1 00004a5c: SWAP2 00004a5d: POP 00004a5e: POP 00004a5f: SWAP3 00004a60: POP 00004a61: SWAP3 00004a62: POP 00004a63: SWAP3 00004a64: JUMP 00004a65: JUMPDEST 00004a66: PUSH1 0x01 00004a68: DUP2 00004a69: DUP2 00004a6a: SHR 00004a6b: SWAP1 00004a6c: DUP3 00004a6d: AND 00004a6e: DUP1 00004a6f: PUSH2 0x4a79 00004a72: JUMPI 00004a73: PUSH1 0x7f 00004a75: DUP3 00004a76: AND 00004a77: SWAP2 00004a78: POP 00004a79: JUMPDEST 00004a7a: PUSH1 0x20 00004a7c: DUP3 00004a7d: LT 00004a7e: DUP2 00004a7f: SUB 00004a80: PUSH2 0x4a99 00004a83: JUMPI 00004a84: PUSH4 0x4e487b71 00004a89: PUSH1 0xe0 00004a8b: SHL 00004a8c: PUSH1 0x00 00004a8e: MSTORE 00004a8f: PUSH1 0x22 00004a91: PUSH1 0x04 00004a93: MSTORE 00004a94: PUSH1 0x24 00004a96: PUSH1 0x00 00004a98: REVERT 00004a99: JUMPDEST 00004a9a: POP 00004a9b: SWAP2 00004a9c: SWAP1 00004a9d: POP 00004a9e: JUMP 00004a9f: JUMPDEST 00004aa0: PUSH1 0x20 00004aa2: DUP1 00004aa3: DUP3 00004aa4: MSTORE 00004aa5: PUSH1 0x0a 00004aa7: SWAP1 00004aa8: DUP3 00004aa9: ADD 00004aaa: MSTORE 00004aab: PUSH10 0x1c994b595b9d195c9959 00004ab6: PUSH1 0xb2 00004ab8: SHL 00004ab9: PUSH1 0x40 00004abb: DUP3 00004abc: ADD 00004abd: MSTORE 00004abe: PUSH1 0x60 00004ac0: ADD 00004ac1: SWAP1 00004ac2: JUMP 00004ac3: JUMPDEST 00004ac4: PUSH1 0x00 00004ac6: PUSH1 0x20 00004ac8: DUP3 00004ac9: DUP5 00004aca: SUB 00004acb: SLT 00004acc: ISZERO 00004acd: PUSH2 0x4ad5 00004ad0: JUMPI 00004ad1: PUSH1 0x00 00004ad3: DUP1 00004ad4: REVERT 00004ad5: JUMPDEST 00004ad6: POP 00004ad7: MLOAD 00004ad8: SWAP2 00004ad9: SWAP1 00004ada: POP 00004adb: JUMP 00004adc: JUMPDEST 00004add: PUSH4 0x4e487b71 00004ae2: PUSH1 0xe0 00004ae4: SHL 00004ae5: PUSH1 0x00 00004ae7: MSTORE 00004ae8: PUSH1 0x11 00004aea: PUSH1 0x04 00004aec: MSTORE 00004aed: PUSH1 0x24 00004aef: PUSH1 0x00 00004af1: REVERT 00004af2: JUMPDEST 00004af3: DUP1 00004af4: DUP3 00004af5: ADD 00004af6: DUP1 00004af7: DUP3 00004af8: GT 00004af9: ISZERO 00004afa: PUSH2 0x0ae6 00004afd: JUMPI 00004afe: PUSH2 0x0ae6 00004b01: PUSH2 0x4adc 00004b04: JUMP 00004b05: JUMPDEST 00004b06: DUP2 00004b07: DUP2 00004b08: SUB 00004b09: DUP2 00004b0a: DUP2 00004b0b: GT 00004b0c: ISZERO 00004b0d: PUSH2 0x0ae6 00004b10: JUMPI 00004b11: PUSH2 0x0ae6 00004b14: PUSH2 0x4adc 00004b17: JUMP 00004b18: JUMPDEST 00004b19: PUSH1 0x01 00004b1b: PUSH1 0x01 00004b1d: PUSH1 0xa0 00004b1f: SHL 00004b20: SUB 00004b21: DUP5 00004b22: DUP2 00004b23: AND 00004b24: DUP3 00004b25: MSTORE 00004b26: DUP4 00004b27: AND 00004b28: PUSH1 0x20 00004b2a: DUP3 00004b2b: ADD 00004b2c: MSTORE 00004b2d: PUSH1 0x60 00004b2f: DUP2 00004b30: ADD 00004b31: PUSH1 0x02 00004b33: DUP4 00004b34: LT 00004b35: PUSH2 0x4b4e 00004b38: JUMPI 00004b39: PUSH4 0x4e487b71 00004b3e: PUSH1 0xe0 00004b40: SHL 00004b41: PUSH1 0x00 00004b43: MSTORE 00004b44: PUSH1 0x21 00004b46: PUSH1 0x04 00004b48: MSTORE 00004b49: PUSH1 0x24 00004b4b: PUSH1 0x00 00004b4d: REVERT 00004b4e: JUMPDEST 00004b4f: DUP3 00004b50: PUSH1 0x40 00004b52: DUP4 00004b53: ADD 00004b54: MSTORE 00004b55: SWAP5 00004b56: SWAP4 00004b57: POP 00004b58: POP 00004b59: POP 00004b5a: POP 00004b5b: JUMP 00004b5c: JUMPDEST 00004b5d: DUP1 00004b5e: DUP3 00004b5f: MUL 00004b60: DUP2 00004b61: ISZERO 00004b62: DUP3 00004b63: DUP3 00004b64: DIV 00004b65: DUP5 00004b66: EQ 00004b67: OR 00004b68: PUSH2 0x0ae6 00004b6b: JUMPI 00004b6c: PUSH2 0x0ae6 00004b6f: PUSH2 0x4adc 00004b72: JUMP 00004b73: JUMPDEST 00004b74: PUSH1 0x00 00004b76: DUP3 00004b77: PUSH2 0x4b90 00004b7a: JUMPI 00004b7b: PUSH4 0x4e487b71 00004b80: PUSH1 0xe0 00004b82: SHL 00004b83: PUSH1 0x00 00004b85: MSTORE 00004b86: PUSH1 0x12 00004b88: PUSH1 0x04 00004b8a: MSTORE 00004b8b: PUSH1 0x24 00004b8d: PUSH1 0x00 00004b8f: REVERT 00004b90: JUMPDEST 00004b91: POP 00004b92: DIV 00004b93: SWAP1 00004b94: JUMP 00004b95: JUMPDEST 00004b96: PUSH1 0x01 00004b98: PUSH1 0x01 00004b9a: PUSH1 0xa0 00004b9c: SHL 00004b9d: SUB 00004b9e: DUP4 00004b9f: AND 00004ba0: DUP2 00004ba1: MSTORE 00004ba2: PUSH1 0x40 00004ba4: PUSH1 0x20 00004ba6: DUP3 00004ba7: ADD 00004ba8: DUP2 00004ba9: SWAP1 00004baa: MSTORE 00004bab: PUSH1 0x00 00004bad: SWAP1 00004bae: PUSH2 0x2616 00004bb1: SWAP1 00004bb2: DUP4 00004bb3: ADD 00004bb4: DUP5 00004bb5: PUSH2 0x4663 00004bb8: JUMP 00004bb9: JUMPDEST 00004bba: PUSH1 0x00 00004bbc: PUSH1 0x20 00004bbe: DUP3 00004bbf: DUP5 00004bc0: SUB 00004bc1: SLT 00004bc2: ISZERO 00004bc3: PUSH2 0x4bcb 00004bc6: JUMPI 00004bc7: PUSH1 0x00 00004bc9: DUP1 00004bca: REVERT 00004bcb: JUMPDEST 00004bcc: DUP2 00004bcd: MLOAD 00004bce: PUSH2 0x10eb 00004bd1: DUP2 00004bd2: PUSH2 0x4974 00004bd5: JUMP 00004bd6: JUMPDEST 00004bd7: PUSH1 0x01 00004bd9: PUSH1 0x01 00004bdb: PUSH1 0xa0 00004bdd: SHL 00004bde: SUB 00004bdf: DUP5 00004be0: DUP2 00004be1: AND 00004be2: DUP3 00004be3: MSTORE 00004be4: DUP4 00004be5: AND 00004be6: PUSH1 0x20 00004be8: DUP3 00004be9: ADD 00004bea: MSTORE 00004beb: PUSH1 0x60 00004bed: PUSH1 0x40 00004bef: DUP3 00004bf0: ADD 00004bf1: DUP2 00004bf2: SWAP1 00004bf3: MSTORE 00004bf4: PUSH1 0x00 00004bf6: SWAP1 00004bf7: PUSH2 0x268a 00004bfa: SWAP1 00004bfb: DUP4 00004bfc: ADD 00004bfd: DUP5 00004bfe: PUSH2 0x4663 00004c01: JUMP 00004c02: JUMPDEST 00004c03: PUSH1 0x00 00004c05: PUSH1 0x01 00004c07: DUP3 00004c08: ADD 00004c09: PUSH2 0x4c14 00004c0c: JUMPI 00004c0d: PUSH2 0x4c14 00004c10: PUSH2 0x4adc 00004c13: JUMP 00004c14: JUMPDEST 00004c15: POP 00004c16: PUSH1 0x01 00004c18: ADD 00004c19: SWAP1 00004c1a: JUMP 00004c1b: JUMPDEST 00004c1c: PUSH1 0x01 00004c1e: PUSH1 0x01 00004c20: PUSH1 0xa0 00004c22: SHL 00004c23: SUB 00004c24: SWAP4 00004c25: DUP5 00004c26: AND 00004c27: DUP2 00004c28: MSTORE 00004c29: SWAP2 00004c2a: SWAP1 00004c2b: SWAP3 00004c2c: AND 00004c2d: PUSH1 0x20 00004c2f: DUP3 00004c30: ADD 00004c31: MSTORE 00004c32: PUSH1 0x40 00004c34: DUP2 00004c35: ADD 00004c36: SWAP2 00004c37: SWAP1 00004c38: SWAP2 00004c39: MSTORE 00004c3a: PUSH1 0x60 00004c3c: ADD 00004c3d: SWAP1 00004c3e: JUMP 00004c3f: JUMPDEST 00004c40: PUSH1 0x20 00004c42: DUP1 00004c43: DUP3 00004c44: MSTORE 00004c45: PUSH1 0x2b 00004c47: SWAP1 00004c48: DUP3 00004c49: ADD 00004c4a: MSTORE 00004c4b: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 00004c6c: PUSH1 0x40 00004c6e: DUP3 00004c6f: ADD 00004c70: MSTORE 00004c71: PUSH11 0x6e697469616c697a696e67 00004c7d: PUSH1 0xa8 00004c7f: SHL 00004c80: PUSH1 0x60 00004c82: DUP3 00004c83: ADD 00004c84: MSTORE 00004c85: PUSH1 0x80 00004c87: ADD 00004c88: SWAP1 00004c89: JUMP 00004c8a: JUMPDEST 00004c8b: PUSH1 0x1f 00004c8d: DUP3 00004c8e: GT 00004c8f: ISZERO 00004c90: PUSH2 0x26f6 00004c93: JUMPI 00004c94: PUSH1 0x00 00004c96: DUP2 00004c97: PUSH1 0x00 00004c99: MSTORE 00004c9a: PUSH1 0x20 00004c9c: PUSH1 0x00 00004c9e: KECCAK256 00004c9f: PUSH1 0x1f 00004ca1: DUP6 00004ca2: ADD 00004ca3: PUSH1 0x05 00004ca5: SHR 00004ca6: DUP2 00004ca7: ADD 00004ca8: PUSH1 0x20 00004caa: DUP7 00004cab: LT 00004cac: ISZERO 00004cad: PUSH2 0x4cb3 00004cb0: JUMPI 00004cb1: POP 00004cb2: DUP1 00004cb3: JUMPDEST 00004cb4: PUSH1 0x1f 00004cb6: DUP6 00004cb7: ADD 00004cb8: PUSH1 0x05 00004cba: SHR 00004cbb: DUP3 00004cbc: ADD 00004cbd: SWAP2 00004cbe: POP 00004cbf: JUMPDEST 00004cc0: DUP2 00004cc1: DUP2 00004cc2: LT 00004cc3: ISZERO 00004cc4: PUSH2 0x4cd2 00004cc7: JUMPI 00004cc8: DUP3 00004cc9: DUP2 00004cca: SSTORE 00004ccb: PUSH1 0x01 00004ccd: ADD 00004cce: PUSH2 0x4cbf 00004cd1: JUMP 00004cd2: JUMPDEST 00004cd3: POP 00004cd4: POP 00004cd5: POP 00004cd6: POP 00004cd7: POP 00004cd8: POP 00004cd9: JUMP 00004cda: JUMPDEST 00004cdb: DUP2 00004cdc: MLOAD 00004cdd: PUSH8 0xffffffffffffffff 00004ce6: DUP2 00004ce7: GT 00004ce8: ISZERO 00004ce9: PUSH2 0x4cf4 00004cec: JUMPI 00004ced: PUSH2 0x4cf4 00004cf0: PUSH2 0x476a 00004cf3: JUMP 00004cf4: JUMPDEST 00004cf5: PUSH2 0x4d08 00004cf8: DUP2 00004cf9: PUSH2 0x4d02 00004cfc: DUP5 00004cfd: SLOAD 00004cfe: PUSH2 0x4a65 00004d01: JUMP 00004d02: JUMPDEST 00004d03: DUP5 00004d04: PUSH2 0x4c8a 00004d07: JUMP 00004d08: JUMPDEST 00004d09: PUSH1 0x20 00004d0b: DUP1 00004d0c: PUSH1 0x1f 00004d0e: DUP4 00004d0f: GT 00004d10: PUSH1 0x01 00004d12: DUP2 00004d13: EQ 00004d14: PUSH2 0x4d3d 00004d17: JUMPI 00004d18: PUSH1 0x00 00004d1a: DUP5 00004d1b: ISZERO 00004d1c: PUSH2 0x4d25 00004d1f: JUMPI 00004d20: POP 00004d21: DUP6 00004d22: DUP4 00004d23: ADD 00004d24: MLOAD 00004d25: JUMPDEST 00004d26: PUSH1 0x00 00004d28: NOT 00004d29: PUSH1 0x03 00004d2b: DUP7 00004d2c: SWAP1 00004d2d: SHL 00004d2e: SHR 00004d2f: NOT 00004d30: AND 00004d31: PUSH1 0x01 00004d33: DUP6 00004d34: SWAP1 00004d35: SHL 00004d36: OR 00004d37: DUP6 00004d38: SSTORE 00004d39: PUSH2 0x4cd2 00004d3c: JUMP 00004d3d: JUMPDEST 00004d3e: PUSH1 0x00 00004d40: DUP6 00004d41: DUP2 00004d42: MSTORE 00004d43: PUSH1 0x20 00004d45: DUP2 00004d46: KECCAK256 00004d47: PUSH1 0x1f 00004d49: NOT 00004d4a: DUP7 00004d4b: AND 00004d4c: SWAP2 00004d4d: JUMPDEST 00004d4e: DUP3 00004d4f: DUP2 00004d50: LT 00004d51: ISZERO 00004d52: PUSH2 0x4d6c 00004d55: JUMPI 00004d56: DUP9 00004d57: DUP7 00004d58: ADD 00004d59: MLOAD 00004d5a: DUP3 00004d5b: SSTORE 00004d5c: SWAP5 00004d5d: DUP5 00004d5e: ADD 00004d5f: SWAP5 00004d60: PUSH1 0x01 00004d62: SWAP1 00004d63: SWAP2 00004d64: ADD 00004d65: SWAP1 00004d66: DUP5 00004d67: ADD 00004d68: PUSH2 0x4d4d 00004d6b: JUMP 00004d6c: JUMPDEST 00004d6d: POP 00004d6e: DUP6 00004d6f: DUP3 00004d70: LT 00004d71: ISZERO 00004d72: PUSH2 0x4d8a 00004d75: JUMPI 00004d76: DUP8 00004d77: DUP6 00004d78: ADD 00004d79: MLOAD 00004d7a: PUSH1 0x00 00004d7c: NOT 00004d7d: PUSH1 0x03 00004d7f: DUP9 00004d80: SWAP1 00004d81: SHL 00004d82: PUSH1 0xf8 00004d84: AND 00004d85: SHR 00004d86: NOT 00004d87: AND 00004d88: DUP2 00004d89: SSTORE 00004d8a: JUMPDEST 00004d8b: POP 00004d8c: POP 00004d8d: POP 00004d8e: POP 00004d8f: POP 00004d90: PUSH1 0x01 00004d92: SWAP1 00004d93: DUP2 00004d94: SHL 00004d95: ADD 00004d96: SWAP1 00004d97: SSTORE 00004d98: POP 00004d99: JUMP 00004d9a: JUMPDEST 00004d9b: PUSH1 0x00 00004d9d: DUP1 00004d9e: PUSH1 0x40 00004da0: DUP4 00004da1: DUP6 00004da2: SUB 00004da3: SLT 00004da4: ISZERO 00004da5: PUSH2 0x4dad 00004da8: JUMPI 00004da9: PUSH1 0x00 00004dab: DUP1 00004dac: REVERT 00004dad: JUMPDEST 00004dae: POP 00004daf: POP 00004db0: DUP1 00004db1: MLOAD 00004db2: PUSH1 0x20 00004db4: SWAP1 00004db5: SWAP2 00004db6: ADD 00004db7: MLOAD 00004db8: SWAP1 00004db9: SWAP3 00004dba: SWAP1 00004dbb: SWAP2 00004dbc: POP 00004dbd: JUMP 00004dbe: JUMPDEST 00004dbf: PUSH1 0x00 00004dc1: DUP3 00004dc2: MLOAD 00004dc3: PUSH2 0x4dd0 00004dc6: DUP2 00004dc7: DUP5 00004dc8: PUSH1 0x20 00004dca: DUP8 00004dcb: ADD 00004dcc: PUSH2 0x463f 00004dcf: JUMP 00004dd0: JUMPDEST 00004dd1: SWAP2 00004dd2: SWAP1 00004dd3: SWAP2 00004dd4: ADD 00004dd5: SWAP3 00004dd6: SWAP2 00004dd7: POP 00004dd8: POP 00004dd9: JUMP 00004dda: INVALID 00004ddb: PUSH20 0x65745265647563655265736572766573426c6f63 00004df0: PUSH12 0x44656c74612875696e743235 00004dfd: CALLDATASIZE 00004dfe: UNKNOWN(0x29) 00004dff: UNKNOWN(0xDD) 00004e00: CALLCODE 00004e01: MSTORE 00004e02: UNKNOWN(0xAD) 00004e03: SHL 00004e04: UNKNOWN(0xE2) 00004e05: UNKNOWN(0xC8) 00004e06: SWAP12 00004e07: PUSH10 0xc2b068fc378daa952ba7 00004e12: CALL 00004e13: PUSH4 0xc4a11628 00004e18: CREATE2 00004e19: GAS 00004e1a: UNKNOWN(0x4D) 00004e1b: CREATE2 00004e1c: UNKNOWN(0x23) 00004e1d: UNKNOWN(0xB3) 00004e1e: UNKNOWN(0xEF) 00004e1f: LOG2 00004e20: PUSH5 0x6970667358 00004e26: UNKNOWN(0x22) 00004e27: SLT 00004e28: KECCAK256 00004e29: UNKNOWN(0xEA) 00004e2a: DUP12 00004e2b: GT 00004e2c: CLZ 00004e2d: TIMESTAMP 00004e2e: LOG3 00004e2f: UNKNOWN(0x4B) 00004e30: PUSH5 0x9ca4a2dd9f 00004e36: PUSH22 0xe129412dd50037fa3a998ff5958bd540d05864736f6c 00004e4d: PUSH4 0x43000819 00004e52: STOP 00004e53: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xa870e291053d5ec974b5a9f7c8d7b20fef986f7a85b728278a358e9c9b447beb
call_targets:
0xefdf5ccc12d8cff4a7ed4e421b95f8f69cf2f766
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xa870e291053d5ec974b5a9f7c8d7b20fef986f7a85b728278a358e9c9b447beb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xefdf5ccc12d8cff4a7ed4e421b95f8f69cf2f766"
],
"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": "0xef60450c",
"selector": "0xef60450c",
"calldata_variants": [
"0xef60450c",
"0xef60450c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3fdb15a",
"selector": "0xf3fdb15a",
"calldata_variants": [
"0xf3fdb15a",
"0xf3fdb15a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf5e3c462",
"selector": "0xf5e3c462",
"calldata_variants": [
"0xf5e3c462",
"0xf5e3c4620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8f9da28",
"selector": "0xf8f9da28",
"calldata_variants": [
"0xf8f9da28",
"0xf8f9da280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf3a516e",
"selector": "0xdf3a516e",
"calldata_variants": [
"0xdf3a516e",
"0xdf3a516e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1d146fb",
"selector": "0xe1d146fb",
"calldata_variants": [
"0xe1d146fb",
"0xe1d146fb0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4495,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8644,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 9153,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 20,
"guards_detected": [],
"untrusted_call_count": 20
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xa870e291053d5ec974b5a9f7c8d7b20fef986f7a85b728278a358e9c9b447beb
call_targets:
0xefdf5ccc12d8cff4a7ed4e421b95f8f69cf2f766
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xa870e291053d5ec974b5a9f7c8d7b20fef986f7a85b728278a358e9c9b447beb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xefdf5ccc12d8cff4a7ed4e421b95f8f69cf2f766"
],
"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": "0xef60450c",
"selector": "0xef60450c",
"calldata_variants": [
"0xef60450c",
"0xef60450c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3fdb15a",
"selector": "0xf3fdb15a",
"calldata_variants": [
"0xf3fdb15a",
"0xf3fdb15a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf5e3c462",
"selector": "0xf5e3c462",
"calldata_variants": [
"0xf5e3c462",
"0xf5e3c4620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8f9da28",
"selector": "0xf8f9da28",
"calldata_variants": [
"0xf8f9da28",
"0xf8f9da280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf3a516e",
"selector": "0xdf3a516e",
"calldata_variants": [
"0xdf3a516e",
"0xdf3a516e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1d146fb",
"selector": "0xe1d146fb",
"calldata_variants": [
"0xe1d146fb",
"0xe1d146fb0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4495,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8644,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 9153,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 20,
"guards_detected": []
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x054548fa12c70c4e784d648086a6a54e72a574fac7ae9d983de26ef3a4a02fbf
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x054548fa12c70c4e784d648086a6a54e72a574fac7ae9d983de26ef3a4a02fbf",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xef60450c",
"selector": "0xef60450c",
"calldata_variants": [
"0xef60450c",
"0xef60450c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3fdb15a",
"selector": "0xf3fdb15a",
"calldata_variants": [
"0xf3fdb15a",
"0xf3fdb15a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf5e3c462",
"selector": "0xf5e3c462",
"calldata_variants": [
"0xf5e3c462",
"0xf5e3c4620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8f9da28",
"selector": "0xf8f9da28",
"calldata_variants": [
"0xf8f9da28",
"0xf8f9da280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf3a516e",
"selector": "0xdf3a516e",
"calldata_variants": [
"0xdf3a516e",
"0xdf3a516e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1d146fb",
"selector": "0xe1d146fb",
"calldata_variants": [
"0xe1d146fb",
"0xe1d146fb0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 2
}
|
| medium | reentrancy | codex | Reentrant reward claims can double-spend `rewardTokenAccrued` | 75 | no | — |
viewevidence_json{
"evidence": "`claimRewardToken` clears accrued rewards only after `_grantRewardToken` performs the external transfer.",
"locations": [
"contracts/contracts/Rewards/RewardsDistributor.sol:336",
"contracts/contracts/Rewards/RewardsDistributor.sol:350",
"contracts/contracts/Rewards/RewardsDistributor.sol:558"
],
"recommendation": "Apply checks-effects-interactions: set `rewardTokenAccrued[holder]=0` before the transfer and restore any leftover after, or add a reentrancy guard around `claimRewardToken`/`_grantRewardToken`.",
"exploit_scenario": "A contract holder with accrued rewards calls `claimRewardToken`. During `_grantRewardToken`, the reward token transfer triggers a callback (e.g., ERC777 `tokensReceived`) that reenters `claimRewardToken` before `rewardTokenAccrued[holder]` is cleared. The reentrant call sees the same accrued balance and can claim again, draining the reward token balance."
}
|
| medium | oracle | codex | Batch liquidations use potentially stale prices/interest for eligibility checks | 75 | no | — |
viewevidence_json{
"evidence": "`liquidateAccount` calls `_getCurrentLiquiditySnapshot` directly; the snapshot uses `oracle.getUnderlyingPrice` and stored exchange rates without refresh.",
"locations": [
"contracts/contracts/Comptroller.sol:935",
"contracts/contracts/Comptroller.sol:938",
"contracts/contracts/Comptroller.sol:1605",
"contracts/contracts/Comptroller.sol:1696"
],
"recommendation": "Before computing the snapshot, update prices for the borrower\u2019s markets and accrue interest (similar to `healAccount`). Alternatively, revalidate eligibility after price updates or avoid skipping liquidity checks in batch liquidations.",
"exploit_scenario": "`liquidateAccount` decides eligibility using `_getCurrentLiquiditySnapshot` without updating oracle prices or accruing interest. If the oracle returns stale prices (or exchange rates are stale), an attacker can liquidate an account that would be healthy under fresh data. Subsequent `forceLiquidateBorrow(..., true)` skips liquidity checks, so the stale snapshot becomes the only gate."
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 2
}
|
| 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": 18
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 35
}
|