3fa187e1-76d0-4757-95f2-cd89d189d08b
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 |
|---|---|---|---|---|
| 30528 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 104027 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 104028 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 104029 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 104030 | capability.graph | complete | 1 / 3 | 1 week ago |
| 104031 | detector.run | complete | 1 / 3 | 1 week ago |
| 104032 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:520867] OpenAI Codex v0.77.0 (research preview)
[codex:520867] --------
[codex:520867] workdir: /tmp/codex-multi-ont651uv
[codex:520867] model: gpt-5.2-codex
[codex:520867] provider: openai
[codex:520867] approval: never
[codex:520867] sandbox: read-only
[codex:520867] reasoning effort: xhigh
[codex:520867] reasoning summaries: auto
[codex:520867] session id: 019b6af9-a4d6-7aa0-9267-f1c7f60e2c6e
[codex:520867] --------
[codex:520867] user
[codex:520867] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:520867] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:520867] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:520867]
[codex:520867] Scope rules:
[codex:520867] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:520867] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:520867]
[codex:520867] Output MUST be valid JSON matching the provided schema.
[codex:520867] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:520867] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:520867]
[codex:520867] Output constraints (IMPORTANT):
[codex:520867] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:520867] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:520867] mcp startup: no servers
[codex:520867]
[codex:520867] thinking
[codex:520867] **Checking for AGENTS instructions**
[codex:520867] exec
[codex:520867] /bin/bash -lc ls in /tmp/codex-multi-ont651uv succeeded in 6ms:
[codex:520867] AUDIT_BUNDLE.txt
[codex:520867] codex-output-schema.json
[codex:520867] contracts
[codex:520867]
[codex:520867] thinking
[codex:520867] **Searching for AGENTS-related files**
[codex:520867] exec
[codex:520867] /bin/bash -lc "rg --files -g 'AGENTS.md'" in /tmp/codex-multi-ont651uv exited 1 in 8ms:
[codex:520867]
[codex:520867]
[codex:520867] thinking
[codex:520867] **Checking for instructions in AUDIT_BUNDLE.txt**
[codex:520867] exec
[codex:520867] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-ont651uv succeeded in 5ms:
[codex:520867] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:520867]
[codex:520867] ================================================================================
[codex:520867] FILE: contracts/@openzeppelin/contracts/GSN/Context.sol
[codex:520867] ================================================================================
[codex:520867] // SPDX-License-Identifier: MIT
[codex:520867]
[codex:520867] pragma solidity ^0.6.0;
[codex:520867]
[codex:520867] /*
[codex:520867] * @dev Provides information about the current execution context, including the
[codex:520867] * sender of the transaction and its data. While these are generally available
[codex:520867] * via msg.sender and msg.data, they should not be accessed in such a direct
[codex:520867] * manner, since when dealing with GSN meta-transactions the account sending and
[codex:520867] * paying for execution may not be the actual sender (as far as an application
[codex:520867] * is concerned).
[codex:520867] *
[codex:520867] * This contract is only required for intermediate, library-like contracts.
[codex:520867] */
[codex:520867] abstract contract Context {
[codex:520867]
[codex:520867] thinking
[codex:520867] **Searching for first-party contract files**
[codex:520867] exec
[codex:520867] /bin/bash -lc 'rg -n "FILE: contracts/contracts" AUDIT_BUNDLE.txt' in /tmp/codex-multi-ont651uv succeeded in 6ms:
[codex:520867] 1480:FILE: contracts/contracts/Decimal.sol
[codex:520867] 1555:FILE: contracts/contracts/ERC721.sol
[codex:520867] 2151:FILE: contracts/contracts/ERC721Burnable.sol
[codex:520867] 2190:FILE: contracts/contracts/Market.sol
[codex:520867] 2562:FILE: contracts/contracts/Math.sol
[codex:520867] 2637:FILE: contracts/contracts/Media.sol
[codex:520867] 3217:FILE: contracts/contracts/interfaces/IMarket.sol
[codex:520867] 3317:FILE: contracts/contracts/interfaces/IMedia.sol
[codex:520867]
[codex:520867] thinking
[codex:520867] **Extracting core contract files**
[codex:520867] exec
[codex:520867] /bin/bash -lc "sed -n '1480,1554p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ont651uv succeeded in 6ms:
[codex:520867] FILE: contracts/contracts/Decimal.sol
[codex:520867] ================================================================================
[codex:520867] /*
[codex:520867] Copyright 2019 dYdX Trading Inc.
[codex:520867] Licensed under the Apache License, Version 2.0 (the "License");
[codex:520867] you may not use this file except in compliance with the License.
[codex:520867] You may obtain a copy of the License at
[codex:520867] http://www.apache.org/licenses/LICENSE-2.0
[codex:520867] Unless required by applicable law or agreed to in writing, software
[codex:520867] distributed under the License is distributed on an "AS IS" BASIS,
[codex:520867] WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
[codex:520867] See the License for the specific language governing permissions and
[codex:520867] limitations under the License.
[codex:520867] */
[codex:520867]
[codex:520867] pragma solidity 0.6.8;
[codex:520867] pragma experimental ABIEncoderV2;
[codex:520867]
[codex:520867] /**
[codex:520867] * NOTE: This file is a clone of the dydx protocol's Decimal.sol contract. It was forked from https://github.com/dydxprotocol/solo
[codex:520867]
[codex:520867] thinking
[codex:520867] **Preparing to work on ERC721**
[codex:520867] exec
[codex:520867] /bin/bash -lc "sed -n '1555,2150p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ont651uv succeeded in 5ms:
[codex:520867] FILE: contracts/contracts/ERC721.sol
[codex:520867] ================================================================================
[codex:520867] // SPDX-License-Identifier: MIT
[codex:520867]
[codex:520867] /**
[codex:520867] * NOTE: This file is a clone of the OpenZeppelin ERC721.sol contract. It was forked from https://github.com/OpenZeppelin/openzeppelin-contracts
[codex:520867] * at commit 1ada3b633e5bfd9d4ffe0207d64773a11f5a7c40
[codex:520867] *
[codex:520867] *
[codex:520867] * The following functions needed to be modified, prompting this clone:
[codex:520867] * - `_tokenURIs` visibility was changed from private to internal to support updating URIs after minting
[codex:520867] * - `_baseURI` visibiility was changed from private to internal to support fetching token URI even after the token was burned
[codex:520867] * - `_INTERFACE_ID_ERC721_METADATA` is no longer registered as an interface because _tokenURI now returns raw content instead of a JSON file, and supports updatable URIs
[codex:520867] * - `_approve` visibility was changed from private to internal to support EIP-2612 flavored permits and approval revocation by an approved address
[codex:520867] */
[codex:520867]
[codex:520867] pragma solidity 0.6.8;
[codex:520867]
[codex:520867] import "@openzeppelin/contracts/GSN/Context.sol";
[codex:520867] import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
[codex:520867]
[codex:520867] thinking
[codex:520867] **Starting ERC721Burnable exploration**
[codex:520867] exec
[codex:520867] /bin/bash -lc "sed -n '2151,2190p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ont651uv succeeded in 5ms:
[codex:520867] FILE: contracts/contracts/ERC721Burnable.sol
[codex:520867] ================================================================================
[codex:520867] // SPDX-License-Identifier: MIT
[codex:520867]
[codex:520867] /**
[codex:520867] * NOTE: This file is a clone of the OpenZeppelin ERC721Burnable.sol contract. It was forked from https://github.com/OpenZeppelin/openzeppelin-contracts
[codex:520867] * at commit 1ada3b633e5bfd9d4ffe0207d64773a11f5a7c40
[codex:520867] *
[codex:520867] * It was cloned in order to ensure it imported from the cloned ERC721.sol file. No other modifications have been made.
[codex:520867] */
[codex:520867]
[codex:520867] pragma solidity 0.6.8;
[codex:520867]
[codex:520867] import "@openzeppelin/contracts/GSN/Context.sol";
[codex:520867] import "./ERC721.sol";
[codex:520867]
[codex:520867] /**
[codex:520867] * @title ERC721 Burnable Token
[codex:520867] * @dev ERC721 Token that can be irreversibly burned (destroyed).
[codex:520867] */
[codex:520867]
[codex:520867] thinking
[codex:520867] **Preparing for market analysis**
[codex:520867] exec
[codex:520867] /bin/bash -lc "sed -n '2190,2561p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ont651uv succeeded in 6ms:
[codex:520867] FILE: contracts/contracts/Market.sol
[codex:520867] ================================================================================
[codex:520867] // SPDX-License-Identifier: GPL-3.0
[codex:520867]
[codex:520867] pragma solidity 0.6.8;
[codex:520867] pragma experimental ABIEncoderV2;
[codex:520867]
[codex:520867] import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
[codex:520867] import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
[codex:520867] import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:520867] import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";
[codex:520867] import {Decimal} from "./Decimal.sol";
[codex:520867] import {Media} from "./Media.sol";
[codex:520867] import {IMarket} from "./interfaces/IMarket.sol";
[codex:520867]
[codex:520867] /**
[codex:520867] * @title A Market for pieces of media
[codex:520867] * @notice This contract contains all of the market logic for Media
[codex:520867] */
[codex:520867] contract Market is IMarket {
[codex:520867]
[codex:520867] thinking
[codex:520867] **Identifying Math.sol**
[codex:520867] exec
[codex:520867] /bin/bash -lc "sed -n '2562,2636p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ont651uv succeeded in 6ms:
[codex:520867] FILE: contracts/contracts/Math.sol
[codex:520867] ================================================================================
[codex:520867] pragma solidity 0.6.8;
[codex:520867] pragma experimental ABIEncoderV2;
[codex:520867]
[codex:520867] import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
[codex:520867]
[codex:520867] /**
[codex:520867] * @title Math
[codex:520867] *
[codex:520867] * Library for non-standard Math functions
[codex:520867] * NOTE: This file is a clone of the dydx protocol's Decimal.sol contract.
[codex:520867] * It was forked from https://github.com/dydxprotocol/solo at commit
[codex:520867] * 2d8454e02702fe5bc455b848556660629c3cad36. It has not been modified other than to use a
[codex:520867] * newer solidity in the pragma to match the rest of the contract suite of this project.
[codex:520867] */
[codex:520867] library Math {
[codex:520867] using SafeMath for uint256;
[codex:520867]
[codex:520867] // ============ Library Functions ============
[codex:520867]
[codex:520867] thinking
[codex:520867] **Opening Media.sol file**
[codex:520867] exec
[codex:520867] /bin/bash -lc "sed -n '2637,3216p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ont651uv succeeded in 5ms:
[codex:520867] FILE: contracts/contracts/Media.sol
[codex:520867] ================================================================================
[codex:520867] // SPDX-License-Identifier: GPL-3.0
[codex:520867] pragma solidity 0.6.8;
[codex:520867] pragma experimental ABIEncoderV2;
[codex:520867]
[codex:520867] import {ERC721Burnable} from "./ERC721Burnable.sol";
[codex:520867] import {ERC721} from "./ERC721.sol";
[codex:520867] import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol";
[codex:520867] import {Counters} from "@openzeppelin/contracts/utils/Counters.sol";
[codex:520867] import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
[codex:520867] import {Math} from "@openzeppelin/contracts/math/Math.sol";
[codex:520867] import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:520867] import {
[codex:520867] ReentrancyGuard
[codex:520867] } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
[codex:520867] import {Decimal} from "./Decimal.sol";
[codex:520867] import {IMarket} from "./interfaces/IMarket.sol";
[codex:520867] import "./interfaces/IMedia.sol";
[codex:520867]
[codex:520867]
[codex:520867]
[codex:520867]
[codex:520867]
[codex:520867]
[codex:520867]
[codex:520867]
[codex:520867] thinking
[codex:520867] **Analyzing reentrancy and signature vulnerabilities**
[codex:520867]
[codex:520867] I'm auditing potential vulnerabilities concentrating on reentrancy risks within Market and Media contracts—especially around token transfers involving ERC20 and ERC721 tokens—and signature validation issues in mintWithSig and permit functions, exploring scenarios that could lead to duplicate payouts or signature misuse due to missing reentrancy guards and incomplete signature data.
[codex:520867] thinking
[codex:520867] **Evaluating transfer and signature edge cases**
[codex:520867]
[codex:520867] I’m carefully checking token transfer paths for reentrancy risks like missing nonReentrant guards on ERC721 transfer functions and ownership-dependent nonce mappings in signatures, as well as fee-on-transfer token handling issues that could cause auto-acceptance of underpaid bids and some quirks around minting order of state and external calls that might affect contract behavior unexpectedly.
[codex:520867] thinking
[codex:520867] **Analyzing access control and reentrancy boundaries**
[codex:520867]
[codex:520867] I’m examining how token metadata updates can mismatch content hashes without strict checks, while also exploring subtle reentrancy patterns related to ERC721 transfers and bid acceptance, especially around nonReentrant coverage gaps on transfer functions and their impact on bid processing and state consistency.
[codex:520867] thinking
[codex:520867] **Examining token transfer reentrancy and state consistency**
[codex:520867]
[codex:520867] I’m tracing how nested token transfers triggered during onERC721Received interact, especially regarding ownership updates, payments to previous owners, and bid acceptance flows, while also checking for potential issues with mappings, share calculations, and signature handling under state changes and reentrancy in the contract system.
[codex:520867] thinking
[codex:520867] **Analyzing ownership tracking and reentrancy nuances**
[codex:520867]
[codex:520867] I’m exploring how previous owner tracking only updates on market transfers, leading to stale data after external transfers, and carefully checking interactions around reentrancy guards, external calls, and bid acceptance to assess potential inconsistencies or exploit paths.
[codex:520867] thinking
[codex:520867] **Examining signature scope and auto-accept logic issues**
[codex:520867]
[codex:520867] I’m digging into how signatures exclude full URI data, possibly allowing URI mismatches, and focusing on a key bug in auto-accept that uses user-supplied bid amounts instead of actual received tokens, enabling fee-on-transfer tokens to underpay sellers and bypass bid validity checks.
[codex:520867] thinking
[codex:520867] **Analyzing reentrancy and configuration edge cases**
[codex:520867]
[codex:520867] I’m reviewing how Market functions reenter during Media calls, noting that nonReentrant guards in Media prevent exploits despite Market lacking them. I also examine configuration risks when Market’s mediaContract is set to an EOA instead of a contract, which might allow unexpected direct calls but isn’t an exploit if owner is trusted.
[codex:520867] exec
[codex:520867] /bin/bash -lc 'rg -n "delegatecall|delegate" AUDIT_BUNDLE.txt' in /tmp/codex-multi-ont651uv exited 1 in 11ms:
[codex:520867]
[codex:520867]
[codex:520867] thinking
[codex:520867] **Analyzing bid validation in Market.sol**
[codex:520867] exec
[codex:520867] /bin/bash -lc "nl -ba contracts/contracts/Market.sol | sed -n '1,260p'" in /tmp/codex-multi-ont651uv succeeded in 6ms:
[codex:520867] 1 // SPDX-License-Identifier: GPL-3.0
[codex:520867] 2
[codex:520867] 3 pragma solidity 0.6.8;
[codex:520867] 4 pragma experimental ABIEncoderV2;
[codex:520867] 5
[codex:520867] 6 import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
[codex:520867] 7 import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
[codex:520867] 8 import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:520867] 9 import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";
[codex:520867] 10 import {Decimal} from "./Decimal.sol";
[codex:520867] 11 import {Media} from "./Media.sol";
[codex:520867] 12 import {IMarket} from "./interfaces/IMarket.sol";
[codex:520867] 13
[codex:520867] 14 /**
[codex:520867] 15 * @title A Market for pieces of media
[codex:520867] 16 * @notice This contract contains all of the market logic for Media
[codex:520867] 17 */
[codex:520867] 18 contract Market is IMarket {
[codex:520867] 19 using SafeMath for uint256;
[codex:520867] 20 using SafeERC20 for IERC20;
[codex:520867] exec
[codex:520867] /bin/bash -lc "nl -ba contracts/contracts/Market.sol | sed -n '260,420p'" in /tmp/codex-multi-ont651uv succeeded in 6ms:
[codex:520867] 260 bid.currency == _tokenAsks[tokenId].currency &&
[codex:520867] 261 bid.amount >= _tokenAsks[tokenId].amount
[codex:520867] 262 ) {
[codex:520867] 263 // Finalize exchange
[codex:520867] 264 _finalizeNFTTransfer(tokenId, bid.bidder);
[codex:520867] 265 }
[codex:520867] 266 }
[codex:520867] 267
[codex:520867] 268 /**
[codex:520867] 269 * @notice Removes the bid on a particular media for a bidder. The bid amount
[codex:520867] 270 * is transferred from this contract to the bidder, if they have a bid placed.
[codex:520867] 271 */
[codex:520867] 272 function removeBid(uint256 tokenId, address bidder)
[codex:520867] 273 public
[codex:520867] 274 override
[codex:520867] 275 onlyMediaCaller
[codex:520867] 276 {
[codex:520867] 277 Bid storage bid = _tokenBidders[tokenId][bidder];
[codex:520867] 278 uint256 bidAmount = bid.amount;
[codex:520867] 279 address bidCurrency = bid.currency;
[codex:520867]
[codex:520867] thinking
[codex:520867] **Verifying relevant code line ranges**
[codex:520867] exec
[codex:520867] /bin/bash -lc "nl -ba contracts/contracts/Media.sol | sed -n '120,360p'" in /tmp/codex-multi-ont651uv succeeded in 6ms:
[codex:520867] 120 * the media for the specified tokenId
[codex:520867] 121 */
[codex:520867] 122 modifier onlyApprovedOrOwner(address spender, uint256 tokenId) {
[codex:520867] 123 require(
[codex:520867] 124 _isApprovedOrOwner(spender, tokenId),
[codex:520867] 125 "Media: Only approved or owner"
[codex:520867] 126 );
[codex:520867] 127 _;
[codex:520867] 128 }
[codex:520867] 129
[codex:520867] 130 /**
[codex:520867] 131 * @notice Ensure the token has been created (even if it has been burned)
[codex:520867] 132 */
[codex:520867] 133 modifier onlyTokenCreated(uint256 tokenId) {
[codex:520867] 134 require(
[codex:520867] 135 _tokenIdTracker.current() > tokenId,
[codex:520867] 136 "Media: token with that id does not exist"
[codex:520867] 137 );
[codex:520867] 138 _;
[codex:520867] 139 }
[codex:520867]
[codex:520867] thinking
[codex:520867] **Assessing signature validation and bid handling issues**
[codex:520867] exec
[codex:520867] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-ont651uv succeeded in 5ms:
[codex:520867] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:520867]
[codex:520867] thinking
[codex:520867] **Constructing detailed JSON output for findings**
[codex:520867]
[codex:520867] I'll carefully assemble the JSON with the required keys—no_findings, summary, and findings—ensuring the summary captures the medium-severity auto-accept bid validation issue, while evidence pinpoints specific code lines without using line ranges, to comply with developer instructions.
[codex:520867] codex
[codex:520867] {"no_findings":false,"summary":"Found 1 medium-severity issue where auto-acceptance can finalize bids that are underfunded or not evenly splittable, causing underpayment and/or stuck dust.","findings":[{"severity":"medium","category":"other","title":"Auto-accept uses unadjusted bid amount and skips bid validation","exploit_scenario":"A seller sets an ask of 100 tokens. A bidder uses a fee-on-transfer ERC20 and submits a bid for 100. The market receives only 90 (stored as the bid amount), but the auto-accept path checks the original 100 and immediately finalizes the sale. The seller receives only 90 (split by shares), yet the NFT transfers. Similarly, bids that do not split evenly into shares can still auto-accept, leaving remainder dust in the market contract.","recommendation":"When auto-accepting, compare the stored bid amount (after balance diff) against the ask, and require isValidBid(tokenId, storedAmount) before calling _finalizeNFTTransfer. Consider emitting the normalized amount in the BidCreated event for off-chain consistency.","evidence":"In Market.setBid, the actual received amount is stored using the before/after balance diff, but the auto-accept check uses the original bid.amount and does not enforce isValidBid before _finalizeNFTTransfer.","locations":["contracts/contracts/Market.sol:241","contracts/contracts/Market.sol:247","contracts/contracts/Market.sol:256","contracts/contracts/Market.sol:261","contracts/contracts/Market.sol:264"]}]}
[codex:520867] tokens used
[codex:520867] 70,309
[codex:520867] {"no_findings":false,"summary":"Found 1 medium-severity issue where auto-acceptance can finalize bids that are underfunded or not evenly splittable, causing underpayment and/or stuck dust.","findings":[{"severity":"medium","category":"other","title":"Auto-accept uses unadjusted bid amount and skips bid validation","exploit_scenario":"A seller sets an ask of 100 tokens. A bidder uses a fee-on-transfer ERC20 and submits a bid for 100. The market receives only 90 (stored as the bid amount), but the auto-accept path checks the original 100 and immediately finalizes the sale. The seller receives only 90 (split by shares), yet the NFT transfers. Similarly, bids that do not split evenly into shares can still auto-accept, leaving remainder dust in the market contract.","recommendation":"When auto-accepting, compare the stored bid amount (after balance diff) against the ask, and require isValidBid(tokenId, storedAmount) before calling _finalizeNFTTransfer. Consider emitting the normalized amount in the BidCreated event for off-chain consistency.","evidence":"In Market.setBid, the actual received amount is stored using the before/after balance diff, but the auto-accept check uses the original bid.amount and does not enforce isValidBid before _finalizeNFTTransfer.","locations":["contracts/contracts/Market.sol:241","contracts/contracts/Market.sol:247","contracts/contracts/Market.sol:256","contracts/contracts/Market.sol:261","contracts/contracts/Market.sol:264"]}]}
{
"codex": {
"ran_at": "2025-12-29T16:48:06.071934+00:00",
"returncode": 0
},
"summary": "Found 1 medium-severity issue where auto-acceptance can finalize bids that are underfunded or not evenly splittable, causing underpayment and/or stuck dust.",
"raw_final": {
"summary": "Found 1 medium-severity issue where auto-acceptance can finalize bids that are underfunded or not evenly splittable, causing underpayment and/or stuck dust.",
"findings": [
{
"title": "Auto-accept uses unadjusted bid amount and skips bid validation",
"category": "other",
"evidence": "In Market.setBid, the actual received amount is stored using the before/after balance diff, but the auto-accept check uses the original bid.amount and does not enforce isValidBid before _finalizeNFTTransfer.",
"severity": "medium",
"locations": [
"contracts/contracts/Market.sol:241",
"contracts/contracts/Market.sol:247",
"contracts/contracts/Market.sol:256",
"contracts/contracts/Market.sol:261",
"contracts/contracts/Market.sol:264"
],
"recommendation": "When auto-accepting, compare the stored bid amount (after balance diff) against the ask, and require isValidBid(tokenId, storedAmount) before calling _finalizeNFTTransfer. Consider emitting the normalized amount in the BidCreated event for off-chain consistency.",
"exploit_scenario": "A seller sets an ask of 100 tokens. A bidder uses a fee-on-transfer ERC20 and submits a bid for 100. The market receives only 90 (stored as the bid amount), but the auto-accept path checks the original 100 and immediately finalizes the sale. The seller receives only 90 (split by shares), yet the NFT transfers. Similarly, bids that do not split evenly into shares can still auto-accept, leaving remainder dust in the market contract."
}
],
"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 0x00ea 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x776a0835 00000026: GT 00000027: PUSH2 0x008c 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xba339399 00000031: GT 00000032: PUSH2 0x0066 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xba339399 0000003c: EQ 0000003d: PUSH2 0x01ee 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xbdb58698 00000047: EQ 00000048: PUSH2 0x0201 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xeb55683a 00000052: EQ 00000053: PUSH2 0x0214 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xf9ce0582 0000005d: EQ 0000005e: PUSH2 0x0227 00000061: JUMPI 00000062: PUSH2 0x00ea 00000065: JUMP 00000066: JUMPDEST 00000067: DUP1 00000068: PUSH4 0x776a0835 0000006d: EQ 0000006e: PUSH2 0x019b 00000071: JUMPI 00000072: DUP1 00000073: PUSH4 0xad827dc4 00000078: EQ 00000079: PUSH2 0x01ae 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0xb920c123 00000083: EQ 00000084: PUSH2 0x01ce 00000087: JUMPI 00000088: PUSH2 0x00ea 0000008b: JUMP 0000008c: JUMPDEST 0000008d: DUP1 0000008e: PUSH4 0x4e21f9c0 00000093: GT 00000094: PUSH2 0x00c8 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0x4e21f9c0 0000009e: EQ 0000009f: PUSH2 0x0140 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0x578064f6 000000a9: EQ 000000aa: PUSH2 0x0155 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0x62f24b70 000000b4: EQ 000000b5: PUSH2 0x0175 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0x75cb2672 000000bf: EQ 000000c0: PUSH2 0x0188 000000c3: JUMPI 000000c4: PUSH2 0x00ea 000000c7: JUMP 000000c8: JUMPDEST 000000c9: DUP1 000000ca: PUSH4 0x02e8fe13 000000cf: EQ 000000d0: PUSH2 0x00ef 000000d3: JUMPI 000000d4: DUP1 000000d5: PUSH4 0x28220f35 000000da: EQ 000000db: PUSH2 0x0118 000000de: JUMPI 000000df: DUP1 000000e0: PUSH4 0x360636eb 000000e5: EQ 000000e6: PUSH2 0x012d 000000e9: JUMPI 000000ea: JUMPDEST 000000eb: PUSH1 0x00 000000ed: DUP1 000000ee: REVERT 000000ef: JUMPDEST 000000f0: PUSH2 0x0102 000000f3: PUSH2 0x00fd 000000f6: CALLDATASIZE 000000f7: PUSH1 0x04 000000f9: PUSH2 0x18fb 000000fc: JUMP 000000fd: JUMPDEST 000000fe: PUSH2 0x0247 00000101: JUMP 00000102: JUMPDEST 00000103: PUSH1 0x40 00000105: MLOAD 00000106: PUSH2 0x010f 00000109: SWAP2 0000010a: SWAP1 0000010b: PUSH2 0x1989 0000010e: JUMP 0000010f: JUMPDEST 00000110: PUSH1 0x40 00000112: MLOAD 00000113: DUP1 00000114: SWAP2 00000115: SUB 00000116: SWAP1 00000117: RETURN 00000118: JUMPDEST 00000119: PUSH2 0x012b 0000011c: PUSH2 0x0126 0000011f: CALLDATASIZE 00000120: PUSH1 0x04 00000122: PUSH2 0x1740 00000125: JUMP 00000126: JUMPDEST 00000127: PUSH2 0x02dd 0000012a: JUMP 0000012b: JUMPDEST 0000012c: STOP 0000012d: JUMPDEST 0000012e: PUSH2 0x0102 00000131: PUSH2 0x013b 00000134: CALLDATASIZE 00000135: PUSH1 0x04 00000137: PUSH2 0x16fb 0000013a: JUMP 0000013b: JUMPDEST 0000013c: PUSH2 0x0375 0000013f: JUMP 00000140: JUMPDEST 00000141: PUSH2 0x0148 00000144: PUSH2 0x03bb 00000147: JUMP 00000148: JUMPDEST 00000149: PUSH1 0x40 0000014b: MLOAD 0000014c: PUSH2 0x010f 0000014f: SWAP2 00000150: SWAP1 00000151: PUSH2 0x1938 00000154: JUMP 00000155: JUMPDEST 00000156: PUSH2 0x0168 00000159: PUSH2 0x0163 0000015c: CALLDATASIZE 0000015d: PUSH1 0x04 0000015f: PUSH2 0x1740 00000162: JUMP 00000163: JUMPDEST 00000164: PUSH2 0x03ca 00000167: JUMP 00000168: JUMPDEST 00000169: PUSH1 0x40 0000016b: MLOAD 0000016c: PUSH2 0x010f 0000016f: SWAP2 00000170: SWAP1 00000171: PUSH2 0x1ed4 00000174: JUMP 00000175: JUMPDEST 00000176: PUSH2 0x012b 00000179: PUSH2 0x0183 0000017c: CALLDATASIZE 0000017d: PUSH1 0x04 0000017f: PUSH2 0x179f 00000182: JUMP 00000183: JUMPDEST 00000184: PUSH2 0x0405 00000187: JUMP 00000188: JUMPDEST 00000189: PUSH2 0x012b 0000018c: PUSH2 0x0196 0000018f: CALLDATASIZE 00000190: PUSH1 0x04 00000192: PUSH2 0x16a3 00000195: JUMP 00000196: JUMPDEST 00000197: PUSH2 0x04d1 0000019a: JUMP 0000019b: JUMPDEST 0000019c: PUSH2 0x012b 0000019f: PUSH2 0x01a9 000001a2: CALLDATASIZE 000001a3: PUSH1 0x04 000001a5: PUSH2 0x1770 000001a8: JUMP 000001a9: JUMPDEST 000001aa: PUSH2 0x056c 000001ad: JUMP 000001ae: JUMPDEST 000001af: PUSH2 0x01c1 000001b2: PUSH2 0x01bc 000001b5: CALLDATASIZE 000001b6: PUSH1 0x04 000001b8: PUSH2 0x1770 000001bb: JUMP 000001bc: JUMPDEST 000001bd: PUSH2 0x0692 000001c0: JUMP 000001c1: JUMPDEST 000001c2: PUSH1 0x40 000001c4: MLOAD 000001c5: PUSH2 0x010f 000001c8: SWAP2 000001c9: SWAP1 000001ca: PUSH2 0x1f55 000001cd: JUMP 000001ce: JUMPDEST 000001cf: PUSH2 0x01e1 000001d2: PUSH2 0x01dc 000001d5: CALLDATASIZE 000001d6: PUSH1 0x04 000001d8: PUSH2 0x1716 000001db: JUMP 000001dc: JUMPDEST 000001dd: PUSH2 0x0708 000001e0: JUMP 000001e1: JUMPDEST 000001e2: PUSH1 0x40 000001e4: MLOAD 000001e5: PUSH2 0x010f 000001e8: SWAP2 000001e9: SWAP1 000001ea: PUSH2 0x1fdf 000001ed: JUMP 000001ee: JUMPDEST 000001ef: PUSH2 0x012b 000001f2: PUSH2 0x01fc 000001f5: CALLDATASIZE 000001f6: PUSH1 0x04 000001f8: PUSH2 0x1823 000001fb: JUMP 000001fc: JUMPDEST 000001fd: PUSH2 0x072c 00000200: JUMP 00000201: JUMPDEST 00000202: PUSH2 0x012b 00000205: PUSH2 0x020f 00000208: CALLDATASIZE 00000209: PUSH1 0x04 0000020b: PUSH2 0x1859 0000020e: JUMP 0000020f: JUMPDEST 00000210: PUSH2 0x08d7 00000213: JUMP 00000214: JUMPDEST 00000215: PUSH2 0x012b 00000218: PUSH2 0x0222 0000021b: CALLDATASIZE 0000021c: PUSH1 0x04 0000021e: PUSH2 0x17f7 00000221: JUMP 00000222: JUMPDEST 00000223: PUSH2 0x0d29 00000226: JUMP 00000227: JUMPDEST 00000228: PUSH2 0x023a 0000022b: PUSH2 0x0235 0000022e: CALLDATASIZE 0000022f: PUSH1 0x04 00000231: PUSH2 0x1740 00000234: JUMP 00000235: JUMPDEST 00000236: PUSH2 0x0dd4 00000239: JUMP 0000023a: JUMPDEST 0000023b: PUSH1 0x40 0000023d: MLOAD 0000023e: PUSH2 0x010f 00000241: SWAP2 00000242: SWAP1 00000243: PUSH2 0x1f12 00000246: JUMP 00000247: JUMPDEST 00000248: PUSH1 0x00 0000024a: PUSH2 0x0251 0000024d: PUSH2 0x1589 00000250: JUMP 00000251: JUMPDEST 00000252: PUSH2 0x025a 00000255: DUP5 00000256: PUSH2 0x0dd4 00000259: JUMP 0000025a: JUMPDEST 0000025b: SWAP1 0000025c: POP 0000025d: PUSH2 0x0265 00000260: DUP2 00000261: PUSH2 0x0375 00000264: JUMP 00000265: JUMPDEST 00000266: PUSH2 0x028a 00000269: JUMPI 0000026a: PUSH1 0x40 0000026c: MLOAD 0000026d: PUSH3 0x461bcd 00000271: PUSH1 0xe5 00000273: SHL 00000274: DUP2 00000275: MSTORE 00000276: PUSH1 0x04 00000278: ADD 00000279: PUSH2 0x0281 0000027c: SWAP1 0000027d: PUSH2 0x1d3e 00000280: JUMP 00000281: JUMPDEST 00000282: PUSH1 0x40 00000284: MLOAD 00000285: DUP1 00000286: SWAP2 00000287: SUB 00000288: SWAP1 00000289: REVERT 0000028a: JUMPDEST 0000028b: DUP3 0000028c: ISZERO 0000028d: DUP1 0000028e: ISZERO 0000028f: SWAP1 00000290: PUSH2 0x02d3 00000293: JUMPI 00000294: POP 00000295: PUSH2 0x02d0 00000298: PUSH2 0x02a5 0000029b: DUP3 0000029c: PUSH1 0x40 0000029e: ADD 0000029f: MLOAD 000002a0: DUP6 000002a1: PUSH2 0x0708 000002a4: JUMP 000002a5: JUMPDEST 000002a6: PUSH2 0x02c4 000002a9: PUSH2 0x02b6 000002ac: DUP5 000002ad: PUSH1 0x00 000002af: ADD 000002b0: MLOAD 000002b1: DUP8 000002b2: PUSH2 0x0708 000002b5: JUMP 000002b6: JUMPDEST 000002b7: PUSH2 0x02c4 000002ba: DUP6 000002bb: PUSH1 0x20 000002bd: ADD 000002be: MLOAD 000002bf: DUP9 000002c0: PUSH2 0x0708 000002c3: JUMP 000002c4: JUMPDEST 000002c5: SWAP1 000002c6: PUSH4 0xffffffff 000002cb: PUSH2 0x0e2a 000002ce: AND 000002cf: JUMP 000002d0: JUMPDEST 000002d1: DUP4 000002d2: EQ 000002d3: JUMPDEST 000002d4: SWAP2 000002d5: POP 000002d6: POP 000002d7: JUMPDEST 000002d8: SWAP3 000002d9: SWAP2 000002da: POP 000002db: POP 000002dc: JUMP 000002dd: JUMPDEST 000002de: PUSH1 0x00 000002e0: SLOAD 000002e1: PUSH1 0x01 000002e3: PUSH1 0x01 000002e5: PUSH1 0xa0 000002e7: SHL 000002e8: SUB 000002e9: AND 000002ea: CALLER 000002eb: EQ 000002ec: PUSH2 0x0307 000002ef: JUMPI 000002f0: PUSH1 0x40 000002f2: MLOAD 000002f3: PUSH3 0x461bcd 000002f7: PUSH1 0xe5 000002f9: SHL 000002fa: DUP2 000002fb: MSTORE 000002fc: PUSH1 0x04 000002fe: ADD 000002ff: PUSH2 0x0281 00000302: SWAP1 00000303: PUSH2 0x1cb8 00000306: JUMP 00000307: JUMPDEST 00000308: DUP1 00000309: PUSH32 0xbf58f6d6c7d7c6efc69e7444efa93ed26d7cdc0e82e12a37df96f36a367561df 0000032a: PUSH1 0x04 0000032c: PUSH1 0x00 0000032e: DUP5 0000032f: DUP2 00000330: MSTORE 00000331: PUSH1 0x20 00000333: ADD 00000334: SWAP1 00000335: DUP2 00000336: MSTORE 00000337: PUSH1 0x20 00000339: ADD 0000033a: PUSH1 0x00 0000033c: KECCAK256 0000033d: PUSH1 0x40 0000033f: MLOAD 00000340: PUSH2 0x0349 00000343: SWAP2 00000344: SWAP1 00000345: PUSH2 0x1ef4 00000348: JUMP 00000349: JUMPDEST 0000034a: PUSH1 0x40 0000034c: MLOAD 0000034d: DUP1 0000034e: SWAP2 0000034f: SUB 00000350: SWAP1 00000351: LOG2 00000352: PUSH1 0x00 00000354: SWAP1 00000355: DUP2 00000356: MSTORE 00000357: PUSH1 0x04 00000359: PUSH1 0x20 0000035b: MSTORE 0000035c: PUSH1 0x40 0000035e: DUP2 0000035f: KECCAK256 00000360: SWAP1 00000361: DUP2 00000362: SSTORE 00000363: PUSH1 0x01 00000365: ADD 00000366: DUP1 00000367: SLOAD 00000368: PUSH1 0x01 0000036a: PUSH1 0x01 0000036c: PUSH1 0xa0 0000036e: SHL 0000036f: SUB 00000370: NOT 00000371: AND 00000372: SWAP1 00000373: SSTORE 00000374: JUMP 00000375: JUMPDEST 00000376: PUSH1 0x00 00000378: PUSH2 0x0390 0000037b: PUSH1 0x64 0000037d: PUSH8 0x0de0b6b3a7640000 00000386: PUSH4 0xffffffff 0000038b: PUSH2 0x0e4f 0000038e: AND 0000038f: JUMP 00000390: JUMPDEST 00000391: DUP3 00000392: MLOAD 00000393: MLOAD 00000394: PUSH1 0x40 00000396: DUP5 00000397: ADD 00000398: MLOAD 00000399: MLOAD 0000039a: PUSH1 0x20 0000039c: DUP6 0000039d: ADD 0000039e: MLOAD 0000039f: MLOAD 000003a0: PUSH2 0x03b4 000003a3: SWAP3 000003a4: SWAP2 000003a5: PUSH2 0x02c4 000003a8: SWAP2 000003a9: SWAP1 000003aa: PUSH4 0xffffffff 000003af: PUSH2 0x0e2a 000003b2: AND 000003b3: JUMP 000003b4: JUMPDEST 000003b5: EQ 000003b6: SWAP3 000003b7: SWAP2 000003b8: POP 000003b9: POP 000003ba: JUMP 000003bb: JUMPDEST 000003bc: PUSH1 0x00 000003be: SLOAD 000003bf: PUSH1 0x01 000003c1: PUSH1 0x01 000003c3: PUSH1 0xa0 000003c5: SHL 000003c6: SUB 000003c7: AND 000003c8: DUP2 000003c9: JUMP 000003ca: JUMPDEST 000003cb: PUSH2 0x03d2 000003ce: PUSH2 0x15bb 000003d1: JUMP 000003d2: JUMPDEST 000003d3: POP 000003d4: PUSH1 0x00 000003d6: SWAP1 000003d7: DUP2 000003d8: MSTORE 000003d9: PUSH1 0x04 000003db: PUSH1 0x20 000003dd: SWAP1 000003de: DUP2 000003df: MSTORE 000003e0: PUSH1 0x40 000003e2: SWAP2 000003e3: DUP3 000003e4: SWAP1 000003e5: KECCAK256 000003e6: DUP3 000003e7: MLOAD 000003e8: DUP1 000003e9: DUP5 000003ea: ADD 000003eb: SWAP1 000003ec: SWAP4 000003ed: MSTORE 000003ee: DUP1 000003ef: SLOAD 000003f0: DUP4 000003f1: MSTORE 000003f2: PUSH1 0x01 000003f4: ADD 000003f5: SLOAD 000003f6: PUSH1 0x01 000003f8: PUSH1 0x01 000003fa: PUSH1 0xa0 000003fc: SHL 000003fd: SUB 000003fe: AND 000003ff: SWAP1 00000400: DUP3 00000401: ADD 00000402: MSTORE 00000403: SWAP1 00000404: JUMP 00000405: JUMPDEST 00000406: PUSH1 0x00 00000408: SLOAD 00000409: PUSH1 0x01 0000040b: PUSH1 0x01 0000040d: PUSH1 0xa0 0000040f: SHL 00000410: SUB 00000411: AND 00000412: CALLER 00000413: EQ 00000414: PUSH2 0x042f 00000417: JUMPI 00000418: PUSH1 0x40 0000041a: MLOAD 0000041b: PUSH3 0x461bcd 0000041f: PUSH1 0xe5 00000421: SHL 00000422: DUP2 00000423: MSTORE 00000424: PUSH1 0x04 00000426: ADD 00000427: PUSH2 0x0281 0000042a: SWAP1 0000042b: PUSH2 0x1cb8 0000042e: JUMP 0000042f: JUMPDEST 00000430: PUSH2 0x043d 00000433: DUP3 00000434: DUP3 00000435: PUSH1 0x00 00000437: ADD 00000438: MLOAD 00000439: PUSH2 0x0247 0000043c: JUMP 0000043d: JUMPDEST 0000043e: PUSH2 0x0459 00000441: JUMPI 00000442: PUSH1 0x40 00000444: MLOAD 00000445: PUSH3 0x461bcd 00000449: PUSH1 0xe5 0000044b: SHL 0000044c: DUP2 0000044d: MSTORE 0000044e: PUSH1 0x04 00000450: ADD 00000451: PUSH2 0x0281 00000454: SWAP1 00000455: PUSH2 0x1ae3 00000458: JUMP 00000459: JUMPDEST 0000045a: PUSH1 0x00 0000045c: DUP3 0000045d: DUP2 0000045e: MSTORE 0000045f: PUSH1 0x04 00000461: PUSH1 0x20 00000463: SWAP1 00000464: DUP2 00000465: MSTORE 00000466: PUSH1 0x40 00000468: SWAP2 00000469: DUP3 0000046a: SWAP1 0000046b: KECCAK256 0000046c: DUP4 0000046d: MLOAD 0000046e: DUP2 0000046f: SSTORE 00000470: SWAP1 00000471: DUP4 00000472: ADD 00000473: MLOAD 00000474: PUSH1 0x01 00000476: SWAP1 00000477: SWAP2 00000478: ADD 00000479: DUP1 0000047a: SLOAD 0000047b: PUSH1 0x01 0000047d: PUSH1 0x01 0000047f: PUSH1 0xa0 00000481: SHL 00000482: SUB 00000483: NOT 00000484: AND 00000485: PUSH1 0x01 00000487: PUSH1 0x01 00000489: PUSH1 0xa0 0000048b: SHL 0000048c: SUB 0000048d: SWAP1 0000048e: SWAP3 0000048f: AND 00000490: SWAP2 00000491: SWAP1 00000492: SWAP2 00000493: OR 00000494: SWAP1 00000495: SSTORE 00000496: MLOAD 00000497: DUP3 00000498: SWAP1 00000499: PUSH32 0xf7347cb9e91d8cbe995b51920ba5f92cbf84a9e09cbed3cd7a739fef4d1d07cf 000004ba: SWAP1 000004bb: PUSH2 0x04c5 000004be: SWAP1 000004bf: DUP5 000004c0: SWAP1 000004c1: PUSH2 0x1ed4 000004c4: JUMP 000004c5: JUMPDEST 000004c6: PUSH1 0x40 000004c8: MLOAD 000004c9: DUP1 000004ca: SWAP2 000004cb: SUB 000004cc: SWAP1 000004cd: LOG2 000004ce: POP 000004cf: POP 000004d0: JUMP 000004d1: JUMPDEST 000004d2: PUSH1 0x01 000004d4: SLOAD 000004d5: PUSH1 0x01 000004d7: PUSH1 0x01 000004d9: PUSH1 0xa0 000004db: SHL 000004dc: SUB 000004dd: AND 000004de: CALLER 000004df: EQ 000004e0: PUSH2 0x04fb 000004e3: JUMPI 000004e4: PUSH1 0x40 000004e6: MLOAD 000004e7: PUSH3 0x461bcd 000004eb: PUSH1 0xe5 000004ed: SHL 000004ee: DUP2 000004ef: MSTORE 000004f0: PUSH1 0x04 000004f2: ADD 000004f3: PUSH2 0x0281 000004f6: SWAP1 000004f7: PUSH2 0x1c14 000004fa: JUMP 000004fb: JUMPDEST 000004fc: PUSH1 0x00 000004fe: SLOAD 000004ff: PUSH1 0x01 00000501: PUSH1 0x01 00000503: PUSH1 0xa0 00000505: SHL 00000506: SUB 00000507: AND 00000508: ISZERO 00000509: PUSH2 0x0524 0000050c: JUMPI 0000050d: PUSH1 0x40 0000050f: MLOAD 00000510: PUSH3 0x461bcd 00000514: PUSH1 0xe5 00000516: SHL 00000517: DUP2 00000518: MSTORE 00000519: PUSH1 0x04 0000051b: ADD 0000051c: PUSH2 0x0281 0000051f: SWAP1 00000520: PUSH2 0x1db9 00000523: JUMP 00000524: JUMPDEST 00000525: PUSH1 0x01 00000527: PUSH1 0x01 00000529: PUSH1 0xa0 0000052b: SHL 0000052c: SUB 0000052d: DUP2 0000052e: AND 0000052f: PUSH2 0x054a 00000532: JUMPI 00000533: PUSH1 0x40 00000535: MLOAD 00000536: PUSH3 0x461bcd 0000053a: PUSH1 0xe5 0000053c: SHL 0000053d: DUP2 0000053e: MSTORE 0000053f: PUSH1 0x04 00000541: ADD 00000542: PUSH2 0x0281 00000545: SWAP1 00000546: PUSH2 0x1e83 00000549: JUMP 0000054a: JUMPDEST 0000054b: PUSH1 0x00 0000054d: DUP1 0000054e: SLOAD 0000054f: PUSH1 0x01 00000551: PUSH1 0x01 00000553: PUSH1 0xa0 00000555: SHL 00000556: SUB 00000557: NOT 00000558: AND 00000559: PUSH1 0x01 0000055b: PUSH1 0x01 0000055d: PUSH1 0xa0 0000055f: SHL 00000560: SUB 00000561: SWAP3 00000562: SWAP1 00000563: SWAP3 00000564: AND 00000565: SWAP2 00000566: SWAP1 00000567: SWAP2 00000568: OR 00000569: SWAP1 0000056a: SSTORE 0000056b: JUMP 0000056c: JUMPDEST 0000056d: PUSH1 0x00 0000056f: SLOAD 00000570: PUSH1 0x01 00000572: PUSH1 0x01 00000574: PUSH1 0xa0 00000576: SHL 00000577: SUB 00000578: AND 00000579: CALLER 0000057a: EQ 0000057b: PUSH2 0x0596 0000057e: JUMPI 0000057f: PUSH1 0x40 00000581: MLOAD 00000582: PUSH3 0x461bcd 00000586: PUSH1 0xe5 00000588: SHL 00000589: DUP2 0000058a: MSTORE 0000058b: PUSH1 0x04 0000058d: ADD 0000058e: PUSH2 0x0281 00000591: SWAP1 00000592: PUSH2 0x1cb8 00000595: JUMP 00000596: JUMPDEST 00000597: PUSH1 0x00 00000599: DUP3 0000059a: DUP2 0000059b: MSTORE 0000059c: PUSH1 0x02 0000059e: PUSH1 0x20 000005a0: SWAP1 000005a1: DUP2 000005a2: MSTORE 000005a3: PUSH1 0x40 000005a5: DUP1 000005a6: DUP4 000005a7: KECCAK256 000005a8: PUSH1 0x01 000005aa: PUSH1 0x01 000005ac: PUSH1 0xa0 000005ae: SHL 000005af: SUB 000005b0: DUP1 000005b1: DUP7 000005b2: AND 000005b3: DUP6 000005b4: MSTORE 000005b5: SWAP3 000005b6: MSTORE 000005b7: SWAP1 000005b8: SWAP2 000005b9: KECCAK256 000005ba: DUP1 000005bb: SLOAD 000005bc: PUSH1 0x01 000005be: DUP3 000005bf: ADD 000005c0: SLOAD 000005c1: SWAP2 000005c2: SWAP3 000005c3: SWAP1 000005c4: SWAP2 000005c5: AND 000005c6: DUP2 000005c7: PUSH2 0x05e2 000005ca: JUMPI 000005cb: PUSH1 0x40 000005cd: MLOAD 000005ce: PUSH3 0x461bcd 000005d2: PUSH1 0xe5 000005d4: SHL 000005d5: DUP2 000005d6: MSTORE 000005d7: PUSH1 0x04 000005d9: ADD 000005da: PUSH2 0x0281 000005dd: SWAP1 000005de: PUSH2 0x1b61 000005e1: JUMP 000005e2: JUMPDEST 000005e3: PUSH1 0x00 000005e5: DUP2 000005e6: SWAP1 000005e7: POP 000005e8: DUP6 000005e9: PUSH32 0xcbebd567b8a5c57f63ec61dc46746aab28daff6bdd1f4a6a0a305c17fa5465c9 0000060a: DUP6 0000060b: PUSH1 0x40 0000060d: MLOAD 0000060e: PUSH2 0x0617 00000611: SWAP2 00000612: SWAP1 00000613: PUSH2 0x1f9e 00000616: JUMP 00000617: JUMPDEST 00000618: PUSH1 0x40 0000061a: MLOAD 0000061b: DUP1 0000061c: SWAP2 0000061d: SUB 0000061e: SWAP1 0000061f: LOG2 00000620: PUSH1 0x00 00000622: DUP7 00000623: DUP2 00000624: MSTORE 00000625: PUSH1 0x02 00000627: PUSH1 0x20 00000629: DUP2 0000062a: DUP2 0000062b: MSTORE 0000062c: PUSH1 0x40 0000062e: DUP1 0000062f: DUP5 00000630: KECCAK256 00000631: PUSH1 0x01 00000633: PUSH1 0x01 00000635: PUSH1 0xa0 00000637: SHL 00000638: SUB 00000639: DUP1 0000063a: DUP12 0000063b: AND 0000063c: DUP7 0000063d: MSTORE 0000063e: SWAP3 0000063f: MSTORE 00000640: DUP4 00000641: KECCAK256 00000642: DUP4 00000643: DUP2 00000644: SSTORE 00000645: PUSH1 0x01 00000647: DUP2 00000648: ADD 00000649: DUP1 0000064a: SLOAD 0000064b: PUSH1 0x01 0000064d: PUSH1 0x01 0000064f: PUSH1 0xa0 00000651: SHL 00000652: SUB 00000653: NOT 00000654: SWAP1 00000655: DUP2 00000656: AND 00000657: SWAP1 00000658: SWAP2 00000659: SSTORE 0000065a: SWAP3 0000065b: DUP2 0000065c: ADD 0000065d: DUP1 0000065e: SLOAD 0000065f: DUP5 00000660: AND 00000661: SWAP1 00000662: SSTORE 00000663: PUSH1 0x03 00000665: DUP2 00000666: ADD 00000667: DUP1 00000668: SLOAD 00000669: SWAP1 0000066a: SWAP4 0000066b: AND 0000066c: SWAP1 0000066d: SWAP3 0000066e: SSTORE 0000066f: PUSH1 0x04 00000671: SWAP1 00000672: SWAP2 00000673: ADD 00000674: SWAP2 00000675: SWAP1 00000676: SWAP2 00000677: SSTORE 00000678: PUSH2 0x068a 0000067b: SWAP1 0000067c: DUP3 0000067d: AND 0000067e: DUP7 0000067f: DUP6 00000680: PUSH4 0xffffffff 00000685: PUSH2 0x0e89 00000688: AND 00000689: JUMP 0000068a: JUMPDEST 0000068b: POP 0000068c: POP 0000068d: POP 0000068e: POP 0000068f: POP 00000690: POP 00000691: JUMP 00000692: JUMPDEST 00000693: PUSH2 0x069a 00000696: PUSH2 0x15d2 00000699: JUMP 0000069a: JUMPDEST 0000069b: POP 0000069c: PUSH1 0x00 0000069e: SWAP2 0000069f: DUP3 000006a0: MSTORE 000006a1: PUSH1 0x02 000006a3: PUSH1 0x20 000006a5: DUP2 000006a6: DUP2 000006a7: MSTORE 000006a8: PUSH1 0x40 000006aa: DUP1 000006ab: DUP6 000006ac: KECCAK256 000006ad: PUSH1 0x01 000006af: PUSH1 0x01 000006b1: PUSH1 0xa0 000006b3: SHL 000006b4: SUB 000006b5: SWAP5 000006b6: DUP6 000006b7: AND 000006b8: DUP7 000006b9: MSTORE 000006ba: DUP3 000006bb: MSTORE 000006bc: SWAP4 000006bd: DUP5 000006be: SWAP1 000006bf: KECCAK256 000006c0: DUP5 000006c1: MLOAD 000006c2: PUSH1 0xa0 000006c4: DUP2 000006c5: ADD 000006c6: DUP7 000006c7: MSTORE 000006c8: DUP2 000006c9: SLOAD 000006ca: DUP2 000006cb: MSTORE 000006cc: PUSH1 0x01 000006ce: DUP3 000006cf: ADD 000006d0: SLOAD 000006d1: DUP6 000006d2: AND 000006d3: DUP2 000006d4: DUP5 000006d5: ADD 000006d6: MSTORE 000006d7: SWAP3 000006d8: DUP2 000006d9: ADD 000006da: SLOAD 000006db: DUP5 000006dc: AND 000006dd: DUP4 000006de: DUP7 000006df: ADD 000006e0: MSTORE 000006e1: PUSH1 0x03 000006e3: DUP2 000006e4: ADD 000006e5: SLOAD 000006e6: SWAP1 000006e7: SWAP4 000006e8: AND 000006e9: PUSH1 0x60 000006eb: DUP4 000006ec: ADD 000006ed: MSTORE 000006ee: DUP4 000006ef: MLOAD 000006f0: SWAP1 000006f1: DUP2 000006f2: ADD 000006f3: SWAP1 000006f4: SWAP4 000006f5: MSTORE 000006f6: PUSH1 0x04 000006f8: SWAP1 000006f9: SWAP2 000006fa: ADD 000006fb: SLOAD 000006fc: DUP3 000006fd: MSTORE 000006fe: PUSH1 0x80 00000700: DUP2 00000701: ADD 00000702: SWAP2 00000703: SWAP1 00000704: SWAP2 00000705: MSTORE 00000706: SWAP1 00000707: JUMP 00000708: JUMPDEST 00000709: PUSH1 0x00 0000070b: PUSH2 0x0725 0000070e: PUSH1 0x64 00000710: PUSH2 0x0719 00000713: DUP5 00000714: DUP7 00000715: PUSH2 0x0edf 00000718: JUMP 00000719: JUMPDEST 0000071a: SWAP1 0000071b: PUSH4 0xffffffff 00000720: PUSH2 0x0ef8 00000723: AND 00000724: JUMP 00000725: JUMPDEST 00000726: SWAP4 00000727: SWAP3 00000728: POP 00000729: POP 0000072a: POP 0000072b: JUMP 0000072c: JUMPDEST 0000072d: PUSH1 0x00 0000072f: SLOAD 00000730: PUSH1 0x01 00000732: PUSH1 0x01 00000734: PUSH1 0xa0 00000736: SHL 00000737: SUB 00000738: AND 00000739: CALLER 0000073a: EQ 0000073b: PUSH2 0x0756 0000073e: JUMPI 0000073f: PUSH1 0x40 00000741: MLOAD 00000742: PUSH3 0x461bcd 00000746: PUSH1 0xe5 00000748: SHL 00000749: DUP2 0000074a: MSTORE 0000074b: PUSH1 0x04 0000074d: ADD 0000074e: PUSH2 0x0281 00000751: SWAP1 00000752: PUSH2 0x1cb8 00000755: JUMP 00000756: JUMPDEST 00000757: PUSH2 0x075e 0000075a: PUSH2 0x15d2 0000075d: JUMP 0000075e: JUMPDEST 0000075f: PUSH1 0x00 00000761: DUP4 00000762: DUP2 00000763: MSTORE 00000764: PUSH1 0x02 00000766: PUSH1 0x20 00000768: MSTORE 00000769: PUSH1 0x40 0000076b: DUP1 0000076c: DUP3 0000076d: KECCAK256 0000076e: SWAP2 0000076f: SWAP1 00000770: PUSH2 0x077f 00000773: SWAP1 00000774: PUSH1 0x60 00000776: DUP7 00000777: ADD 00000778: SWAP1 00000779: DUP7 0000077a: ADD 0000077b: PUSH2 0x16a3 0000077e: JUMP 0000077f: JUMPDEST 00000780: PUSH1 0x01 00000782: PUSH1 0x01 00000784: PUSH1 0xa0 00000786: SHL 00000787: SUB 00000788: SWAP1 00000789: DUP2 0000078a: AND 0000078b: DUP3 0000078c: MSTORE 0000078d: PUSH1 0x20 0000078f: DUP1 00000790: DUP4 00000791: ADD 00000792: SWAP4 00000793: SWAP1 00000794: SWAP4 00000795: MSTORE 00000796: PUSH1 0x40 00000798: SWAP2 00000799: DUP3 0000079a: ADD 0000079b: PUSH1 0x00 0000079d: KECCAK256 0000079e: DUP3 0000079f: MLOAD 000007a0: PUSH1 0xa0 000007a2: DUP2 000007a3: ADD 000007a4: DUP5 000007a5: MSTORE 000007a6: DUP2 000007a7: SLOAD 000007a8: DUP2 000007a9: MSTORE 000007aa: PUSH1 0x01 000007ac: DUP3 000007ad: ADD 000007ae: SLOAD 000007af: DUP4 000007b0: AND 000007b1: DUP2 000007b2: DUP7 000007b3: ADD 000007b4: MSTORE 000007b5: PUSH1 0x02 000007b7: DUP3 000007b8: ADD 000007b9: SLOAD 000007ba: DUP4 000007bb: AND 000007bc: DUP2 000007bd: DUP6 000007be: ADD 000007bf: MSTORE 000007c0: PUSH1 0x03 000007c2: DUP3 000007c3: ADD 000007c4: SLOAD 000007c5: SWAP1 000007c6: SWAP3 000007c7: AND 000007c8: PUSH1 0x60 000007ca: DUP4 000007cb: ADD 000007cc: MSTORE 000007cd: DUP3 000007ce: MLOAD 000007cf: SWAP4 000007d0: DUP5 000007d1: ADD 000007d2: SWAP1 000007d3: SWAP3 000007d4: MSTORE 000007d5: PUSH1 0x04 000007d7: SWAP1 000007d8: SWAP2 000007d9: ADD 000007da: SLOAD 000007db: DUP3 000007dc: MSTORE 000007dd: PUSH1 0x80 000007df: DUP2 000007e0: ADD 000007e1: SWAP2 000007e2: SWAP1 000007e3: SWAP2 000007e4: MSTORE 000007e5: DUP1 000007e6: MLOAD 000007e7: SWAP1 000007e8: SWAP2 000007e9: POP 000007ea: PUSH2 0x0805 000007ed: JUMPI 000007ee: PUSH1 0x40 000007f0: MLOAD 000007f1: PUSH3 0x461bcd 000007f5: PUSH1 0xe5 000007f7: SHL 000007f8: DUP2 000007f9: MSTORE 000007fa: PUSH1 0x04 000007fc: ADD 000007fd: PUSH2 0x0281 00000800: SWAP1 00000801: PUSH2 0x1bdd 00000804: JUMP 00000805: JUMPDEST 00000806: DUP1 00000807: MLOAD 00000808: DUP3 00000809: CALLDATALOAD 0000080a: EQ 0000080b: DUP1 0000080c: ISZERO 0000080d: PUSH2 0x083a 00000810: JUMPI 00000811: POP 00000812: PUSH2 0x0821 00000815: PUSH1 0x40 00000817: DUP4 00000818: ADD 00000819: PUSH1 0x20 0000081b: DUP5 0000081c: ADD 0000081d: PUSH2 0x16a3 00000820: JUMP 00000821: JUMPDEST 00000822: PUSH1 0x01 00000824: PUSH1 0x01 00000826: PUSH1 0xa0 00000828: SHL 00000829: SUB 0000082a: AND 0000082b: DUP2 0000082c: PUSH1 0x20 0000082e: ADD 0000082f: MLOAD 00000830: PUSH1 0x01 00000832: PUSH1 0x01 00000834: PUSH1 0xa0 00000836: SHL 00000837: SUB 00000838: AND 00000839: EQ 0000083a: JUMPDEST 0000083b: DUP1 0000083c: ISZERO 0000083d: PUSH2 0x084e 00000840: JUMPI 00000841: POP 00000842: PUSH1 0x80 00000844: DUP2 00000845: DUP2 00000846: ADD 00000847: MLOAD 00000848: MLOAD 00000849: SWAP1 0000084a: DUP4 0000084b: ADD 0000084c: CALLDATALOAD 0000084d: EQ 0000084e: JUMPDEST 0000084f: DUP1 00000850: ISZERO 00000851: PUSH2 0x087e 00000854: JUMPI 00000855: POP 00000856: PUSH2 0x0865 00000859: PUSH1 0x80 0000085b: DUP4 0000085c: ADD 0000085d: PUSH1 0x60 0000085f: DUP5 00000860: ADD 00000861: PUSH2 0x16a3 00000864: JUMP 00000865: JUMPDEST 00000866: PUSH1 0x01 00000868: PUSH1 0x01 0000086a: PUSH1 0xa0 0000086c: SHL 0000086d: SUB 0000086e: AND 0000086f: DUP2 00000870: PUSH1 0x60 00000872: ADD 00000873: MLOAD 00000874: PUSH1 0x01 00000876: PUSH1 0x01 00000878: PUSH1 0xa0 0000087a: SHL 0000087b: SUB 0000087c: AND 0000087d: EQ 0000087e: JUMPDEST 0000087f: PUSH2 0x089a 00000882: JUMPI 00000883: PUSH1 0x40 00000885: MLOAD 00000886: PUSH3 0x461bcd 0000088a: PUSH1 0xe5 0000088c: SHL 0000088d: DUP2 0000088e: MSTORE 0000088f: PUSH1 0x04 00000891: ADD 00000892: PUSH2 0x0281 00000895: SWAP1 00000896: PUSH2 0x1c81 00000899: JUMP 0000089a: JUMPDEST 0000089b: PUSH2 0x08a8 0000089e: DUP4 0000089f: DUP3 000008a0: PUSH1 0x00 000008a2: ADD 000008a3: MLOAD 000008a4: PUSH2 0x0247 000008a7: JUMP 000008a8: JUMPDEST 000008a9: PUSH2 0x08c4 000008ac: JUMPI 000008ad: PUSH1 0x40 000008af: MLOAD 000008b0: PUSH3 0x461bcd 000008b4: PUSH1 0xe5 000008b6: SHL 000008b7: DUP2 000008b8: MSTORE 000008b9: PUSH1 0x04 000008bb: ADD 000008bc: PUSH2 0x0281 000008bf: SWAP1 000008c0: PUSH2 0x1a5a 000008c3: JUMP 000008c4: JUMPDEST 000008c5: PUSH2 0x08d2 000008c8: DUP4 000008c9: DUP3 000008ca: PUSH1 0x40 000008cc: ADD 000008cd: MLOAD 000008ce: PUSH2 0x0f3a 000008d1: JUMP 000008d2: JUMPDEST 000008d3: POP 000008d4: POP 000008d5: POP 000008d6: JUMP 000008d7: JUMPDEST 000008d8: PUSH1 0x00 000008da: SLOAD 000008db: PUSH1 0x01 000008dd: PUSH1 0x01 000008df: PUSH1 0xa0 000008e1: SHL 000008e2: SUB 000008e3: AND 000008e4: CALLER 000008e5: EQ 000008e6: PUSH2 0x0901 000008e9: JUMPI 000008ea: PUSH1 0x40 000008ec: MLOAD 000008ed: PUSH3 0x461bcd 000008f1: PUSH1 0xe5 000008f3: SHL 000008f4: DUP2 000008f5: MSTORE 000008f6: PUSH1 0x04 000008f8: ADD 000008f9: PUSH2 0x0281 000008fc: SWAP1 000008fd: PUSH2 0x1cb8 00000900: JUMP 00000901: JUMPDEST 00000902: PUSH2 0x0909 00000905: PUSH2 0x1589 00000908: JUMP 00000909: JUMPDEST 0000090a: POP 0000090b: PUSH1 0x00 0000090d: DUP4 0000090e: DUP2 0000090f: MSTORE 00000910: PUSH1 0x03 00000912: PUSH1 0x20 00000914: SWAP1 00000915: DUP2 00000916: MSTORE 00000917: PUSH1 0x40 00000919: SWAP2 0000091a: DUP3 0000091b: SWAP1 0000091c: KECCAK256 0000091d: DUP3 0000091e: MLOAD 0000091f: PUSH1 0x80 00000921: DUP2 00000922: ADD 00000923: DUP5 00000924: MSTORE 00000925: DUP2 00000926: SLOAD 00000927: PUSH1 0x60 00000929: DUP3 0000092a: ADD 0000092b: SWAP1 0000092c: DUP2 0000092d: MSTORE 0000092e: DUP2 0000092f: MSTORE 00000930: DUP4 00000931: MLOAD 00000932: DUP1 00000933: DUP5 00000934: ADD 00000935: DUP6 00000936: MSTORE 00000937: PUSH1 0x01 00000939: DUP4 0000093a: ADD 0000093b: SLOAD 0000093c: DUP2 0000093d: MSTORE 0000093e: DUP2 0000093f: DUP5 00000940: ADD 00000941: MSTORE 00000942: DUP4 00000943: MLOAD 00000944: SWAP3 00000945: DUP4 00000946: ADD 00000947: DUP5 00000948: MSTORE 00000949: PUSH1 0x02 0000094b: SWAP1 0000094c: SWAP2 0000094d: ADD 0000094e: SLOAD 0000094f: DUP3 00000950: MSTORE 00000951: SWAP2 00000952: DUP3 00000953: ADD 00000954: MSTORE 00000955: PUSH2 0x096d 00000958: PUSH1 0x64 0000095a: PUSH8 0x0de0b6b3a7640000 00000963: PUSH4 0xffffffff 00000968: PUSH2 0x0e4f 0000096b: AND 0000096c: JUMP 0000096d: JUMPDEST 0000096e: PUSH1 0x80 00000970: DUP5 00000971: ADD 00000972: MLOAD 00000973: MLOAD 00000974: PUSH1 0x20 00000976: DUP4 00000977: ADD 00000978: MLOAD 00000979: MLOAD 0000097a: PUSH2 0x0988 0000097d: SWAP2 0000097e: PUSH4 0xffffffff 00000983: PUSH2 0x0e2a 00000986: AND 00000987: JUMP 00000988: JUMPDEST 00000989: GT 0000098a: ISZERO 0000098b: PUSH2 0x09a6 0000098e: JUMPI 0000098f: PUSH1 0x40 00000991: MLOAD 00000992: PUSH3 0x461bcd 00000996: PUSH1 0xe5 00000998: SHL 00000999: DUP2 0000099a: MSTORE 0000099b: PUSH1 0x04 0000099d: ADD 0000099e: PUSH2 0x0281 000009a1: SWAP1 000009a2: PUSH2 0x1cef 000009a5: JUMP 000009a6: JUMPDEST 000009a7: PUSH1 0x40 000009a9: DUP4 000009aa: ADD 000009ab: MLOAD 000009ac: PUSH1 0x01 000009ae: PUSH1 0x01 000009b0: PUSH1 0xa0 000009b2: SHL 000009b3: SUB 000009b4: AND 000009b5: PUSH2 0x09d0 000009b8: JUMPI 000009b9: PUSH1 0x40 000009bb: MLOAD 000009bc: PUSH3 0x461bcd 000009c0: PUSH1 0xe5 000009c2: SHL 000009c3: DUP2 000009c4: MSTORE 000009c5: PUSH1 0x04 000009c7: ADD 000009c8: PUSH2 0x0281 000009cb: SWAP1 000009cc: PUSH2 0x1aa1 000009cf: JUMP 000009d0: JUMPDEST 000009d1: DUP3 000009d2: MLOAD 000009d3: PUSH2 0x09ee 000009d6: JUMPI 000009d7: PUSH1 0x40 000009d9: MLOAD 000009da: PUSH3 0x461bcd 000009de: PUSH1 0xe5 000009e0: SHL 000009e1: DUP2 000009e2: MSTORE 000009e3: PUSH1 0x04 000009e5: ADD 000009e6: PUSH2 0x0281 000009e9: SWAP1 000009ea: PUSH2 0x1ba6 000009ed: JUMP 000009ee: JUMPDEST 000009ef: PUSH1 0x20 000009f1: DUP4 000009f2: ADD 000009f3: MLOAD 000009f4: PUSH1 0x01 000009f6: PUSH1 0x01 000009f8: PUSH1 0xa0 000009fa: SHL 000009fb: SUB 000009fc: AND 000009fd: PUSH2 0x0a18 00000a00: JUMPI 00000a01: PUSH1 0x40 00000a03: MLOAD 00000a04: PUSH3 0x461bcd 00000a08: PUSH1 0xe5 00000a0a: SHL 00000a0b: DUP2 00000a0c: MSTORE 00000a0d: PUSH1 0x04 00000a0f: ADD 00000a10: PUSH2 0x0281 00000a13: SWAP1 00000a14: PUSH2 0x1a12 00000a17: JUMP 00000a18: JUMPDEST 00000a19: PUSH1 0x60 00000a1b: DUP4 00000a1c: ADD 00000a1d: MLOAD 00000a1e: PUSH1 0x01 00000a20: PUSH1 0x01 00000a22: PUSH1 0xa0 00000a24: SHL 00000a25: SUB 00000a26: AND 00000a27: PUSH2 0x0a42 00000a2a: JUMPI 00000a2b: PUSH1 0x40 00000a2d: MLOAD 00000a2e: PUSH3 0x461bcd 00000a32: PUSH1 0xe5 00000a34: SHL 00000a35: DUP2 00000a36: MSTORE 00000a37: PUSH1 0x04 00000a39: ADD 00000a3a: PUSH2 0x0281 00000a3d: SWAP1 00000a3e: PUSH2 0x1df0 00000a41: JUMP 00000a42: JUMPDEST 00000a43: PUSH1 0x00 00000a45: DUP5 00000a46: DUP2 00000a47: MSTORE 00000a48: PUSH1 0x02 00000a4a: PUSH1 0x20 00000a4c: SWAP1 00000a4d: DUP2 00000a4e: MSTORE 00000a4f: PUSH1 0x40 00000a51: DUP1 00000a52: DUP4 00000a53: KECCAK256 00000a54: DUP7 00000a55: DUP3 00000a56: ADD 00000a57: MLOAD 00000a58: PUSH1 0x01 00000a5a: PUSH1 0x01 00000a5c: PUSH1 0xa0 00000a5e: SHL 00000a5f: SUB 00000a60: AND 00000a61: DUP5 00000a62: MSTORE 00000a63: SWAP1 00000a64: SWAP2 00000a65: MSTORE 00000a66: SWAP1 00000a67: KECCAK256 00000a68: DUP1 00000a69: SLOAD 00000a6a: ISZERO 00000a6b: PUSH2 0x0a7c 00000a6e: JUMPI 00000a6f: PUSH2 0x0a7c 00000a72: DUP6 00000a73: DUP6 00000a74: PUSH1 0x40 00000a76: ADD 00000a77: MLOAD 00000a78: PUSH2 0x056c 00000a7b: JUMP 00000a7c: JUMPDEST 00000a7d: PUSH1 0x20 00000a7f: DUP5 00000a80: ADD 00000a81: MLOAD 00000a82: PUSH1 0x40 00000a84: MLOAD 00000a85: PUSH4 0x70a08231 00000a8a: PUSH1 0xe0 00000a8c: SHL 00000a8d: DUP2 00000a8e: MSTORE 00000a8f: PUSH1 0x00 00000a91: SWAP1 00000a92: PUSH1 0x01 00000a94: PUSH1 0x01 00000a96: PUSH1 0xa0 00000a98: SHL 00000a99: SUB 00000a9a: DUP4 00000a9b: AND 00000a9c: SWAP1 00000a9d: PUSH4 0x70a08231 00000aa2: SWAP1 00000aa3: PUSH2 0x0ab0 00000aa6: SWAP1 00000aa7: ADDRESS 00000aa8: SWAP1 00000aa9: PUSH1 0x04 00000aab: ADD 00000aac: PUSH2 0x1938 00000aaf: JUMP 00000ab0: JUMPDEST 00000ab1: PUSH1 0x20 00000ab3: PUSH1 0x40 00000ab5: MLOAD 00000ab6: DUP1 00000ab7: DUP4 00000ab8: SUB 00000ab9: DUP2 00000aba: DUP7 00000abb: DUP1 00000abc: EXTCODESIZE 00000abd: ISZERO 00000abe: DUP1 00000abf: ISZERO 00000ac0: PUSH2 0x0ac8 00000ac3: JUMPI 00000ac4: PUSH1 0x00 00000ac6: DUP1 00000ac7: REVERT 00000ac8: JUMPDEST 00000ac9: POP 00000aca: GAS 00000acb: STATICCALL 00000acc: ISZERO 00000acd: DUP1 00000ace: ISZERO 00000acf: PUSH2 0x0adc 00000ad2: JUMPI 00000ad3: RETURNDATASIZE 00000ad4: PUSH1 0x00 00000ad6: DUP1 00000ad7: RETURNDATACOPY 00000ad8: RETURNDATASIZE 00000ad9: PUSH1 0x00 00000adb: REVERT 00000adc: JUMPDEST 00000add: POP 00000ade: POP 00000adf: POP 00000ae0: POP 00000ae1: PUSH1 0x40 00000ae3: MLOAD 00000ae4: RETURNDATASIZE 00000ae5: PUSH1 0x1f 00000ae7: NOT 00000ae8: PUSH1 0x1f 00000aea: DUP3 00000aeb: ADD 00000aec: AND 00000aed: DUP3 00000aee: ADD 00000aef: DUP1 00000af0: PUSH1 0x40 00000af2: MSTORE 00000af3: POP 00000af4: DUP2 00000af5: ADD 00000af6: SWAP1 00000af7: PUSH2 0x0b00 00000afa: SWAP2 00000afb: SWAP1 00000afc: PUSH2 0x1758 00000aff: JUMP 00000b00: JUMPDEST 00000b01: DUP7 00000b02: MLOAD 00000b03: SWAP1 00000b04: SWAP2 00000b05: POP 00000b06: PUSH2 0x0b23 00000b09: SWAP1 00000b0a: PUSH1 0x01 00000b0c: PUSH1 0x01 00000b0e: PUSH1 0xa0 00000b10: SHL 00000b11: SUB 00000b12: DUP5 00000b13: AND 00000b14: SWAP1 00000b15: DUP8 00000b16: SWAP1 00000b17: ADDRESS 00000b18: SWAP1 00000b19: PUSH4 0xffffffff 00000b1e: PUSH2 0x133c 00000b21: AND 00000b22: JUMP 00000b23: JUMPDEST 00000b24: PUSH1 0x40 00000b26: MLOAD 00000b27: PUSH4 0x70a08231 00000b2c: PUSH1 0xe0 00000b2e: SHL 00000b2f: DUP2 00000b30: MSTORE 00000b31: PUSH1 0x00 00000b33: SWAP1 00000b34: PUSH1 0x01 00000b36: PUSH1 0x01 00000b38: PUSH1 0xa0 00000b3a: SHL 00000b3b: SUB 00000b3c: DUP5 00000b3d: AND 00000b3e: SWAP1 00000b3f: PUSH4 0x70a08231 00000b44: SWAP1 00000b45: PUSH2 0x0b52 00000b48: SWAP1 00000b49: ADDRESS 00000b4a: SWAP1 00000b4b: PUSH1 0x04 00000b4d: ADD 00000b4e: PUSH2 0x1938 00000b51: JUMP 00000b52: JUMPDEST 00000b53: PUSH1 0x20 00000b55: PUSH1 0x40 00000b57: MLOAD 00000b58: DUP1 00000b59: DUP4 00000b5a: SUB 00000b5b: DUP2 00000b5c: DUP7 00000b5d: DUP1 00000b5e: EXTCODESIZE 00000b5f: ISZERO 00000b60: DUP1 00000b61: ISZERO 00000b62: PUSH2 0x0b6a 00000b65: JUMPI 00000b66: PUSH1 0x00 00000b68: DUP1 00000b69: REVERT 00000b6a: JUMPDEST 00000b6b: POP 00000b6c: GAS 00000b6d: STATICCALL 00000b6e: ISZERO 00000b6f: DUP1 00000b70: ISZERO 00000b71: PUSH2 0x0b7e 00000b74: JUMPI 00000b75: RETURNDATASIZE 00000b76: PUSH1 0x00 00000b78: DUP1 00000b79: RETURNDATACOPY 00000b7a: RETURNDATASIZE 00000b7b: PUSH1 0x00 00000b7d: REVERT 00000b7e: JUMPDEST 00000b7f: POP 00000b80: POP 00000b81: POP 00000b82: POP 00000b83: PUSH1 0x40 00000b85: MLOAD 00000b86: RETURNDATASIZE 00000b87: PUSH1 0x1f 00000b89: NOT 00000b8a: PUSH1 0x1f 00000b8c: DUP3 00000b8d: ADD 00000b8e: AND 00000b8f: DUP3 00000b90: ADD 00000b91: DUP1 00000b92: PUSH1 0x40 00000b94: MSTORE 00000b95: POP 00000b96: DUP2 00000b97: ADD 00000b98: SWAP1 00000b99: PUSH2 0x0ba2 00000b9c: SWAP2 00000b9d: SWAP1 00000b9e: PUSH2 0x1758 00000ba1: JUMP 00000ba2: JUMPDEST 00000ba3: SWAP1 00000ba4: POP 00000ba5: PUSH1 0x40 00000ba7: MLOAD 00000ba8: DUP1 00000ba9: PUSH1 0xa0 00000bab: ADD 00000bac: PUSH1 0x40 00000bae: MSTORE 00000baf: DUP1 00000bb0: PUSH2 0x0bc2 00000bb3: DUP5 00000bb4: DUP5 00000bb5: PUSH2 0x1363 00000bb8: SWAP1 00000bb9: SWAP2 00000bba: SWAP1 00000bbb: PUSH4 0xffffffff 00000bc0: AND 00000bc1: JUMP 00000bc2: JUMPDEST 00000bc3: DUP2 00000bc4: MSTORE 00000bc5: PUSH1 0x20 00000bc7: DUP10 00000bc8: DUP2 00000bc9: ADD 00000bca: MLOAD 00000bcb: PUSH1 0x01 00000bcd: PUSH1 0x01 00000bcf: PUSH1 0xa0 00000bd1: SHL 00000bd2: SUB 00000bd3: SWAP1 00000bd4: DUP2 00000bd5: AND 00000bd6: DUP3 00000bd7: DUP5 00000bd8: ADD 00000bd9: MSTORE 00000bda: PUSH1 0x40 00000bdc: DUP1 00000bdd: DUP13 00000bde: ADD 00000bdf: DUP1 00000be0: MLOAD 00000be1: DUP4 00000be2: AND 00000be3: DUP3 00000be4: DUP7 00000be5: ADD 00000be6: MSTORE 00000be7: PUSH1 0x60 00000be9: DUP1 00000bea: DUP15 00000beb: ADD 00000bec: MLOAD 00000bed: DUP5 00000bee: AND 00000bef: DUP2 00000bf0: DUP8 00000bf1: ADD 00000bf2: MSTORE 00000bf3: PUSH1 0x80 00000bf5: DUP1 00000bf6: DUP16 00000bf7: ADD 00000bf8: MLOAD 00000bf9: SWAP7 00000bfa: DUP2 00000bfb: ADD 00000bfc: SWAP7 00000bfd: SWAP1 00000bfe: SWAP7 00000bff: MSTORE 00000c00: PUSH1 0x00 00000c02: DUP16 00000c03: DUP2 00000c04: MSTORE 00000c05: PUSH1 0x02 00000c07: DUP1 00000c08: DUP8 00000c09: MSTORE 00000c0a: DUP5 00000c0b: DUP3 00000c0c: KECCAK256 00000c0d: SWAP4 00000c0e: MLOAD 00000c0f: DUP7 00000c10: AND 00000c11: DUP3 00000c12: MSTORE 00000c13: SWAP3 00000c14: DUP7 00000c15: MSTORE 00000c16: DUP4 00000c17: SWAP1 00000c18: KECCAK256 00000c19: DUP8 00000c1a: MLOAD 00000c1b: DUP2 00000c1c: SSTORE 00000c1d: SWAP5 00000c1e: DUP8 00000c1f: ADD 00000c20: MLOAD 00000c21: PUSH1 0x01 00000c23: DUP7 00000c24: ADD 00000c25: DUP1 00000c26: SLOAD 00000c27: SWAP2 00000c28: DUP7 00000c29: AND 00000c2a: PUSH1 0x01 00000c2c: PUSH1 0x01 00000c2e: PUSH1 0xa0 00000c30: SHL 00000c31: SUB 00000c32: NOT 00000c33: SWAP3 00000c34: DUP4 00000c35: AND 00000c36: OR 00000c37: SWAP1 00000c38: SSTORE 00000c39: DUP8 00000c3a: DUP5 00000c3b: ADD 00000c3c: MLOAD 00000c3d: SWAP3 00000c3e: DUP7 00000c3f: ADD 00000c40: DUP1 00000c41: SLOAD 00000c42: SWAP4 00000c43: DUP7 00000c44: AND 00000c45: SWAP4 00000c46: DUP3 00000c47: AND 00000c48: SWAP4 00000c49: SWAP1 00000c4a: SWAP4 00000c4b: OR 00000c4c: SWAP1 00000c4d: SWAP3 00000c4e: SSTORE 00000c4f: DUP7 00000c50: ADD 00000c51: MLOAD 00000c52: PUSH1 0x03 00000c54: DUP6 00000c55: ADD 00000c56: DUP1 00000c57: SLOAD 00000c58: SWAP2 00000c59: SWAP1 00000c5a: SWAP5 00000c5b: AND 00000c5c: SWAP2 00000c5d: AND 00000c5e: OR 00000c5f: SWAP1 00000c60: SWAP2 00000c61: SSTORE 00000c62: SWAP3 00000c63: SWAP1 00000c64: SWAP2 00000c65: ADD 00000c66: MLOAD 00000c67: MLOAD 00000c68: PUSH1 0x04 00000c6a: SWAP1 00000c6b: SWAP2 00000c6c: ADD 00000c6d: SSTORE 00000c6e: MLOAD 00000c6f: DUP9 00000c70: SWAP1 00000c71: PUSH32 0x327bc9021bfbee403a11b13dd6c819999006aff090cc129f07e9f2840af38dd5 00000c92: SWAP1 00000c93: PUSH2 0x0c9d 00000c96: SWAP1 00000c97: DUP11 00000c98: SWAP1 00000c99: PUSH2 0x1f55 00000c9c: JUMP 00000c9d: JUMPDEST 00000c9e: PUSH1 0x40 00000ca0: MLOAD 00000ca1: DUP1 00000ca2: SWAP2 00000ca3: SUB 00000ca4: SWAP1 00000ca5: LOG2 00000ca6: PUSH1 0x00 00000ca8: DUP9 00000ca9: DUP2 00000caa: MSTORE 00000cab: PUSH1 0x04 00000cad: PUSH1 0x20 00000caf: MSTORE 00000cb0: PUSH1 0x40 00000cb2: SWAP1 00000cb3: KECCAK256 00000cb4: PUSH1 0x01 00000cb6: ADD 00000cb7: SLOAD 00000cb8: PUSH1 0x01 00000cba: PUSH1 0x01 00000cbc: PUSH1 0xa0 00000cbe: SHL 00000cbf: SUB 00000cc0: AND 00000cc1: ISZERO 00000cc2: DUP1 00000cc3: ISZERO 00000cc4: SWAP1 00000cc5: PUSH2 0x0cf1 00000cc8: JUMPI 00000cc9: POP 00000cca: PUSH1 0x00 00000ccc: DUP9 00000ccd: DUP2 00000cce: MSTORE 00000ccf: PUSH1 0x04 00000cd1: PUSH1 0x20 00000cd3: SWAP1 00000cd4: DUP2 00000cd5: MSTORE 00000cd6: PUSH1 0x40 00000cd8: SWAP1 00000cd9: SWAP2 00000cda: KECCAK256 00000cdb: PUSH1 0x01 00000cdd: ADD 00000cde: SLOAD 00000cdf: SWAP1 00000ce0: DUP9 00000ce1: ADD 00000ce2: MLOAD 00000ce3: PUSH1 0x01 00000ce5: PUSH1 0x01 00000ce7: PUSH1 0xa0 00000ce9: SHL 00000cea: SUB 00000ceb: SWAP1 00000cec: DUP2 00000ced: AND 00000cee: SWAP2 00000cef: AND 00000cf0: EQ 00000cf1: JUMPDEST 00000cf2: DUP1 00000cf3: ISZERO 00000cf4: PUSH2 0x0d0c 00000cf7: JUMPI 00000cf8: POP 00000cf9: PUSH1 0x00 00000cfb: DUP9 00000cfc: DUP2 00000cfd: MSTORE 00000cfe: PUSH1 0x04 00000d00: PUSH1 0x20 00000d02: MSTORE 00000d03: PUSH1 0x40 00000d05: SWAP1 00000d06: KECCAK256 00000d07: SLOAD 00000d08: DUP8 00000d09: MLOAD 00000d0a: LT 00000d0b: ISZERO 00000d0c: JUMPDEST 00000d0d: ISZERO 00000d0e: PUSH2 0x0d1f 00000d11: JUMPI 00000d12: PUSH2 0x0d1f 00000d15: DUP9 00000d16: DUP9 00000d17: PUSH1 0x40 00000d19: ADD 00000d1a: MLOAD 00000d1b: PUSH2 0x0f3a 00000d1e: JUMP 00000d1f: JUMPDEST 00000d20: POP 00000d21: POP 00000d22: POP 00000d23: POP 00000d24: POP 00000d25: POP 00000d26: POP 00000d27: POP 00000d28: JUMP 00000d29: JUMPDEST 00000d2a: PUSH1 0x00 00000d2c: SLOAD 00000d2d: PUSH1 0x01 00000d2f: PUSH1 0x01 00000d31: PUSH1 0xa0 00000d33: SHL 00000d34: SUB 00000d35: AND 00000d36: CALLER 00000d37: EQ 00000d38: PUSH2 0x0d53 00000d3b: JUMPI 00000d3c: PUSH1 0x40 00000d3e: MLOAD 00000d3f: PUSH3 0x461bcd 00000d43: PUSH1 0xe5 00000d45: SHL 00000d46: DUP2 00000d47: MSTORE 00000d48: PUSH1 0x04 00000d4a: ADD 00000d4b: PUSH2 0x0281 00000d4e: SWAP1 00000d4f: PUSH2 0x1cb8 00000d52: JUMP 00000d53: JUMPDEST 00000d54: PUSH2 0x0d5c 00000d57: DUP2 00000d58: PUSH2 0x0375 00000d5b: JUMP 00000d5c: JUMPDEST 00000d5d: PUSH2 0x0d78 00000d60: JUMPI 00000d61: PUSH1 0x40 00000d63: MLOAD 00000d64: PUSH3 0x461bcd 00000d68: PUSH1 0xe5 00000d6a: SHL 00000d6b: DUP2 00000d6c: MSTORE 00000d6d: PUSH1 0x04 00000d6f: ADD 00000d70: PUSH2 0x0281 00000d73: SWAP1 00000d74: PUSH2 0x19c7 00000d77: JUMP 00000d78: JUMPDEST 00000d79: PUSH1 0x00 00000d7b: DUP3 00000d7c: DUP2 00000d7d: MSTORE 00000d7e: PUSH1 0x03 00000d80: PUSH1 0x20 00000d82: SWAP1 00000d83: DUP2 00000d84: MSTORE 00000d85: PUSH1 0x40 00000d87: SWAP2 00000d88: DUP3 00000d89: SWAP1 00000d8a: KECCAK256 00000d8b: DUP4 00000d8c: MLOAD 00000d8d: MLOAD 00000d8e: DUP2 00000d8f: SSTORE 00000d90: SWAP1 00000d91: DUP4 00000d92: ADD 00000d93: MLOAD 00000d94: MLOAD 00000d95: PUSH1 0x01 00000d97: DUP3 00000d98: ADD 00000d99: SSTORE 00000d9a: DUP2 00000d9b: DUP4 00000d9c: ADD 00000d9d: MLOAD 00000d9e: MLOAD 00000d9f: PUSH1 0x02 00000da1: SWAP1 00000da2: SWAP2 00000da3: ADD 00000da4: SSTORE 00000da5: MLOAD 00000da6: DUP3 00000da7: SWAP1 00000da8: PUSH32 0xdb88d4e96cb8697aaee5e575ee5f460817709a1dfcfbf7ba15192e90b5c86f9f 00000dc9: SWAP1 00000dca: PUSH2 0x04c5 00000dcd: SWAP1 00000dce: DUP5 00000dcf: SWAP1 00000dd0: PUSH2 0x1f12 00000dd3: JUMP 00000dd4: JUMPDEST 00000dd5: PUSH2 0x0ddc 00000dd8: PUSH2 0x1589 00000ddb: JUMP 00000ddc: JUMPDEST 00000ddd: POP 00000dde: PUSH1 0x00 00000de0: SWAP1 00000de1: DUP2 00000de2: MSTORE 00000de3: PUSH1 0x03 00000de5: PUSH1 0x20 00000de7: SWAP1 00000de8: DUP2 00000de9: MSTORE 00000dea: PUSH1 0x40 00000dec: SWAP2 00000ded: DUP3 00000dee: SWAP1 00000def: KECCAK256 00000df0: DUP3 00000df1: MLOAD 00000df2: PUSH1 0x80 00000df4: DUP2 00000df5: ADD 00000df6: DUP5 00000df7: MSTORE 00000df8: DUP2 00000df9: SLOAD 00000dfa: PUSH1 0x60 00000dfc: DUP3 00000dfd: ADD 00000dfe: SWAP1 00000dff: DUP2 00000e00: MSTORE 00000e01: DUP2 00000e02: MSTORE 00000e03: DUP4 00000e04: MLOAD 00000e05: DUP1 00000e06: DUP5 00000e07: ADD 00000e08: DUP6 00000e09: MSTORE 00000e0a: PUSH1 0x01 00000e0c: DUP4 00000e0d: ADD 00000e0e: SLOAD 00000e0f: DUP2 00000e10: MSTORE 00000e11: DUP2 00000e12: DUP5 00000e13: ADD 00000e14: MSTORE 00000e15: DUP4 00000e16: MLOAD 00000e17: SWAP3 00000e18: DUP4 00000e19: ADD 00000e1a: DUP5 00000e1b: MSTORE 00000e1c: PUSH1 0x02 00000e1e: SWAP1 00000e1f: SWAP2 00000e20: ADD 00000e21: SLOAD 00000e22: DUP3 00000e23: MSTORE 00000e24: SWAP2 00000e25: DUP3 00000e26: ADD 00000e27: MSTORE 00000e28: SWAP1 00000e29: JUMP 00000e2a: JUMPDEST 00000e2b: PUSH1 0x00 00000e2d: DUP3 00000e2e: DUP3 00000e2f: ADD 00000e30: DUP4 00000e31: DUP2 00000e32: LT 00000e33: ISZERO 00000e34: PUSH2 0x0725 00000e37: JUMPI 00000e38: PUSH1 0x40 00000e3a: MLOAD 00000e3b: PUSH3 0x461bcd 00000e3f: PUSH1 0xe5 00000e41: SHL 00000e42: DUP2 00000e43: MSTORE 00000e44: PUSH1 0x04 00000e46: ADD 00000e47: PUSH2 0x0281 00000e4a: SWAP1 00000e4b: PUSH2 0x1b2a 00000e4e: JUMP 00000e4f: JUMPDEST 00000e50: PUSH1 0x00 00000e52: DUP3 00000e53: PUSH2 0x0e5e 00000e56: JUMPI 00000e57: POP 00000e58: PUSH1 0x00 00000e5a: PUSH2 0x02d7 00000e5d: JUMP 00000e5e: JUMPDEST 00000e5f: DUP3 00000e60: DUP3 00000e61: MUL 00000e62: DUP3 00000e63: DUP5 00000e64: DUP3 00000e65: DUP2 00000e66: PUSH2 0x0e6b 00000e69: JUMPI 00000e6a: INVALID 00000e6b: JUMPDEST 00000e6c: DIV 00000e6d: EQ 00000e6e: PUSH2 0x0725 00000e71: JUMPI 00000e72: PUSH1 0x40 00000e74: MLOAD 00000e75: PUSH3 0x461bcd 00000e79: PUSH1 0xe5 00000e7b: SHL 00000e7c: DUP2 00000e7d: MSTORE 00000e7e: PUSH1 0x04 00000e80: ADD 00000e81: PUSH2 0x0281 00000e84: SWAP1 00000e85: PUSH2 0x1c40 00000e88: JUMP 00000e89: JUMPDEST 00000e8a: PUSH2 0x08d2 00000e8d: DUP4 00000e8e: PUSH4 0xa9059cbb 00000e93: PUSH1 0xe0 00000e95: SHL 00000e96: DUP5 00000e97: DUP5 00000e98: PUSH1 0x40 00000e9a: MLOAD 00000e9b: PUSH1 0x24 00000e9d: ADD 00000e9e: PUSH2 0x0ea8 00000ea1: SWAP3 00000ea2: SWAP2 00000ea3: SWAP1 00000ea4: PUSH2 0x1970 00000ea7: JUMP 00000ea8: JUMPDEST 00000ea9: PUSH1 0x40 00000eab: DUP1 00000eac: MLOAD 00000ead: PUSH1 0x1f 00000eaf: NOT 00000eb0: DUP2 00000eb1: DUP5 00000eb2: SUB 00000eb3: ADD 00000eb4: DUP2 00000eb5: MSTORE 00000eb6: SWAP2 00000eb7: SWAP1 00000eb8: MSTORE 00000eb9: PUSH1 0x20 00000ebb: DUP2 00000ebc: ADD 00000ebd: DUP1 00000ebe: MLOAD 00000ebf: PUSH1 0x01 00000ec1: PUSH1 0x01 00000ec3: PUSH1 0xe0 00000ec5: SHL 00000ec6: SUB 00000ec7: AND 00000ec8: PUSH1 0x01 00000eca: PUSH1 0x01 00000ecc: PUSH1 0xe0 00000ece: SHL 00000ecf: SUB 00000ed0: NOT 00000ed1: SWAP1 00000ed2: SWAP4 00000ed3: AND 00000ed4: SWAP3 00000ed5: SWAP1 00000ed6: SWAP3 00000ed7: OR 00000ed8: SWAP1 00000ed9: SWAP2 00000eda: MSTORE 00000edb: PUSH2 0x13a5 00000ede: JUMP 00000edf: JUMPDEST 00000ee0: DUP1 00000ee1: MLOAD 00000ee2: PUSH1 0x00 00000ee4: SWAP1 00000ee5: PUSH2 0x0725 00000ee8: SWAP1 00000ee9: DUP5 00000eea: SWAP1 00000eeb: PUSH8 0x0de0b6b3a7640000 00000ef4: PUSH2 0x1434 00000ef7: JUMP 00000ef8: JUMPDEST 00000ef9: PUSH1 0x00 00000efb: PUSH2 0x0725 00000efe: DUP4 00000eff: DUP4 00000f00: PUSH1 0x40 00000f02: MLOAD 00000f03: DUP1 00000f04: PUSH1 0x40 00000f06: ADD 00000f07: PUSH1 0x40 00000f09: MSTORE 00000f0a: DUP1 00000f0b: PUSH1 0x1a 00000f0d: DUP2 00000f0e: MSTORE 00000f0f: PUSH1 0x20 00000f11: ADD 00000f12: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00000f33: DUP2 00000f34: MSTORE 00000f35: POP 00000f36: PUSH2 0x1452 00000f39: JUMP 00000f3a: JUMPDEST 00000f3b: PUSH2 0x0f42 00000f3e: PUSH2 0x15d2 00000f41: JUMP 00000f42: JUMPDEST 00000f43: POP 00000f44: PUSH1 0x00 00000f46: DUP3 00000f47: DUP2 00000f48: MSTORE 00000f49: PUSH1 0x02 00000f4b: PUSH1 0x20 00000f4d: DUP2 00000f4e: DUP2 00000f4f: MSTORE 00000f50: PUSH1 0x40 00000f52: DUP1 00000f53: DUP5 00000f54: KECCAK256 00000f55: PUSH1 0x01 00000f57: PUSH1 0x01 00000f59: PUSH1 0xa0 00000f5b: SHL 00000f5c: SUB 00000f5d: DUP1 00000f5e: DUP8 00000f5f: AND 00000f60: DUP7 00000f61: MSTORE 00000f62: SWAP1 00000f63: DUP4 00000f64: MSTORE 00000f65: DUP2 00000f66: DUP6 00000f67: KECCAK256 00000f68: DUP3 00000f69: MLOAD 00000f6a: PUSH1 0xa0 00000f6c: DUP2 00000f6d: ADD 00000f6e: DUP5 00000f6f: MSTORE 00000f70: DUP2 00000f71: SLOAD 00000f72: DUP2 00000f73: MSTORE 00000f74: PUSH1 0x01 00000f76: DUP3 00000f77: ADD 00000f78: SLOAD 00000f79: DUP4 00000f7a: AND 00000f7b: DUP2 00000f7c: DUP7 00000f7d: ADD 00000f7e: SWAP1 00000f7f: DUP2 00000f80: MSTORE 00000f81: SWAP6 00000f82: DUP3 00000f83: ADD 00000f84: SLOAD 00000f85: DUP4 00000f86: AND 00000f87: DUP2 00000f88: DUP6 00000f89: ADD 00000f8a: MSTORE 00000f8b: PUSH1 0x03 00000f8d: DUP1 00000f8e: DUP4 00000f8f: ADD 00000f90: SLOAD 00000f91: DUP5 00000f92: AND 00000f93: PUSH1 0x60 00000f95: DUP4 00000f96: ADD 00000f97: MSTORE 00000f98: DUP5 00000f99: MLOAD 00000f9a: DUP1 00000f9b: DUP8 00000f9c: ADD 00000f9d: DUP7 00000f9e: MSTORE 00000f9f: PUSH1 0x04 00000fa1: SWAP4 00000fa2: DUP5 00000fa3: ADD 00000fa4: SLOAD 00000fa5: DUP2 00000fa6: MSTORE 00000fa7: PUSH1 0x80 00000fa9: DUP4 00000faa: ADD 00000fab: MSTORE 00000fac: DUP10 00000fad: DUP9 00000fae: MSTORE 00000faf: SWAP1 00000fb0: SWAP5 00000fb1: MSTORE 00000fb2: DUP3 00000fb3: DUP7 00000fb4: KECCAK256 00000fb5: SWAP5 00000fb6: MLOAD 00000fb7: SWAP6 00000fb8: SLOAD 00000fb9: SWAP3 00000fba: MLOAD 00000fbb: PUSH4 0x31a9108f 00000fc0: PUSH1 0xe1 00000fc2: SHL 00000fc3: DUP2 00000fc4: MSTORE 00000fc5: SWAP4 00000fc6: SWAP6 00000fc7: SWAP4 00000fc8: PUSH2 0x1066 00000fcb: SWAP4 00000fcc: SWAP1 00000fcd: SWAP3 00000fce: AND 00000fcf: SWAP2 00000fd0: PUSH4 0x6352211e 00000fd5: SWAP2 00000fd6: PUSH2 0x0fe1 00000fd9: SWAP2 00000fda: DUP11 00000fdb: SWAP2 00000fdc: ADD 00000fdd: PUSH2 0x1fdf 00000fe0: JUMP 00000fe1: JUMPDEST 00000fe2: PUSH1 0x20 00000fe4: PUSH1 0x40 00000fe6: MLOAD 00000fe7: DUP1 00000fe8: DUP4 00000fe9: SUB 00000fea: DUP2 00000feb: DUP7 00000fec: DUP1 00000fed: EXTCODESIZE 00000fee: ISZERO 00000fef: DUP1 00000ff0: ISZERO 00000ff1: PUSH2 0x0ff9 00000ff4: JUMPI 00000ff5: PUSH1 0x00 00000ff7: DUP1 00000ff8: REVERT 00000ff9: JUMPDEST 00000ffa: POP 00000ffb: GAS 00000ffc: STATICCALL 00000ffd: ISZERO 00000ffe: DUP1 00000fff: ISZERO 00001000: PUSH2 0x100d 00001003: JUMPI 00001004: RETURNDATASIZE 00001005: PUSH1 0x00 00001007: DUP1 00001008: RETURNDATACOPY 00001009: RETURNDATASIZE 0000100a: PUSH1 0x00 0000100c: REVERT 0000100d: JUMPDEST 0000100e: POP 0000100f: POP 00001010: POP 00001011: POP 00001012: PUSH1 0x40 00001014: MLOAD 00001015: RETURNDATASIZE 00001016: PUSH1 0x1f 00001018: NOT 00001019: PUSH1 0x1f 0000101b: DUP3 0000101c: ADD 0000101d: AND 0000101e: DUP3 0000101f: ADD 00001020: DUP1 00001021: PUSH1 0x40 00001023: MSTORE 00001024: POP 00001025: DUP2 00001026: ADD 00001027: SWAP1 00001028: PUSH2 0x1031 0000102b: SWAP2 0000102c: SWAP1 0000102d: PUSH2 0x16bf 00001030: JUMP 00001031: JUMPDEST 00001032: PUSH1 0x40 00001034: DUP1 00001035: MLOAD 00001036: PUSH1 0x20 00001038: DUP2 00001039: ADD 0000103a: SWAP1 0000103b: SWAP2 0000103c: MSTORE 0000103d: PUSH1 0x02 0000103f: DUP6 00001040: ADD 00001041: SLOAD 00001042: DUP2 00001043: MSTORE 00001044: DUP6 00001045: MLOAD 00001046: PUSH2 0x104f 00001049: SWAP2 0000104a: SWAP1 0000104b: PUSH2 0x0708 0000104e: JUMP 0000104f: JUMPDEST 00001050: PUSH1 0x01 00001052: PUSH1 0x01 00001054: PUSH1 0xa0 00001056: SHL 00001057: SUB 00001058: DUP5 00001059: AND 0000105a: SWAP2 0000105b: SWAP1 0000105c: PUSH4 0xffffffff 00001061: PUSH2 0x0e89 00001064: AND 00001065: JUMP 00001066: JUMPDEST 00001067: PUSH1 0x00 00001069: SLOAD 0000106a: PUSH1 0x40 0000106c: MLOAD 0000106d: PUSH4 0xe0fd045f 00001072: PUSH1 0xe0 00001074: SHL 00001075: DUP2 00001076: MSTORE 00001077: PUSH2 0x1106 0000107a: SWAP2 0000107b: PUSH1 0x01 0000107d: PUSH1 0x01 0000107f: PUSH1 0xa0 00001081: SHL 00001082: SUB 00001083: AND 00001084: SWAP1 00001085: PUSH4 0xe0fd045f 0000108a: SWAP1 0000108b: PUSH2 0x1098 0000108e: SWAP1 0000108f: DUP10 00001090: SWAP1 00001091: PUSH1 0x04 00001093: ADD 00001094: PUSH2 0x1fdf 00001097: JUMP 00001098: JUMPDEST 00001099: PUSH1 0x20 0000109b: PUSH1 0x40 0000109d: MLOAD 0000109e: DUP1 0000109f: DUP4 000010a0: SUB 000010a1: DUP2 000010a2: DUP7 000010a3: DUP1 000010a4: EXTCODESIZE 000010a5: ISZERO 000010a6: DUP1 000010a7: ISZERO 000010a8: PUSH2 0x10b0 000010ab: JUMPI 000010ac: PUSH1 0x00 000010ae: DUP1 000010af: REVERT 000010b0: JUMPDEST 000010b1: POP 000010b2: GAS 000010b3: STATICCALL 000010b4: ISZERO 000010b5: DUP1 000010b6: ISZERO 000010b7: PUSH2 0x10c4 000010ba: JUMPI 000010bb: RETURNDATASIZE 000010bc: PUSH1 0x00 000010be: DUP1 000010bf: RETURNDATACOPY 000010c0: RETURNDATASIZE 000010c1: PUSH1 0x00 000010c3: REVERT 000010c4: JUMPDEST 000010c5: POP 000010c6: POP 000010c7: POP 000010c8: POP 000010c9: PUSH1 0x40 000010cb: MLOAD 000010cc: RETURNDATASIZE 000010cd: PUSH1 0x1f 000010cf: NOT 000010d0: PUSH1 0x1f 000010d2: DUP3 000010d3: ADD 000010d4: AND 000010d5: DUP3 000010d6: ADD 000010d7: DUP1 000010d8: PUSH1 0x40 000010da: MSTORE 000010db: POP 000010dc: DUP2 000010dd: ADD 000010de: SWAP1 000010df: PUSH2 0x10e8 000010e2: SWAP2 000010e3: SWAP1 000010e4: PUSH2 0x16bf 000010e7: JUMP 000010e8: JUMPDEST 000010e9: PUSH1 0x40 000010eb: DUP1 000010ec: MLOAD 000010ed: PUSH1 0x20 000010ef: DUP2 000010f0: ADD 000010f1: SWAP1 000010f2: SWAP2 000010f3: MSTORE 000010f4: PUSH1 0x01 000010f6: DUP6 000010f7: ADD 000010f8: SLOAD 000010f9: DUP2 000010fa: MSTORE 000010fb: DUP6 000010fc: MLOAD 000010fd: PUSH2 0x104f 00001100: SWAP2 00001101: SWAP1 00001102: PUSH2 0x0708 00001105: JUMP 00001106: JUMPDEST 00001107: PUSH1 0x00 00001109: SLOAD 0000110a: PUSH1 0x40 0000110c: MLOAD 0000110d: PUSH4 0x04ec7393 00001112: PUSH1 0xe5 00001114: SHL 00001115: DUP2 00001116: MSTORE 00001117: PUSH2 0x11a3 0000111a: SWAP2 0000111b: PUSH1 0x01 0000111d: PUSH1 0x01 0000111f: PUSH1 0xa0 00001121: SHL 00001122: SUB 00001123: AND 00001124: SWAP1 00001125: PUSH4 0x9d8e7260 0000112a: SWAP1 0000112b: PUSH2 0x1138 0000112e: SWAP1 0000112f: DUP10 00001130: SWAP1 00001131: PUSH1 0x04 00001133: ADD 00001134: PUSH2 0x1fdf 00001137: JUMP 00001138: JUMPDEST 00001139: PUSH1 0x20 0000113b: PUSH1 0x40 0000113d: MLOAD 0000113e: DUP1 0000113f: DUP4 00001140: SUB 00001141: DUP2 00001142: DUP7 00001143: DUP1 00001144: EXTCODESIZE 00001145: ISZERO 00001146: DUP1 00001147: ISZERO 00001148: PUSH2 0x1150 0000114b: JUMPI 0000114c: PUSH1 0x00 0000114e: DUP1 0000114f: REVERT 00001150: JUMPDEST 00001151: POP 00001152: GAS 00001153: STATICCALL 00001154: ISZERO 00001155: DUP1 00001156: ISZERO 00001157: PUSH2 0x1164 0000115a: JUMPI 0000115b: RETURNDATASIZE 0000115c: PUSH1 0x00 0000115e: DUP1 0000115f: RETURNDATACOPY 00001160: RETURNDATASIZE 00001161: PUSH1 0x00 00001163: REVERT 00001164: JUMPDEST 00001165: POP 00001166: POP 00001167: POP 00001168: POP 00001169: PUSH1 0x40 0000116b: MLOAD 0000116c: RETURNDATASIZE 0000116d: PUSH1 0x1f 0000116f: NOT 00001170: PUSH1 0x1f 00001172: DUP3 00001173: ADD 00001174: AND 00001175: DUP3 00001176: ADD 00001177: DUP1 00001178: PUSH1 0x40 0000117a: MSTORE 0000117b: POP 0000117c: DUP2 0000117d: ADD 0000117e: SWAP1 0000117f: PUSH2 0x1188 00001182: SWAP2 00001183: SWAP1 00001184: PUSH2 0x16bf 00001187: JUMP 00001188: JUMPDEST 00001189: PUSH1 0x40 0000118b: DUP1 0000118c: MLOAD 0000118d: PUSH1 0x20 0000118f: DUP2 00001190: ADD 00001191: SWAP1 00001192: SWAP2 00001193: MSTORE 00001194: DUP5 00001195: SLOAD 00001196: DUP2 00001197: MSTORE 00001198: DUP6 00001199: MLOAD 0000119a: PUSH2 0x104f 0000119d: SWAP2 0000119e: SWAP1 0000119f: PUSH2 0x0708 000011a2: JUMP 000011a3: JUMPDEST 000011a4: PUSH1 0x00 000011a6: SLOAD 000011a7: PUSH1 0x60 000011a9: DUP5 000011aa: ADD 000011ab: MLOAD 000011ac: PUSH1 0x40 000011ae: MLOAD 000011af: PUSH4 0x0f6b630f 000011b4: PUSH1 0xe4 000011b6: SHL 000011b7: DUP2 000011b8: MSTORE 000011b9: PUSH1 0x01 000011bb: PUSH1 0x01 000011bd: PUSH1 0xa0 000011bf: SHL 000011c0: SUB 000011c1: SWAP1 000011c2: SWAP3 000011c3: AND 000011c4: SWAP2 000011c5: PUSH4 0xf6b630f0 000011ca: SWAP2 000011cb: PUSH2 0x11d9 000011ce: SWAP2 000011cf: DUP10 000011d0: SWAP2 000011d1: SWAP1 000011d2: PUSH1 0x04 000011d4: ADD 000011d5: PUSH2 0x1fe8 000011d8: JUMP 000011d9: JUMPDEST 000011da: PUSH1 0x00 000011dc: PUSH1 0x40 000011de: MLOAD 000011df: DUP1 000011e0: DUP4 000011e1: SUB 000011e2: DUP2 000011e3: PUSH1 0x00 000011e5: DUP8 000011e6: DUP1 000011e7: EXTCODESIZE 000011e8: ISZERO 000011e9: DUP1 000011ea: ISZERO 000011eb: PUSH2 0x11f3 000011ee: JUMPI 000011ef: PUSH1 0x00 000011f1: DUP1 000011f2: REVERT 000011f3: JUMPDEST 000011f4: POP 000011f5: GAS 000011f6: CALL 000011f7: ISZERO 000011f8: DUP1 000011f9: ISZERO 000011fa: PUSH2 0x1207 000011fd: JUMPI 000011fe: RETURNDATASIZE 000011ff: PUSH1 0x00 00001201: DUP1 00001202: RETURNDATACOPY 00001203: RETURNDATASIZE 00001204: PUSH1 0x00 00001206: REVERT 00001207: JUMPDEST 00001208: POP 00001209: POP 0000120a: PUSH1 0x40 0000120c: DUP1 0000120d: MLOAD 0000120e: PUSH1 0x20 00001210: DUP1 00001211: DUP3 00001212: ADD 00001213: DUP4 00001214: MSTORE 00001215: PUSH1 0x80 00001217: DUP9 00001218: ADD 00001219: MLOAD 0000121a: MLOAD 0000121b: PUSH1 0x00 0000121d: DUP12 0000121e: DUP2 0000121f: MSTORE 00001220: PUSH1 0x03 00001222: SWAP1 00001223: SWAP3 00001224: MSTORE 00001225: SWAP3 00001226: SWAP1 00001227: KECCAK256 00001228: PUSH1 0x01 0000122a: ADD 0000122b: SLOAD 0000122c: SWAP1 0000122d: SWAP4 0000122e: POP 0000122f: DUP4 00001230: SWAP3 00001231: POP 00001232: PUSH2 0x125d 00001235: SWAP2 00001236: SWAP1 00001237: PUSH2 0x1251 0000123a: SWAP1 0000123b: DUP2 0000123c: PUSH1 0x64 0000123e: PUSH8 0x0de0b6b3a7640000 00001247: PUSH4 0xffffffff 0000124c: PUSH2 0x0e4f 0000124f: AND 00001250: JUMP 00001251: JUMPDEST 00001252: SWAP1 00001253: PUSH4 0xffffffff 00001258: PUSH2 0x1363 0000125b: AND 0000125c: JUMP 0000125d: JUMPDEST 0000125e: SWAP1 0000125f: MSTORE 00001260: MLOAD 00001261: PUSH1 0x02 00001263: DUP1 00001264: DUP5 00001265: ADD 00001266: SWAP2 00001267: SWAP1 00001268: SWAP2 00001269: SSTORE 0000126a: PUSH1 0x80 0000126c: DUP5 0000126d: ADD 0000126e: MLOAD 0000126f: MLOAD 00001270: DUP4 00001271: SSTORE 00001272: PUSH1 0x00 00001274: DUP7 00001275: DUP2 00001276: MSTORE 00001277: PUSH1 0x20 00001279: DUP3 0000127a: DUP2 0000127b: MSTORE 0000127c: PUSH1 0x40 0000127e: DUP1 0000127f: DUP4 00001280: KECCAK256 00001281: PUSH1 0x01 00001283: PUSH1 0x01 00001285: PUSH1 0xa0 00001287: SHL 00001288: SUB 00001289: DUP10 0000128a: AND 0000128b: DUP5 0000128c: MSTORE 0000128d: SWAP1 0000128e: SWAP2 0000128f: MSTORE 00001290: DUP1 00001291: DUP3 00001292: KECCAK256 00001293: DUP3 00001294: DUP2 00001295: SSTORE 00001296: PUSH1 0x01 00001298: DUP2 00001299: ADD 0000129a: DUP1 0000129b: SLOAD 0000129c: PUSH1 0x01 0000129e: PUSH1 0x01 000012a0: PUSH1 0xa0 000012a2: SHL 000012a3: SUB 000012a4: NOT 000012a5: SWAP1 000012a6: DUP2 000012a7: AND 000012a8: SWAP1 000012a9: SWAP2 000012aa: SSTORE 000012ab: SWAP4 000012ac: DUP2 000012ad: ADD 000012ae: DUP1 000012af: SLOAD 000012b0: DUP6 000012b1: AND 000012b2: SWAP1 000012b3: SSTORE 000012b4: PUSH1 0x03 000012b6: DUP2 000012b7: ADD 000012b8: DUP1 000012b9: SLOAD 000012ba: SWAP1 000012bb: SWAP5 000012bc: AND 000012bd: SWAP1 000012be: SWAP4 000012bf: SSTORE 000012c0: PUSH1 0x04 000012c2: SWAP1 000012c3: SWAP3 000012c4: ADD 000012c5: SSTORE 000012c6: MLOAD 000012c7: DUP6 000012c8: SWAP1 000012c9: PUSH32 0xdb88d4e96cb8697aaee5e575ee5f460817709a1dfcfbf7ba15192e90b5c86f9f 000012ea: SWAP1 000012eb: PUSH2 0x12f5 000012ee: SWAP1 000012ef: DUP6 000012f0: SWAP1 000012f1: PUSH2 0x1f36 000012f4: JUMP 000012f5: JUMPDEST 000012f6: PUSH1 0x40 000012f8: MLOAD 000012f9: DUP1 000012fa: SWAP2 000012fb: SUB 000012fc: SWAP1 000012fd: LOG2 000012fe: DUP5 000012ff: PUSH32 0xb6ef177c7a6f32b283a49b5e0463a39240cdaa278028dfb219480d050e8ee54c 00001320: DUP5 00001321: PUSH1 0x40 00001323: MLOAD 00001324: PUSH2 0x132d 00001327: SWAP2 00001328: SWAP1 00001329: PUSH2 0x1f55 0000132c: JUMP 0000132d: JUMPDEST 0000132e: PUSH1 0x40 00001330: MLOAD 00001331: DUP1 00001332: SWAP2 00001333: SUB 00001334: SWAP1 00001335: LOG2 00001336: POP 00001337: POP 00001338: POP 00001339: POP 0000133a: POP 0000133b: JUMP 0000133c: JUMPDEST 0000133d: PUSH2 0x135d 00001340: DUP5 00001341: PUSH4 0x23b872dd 00001346: PUSH1 0xe0 00001348: SHL 00001349: DUP6 0000134a: DUP6 0000134b: DUP6 0000134c: PUSH1 0x40 0000134e: MLOAD 0000134f: PUSH1 0x24 00001351: ADD 00001352: PUSH2 0x0ea8 00001355: SWAP4 00001356: SWAP3 00001357: SWAP2 00001358: SWAP1 00001359: PUSH2 0x194c 0000135c: JUMP 0000135d: JUMPDEST 0000135e: POP 0000135f: POP 00001360: POP 00001361: POP 00001362: JUMP 00001363: JUMPDEST 00001364: PUSH1 0x00 00001366: PUSH2 0x0725 00001369: DUP4 0000136a: DUP4 0000136b: PUSH1 0x40 0000136d: MLOAD 0000136e: DUP1 0000136f: PUSH1 0x40 00001371: ADD 00001372: PUSH1 0x40 00001374: MSTORE 00001375: DUP1 00001376: PUSH1 0x1e 00001378: DUP2 00001379: MSTORE 0000137a: PUSH1 0x20 0000137c: ADD 0000137d: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 0000139e: DUP2 0000139f: MSTORE 000013a0: POP 000013a1: PUSH2 0x1489 000013a4: JUMP 000013a5: JUMPDEST 000013a6: PUSH1 0x60 000013a8: PUSH2 0x13fa 000013ab: DUP3 000013ac: PUSH1 0x40 000013ae: MLOAD 000013af: DUP1 000013b0: PUSH1 0x40 000013b2: ADD 000013b3: PUSH1 0x40 000013b5: MSTORE 000013b6: DUP1 000013b7: PUSH1 0x20 000013b9: DUP2 000013ba: MSTORE 000013bb: PUSH1 0x20 000013bd: ADD 000013be: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 000013df: DUP2 000013e0: MSTORE 000013e1: POP 000013e2: DUP6 000013e3: PUSH1 0x01 000013e5: PUSH1 0x01 000013e7: PUSH1 0xa0 000013e9: SHL 000013ea: SUB 000013eb: AND 000013ec: PUSH2 0x14b5 000013ef: SWAP1 000013f0: SWAP3 000013f1: SWAP2 000013f2: SWAP1 000013f3: PUSH4 0xffffffff 000013f8: AND 000013f9: JUMP 000013fa: JUMPDEST 000013fb: DUP1 000013fc: MLOAD 000013fd: SWAP1 000013fe: SWAP2 000013ff: POP 00001400: ISZERO 00001401: PUSH2 0x08d2 00001404: JUMPI 00001405: DUP1 00001406: DUP1 00001407: PUSH1 0x20 00001409: ADD 0000140a: SWAP1 0000140b: MLOAD 0000140c: DUP2 0000140d: ADD 0000140e: SWAP1 0000140f: PUSH2 0x1418 00001412: SWAP2 00001413: SWAP1 00001414: PUSH2 0x16db 00001417: JUMP 00001418: JUMPDEST 00001419: PUSH2 0x08d2 0000141c: JUMPI 0000141d: PUSH1 0x40 0000141f: MLOAD 00001420: PUSH3 0x461bcd 00001424: PUSH1 0xe5 00001426: SHL 00001427: DUP2 00001428: MSTORE 00001429: PUSH1 0x04 0000142b: ADD 0000142c: PUSH2 0x0281 0000142f: SWAP1 00001430: PUSH2 0x1e39 00001433: JUMP 00001434: JUMPDEST 00001435: PUSH1 0x00 00001437: PUSH2 0x144a 0000143a: DUP3 0000143b: PUSH2 0x0719 0000143e: DUP7 0000143f: DUP7 00001440: PUSH4 0xffffffff 00001445: PUSH2 0x0e4f 00001448: AND 00001449: JUMP 0000144a: JUMPDEST 0000144b: SWAP5 0000144c: SWAP4 0000144d: POP 0000144e: POP 0000144f: POP 00001450: POP 00001451: JUMP 00001452: JUMPDEST 00001453: PUSH1 0x00 00001455: DUP2 00001456: DUP4 00001457: PUSH2 0x1473 0000145a: JUMPI 0000145b: PUSH1 0x40 0000145d: MLOAD 0000145e: PUSH3 0x461bcd 00001462: PUSH1 0xe5 00001464: SHL 00001465: DUP2 00001466: MSTORE 00001467: PUSH1 0x04 00001469: ADD 0000146a: PUSH2 0x0281 0000146d: SWAP2 0000146e: SWAP1 0000146f: PUSH2 0x1994 00001472: JUMP 00001473: JUMPDEST 00001474: POP 00001475: PUSH1 0x00 00001477: DUP4 00001478: DUP6 00001479: DUP2 0000147a: PUSH2 0x147f 0000147d: JUMPI 0000147e: INVALID 0000147f: JUMPDEST 00001480: DIV 00001481: SWAP6 00001482: SWAP5 00001483: POP 00001484: POP 00001485: POP 00001486: POP 00001487: POP 00001488: JUMP 00001489: JUMPDEST 0000148a: PUSH1 0x00 0000148c: DUP2 0000148d: DUP5 0000148e: DUP5 0000148f: GT 00001490: ISZERO 00001491: PUSH2 0x14ad 00001494: JUMPI 00001495: PUSH1 0x40 00001497: MLOAD 00001498: PUSH3 0x461bcd 0000149c: PUSH1 0xe5 0000149e: SHL 0000149f: DUP2 000014a0: MSTORE 000014a1: PUSH1 0x04 000014a3: ADD 000014a4: PUSH2 0x0281 000014a7: SWAP2 000014a8: SWAP1 000014a9: PUSH2 0x1994 000014ac: JUMP 000014ad: JUMPDEST 000014ae: POP 000014af: POP 000014b0: POP 000014b1: SWAP1 000014b2: SUB 000014b3: SWAP1 000014b4: JUMP 000014b5: JUMPDEST 000014b6: PUSH1 0x60 000014b8: PUSH2 0x144a 000014bb: DUP5 000014bc: DUP5 000014bd: PUSH1 0x00 000014bf: DUP6 000014c0: PUSH1 0x60 000014c2: PUSH2 0x14ca 000014c5: DUP6 000014c6: PUSH2 0x1583 000014c9: JUMP 000014ca: JUMPDEST 000014cb: PUSH2 0x14e6 000014ce: JUMPI 000014cf: PUSH1 0x40 000014d1: MLOAD 000014d2: PUSH3 0x461bcd 000014d6: PUSH1 0xe5 000014d8: SHL 000014d9: DUP2 000014da: MSTORE 000014db: PUSH1 0x04 000014dd: ADD 000014de: PUSH2 0x0281 000014e1: SWAP1 000014e2: PUSH2 0x1d82 000014e5: JUMP 000014e6: JUMPDEST 000014e7: PUSH1 0x00 000014e9: PUSH1 0x60 000014eb: DUP7 000014ec: PUSH1 0x01 000014ee: PUSH1 0x01 000014f0: PUSH1 0xa0 000014f2: SHL 000014f3: SUB 000014f4: AND 000014f5: DUP6 000014f6: DUP8 000014f7: PUSH1 0x40 000014f9: MLOAD 000014fa: PUSH2 0x1503 000014fd: SWAP2 000014fe: SWAP1 000014ff: PUSH2 0x191c 00001502: JUMP 00001503: JUMPDEST 00001504: PUSH1 0x00 00001506: PUSH1 0x40 00001508: MLOAD 00001509: DUP1 0000150a: DUP4 0000150b: SUB 0000150c: DUP2 0000150d: DUP6 0000150e: DUP8 0000150f: GAS 00001510: CALL 00001511: SWAP3 00001512: POP 00001513: POP 00001514: POP 00001515: RETURNDATASIZE 00001516: DUP1 00001517: PUSH1 0x00 00001519: DUP2 0000151a: EQ 0000151b: PUSH2 0x1540 0000151e: JUMPI 0000151f: PUSH1 0x40 00001521: MLOAD 00001522: SWAP2 00001523: POP 00001524: PUSH1 0x1f 00001526: NOT 00001527: PUSH1 0x3f 00001529: RETURNDATASIZE 0000152a: ADD 0000152b: AND 0000152c: DUP3 0000152d: ADD 0000152e: PUSH1 0x40 00001530: MSTORE 00001531: RETURNDATASIZE 00001532: DUP3 00001533: MSTORE 00001534: RETURNDATASIZE 00001535: PUSH1 0x00 00001537: PUSH1 0x20 00001539: DUP5 0000153a: ADD 0000153b: RETURNDATACOPY 0000153c: PUSH2 0x1545 0000153f: JUMP 00001540: JUMPDEST 00001541: PUSH1 0x60 00001543: SWAP2 00001544: POP 00001545: JUMPDEST 00001546: POP 00001547: SWAP2 00001548: POP 00001549: SWAP2 0000154a: POP 0000154b: DUP2 0000154c: ISZERO 0000154d: PUSH2 0x1559 00001550: JUMPI 00001551: SWAP2 00001552: POP 00001553: PUSH2 0x144a 00001556: SWAP1 00001557: POP 00001558: JUMP 00001559: JUMPDEST 0000155a: DUP1 0000155b: MLOAD 0000155c: ISZERO 0000155d: PUSH2 0x1569 00001560: JUMPI 00001561: DUP1 00001562: MLOAD 00001563: DUP1 00001564: DUP3 00001565: PUSH1 0x20 00001567: ADD 00001568: REVERT 00001569: JUMPDEST 0000156a: DUP4 0000156b: PUSH1 0x40 0000156d: MLOAD 0000156e: PUSH3 0x461bcd 00001572: PUSH1 0xe5 00001574: SHL 00001575: DUP2 00001576: MSTORE 00001577: PUSH1 0x04 00001579: ADD 0000157a: PUSH2 0x0281 0000157d: SWAP2 0000157e: SWAP1 0000157f: PUSH2 0x1994 00001582: JUMP 00001583: JUMPDEST 00001584: EXTCODESIZE 00001585: ISZERO 00001586: ISZERO 00001587: SWAP1 00001588: JUMP 00001589: JUMPDEST 0000158a: PUSH1 0x40 0000158c: MLOAD 0000158d: DUP1 0000158e: PUSH1 0x60 00001590: ADD 00001591: PUSH1 0x40 00001593: MSTORE 00001594: DUP1 00001595: PUSH2 0x159c 00001598: PUSH2 0x1618 0000159b: JUMP 0000159c: JUMPDEST 0000159d: DUP2 0000159e: MSTORE 0000159f: PUSH1 0x20 000015a1: ADD 000015a2: PUSH2 0x15a9 000015a5: PUSH2 0x1618 000015a8: JUMP 000015a9: JUMPDEST 000015aa: DUP2 000015ab: MSTORE 000015ac: PUSH1 0x20 000015ae: ADD 000015af: PUSH2 0x15b6 000015b2: PUSH2 0x1618 000015b5: JUMP 000015b6: JUMPDEST 000015b7: SWAP1 000015b8: MSTORE 000015b9: SWAP1 000015ba: JUMP 000015bb: JUMPDEST 000015bc: PUSH1 0x40 000015be: DUP1 000015bf: MLOAD 000015c0: DUP1 000015c1: DUP3 000015c2: ADD 000015c3: SWAP1 000015c4: SWAP2 000015c5: MSTORE 000015c6: PUSH1 0x00 000015c8: DUP1 000015c9: DUP3 000015ca: MSTORE 000015cb: PUSH1 0x20 000015cd: DUP3 000015ce: ADD 000015cf: MSTORE 000015d0: SWAP1 000015d1: JUMP 000015d2: JUMPDEST 000015d3: PUSH1 0x40 000015d5: MLOAD 000015d6: DUP1 000015d7: PUSH1 0xa0 000015d9: ADD 000015da: PUSH1 0x40 000015dc: MSTORE 000015dd: DUP1 000015de: PUSH1 0x00 000015e0: DUP2 000015e1: MSTORE 000015e2: PUSH1 0x20 000015e4: ADD 000015e5: PUSH1 0x00 000015e7: PUSH1 0x01 000015e9: PUSH1 0x01 000015eb: PUSH1 0xa0 000015ed: SHL 000015ee: SUB 000015ef: AND 000015f0: DUP2 000015f1: MSTORE 000015f2: PUSH1 0x20 000015f4: ADD 000015f5: PUSH1 0x00 000015f7: PUSH1 0x01 000015f9: PUSH1 0x01 000015fb: PUSH1 0xa0 000015fd: SHL 000015fe: SUB 000015ff: AND 00001600: DUP2 00001601: MSTORE 00001602: PUSH1 0x20 00001604: ADD 00001605: PUSH1 0x00 00001607: PUSH1 0x01 00001609: PUSH1 0x01 0000160b: PUSH1 0xa0 0000160d: SHL 0000160e: SUB 0000160f: AND 00001610: DUP2 00001611: MSTORE 00001612: PUSH1 0x20 00001614: ADD 00001615: PUSH2 0x15b6 00001618: JUMPDEST 00001619: PUSH1 0x40 0000161b: MLOAD 0000161c: DUP1 0000161d: PUSH1 0x20 0000161f: ADD 00001620: PUSH1 0x40 00001622: MSTORE 00001623: DUP1 00001624: PUSH1 0x00 00001626: DUP2 00001627: MSTORE 00001628: POP 00001629: SWAP1 0000162a: JUMP 0000162b: JUMPDEST 0000162c: PUSH1 0x00 0000162e: PUSH1 0x60 00001630: DUP3 00001631: DUP5 00001632: SUB 00001633: SLT 00001634: ISZERO 00001635: PUSH2 0x163c 00001638: JUMPI 00001639: DUP1 0000163a: DUP2 0000163b: REVERT 0000163c: JUMPDEST 0000163d: PUSH2 0x1646 00001640: PUSH1 0x60 00001642: PUSH2 0x1fff 00001645: JUMP 00001646: JUMPDEST 00001647: SWAP1 00001648: POP 00001649: PUSH2 0x1652 0000164c: DUP4 0000164d: DUP4 0000164e: PUSH2 0x167e 00001651: JUMP 00001652: JUMPDEST 00001653: DUP2 00001654: MSTORE 00001655: PUSH2 0x1661 00001658: DUP4 00001659: PUSH1 0x20 0000165b: DUP5 0000165c: ADD 0000165d: PUSH2 0x167e 00001660: JUMP 00001661: JUMPDEST 00001662: PUSH1 0x20 00001664: DUP3 00001665: ADD 00001666: MSTORE 00001667: PUSH2 0x1673 0000166a: DUP4 0000166b: PUSH1 0x40 0000166d: DUP5 0000166e: ADD 0000166f: PUSH2 0x167e 00001672: JUMP 00001673: JUMPDEST 00001674: PUSH1 0x40 00001676: DUP3 00001677: ADD 00001678: MSTORE 00001679: SWAP3 0000167a: SWAP2 0000167b: POP 0000167c: POP 0000167d: JUMP 0000167e: JUMPDEST 0000167f: PUSH1 0x00 00001681: PUSH1 0x20 00001683: DUP3 00001684: DUP5 00001685: SUB 00001686: SLT 00001687: ISZERO 00001688: PUSH2 0x168f 0000168b: JUMPI 0000168c: DUP1 0000168d: DUP2 0000168e: REVERT 0000168f: JUMPDEST 00001690: PUSH2 0x1699 00001693: PUSH1 0x20 00001695: PUSH2 0x1fff 00001698: JUMP 00001699: JUMPDEST 0000169a: SWAP2 0000169b: CALLDATALOAD 0000169c: DUP3 0000169d: MSTORE 0000169e: POP 0000169f: SWAP2 000016a0: SWAP1 000016a1: POP 000016a2: JUMP 000016a3: JUMPDEST 000016a4: PUSH1 0x00 000016a6: PUSH1 0x20 000016a8: DUP3 000016a9: DUP5 000016aa: SUB 000016ab: SLT 000016ac: ISZERO 000016ad: PUSH2 0x16b4 000016b0: JUMPI 000016b1: DUP1 000016b2: DUP2 000016b3: REVERT 000016b4: JUMPDEST 000016b5: DUP2 000016b6: CALLDATALOAD 000016b7: PUSH2 0x0725 000016ba: DUP2 000016bb: PUSH2 0x2052 000016be: JUMP 000016bf: JUMPDEST 000016c0: PUSH1 0x00 000016c2: PUSH1 0x20 000016c4: DUP3 000016c5: DUP5 000016c6: SUB 000016c7: SLT 000016c8: ISZERO 000016c9: PUSH2 0x16d0 000016cc: JUMPI 000016cd: DUP1 000016ce: DUP2 000016cf: REVERT 000016d0: JUMPDEST 000016d1: DUP2 000016d2: MLOAD 000016d3: PUSH2 0x0725 000016d6: DUP2 000016d7: PUSH2 0x2052 000016da: JUMP 000016db: JUMPDEST 000016dc: PUSH1 0x00 000016de: PUSH1 0x20 000016e0: DUP3 000016e1: DUP5 000016e2: SUB 000016e3: SLT 000016e4: ISZERO 000016e5: PUSH2 0x16ec 000016e8: JUMPI 000016e9: DUP1 000016ea: DUP2 000016eb: REVERT 000016ec: JUMPDEST 000016ed: DUP2 000016ee: MLOAD 000016ef: DUP1 000016f0: ISZERO 000016f1: ISZERO 000016f2: DUP2 000016f3: EQ 000016f4: PUSH2 0x0725 000016f7: JUMPI 000016f8: DUP2 000016f9: DUP3 000016fa: REVERT 000016fb: JUMPDEST 000016fc: PUSH1 0x00 000016fe: PUSH1 0x60 00001700: DUP3 00001701: DUP5 00001702: SUB 00001703: SLT 00001704: ISZERO 00001705: PUSH2 0x170c 00001708: JUMPI 00001709: DUP1 0000170a: DUP2 0000170b: REVERT 0000170c: JUMPDEST 0000170d: PUSH2 0x0725 00001710: DUP4 00001711: DUP4 00001712: PUSH2 0x162b 00001715: JUMP 00001716: JUMPDEST 00001717: PUSH1 0x00 00001719: DUP1 0000171a: PUSH1 0x40 0000171c: DUP4 0000171d: DUP6 0000171e: SUB 0000171f: SLT 00001720: ISZERO 00001721: PUSH2 0x1728 00001724: JUMPI 00001725: DUP1 00001726: DUP2 00001727: REVERT 00001728: JUMPDEST 00001729: PUSH2 0x1732 0000172c: DUP5 0000172d: DUP5 0000172e: PUSH2 0x167e 00001731: JUMP 00001732: JUMPDEST 00001733: SWAP5 00001734: PUSH1 0x20 00001736: SWAP4 00001737: SWAP1 00001738: SWAP4 00001739: ADD 0000173a: CALLDATALOAD 0000173b: SWAP4 0000173c: POP 0000173d: POP 0000173e: POP 0000173f: JUMP 00001740: JUMPDEST 00001741: PUSH1 0x00 00001743: PUSH1 0x20 00001745: DUP3 00001746: DUP5 00001747: SUB 00001748: SLT 00001749: ISZERO 0000174a: PUSH2 0x1751 0000174d: JUMPI 0000174e: DUP1 0000174f: DUP2 00001750: REVERT 00001751: JUMPDEST 00001752: POP 00001753: CALLDATALOAD 00001754: SWAP2 00001755: SWAP1 00001756: POP 00001757: JUMP 00001758: JUMPDEST 00001759: PUSH1 0x00 0000175b: PUSH1 0x20 0000175d: DUP3 0000175e: DUP5 0000175f: SUB 00001760: SLT 00001761: ISZERO 00001762: PUSH2 0x1769 00001765: JUMPI 00001766: DUP1 00001767: DUP2 00001768: REVERT 00001769: JUMPDEST 0000176a: POP 0000176b: MLOAD 0000176c: SWAP2 0000176d: SWAP1 0000176e: POP 0000176f: JUMP 00001770: JUMPDEST 00001771: PUSH1 0x00 00001773: DUP1 00001774: PUSH1 0x40 00001776: DUP4 00001777: DUP6 00001778: SUB 00001779: SLT 0000177a: ISZERO 0000177b: PUSH2 0x1782 0000177e: JUMPI 0000177f: DUP2 00001780: DUP3 00001781: REVERT 00001782: JUMPDEST 00001783: DUP3 00001784: CALLDATALOAD 00001785: SWAP2 00001786: POP 00001787: PUSH1 0x20 00001789: DUP4 0000178a: ADD 0000178b: CALLDATALOAD 0000178c: PUSH2 0x1794 0000178f: DUP2 00001790: PUSH2 0x2052 00001793: JUMP 00001794: JUMPDEST 00001795: DUP1 00001796: SWAP2 00001797: POP 00001798: POP 00001799: SWAP3 0000179a: POP 0000179b: SWAP3 0000179c: SWAP1 0000179d: POP 0000179e: JUMP 0000179f: JUMPDEST 000017a0: PUSH1 0x00 000017a2: DUP1 000017a3: DUP3 000017a4: DUP5 000017a5: SUB 000017a6: PUSH1 0x60 000017a8: DUP2 000017a9: SLT 000017aa: ISZERO 000017ab: PUSH2 0x17b2 000017ae: JUMPI 000017af: DUP3 000017b0: DUP4 000017b1: REVERT 000017b2: JUMPDEST 000017b3: DUP4 000017b4: CALLDATALOAD 000017b5: SWAP3 000017b6: POP 000017b7: PUSH1 0x40 000017b9: PUSH1 0x1f 000017bb: NOT 000017bc: DUP3 000017bd: ADD 000017be: SLT 000017bf: ISZERO 000017c0: PUSH2 0x17c7 000017c3: JUMPI 000017c4: DUP2 000017c5: DUP3 000017c6: REVERT 000017c7: JUMPDEST 000017c8: POP 000017c9: PUSH2 0x17d2 000017cc: PUSH1 0x40 000017ce: PUSH2 0x1fff 000017d1: JUMP 000017d2: JUMPDEST 000017d3: PUSH1 0x20 000017d5: DUP5 000017d6: ADD 000017d7: CALLDATALOAD 000017d8: DUP2 000017d9: MSTORE 000017da: PUSH1 0x40 000017dc: DUP5 000017dd: ADD 000017de: CALLDATALOAD 000017df: PUSH2 0x17e7 000017e2: DUP2 000017e3: PUSH2 0x2052 000017e6: JUMP 000017e7: JUMPDEST 000017e8: PUSH1 0x20 000017ea: DUP3 000017eb: ADD 000017ec: MSTORE 000017ed: SWAP2 000017ee: SWAP5 000017ef: SWAP2 000017f0: SWAP4 000017f1: POP 000017f2: SWAP1 000017f3: SWAP2 000017f4: POP 000017f5: POP 000017f6: JUMP 000017f7: JUMPDEST 000017f8: PUSH1 0x00 000017fa: DUP1 000017fb: PUSH1 0x80 000017fd: DUP4 000017fe: DUP6 000017ff: SUB 00001800: SLT 00001801: ISZERO 00001802: PUSH2 0x1809 00001805: JUMPI 00001806: DUP2 00001807: DUP3 00001808: REVERT 00001809: JUMPDEST 0000180a: DUP3 0000180b: CALLDATALOAD 0000180c: SWAP2 0000180d: POP 0000180e: PUSH2 0x181a 00001811: DUP5 00001812: PUSH1 0x20 00001814: DUP6 00001815: ADD 00001816: PUSH2 0x162b 00001819: JUMP 0000181a: JUMPDEST 0000181b: SWAP1 0000181c: POP 0000181d: SWAP3 0000181e: POP 0000181f: SWAP3 00001820: SWAP1 00001821: POP 00001822: JUMP 00001823: JUMPDEST 00001824: PUSH1 0x00 00001826: DUP1 00001827: DUP3 00001828: DUP5 00001829: SUB 0000182a: PUSH1 0xc0 0000182c: DUP2 0000182d: SLT 0000182e: ISZERO 0000182f: PUSH2 0x1836 00001832: JUMPI 00001833: DUP3 00001834: DUP4 00001835: REVERT 00001836: JUMPDEST 00001837: DUP4 00001838: CALLDATALOAD 00001839: SWAP3 0000183a: POP 0000183b: PUSH1 0xa0 0000183d: PUSH1 0x1f 0000183f: NOT 00001840: DUP3 00001841: ADD 00001842: SLT 00001843: ISZERO 00001844: PUSH2 0x184b 00001847: JUMPI 00001848: DUP2 00001849: DUP3 0000184a: REVERT 0000184b: JUMPDEST 0000184c: POP 0000184d: PUSH1 0x20 0000184f: DUP4 00001850: ADD 00001851: SWAP1 00001852: POP 00001853: SWAP3 00001854: POP 00001855: SWAP3 00001856: SWAP1 00001857: POP 00001858: JUMP 00001859: JUMPDEST 0000185a: PUSH1 0x00 0000185c: DUP1 0000185d: PUSH1 0x00 0000185f: DUP4 00001860: DUP6 00001861: SUB 00001862: PUSH1 0xe0 00001864: DUP2 00001865: SLT 00001866: ISZERO 00001867: PUSH2 0x186e 0000186a: JUMPI 0000186b: DUP2 0000186c: DUP3 0000186d: REVERT 0000186e: JUMPDEST 0000186f: DUP5 00001870: CALLDATALOAD 00001871: SWAP4 00001872: POP 00001873: PUSH1 0xa0 00001875: PUSH1 0x1f 00001877: NOT 00001878: DUP3 00001879: ADD 0000187a: SLT 0000187b: ISZERO 0000187c: PUSH2 0x1883 0000187f: JUMPI 00001880: DUP2 00001881: DUP3 00001882: REVERT 00001883: JUMPDEST 00001884: POP 00001885: PUSH2 0x188e 00001888: PUSH1 0xa0 0000188a: PUSH2 0x1fff 0000188d: JUMP 0000188e: JUMPDEST 0000188f: PUSH1 0x20 00001891: DUP6 00001892: ADD 00001893: CALLDATALOAD 00001894: DUP2 00001895: MSTORE 00001896: PUSH1 0x40 00001898: DUP6 00001899: ADD 0000189a: CALLDATALOAD 0000189b: PUSH2 0x18a3 0000189e: DUP2 0000189f: PUSH2 0x2052 000018a2: JUMP 000018a3: JUMPDEST 000018a4: PUSH1 0x20 000018a6: DUP3 000018a7: ADD 000018a8: MSTORE 000018a9: PUSH1 0x60 000018ab: DUP6 000018ac: ADD 000018ad: CALLDATALOAD 000018ae: PUSH2 0x18b6 000018b1: DUP2 000018b2: PUSH2 0x2052 000018b5: JUMP 000018b6: JUMPDEST 000018b7: PUSH1 0x40 000018b9: DUP3 000018ba: ADD 000018bb: MSTORE 000018bc: PUSH1 0x80 000018be: DUP6 000018bf: ADD 000018c0: CALLDATALOAD 000018c1: PUSH2 0x18c9 000018c4: DUP2 000018c5: PUSH2 0x2052 000018c8: JUMP 000018c9: JUMPDEST 000018ca: PUSH1 0x60 000018cc: DUP3 000018cd: ADD 000018ce: MSTORE 000018cf: PUSH2 0x18db 000018d2: DUP7 000018d3: PUSH1 0xa0 000018d5: DUP8 000018d6: ADD 000018d7: PUSH2 0x167e 000018da: JUMP 000018db: JUMPDEST 000018dc: PUSH1 0x80 000018de: DUP3 000018df: ADD 000018e0: MSTORE 000018e1: SWAP2 000018e2: POP 000018e3: PUSH1 0xc0 000018e5: DUP5 000018e6: ADD 000018e7: CALLDATALOAD 000018e8: PUSH2 0x18f0 000018eb: DUP2 000018ec: PUSH2 0x2052 000018ef: JUMP 000018f0: JUMPDEST 000018f1: DUP1 000018f2: SWAP2 000018f3: POP 000018f4: POP 000018f5: SWAP3 000018f6: POP 000018f7: SWAP3 000018f8: POP 000018f9: SWAP3 000018fa: JUMP 000018fb: JUMPDEST 000018fc: PUSH1 0x00 000018fe: DUP1 000018ff: PUSH1 0x40 00001901: DUP4 00001902: DUP6 00001903: SUB 00001904: SLT 00001905: ISZERO 00001906: PUSH2 0x190d 00001909: JUMPI 0000190a: DUP2 0000190b: DUP3 0000190c: REVERT 0000190d: JUMPDEST 0000190e: POP 0000190f: POP 00001910: DUP1 00001911: CALLDATALOAD 00001912: SWAP3 00001913: PUSH1 0x20 00001915: SWAP1 00001916: SWAP2 00001917: ADD 00001918: CALLDATALOAD 00001919: SWAP2 0000191a: POP 0000191b: JUMP 0000191c: JUMPDEST 0000191d: PUSH1 0x00 0000191f: DUP3 00001920: MLOAD 00001921: PUSH2 0x192e 00001924: DUP2 00001925: DUP5 00001926: PUSH1 0x20 00001928: DUP8 00001929: ADD 0000192a: PUSH2 0x2026 0000192d: JUMP 0000192e: JUMPDEST 0000192f: SWAP2 00001930: SWAP1 00001931: SWAP2 00001932: ADD 00001933: SWAP3 00001934: SWAP2 00001935: POP 00001936: POP 00001937: JUMP 00001938: JUMPDEST 00001939: PUSH1 0x01 0000193b: PUSH1 0x01 0000193d: PUSH1 0xa0 0000193f: SHL 00001940: SUB 00001941: SWAP2 00001942: SWAP1 00001943: SWAP2 00001944: AND 00001945: DUP2 00001946: MSTORE 00001947: PUSH1 0x20 00001949: ADD 0000194a: SWAP1 0000194b: JUMP 0000194c: JUMPDEST 0000194d: PUSH1 0x01 0000194f: PUSH1 0x01 00001951: PUSH1 0xa0 00001953: SHL 00001954: SUB 00001955: SWAP4 00001956: DUP5 00001957: AND 00001958: DUP2 00001959: MSTORE 0000195a: SWAP2 0000195b: SWAP1 0000195c: SWAP3 0000195d: AND 0000195e: PUSH1 0x20 00001960: DUP3 00001961: ADD 00001962: MSTORE 00001963: PUSH1 0x40 00001965: DUP2 00001966: ADD 00001967: SWAP2 00001968: SWAP1 00001969: SWAP2 0000196a: MSTORE 0000196b: PUSH1 0x60 0000196d: ADD 0000196e: SWAP1 0000196f: JUMP 00001970: JUMPDEST 00001971: PUSH1 0x01 00001973: PUSH1 0x01 00001975: PUSH1 0xa0 00001977: SHL 00001978: SUB 00001979: SWAP3 0000197a: SWAP1 0000197b: SWAP3 0000197c: AND 0000197d: DUP3 0000197e: MSTORE 0000197f: PUSH1 0x20 00001981: DUP3 00001982: ADD 00001983: MSTORE 00001984: PUSH1 0x40 00001986: ADD 00001987: SWAP1 00001988: JUMP 00001989: JUMPDEST 0000198a: SWAP1 0000198b: ISZERO 0000198c: ISZERO 0000198d: DUP2 0000198e: MSTORE 0000198f: PUSH1 0x20 00001991: ADD 00001992: SWAP1 00001993: JUMP 00001994: JUMPDEST 00001995: PUSH1 0x00 00001997: PUSH1 0x20 00001999: DUP3 0000199a: MSTORE 0000199b: DUP3 0000199c: MLOAD 0000199d: DUP1 0000199e: PUSH1 0x20 000019a0: DUP5 000019a1: ADD 000019a2: MSTORE 000019a3: PUSH2 0x19b3 000019a6: DUP2 000019a7: PUSH1 0x40 000019a9: DUP6 000019aa: ADD 000019ab: PUSH1 0x20 000019ad: DUP8 000019ae: ADD 000019af: PUSH2 0x2026 000019b2: JUMP 000019b3: JUMPDEST 000019b4: PUSH1 0x1f 000019b6: ADD 000019b7: PUSH1 0x1f 000019b9: NOT 000019ba: AND 000019bb: SWAP2 000019bc: SWAP1 000019bd: SWAP2 000019be: ADD 000019bf: PUSH1 0x40 000019c1: ADD 000019c2: SWAP3 000019c3: SWAP2 000019c4: POP 000019c5: POP 000019c6: JUMP 000019c7: JUMPDEST 000019c8: PUSH1 0x20 000019ca: DUP1 000019cb: DUP3 000019cc: MSTORE 000019cd: PUSH1 0x2b 000019cf: SWAP1 000019d0: DUP3 000019d1: ADD 000019d2: MSTORE 000019d3: PUSH32 0x4d61726b65743a20496e76616c696420626964207368617265732c206d757374 000019f4: PUSH1 0x40 000019f6: DUP3 000019f7: ADD 000019f8: MSTORE 000019f9: PUSH11 0x02073756d20746f2031303 00001a05: PUSH1 0xac 00001a07: SHL 00001a08: PUSH1 0x60 00001a0a: DUP3 00001a0b: ADD 00001a0c: MSTORE 00001a0d: PUSH1 0x80 00001a0f: ADD 00001a10: SWAP1 00001a11: JUMP 00001a12: JUMPDEST 00001a13: PUSH1 0x20 00001a15: DUP1 00001a16: DUP3 00001a17: MSTORE 00001a18: PUSH1 0x28 00001a1a: SWAP1 00001a1b: DUP3 00001a1c: ADD 00001a1d: MSTORE 00001a1e: PUSH32 0x4d61726b65743a206269642063757272656e63792063616e6e6f742062652030 00001a3f: PUSH1 0x40 00001a41: DUP3 00001a42: ADD 00001a43: MSTORE 00001a44: PUSH8 0x2061646472657373 00001a4d: PUSH1 0xc0 00001a4f: SHL 00001a50: PUSH1 0x60 00001a52: DUP3 00001a53: ADD 00001a54: MSTORE 00001a55: PUSH1 0x80 00001a57: ADD 00001a58: SWAP1 00001a59: JUMP 00001a5a: JUMPDEST 00001a5b: PUSH1 0x20 00001a5d: DUP1 00001a5e: DUP3 00001a5f: MSTORE 00001a60: PUSH1 0x27 00001a62: SWAP1 00001a63: DUP3 00001a64: ADD 00001a65: MSTORE 00001a66: PUSH32 0x4d61726b65743a2042696420696e76616c696420666f72207368617265207370 00001a87: PUSH1 0x40 00001a89: DUP3 00001a8a: ADD 00001a8b: MSTORE 00001a8c: PUSH7 0x6c697474696e67 00001a94: PUSH1 0xc8 00001a96: SHL 00001a97: PUSH1 0x60 00001a99: DUP3 00001a9a: ADD 00001a9b: MSTORE 00001a9c: PUSH1 0x80 00001a9e: ADD 00001a9f: SWAP1 00001aa0: JUMP 00001aa1: JUMPDEST 00001aa2: PUSH1 0x20 00001aa4: DUP1 00001aa5: DUP3 00001aa6: MSTORE 00001aa7: PUSH1 0x22 00001aa9: SWAP1 00001aaa: DUP3 00001aab: ADD 00001aac: MSTORE 00001aad: PUSH32 0x4d61726b65743a206269646465722063616e6e6f742062652030206164647265 00001ace: PUSH1 0x40 00001ad0: DUP3 00001ad1: ADD 00001ad2: MSTORE 00001ad3: PUSH2 0x7373 00001ad6: PUSH1 0xf0 00001ad8: SHL 00001ad9: PUSH1 0x60 00001adb: DUP3 00001adc: ADD 00001add: MSTORE 00001ade: PUSH1 0x80 00001ae0: ADD 00001ae1: SWAP1 00001ae2: JUMP 00001ae3: JUMPDEST 00001ae4: PUSH1 0x20 00001ae6: DUP1 00001ae7: DUP3 00001ae8: MSTORE 00001ae9: PUSH1 0x27 00001aeb: SWAP1 00001aec: DUP3 00001aed: ADD 00001aee: MSTORE 00001aef: PUSH32 0x4d61726b65743a2041736b20696e76616c696420666f72207368617265207370 00001b10: PUSH1 0x40 00001b12: DUP3 00001b13: ADD 00001b14: MSTORE 00001b15: PUSH7 0x6c697474696e67 00001b1d: PUSH1 0xc8 00001b1f: SHL 00001b20: PUSH1 0x60 00001b22: DUP3 00001b23: ADD 00001b24: MSTORE 00001b25: PUSH1 0x80 00001b27: ADD 00001b28: SWAP1 00001b29: JUMP 00001b2a: JUMPDEST 00001b2b: PUSH1 0x20 00001b2d: DUP1 00001b2e: DUP3 00001b2f: MSTORE 00001b30: PUSH1 0x1b 00001b32: SWAP1 00001b33: DUP3 00001b34: ADD 00001b35: MSTORE 00001b36: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 00001b57: PUSH1 0x40 00001b59: DUP3 00001b5a: ADD 00001b5b: MSTORE 00001b5c: PUSH1 0x60 00001b5e: ADD 00001b5f: SWAP1 00001b60: JUMP 00001b61: JUMPDEST 00001b62: PUSH1 0x20 00001b64: DUP1 00001b65: DUP3 00001b66: MSTORE 00001b67: PUSH1 0x25 00001b69: SWAP1 00001b6a: DUP3 00001b6b: ADD 00001b6c: MSTORE 00001b6d: PUSH32 0x4d61726b65743a2063616e6e6f742072656d6f76652062696420616d6f756e74 00001b8e: PUSH1 0x40 00001b90: DUP3 00001b91: ADD 00001b92: MSTORE 00001b93: PUSH5 0x0206f66203 00001b99: PUSH1 0xdc 00001b9b: SHL 00001b9c: PUSH1 0x60 00001b9e: DUP3 00001b9f: ADD 00001ba0: MSTORE 00001ba1: PUSH1 0x80 00001ba3: ADD 00001ba4: SWAP1 00001ba5: JUMP 00001ba6: JUMPDEST 00001ba7: PUSH1 0x20 00001ba9: DUP1 00001baa: DUP3 00001bab: MSTORE 00001bac: PUSH1 0x1e 00001bae: SWAP1 00001baf: DUP3 00001bb0: ADD 00001bb1: MSTORE 00001bb2: PUSH32 0x4d61726b65743a2063616e6e6f742062696420616d6f756e74206f6620300000 00001bd3: PUSH1 0x40 00001bd5: DUP3 00001bd6: ADD 00001bd7: MSTORE 00001bd8: PUSH1 0x60 00001bda: ADD 00001bdb: SWAP1 00001bdc: JUMP 00001bdd: JUMPDEST 00001bde: PUSH1 0x20 00001be0: DUP1 00001be1: DUP3 00001be2: MSTORE 00001be3: PUSH1 0x1e 00001be5: SWAP1 00001be6: DUP3 00001be7: ADD 00001be8: MSTORE 00001be9: PUSH32 0x4d61726b65743a2063616e6e6f742061636365707420626964206f6620300000 00001c0a: PUSH1 0x40 00001c0c: DUP3 00001c0d: ADD 00001c0e: MSTORE 00001c0f: PUSH1 0x60 00001c11: ADD 00001c12: SWAP1 00001c13: JUMP 00001c14: JUMPDEST 00001c15: PUSH1 0x20 00001c17: DUP1 00001c18: DUP3 00001c19: MSTORE 00001c1a: PUSH1 0x12 00001c1c: SWAP1 00001c1d: DUP3 00001c1e: ADD 00001c1f: MSTORE 00001c20: PUSH18 0x26b0b935b2ba1d1027b7363c9037bbb732b9 00001c33: PUSH1 0x71 00001c35: SHL 00001c36: PUSH1 0x40 00001c38: DUP3 00001c39: ADD 00001c3a: MSTORE 00001c3b: PUSH1 0x60 00001c3d: ADD 00001c3e: SWAP1 00001c3f: JUMP 00001c40: JUMPDEST 00001c41: PUSH1 0x20 00001c43: DUP1 00001c44: DUP3 00001c45: MSTORE 00001c46: PUSH1 0x21 00001c48: SWAP1 00001c49: DUP3 00001c4a: ADD 00001c4b: MSTORE 00001c4c: PUSH32 0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f 00001c6d: PUSH1 0x40 00001c6f: DUP3 00001c70: ADD 00001c71: MSTORE 00001c72: PUSH1 0x77 00001c74: PUSH1 0xf8 00001c76: SHL 00001c77: PUSH1 0x60 00001c79: DUP3 00001c7a: ADD 00001c7b: MSTORE 00001c7c: PUSH1 0x80 00001c7e: ADD 00001c7f: SWAP1 00001c80: JUMP 00001c81: JUMPDEST 00001c82: PUSH1 0x20 00001c84: DUP1 00001c85: DUP3 00001c86: MSTORE 00001c87: PUSH1 0x1d 00001c89: SWAP1 00001c8a: DUP3 00001c8b: ADD 00001c8c: MSTORE 00001c8d: PUSH32 0x4d61726b65743a20556e65787065637465642062696420666f756e642e000000 00001cae: PUSH1 0x40 00001cb0: DUP3 00001cb1: ADD 00001cb2: MSTORE 00001cb3: PUSH1 0x60 00001cb5: ADD 00001cb6: SWAP1 00001cb7: JUMP 00001cb8: JUMPDEST 00001cb9: PUSH1 0x20 00001cbb: DUP1 00001cbc: DUP3 00001cbd: MSTORE 00001cbe: PUSH1 0x1b 00001cc0: SWAP1 00001cc1: DUP3 00001cc2: ADD 00001cc3: MSTORE 00001cc4: PUSH32 0x4d61726b65743a204f6e6c79206d6564696120636f6e74726163740000000000 00001ce5: PUSH1 0x40 00001ce7: DUP3 00001ce8: ADD 00001ce9: MSTORE 00001cea: PUSH1 0x60 00001cec: ADD 00001ced: SWAP1 00001cee: JUMP 00001cef: JUMPDEST 00001cf0: PUSH1 0x20 00001cf2: DUP1 00001cf3: DUP3 00001cf4: MSTORE 00001cf5: PUSH1 0x2f 00001cf7: SWAP1 00001cf8: DUP3 00001cf9: ADD 00001cfa: MSTORE 00001cfb: PUSH32 0x4d61726b65743a2053656c6c206f6e2066656520696e76616c696420666f7220 00001d1c: PUSH1 0x40 00001d1e: DUP3 00001d1f: ADD 00001d20: MSTORE 00001d21: PUSH15 0x73686172652073706c697474696e67 00001d31: PUSH1 0x88 00001d33: SHL 00001d34: PUSH1 0x60 00001d36: DUP3 00001d37: ADD 00001d38: MSTORE 00001d39: PUSH1 0x80 00001d3b: ADD 00001d3c: SWAP1 00001d3d: JUMP 00001d3e: JUMPDEST 00001d3f: PUSH1 0x20 00001d41: DUP1 00001d42: DUP3 00001d43: MSTORE 00001d44: PUSH1 0x24 00001d46: SWAP1 00001d47: DUP3 00001d48: ADD 00001d49: MSTORE 00001d4a: PUSH32 0x4d61726b65743a20496e76616c6964206269642073686172657320666f722074 00001d6b: PUSH1 0x40 00001d6d: DUP3 00001d6e: ADD 00001d6f: MSTORE 00001d70: PUSH4 0x37b5b2b7 00001d75: PUSH1 0xe1 00001d77: SHL 00001d78: PUSH1 0x60 00001d7a: DUP3 00001d7b: ADD 00001d7c: MSTORE 00001d7d: PUSH1 0x80 00001d7f: ADD 00001d80: SWAP1 00001d81: JUMP 00001d82: JUMPDEST 00001d83: PUSH1 0x20 00001d85: DUP1 00001d86: DUP3 00001d87: MSTORE 00001d88: PUSH1 0x1d 00001d8a: SWAP1 00001d8b: DUP3 00001d8c: ADD 00001d8d: MSTORE 00001d8e: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00001daf: PUSH1 0x40 00001db1: DUP3 00001db2: ADD 00001db3: MSTORE 00001db4: PUSH1 0x60 00001db6: ADD 00001db7: SWAP1 00001db8: JUMP 00001db9: JUMPDEST 00001dba: PUSH1 0x20 00001dbc: DUP1 00001dbd: DUP3 00001dbe: MSTORE 00001dbf: PUSH1 0x1a 00001dc1: SWAP1 00001dc2: DUP3 00001dc3: ADD 00001dc4: MSTORE 00001dc5: PUSH32 0x4d61726b65743a20416c726561647920636f6e66696775726564000000000000 00001de6: PUSH1 0x40 00001de8: DUP3 00001de9: ADD 00001dea: MSTORE 00001deb: PUSH1 0x60 00001ded: ADD 00001dee: SWAP1 00001def: JUMP 00001df0: JUMPDEST 00001df1: PUSH1 0x20 00001df3: DUP1 00001df4: DUP3 00001df5: MSTORE 00001df6: PUSH1 0x29 00001df8: SWAP1 00001df9: DUP3 00001dfa: ADD 00001dfb: MSTORE 00001dfc: PUSH32 0x4d61726b65743a2062696420726563697069656e742063616e6e6f7420626520 00001e1d: PUSH1 0x40 00001e1f: DUP3 00001e20: ADD 00001e21: MSTORE 00001e22: PUSH9 0x302061646472657373 00001e2c: PUSH1 0xb8 00001e2e: SHL 00001e2f: PUSH1 0x60 00001e31: DUP3 00001e32: ADD 00001e33: MSTORE 00001e34: PUSH1 0x80 00001e36: ADD 00001e37: SWAP1 00001e38: JUMP 00001e39: JUMPDEST 00001e3a: PUSH1 0x20 00001e3c: DUP1 00001e3d: DUP3 00001e3e: MSTORE 00001e3f: PUSH1 0x2a 00001e41: SWAP1 00001e42: DUP3 00001e43: ADD 00001e44: MSTORE 00001e45: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00001e66: PUSH1 0x40 00001e68: DUP3 00001e69: ADD 00001e6a: MSTORE 00001e6b: PUSH10 0x1bdd081cdd58d8d95959 00001e76: PUSH1 0xb2 00001e78: SHL 00001e79: PUSH1 0x60 00001e7b: DUP3 00001e7c: ADD 00001e7d: MSTORE 00001e7e: PUSH1 0x80 00001e80: ADD 00001e81: SWAP1 00001e82: JUMP 00001e83: JUMPDEST 00001e84: PUSH1 0x20 00001e86: DUP1 00001e87: DUP3 00001e88: MSTORE 00001e89: PUSH1 0x31 00001e8b: SWAP1 00001e8c: DUP3 00001e8d: ADD 00001e8e: MSTORE 00001e8f: PUSH32 0x4d61726b65743a2063616e6e6f7420736574206d6564696120636f6e74726163 00001eb0: PUSH1 0x40 00001eb2: DUP3 00001eb3: ADD 00001eb4: MSTORE 00001eb5: PUSH17 0x74206173207a65726f2061646472657373 00001ec7: PUSH1 0x78 00001ec9: SHL 00001eca: PUSH1 0x60 00001ecc: DUP3 00001ecd: ADD 00001ece: MSTORE 00001ecf: PUSH1 0x80 00001ed1: ADD 00001ed2: SWAP1 00001ed3: JUMP 00001ed4: JUMPDEST 00001ed5: DUP2 00001ed6: MLOAD 00001ed7: DUP2 00001ed8: MSTORE 00001ed9: PUSH1 0x20 00001edb: SWAP2 00001edc: DUP3 00001edd: ADD 00001ede: MLOAD 00001edf: PUSH1 0x01 00001ee1: PUSH1 0x01 00001ee3: PUSH1 0xa0 00001ee5: SHL 00001ee6: SUB 00001ee7: AND 00001ee8: SWAP2 00001ee9: DUP2 00001eea: ADD 00001eeb: SWAP2 00001eec: SWAP1 00001eed: SWAP2 00001eee: MSTORE 00001eef: PUSH1 0x40 00001ef1: ADD 00001ef2: SWAP1 00001ef3: JUMP 00001ef4: JUMPDEST 00001ef5: DUP2 00001ef6: SLOAD 00001ef7: DUP2 00001ef8: MSTORE 00001ef9: PUSH1 0x01 00001efb: SWAP1 00001efc: SWAP2 00001efd: ADD 00001efe: SLOAD 00001eff: PUSH1 0x01 00001f01: PUSH1 0x01 00001f03: PUSH1 0xa0 00001f05: SHL 00001f06: SUB 00001f07: AND 00001f08: PUSH1 0x20 00001f0a: DUP3 00001f0b: ADD 00001f0c: MSTORE 00001f0d: PUSH1 0x40 00001f0f: ADD 00001f10: SWAP1 00001f11: JUMP 00001f12: JUMPDEST 00001f13: DUP2 00001f14: MLOAD 00001f15: MLOAD 00001f16: DUP2 00001f17: MSTORE 00001f18: PUSH1 0x20 00001f1a: DUP1 00001f1b: DUP4 00001f1c: ADD 00001f1d: MLOAD 00001f1e: MLOAD 00001f1f: SWAP1 00001f20: DUP3 00001f21: ADD 00001f22: MSTORE 00001f23: PUSH1 0x40 00001f25: SWAP2 00001f26: DUP3 00001f27: ADD 00001f28: MLOAD 00001f29: MLOAD 00001f2a: SWAP2 00001f2b: DUP2 00001f2c: ADD 00001f2d: SWAP2 00001f2e: SWAP1 00001f2f: SWAP2 00001f30: MSTORE 00001f31: PUSH1 0x60 00001f33: ADD 00001f34: SWAP1 00001f35: JUMP 00001f36: JUMPDEST 00001f37: DUP2 00001f38: SLOAD 00001f39: DUP2 00001f3a: MSTORE 00001f3b: PUSH1 0x01 00001f3d: DUP3 00001f3e: ADD 00001f3f: SLOAD 00001f40: PUSH1 0x20 00001f42: DUP3 00001f43: ADD 00001f44: MSTORE 00001f45: PUSH1 0x02 00001f47: SWAP1 00001f48: SWAP2 00001f49: ADD 00001f4a: SLOAD 00001f4b: PUSH1 0x40 00001f4d: DUP3 00001f4e: ADD 00001f4f: MSTORE 00001f50: PUSH1 0x60 00001f52: ADD 00001f53: SWAP1 00001f54: JUMP 00001f55: JUMPDEST 00001f56: DUP2 00001f57: MLOAD 00001f58: DUP2 00001f59: MSTORE 00001f5a: PUSH1 0x20 00001f5c: DUP1 00001f5d: DUP4 00001f5e: ADD 00001f5f: MLOAD 00001f60: PUSH1 0x01 00001f62: PUSH1 0x01 00001f64: PUSH1 0xa0 00001f66: SHL 00001f67: SUB 00001f68: SWAP1 00001f69: DUP2 00001f6a: AND 00001f6b: SWAP2 00001f6c: DUP4 00001f6d: ADD 00001f6e: SWAP2 00001f6f: SWAP1 00001f70: SWAP2 00001f71: MSTORE 00001f72: PUSH1 0x40 00001f74: DUP1 00001f75: DUP5 00001f76: ADD 00001f77: MLOAD 00001f78: DUP3 00001f79: AND 00001f7a: SWAP1 00001f7b: DUP4 00001f7c: ADD 00001f7d: MSTORE 00001f7e: PUSH1 0x60 00001f80: DUP1 00001f81: DUP5 00001f82: ADD 00001f83: MLOAD 00001f84: SWAP1 00001f85: SWAP2 00001f86: AND 00001f87: SWAP1 00001f88: DUP3 00001f89: ADD 00001f8a: MSTORE 00001f8b: PUSH1 0x80 00001f8d: SWAP2 00001f8e: DUP3 00001f8f: ADD 00001f90: MLOAD 00001f91: MLOAD 00001f92: SWAP2 00001f93: DUP2 00001f94: ADD 00001f95: SWAP2 00001f96: SWAP1 00001f97: SWAP2 00001f98: MSTORE 00001f99: PUSH1 0xa0 00001f9b: ADD 00001f9c: SWAP1 00001f9d: JUMP 00001f9e: JUMPDEST 00001f9f: DUP2 00001fa0: SLOAD 00001fa1: DUP2 00001fa2: MSTORE 00001fa3: PUSH1 0x01 00001fa5: DUP3 00001fa6: ADD 00001fa7: SLOAD 00001fa8: PUSH1 0x01 00001faa: PUSH1 0x01 00001fac: PUSH1 0xa0 00001fae: SHL 00001faf: SUB 00001fb0: SWAP1 00001fb1: DUP2 00001fb2: AND 00001fb3: PUSH1 0x20 00001fb5: DUP4 00001fb6: ADD 00001fb7: MSTORE 00001fb8: PUSH1 0x02 00001fba: DUP4 00001fbb: ADD 00001fbc: SLOAD 00001fbd: DUP2 00001fbe: AND 00001fbf: PUSH1 0x40 00001fc1: DUP4 00001fc2: ADD 00001fc3: MSTORE 00001fc4: PUSH1 0x03 00001fc6: DUP4 00001fc7: ADD 00001fc8: SLOAD 00001fc9: AND 00001fca: PUSH1 0x60 00001fcc: DUP3 00001fcd: ADD 00001fce: MSTORE 00001fcf: PUSH1 0x04 00001fd1: SWAP1 00001fd2: SWAP2 00001fd3: ADD 00001fd4: SLOAD 00001fd5: PUSH1 0x80 00001fd7: DUP3 00001fd8: ADD 00001fd9: MSTORE 00001fda: PUSH1 0xa0 00001fdc: ADD 00001fdd: SWAP1 00001fde: JUMP 00001fdf: JUMPDEST 00001fe0: SWAP1 00001fe1: DUP2 00001fe2: MSTORE 00001fe3: PUSH1 0x20 00001fe5: ADD 00001fe6: SWAP1 00001fe7: JUMP 00001fe8: JUMPDEST 00001fe9: SWAP2 00001fea: DUP3 00001feb: MSTORE 00001fec: PUSH1 0x01 00001fee: PUSH1 0x01 00001ff0: PUSH1 0xa0 00001ff2: SHL 00001ff3: SUB 00001ff4: AND 00001ff5: PUSH1 0x20 00001ff7: DUP3 00001ff8: ADD 00001ff9: MSTORE 00001ffa: PUSH1 0x40 00001ffc: ADD 00001ffd: SWAP1 00001ffe: JUMP 00001fff: JUMPDEST 00002000: PUSH1 0x40 00002002: MLOAD 00002003: DUP2 00002004: DUP2 00002005: ADD 00002006: PUSH8 0xffffffffffffffff 0000200f: DUP2 00002010: GT 00002011: DUP3 00002012: DUP3 00002013: LT 00002014: OR 00002015: ISZERO 00002016: PUSH2 0x201e 00002019: JUMPI 0000201a: PUSH1 0x00 0000201c: DUP1 0000201d: REVERT 0000201e: JUMPDEST 0000201f: PUSH1 0x40 00002021: MSTORE 00002022: SWAP2 00002023: SWAP1 00002024: POP 00002025: JUMP 00002026: JUMPDEST 00002027: PUSH1 0x00 00002029: JUMPDEST 0000202a: DUP4 0000202b: DUP2 0000202c: LT 0000202d: ISZERO 0000202e: PUSH2 0x2041 00002031: JUMPI 00002032: DUP2 00002033: DUP2 00002034: ADD 00002035: MLOAD 00002036: DUP4 00002037: DUP3 00002038: ADD 00002039: MSTORE 0000203a: PUSH1 0x20 0000203c: ADD 0000203d: PUSH2 0x2029 00002040: JUMP 00002041: JUMPDEST 00002042: DUP4 00002043: DUP2 00002044: GT 00002045: ISZERO 00002046: PUSH2 0x135d 00002049: JUMPI 0000204a: POP 0000204b: POP 0000204c: PUSH1 0x00 0000204e: SWAP2 0000204f: ADD 00002050: MSTORE 00002051: JUMP 00002052: JUMPDEST 00002053: PUSH1 0x01 00002055: PUSH1 0x01 00002057: PUSH1 0xa0 00002059: SHL 0000205a: SUB 0000205b: DUP2 0000205c: AND 0000205d: DUP2 0000205e: EQ 0000205f: PUSH2 0x2067 00002062: JUMPI 00002063: PUSH1 0x00 00002065: DUP1 00002066: REVERT 00002067: JUMPDEST 00002068: POP 00002069: JUMP 0000206a: INVALID 0000206b: LOG2 0000206c: PUSH5 0x6970667358 00002072: UNKNOWN(0x22) 00002073: SLT 00002074: KECCAK256 00002075: OR 00002076: SWAP11 00002077: SHR 00002078: PUSH27 0xf29885a07f40ff7e53c219a6724f5ac44590aadca96c4cfae19545 00002094: SGT 00002095: PUSH5 0x736f6c6343 0000209b: STOP 0000209c: MOD 0000209d: ADDMOD 0000209e: STOP 0000209f: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x14a5295d9c6574ff44e283eea54f5bbfa279b06ce7c81c399c8f6312ced5e986
call_targets:
0xe5bfab544eca83849c53464f85b7164375bdaac1
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x14a5295d9c6574ff44e283eea54f5bbfa279b06ce7c81c399c8f6312ced5e986",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe5bfab544eca83849c53464f85b7164375bdaac1"
],
"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": "0xba339399",
"selector": "0xba339399",
"calldata_variants": [
"0xba339399",
"0xba3393990000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbdb58698",
"selector": "0xbdb58698",
"calldata_variants": [
"0xbdb58698",
"0xbdb586980000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb55683a",
"selector": "0xeb55683a",
"calldata_variants": [
"0xeb55683a",
"0xeb55683a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf9ce0582",
"selector": "0xf9ce0582",
"calldata_variants": [
"0xf9ce0582",
"0xf9ce05820000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x776a0835",
"selector": "0x776a0835",
"calldata_variants": [
"0x776a0835",
"0x776a08350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xad827dc4",
"selector": "0xad827dc4",
"calldata_variants": [
"0xad827dc4",
"0xad827dc40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb920c123",
"selector": "0xb920c123",
"calldata_variants": [
"0xb920c123",
"0xb920c1230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4e21f9c0",
"selector": "0x4e21f9c0",
"calldata_variants": [
"0x4e21f9c0",
"0x4e21f9c00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4598,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5392,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x14a5295d9c6574ff44e283eea54f5bbfa279b06ce7c81c399c8f6312ced5e986
call_targets:
0xe5bfab544eca83849c53464f85b7164375bdaac1
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x14a5295d9c6574ff44e283eea54f5bbfa279b06ce7c81c399c8f6312ced5e986",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe5bfab544eca83849c53464f85b7164375bdaac1"
],
"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": "0xba339399",
"selector": "0xba339399",
"calldata_variants": [
"0xba339399",
"0xba3393990000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbdb58698",
"selector": "0xbdb58698",
"calldata_variants": [
"0xbdb58698",
"0xbdb586980000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb55683a",
"selector": "0xeb55683a",
"calldata_variants": [
"0xeb55683a",
"0xeb55683a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf9ce0582",
"selector": "0xf9ce0582",
"calldata_variants": [
"0xf9ce0582",
"0xf9ce05820000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x776a0835",
"selector": "0x776a0835",
"calldata_variants": [
"0x776a0835",
"0x776a08350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xad827dc4",
"selector": "0xad827dc4",
"calldata_variants": [
"0xad827dc4",
"0xad827dc40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb920c123",
"selector": "0xb920c123",
"calldata_variants": [
"0xb920c123",
"0xb920c1230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4e21f9c0",
"selector": "0x4e21f9c0",
"calldata_variants": [
"0x4e21f9c0",
"0x4e21f9c00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4598,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5392,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|
| medium | other | codex | Auto-accept uses unadjusted bid amount and skips bid validation | 75 | no | — |
viewevidence_json{
"evidence": "In Market.setBid, the actual received amount is stored using the before/after balance diff, but the auto-accept check uses the original bid.amount and does not enforce isValidBid before _finalizeNFTTransfer.",
"locations": [
"contracts/contracts/Market.sol:241",
"contracts/contracts/Market.sol:247",
"contracts/contracts/Market.sol:256",
"contracts/contracts/Market.sol:261",
"contracts/contracts/Market.sol:264"
],
"recommendation": "When auto-accepting, compare the stored bid amount (after balance diff) against the ask, and require isValidBid(tokenId, storedAmount) before calling _finalizeNFTTransfer. Consider emitting the normalized amount in the BidCreated event for off-chain consistency.",
"exploit_scenario": "A seller sets an ask of 100 tokens. A bidder uses a fee-on-transfer ERC20 and submits a bid for 100. The market receives only 90 (stored as the bid amount), but the auto-accept path checks the original 100 and immediately finalizes the sale. The seller receives only 90 (split by shares), yet the NFT transfers. Similarly, bids that do not split evenly into shares can still auto-accept, leaving remainder dust in the market contract."
}
|
| 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": 7
}
|