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

Analysis Run

9035c88c-553e-47a0-b816-95a3d2854a02

failed
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 12:17 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30249 report.consolidate complete 1 / 1 3 months ago
73678 artifact.fetch failed 1 / 3 1 week ago
73679 tool.cast_disasm complete 1 / 3 1 week ago
73680 analysis.bundle complete 1 / 3 1 week ago
73681 capability.graph complete 1 / 3 1 week ago
73682 detector.run complete 1 / 3 1 week ago
73683 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
1 low-severity accounting risk found in the ERC20 gateway (deflationary/non-standard tokens can mint unbacked L2 balances).
View stderr
[codex:1164909] OpenAI Codex v0.77.0 (research preview)
[codex:1164909] --------
[codex:1164909] workdir: /tmp/codex-multi-pk4wg10y
[codex:1164909] model: gpt-5.2-codex
[codex:1164909] provider: openai
[codex:1164909] approval: never
[codex:1164909] sandbox: read-only
[codex:1164909] reasoning effort: xhigh
[codex:1164909] reasoning summaries: auto
[codex:1164909] session id: 019b6249-c631-77f1-b843-18879a400782
[codex:1164909] --------
[codex:1164909] user
[codex:1164909] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1164909] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1164909] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1164909] 
[codex:1164909] Scope rules:
[codex:1164909] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1164909] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1164909] 
[codex:1164909] Output MUST be valid JSON matching the provided schema.
[codex:1164909] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1164909] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1164909] 
[codex:1164909] Output constraints (IMPORTANT):
[codex:1164909] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1164909] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1164909] mcp startup: no servers
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Preparing for security audit**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc ls in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] AUDIT_BUNDLE.txt
[codex:1164909] codex-output-schema.json
[codex:1164909] contracts
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Checking AUDIT_BUNDLE.txt**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-pk4wg10y succeeded in 6ms:
[codex:1164909] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1164909] 
[codex:1164909] ================================================================================
[codex:1164909] FILE: contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol
[codex:1164909] ================================================================================
[codex:1164909] // SPDX-License-Identifier: MIT
[codex:1164909] // OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)
[codex:1164909] 
[codex:1164909] pragma solidity ^0.8.0;
[codex:1164909] 
[codex:1164909] import "./IAccessControlUpgradeable.sol";
[codex:1164909] import "../utils/ContextUpgradeable.sol";
[codex:1164909] import "../utils/StringsUpgradeable.sol";
[codex:1164909] import "../utils/introspection/ERC165Upgradeable.sol";
[codex:1164909] import {Initializable} from "../proxy/utils/Initializable.sol";
[codex:1164909] 
[codex:1164909] /**
[codex:1164909]  * @dev Contract module that allows children to implement role-based access
[codex:1164909]  * control mechanisms. This is a lightweight version that doesn't allow enumerating role
[codex:1164909]  * members except through off-chain means by accessing the contract event logs. Some
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Identifying first-party contracts in bundle**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc 'rg "''^FILE: contracts/contracts" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-pk4wg10y succeeded in 7ms:
[codex:1164909] 2453:FILE: contracts/contracts/fuelchain/FuelChainState.sol
[codex:1164909] 2638:FILE: contracts/contracts/fuelchain/FuelMessagePortal.sol
[codex:1164909] 2980:FILE: contracts/contracts/fuelchain/types/FuelBlockHeader.sol
[codex:1164909] 3067:FILE: contracts/contracts/fuelchain/types/FuelBlockHeaderLite.sol
[codex:1164909] 3110:FILE: contracts/contracts/lib/CommonPredicates.sol
[codex:1164909] 3123:FILE: contracts/contracts/lib/Cryptography.sol
[codex:1164909] 3146:FILE: contracts/contracts/lib/VerifyBinaryTree/Constants.sol
[codex:1164909] 3174:FILE: contracts/contracts/lib/VerifyBinaryTree/Node.sol
[codex:1164909] 3189:FILE: contracts/contracts/lib/VerifyBinaryTree/TreeHasher.sol
[codex:1164909] 3223:FILE: contracts/contracts/lib/VerifyBinaryTree/Utils.sol
[codex:1164909] 3275:FILE: contracts/contracts/lib/VerifyBinaryTree/VerifyBinaryTree.sol
[codex:1164909] 3413:FILE: contracts/contracts/messaging/FuelMessagesEnabled.sol
[codex:1164909] 3491:FILE: contracts/contracts/messaging/FuelMessagesEnabledUpgradeable.sol
[codex:1164909] 3527:FILE: contracts/contracts/messaging/gateway/FuelBridgeBase/FuelBridgeBase.sol
[codex:1164909] 3548:FILE: contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Reviewing first-party contracts for vulnerabilities**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,200p' contracts/contracts/fuelchain/FuelChainState.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] // SPDX-License-Identifier: UNLICENSED
[codex:1164909] // solhint-disable not-rely-on-time
[codex:1164909] pragma solidity 0.8.9;
[codex:1164909] 
[codex:1164909] import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:1164909] import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
[codex:1164909] import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
[codex:1164909] import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol";
[codex:1164909] import {CryptographyLib} from "../lib/Cryptography.sol";
[codex:1164909] 
[codex:1164909] /// @notice Structure for commits
[codex:1164909] struct Commit {
[codex:1164909]     bytes32 blockHash;
[codex:1164909]     uint32 timestamp;
[codex:1164909]     address reserved1;
[codex:1164909]     uint16 reserved2;
[codex:1164909] }
[codex:1164909] 
[codex:1164909] /// @notice The Fuel v2 chain state
[codex:1164909] contract FuelChainState is Initializable, PausableUpgradeable, AccessControlUpgradeable, UUPSUpgradeable {
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Analyzing FuelChainState contract risks**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,240p' contracts/contracts/fuelchain/FuelMessagePortal.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] // SPDX-License-Identifier: MIT
[codex:1164909] pragma solidity 0.8.9;
[codex:1164909] 
[codex:1164909] import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:1164909] import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
[codex:1164909] import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
[codex:1164909] import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol";
[codex:1164909] import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
[codex:1164909] import {verifyBinaryTree} from "../lib/VerifyBinaryTree/VerifyBinaryTree.sol";
[codex:1164909] import {FuelChainState} from "./FuelChainState.sol";
[codex:1164909] import {FuelBlockHeader, FuelBlockHeaderLib} from "./types/FuelBlockHeader.sol";
[codex:1164909] import {FuelBlockHeaderLite, FuelBlockHeaderLiteLib} from "./types/FuelBlockHeaderLite.sol";
[codex:1164909] import {CryptographyLib} from "../lib/Cryptography.sol";
[codex:1164909] import {CommonPredicates} from "../lib/CommonPredicates.sol";
[codex:1164909] 
[codex:1164909] /// @notice Structure for proving an element in a merkle tree
[codex:1164909] struct MerkleProof {
[codex:1164909]     uint256 key;
[codex:1164909]     bytes32[] proof;
[codex:1164909] }
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '240,520p' contracts/contracts/fuelchain/FuelMessagePortal.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909]         return _incomingMessageSender;
[codex:1164909]     }
[codex:1164909] 
[codex:1164909]     ///////////////////////////////////////
[codex:1164909]     // Outgoing Message Public Functions //
[codex:1164909]     ///////////////////////////////////////
[codex:1164909] 
[codex:1164909]     /// @notice Send a message to a recipient on Fuel
[codex:1164909]     /// @param recipient The target message receiver address or predicate root
[codex:1164909]     /// @param data The message data to be sent to the receiver
[codex:1164909]     function sendMessage(bytes32 recipient, bytes calldata data) external payable virtual whenNotPaused {
[codex:1164909]         _sendOutgoingMessage(recipient, data);
[codex:1164909]     }
[codex:1164909] 
[codex:1164909]     /// @notice Send only ETH to the given recipient
[codex:1164909]     /// @param recipient The target message receiver
[codex:1164909]     function depositETH(bytes32 recipient) external payable virtual whenNotPaused {
[codex:1164909]         _sendOutgoingMessage(recipient, new bytes(0));
[codex:1164909]     }
[codex:1164909] 
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Analyzing FuelMessagePortal reentrancy and message handling**
[codex:1164909] 
[codex:1164909] I'm carefully examining the FuelMessagePortal's handling of _incomingMessageSender to check reentrancy protections, state consistency after call failures, and potential edge cases with message uniqueness and recipient addressing. There are questions around unchecked conversions and verifying block headers, but overall reentrancy seems guarded by nonReentrant on critical functions, while other pathways could still be safe due to their read-only nature. I'll keep an eye on potential vulnerabilities in message relay and commit finalization logic.
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,220p' contracts/contracts/fuelchain/types/FuelBlockHeader.sol" in /tmp/codex-multi-pk4wg10y succeeded in 6ms:
[codex:1164909] // SPDX-License-Identifier: UNLICENSED
[codex:1164909] pragma solidity 0.8.9;
[codex:1164909] 
[codex:1164909] import {CryptographyLib} from "../../lib/Cryptography.sol";
[codex:1164909] 
[codex:1164909] /// @title Fuel Chain Block Header
[codex:1164909] /// @dev The Fuel chain block header structure
[codex:1164909] struct FuelBlockHeader {
[codex:1164909]     ///////////////
[codex:1164909]     // Consensus //
[codex:1164909]     ///////////////
[codex:1164909]     // Merkle root of all previous consensus header hashes (not including this block)
[codex:1164909]     bytes32 prevRoot;
[codex:1164909]     // Time this block was created, in TAI64 format
[codex:1164909]     uint64 timestamp;
[codex:1164909]     /////////////////
[codex:1164909]     // Application //
[codex:1164909]     /////////////////
[codex:1164909]     //Height of the data availability layer up to which (inclusive) input messages are processed
[codex:1164909]     uint64 daHeight;
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Confirming FuelBlockHeaderLite status**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,200p' contracts/contracts/fuelchain/types/FuelBlockHeaderLite.sol" in /tmp/codex-multi-pk4wg10y succeeded in 6ms:
[codex:1164909] // SPDX-License-Identifier: UNLICENSED
[codex:1164909] pragma solidity 0.8.9;
[codex:1164909] 
[codex:1164909] import {CryptographyLib} from "../../lib/Cryptography.sol";
[codex:1164909] 
[codex:1164909] /// @title Lightweight Fuel Chain Block Header
[codex:1164909] /// @dev The Fuel chain block header structure with just a hash of the application header
[codex:1164909] struct FuelBlockHeaderLite {
[codex:1164909]     // Merkle root of all previous consensus header hashes (not including this block)
[codex:1164909]     bytes32 prevRoot;
[codex:1164909]     // Height of this block
[codex:1164909]     uint32 height;
[codex:1164909]     // Time this block was created, in TAI64 format
[codex:1164909]     uint64 timestamp;
[codex:1164909]     // Hash of serialized application header for this block
[codex:1164909]     bytes32 applicationHash;
[codex:1164909] }
[codex:1164909] 
[codex:1164909] /// @title Block Header Library
[codex:1164909] /// @dev Provides useful functions for dealing with Fuel blocks
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Reviewing CommonPredicates library**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,200p' contracts/contracts/lib/CommonPredicates.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] // SPDX-License-Identifier: Apache 2.0
[codex:1164909] 
[codex:1164909] pragma solidity 0.8.9;
[codex:1164909] 
[codex:1164909] /// @notice Common predicates for Fuel inputs
[codex:1164909] library CommonPredicates {
[codex:1164909]     bytes32 public constant CONTRACT_MESSAGE_PREDICATE =
[codex:1164909]         0xe821b978bcce9abbf40c3e50ea30143e68c65fa95b9da8907fef59c02d954cec;
[codex:1164909] }
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Identifying topic as cryptography**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,200p' contracts/contracts/lib/Cryptography.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] // SPDX-License-Identifier: UNLICENSED
[codex:1164909] pragma solidity 0.8.9;
[codex:1164909] 
[codex:1164909] /// @notice This is the Fuel protocol cryptography library.
[codex:1164909] library CryptographyLib {
[codex:1164909]     /////////////
[codex:1164909]     // Methods //
[codex:1164909]     /////////////
[codex:1164909] 
[codex:1164909]     // secp256k1n / 2
[codex:1164909]     uint256 private constant MAX_SIGNATURE_S_VALUE = 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0;
[codex:1164909] 
[codex:1164909]     /// @notice The primary hash method for Fuel.
[codex:1164909]     /// @param data The bytes input data.
[codex:1164909]     /// @return The returned hash result.
[codex:1164909]     function hash(bytes memory data) internal pure returns (bytes32) {
[codex:1164909]         return sha256(data);
[codex:1164909]     }
[codex:1164909] }
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Verifying binary tree libraries**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,220p' contracts/contracts/lib/VerifyBinaryTree/Constants.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] // SPDX-License-Identifier: Apache-2.0
[codex:1164909] pragma solidity ^0.8.4;
[codex:1164909] 
[codex:1164909] library Constants {
[codex:1164909]     ///////////////
[codex:1164909]     // Constants //
[codex:1164909]     ///////////////
[codex:1164909] 
[codex:1164909]     /// @dev Maximum tree height
[codex:1164909]     uint256 internal constant MAX_HEIGHT = 256;
[codex:1164909] 
[codex:1164909]     /// @dev Empty node hash
[codex:1164909]     bytes32 internal constant EMPTY = sha256("");
[codex:1164909] 
[codex:1164909]     /// @dev Default value for sparse Merkle tree node
[codex:1164909]     bytes32 internal constant ZERO = bytes32(0);
[codex:1164909] 
[codex:1164909]     /// @dev The null pointer
[codex:1164909]     bytes32 internal constant NULL = bytes32(0);
[codex:1164909] 
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Checking node-related details**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,220p' contracts/contracts/lib/VerifyBinaryTree/Node.sol" in /tmp/codex-multi-pk4wg10y succeeded in 6ms:
[codex:1164909] // SPDX-License-Identifier: Apache-2.0
[codex:1164909] pragma solidity ^0.8.4;
[codex:1164909] 
[codex:1164909] /// @notice Merkle Tree Node structure.
[codex:1164909] struct Node {
[codex:1164909]     bytes32 digest;
[codex:1164909]     // Left child.
[codex:1164909]     bytes32 leftChildPtr;
[codex:1164909]     // Right child.
[codex:1164909]     bytes32 rightChildPtr;
[codex:1164909] }
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Identifying core component**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,220p' contracts/contracts/lib/VerifyBinaryTree/TreeHasher.sol" in /tmp/codex-multi-pk4wg10y succeeded in 7ms:
[codex:1164909] // SPDX-License-Identifier: Apache-2.0
[codex:1164909] pragma solidity ^0.8.4;
[codex:1164909] 
[codex:1164909] import {CryptographyLib} from "../Cryptography.sol";
[codex:1164909] import {Constants} from "./Constants.sol";
[codex:1164909] import {Node} from "./Node.sol";
[codex:1164909] 
[codex:1164909] /// @notice hash some data
[codex:1164909] /// @param data: The data to be hashed
[codex:1164909] // solhint-disable-next-line func-visibility
[codex:1164909] function hash(bytes memory data) pure returns (bytes32) {
[codex:1164909]     return CryptographyLib.hash(data);
[codex:1164909] }
[codex:1164909] 
[codex:1164909] /// @notice Calculate the digest of a node
[codex:1164909] /// @param left : The left child
[codex:1164909] /// @param right: The right child
[codex:1164909] /// @return digest : The node digest
[codex:1164909] // solhint-disable-next-line func-visibility
[codex:1164909] function nodeDigest(bytes32 left, bytes32 right) pure returns (bytes32 digest) {
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Checking utility code**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,220p' contracts/contracts/lib/VerifyBinaryTree/Utils.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] // SPDX-License-Identifier: Apache-2.0
[codex:1164909] pragma solidity ^0.8.4;
[codex:1164909] 
[codex:1164909] import {Constants} from "./Constants.sol";
[codex:1164909] 
[codex:1164909] /// @notice Calculate the starting bit of the path to a leaf
[codex:1164909] /// @param numLeaves : The total number of leaves in the tree
[codex:1164909] /// @return startingBit : The starting bit of the path
[codex:1164909] // solhint-disable-next-line func-visibility
[codex:1164909] function getStartingBit(uint256 numLeaves) pure returns (uint256 startingBit) {
[codex:1164909]     // Determine height of the left subtree. This is the maximum path length, so all paths start at this offset from the right-most bit
[codex:1164909]     startingBit = 0;
[codex:1164909]     while ((1 << startingBit) < numLeaves) {
[codex:1164909]         startingBit += 1;
[codex:1164909]     }
[codex:1164909]     return Constants.MAX_HEIGHT - startingBit;
[codex:1164909] }
[codex:1164909] 
[codex:1164909] /// @notice Calculate the length of the path to a leaf
[codex:1164909] /// @param key: The key of the leaf
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Checking main BinaryTree functionality**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,260p' contracts/contracts/lib/VerifyBinaryTree/VerifyBinaryTree.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] // SPDX-License-Identifier: Apache-2.0
[codex:1164909] /// @title VerifyBinaryTree
[codex:1164909] /// @author Fuel Labs
[codex:1164909] /// @dev This implements verification for the binary trees used by the FuelVM
[codex:1164909] /// @dev For more details, check:
[codex:1164909] /// @dev https://github.com/FuelLabs/fuel-specs/blob/master/src/protocol/cryptographic-primitives.md
[codex:1164909] 
[codex:1164909] pragma solidity ^0.8.4;
[codex:1164909] 
[codex:1164909] import {Node} from "./Node.sol";
[codex:1164909] import {nodeDigest, leafDigest} from "./TreeHasher.sol";
[codex:1164909] import {pathLengthFromKey, getStartingBit} from "./Utils.sol";
[codex:1164909] 
[codex:1164909] /// @notice Verify if element (key, data) exists in Merkle tree, given data, proof, and root.
[codex:1164909] /// @param root: The root of the tree in which verify the given leaf
[codex:1164909] /// @param data: The data of the leaf to verify
[codex:1164909] /// @param key: The key of the leaf to verify.
[codex:1164909] /// @param proof: Binary Merkle Proof for the leaf.
[codex:1164909] /// @param numLeaves: The number of leaves in the tree
[codex:1164909] /// @return : Whether the proof is valid
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Checking binary tree and messaging flags**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,220p' contracts/contracts/messaging/FuelMessagesEnabled.sol" in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] // SPDX-License-Identifier: Apache-2.0
[codex:1164909] pragma solidity 0.8.9;
[codex:1164909] 
[codex:1164909] import {FuelMessagePortal} from "../fuelchain/FuelMessagePortal.sol";
[codex:1164909] 
[codex:1164909] /// @title FuelMessagesEnabled
[codex:1164909] /// @notice Helper contract for contracts sending and receiving messages from Fuel
[codex:1164909] abstract contract FuelMessagesEnabled {
[codex:1164909]     ////////////
[codex:1164909]     // Errors //
[codex:1164909]     ////////////
[codex:1164909] 
[codex:1164909]     error CallerIsNotPortal();
[codex:1164909]     error InvalidMessageSender();
[codex:1164909] 
[codex:1164909]     /////////////
[codex:1164909]     // Storage //
[codex:1164909]     /////////////
[codex:1164909] 
[codex:1164909]     /// @notice FuelMessagePortal contract used to send and receive messages from Fuel
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Identifying FuelMessagesEnabledUpgradeable**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "sed -n '1,240p' contracts/contracts/messaging/FuelMessagesEnabledUpgradeable.sol" in /tmp/codex-multi-pk4wg10y succeeded in 6ms:
[codex:1164909] // SPDX-License-Identifier: Apache-2.0
[codex:1164909] pragma solidity 0.8.9;
[codex:1164909] 
[codex:1164909] import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:1164909] import {FuelMessagePortal} from "../fuelchain/FuelMessagePortal.sol";
[codex:1164909] import {FuelMessagesEnabled} from "./FuelMessagesEnabled.sol";
[codex:1164909] 
[codex:1164909] /// @title FuelMessagesEnabledUpgradeable
[codex:1164909] /// @notice Helper contract for contracts sending and receiving messages from Fuel
[codex:1164909] abstract contract FuelMessagesEnabledUpgradeable is Initializable, FuelMessagesEnabled {
[codex:1164909]     /////////////////
[codex:1164909]     // Initializer //
[codex:1164909]     /////////////////
[codex:1164909] 
[codex:1164909]     /// @dev Initializes the contract
[codex:1164909]     // solhint-disable-next-line func-name-mixedcase
[codex:1164909]     function __FuelMessagesEnabled_init(FuelMessagePortal fuelMessagePortal) internal onlyInitializing {
[codex:1164909]         __FuelMessagesEnabled_init_unchained(fuelMessagePortal);
[codex:1164909]     }
[codex:1164909] 
[codex:1164909] 
[codex:1164909] 
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Analyzing FuelERC20GatewayV4 and related contracts**
[codex:1164909] 
[codex:1164909] I'm carefully reviewing the logic of FuelERC20GatewayV4, focusing on deposit and withdrawal flows, decimal adjustments, and state updates. I'm paying close attention to potential reentrancy vulnerabilities around external calls, how token decimals might cause overflow issues in unchecked math, and risks from malicious tokens. I’m also considering upgradeability impacts and subtle state consistency checks involving the FuelMessagePortal and FuelChainState components. There is a lot here, so I’m inspecting line-numbered source references next to support this deep dive.
[codex:1164909] thinking
[codex:1164909] **Evaluating message verification and decimal scaling consistency**
[codex:1164909] 
[codex:1164909] I'm reviewing how block headers and messaging proofs are validated, including checks on application hashes and merkle roots. I’m also focusing on potential mismatches in decimal scaling between L1 and L2 tokens, reentrancy implications from token callbacks during withdrawal, and subtle issues around precision and overflow in handling token decimals. There’s a lot about message sender integrity and upgrade patterns that I’m weighing carefully.
[codex:1164909] thinking
[codex:1164909] **Analyzing proof validations and upgradeability details**
[codex:1164909] 
[codex:1164909] I'm carefully examining how the contract verifies Merkle proofs related to block and message inclusion, focusing on whether height and key values are consistently checked and aligned. I'm also considering how timestamp truncation, rate limits, and upgrade patterns may affect behavior, while weighing subtle edge cases around decimals and reentrancy protections. There’s a thorough look at potential theoretical edge conditions but no glaring issues right now.
[codex:1164909] exec
[codex:1164909] /bin/bash -lc 'rg -n "TODO|FIXME|HACK" contracts/contracts' in /tmp/codex-multi-pk4wg10y succeeded in 11ms:
[codex:1164909] contracts/contracts/fuelchain/FuelChainState.sol:156:        // TODO This division could be done offchain, or at least also could be assembly'ed to avoid non-zero division check
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Analyzing potential contract vulnerabilities**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "rg -n \"delegatecall|call\\{|call\\(\" contracts/contracts" in /tmp/codex-multi-pk4wg10y succeeded in 9ms:
[codex:1164909] contracts/contracts/fuelchain/FuelMessagePortal.sol:299:        (bool success, bytes memory result) = address(uint160(uint256(message.recipient))).call{
[codex:1164909] contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:154:        (bool success, ) = address(msg.sender).call{value: address(this).balance}("");
[codex:1164909] 
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Reviewing potential vulnerabilities and design limitations**
[codex:1164909] 
[codex:1164909] I'm thoroughly analyzing various contract functions, especially focusing on fee-on-transfer token handling, deposit accounting, message relay mechanisms, and upgradeability risks. The main issue I find is a known accounting flaw with fee-on-transfer tokens that can cause undercollateralization if such tokens are accepted without proper checks. Otherwise, I conclude no critical exploitable vulnerabilities are present, but I note some design limitations and low-severity concerns worth flagging.
[codex:1164909] thinking
[codex:1164909] **Analyzing commit slot overwrite and message relay risks**
[codex:1164909] 
[codex:1164909] I’m examining the potential censorship risk from the committer role overwriting commit slots after cooldown, which could make finalized messages unrelayable due to pruning. While this limits message availability, it’s primarily a design trade-off rather than a direct vulnerability. Other deeper checks reaffirm no critical security issues, so I’m leaning toward reporting no exploitable findings.
[codex:1164909] exec
[codex:1164909] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-pk4wg10y succeeded in 5ms:
[codex:1164909] {"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:1164909] 
[codex:1164909] thinking
[codex:1164909] **Evaluating vulnerability findings and JSON output**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "nl -ba contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol | sed -n '1,260p'" in /tmp/codex-multi-pk4wg10y succeeded in 6ms:
[codex:1164909]      1	// SPDX-License-Identifier: Apache-2.0
[codex:1164909]      2	pragma solidity 0.8.9;
[codex:1164909]      3	
[codex:1164909]      4	import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:1164909]      5	import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
[codex:1164909]      6	import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
[codex:1164909]      7	import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol";
[codex:1164909]      8	import {IERC20MetadataUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol";
[codex:1164909]      9	import {SafeERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol";
[codex:1164909]     10	import {CommonPredicates} from "../../../lib/CommonPredicates.sol";
[codex:1164909]     11	import {FuelMessagePortal} from "../../../fuelchain/FuelMessagePortal.sol";
[codex:1164909]     12	import {FuelBridgeBase} from "../FuelBridgeBase/FuelBridgeBase.sol";
[codex:1164909]     13	import {FuelMessagesEnabledUpgradeable} from "../../FuelMessagesEnabledUpgradeable.sol";
[codex:1164909]     14	
[codex:1164909]     15	/// @title FuelERC20GatewayV4
[codex:1164909]     16	/// @notice The L1 side of the general ERC20 gateway with Fuel.
[codex:1164909]     17	/// @notice Not backwards compatible with previous implementations
[codex:1164909]     18	/// @notice Hexens Fuel1-12: Not compatible with fee-on-transfer erc20 tokens
[codex:1164909]     19	/// @notice Hexens Fuel1-18: Payable modifiers are intentionally used
[codex:1164909]     20	contract FuelERC20GatewayV4 is
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Continuing to explore deposit details**
[codex:1164909] exec
[codex:1164909] /bin/bash -lc "nl -ba contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol | sed -n '260,560p'" in /tmp/codex-multi-pk4wg10y succeeded in 6ms:
[codex:1164909]    260	
[codex:1164909]    261	        bytes memory depositMessage = abi.encodePacked(
[codex:1164909]    262	            assetIssuerId,
[codex:1164909]    263	            uint256(data.length == 0 ? MessageType.DEPOSIT_TO_CONTRACT : MessageType.DEPOSIT_WITH_DATA),
[codex:1164909]    264	            bytes32(uint256(uint160(tokenAddress))),
[codex:1164909]    265	            uint256(0), // token_id = 0 for all erc20 deposits
[codex:1164909]    266	            bytes32(uint256(uint160(msg.sender))),
[codex:1164909]    267	            to,
[codex:1164909]    268	            l2MintedAmount,
[codex:1164909]    269	            uint256(decimals),
[codex:1164909]    270	            data
[codex:1164909]    271	        );
[codex:1164909]    272	        _deposit(tokenAddress, amount, l2MintedAmount, depositMessage);
[codex:1164909]    273	    }
[codex:1164909]    274	
[codex:1164909]    275	    function sendMetadata(address tokenAddress) external payable virtual whenNotPaused {
[codex:1164909]    276	        if (assetIssuerId == bytes32(0)) revert InvalidAssetIssuerID();
[codex:1164909]    277	
[codex:1164909]    278	        bytes memory metadataMessage = abi.encodePacked(
[codex:1164909]    279	            assetIssuerId,
[codex:1164909] 
[codex:1164909] thinking
[codex:1164909] **Summarizing fee-on-transfer token risk**
[codex:1164909] 
[codex:1164909] I'm focusing on a low-severity accounting issue where the deposit function assumes the full token amount is transferred, but fee-on-transfer or non-contract tokens can cause the contract to mint more L2 tokens than actually received, risking undercollateralization. I'll highlight relevant code lines, the exploit scenario, and suggestions like balance checks or whitelisting to improve security.
[codex:1164909] codex
[codex:1164909] {"no_findings":false,"summary":"1 low-severity accounting risk found in the ERC20 gateway (deflationary/non-standard tokens can mint unbacked L2 balances).","findings":[{"severity":"low","category":"other","title":"Deposits trust `amount` rather than actual tokens received (deflationary/non-contract ERC20s can create unbacked L2 mints)","exploit_scenario":"An attacker deposits a fee-on-transfer or non-contract token address. The gateway increments `_deposits` and emits the L2 mint message based on `amount`, but the contract receives fewer (or zero) tokens. Later withdrawals for that token can revert due to insufficient balance or drain pooled liquidity for that token, leaving honest users unable to redeem.","recommendation":"Measure `balanceBefore`/`balanceAfter` and mint based on the delta, or explicitly reject fee-on-transfer/non-standard tokens via allowlist plus `tokenAddress.code.length > 0` checks. Consider moving `sendMessage` after confirming the received amount.","evidence":"`_deposit` updates accounting and sends the L2 mint message, then calls `safeTransferFrom` without verifying the actual amount received; comment notes fee-on-transfer incompatibility.","locations":["contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:330","contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:359","contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:362"]}]}
[codex:1164909] tokens used
[codex:1164909] 54,694
[codex:1164909] {"no_findings":false,"summary":"1 low-severity accounting risk found in the ERC20 gateway (deflationary/non-standard tokens can mint unbacked L2 balances).","findings":[{"severity":"low","category":"other","title":"Deposits trust `amount` rather than actual tokens received (deflationary/non-contract ERC20s can create unbacked L2 mints)","exploit_scenario":"An attacker deposits a fee-on-transfer or non-contract token address. The gateway increments `_deposits` and emits the L2 mint message based on `amount`, but the contract receives fewer (or zero) tokens. Later withdrawals for that token can revert due to insufficient balance or drain pooled liquidity for that token, leaving honest users unable to redeem.","recommendation":"Measure `balanceBefore`/`balanceAfter` and mint based on the delta, or explicitly reject fee-on-transfer/non-standard tokens via allowlist plus `tokenAddress.code.length > 0` checks. Consider moving `sendMessage` after confirming the received amount.","evidence":"`_deposit` updates accounting and sends the L2 mint message, then calls `safeTransferFrom` without verifying the actual amount received; comment notes fee-on-transfer incompatibility.","locations":["contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:330","contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:359","contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:362"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-28T00:17:47.421927+00:00",
        "returncode": 0
    },
    "summary": "1 low-severity accounting risk found in the ERC20 gateway (deflationary/non-standard tokens can mint unbacked L2 balances).",
    "raw_final": {
        "summary": "1 low-severity accounting risk found in the ERC20 gateway (deflationary/non-standard tokens can mint unbacked L2 balances).",
        "findings": [
            {
                "title": "Deposits trust `amount` rather than actual tokens received (deflationary/non-contract ERC20s can create unbacked L2 mints)",
                "category": "other",
                "evidence": "`_deposit` updates accounting and sends the L2 mint message, then calls `safeTransferFrom` without verifying the actual amount received; comment notes fee-on-transfer incompatibility.",
                "severity": "low",
                "locations": [
                    "contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:330",
                    "contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:359",
                    "contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:362"
                ],
                "recommendation": "Measure `balanceBefore`/`balanceAfter` and mint based on the delta, or explicitly reject fee-on-transfer/non-standard tokens via allowlist plus `tokenAddress.code.length > 0` checks. Consider moving `sendMessage` after confirming the received amount.",
                "exploit_scenario": "An attacker deposits a fee-on-transfer or non-contract token address. The gateway increments `_deposits` and emits the L2 mint message based on `amount`, but the contract receives fewer (or zero) tokens. Later withdrawals for that token can revert due to insufficient balance or drain pooled liquidity for that token, leaving honest users unable to redeem."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
8
EXT*/BALANCE
9
Total opcodes
6717
Flags
delegatecall_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x026a
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x819a045c
00000019: GT
0000001a: PUSH2 0x0153
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xc4d66de8
00000024: GT
00000025: PUSH2 0x00cb
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xd810e6f8
0000002f: GT
00000030: PUSH2 0x007f
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xe63ab1e9
0000003a: GT
0000003b: PUSH2 0x0064
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe63ab1e9
00000045: EQ
00000046: PUSH2 0x06f1
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xfb08f3a1
00000050: EQ
00000051: PUSH2 0x0725
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfdec40a5
0000005b: EQ
0000005c: PUSH2 0x0740
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xd810e6f8
0000006b: EQ
0000006c: PUSH2 0x06a7
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xd954863c
00000076: EQ
00000077: PUSH2 0x06de
0000007a: JUMPI
0000007b: PUSH1 0x00
0000007d: DUP1
0000007e: REVERT
0000007f: JUMPDEST
00000080: DUP1
00000081: PUSH4 0xcaa9147c
00000086: GT
00000087: PUSH2 0x00b0
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0xcaa9147c
00000091: EQ
00000092: PUSH2 0x0646
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xcb68448b
0000009c: EQ
0000009d: PUSH2 0x0659
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0xd547741f
000000a7: EQ
000000a8: PUSH2 0x0687
000000ab: JUMPI
000000ac: PUSH1 0x00
000000ae: DUP1
000000af: REVERT
000000b0: JUMPDEST
000000b1: DUP1
000000b2: PUSH4 0xc4d66de8
000000b7: EQ
000000b8: PUSH2 0x05f8
000000bb: JUMPI
000000bc: DUP1
000000bd: PUSH4 0xc97df9ca
000000c2: EQ
000000c3: PUSH2 0x0618
000000c6: JUMPI
000000c7: PUSH1 0x00
000000c9: DUP1
000000ca: REVERT
000000cb: JUMPDEST
000000cc: DUP1
000000cd: PUSH4 0xa161c205
000000d2: GT
000000d3: PUSH2 0x0122
000000d6: JUMPI
000000d7: DUP1
000000d8: PUSH4 0xa5d74961
000000dd: GT
000000de: PUSH2 0x0107
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0xa5d74961
000000e8: EQ
000000e9: PUSH2 0x05a5
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0xb37b363b
000000f3: EQ
000000f4: PUSH2 0x05c5
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0xb46f77e4
000000fe: EQ
000000ff: PUSH2 0x05d8
00000102: JUMPI
00000103: PUSH1 0x00
00000105: DUP1
00000106: REVERT
00000107: JUMPDEST
00000108: DUP1
00000109: PUSH4 0xa161c205
0000010e: EQ
0000010f: PUSH2 0x0559
00000112: JUMPI
00000113: DUP1
00000114: PUSH4 0xa217fddf
00000119: EQ
0000011a: PUSH2 0x0590
0000011d: JUMPI
0000011e: PUSH1 0x00
00000120: DUP1
00000121: REVERT
00000122: JUMPDEST
00000123: DUP1
00000124: PUSH4 0x819a045c
00000129: EQ
0000012a: PUSH2 0x04b8
0000012d: JUMPI
0000012e: DUP1
0000012f: PUSH4 0x8456cb59
00000134: EQ
00000135: PUSH2 0x04e9
00000138: JUMPI
00000139: DUP1
0000013a: PUSH4 0x91d14854
0000013f: EQ
00000140: PUSH2 0x04fe
00000143: JUMPI
00000144: DUP1
00000145: PUSH4 0x94d4578e
0000014a: EQ
0000014b: PUSH2 0x0544
0000014e: JUMPI
0000014f: PUSH1 0x00
00000151: DUP1
00000152: REVERT
00000153: JUMPDEST
00000154: DUP1
00000155: PUSH4 0x4f1ef286
0000015a: GT
0000015b: PUSH2 0x01e6
0000015e: JUMPI
0000015f: DUP1
00000160: PUSH4 0x52d1902d
00000165: GT
00000166: PUSH2 0x01b5
00000169: JUMPI
0000016a: DUP1
0000016b: PUSH4 0x5c975abb
00000170: GT
00000171: PUSH2 0x019a
00000174: JUMPI
00000175: DUP1
00000176: PUSH4 0x5c975abb
0000017b: EQ
0000017c: PUSH2 0x0476
0000017f: JUMPI
00000180: DUP1
00000181: PUSH4 0x5ce36f2c
00000186: EQ
00000187: PUSH2 0x048e
0000018a: JUMPI
0000018b: DUP1
0000018c: PUSH4 0x64a7fad9
00000191: EQ
00000192: PUSH2 0x04a5
00000195: JUMPI
00000196: PUSH1 0x00
00000198: DUP1
00000199: REVERT
0000019a: JUMPDEST
0000019b: DUP1
0000019c: PUSH4 0x52d1902d
000001a1: EQ
000001a2: PUSH2 0x044e
000001a5: JUMPI
000001a6: DUP1
000001a7: PUSH4 0x5714b5a9
000001ac: EQ
000001ad: PUSH2 0x0463
000001b0: JUMPI
000001b1: PUSH1 0x00
000001b3: DUP1
000001b4: REVERT
000001b5: JUMPDEST
000001b6: DUP1
000001b7: PUSH4 0x4f1ef286
000001bc: EQ
000001bd: PUSH2 0x03c3
000001c0: JUMPI
000001c1: DUP1
000001c2: PUSH4 0x5049c17f
000001c7: EQ
000001c8: PUSH2 0x03d6
000001cb: JUMPI
000001cc: DUP1
000001cd: PUSH4 0x5176a43d
000001d2: EQ
000001d3: PUSH2 0x0404
000001d6: JUMPI
000001d7: DUP1
000001d8: PUSH4 0x52148c23
000001dd: EQ
000001de: PUSH2 0x043b
000001e1: JUMPI
000001e2: PUSH1 0x00
000001e4: DUP1
000001e5: REVERT
000001e6: JUMPDEST
000001e7: DUP1
000001e8: PUSH4 0x2acc021a
000001ed: GT
000001ee: PUSH2 0x023d
000001f1: JUMPI
000001f2: DUP1
000001f3: PUSH4 0x36568abe
000001f8: GT
000001f9: PUSH2 0x0222
000001fc: JUMPI
000001fd: DUP1
000001fe: PUSH4 0x36568abe
00000203: EQ
00000204: PUSH2 0x036e
00000207: JUMPI
00000208: DUP1
00000209: PUSH4 0x3659cfe6
0000020e: EQ
0000020f: PUSH2 0x038e
00000212: JUMPI
00000213: DUP1
00000214: PUSH4 0x3f4ba83a
00000219: EQ
0000021a: PUSH2 0x03ae
0000021d: JUMPI
0000021e: PUSH1 0x00
00000220: DUP1
00000221: REVERT
00000222: JUMPDEST
00000223: DUP1
00000224: PUSH4 0x2acc021a
00000229: EQ
0000022a: PUSH2 0x0320
0000022d: JUMPI
0000022e: DUP1
0000022f: PUSH4 0x2f2ff15d
00000234: EQ
00000235: PUSH2 0x034e
00000238: JUMPI
00000239: PUSH1 0x00
0000023b: DUP1
0000023c: REVERT
0000023d: JUMPDEST
0000023e: DUP1
0000023f: PUSH4 0x01ffc9a7
00000244: EQ
00000245: PUSH2 0x026f
00000248: JUMPI
00000249: DUP1
0000024a: PUSH4 0x1a2a45fc
0000024f: EQ
00000250: PUSH2 0x02a4
00000253: JUMPI
00000254: DUP1
00000255: PUSH4 0x20800a00
0000025a: EQ
0000025b: PUSH2 0x02e6
0000025e: JUMPI
0000025f: DUP1
00000260: PUSH4 0x248a9ca3
00000265: EQ
00000266: PUSH2 0x02f0
00000269: JUMPI
0000026a: JUMPDEST
0000026b: PUSH1 0x00
0000026d: DUP1
0000026e: REVERT
0000026f: JUMPDEST
00000270: CALLVALUE
00000271: DUP1
00000272: ISZERO
00000273: PUSH2 0x027b
00000276: JUMPI
00000277: PUSH1 0x00
00000279: DUP1
0000027a: REVERT
0000027b: JUMPDEST
0000027c: POP
0000027d: PUSH2 0x028f
00000280: PUSH2 0x028a
00000283: CALLDATASIZE
00000284: PUSH1 0x04
00000286: PUSH2 0x2ab2
00000289: JUMP
0000028a: JUMPDEST
0000028b: PUSH2 0x0760
0000028e: JUMP
0000028f: JUMPDEST
00000290: PUSH1 0x40
00000292: MLOAD
00000293: SWAP1
00000294: ISZERO
00000295: ISZERO
00000296: DUP2
00000297: MSTORE
00000298: PUSH1 0x20
0000029a: ADD
0000029b: JUMPDEST
0000029c: PUSH1 0x40
0000029e: MLOAD
0000029f: DUP1
000002a0: SWAP2
000002a1: SUB
000002a2: SWAP1
000002a3: RETURN
000002a4: JUMPDEST
000002a5: CALLVALUE
000002a6: DUP1
000002a7: ISZERO
000002a8: PUSH2 0x02b0
000002ab: JUMPI
000002ac: PUSH1 0x00
000002ae: DUP1
000002af: REVERT
000002b0: JUMPDEST
000002b1: POP
000002b2: PUSH2 0x02d8
000002b5: PUSH32 0x7e5b1c957d4df4bad29cdaceffe50f28f282a0d5096601b958917550d4b2e016
000002d6: DUP2
000002d7: JUMP
000002d8: JUMPDEST
000002d9: PUSH1 0x40
000002db: MLOAD
000002dc: SWAP1
000002dd: DUP2
000002de: MSTORE
000002df: PUSH1 0x20
000002e1: ADD
000002e2: PUSH2 0x029b
000002e5: JUMP
000002e6: JUMPDEST
000002e7: PUSH2 0x02ee
000002ea: PUSH2 0x07f9
000002ed: JUMP
000002ee: JUMPDEST
000002ef: STOP
000002f0: JUMPDEST
000002f1: CALLVALUE
000002f2: DUP1
000002f3: ISZERO
000002f4: PUSH2 0x02fc
000002f7: JUMPI
000002f8: PUSH1 0x00
000002fa: DUP1
000002fb: REVERT
000002fc: JUMPDEST
000002fd: POP
000002fe: PUSH2 0x02d8
00000301: PUSH2 0x030b
00000304: CALLDATASIZE
00000305: PUSH1 0x04
00000307: PUSH2 0x2af4
0000030a: JUMP
0000030b: JUMPDEST
0000030c: PUSH1 0x00
0000030e: SWAP1
0000030f: DUP2
00000310: MSTORE
00000311: PUSH1 0xc8
00000313: PUSH1 0x20
00000315: MSTORE
00000316: PUSH1 0x40
00000318: SWAP1
00000319: KECCAK256
0000031a: PUSH1 0x01
0000031c: ADD
0000031d: SLOAD
0000031e: SWAP1
0000031f: JUMP
00000320: JUMPDEST
00000321: CALLVALUE
00000322: DUP1
00000323: ISZERO
00000324: PUSH2 0x032c
00000327: JUMPI
00000328: PUSH1 0x00
0000032a: DUP1
0000032b: REVERT
0000032c: JUMPDEST
0000032d: POP
0000032e: PUSH2 0x02d8
00000331: PUSH2 0x033b
00000334: CALLDATASIZE
00000335: PUSH1 0x04
00000337: PUSH2 0x2b22
0000033a: JUMP
0000033b: JUMPDEST
0000033c: PUSH2 0x0163
0000033f: PUSH1 0x20
00000341: MSTORE
00000342: PUSH1 0x00
00000344: SWAP1
00000345: DUP2
00000346: MSTORE
00000347: PUSH1 0x40
00000349: SWAP1
0000034a: KECCAK256
0000034b: SLOAD
0000034c: DUP2
0000034d: JUMP
0000034e: JUMPDEST
0000034f: CALLVALUE
00000350: DUP1
00000351: ISZERO
00000352: PUSH2 0x035a
00000355: JUMPI
00000356: PUSH1 0x00
00000358: DUP1
00000359: REVERT
0000035a: JUMPDEST
0000035b: POP
0000035c: PUSH2 0x02ee
0000035f: PUSH2 0x0369
00000362: CALLDATASIZE
00000363: PUSH1 0x04
00000365: PUSH2 0x2b3f
00000368: JUMP
00000369: JUMPDEST
0000036a: PUSH2 0x085d
0000036d: JUMP
0000036e: JUMPDEST
0000036f: CALLVALUE
00000370: DUP1
00000371: ISZERO
00000372: PUSH2 0x037a
00000375: JUMPI
00000376: PUSH1 0x00
00000378: DUP1
00000379: REVERT
0000037a: JUMPDEST
0000037b: POP
0000037c: PUSH2 0x02ee
0000037f: PUSH2 0x0389
00000382: CALLDATASIZE
00000383: PUSH1 0x04
00000385: PUSH2 0x2b3f
00000388: JUMP
00000389: JUMPDEST
0000038a: PUSH2 0x0887
0000038d: JUMP
0000038e: JUMPDEST
0000038f: CALLVALUE
00000390: DUP1
00000391: ISZERO
00000392: PUSH2 0x039a
00000395: JUMPI
00000396: PUSH1 0x00
00000398: DUP1
00000399: REVERT
0000039a: JUMPDEST
0000039b: POP
0000039c: PUSH2 0x02ee
0000039f: PUSH2 0x03a9
000003a2: CALLDATASIZE
000003a3: PUSH1 0x04
000003a5: PUSH2 0x2b22
000003a8: JUMP
000003a9: JUMPDEST
000003aa: PUSH2 0x0914
000003ad: JUMP
000003ae: JUMPDEST
000003af: CALLVALUE
000003b0: DUP1
000003b1: ISZERO
000003b2: PUSH2 0x03ba
000003b5: JUMPI
000003b6: PUSH1 0x00
000003b8: DUP1
000003b9: REVERT
000003ba: JUMPDEST
000003bb: POP
000003bc: PUSH2 0x02ee
000003bf: PUSH2 0x0ab2
000003c2: JUMP
000003c3: JUMPDEST
000003c4: PUSH2 0x02ee
000003c7: PUSH2 0x03d1
000003ca: CALLDATASIZE
000003cb: PUSH1 0x04
000003cd: PUSH2 0x2bf7
000003d0: JUMP
000003d1: JUMPDEST
000003d2: PUSH2 0x0ac5
000003d5: JUMP
000003d6: JUMPDEST
000003d7: CALLVALUE
000003d8: DUP1
000003d9: ISZERO
000003da: PUSH2 0x03e2
000003dd: JUMPI
000003de: PUSH1 0x00
000003e0: DUP1
000003e1: REVERT
000003e2: JUMPDEST
000003e3: POP
000003e4: PUSH2 0x02d8
000003e7: PUSH2 0x03f1
000003ea: CALLDATASIZE
000003eb: PUSH1 0x04
000003ed: PUSH2 0x2b22
000003f0: JUMP
000003f1: JUMPDEST
000003f2: PUSH2 0x0165
000003f5: PUSH1 0x20
000003f7: MSTORE
000003f8: PUSH1 0x00
000003fa: SWAP1
000003fb: DUP2
000003fc: MSTORE
000003fd: PUSH1 0x40
000003ff: SWAP1
00000400: KECCAK256
00000401: SLOAD
00000402: DUP2
00000403: JUMP
00000404: JUMPDEST
00000405: CALLVALUE
00000406: DUP1
00000407: ISZERO
00000408: PUSH2 0x0410
0000040b: JUMPI
0000040c: PUSH1 0x00
0000040e: DUP1
0000040f: REVERT
00000410: JUMPDEST
00000411: POP
00000412: PUSH1 0x00
00000414: SLOAD
00000415: PUSH3 0x010000
00000419: SWAP1
0000041a: DIV
0000041b: PUSH1 0x01
0000041d: PUSH1 0x01
0000041f: PUSH1 0xa0
00000421: SHL
00000422: SUB
00000423: AND
00000424: PUSH1 0x40
00000426: MLOAD
00000427: PUSH1 0x01
00000429: PUSH1 0x01
0000042b: PUSH1 0xa0
0000042d: SHL
0000042e: SUB
0000042f: SWAP1
00000430: SWAP2
00000431: AND
00000432: DUP2
00000433: MSTORE
00000434: PUSH1 0x20
00000436: ADD
00000437: PUSH2 0x029b
0000043a: JUMP
0000043b: JUMPDEST
0000043c: PUSH2 0x02ee
0000043f: PUSH2 0x0449
00000442: CALLDATASIZE
00000443: PUSH1 0x04
00000445: PUSH2 0x2b22
00000448: JUMP
00000449: JUMPDEST
0000044a: PUSH2 0x0c50
0000044d: JUMP
0000044e: JUMPDEST
0000044f: CALLVALUE
00000450: DUP1
00000451: ISZERO
00000452: PUSH2 0x045a
00000455: JUMPI
00000456: PUSH1 0x00
00000458: DUP1
00000459: REVERT
0000045a: JUMPDEST
0000045b: POP
0000045c: PUSH2 0x02d8
0000045f: PUSH2 0x0df6
00000462: JUMP
00000463: JUMPDEST
00000464: PUSH2 0x02ee
00000467: PUSH2 0x0471
0000046a: CALLDATASIZE
0000046b: PUSH1 0x04
0000046d: PUSH2 0x2c8a
00000470: JUMP
00000471: JUMPDEST
00000472: PUSH2 0x0ebb
00000475: JUMP
00000476: JUMPDEST
00000477: CALLVALUE
00000478: DUP1
00000479: ISZERO
0000047a: PUSH2 0x0482
0000047d: JUMPI
0000047e: PUSH1 0x00
00000480: DUP1
00000481: REVERT
00000482: JUMPDEST
00000483: POP
00000484: PUSH1 0x64
00000486: SLOAD
00000487: PUSH1 0xff
00000489: AND
0000048a: PUSH2 0x028f
0000048d: JUMP
0000048e: JUMPDEST
0000048f: CALLVALUE
00000490: DUP1
00000491: ISZERO
00000492: PUSH2 0x049a
00000495: JUMPI
00000496: PUSH1 0x00
00000498: DUP1
00000499: REVERT
0000049a: JUMPDEST
0000049b: POP
0000049c: PUSH2 0x02d8
0000049f: PUSH2 0x015f
000004a2: SLOAD
000004a3: DUP2
000004a4: JUMP
000004a5: JUMPDEST
000004a6: PUSH2 0x02ee
000004a9: PUSH2 0x04b3
000004ac: CALLDATASIZE
000004ad: PUSH1 0x04
000004af: PUSH2 0x2d20
000004b2: JUMP
000004b3: JUMPDEST
000004b4: PUSH2 0x0f96
000004b7: JUMP
000004b8: JUMPDEST
000004b9: CALLVALUE
000004ba: DUP1
000004bb: ISZERO
000004bc: PUSH2 0x04c4
000004bf: JUMPI
000004c0: PUSH1 0x00
000004c2: DUP1
000004c3: REVERT
000004c4: JUMPDEST
000004c5: POP
000004c6: PUSH2 0x028f
000004c9: PUSH2 0x04d3
000004cc: CALLDATASIZE
000004cd: PUSH1 0x04
000004cf: PUSH2 0x2b22
000004d2: JUMP
000004d3: JUMPDEST
000004d4: PUSH2 0x0167
000004d7: PUSH1 0x20
000004d9: MSTORE
000004da: PUSH1 0x00
000004dc: SWAP1
000004dd: DUP2
000004de: MSTORE
000004df: PUSH1 0x40
000004e1: SWAP1
000004e2: KECCAK256
000004e3: SLOAD
000004e4: PUSH1 0xff
000004e6: AND
000004e7: DUP2
000004e8: JUMP
000004e9: JUMPDEST
000004ea: CALLVALUE
000004eb: DUP1
000004ec: ISZERO
000004ed: PUSH2 0x04f5
000004f0: JUMPI
000004f1: PUSH1 0x00
000004f3: DUP1
000004f4: REVERT
000004f5: JUMPDEST
000004f6: POP
000004f7: PUSH2 0x02ee
000004fa: PUSH2 0x114f
000004fd: JUMP
000004fe: JUMPDEST
000004ff: CALLVALUE
00000500: DUP1
00000501: ISZERO
00000502: PUSH2 0x050a
00000505: JUMPI
00000506: PUSH1 0x00
00000508: DUP1
00000509: REVERT
0000050a: JUMPDEST
0000050b: POP
0000050c: PUSH2 0x028f
0000050f: PUSH2 0x0519
00000512: CALLDATASIZE
00000513: PUSH1 0x04
00000515: PUSH2 0x2b3f
00000518: JUMP
00000519: JUMPDEST
0000051a: PUSH1 0x00
0000051c: SWAP2
0000051d: DUP3
0000051e: MSTORE
0000051f: PUSH1 0xc8
00000521: PUSH1 0x20
00000523: SWAP1
00000524: DUP2
00000525: MSTORE
00000526: PUSH1 0x40
00000528: DUP1
00000529: DUP5
0000052a: KECCAK256
0000052b: PUSH1 0x01
0000052d: PUSH1 0x01
0000052f: PUSH1 0xa0
00000531: SHL
00000532: SUB
00000533: SWAP4
00000534: SWAP1
00000535: SWAP4
00000536: AND
00000537: DUP5
00000538: MSTORE
00000539: SWAP2
0000053a: SWAP1
0000053b: MSTORE
0000053c: SWAP1
0000053d: KECCAK256
0000053e: SLOAD
0000053f: PUSH1 0xff
00000541: AND
00000542: SWAP1
00000543: JUMP
00000544: JUMPDEST
00000545: CALLVALUE
00000546: DUP1
00000547: ISZERO
00000548: PUSH2 0x0550
0000054b: JUMPI
0000054c: PUSH1 0x00
0000054e: DUP1
0000054f: REVERT
00000550: JUMPDEST
00000551: POP
00000552: PUSH2 0x02d8
00000555: PUSH1 0x09
00000557: DUP2
00000558: JUMP
00000559: JUMPDEST
0000055a: CALLVALUE
0000055b: DUP1
0000055c: ISZERO
0000055d: PUSH2 0x0565
00000560: JUMPI
00000561: PUSH1 0x00
00000563: DUP1
00000564: REVERT
00000565: JUMPDEST
00000566: POP
00000567: PUSH2 0x02d8
0000056a: PUSH2 0x0574
0000056d: CALLDATASIZE
0000056e: PUSH1 0x04
00000570: PUSH2 0x2b22
00000573: JUMP
00000574: JUMPDEST
00000575: PUSH1 0x01
00000577: PUSH1 0x01
00000579: PUSH1 0xa0
0000057b: SHL
0000057c: SUB
0000057d: AND
0000057e: PUSH1 0x00
00000580: SWAP1
00000581: DUP2
00000582: MSTORE
00000583: PUSH2 0x0160
00000586: PUSH1 0x20
00000588: MSTORE
00000589: PUSH1 0x40
0000058b: SWAP1
0000058c: KECCAK256
0000058d: SLOAD
0000058e: SWAP1
0000058f: JUMP
00000590: JUMPDEST
00000591: CALLVALUE
00000592: DUP1
00000593: ISZERO
00000594: PUSH2 0x059c
00000597: JUMPI
00000598: PUSH1 0x00
0000059a: DUP1
0000059b: REVERT
0000059c: JUMPDEST
0000059d: POP
0000059e: PUSH2 0x02d8
000005a1: PUSH1 0x00
000005a3: DUP2
000005a4: JUMP
000005a5: JUMPDEST
000005a6: CALLVALUE
000005a7: DUP1
000005a8: ISZERO
000005a9: PUSH2 0x05b1
000005ac: JUMPI
000005ad: PUSH1 0x00
000005af: DUP1
000005b0: REVERT
000005b1: JUMPDEST
000005b2: POP
000005b3: PUSH2 0x02ee
000005b6: PUSH2 0x05c0
000005b9: CALLDATASIZE
000005ba: PUSH1 0x04
000005bc: PUSH2 0x2d74
000005bf: JUMP
000005c0: JUMPDEST
000005c1: PUSH2 0x1181
000005c4: JUMP
000005c5: JUMPDEST
000005c6: PUSH2 0x02ee
000005c9: PUSH2 0x05d3
000005cc: CALLDATASIZE
000005cd: PUSH1 0x04
000005cf: PUSH2 0x2da2
000005d2: JUMP
000005d3: JUMPDEST
000005d4: PUSH2 0x120c
000005d7: JUMP
000005d8: JUMPDEST
000005d9: CALLVALUE
000005da: DUP1
000005db: ISZERO
000005dc: PUSH2 0x05e4
000005df: JUMPI
000005e0: PUSH1 0x00
000005e2: DUP1
000005e3: REVERT
000005e4: JUMPDEST
000005e5: POP
000005e6: PUSH2 0x02ee
000005e9: PUSH2 0x05f3
000005ec: CALLDATASIZE
000005ed: PUSH1 0x04
000005ef: PUSH2 0x2dce
000005f2: JUMP
000005f3: JUMPDEST
000005f4: PUSH2 0x1235
000005f7: JUMP
000005f8: JUMPDEST
000005f9: CALLVALUE
000005fa: DUP1
000005fb: ISZERO
000005fc: PUSH2 0x0604
000005ff: JUMPI
00000600: PUSH1 0x00
00000602: DUP1
00000603: REVERT
00000604: JUMPDEST
00000605: POP
00000606: PUSH2 0x02ee
00000609: PUSH2 0x0613
0000060c: CALLDATASIZE
0000060d: PUSH1 0x04
0000060f: PUSH2 0x2b22
00000612: JUMP
00000613: JUMPDEST
00000614: PUSH2 0x1255
00000617: JUMP
00000618: JUMPDEST
00000619: CALLVALUE
0000061a: DUP1
0000061b: ISZERO
0000061c: PUSH2 0x0624
0000061f: JUMPI
00000620: PUSH1 0x00
00000622: DUP1
00000623: REVERT
00000624: JUMPDEST
00000625: POP
00000626: PUSH2 0x02d8
00000629: PUSH2 0x0633
0000062c: CALLDATASIZE
0000062d: PUSH1 0x04
0000062f: PUSH2 0x2b22
00000632: JUMP
00000633: JUMPDEST
00000634: PUSH2 0x0164
00000637: PUSH1 0x20
00000639: MSTORE
0000063a: PUSH1 0x00
0000063c: SWAP1
0000063d: DUP2
0000063e: MSTORE
0000063f: PUSH1 0x40
00000641: SWAP1
00000642: KECCAK256
00000643: SLOAD
00000644: DUP2
00000645: JUMP
00000646: JUMPDEST
00000647: PUSH2 0x02ee
0000064a: PUSH2 0x0654
0000064d: CALLDATASIZE
0000064e: PUSH1 0x04
00000650: PUSH2 0x2af4
00000653: JUMP
00000654: JUMPDEST
00000655: PUSH2 0x1427
00000658: JUMP
00000659: JUMPDEST
0000065a: CALLVALUE
0000065b: DUP1
0000065c: ISZERO
0000065d: PUSH2 0x0665
00000660: JUMPI
00000661: PUSH1 0x00
00000663: DUP1
00000664: REVERT
00000665: JUMPDEST
00000666: POP
00000667: PUSH2 0x02d8
0000066a: PUSH2 0x0674
0000066d: CALLDATASIZE
0000066e: PUSH1 0x04
00000670: PUSH2 0x2b22
00000673: JUMP
00000674: JUMPDEST
00000675: PUSH2 0x0166
00000678: PUSH1 0x20
0000067a: MSTORE
0000067b: PUSH1 0x00
0000067d: SWAP1
0000067e: DUP2
0000067f: MSTORE
00000680: PUSH1 0x40
00000682: SWAP1
00000683: KECCAK256
00000684: SLOAD
00000685: DUP2
00000686: JUMP
00000687: JUMPDEST
00000688: CALLVALUE
00000689: DUP1
0000068a: ISZERO
0000068b: PUSH2 0x0693
0000068e: JUMPI
0000068f: PUSH1 0x00
00000691: DUP1
00000692: REVERT
00000693: JUMPDEST
00000694: POP
00000695: PUSH2 0x02ee
00000698: PUSH2 0x06a2
0000069b: CALLDATASIZE
0000069c: PUSH1 0x04
0000069e: PUSH2 0x2b3f
000006a1: JUMP
000006a2: JUMPDEST
000006a3: PUSH2 0x1439
000006a6: JUMP
000006a7: JUMPDEST
000006a8: CALLVALUE
000006a9: DUP1
000006aa: ISZERO
000006ab: PUSH2 0x06b3
000006ae: JUMPI
000006af: PUSH1 0x00
000006b1: DUP1
000006b2: REVERT
000006b3: JUMPDEST
000006b4: POP
000006b5: PUSH2 0x02d8
000006b8: PUSH2 0x06c2
000006bb: CALLDATASIZE
000006bc: PUSH1 0x04
000006be: PUSH2 0x2b22
000006c1: JUMP
000006c2: JUMPDEST
000006c3: PUSH1 0x01
000006c5: PUSH1 0x01
000006c7: PUSH1 0xa0
000006c9: SHL
000006ca: SUB
000006cb: AND
000006cc: PUSH1 0x00
000006ce: SWAP1
000006cf: DUP2
000006d0: MSTORE
000006d1: PUSH2 0x0161
000006d4: PUSH1 0x20
000006d6: MSTORE
000006d7: PUSH1 0x40
000006d9: SWAP1
000006da: KECCAK256
000006db: SLOAD
000006dc: SWAP1
000006dd: JUMP
000006de: JUMPDEST
000006df: PUSH2 0x02ee
000006e2: PUSH2 0x06ec
000006e5: CALLDATASIZE
000006e6: PUSH1 0x04
000006e8: PUSH2 0x2deb
000006eb: JUMP
000006ec: JUMPDEST
000006ed: PUSH2 0x145e
000006f0: JUMP
000006f1: JUMPDEST
000006f2: CALLVALUE
000006f3: DUP1
000006f4: ISZERO
000006f5: PUSH2 0x06fd
000006f8: JUMPI
000006f9: PUSH1 0x00
000006fb: DUP1
000006fc: REVERT
000006fd: JUMPDEST
000006fe: POP
000006ff: PUSH2 0x02d8
00000702: PUSH32 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a
00000723: DUP2
00000724: JUMP
00000725: JUMPDEST
00000726: CALLVALUE
00000727: DUP1
00000728: ISZERO
00000729: PUSH2 0x0731
0000072c: JUMPI
0000072d: PUSH1 0x00
0000072f: DUP1
00000730: REVERT
00000731: JUMPDEST
00000732: POP
00000733: PUSH2 0x015e
00000736: SLOAD
00000737: PUSH2 0x028f
0000073a: SWAP1
0000073b: PUSH1 0xff
0000073d: AND
0000073e: DUP2
0000073f: JUMP
00000740: JUMPDEST
00000741: CALLVALUE
00000742: DUP1
00000743: ISZERO
00000744: PUSH2 0x074c
00000747: JUMPI
00000748: PUSH1 0x00
0000074a: DUP1
0000074b: REVERT
0000074c: JUMPDEST
0000074d: POP
0000074e: PUSH2 0x02ee
00000751: PUSH2 0x075b
00000754: CALLDATASIZE
00000755: PUSH1 0x04
00000757: PUSH2 0x2e23
0000075a: JUMP
0000075b: JUMPDEST
0000075c: PUSH2 0x1530
0000075f: JUMP
00000760: JUMPDEST
00000761: PUSH1 0x00
00000763: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00000784: DUP3
00000785: AND
00000786: PUSH32 0x7965db0b00000000000000000000000000000000000000000000000000000000
000007a7: EQ
000007a8: DUP1
000007a9: PUSH2 0x07f3
000007ac: JUMPI
000007ad: POP
000007ae: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000
000007cf: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
000007f0: DUP4
000007f1: AND
000007f2: EQ
000007f3: JUMPDEST
000007f4: SWAP3
000007f5: SWAP2
000007f6: POP
000007f7: POP
000007f8: JUMP
000007f9: JUMPDEST
000007fa: PUSH1 0x00
000007fc: PUSH2 0x0804
000007ff: DUP2
00000800: PUSH2 0x1613
00000803: JUMP
00000804: JUMPDEST
00000805: PUSH1 0x40
00000807: MLOAD
00000808: PUSH1 0x00
0000080a: SWAP1
0000080b: CALLER
0000080c: SWAP1
0000080d: SELFBALANCE
0000080e: SWAP1
0000080f: DUP4
00000810: DUP2
00000811: DUP2
00000812: DUP2
00000813: DUP6
00000814: DUP8
00000815: GAS
00000816: CALL
00000817: SWAP3
00000818: POP
00000819: POP
0000081a: POP
0000081b: RETURNDATASIZE
0000081c: DUP1
0000081d: PUSH1 0x00
0000081f: DUP2
00000820: EQ
00000821: PUSH2 0x0846
00000824: JUMPI
00000825: PUSH1 0x40
00000827: MLOAD
00000828: SWAP2
00000829: POP
0000082a: PUSH1 0x1f
0000082c: NOT
0000082d: PUSH1 0x3f
0000082f: RETURNDATASIZE
00000830: ADD
00000831: AND
00000832: DUP3
00000833: ADD
00000834: PUSH1 0x40
00000836: MSTORE
00000837: RETURNDATASIZE
00000838: DUP3
00000839: MSTORE
0000083a: RETURNDATASIZE
0000083b: PUSH1 0x00
0000083d: PUSH1 0x20
0000083f: DUP5
00000840: ADD
00000841: RETURNDATACOPY
00000842: PUSH2 0x084b
00000845: JUMP
00000846: JUMPDEST
00000847: PUSH1 0x60
00000849: SWAP2
0000084a: POP
0000084b: JUMPDEST
0000084c: POP
0000084d: POP
0000084e: SWAP1
0000084f: POP
00000850: DUP1
00000851: PUSH2 0x0859
00000854: JUMPI
00000855: PUSH1 0x00
00000857: DUP1
00000858: REVERT
00000859: JUMPDEST
0000085a: POP
0000085b: POP
0000085c: JUMP
0000085d: JUMPDEST
0000085e: PUSH1 0x00
00000860: DUP3
00000861: DUP2
00000862: MSTORE
00000863: PUSH1 0xc8
00000865: PUSH1 0x20
00000867: MSTORE
00000868: PUSH1 0x40
0000086a: SWAP1
0000086b: KECCAK256
0000086c: PUSH1 0x01
0000086e: ADD
0000086f: SLOAD
00000870: PUSH2 0x0878
00000873: DUP2
00000874: PUSH2 0x1613
00000877: JUMP
00000878: JUMPDEST
00000879: PUSH2 0x0882
0000087c: DUP4
0000087d: DUP4
0000087e: PUSH2 0x161d
00000881: JUMP
00000882: JUMPDEST
00000883: POP
00000884: POP
00000885: POP
00000886: JUMP
00000887: JUMPDEST
00000888: PUSH1 0x01
0000088a: PUSH1 0x01
0000088c: PUSH1 0xa0
0000088e: SHL
0000088f: SUB
00000890: DUP2
00000891: AND
00000892: CALLER
00000893: EQ
00000894: PUSH2 0x090a
00000897: JUMPI
00000898: PUSH1 0x40
0000089a: MLOAD
0000089b: PUSH3 0x461bcd
0000089f: PUSH1 0xe5
000008a1: SHL
000008a2: DUP2
000008a3: MSTORE
000008a4: PUSH1 0x20
000008a6: PUSH1 0x04
000008a8: DUP3
000008a9: ADD
000008aa: MSTORE
000008ab: PUSH1 0x2f
000008ad: PUSH1 0x24
000008af: DUP3
000008b0: ADD
000008b1: MSTORE
000008b2: PUSH32 0x416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365
000008d3: PUSH1 0x44
000008d5: DUP3
000008d6: ADD
000008d7: MSTORE
000008d8: PUSH32 0x20726f6c657320666f722073656c660000000000000000000000000000000000
000008f9: PUSH1 0x64
000008fb: DUP3
000008fc: ADD
000008fd: MSTORE
000008fe: PUSH1 0x84
00000900: ADD
00000901: JUMPDEST
00000902: PUSH1 0x40
00000904: MLOAD
00000905: DUP1
00000906: SWAP2
00000907: SUB
00000908: SWAP1
00000909: REVERT
0000090a: JUMPDEST
0000090b: PUSH2 0x0859
0000090e: DUP3
0000090f: DUP3
00000910: PUSH2 0x16bf
00000913: JUMP
00000914: JUMPDEST
00000915: ADDRESS
00000916: PUSH1 0x01
00000918: PUSH1 0x01
0000091a: PUSH1 0xa0
0000091c: SHL
0000091d: SUB
0000091e: PUSH32 0x000000000000000000000000de2d792ca3c4d02de3ce1cd1456d8d0990cc3fab
0000093f: AND
00000940: EQ
00000941: ISZERO
00000942: PUSH2 0x09b3
00000945: JUMPI
00000946: PUSH1 0x40
00000948: MLOAD
00000949: PUSH3 0x461bcd
0000094d: PUSH1 0xe5
0000094f: SHL
00000950: DUP2
00000951: MSTORE
00000952: PUSH1 0x20
00000954: PUSH1 0x04
00000956: DUP3
00000957: ADD
00000958: MSTORE
00000959: PUSH1 0x2c
0000095b: PUSH1 0x24
0000095d: DUP3
0000095e: ADD
0000095f: MSTORE
00000960: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00000981: PUSH1 0x44
00000983: DUP3
00000984: ADD
00000985: MSTORE
00000986: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000
000009a7: PUSH1 0x64
000009a9: DUP3
000009aa: ADD
000009ab: MSTORE
000009ac: PUSH1 0x84
000009ae: ADD
000009af: PUSH2 0x0901
000009b2: JUMP
000009b3: JUMPDEST
000009b4: PUSH32 0x000000000000000000000000de2d792ca3c4d02de3ce1cd1456d8d0990cc3fab
000009d5: PUSH1 0x01
000009d7: PUSH1 0x01
000009d9: PUSH1 0xa0
000009db: SHL
000009dc: SUB
000009dd: AND
000009de: PUSH2 0x0a0e
000009e1: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00000a02: SLOAD
00000a03: PUSH1 0x01
00000a05: PUSH1 0x01
00000a07: PUSH1 0xa0
00000a09: SHL
00000a0a: SUB
00000a0b: AND
00000a0c: SWAP1
00000a0d: JUMP
00000a0e: JUMPDEST
00000a0f: PUSH1 0x01
00000a11: PUSH1 0x01
00000a13: PUSH1 0xa0
00000a15: SHL
00000a16: SUB
00000a17: AND
00000a18: EQ
00000a19: PUSH2 0x0a8a
00000a1c: JUMPI
00000a1d: PUSH1 0x40
00000a1f: MLOAD
00000a20: PUSH3 0x461bcd
00000a24: PUSH1 0xe5
00000a26: SHL
00000a27: DUP2
00000a28: MSTORE
00000a29: PUSH1 0x20
00000a2b: PUSH1 0x04
00000a2d: DUP3
00000a2e: ADD
00000a2f: MSTORE
00000a30: PUSH1 0x2c
00000a32: PUSH1 0x24
00000a34: DUP3
00000a35: ADD
00000a36: MSTORE
00000a37: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00000a58: PUSH1 0x44
00000a5a: DUP3
00000a5b: ADD
00000a5c: MSTORE
00000a5d: PUSH32 0x6163746976652070726f78790000000000000000000000000000000000000000
00000a7e: PUSH1 0x64
00000a80: DUP3
00000a81: ADD
00000a82: MSTORE
00000a83: PUSH1 0x84
00000a85: ADD
00000a86: PUSH2 0x0901
00000a89: JUMP
00000a8a: JUMPDEST
00000a8b: PUSH2 0x0a93
00000a8e: DUP2
00000a8f: PUSH2 0x1742
00000a92: JUMP
00000a93: JUMPDEST
00000a94: PUSH1 0x40
00000a96: DUP1
00000a97: MLOAD
00000a98: PUSH1 0x00
00000a9a: DUP1
00000a9b: DUP3
00000a9c: MSTORE
00000a9d: PUSH1 0x20
00000a9f: DUP3
00000aa0: ADD
00000aa1: SWAP1
00000aa2: SWAP3
00000aa3: MSTORE
00000aa4: PUSH2 0x0aaf
00000aa7: SWAP2
00000aa8: DUP4
00000aa9: SWAP2
00000aaa: SWAP1
00000aab: PUSH2 0x174d
00000aae: JUMP
00000aaf: JUMPDEST
00000ab0: POP
00000ab1: JUMP
00000ab2: JUMPDEST
00000ab3: PUSH1 0x00
00000ab5: PUSH2 0x0abd
00000ab8: DUP2
00000ab9: PUSH2 0x1613
00000abc: JUMP
00000abd: JUMPDEST
00000abe: PUSH2 0x0aaf
00000ac1: PUSH2 0x18fc
00000ac4: JUMP
00000ac5: JUMPDEST
00000ac6: ADDRESS
00000ac7: PUSH1 0x01
00000ac9: PUSH1 0x01
00000acb: PUSH1 0xa0
00000acd: SHL
00000ace: SUB
00000acf: PUSH32 0x000000000000000000000000de2d792ca3c4d02de3ce1cd1456d8d0990cc3fab
00000af0: AND
00000af1: EQ
00000af2: ISZERO
00000af3: PUSH2 0x0b64
00000af6: JUMPI
00000af7: PUSH1 0x40
00000af9: MLOAD
00000afa: PUSH3 0x461bcd
00000afe: PUSH1 0xe5
00000b00: SHL
00000b01: DUP2
00000b02: MSTORE
00000b03: PUSH1 0x20
00000b05: PUSH1 0x04
00000b07: DUP3
00000b08: ADD
00000b09: MSTORE
00000b0a: PUSH1 0x2c
00000b0c: PUSH1 0x24
00000b0e: DUP3
00000b0f: ADD
00000b10: MSTORE
00000b11: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00000b32: PUSH1 0x44
00000b34: DUP3
00000b35: ADD
00000b36: MSTORE
00000b37: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000
00000b58: PUSH1 0x64
00000b5a: DUP3
00000b5b: ADD
00000b5c: MSTORE
00000b5d: PUSH1 0x84
00000b5f: ADD
00000b60: PUSH2 0x0901
00000b63: JUMP
00000b64: JUMPDEST
00000b65: PUSH32 0x000000000000000000000000de2d792ca3c4d02de3ce1cd1456d8d0990cc3fab
00000b86: PUSH1 0x01
00000b88: PUSH1 0x01
00000b8a: PUSH1 0xa0
00000b8c: SHL
00000b8d: SUB
00000b8e: AND
00000b8f: PUSH2 0x0bbf
00000b92: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00000bb3: SLOAD
00000bb4: PUSH1 0x01
00000bb6: PUSH1 0x01
00000bb8: PUSH1 0xa0
00000bba: SHL
00000bbb: SUB
00000bbc: AND
00000bbd: SWAP1
00000bbe: JUMP
00000bbf: JUMPDEST
00000bc0: PUSH1 0x01
00000bc2: PUSH1 0x01
00000bc4: PUSH1 0xa0
00000bc6: SHL
00000bc7: SUB
00000bc8: AND
00000bc9: EQ
00000bca: PUSH2 0x0c3b
00000bcd: JUMPI
00000bce: PUSH1 0x40
00000bd0: MLOAD
00000bd1: PUSH3 0x461bcd
00000bd5: PUSH1 0xe5
00000bd7: SHL
00000bd8: DUP2
00000bd9: MSTORE
00000bda: PUSH1 0x20
00000bdc: PUSH1 0x04
00000bde: DUP3
00000bdf: ADD
00000be0: MSTORE
00000be1: PUSH1 0x2c
00000be3: PUSH1 0x24
00000be5: DUP3
00000be6: ADD
00000be7: MSTORE
00000be8: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00000c09: PUSH1 0x44
00000c0b: DUP3
00000c0c: ADD
00000c0d: MSTORE
00000c0e: PUSH32 0x6163746976652070726f78790000000000000000000000000000000000000000
00000c2f: PUSH1 0x64
00000c31: DUP3
00000c32: ADD
00000c33: MSTORE
00000c34: PUSH1 0x84
00000c36: ADD
00000c37: PUSH2 0x0901
00000c3a: JUMP
00000c3b: JUMPDEST
00000c3c: PUSH2 0x0c44
00000c3f: DUP3
00000c40: PUSH2 0x1742
00000c43: JUMP
00000c44: JUMPDEST
00000c45: PUSH2 0x0859
00000c48: DUP3
00000c49: DUP3
00000c4a: PUSH1 0x01
00000c4c: PUSH2 0x174d
00000c4f: JUMP
00000c50: JUMPDEST
00000c51: PUSH2 0x0c58
00000c54: PUSH2 0x194e
00000c57: JUMP
00000c58: JUMPDEST
00000c59: PUSH2 0x015f
00000c5c: SLOAD
00000c5d: PUSH2 0x0c92
00000c60: JUMPI
00000c61: PUSH1 0x40
00000c63: MLOAD
00000c64: PUSH32 0xbb2f9c9d00000000000000000000000000000000000000000000000000000000
00000c85: DUP2
00000c86: MSTORE
00000c87: PUSH1 0x04
00000c89: ADD
00000c8a: PUSH1 0x40
00000c8c: MLOAD
00000c8d: DUP1
00000c8e: SWAP2
00000c8f: SUB
00000c90: SWAP1
00000c91: REVERT
00000c92: JUMPDEST
00000c93: PUSH2 0x015f
00000c96: SLOAD
00000c97: PUSH1 0x00
00000c99: SWAP1
00000c9a: PUSH1 0x03
00000c9c: DUP4
00000c9d: PUSH1 0x00
00000c9f: DUP6
00000ca0: PUSH1 0x01
00000ca2: PUSH1 0x01
00000ca4: PUSH1 0xa0
00000ca6: SHL
00000ca7: SUB
00000ca8: AND
00000ca9: PUSH4 0x06fdde03
00000cae: PUSH1 0x40
00000cb0: MLOAD
00000cb1: DUP2
00000cb2: PUSH4 0xffffffff
00000cb7: AND
00000cb8: PUSH1 0xe0
00000cba: SHL
00000cbb: DUP2
00000cbc: MSTORE
00000cbd: PUSH1 0x04
00000cbf: ADD
00000cc0: PUSH1 0x00
00000cc2: PUSH1 0x40
00000cc4: MLOAD
00000cc5: DUP1
00000cc6: DUP4
00000cc7: SUB
00000cc8: DUP2
00000cc9: DUP7
00000cca: DUP1
00000ccb: EXTCODESIZE
00000ccc: ISZERO
00000ccd: DUP1
00000cce: ISZERO
00000ccf: PUSH2 0x0cd7
00000cd2: JUMPI
00000cd3: PUSH1 0x00
00000cd5: DUP1
00000cd6: REVERT
00000cd7: JUMPDEST
00000cd8: POP
00000cd9: GAS
00000cda: STATICCALL
00000cdb: ISZERO
00000cdc: DUP1
00000cdd: ISZERO
00000cde: PUSH2 0x0ceb
00000ce1: JUMPI
00000ce2: RETURNDATASIZE
00000ce3: PUSH1 0x00
00000ce5: DUP1
00000ce6: RETURNDATACOPY
00000ce7: RETURNDATASIZE
00000ce8: PUSH1 0x00
00000cea: REVERT
00000ceb: JUMPDEST
00000cec: POP
00000ced: POP
00000cee: POP
00000cef: POP
00000cf0: PUSH1 0x40
00000cf2: MLOAD
00000cf3: RETURNDATASIZE
00000cf4: PUSH1 0x00
00000cf6: DUP3
00000cf7: RETURNDATACOPY
00000cf8: PUSH1 0x1f
00000cfa: RETURNDATASIZE
00000cfb: SWAP1
00000cfc: DUP2
00000cfd: ADD
00000cfe: PUSH1 0x1f
00000d00: NOT
00000d01: AND
00000d02: DUP3
00000d03: ADD
00000d04: PUSH1 0x40
00000d06: MSTORE
00000d07: PUSH2 0x0d13
00000d0a: SWAP2
00000d0b: SWAP1
00000d0c: DUP2
00000d0d: ADD
00000d0e: SWAP1
00000d0f: PUSH2 0x2eb3
00000d12: JUMP
00000d13: JUMPDEST
00000d14: DUP7
00000d15: PUSH1 0x01
00000d17: PUSH1 0x01
00000d19: PUSH1 0xa0
00000d1b: SHL
00000d1c: SUB
00000d1d: AND
00000d1e: PUSH4 0x95d89b41
00000d23: PUSH1 0x40
00000d25: MLOAD
00000d26: DUP2
00000d27: PUSH4 0xffffffff
00000d2c: AND
00000d2d: PUSH1 0xe0
00000d2f: SHL
00000d30: DUP2
00000d31: MSTORE
00000d32: PUSH1 0x04
00000d34: ADD
00000d35: PUSH1 0x00
00000d37: PUSH1 0x40
00000d39: MLOAD
00000d3a: DUP1
00000d3b: DUP4
00000d3c: SUB
00000d3d: DUP2
00000d3e: DUP7
00000d3f: DUP1
00000d40: EXTCODESIZE
00000d41: ISZERO
00000d42: DUP1
00000d43: ISZERO
00000d44: PUSH2 0x0d4c
00000d47: JUMPI
00000d48: PUSH1 0x00
00000d4a: DUP1
00000d4b: REVERT
00000d4c: JUMPDEST
00000d4d: POP
00000d4e: GAS
00000d4f: STATICCALL
00000d50: ISZERO
00000d51: DUP1
00000d52: ISZERO
00000d53: PUSH2 0x0d60
00000d56: JUMPI
00000d57: RETURNDATASIZE
00000d58: PUSH1 0x00
00000d5a: DUP1
00000d5b: RETURNDATACOPY
00000d5c: RETURNDATASIZE
00000d5d: PUSH1 0x00
00000d5f: REVERT
00000d60: JUMPDEST
00000d61: POP
00000d62: POP
00000d63: POP
00000d64: POP
00000d65: PUSH1 0x40
00000d67: MLOAD
00000d68: RETURNDATASIZE
00000d69: PUSH1 0x00
00000d6b: DUP3
00000d6c: RETURNDATACOPY
00000d6d: PUSH1 0x1f
00000d6f: RETURNDATASIZE
00000d70: SWAP1
00000d71: DUP2
00000d72: ADD
00000d73: PUSH1 0x1f
00000d75: NOT
00000d76: AND
00000d77: DUP3
00000d78: ADD
00000d79: PUSH1 0x40
00000d7b: MSTORE
00000d7c: PUSH2 0x0d88
00000d7f: SWAP2
00000d80: SWAP1
00000d81: DUP2
00000d82: ADD
00000d83: SWAP1
00000d84: PUSH2 0x2eb3
00000d87: JUMP
00000d88: JUMPDEST
00000d89: PUSH1 0x40
00000d8b: MLOAD
00000d8c: PUSH1 0x20
00000d8e: ADD
00000d8f: PUSH2 0x0d9b
00000d92: SWAP5
00000d93: SWAP4
00000d94: SWAP3
00000d95: SWAP2
00000d96: SWAP1
00000d97: PUSH2 0x2f56
00000d9a: JUMP
00000d9b: JUMPDEST
00000d9c: PUSH1 0x40
00000d9e: DUP1
00000d9f: MLOAD
00000da0: PUSH1 0x1f
00000da2: NOT
00000da3: DUP2
00000da4: DUP5
00000da5: SUB
00000da6: ADD
00000da7: DUP2
00000da8: MSTORE
00000da9: SWAP1
00000daa: DUP3
00000dab: SWAP1
00000dac: MSTORE
00000dad: PUSH2 0x0dba
00000db0: SWAP4
00000db1: SWAP3
00000db2: SWAP2
00000db3: PUSH1 0x20
00000db5: ADD
00000db6: PUSH2 0x2f90
00000db9: JUMP
00000dba: JUMPDEST
00000dbb: PUSH1 0x40
00000dbd: DUP1
00000dbe: MLOAD
00000dbf: PUSH1 0x1f
00000dc1: NOT
00000dc2: DUP2
00000dc3: DUP5
00000dc4: SUB
00000dc5: ADD
00000dc6: DUP2
00000dc7: MSTORE
00000dc8: SWAP2
00000dc9: SWAP1
00000dca: MSTORE
00000dcb: SWAP1
00000dcc: POP
00000dcd: PUSH2 0x0859
00000dd0: PUSH32 0xe821b978bcce9abbf40c3e50ea30143e68c65fa95b9da8907fef59c02d954cec
00000df1: DUP3
00000df2: PUSH2 0x19a3
00000df5: JUMP
00000df6: JUMPDEST
00000df7: PUSH1 0x00
00000df9: ADDRESS
00000dfa: PUSH1 0x01
00000dfc: PUSH1 0x01
00000dfe: PUSH1 0xa0
00000e00: SHL
00000e01: SUB
00000e02: PUSH32 0x000000000000000000000000de2d792ca3c4d02de3ce1cd1456d8d0990cc3fab
00000e23: AND
00000e24: EQ
00000e25: PUSH2 0x0e96
00000e28: JUMPI
00000e29: PUSH1 0x40
00000e2b: MLOAD
00000e2c: PUSH3 0x461bcd
00000e30: PUSH1 0xe5
00000e32: SHL
00000e33: DUP2
00000e34: MSTORE
00000e35: PUSH1 0x20
00000e37: PUSH1 0x04
00000e39: DUP3
00000e3a: ADD
00000e3b: MSTORE
00000e3c: PUSH1 0x38
00000e3e: PUSH1 0x24
00000e40: DUP3
00000e41: ADD
00000e42: MSTORE
00000e43: PUSH32 0x555550535570677261646561626c653a206d757374206e6f742062652063616c
00000e64: PUSH1 0x44
00000e66: DUP3
00000e67: ADD
00000e68: MSTORE
00000e69: PUSH32 0x6c6564207468726f7567682064656c656761746563616c6c0000000000000000
00000e8a: PUSH1 0x64
00000e8c: DUP3
00000e8d: ADD
00000e8e: MSTORE
00000e8f: PUSH1 0x84
00000e91: ADD
00000e92: PUSH2 0x0901
00000e95: JUMP
00000e96: JUMPDEST
00000e97: POP
00000e98: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00000eb9: SWAP1
00000eba: JUMP
00000ebb: JUMPDEST
00000ebc: PUSH2 0x0ec3
00000ebf: PUSH2 0x194e
00000ec2: JUMP
00000ec3: JUMPDEST
00000ec4: PUSH2 0x015f
00000ec7: SLOAD
00000ec8: PUSH2 0x0efd
00000ecb: JUMPI
00000ecc: PUSH1 0x40
00000ece: MLOAD
00000ecf: PUSH32 0xbb2f9c9d00000000000000000000000000000000000000000000000000000000
00000ef0: DUP2
00000ef1: MSTORE
00000ef2: PUSH1 0x04
00000ef4: ADD
00000ef5: PUSH1 0x40
00000ef7: MLOAD
00000ef8: DUP1
00000ef9: SWAP2
00000efa: SUB
00000efb: SWAP1
00000efc: REVERT
00000efd: JUMPDEST
00000efe: PUSH1 0x00
00000f00: PUSH2 0x0f08
00000f03: DUP6
00000f04: PUSH2 0x1a21
00000f07: JUMP
00000f08: JUMPDEST
00000f09: SWAP1
00000f0a: POP
00000f0b: PUSH1 0x00
00000f0d: PUSH2 0x0f16
00000f10: DUP3
00000f11: DUP7
00000f12: PUSH2 0x1b1d
00000f15: JUMP
00000f16: JUMPDEST
00000f17: PUSH2 0x015f
00000f1a: SLOAD
00000f1b: SWAP1
00000f1c: SWAP2
00000f1d: POP
00000f1e: PUSH1 0x00
00000f20: SWAP1
00000f21: DUP5
00000f22: ISZERO
00000f23: PUSH2 0x0f2d
00000f26: JUMPI
00000f27: PUSH1 0x02
00000f29: PUSH2 0x0f30
00000f2c: JUMP
00000f2d: JUMPDEST
00000f2e: PUSH1 0x01
00000f30: JUMPDEST
00000f31: PUSH1 0x03
00000f33: DUP2
00000f34: GT
00000f35: ISZERO
00000f36: PUSH2 0x0f41
00000f39: JUMPI
00000f3a: PUSH2 0x0f41
00000f3d: PUSH2 0x2e58
00000f40: JUMP
00000f41: JUMPDEST
00000f42: PUSH1 0x40
00000f44: MLOAD
00000f45: PUSH2 0x0f6f
00000f48: SWAP3
00000f49: SWAP2
00000f4a: SWAP1
00000f4b: PUSH1 0x01
00000f4d: PUSH1 0x01
00000f4f: PUSH1 0xa0
00000f51: SHL
00000f52: SUB
00000f53: DUP12
00000f54: AND
00000f55: SWAP1
00000f56: PUSH1 0x00
00000f58: SWAP1
00000f59: CALLER
00000f5a: SWAP1
00000f5b: DUP15
00000f5c: SWAP1
00000f5d: DUP10
00000f5e: SWAP1
00000f5f: PUSH1 0xff
00000f61: DUP13
00000f62: AND
00000f63: SWAP1
00000f64: DUP15
00000f65: SWAP1
00000f66: DUP15
00000f67: SWAP1
00000f68: PUSH1 0x20
00000f6a: ADD
00000f6b: PUSH2 0x2fbd
00000f6e: JUMP
00000f6f: JUMPDEST
00000f70: PUSH1 0x40
00000f72: MLOAD
00000f73: PUSH1 0x20
00000f75: DUP2
00000f76: DUP4
00000f77: SUB
00000f78: SUB
00000f79: DUP2
00000f7a: MSTORE
00000f7b: SWAP1
00000f7c: PUSH1 0x40
00000f7e: MSTORE
00000f7f: SWAP1
00000f80: POP
00000f81: PUSH2 0x0f8c
00000f84: DUP8
00000f85: DUP8
00000f86: DUP5
00000f87: DUP5
00000f88: PUSH2 0x1bad
00000f8b: JUMP
00000f8c: JUMPDEST
00000f8d: POP
00000f8e: POP
00000f8f: POP
00000f90: POP
00000f91: POP
00000f92: POP
00000f93: POP
00000f94: POP
00000f95: JUMP
00000f96: JUMPDEST
00000f97: PUSH2 0x0f9e
00000f9a: PUSH2 0x194e
00000f9d: JUMP
00000f9e: JUMPDEST
00000f9f: PUSH1 0x00
00000fa1: SLOAD
00000fa2: PUSH3 0x010000
00000fa6: SWAP1
00000fa7: DIV
00000fa8: PUSH1 0x01
00000faa: PUSH1 0x01
00000fac: PUSH1 0xa0
00000fae: SHL
00000faf: SUB
00000fb0: AND
00000fb1: CALLER
00000fb2: EQ
00000fb3: PUSH2 0x0fe8
00000fb6: JUMPI
00000fb7: PUSH1 0x40
00000fb9: MLOAD
00000fba: PUSH32 0x5c5536bd00000000000000000000000000000000000000000000000000000000
00000fdb: DUP2
00000fdc: MSTORE
00000fdd: PUSH1 0x04
00000fdf: ADD
00000fe0: PUSH1 0x40
00000fe2: MLOAD
00000fe3: DUP1
00000fe4: SWAP2
00000fe5: SUB
00000fe6: SWAP1
00000fe7: REVERT
00000fe8: JUMPDEST
00000fe9: DUP2
00000fea: PUSH2 0x101f
00000fed: JUMPI
00000fee: PUSH1 0x40
00000ff0: MLOAD
00000ff1: PUSH32 0xc377136000000000000000000000000000000000000000000000000000000000
00001012: DUP2
00001013: MSTORE
00001014: PUSH1 0x04
00001016: ADD
00001017: PUSH1 0x40
00001019: MLOAD
0000101a: DUP1
0000101b: SWAP2
0000101c: SUB
0000101d: SWAP1
0000101e: REVERT
0000101f: JUMPDEST
00001020: PUSH2 0x015f
00001023: SLOAD
00001024: PUSH2 0x102b
00001027: PUSH2 0x1d93
0000102a: JUMP
0000102b: JUMPDEST
0000102c: EQ
0000102d: PUSH2 0x1062
00001030: JUMPI
00001031: PUSH1 0x40
00001033: MLOAD
00001034: PUSH32 0xddb5de5e00000000000000000000000000000000000000000000000000000000
00001055: DUP2
00001056: MSTORE
00001057: PUSH1 0x04
00001059: ADD
0000105a: PUSH1 0x40
0000105c: MLOAD
0000105d: DUP1
0000105e: SWAP2
0000105f: SUB
00001060: SWAP1
00001061: REVERT
00001062: JUMPDEST
00001063: PUSH1 0x00
00001065: PUSH2 0x106d
00001068: DUP5
00001069: PUSH2 0x1a21
0000106c: JUMP
0000106d: JUMPDEST
0000106e: SWAP1
0000106f: POP
00001070: PUSH1 0x00
00001072: PUSH2 0x107b
00001075: DUP3
00001076: DUP6
00001077: PUSH2 0x1e1f
0000107a: JUMP
0000107b: JUMPDEST
0000107c: PUSH1 0x01
0000107e: PUSH1 0x01
00001080: PUSH1 0xa0
00001082: SHL
00001083: SUB
00001084: DUP7
00001085: AND
00001086: PUSH1 0x00
00001088: SWAP1
00001089: DUP2
0000108a: MSTORE
0000108b: PUSH2 0x0167
0000108e: PUSH1 0x20
00001090: MSTORE
00001091: PUSH1 0x40
00001093: SWAP1
00001094: KECCAK256
00001095: SLOAD
00001096: SWAP1
00001097: SWAP2
00001098: POP
00001099: PUSH1 0xff
0000109b: AND
0000109c: ISZERO
0000109d: PUSH2 0x10aa
000010a0: JUMPI
000010a1: PUSH2 0x10aa
000010a4: DUP6
000010a5: DUP3
000010a6: PUSH2 0x1e54
000010a9: JUMP
000010aa: JUMPDEST
000010ab: PUSH1 0x01
000010ad: PUSH1 0x01
000010af: PUSH1 0xa0
000010b1: SHL
000010b2: SUB
000010b3: DUP6
000010b4: AND
000010b5: PUSH1 0x00
000010b7: SWAP1
000010b8: DUP2
000010b9: MSTORE
000010ba: PUSH2 0x0160
000010bd: PUSH1 0x20
000010bf: MSTORE
000010c0: PUSH1 0x40
000010c2: SWAP1
000010c3: KECCAK256
000010c4: SLOAD
000010c5: PUSH2 0x10cf
000010c8: SWAP1
000010c9: DUP6
000010ca: SWAP1
000010cb: PUSH2 0x303e
000010ce: JUMP
000010cf: JUMPDEST
000010d0: PUSH1 0x01
000010d2: PUSH1 0x01
000010d4: PUSH1 0xa0
000010d6: SHL
000010d7: SUB
000010d8: DUP7
000010d9: AND
000010da: PUSH1 0x00
000010dc: DUP2
000010dd: DUP2
000010de: MSTORE
000010df: PUSH2 0x0160
000010e2: PUSH1 0x20
000010e4: MSTORE
000010e5: PUSH1 0x40
000010e7: SWAP1
000010e8: KECCAK256
000010e9: SWAP2
000010ea: SWAP1
000010eb: SWAP2
000010ec: SSTORE
000010ed: PUSH2 0x10f7
000010f0: SWAP1
000010f1: DUP8
000010f2: DUP4
000010f3: PUSH2 0x1f3a
000010f6: JUMP
000010f7: JUMPDEST
000010f8: DUP5
000010f9: PUSH1 0x01
000010fb: PUSH1 0x01
000010fd: PUSH1 0xa0
000010ff: SHL
00001100: SUB
00001101: AND
00001102: DUP7
00001103: PUSH1 0x01
00001105: PUSH1 0x01
00001107: PUSH1 0xa0
00001109: SHL
0000110a: SUB
0000110b: AND
0000110c: PUSH1 0x00
0000110e: SHL
0000110f: PUSH32 0x028ab133c73f6c00ad0c5896ef40eff18378acd3d7f2ecf573c2706582bf73bf
00001130: DUP4
00001131: PUSH1 0x40
00001133: MLOAD
00001134: PUSH2 0x113f
00001137: SWAP2
00001138: DUP2
00001139: MSTORE
0000113a: PUSH1 0x20
0000113c: ADD
0000113d: SWAP1
0000113e: JUMP
0000113f: JUMPDEST
00001140: PUSH1 0x40
00001142: MLOAD
00001143: DUP1
00001144: SWAP2
00001145: SUB
00001146: SWAP1
00001147: LOG3
00001148: POP
00001149: POP
0000114a: POP
0000114b: POP
0000114c: POP
0000114d: POP
0000114e: JUMP
0000114f: JUMPDEST
00001150: PUSH32 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a
00001171: PUSH2 0x1179
00001174: DUP2
00001175: PUSH2 0x1613
00001178: JUMP
00001179: JUMPDEST
0000117a: PUSH2 0x0aaf
0000117d: PUSH2 0x1fe3
00001180: JUMP
00001181: JUMPDEST
00001182: PUSH32 0x7e5b1c957d4df4bad29cdaceffe50f28f282a0d5096601b958917550d4b2e016
000011a3: PUSH2 0x11ab
000011a6: DUP2
000011a7: PUSH2 0x1613
000011aa: JUMP
000011ab: JUMPDEST
000011ac: PUSH1 0x01
000011ae: PUSH1 0x01
000011b0: PUSH1 0xa0
000011b2: SHL
000011b3: SUB
000011b4: DUP4
000011b5: AND
000011b6: PUSH1 0x00
000011b8: DUP2
000011b9: DUP2
000011ba: MSTORE
000011bb: PUSH2 0x0167
000011be: PUSH1 0x20
000011c0: SWAP1
000011c1: DUP2
000011c2: MSTORE
000011c3: PUSH1 0x40
000011c5: SWAP2
000011c6: DUP3
000011c7: SWAP1
000011c8: KECCAK256
000011c9: DUP1
000011ca: SLOAD
000011cb: PUSH1 0xff
000011cd: NOT
000011ce: AND
000011cf: DUP7
000011d0: ISZERO
000011d1: ISZERO
000011d2: SWAP1
000011d3: DUP2
000011d4: OR
000011d5: SWAP1
000011d6: SWAP2
000011d7: SSTORE
000011d8: SWAP2
000011d9: MLOAD
000011da: SWAP2
000011db: DUP3
000011dc: MSTORE
000011dd: PUSH32 0x8ac921afb63648e691280b72420b87f54bbdfebd4ba46618e07dc0231542e837
000011fe: SWAP2
000011ff: ADD
00001200: PUSH1 0x40
00001202: MLOAD
00001203: DUP1
00001204: SWAP2
00001205: SUB
00001206: SWAP1
00001207: LOG2
00001208: POP
00001209: POP
0000120a: POP
0000120b: JUMP
0000120c: JUMPDEST
0000120d: PUSH1 0x00
0000120f: PUSH2 0x1217
00001212: DUP2
00001213: PUSH2 0x1613
00001216: JUMP
00001217: JUMPDEST
00001218: POP
00001219: PUSH1 0x01
0000121b: PUSH1 0x01
0000121d: PUSH1 0xa0
0000121f: SHL
00001220: SUB
00001221: SWAP1
00001222: SWAP2
00001223: AND
00001224: PUSH1 0x00
00001226: SWAP1
00001227: DUP2
00001228: MSTORE
00001229: PUSH2 0x0161
0000122c: PUSH1 0x20
0000122e: MSTORE
0000122f: PUSH1 0x40
00001231: SWAP1
00001232: KECCAK256
00001233: SSTORE
00001234: JUMP
00001235: JUMPDEST
00001236: PUSH1 0x00
00001238: PUSH2 0x1240
0000123b: DUP2
0000123c: PUSH2 0x1613
0000123f: JUMP
00001240: JUMPDEST
00001241: POP
00001242: PUSH2 0x015e
00001245: DUP1
00001246: SLOAD
00001247: PUSH1 0xff
00001249: NOT
0000124a: AND
0000124b: SWAP2
0000124c: ISZERO
0000124d: ISZERO
0000124e: SWAP2
0000124f: SWAP1
00001250: SWAP2
00001251: OR
00001252: SWAP1
00001253: SSTORE
00001254: JUMP
00001255: JUMPDEST
00001256: PUSH1 0x00
00001258: SLOAD
00001259: PUSH2 0x0100
0000125c: SWAP1
0000125d: DIV
0000125e: PUSH1 0xff
00001260: AND
00001261: ISZERO
00001262: DUP1
00001263: DUP1
00001264: ISZERO
00001265: PUSH2 0x1275
00001268: JUMPI
00001269: POP
0000126a: PUSH1 0x00
0000126c: SLOAD
0000126d: PUSH1 0x01
0000126f: PUSH1 0xff
00001271: SWAP1
00001272: SWAP2
00001273: AND
00001274: LT
00001275: JUMPDEST
00001276: DUP1
00001277: PUSH2 0x128f
0000127a: JUMPI
0000127b: POP
0000127c: ADDRESS
0000127d: EXTCODESIZE
0000127e: ISZERO
0000127f: DUP1
00001280: ISZERO
00001281: PUSH2 0x128f
00001284: JUMPI
00001285: POP
00001286: PUSH1 0x00
00001288: SLOAD
00001289: PUSH1 0xff
0000128b: AND
0000128c: PUSH1 0x01
0000128e: EQ
0000128f: JUMPDEST
00001290: PUSH2 0x1301
00001293: JUMPI
00001294: PUSH1 0x40
00001296: MLOAD
00001297: PUSH3 0x461bcd
0000129b: PUSH1 0xe5
0000129d: SHL
0000129e: DUP2
0000129f: MSTORE
000012a0: PUSH1 0x20
000012a2: PUSH1 0x04
000012a4: DUP3
000012a5: ADD
000012a6: MSTORE
000012a7: PUSH1 0x2e
000012a9: PUSH1 0x24
000012ab: DUP3
000012ac: ADD
000012ad: MSTORE
000012ae: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
000012cf: PUSH1 0x44
000012d1: DUP3
000012d2: ADD
000012d3: MSTORE
000012d4: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
000012f5: PUSH1 0x64
000012f7: DUP3
000012f8: ADD
000012f9: MSTORE
000012fa: PUSH1 0x84
000012fc: ADD
000012fd: PUSH2 0x0901
00001300: JUMP
00001301: JUMPDEST
00001302: PUSH1 0x00
00001304: DUP1
00001305: SLOAD
00001306: PUSH1 0xff
00001308: NOT
00001309: AND
0000130a: PUSH1 0x01
0000130c: OR
0000130d: SWAP1
0000130e: SSTORE
0000130f: DUP1
00001310: ISZERO
00001311: PUSH2 0x1341
00001314: JUMPI
00001315: PUSH1 0x00
00001317: DUP1
00001318: SLOAD
00001319: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
0000133a: AND
0000133b: PUSH2 0x0100
0000133e: OR
0000133f: SWAP1
00001340: SSTORE
00001341: JUMPDEST
00001342: PUSH2 0x134a
00001345: DUP3
00001346: PUSH2 0x2020
00001349: JUMP
0000134a: JUMPDEST
0000134b: PUSH2 0x1352
0000134e: PUSH2 0x20a6
00001351: JUMP
00001352: JUMPDEST
00001353: PUSH2 0x135a
00001356: PUSH2 0x212b
00001359: JUMP
0000135a: JUMPDEST
0000135b: PUSH2 0x1362
0000135e: PUSH2 0x212b
00001361: JUMP
00001362: JUMPDEST
00001363: PUSH2 0x136d
00001366: PUSH1 0x00
00001368: CALLER
00001369: PUSH2 0x161d
0000136c: JUMP
0000136d: JUMPDEST
0000136e: PUSH2 0x1397
00001371: PUSH32 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a
00001392: CALLER
00001393: PUSH2 0x161d
00001396: JUMP
00001397: JUMPDEST
00001398: PUSH2 0x13c1
0000139b: PUSH32 0x7e5b1c957d4df4bad29cdaceffe50f28f282a0d5096601b958917550d4b2e016
000013bc: CALLER
000013bd: PUSH2 0x161d
000013c0: JUMP
000013c1: JUMPDEST
000013c2: DUP1
000013c3: ISZERO
000013c4: PUSH2 0x0859
000013c7: JUMPI
000013c8: PUSH1 0x00
000013ca: DUP1
000013cb: SLOAD
000013cc: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
000013ed: AND
000013ee: SWAP1
000013ef: SSTORE
000013f0: PUSH1 0x40
000013f2: MLOAD
000013f3: PUSH1 0x01
000013f5: DUP2
000013f6: MSTORE
000013f7: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
00001418: SWAP1
00001419: PUSH1 0x20
0000141b: ADD
0000141c: PUSH1 0x40
0000141e: MLOAD
0000141f: DUP1
00001420: SWAP2
00001421: SUB
00001422: SWAP1
00001423: LOG1
00001424: POP
00001425: POP
00001426: JUMP
00001427: JUMPDEST
00001428: PUSH1 0x00
0000142a: PUSH2 0x1432
0000142d: DUP2
0000142e: PUSH2 0x1613
00001431: JUMP
00001432: JUMPDEST
00001433: POP
00001434: PUSH2 0x015f
00001437: SSTORE
00001438: JUMP
00001439: JUMPDEST
0000143a: PUSH1 0x00
0000143c: DUP3
0000143d: DUP2
0000143e: MSTORE
0000143f: PUSH1 0xc8
00001441: PUSH1 0x20
00001443: MSTORE
00001444: PUSH1 0x40
00001446: SWAP1
00001447: KECCAK256
00001448: PUSH1 0x01
0000144a: ADD
0000144b: SLOAD
0000144c: PUSH2 0x1454
0000144f: DUP2
00001450: PUSH2 0x1613
00001453: JUMP
00001454: JUMPDEST
00001455: PUSH2 0x0882
00001458: DUP4
00001459: DUP4
0000145a: PUSH2 0x16bf
0000145d: JUMP
0000145e: JUMPDEST
0000145f: PUSH2 0x1466
00001462: PUSH2 0x194e
00001465: JUMP
00001466: JUMPDEST
00001467: PUSH2 0x015f
0000146a: SLOAD
0000146b: PUSH2 0x14a0
0000146e: JUMPI
0000146f: PUSH1 0x40
00001471: MLOAD
00001472: PUSH32 0xbb2f9c9d00000000000000000000000000000000000000000000000000000000
00001493: DUP2
00001494: MSTORE
00001495: PUSH1 0x04
00001497: ADD
00001498: PUSH1 0x40
0000149a: MLOAD
0000149b: DUP1
0000149c: SWAP2
0000149d: SUB
0000149e: SWAP1
0000149f: REVERT
000014a0: JUMPDEST
000014a1: PUSH1 0x00
000014a3: PUSH2 0x14ab
000014a6: DUP4
000014a7: PUSH2 0x1a21
000014aa: JUMP
000014ab: JUMPDEST
000014ac: SWAP1
000014ad: POP
000014ae: PUSH1 0x00
000014b0: PUSH2 0x14b9
000014b3: DUP3
000014b4: DUP5
000014b5: PUSH2 0x1b1d
000014b8: JUMP
000014b9: JUMPDEST
000014ba: PUSH2 0x015f
000014bd: SLOAD
000014be: SWAP1
000014bf: SWAP2
000014c0: POP
000014c1: PUSH1 0x00
000014c3: SWAP1
000014c4: DUP2
000014c5: PUSH1 0x40
000014c7: DUP1
000014c8: MLOAD
000014c9: PUSH1 0x20
000014cb: DUP2
000014cc: ADD
000014cd: SWAP4
000014ce: SWAP1
000014cf: SWAP4
000014d0: MSTORE
000014d1: DUP3
000014d2: ADD
000014d3: MSTORE
000014d4: PUSH1 0x01
000014d6: PUSH1 0x01
000014d8: PUSH1 0xa0
000014da: SHL
000014db: SUB
000014dc: DUP7
000014dd: AND
000014de: PUSH1 0x60
000014e0: DUP3
000014e1: ADD
000014e2: MSTORE
000014e3: PUSH1 0x00
000014e5: PUSH1 0x80
000014e7: DUP3
000014e8: ADD
000014e9: MSTORE
000014ea: CALLER
000014eb: PUSH1 0xa0
000014ed: DUP3
000014ee: ADD
000014ef: MSTORE
000014f0: PUSH1 0xc0
000014f2: DUP2
000014f3: ADD
000014f4: DUP8
000014f5: SWAP1
000014f6: MSTORE
000014f7: PUSH1 0xe0
000014f9: DUP2
000014fa: ADD
000014fb: DUP4
000014fc: SWAP1
000014fd: MSTORE
000014fe: PUSH1 0xff
00001500: DUP5
00001501: AND
00001502: PUSH2 0x0100
00001505: DUP3
00001506: ADD
00001507: MSTORE
00001508: PUSH2 0x0120
0000150b: ADD
0000150c: PUSH1 0x40
0000150e: MLOAD
0000150f: PUSH1 0x20
00001511: DUP2
00001512: DUP4
00001513: SUB
00001514: SUB
00001515: DUP2
00001516: MSTORE
00001517: SWAP1
00001518: PUSH1 0x40
0000151a: MSTORE
0000151b: SWAP1
0000151c: POP
0000151d: PUSH2 0x1528
00001520: DUP6
00001521: DUP6
00001522: DUP5
00001523: DUP5
00001524: PUSH2 0x1bad
00001527: JUMP
00001528: JUMPDEST
00001529: POP
0000152a: POP
0000152b: POP
0000152c: POP
0000152d: POP
0000152e: POP
0000152f: JUMP
00001530: JUMPDEST
00001531: PUSH32 0x7e5b1c957d4df4bad29cdaceffe50f28f282a0d5096601b958917550d4b2e016
00001552: PUSH2 0x155a
00001555: DUP2
00001556: PUSH2 0x1613
00001559: JUMP
0000155a: JUMPDEST
0000155b: PUSH1 0x01
0000155d: PUSH1 0x01
0000155f: PUSH1 0xa0
00001561: SHL
00001562: SUB
00001563: DUP5
00001564: AND
00001565: PUSH1 0x00
00001567: SWAP1
00001568: DUP2
00001569: MSTORE
0000156a: PUSH2 0x0165
0000156d: PUSH1 0x20
0000156f: SWAP1
00001570: DUP2
00001571: MSTORE
00001572: PUSH1 0x40
00001574: DUP1
00001575: DUP4
00001576: KECCAK256
00001577: SLOAD
00001578: PUSH2 0x0163
0000157b: SWAP1
0000157c: SWAP3
0000157d: MSTORE
0000157e: SWAP1
0000157f: SWAP2
00001580: KECCAK256
00001581: DUP4
00001582: SWAP1
00001583: SSTORE
00001584: TIMESTAMP
00001585: DUP2
00001586: LT
00001587: ISZERO
00001588: PUSH2 0x15b6
0000158b: JUMPI
0000158c: PUSH1 0x01
0000158e: PUSH1 0x01
00001590: PUSH1 0xa0
00001592: SHL
00001593: SUB
00001594: DUP6
00001595: AND
00001596: PUSH1 0x00
00001598: SWAP1
00001599: DUP2
0000159a: MSTORE
0000159b: PUSH2 0x0165
0000159e: PUSH1 0x20
000015a0: SWAP1
000015a1: DUP2
000015a2: MSTORE
000015a3: PUSH1 0x40
000015a5: DUP1
000015a6: DUP4
000015a7: KECCAK256
000015a8: TIMESTAMP
000015a9: DUP8
000015aa: ADD
000015ab: SWAP1
000015ac: SSTORE
000015ad: PUSH2 0x0164
000015b0: SWAP1
000015b1: SWAP2
000015b2: MSTORE
000015b3: DUP2
000015b4: KECCAK256
000015b5: SSTORE
000015b6: JUMPDEST
000015b7: PUSH1 0x01
000015b9: PUSH1 0x01
000015bb: PUSH1 0xa0
000015bd: SHL
000015be: SUB
000015bf: DUP6
000015c0: AND
000015c1: PUSH1 0x00
000015c3: DUP2
000015c4: DUP2
000015c5: MSTORE
000015c6: PUSH2 0x0166
000015c9: PUSH1 0x20
000015cb: MSTORE
000015cc: PUSH1 0x40
000015ce: SWAP1
000015cf: DUP2
000015d0: SWAP1
000015d1: KECCAK256
000015d2: DUP7
000015d3: SWAP1
000015d4: SSTORE
000015d5: MLOAD
000015d6: PUSH32 0xc5f291321b52c0a880f53a520482ae7920b1e570181bea4971307e9ba13026de
000015f7: SWAP1
000015f8: PUSH2 0x1604
000015fb: SWAP1
000015fc: DUP8
000015fd: DUP2
000015fe: MSTORE
000015ff: PUSH1 0x20
00001601: ADD
00001602: SWAP1
00001603: JUMP
00001604: JUMPDEST
00001605: PUSH1 0x40
00001607: MLOAD
00001608: DUP1
00001609: SWAP2
0000160a: SUB
0000160b: SWAP1
0000160c: LOG2
0000160d: POP
0000160e: POP
0000160f: POP
00001610: POP
00001611: POP
00001612: JUMP
00001613: JUMPDEST
00001614: PUSH2 0x0aaf
00001617: DUP2
00001618: CALLER
00001619: PUSH2 0x21a8
0000161c: JUMP
0000161d: JUMPDEST
0000161e: PUSH1 0x00
00001620: DUP3
00001621: DUP2
00001622: MSTORE
00001623: PUSH1 0xc8
00001625: PUSH1 0x20
00001627: SWAP1
00001628: DUP2
00001629: MSTORE
0000162a: PUSH1 0x40
0000162c: DUP1
0000162d: DUP4
0000162e: KECCAK256
0000162f: PUSH1 0x01
00001631: PUSH1 0x01
00001633: PUSH1 0xa0
00001635: SHL
00001636: SUB
00001637: DUP6
00001638: AND
00001639: DUP5
0000163a: MSTORE
0000163b: SWAP1
0000163c: SWAP2
0000163d: MSTORE
0000163e: SWAP1
0000163f: KECCAK256
00001640: SLOAD
00001641: PUSH1 0xff
00001643: AND
00001644: PUSH2 0x0859
00001647: JUMPI
00001648: PUSH1 0x00
0000164a: DUP3
0000164b: DUP2
0000164c: MSTORE
0000164d: PUSH1 0xc8
0000164f: PUSH1 0x20
00001651: SWAP1
00001652: DUP2
00001653: MSTORE
00001654: PUSH1 0x40
00001656: DUP1
00001657: DUP4
00001658: KECCAK256
00001659: PUSH1 0x01
0000165b: PUSH1 0x01
0000165d: PUSH1 0xa0
0000165f: SHL
00001660: SUB
00001661: DUP6
00001662: AND
00001663: DUP5
00001664: MSTORE
00001665: SWAP1
00001666: SWAP2
00001667: MSTORE
00001668: SWAP1
00001669: KECCAK256
0000166a: DUP1
0000166b: SLOAD
0000166c: PUSH1 0xff
0000166e: NOT
0000166f: AND
00001670: PUSH1 0x01
00001672: OR
00001673: SWAP1
00001674: SSTORE
00001675: PUSH2 0x167b
00001678: CALLER
00001679: SWAP1
0000167a: JUMP
0000167b: JUMPDEST
0000167c: PUSH1 0x01
0000167e: PUSH1 0x01
00001680: PUSH1 0xa0
00001682: SHL
00001683: SUB
00001684: AND
00001685: DUP2
00001686: PUSH1 0x01
00001688: PUSH1 0x01
0000168a: PUSH1 0xa0
0000168c: SHL
0000168d: SUB
0000168e: AND
0000168f: DUP4
00001690: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d
000016b1: PUSH1 0x40
000016b3: MLOAD
000016b4: PUSH1 0x40
000016b6: MLOAD
000016b7: DUP1
000016b8: SWAP2
000016b9: SUB
000016ba: SWAP1
000016bb: LOG4
000016bc: POP
000016bd: POP
000016be: JUMP
000016bf: JUMPDEST
000016c0: PUSH1 0x00
000016c2: DUP3
000016c3: DUP2
000016c4: MSTORE
000016c5: PUSH1 0xc8
000016c7: PUSH1 0x20
000016c9: SWAP1
000016ca: DUP2
000016cb: MSTORE
000016cc: PUSH1 0x40
000016ce: DUP1
000016cf: DUP4
000016d0: KECCAK256
000016d1: PUSH1 0x01
000016d3: PUSH1 0x01
000016d5: PUSH1 0xa0
000016d7: SHL
000016d8: SUB
000016d9: DUP6
000016da: AND
000016db: DUP5
000016dc: MSTORE
000016dd: SWAP1
000016de: SWAP2
000016df: MSTORE
000016e0: SWAP1
000016e1: KECCAK256
000016e2: SLOAD
000016e3: PUSH1 0xff
000016e5: AND
000016e6: ISZERO
000016e7: PUSH2 0x0859
000016ea: JUMPI
000016eb: PUSH1 0x00
000016ed: DUP3
000016ee: DUP2
000016ef: MSTORE
000016f0: PUSH1 0xc8
000016f2: PUSH1 0x20
000016f4: SWAP1
000016f5: DUP2
000016f6: MSTORE
000016f7: PUSH1 0x40
000016f9: DUP1
000016fa: DUP4
000016fb: KECCAK256
000016fc: PUSH1 0x01
000016fe: PUSH1 0x01
00001700: PUSH1 0xa0
00001702: SHL
00001703: SUB
00001704: DUP6
00001705: AND
00001706: DUP1
00001707: DUP6
00001708: MSTORE
00001709: SWAP3
0000170a: MSTORE
0000170b: DUP1
0000170c: DUP4
0000170d: KECCAK256
0000170e: DUP1
0000170f: SLOAD
00001710: PUSH1 0xff
00001712: NOT
00001713: AND
00001714: SWAP1
00001715: SSTORE
00001716: MLOAD
00001717: CALLER
00001718: SWAP3
00001719: DUP6
0000171a: SWAP2
0000171b: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b
0000173c: SWAP2
0000173d: SWAP1
0000173e: LOG4
0000173f: POP
00001740: POP
00001741: JUMP
00001742: JUMPDEST
00001743: PUSH1 0x00
00001745: PUSH2 0x0859
00001748: DUP2
00001749: PUSH2 0x1613
0000174c: JUMP
0000174d: JUMPDEST
0000174e: PUSH32 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143
0000176f: SLOAD
00001770: PUSH1 0xff
00001772: AND
00001773: ISZERO
00001774: PUSH2 0x1780
00001777: JUMPI
00001778: PUSH2 0x0882
0000177b: DUP4
0000177c: PUSH2 0x221d
0000177f: JUMP
00001780: JUMPDEST
00001781: DUP3
00001782: PUSH1 0x01
00001784: PUSH1 0x01
00001786: PUSH1 0xa0
00001788: SHL
00001789: SUB
0000178a: AND
0000178b: PUSH4 0x52d1902d
00001790: PUSH1 0x40
00001792: MLOAD
00001793: DUP2
00001794: PUSH4 0xffffffff
00001799: AND
0000179a: PUSH1 0xe0
0000179c: SHL
0000179d: DUP2
0000179e: MSTORE
0000179f: PUSH1 0x04
000017a1: ADD
000017a2: PUSH1 0x20
000017a4: PUSH1 0x40
000017a6: MLOAD
000017a7: DUP1
000017a8: DUP4
000017a9: SUB
000017aa: DUP2
000017ab: DUP7
000017ac: DUP1
000017ad: EXTCODESIZE
000017ae: ISZERO
000017af: DUP1
000017b0: ISZERO
000017b1: PUSH2 0x17b9
000017b4: JUMPI
000017b5: PUSH1 0x00
000017b7: DUP1
000017b8: REVERT
000017b9: JUMPDEST
000017ba: POP
000017bb: GAS
000017bc: STATICCALL
000017bd: SWAP3
000017be: POP
000017bf: POP
000017c0: POP
000017c1: DUP1
000017c2: ISZERO
000017c3: PUSH2 0x17e9
000017c6: JUMPI
000017c7: POP
000017c8: PUSH1 0x40
000017ca: DUP1
000017cb: MLOAD
000017cc: PUSH1 0x1f
000017ce: RETURNDATASIZE
000017cf: SWAP1
000017d0: DUP2
000017d1: ADD
000017d2: PUSH1 0x1f
000017d4: NOT
000017d5: AND
000017d6: DUP3
000017d7: ADD
000017d8: SWAP1
000017d9: SWAP3
000017da: MSTORE
000017db: PUSH2 0x17e6
000017de: SWAP2
000017df: DUP2
000017e0: ADD
000017e1: SWAP1
000017e2: PUSH2 0x3055
000017e5: JUMP
000017e6: JUMPDEST
000017e7: PUSH1 0x01
000017e9: JUMPDEST
000017ea: PUSH2 0x185b
000017ed: JUMPI
000017ee: PUSH1 0x40
000017f0: MLOAD
000017f1: PUSH3 0x461bcd
000017f5: PUSH1 0xe5
000017f7: SHL
000017f8: DUP2
000017f9: MSTORE
000017fa: PUSH1 0x20
000017fc: PUSH1 0x04
000017fe: DUP3
000017ff: ADD
00001800: MSTORE
00001801: PUSH1 0x2e
00001803: PUSH1 0x24
00001805: DUP3
00001806: ADD
00001807: MSTORE
00001808: PUSH32 0x45524331393637557067726164653a206e657720696d706c656d656e74617469
00001829: PUSH1 0x44
0000182b: DUP3
0000182c: ADD
0000182d: MSTORE
0000182e: PUSH32 0x6f6e206973206e6f742055555053000000000000000000000000000000000000
0000184f: PUSH1 0x64
00001851: DUP3
00001852: ADD
00001853: MSTORE
00001854: PUSH1 0x84
00001856: ADD
00001857: PUSH2 0x0901
0000185a: JUMP
0000185b: JUMPDEST
0000185c: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
0000187d: DUP2
0000187e: EQ
0000187f: PUSH2 0x18f0
00001882: JUMPI
00001883: PUSH1 0x40
00001885: MLOAD
00001886: PUSH3 0x461bcd
0000188a: PUSH1 0xe5
0000188c: SHL
0000188d: DUP2
0000188e: MSTORE
0000188f: PUSH1 0x20
00001891: PUSH1 0x04
00001893: DUP3
00001894: ADD
00001895: MSTORE
00001896: PUSH1 0x29
00001898: PUSH1 0x24
0000189a: DUP3
0000189b: ADD
0000189c: MSTORE
0000189d: PUSH32 0x45524331393637557067726164653a20756e737570706f727465642070726f78
000018be: PUSH1 0x44
000018c0: DUP3
000018c1: ADD
000018c2: MSTORE
000018c3: PUSH32 0x6961626c65555549440000000000000000000000000000000000000000000000
000018e4: PUSH1 0x64
000018e6: DUP3
000018e7: ADD
000018e8: MSTORE
000018e9: PUSH1 0x84
000018eb: ADD
000018ec: PUSH2 0x0901
000018ef: JUMP
000018f0: JUMPDEST
000018f1: POP
000018f2: PUSH2 0x0882
000018f5: DUP4
000018f6: DUP4
000018f7: DUP4
000018f8: PUSH2 0x22f3
000018fb: JUMP
000018fc: JUMPDEST
000018fd: PUSH2 0x1904
00001900: PUSH2 0x231e
00001903: JUMP
00001904: JUMPDEST
00001905: PUSH1 0x64
00001907: DUP1
00001908: SLOAD
00001909: PUSH1 0xff
0000190b: NOT
0000190c: AND
0000190d: SWAP1
0000190e: SSTORE
0000190f: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa
00001930: CALLER
00001931: JUMPDEST
00001932: PUSH1 0x40
00001934: MLOAD
00001935: PUSH1 0x01
00001937: PUSH1 0x01
00001939: PUSH1 0xa0
0000193b: SHL
0000193c: SUB
0000193d: SWAP1
0000193e: SWAP2
0000193f: AND
00001940: DUP2
00001941: MSTORE
00001942: PUSH1 0x20
00001944: ADD
00001945: PUSH1 0x40
00001947: MLOAD
00001948: DUP1
00001949: SWAP2
0000194a: SUB
0000194b: SWAP1
0000194c: LOG1
0000194d: JUMP
0000194e: JUMPDEST
0000194f: PUSH1 0x64
00001951: SLOAD
00001952: PUSH1 0xff
00001954: AND
00001955: ISZERO
00001956: PUSH2 0x19a1
00001959: JUMPI
0000195a: PUSH1 0x40
0000195c: MLOAD
0000195d: PUSH3 0x461bcd
00001961: PUSH1 0xe5
00001963: SHL
00001964: DUP2
00001965: MSTORE
00001966: PUSH1 0x20
00001968: PUSH1 0x04
0000196a: DUP3
0000196b: ADD
0000196c: MSTORE
0000196d: PUSH1 0x10
0000196f: PUSH1 0x24
00001971: DUP3
00001972: ADD
00001973: MSTORE
00001974: PUSH32 0x5061757361626c653a2070617573656400000000000000000000000000000000
00001995: PUSH1 0x44
00001997: DUP3
00001998: ADD
00001999: MSTORE
0000199a: PUSH1 0x64
0000199c: ADD
0000199d: PUSH2 0x0901
000019a0: JUMP
000019a1: JUMPDEST
000019a2: JUMP
000019a3: JUMPDEST
000019a4: PUSH1 0x00
000019a6: SLOAD
000019a7: PUSH1 0x40
000019a9: MLOAD
000019aa: PUSH32 0x23c640e700000000000000000000000000000000000000000000000000000000
000019cb: DUP2
000019cc: MSTORE
000019cd: PUSH3 0x010000
000019d1: SWAP1
000019d2: SWAP2
000019d3: DIV
000019d4: PUSH1 0x01
000019d6: PUSH1 0x01
000019d8: PUSH1 0xa0
000019da: SHL
000019db: SUB
000019dc: AND
000019dd: SWAP1
000019de: PUSH4 0x23c640e7
000019e3: SWAP1
000019e4: PUSH2 0x19f3
000019e7: SWAP1
000019e8: DUP6
000019e9: SWAP1
000019ea: DUP6
000019eb: SWAP1
000019ec: PUSH1 0x04
000019ee: ADD
000019ef: PUSH2 0x306e
000019f2: JUMP
000019f3: JUMPDEST
000019f4: PUSH1 0x00
000019f6: PUSH1 0x40
000019f8: MLOAD
000019f9: DUP1
000019fa: DUP4
000019fb: SUB
000019fc: DUP2
000019fd: PUSH1 0x00
000019ff: DUP8
00001a00: DUP1
00001a01: EXTCODESIZE
00001a02: ISZERO
00001a03: DUP1
00001a04: ISZERO
00001a05: PUSH2 0x1a0d
00001a08: JUMPI
00001a09: PUSH1 0x00
00001a0b: DUP1
00001a0c: REVERT
00001a0d: JUMPDEST
00001a0e: POP
00001a0f: GAS
00001a10: CALL
00001a11: ISZERO
00001a12: DUP1
00001a13: ISZERO
00001a14: PUSH2 0x1528
00001a17: JUMPI
00001a18: RETURNDATASIZE
00001a19: PUSH1 0x00
00001a1b: DUP1
00001a1c: RETURNDATACOPY
00001a1d: RETURNDATASIZE
00001a1e: PUSH1 0x00
00001a20: REVERT
00001a21: JUMPDEST
00001a22: PUSH1 0x01
00001a24: PUSH1 0x01
00001a26: PUSH1 0xa0
00001a28: SHL
00001a29: SUB
00001a2a: DUP2
00001a2b: AND
00001a2c: PUSH1 0x00
00001a2e: SWAP1
00001a2f: DUP2
00001a30: MSTORE
00001a31: PUSH2 0x0162
00001a34: PUSH1 0x20
00001a36: MSTORE
00001a37: PUSH1 0x40
00001a39: DUP2
00001a3a: KECCAK256
00001a3b: SLOAD
00001a3c: DUP1
00001a3d: PUSH2 0x1b0a
00001a40: JUMPI
00001a41: DUP3
00001a42: PUSH1 0x01
00001a44: PUSH1 0x01
00001a46: PUSH1 0xa0
00001a48: SHL
00001a49: SUB
00001a4a: AND
00001a4b: PUSH4 0x313ce567
00001a50: PUSH1 0x40
00001a52: MLOAD
00001a53: DUP2
00001a54: PUSH4 0xffffffff
00001a59: AND
00001a5a: PUSH1 0xe0
00001a5c: SHL
00001a5d: DUP2
00001a5e: MSTORE
00001a5f: PUSH1 0x04
00001a61: ADD
00001a62: PUSH1 0x20
00001a64: PUSH1 0x40
00001a66: MLOAD
00001a67: DUP1
00001a68: DUP4
00001a69: SUB
00001a6a: DUP2
00001a6b: DUP7
00001a6c: DUP1
00001a6d: EXTCODESIZE
00001a6e: ISZERO
00001a6f: DUP1
00001a70: ISZERO
00001a71: PUSH2 0x1a79
00001a74: JUMPI
00001a75: PUSH1 0x00
00001a77: DUP1
00001a78: REVERT
00001a79: JUMPDEST
00001a7a: POP
00001a7b: GAS
00001a7c: STATICCALL
00001a7d: SWAP3
00001a7e: POP
00001a7f: POP
00001a80: POP
00001a81: DUP1
00001a82: ISZERO
00001a83: PUSH2 0x1aa9
00001a86: JUMPI
00001a87: POP
00001a88: PUSH1 0x40
00001a8a: DUP1
00001a8b: MLOAD
00001a8c: PUSH1 0x1f
00001a8e: RETURNDATASIZE
00001a8f: SWAP1
00001a90: DUP2
00001a91: ADD
00001a92: PUSH1 0x1f
00001a94: NOT
00001a95: AND
00001a96: DUP3
00001a97: ADD
00001a98: SWAP1
00001a99: SWAP3
00001a9a: MSTORE
00001a9b: PUSH2 0x1aa6
00001a9e: SWAP2
00001a9f: DUP2
00001aa0: ADD
00001aa1: SWAP1
00001aa2: PUSH2 0x3087
00001aa5: JUMP
00001aa6: JUMPDEST
00001aa7: PUSH1 0x01
00001aa9: JUMPDEST
00001aaa: PUSH2 0x1acf
00001aad: JUMPI
00001aae: POP
00001aaf: POP
00001ab0: PUSH1 0x01
00001ab2: PUSH1 0x01
00001ab4: PUSH1 0xa0
00001ab6: SHL
00001ab7: SUB
00001ab8: AND
00001ab9: PUSH1 0x00
00001abb: SWAP1
00001abc: DUP2
00001abd: MSTORE
00001abe: PUSH2 0x0162
00001ac1: PUSH1 0x20
00001ac3: MSTORE
00001ac4: PUSH1 0x40
00001ac6: DUP2
00001ac7: KECCAK256
00001ac8: PUSH1 0x00
00001aca: NOT
00001acb: SWAP1
00001acc: SSTORE
00001acd: SWAP1
00001ace: JUMP
00001acf: JUMPDEST
00001ad0: PUSH1 0xff
00001ad2: DUP2
00001ad3: AND
00001ad4: ISZERO
00001ad5: PUSH2 0x1ae1
00001ad8: JUMPI
00001ad9: DUP1
00001ada: PUSH1 0xff
00001adc: AND
00001add: PUSH2 0x1ae5
00001ae0: JUMP
00001ae1: JUMPDEST
00001ae2: PUSH1 0x00
00001ae4: NOT
00001ae5: JUMPDEST
00001ae6: PUSH1 0x01
00001ae8: PUSH1 0x01
00001aea: PUSH1 0xa0
00001aec: SHL
00001aed: SUB
00001aee: SWAP1
00001aef: SWAP5
00001af0: AND
00001af1: PUSH1 0x00
00001af3: SWAP1
00001af4: DUP2
00001af5: MSTORE
00001af6: PUSH2 0x0162
00001af9: PUSH1 0x20
00001afb: MSTORE
00001afc: PUSH1 0x40
00001afe: SWAP1
00001aff: KECCAK256
00001b00: SWAP4
00001b01: SWAP1
00001b02: SWAP4
00001b03: SSTORE
00001b04: POP
00001b05: SWAP1
00001b06: SWAP2
00001b07: SWAP1
00001b08: POP
00001b09: JUMP
00001b0a: JUMPDEST
00001b0b: PUSH1 0x00
00001b0d: NOT
00001b0e: DUP2
00001b0f: EQ
00001b10: ISZERO
00001b11: PUSH2 0x07f3
00001b14: JUMPI
00001b15: POP
00001b16: PUSH1 0x00
00001b18: SWAP3
00001b19: SWAP2
00001b1a: POP
00001b1b: POP
00001b1c: JUMP
00001b1d: JUMPDEST
00001b1e: PUSH1 0x00
00001b20: PUSH1 0x09
00001b22: DUP4
00001b23: PUSH1 0xff
00001b25: AND
00001b26: GT
00001b27: ISZERO
00001b28: PUSH2 0x1ba7
00001b2b: JUMPI
00001b2c: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7
00001b4d: PUSH1 0xff
00001b4f: DUP5
00001b50: AND
00001b51: ADD
00001b52: PUSH1 0x0a
00001b54: EXP
00001b55: DUP1
00001b56: DUP4
00001b57: DUP2
00001b58: PUSH2 0x1b63
00001b5b: JUMPI
00001b5c: PUSH2 0x1b63
00001b5f: PUSH2 0x30aa
00001b62: JUMP
00001b63: JUMPDEST
00001b64: MOD
00001b65: ISZERO
00001b66: PUSH2 0x1b9b
00001b69: JUMPI
00001b6a: PUSH1 0x40
00001b6c: MLOAD
00001b6d: PUSH32 0x2c5211c600000000000000000000000000000000000000000000000000000000
00001b8e: DUP2
00001b8f: MSTORE
00001b90: PUSH1 0x04
00001b92: ADD
00001b93: PUSH1 0x40
00001b95: MLOAD
00001b96: DUP1
00001b97: SWAP2
00001b98: SUB
00001b99: SWAP1
00001b9a: REVERT
00001b9b: JUMPDEST
00001b9c: DUP1
00001b9d: DUP4
00001b9e: DIV
00001b9f: JUMPDEST
00001ba0: SWAP2
00001ba1: POP
00001ba2: POP
00001ba3: PUSH2 0x07f3
00001ba6: JUMP
00001ba7: JUMPDEST
00001ba8: POP
00001ba9: SWAP2
00001baa: SWAP1
00001bab: POP
00001bac: JUMP
00001bad: JUMPDEST
00001bae: DUP2
00001baf: PUSH2 0x1be4
00001bb2: JUMPI
00001bb3: PUSH1 0x40
00001bb5: MLOAD
00001bb6: PUSH32 0x61ac6eba00000000000000000000000000000000000000000000000000000000
00001bd7: DUP2
00001bd8: MSTORE
00001bd9: PUSH1 0x04
00001bdb: ADD
00001bdc: PUSH1 0x40
00001bde: MLOAD
00001bdf: DUP1
00001be0: SWAP2
00001be1: SUB
00001be2: SWAP1
00001be3: REVERT
00001be4: JUMPDEST
00001be5: PUSH8 0xffffffffffffffff
00001bee: DUP3
00001bef: GT
00001bf0: ISZERO
00001bf1: PUSH2 0x1c26
00001bf4: JUMPI
00001bf5: PUSH1 0x40
00001bf7: MLOAD
00001bf8: PUSH32 0x2c5211c600000000000000000000000000000000000000000000000000000000
00001c19: DUP2
00001c1a: MSTORE
00001c1b: PUSH1 0x04
00001c1d: ADD
00001c1e: PUSH1 0x40
00001c20: MLOAD
00001c21: DUP1
00001c22: SWAP2
00001c23: SUB
00001c24: SWAP1
00001c25: REVERT
00001c26: JUMPDEST
00001c27: PUSH1 0x01
00001c29: PUSH1 0x01
00001c2b: PUSH1 0xa0
00001c2d: SHL
00001c2e: SUB
00001c2f: DUP5
00001c30: AND
00001c31: PUSH1 0x00
00001c33: SWAP1
00001c34: DUP2
00001c35: MSTORE
00001c36: PUSH2 0x0160
00001c39: PUSH1 0x20
00001c3b: MSTORE
00001c3c: PUSH1 0x40
00001c3e: DUP2
00001c3f: KECCAK256
00001c40: SLOAD
00001c41: PUSH2 0x1c4b
00001c44: SWAP1
00001c45: DUP5
00001c46: SWAP1
00001c47: PUSH2 0x30d9
00001c4a: JUMP
00001c4b: JUMPDEST
00001c4c: SWAP1
00001c4d: POP
00001c4e: PUSH8 0xffffffffffffffff
00001c57: DUP2
00001c58: GT
00001c59: ISZERO
00001c5a: PUSH2 0x1c8f
00001c5d: JUMPI
00001c5e: PUSH1 0x40
00001c60: MLOAD
00001c61: PUSH32 0xa9112a1e00000000000000000000000000000000000000000000000000000000
00001c82: DUP2
00001c83: MSTORE
00001c84: PUSH1 0x04
00001c86: ADD
00001c87: PUSH1 0x40
00001c89: MLOAD
00001c8a: DUP1
00001c8b: SWAP2
00001c8c: SUB
00001c8d: SWAP1
00001c8e: REVERT
00001c8f: JUMPDEST
00001c90: PUSH2 0x015e
00001c93: SLOAD
00001c94: PUSH1 0xff
00001c96: AND
00001c97: DUP1
00001c98: ISZERO
00001c99: PUSH2 0x1cba
00001c9c: JUMPI
00001c9d: POP
00001c9e: PUSH1 0x01
00001ca0: PUSH1 0x01
00001ca2: PUSH1 0xa0
00001ca4: SHL
00001ca5: SUB
00001ca6: DUP6
00001ca7: AND
00001ca8: PUSH1 0x00
00001caa: SWAP1
00001cab: DUP2
00001cac: MSTORE
00001cad: PUSH2 0x0161
00001cb0: PUSH1 0x20
00001cb2: MSTORE
00001cb3: PUSH1 0x40
00001cb5: SWAP1
00001cb6: KECCAK256
00001cb7: SLOAD
00001cb8: DUP2
00001cb9: GT
00001cba: JUMPDEST
00001cbb: ISZERO
00001cbc: PUSH2 0x1cf1
00001cbf: JUMPI
00001cc0: PUSH1 0x40
00001cc2: MLOAD
00001cc3: PUSH32 0x22eef62800000000000000000000000000000000000000000000000000000000
00001ce4: DUP2
00001ce5: MSTORE
00001ce6: PUSH1 0x04
00001ce8: ADD
00001ce9: PUSH1 0x40
00001ceb: MLOAD
00001cec: DUP1
00001ced: SWAP2
00001cee: SUB
00001cef: SWAP1
00001cf0: REVERT
00001cf1: JUMPDEST
00001cf2: PUSH1 0x01
00001cf4: PUSH1 0x01
00001cf6: PUSH1 0xa0
00001cf8: SHL
00001cf9: SUB
00001cfa: DUP6
00001cfb: AND
00001cfc: PUSH1 0x00
00001cfe: SWAP1
00001cff: DUP2
00001d00: MSTORE
00001d01: PUSH2 0x0160
00001d04: PUSH1 0x20
00001d06: MSTORE
00001d07: PUSH1 0x40
00001d09: SWAP1
00001d0a: KECCAK256
00001d0b: DUP2
00001d0c: SWAP1
00001d0d: SSTORE
00001d0e: PUSH2 0x1d37
00001d11: PUSH32 0xe821b978bcce9abbf40c3e50ea30143e68c65fa95b9da8907fef59c02d954cec
00001d32: DUP4
00001d33: PUSH2 0x19a3
00001d36: JUMP
00001d37: JUMPDEST
00001d38: PUSH2 0x1d4c
00001d3b: PUSH1 0x01
00001d3d: PUSH1 0x01
00001d3f: PUSH1 0xa0
00001d41: SHL
00001d42: SUB
00001d43: DUP7
00001d44: AND
00001d45: CALLER
00001d46: ADDRESS
00001d47: DUP8
00001d48: PUSH2 0x2370
00001d4b: JUMP
00001d4c: JUMPDEST
00001d4d: PUSH1 0x40
00001d4f: MLOAD
00001d50: DUP5
00001d51: DUP2
00001d52: MSTORE
00001d53: PUSH1 0x01
00001d55: PUSH1 0x01
00001d57: PUSH1 0xa0
00001d59: SHL
00001d5a: SUB
00001d5b: DUP7
00001d5c: AND
00001d5d: SWAP1
00001d5e: CALLER
00001d5f: SWAP1
00001d60: PUSH32 0x182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac
00001d81: SWAP1
00001d82: PUSH1 0x20
00001d84: ADD
00001d85: PUSH1 0x40
00001d87: MLOAD
00001d88: DUP1
00001d89: SWAP2
00001d8a: SUB
00001d8b: SWAP1
00001d8c: LOG3
00001d8d: POP
00001d8e: POP
00001d8f: POP
00001d90: POP
00001d91: POP
00001d92: JUMP
00001d93: JUMPDEST
00001d94: PUSH1 0x00
00001d96: DUP1
00001d97: PUSH1 0x02
00001d99: SWAP1
00001d9a: SLOAD
00001d9b: SWAP1
00001d9c: PUSH2 0x0100
00001d9f: EXP
00001da0: SWAP1
00001da1: DIV
00001da2: PUSH1 0x01
00001da4: PUSH1 0x01
00001da6: PUSH1 0xa0
00001da8: SHL
00001da9: SUB
00001daa: AND
00001dab: PUSH1 0x01
00001dad: PUSH1 0x01
00001daf: PUSH1 0xa0
00001db1: SHL
00001db2: SUB
00001db3: AND
00001db4: PUSH4 0xd67bdd25
00001db9: PUSH1 0x40
00001dbb: MLOAD
00001dbc: DUP2
00001dbd: PUSH4 0xffffffff
00001dc2: AND
00001dc3: PUSH1 0xe0
00001dc5: SHL
00001dc6: DUP2
00001dc7: MSTORE
00001dc8: PUSH1 0x04
00001dca: ADD
00001dcb: PUSH1 0x20
00001dcd: PUSH1 0x40
00001dcf: MLOAD
00001dd0: DUP1
00001dd1: DUP4
00001dd2: SUB
00001dd3: DUP2
00001dd4: DUP7
00001dd5: DUP1
00001dd6: EXTCODESIZE
00001dd7: ISZERO
00001dd8: DUP1
00001dd9: ISZERO
00001dda: PUSH2 0x1de2
00001ddd: JUMPI
00001dde: PUSH1 0x00
00001de0: DUP1
00001de1: REVERT
00001de2: JUMPDEST
00001de3: POP
00001de4: GAS
00001de5: STATICCALL
00001de6: ISZERO
00001de7: DUP1
00001de8: ISZERO
00001de9: PUSH2 0x1df6
00001dec: JUMPI
00001ded: RETURNDATASIZE
00001dee: PUSH1 0x00
00001df0: DUP1
00001df1: RETURNDATACOPY
00001df2: RETURNDATASIZE
00001df3: PUSH1 0x00
00001df5: REVERT
00001df6: JUMPDEST
00001df7: POP
00001df8: POP
00001df9: POP
00001dfa: POP
00001dfb: PUSH1 0x40
00001dfd: MLOAD
00001dfe: RETURNDATASIZE
00001dff: PUSH1 0x1f
00001e01: NOT
00001e02: PUSH1 0x1f
00001e04: DUP3
00001e05: ADD
00001e06: AND
00001e07: DUP3
00001e08: ADD
00001e09: DUP1
00001e0a: PUSH1 0x40
00001e0c: MSTORE
00001e0d: POP
00001e0e: DUP2
00001e0f: ADD
00001e10: SWAP1
00001e11: PUSH2 0x1e1a
00001e14: SWAP2
00001e15: SWAP1
00001e16: PUSH2 0x3055
00001e19: JUMP
00001e1a: JUMPDEST
00001e1b: SWAP1
00001e1c: POP
00001e1d: SWAP1
00001e1e: JUMP
00001e1f: JUMPDEST
00001e20: PUSH1 0x00
00001e22: PUSH1 0x09
00001e24: DUP4
00001e25: PUSH1 0xff
00001e27: AND
00001e28: GT
00001e29: ISZERO
00001e2a: PUSH2 0x1ba7
00001e2d: JUMPI
00001e2e: PUSH1 0x00
00001e30: PUSH2 0x1e3d
00001e33: PUSH1 0x09
00001e35: PUSH1 0xff
00001e37: DUP7
00001e38: AND
00001e39: PUSH2 0x303e
00001e3c: JUMP
00001e3d: JUMPDEST
00001e3e: PUSH2 0x1e48
00001e41: SWAP1
00001e42: PUSH1 0x0a
00001e44: PUSH2 0x31d5
00001e47: JUMP
00001e48: JUMPDEST
00001e49: SWAP1
00001e4a: POP
00001e4b: PUSH2 0x1b9f
00001e4e: DUP2
00001e4f: DUP5
00001e50: PUSH2 0x31e1
00001e53: JUMP
00001e54: JUMPDEST
00001e55: PUSH1 0x01
00001e57: PUSH1 0x01
00001e59: PUSH1 0xa0
00001e5b: SHL
00001e5c: SUB
00001e5d: DUP3
00001e5e: AND
00001e5f: PUSH1 0x00
00001e61: SWAP1
00001e62: DUP2
00001e63: MSTORE
00001e64: PUSH2 0x0165
00001e67: PUSH1 0x20
00001e69: MSTORE
00001e6a: PUSH1 0x40
00001e6c: DUP2
00001e6d: KECCAK256
00001e6e: SLOAD
00001e6f: TIMESTAMP
00001e70: GT
00001e71: ISZERO
00001e72: PUSH2 0x1ea8
00001e75: JUMPI
00001e76: POP
00001e77: PUSH1 0x01
00001e79: PUSH1 0x01
00001e7b: PUSH1 0xa0
00001e7d: SHL
00001e7e: SUB
00001e7f: DUP3
00001e80: AND
00001e81: PUSH1 0x00
00001e83: SWAP1
00001e84: DUP2
00001e85: MSTORE
00001e86: PUSH2 0x0163
00001e89: PUSH1 0x20
00001e8b: SWAP1
00001e8c: DUP2
00001e8d: MSTORE
00001e8e: PUSH1 0x40
00001e90: DUP1
00001e91: DUP4
00001e92: KECCAK256
00001e93: SLOAD
00001e94: PUSH2 0x0165
00001e97: SWAP1
00001e98: SWAP3
00001e99: MSTORE
00001e9a: SWAP1
00001e9b: SWAP2
00001e9c: KECCAK256
00001e9d: TIMESTAMP
00001e9e: SWAP1
00001e9f: SWAP2
00001ea0: ADD
00001ea1: SWAP1
00001ea2: SSTORE
00001ea3: DUP1
00001ea4: PUSH2 0x1ec6
00001ea7: JUMP
00001ea8: JUMPDEST
00001ea9: POP
00001eaa: PUSH1 0x01
00001eac: PUSH1 0x01
00001eae: PUSH1 0xa0
00001eb0: SHL
00001eb1: SUB
00001eb2: DUP3
00001eb3: AND
00001eb4: PUSH1 0x00
00001eb6: SWAP1
00001eb7: DUP2
00001eb8: MSTORE
00001eb9: PUSH2 0x0164
00001ebc: PUSH1 0x20
00001ebe: MSTORE
00001ebf: PUSH1 0x40
00001ec1: SWAP1
00001ec2: KECCAK256
00001ec3: SLOAD
00001ec4: DUP2
00001ec5: ADD
00001ec6: JUMPDEST
00001ec7: PUSH1 0x01
00001ec9: PUSH1 0x01
00001ecb: PUSH1 0xa0
00001ecd: SHL
00001ece: SUB
00001ecf: DUP4
00001ed0: AND
00001ed1: PUSH1 0x00
00001ed3: SWAP1
00001ed4: DUP2
00001ed5: MSTORE
00001ed6: PUSH2 0x0166
00001ed9: PUSH1 0x20
00001edb: MSTORE
00001edc: PUSH1 0x40
00001ede: SWAP1
00001edf: KECCAK256
00001ee0: SLOAD
00001ee1: DUP2
00001ee2: GT
00001ee3: ISZERO
00001ee4: PUSH2 0x1f19
00001ee7: JUMPI
00001ee8: PUSH1 0x40
00001eea: MLOAD
00001eeb: PUSH32 0xa74c1c5f00000000000000000000000000000000000000000000000000000000
00001f0c: DUP2
00001f0d: MSTORE
00001f0e: PUSH1 0x04
00001f10: ADD
00001f11: PUSH1 0x40
00001f13: MLOAD
00001f14: DUP1
00001f15: SWAP2
00001f16: SUB
00001f17: SWAP1
00001f18: REVERT
00001f19: JUMPDEST
00001f1a: PUSH1 0x01
00001f1c: PUSH1 0x01
00001f1e: PUSH1 0xa0
00001f20: SHL
00001f21: SUB
00001f22: SWAP1
00001f23: SWAP3
00001f24: AND
00001f25: PUSH1 0x00
00001f27: SWAP1
00001f28: DUP2
00001f29: MSTORE
00001f2a: PUSH2 0x0164
00001f2d: PUSH1 0x20
00001f2f: MSTORE
00001f30: PUSH1 0x40
00001f32: SWAP1
00001f33: KECCAK256
00001f34: SWAP2
00001f35: SWAP1
00001f36: SWAP2
00001f37: SSTORE
00001f38: POP
00001f39: JUMP
00001f3a: JUMPDEST
00001f3b: PUSH1 0x40
00001f3d: MLOAD
00001f3e: PUSH1 0x01
00001f40: PUSH1 0x01
00001f42: PUSH1 0xa0
00001f44: SHL
00001f45: SUB
00001f46: DUP4
00001f47: AND
00001f48: PUSH1 0x24
00001f4a: DUP3
00001f4b: ADD
00001f4c: MSTORE
00001f4d: PUSH1 0x44
00001f4f: DUP2
00001f50: ADD
00001f51: DUP3
00001f52: SWAP1
00001f53: MSTORE
00001f54: PUSH2 0x0882
00001f57: SWAP1
00001f58: DUP5
00001f59: SWAP1
00001f5a: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00001f7b: SWAP1
00001f7c: PUSH1 0x64
00001f7e: ADD
00001f7f: JUMPDEST
00001f80: PUSH1 0x40
00001f82: DUP1
00001f83: MLOAD
00001f84: PUSH1 0x1f
00001f86: NOT
00001f87: DUP2
00001f88: DUP5
00001f89: SUB
00001f8a: ADD
00001f8b: DUP2
00001f8c: MSTORE
00001f8d: SWAP2
00001f8e: SWAP1
00001f8f: MSTORE
00001f90: PUSH1 0x20
00001f92: DUP2
00001f93: ADD
00001f94: DUP1
00001f95: MLOAD
00001f96: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001fb3: AND
00001fb4: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00001fd5: SWAP1
00001fd6: SWAP4
00001fd7: AND
00001fd8: SWAP3
00001fd9: SWAP1
00001fda: SWAP3
00001fdb: OR
00001fdc: SWAP1
00001fdd: SWAP2
00001fde: MSTORE
00001fdf: PUSH2 0x23c1
00001fe2: JUMP
00001fe3: JUMPDEST
00001fe4: PUSH2 0x1feb
00001fe7: PUSH2 0x194e
00001fea: JUMP
00001feb: JUMPDEST
00001fec: PUSH1 0x64
00001fee: DUP1
00001fef: SLOAD
00001ff0: PUSH1 0xff
00001ff2: NOT
00001ff3: AND
00001ff4: PUSH1 0x01
00001ff6: OR
00001ff7: SWAP1
00001ff8: SSTORE
00001ff9: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
0000201a: PUSH2 0x1931
0000201d: CALLER
0000201e: SWAP1
0000201f: JUMP
00002020: JUMPDEST
00002021: PUSH1 0x00
00002023: SLOAD
00002024: PUSH2 0x0100
00002027: SWAP1
00002028: DIV
00002029: PUSH1 0xff
0000202b: AND
0000202c: PUSH2 0x209d
0000202f: JUMPI
00002030: PUSH1 0x40
00002032: MLOAD
00002033: PUSH3 0x461bcd
00002037: PUSH1 0xe5
00002039: SHL
0000203a: DUP2
0000203b: MSTORE
0000203c: PUSH1 0x20
0000203e: PUSH1 0x04
00002040: DUP3
00002041: ADD
00002042: MSTORE
00002043: PUSH1 0x2b
00002045: PUSH1 0x24
00002047: DUP3
00002048: ADD
00002049: MSTORE
0000204a: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
0000206b: PUSH1 0x44
0000206d: DUP3
0000206e: ADD
0000206f: MSTORE
00002070: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00002091: PUSH1 0x64
00002093: DUP3
00002094: ADD
00002095: MSTORE
00002096: PUSH1 0x84
00002098: ADD
00002099: PUSH2 0x0901
0000209c: JUMP
0000209d: JUMPDEST
0000209e: PUSH2 0x0aaf
000020a1: DUP2
000020a2: PUSH2 0x24a9
000020a5: JUMP
000020a6: JUMPDEST
000020a7: PUSH1 0x00
000020a9: SLOAD
000020aa: PUSH2 0x0100
000020ad: SWAP1
000020ae: DIV
000020af: PUSH1 0xff
000020b1: AND
000020b2: PUSH2 0x2123
000020b5: JUMPI
000020b6: PUSH1 0x40
000020b8: MLOAD
000020b9: PUSH3 0x461bcd
000020bd: PUSH1 0xe5
000020bf: SHL
000020c0: DUP2
000020c1: MSTORE
000020c2: PUSH1 0x20
000020c4: PUSH1 0x04
000020c6: DUP3
000020c7: ADD
000020c8: MSTORE
000020c9: PUSH1 0x2b
000020cb: PUSH1 0x24
000020cd: DUP3
000020ce: ADD
000020cf: MSTORE
000020d0: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
000020f1: PUSH1 0x44
000020f3: DUP3
000020f4: ADD
000020f5: MSTORE
000020f6: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00002117: PUSH1 0x64
00002119: DUP3
0000211a: ADD
0000211b: MSTORE
0000211c: PUSH1 0x84
0000211e: ADD
0000211f: PUSH2 0x0901
00002122: JUMP
00002123: JUMPDEST
00002124: PUSH2 0x19a1
00002127: PUSH2 0x2566
0000212a: JUMP
0000212b: JUMPDEST
0000212c: PUSH1 0x00
0000212e: SLOAD
0000212f: PUSH2 0x0100
00002132: SWAP1
00002133: DIV
00002134: PUSH1 0xff
00002136: AND
00002137: PUSH2 0x19a1
0000213a: JUMPI
0000213b: PUSH1 0x40
0000213d: MLOAD
0000213e: PUSH3 0x461bcd
00002142: PUSH1 0xe5
00002144: SHL
00002145: DUP2
00002146: MSTORE
00002147: PUSH1 0x20
00002149: PUSH1 0x04
0000214b: DUP3
0000214c: ADD
0000214d: MSTORE
0000214e: PUSH1 0x2b
00002150: PUSH1 0x24
00002152: DUP3
00002153: ADD
00002154: MSTORE
00002155: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00002176: PUSH1 0x44
00002178: DUP3
00002179: ADD
0000217a: MSTORE
0000217b: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
0000219c: PUSH1 0x64
0000219e: DUP3
0000219f: ADD
000021a0: MSTORE
000021a1: PUSH1 0x84
000021a3: ADD
000021a4: PUSH2 0x0901
000021a7: JUMP
000021a8: JUMPDEST
000021a9: PUSH1 0x00
000021ab: DUP3
000021ac: DUP2
000021ad: MSTORE
000021ae: PUSH1 0xc8
000021b0: PUSH1 0x20
000021b2: SWAP1
000021b3: DUP2
000021b4: MSTORE
000021b5: PUSH1 0x40
000021b7: DUP1
000021b8: DUP4
000021b9: KECCAK256
000021ba: PUSH1 0x01
000021bc: PUSH1 0x01
000021be: PUSH1 0xa0
000021c0: SHL
000021c1: SUB
000021c2: DUP6
000021c3: AND
000021c4: DUP5
000021c5: MSTORE
000021c6: SWAP1
000021c7: SWAP2
000021c8: MSTORE
000021c9: SWAP1
000021ca: KECCAK256
000021cb: SLOAD
000021cc: PUSH1 0xff
000021ce: AND
000021cf: PUSH2 0x0859
000021d2: JUMPI
000021d3: PUSH2 0x21db
000021d6: DUP2
000021d7: PUSH2 0x25ef
000021da: JUMP
000021db: JUMPDEST
000021dc: PUSH2 0x21e6
000021df: DUP4
000021e0: PUSH1 0x20
000021e2: PUSH2 0x2601
000021e5: JUMP
000021e6: JUMPDEST
000021e7: PUSH1 0x40
000021e9: MLOAD
000021ea: PUSH1 0x20
000021ec: ADD
000021ed: PUSH2 0x21f7
000021f0: SWAP3
000021f1: SWAP2
000021f2: SWAP1
000021f3: PUSH2 0x3200
000021f6: JUMP
000021f7: JUMPDEST
000021f8: PUSH1 0x40
000021fa: DUP1
000021fb: MLOAD
000021fc: PUSH1 0x1f
000021fe: NOT
000021ff: DUP2
00002200: DUP5
00002201: SUB
00002202: ADD
00002203: DUP2
00002204: MSTORE
00002205: SWAP1
00002206: DUP3
00002207: SWAP1
00002208: MSTORE
00002209: PUSH3 0x461bcd
0000220d: PUSH1 0xe5
0000220f: SHL
00002210: DUP3
00002211: MSTORE
00002212: PUSH2 0x0901
00002215: SWAP2
00002216: PUSH1 0x04
00002218: ADD
00002219: PUSH2 0x3281
0000221c: JUMP
0000221d: JUMPDEST
0000221e: PUSH1 0x01
00002220: PUSH1 0x01
00002222: PUSH1 0xa0
00002224: SHL
00002225: SUB
00002226: DUP2
00002227: AND
00002228: EXTCODESIZE
00002229: PUSH2 0x229a
0000222c: JUMPI
0000222d: PUSH1 0x40
0000222f: MLOAD
00002230: PUSH3 0x461bcd
00002234: PUSH1 0xe5
00002236: SHL
00002237: DUP2
00002238: MSTORE
00002239: PUSH1 0x20
0000223b: PUSH1 0x04
0000223d: DUP3
0000223e: ADD
0000223f: MSTORE
00002240: PUSH1 0x2d
00002242: PUSH1 0x24
00002244: DUP3
00002245: ADD
00002246: MSTORE
00002247: PUSH32 0x455243313936373a206e657720696d706c656d656e746174696f6e206973206e
00002268: PUSH1 0x44
0000226a: DUP3
0000226b: ADD
0000226c: MSTORE
0000226d: PUSH32 0x6f74206120636f6e747261637400000000000000000000000000000000000000
0000228e: PUSH1 0x64
00002290: DUP3
00002291: ADD
00002292: MSTORE
00002293: PUSH1 0x84
00002295: ADD
00002296: PUSH2 0x0901
00002299: JUMP
0000229a: JUMPDEST
0000229b: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
000022bc: DUP1
000022bd: SLOAD
000022be: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
000022df: AND
000022e0: PUSH1 0x01
000022e2: PUSH1 0x01
000022e4: PUSH1 0xa0
000022e6: SHL
000022e7: SUB
000022e8: SWAP3
000022e9: SWAP1
000022ea: SWAP3
000022eb: AND
000022ec: SWAP2
000022ed: SWAP1
000022ee: SWAP2
000022ef: OR
000022f0: SWAP1
000022f1: SSTORE
000022f2: JUMP
000022f3: JUMPDEST
000022f4: PUSH2 0x22fc
000022f7: DUP4
000022f8: PUSH2 0x2831
000022fb: JUMP
000022fc: JUMPDEST
000022fd: PUSH1 0x00
000022ff: DUP3
00002300: MLOAD
00002301: GT
00002302: DUP1
00002303: PUSH2 0x2309
00002306: JUMPI
00002307: POP
00002308: DUP1
00002309: JUMPDEST
0000230a: ISZERO
0000230b: PUSH2 0x0882
0000230e: JUMPI
0000230f: PUSH2 0x2318
00002312: DUP4
00002313: DUP4
00002314: PUSH2 0x2871
00002317: JUMP
00002318: JUMPDEST
00002319: POP
0000231a: POP
0000231b: POP
0000231c: POP
0000231d: JUMP
0000231e: JUMPDEST
0000231f: PUSH1 0x64
00002321: SLOAD
00002322: PUSH1 0xff
00002324: AND
00002325: PUSH2 0x19a1
00002328: JUMPI
00002329: PUSH1 0x40
0000232b: MLOAD
0000232c: PUSH3 0x461bcd
00002330: PUSH1 0xe5
00002332: SHL
00002333: DUP2
00002334: MSTORE
00002335: PUSH1 0x20
00002337: PUSH1 0x04
00002339: DUP3
0000233a: ADD
0000233b: MSTORE
0000233c: PUSH1 0x14
0000233e: PUSH1 0x24
00002340: DUP3
00002341: ADD
00002342: MSTORE
00002343: PUSH32 0x5061757361626c653a206e6f7420706175736564000000000000000000000000
00002364: PUSH1 0x44
00002366: DUP3
00002367: ADD
00002368: MSTORE
00002369: PUSH1 0x64
0000236b: ADD
0000236c: PUSH2 0x0901
0000236f: JUMP
00002370: JUMPDEST
00002371: PUSH1 0x40
00002373: MLOAD
00002374: PUSH1 0x01
00002376: PUSH1 0x01
00002378: PUSH1 0xa0
0000237a: SHL
0000237b: SUB
0000237c: DUP1
0000237d: DUP6
0000237e: AND
0000237f: PUSH1 0x24
00002381: DUP4
00002382: ADD
00002383: MSTORE
00002384: DUP4
00002385: AND
00002386: PUSH1 0x44
00002388: DUP3
00002389: ADD
0000238a: MSTORE
0000238b: PUSH1 0x64
0000238d: DUP2
0000238e: ADD
0000238f: DUP3
00002390: SWAP1
00002391: MSTORE
00002392: PUSH2 0x2318
00002395: SWAP1
00002396: DUP6
00002397: SWAP1
00002398: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
000023b9: SWAP1
000023ba: PUSH1 0x84
000023bc: ADD
000023bd: PUSH2 0x1f7f
000023c0: JUMP
000023c1: JUMPDEST
000023c2: PUSH1 0x00
000023c4: PUSH2 0x2416
000023c7: DUP3
000023c8: PUSH1 0x40
000023ca: MLOAD
000023cb: DUP1
000023cc: PUSH1 0x40
000023ce: ADD
000023cf: PUSH1 0x40
000023d1: MSTORE
000023d2: DUP1
000023d3: PUSH1 0x20
000023d5: DUP2
000023d6: MSTORE
000023d7: PUSH1 0x20
000023d9: ADD
000023da: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
000023fb: DUP2
000023fc: MSTORE
000023fd: POP
000023fe: DUP6
000023ff: PUSH1 0x01
00002401: PUSH1 0x01
00002403: PUSH1 0xa0
00002405: SHL
00002406: SUB
00002407: AND
00002408: PUSH2 0x2896
0000240b: SWAP1
0000240c: SWAP3
0000240d: SWAP2
0000240e: SWAP1
0000240f: PUSH4 0xffffffff
00002414: AND
00002415: JUMP
00002416: JUMPDEST
00002417: SWAP1
00002418: POP
00002419: DUP1
0000241a: MLOAD
0000241b: PUSH1 0x00
0000241d: EQ
0000241e: DUP1
0000241f: PUSH2 0x2437
00002422: JUMPI
00002423: POP
00002424: DUP1
00002425: DUP1
00002426: PUSH1 0x20
00002428: ADD
00002429: SWAP1
0000242a: MLOAD
0000242b: DUP2
0000242c: ADD
0000242d: SWAP1
0000242e: PUSH2 0x2437
00002431: SWAP2
00002432: SWAP1
00002433: PUSH2 0x3294
00002436: JUMP
00002437: JUMPDEST
00002438: PUSH2 0x0882
0000243b: JUMPI
0000243c: PUSH1 0x40
0000243e: MLOAD
0000243f: PUSH3 0x461bcd
00002443: PUSH1 0xe5
00002445: SHL
00002446: DUP2
00002447: MSTORE
00002448: PUSH1 0x20
0000244a: PUSH1 0x04
0000244c: DUP3
0000244d: ADD
0000244e: MSTORE
0000244f: PUSH1 0x2a
00002451: PUSH1 0x24
00002453: DUP3
00002454: ADD
00002455: MSTORE
00002456: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00002477: PUSH1 0x44
00002479: DUP3
0000247a: ADD
0000247b: MSTORE
0000247c: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
0000249d: PUSH1 0x64
0000249f: DUP3
000024a0: ADD
000024a1: MSTORE
000024a2: PUSH1 0x84
000024a4: ADD
000024a5: PUSH2 0x0901
000024a8: JUMP
000024a9: JUMPDEST
000024aa: PUSH1 0x00
000024ac: SLOAD
000024ad: PUSH2 0x0100
000024b0: SWAP1
000024b1: DIV
000024b2: PUSH1 0xff
000024b4: AND
000024b5: PUSH2 0x2526
000024b8: JUMPI
000024b9: PUSH1 0x40
000024bb: MLOAD
000024bc: PUSH3 0x461bcd
000024c0: PUSH1 0xe5
000024c2: SHL
000024c3: DUP2
000024c4: MSTORE
000024c5: PUSH1 0x20
000024c7: PUSH1 0x04
000024c9: DUP3
000024ca: ADD
000024cb: MSTORE
000024cc: PUSH1 0x2b
000024ce: PUSH1 0x24
000024d0: DUP3
000024d1: ADD
000024d2: MSTORE
000024d3: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
000024f4: PUSH1 0x44
000024f6: DUP3
000024f7: ADD
000024f8: MSTORE
000024f9: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
0000251a: PUSH1 0x64
0000251c: DUP3
0000251d: ADD
0000251e: MSTORE
0000251f: PUSH1 0x84
00002521: ADD
00002522: PUSH2 0x0901
00002525: JUMP
00002526: JUMPDEST
00002527: PUSH1 0x00
00002529: DUP1
0000252a: SLOAD
0000252b: PUSH1 0x01
0000252d: PUSH1 0x01
0000252f: PUSH1 0xa0
00002531: SHL
00002532: SUB
00002533: SWAP1
00002534: SWAP3
00002535: AND
00002536: PUSH3 0x010000
0000253a: MUL
0000253b: PUSH32 0xffffffffffffffffffff0000000000000000000000000000000000000000ffff
0000255c: SWAP1
0000255d: SWAP3
0000255e: AND
0000255f: SWAP2
00002560: SWAP1
00002561: SWAP2
00002562: OR
00002563: SWAP1
00002564: SSTORE
00002565: JUMP
00002566: JUMPDEST
00002567: PUSH1 0x00
00002569: SLOAD
0000256a: PUSH2 0x0100
0000256d: SWAP1
0000256e: DIV
0000256f: PUSH1 0xff
00002571: AND
00002572: PUSH2 0x25e3
00002575: JUMPI
00002576: PUSH1 0x40
00002578: MLOAD
00002579: PUSH3 0x461bcd
0000257d: PUSH1 0xe5
0000257f: SHL
00002580: DUP2
00002581: MSTORE
00002582: PUSH1 0x20
00002584: PUSH1 0x04
00002586: DUP3
00002587: ADD
00002588: MSTORE
00002589: PUSH1 0x2b
0000258b: PUSH1 0x24
0000258d: DUP3
0000258e: ADD
0000258f: MSTORE
00002590: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
000025b1: PUSH1 0x44
000025b3: DUP3
000025b4: ADD
000025b5: MSTORE
000025b6: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
000025d7: PUSH1 0x64
000025d9: DUP3
000025da: ADD
000025db: MSTORE
000025dc: PUSH1 0x84
000025de: ADD
000025df: PUSH2 0x0901
000025e2: JUMP
000025e3: JUMPDEST
000025e4: PUSH1 0x64
000025e6: DUP1
000025e7: SLOAD
000025e8: PUSH1 0xff
000025ea: NOT
000025eb: AND
000025ec: SWAP1
000025ed: SSTORE
000025ee: JUMP
000025ef: JUMPDEST
000025f0: PUSH1 0x60
000025f2: PUSH2 0x07f3
000025f5: PUSH1 0x01
000025f7: PUSH1 0x01
000025f9: PUSH1 0xa0
000025fb: SHL
000025fc: SUB
000025fd: DUP4
000025fe: AND
000025ff: PUSH1 0x14
00002601: JUMPDEST
00002602: PUSH1 0x60
00002604: PUSH1 0x00
00002606: PUSH2 0x2610
00002609: DUP4
0000260a: PUSH1 0x02
0000260c: PUSH2 0x31e1
0000260f: JUMP
00002610: JUMPDEST
00002611: PUSH2 0x261b
00002614: SWAP1
00002615: PUSH1 0x02
00002617: PUSH2 0x30d9
0000261a: JUMP
0000261b: JUMPDEST
0000261c: PUSH8 0xffffffffffffffff
00002625: DUP2
00002626: GT
00002627: ISZERO
00002628: PUSH2 0x2633
0000262b: JUMPI
0000262c: PUSH2 0x2633
0000262f: PUSH2 0x2b6f
00002632: JUMP
00002633: JUMPDEST
00002634: PUSH1 0x40
00002636: MLOAD
00002637: SWAP1
00002638: DUP1
00002639: DUP3
0000263a: MSTORE
0000263b: DUP1
0000263c: PUSH1 0x1f
0000263e: ADD
0000263f: PUSH1 0x1f
00002641: NOT
00002642: AND
00002643: PUSH1 0x20
00002645: ADD
00002646: DUP3
00002647: ADD
00002648: PUSH1 0x40
0000264a: MSTORE
0000264b: DUP1
0000264c: ISZERO
0000264d: PUSH2 0x265d
00002650: JUMPI
00002651: PUSH1 0x20
00002653: DUP3
00002654: ADD
00002655: DUP2
00002656: DUP1
00002657: CALLDATASIZE
00002658: DUP4
00002659: CALLDATACOPY
0000265a: ADD
0000265b: SWAP1
0000265c: POP
0000265d: JUMPDEST
0000265e: POP
0000265f: SWAP1
00002660: POP
00002661: PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000
00002682: DUP2
00002683: PUSH1 0x00
00002685: DUP2
00002686: MLOAD
00002687: DUP2
00002688: LT
00002689: PUSH2 0x2694
0000268c: JUMPI
0000268d: PUSH2 0x2694
00002690: PUSH2 0x32b1
00002693: JUMP
00002694: JUMPDEST
00002695: PUSH1 0x20
00002697: ADD
00002698: ADD
00002699: SWAP1
0000269a: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000026ba: NOT
000026bb: AND
000026bc: SWAP1
000026bd: DUP2
000026be: PUSH1 0x00
000026c0: BYTE
000026c1: SWAP1
000026c2: MSTORE8
000026c3: POP
000026c4: PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000
000026e5: DUP2
000026e6: PUSH1 0x01
000026e8: DUP2
000026e9: MLOAD
000026ea: DUP2
000026eb: LT
000026ec: PUSH2 0x26f7
000026ef: JUMPI
000026f0: PUSH2 0x26f7
000026f3: PUSH2 0x32b1
000026f6: JUMP
000026f7: JUMPDEST
000026f8: PUSH1 0x20
000026fa: ADD
000026fb: ADD
000026fc: SWAP1
000026fd: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000271d: NOT
0000271e: AND
0000271f: SWAP1
00002720: DUP2
00002721: PUSH1 0x00
00002723: BYTE
00002724: SWAP1
00002725: MSTORE8
00002726: POP
00002727: PUSH1 0x00
00002729: PUSH2 0x2733
0000272c: DUP5
0000272d: PUSH1 0x02
0000272f: PUSH2 0x31e1
00002732: JUMP
00002733: JUMPDEST
00002734: PUSH2 0x273e
00002737: SWAP1
00002738: PUSH1 0x01
0000273a: PUSH2 0x30d9
0000273d: JUMP
0000273e: JUMPDEST
0000273f: SWAP1
00002740: POP
00002741: JUMPDEST
00002742: PUSH1 0x01
00002744: DUP2
00002745: GT
00002746: ISZERO
00002747: PUSH2 0x27db
0000274a: JUMPI
0000274b: PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000
0000276c: DUP6
0000276d: PUSH1 0x0f
0000276f: AND
00002770: PUSH1 0x10
00002772: DUP2
00002773: LT
00002774: PUSH2 0x277f
00002777: JUMPI
00002778: PUSH2 0x277f
0000277b: PUSH2 0x32b1
0000277e: JUMP
0000277f: JUMPDEST
00002780: BYTE
00002781: PUSH1 0xf8
00002783: SHL
00002784: DUP3
00002785: DUP3
00002786: DUP2
00002787: MLOAD
00002788: DUP2
00002789: LT
0000278a: PUSH2 0x2795
0000278d: JUMPI
0000278e: PUSH2 0x2795
00002791: PUSH2 0x32b1
00002794: JUMP
00002795: JUMPDEST
00002796: PUSH1 0x20
00002798: ADD
00002799: ADD
0000279a: SWAP1
0000279b: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000027bb: NOT
000027bc: AND
000027bd: SWAP1
000027be: DUP2
000027bf: PUSH1 0x00
000027c1: BYTE
000027c2: SWAP1
000027c3: MSTORE8
000027c4: POP
000027c5: PUSH1 0x04
000027c7: SWAP5
000027c8: SWAP1
000027c9: SWAP5
000027ca: SHR
000027cb: SWAP4
000027cc: PUSH2 0x27d4
000027cf: DUP2
000027d0: PUSH2 0x32e0
000027d3: JUMP
000027d4: JUMPDEST
000027d5: SWAP1
000027d6: POP
000027d7: PUSH2 0x2741
000027da: JUMP
000027db: JUMPDEST
000027dc: POP
000027dd: DUP4
000027de: ISZERO
000027df: PUSH2 0x282a
000027e2: JUMPI
000027e3: PUSH1 0x40
000027e5: MLOAD
000027e6: PUSH3 0x461bcd
000027ea: PUSH1 0xe5
000027ec: SHL
000027ed: DUP2
000027ee: MSTORE
000027ef: PUSH1 0x20
000027f1: PUSH1 0x04
000027f3: DUP3
000027f4: ADD
000027f5: DUP2
000027f6: SWAP1
000027f7: MSTORE
000027f8: PUSH1 0x24
000027fa: DUP3
000027fb: ADD
000027fc: MSTORE
000027fd: PUSH32 0x537472696e67733a20686578206c656e67746820696e73756666696369656e74
0000281e: PUSH1 0x44
00002820: DUP3
00002821: ADD
00002822: MSTORE
00002823: PUSH1 0x64
00002825: ADD
00002826: PUSH2 0x0901
00002829: JUMP
0000282a: JUMPDEST
0000282b: SWAP4
0000282c: SWAP3
0000282d: POP
0000282e: POP
0000282f: POP
00002830: JUMP
00002831: JUMPDEST
00002832: PUSH2 0x283a
00002835: DUP2
00002836: PUSH2 0x221d
00002839: JUMP
0000283a: JUMPDEST
0000283b: PUSH1 0x40
0000283d: MLOAD
0000283e: PUSH1 0x01
00002840: PUSH1 0x01
00002842: PUSH1 0xa0
00002844: SHL
00002845: SUB
00002846: DUP3
00002847: AND
00002848: SWAP1
00002849: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b
0000286a: SWAP1
0000286b: PUSH1 0x00
0000286d: SWAP1
0000286e: LOG2
0000286f: POP
00002870: JUMP
00002871: JUMPDEST
00002872: PUSH1 0x60
00002874: PUSH2 0x282a
00002877: DUP4
00002878: DUP4
00002879: PUSH1 0x40
0000287b: MLOAD
0000287c: DUP1
0000287d: PUSH1 0x60
0000287f: ADD
00002880: PUSH1 0x40
00002882: MSTORE
00002883: DUP1
00002884: PUSH1 0x27
00002886: DUP2
00002887: MSTORE
00002888: PUSH1 0x20
0000288a: ADD
0000288b: PUSH2 0x3314
0000288e: PUSH1 0x27
00002890: SWAP2
00002891: CODECOPY
00002892: PUSH2 0x28ad
00002895: JUMP
00002896: JUMPDEST
00002897: PUSH1 0x60
00002899: PUSH2 0x28a5
0000289c: DUP5
0000289d: DUP5
0000289e: PUSH1 0x00
000028a0: DUP6
000028a1: PUSH2 0x2925
000028a4: JUMP
000028a5: JUMPDEST
000028a6: SWAP5
000028a7: SWAP4
000028a8: POP
000028a9: POP
000028aa: POP
000028ab: POP
000028ac: JUMP
000028ad: JUMPDEST
000028ae: PUSH1 0x60
000028b0: PUSH1 0x00
000028b2: DUP1
000028b3: DUP6
000028b4: PUSH1 0x01
000028b6: PUSH1 0x01
000028b8: PUSH1 0xa0
000028ba: SHL
000028bb: SUB
000028bc: AND
000028bd: DUP6
000028be: PUSH1 0x40
000028c0: MLOAD
000028c1: PUSH2 0x28ca
000028c4: SWAP2
000028c5: SWAP1
000028c6: PUSH2 0x32f7
000028c9: JUMP
000028ca: JUMPDEST
000028cb: PUSH1 0x00
000028cd: PUSH1 0x40
000028cf: MLOAD
000028d0: DUP1
000028d1: DUP4
000028d2: SUB
000028d3: DUP2
000028d4: DUP6
000028d5: GAS
000028d6: DELEGATECALL
000028d7: SWAP2
000028d8: POP
000028d9: POP
000028da: RETURNDATASIZE
000028db: DUP1
000028dc: PUSH1 0x00
000028de: DUP2
000028df: EQ
000028e0: PUSH2 0x2905
000028e3: JUMPI
000028e4: PUSH1 0x40
000028e6: MLOAD
000028e7: SWAP2
000028e8: POP
000028e9: PUSH1 0x1f
000028eb: NOT
000028ec: PUSH1 0x3f
000028ee: RETURNDATASIZE
000028ef: ADD
000028f0: AND
000028f1: DUP3
000028f2: ADD
000028f3: PUSH1 0x40
000028f5: MSTORE
000028f6: RETURNDATASIZE
000028f7: DUP3
000028f8: MSTORE
000028f9: RETURNDATASIZE
000028fa: PUSH1 0x00
000028fc: PUSH1 0x20
000028fe: DUP5
000028ff: ADD
00002900: RETURNDATACOPY
00002901: PUSH2 0x290a
00002904: JUMP
00002905: JUMPDEST
00002906: PUSH1 0x60
00002908: SWAP2
00002909: POP
0000290a: JUMPDEST
0000290b: POP
0000290c: SWAP2
0000290d: POP
0000290e: SWAP2
0000290f: POP
00002910: PUSH2 0x291b
00002913: DUP7
00002914: DUP4
00002915: DUP4
00002916: DUP8
00002917: PUSH2 0x2a17
0000291a: JUMP
0000291b: JUMPDEST
0000291c: SWAP7
0000291d: SWAP6
0000291e: POP
0000291f: POP
00002920: POP
00002921: POP
00002922: POP
00002923: POP
00002924: JUMP
00002925: JUMPDEST
00002926: PUSH1 0x60
00002928: DUP3
00002929: SELFBALANCE
0000292a: LT
0000292b: ISZERO
0000292c: PUSH2 0x299d
0000292f: JUMPI
00002930: PUSH1 0x40
00002932: MLOAD
00002933: PUSH3 0x461bcd
00002937: PUSH1 0xe5
00002939: SHL
0000293a: DUP2
0000293b: MSTORE
0000293c: PUSH1 0x20
0000293e: PUSH1 0x04
00002940: DUP3
00002941: ADD
00002942: MSTORE
00002943: PUSH1 0x26
00002945: PUSH1 0x24
00002947: DUP3
00002948: ADD
00002949: MSTORE
0000294a: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
0000296b: PUSH1 0x44
0000296d: DUP3
0000296e: ADD
0000296f: MSTORE
00002970: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000
00002991: PUSH1 0x64
00002993: DUP3
00002994: ADD
00002995: MSTORE
00002996: PUSH1 0x84
00002998: ADD
00002999: PUSH2 0x0901
0000299c: JUMP
0000299d: JUMPDEST
0000299e: PUSH1 0x00
000029a0: DUP1
000029a1: DUP7
000029a2: PUSH1 0x01
000029a4: PUSH1 0x01
000029a6: PUSH1 0xa0
000029a8: SHL
000029a9: SUB
000029aa: AND
000029ab: DUP6
000029ac: DUP8
000029ad: PUSH1 0x40
000029af: MLOAD
000029b0: PUSH2 0x29b9
000029b3: SWAP2
000029b4: SWAP1
000029b5: PUSH2 0x32f7
000029b8: JUMP
000029b9: JUMPDEST
000029ba: PUSH1 0x00
000029bc: PUSH1 0x40
000029be: MLOAD
000029bf: DUP1
000029c0: DUP4
000029c1: SUB
000029c2: DUP2
000029c3: DUP6
000029c4: DUP8
000029c5: GAS
000029c6: CALL
000029c7: SWAP3
000029c8: POP
000029c9: POP
000029ca: POP
000029cb: RETURNDATASIZE
000029cc: DUP1
000029cd: PUSH1 0x00
000029cf: DUP2
000029d0: EQ
000029d1: PUSH2 0x29f6
000029d4: JUMPI
000029d5: PUSH1 0x40
000029d7: MLOAD
000029d8: SWAP2
000029d9: POP
000029da: PUSH1 0x1f
000029dc: NOT
000029dd: PUSH1 0x3f
000029df: RETURNDATASIZE
000029e0: ADD
000029e1: AND
000029e2: DUP3
000029e3: ADD
000029e4: PUSH1 0x40
000029e6: MSTORE
000029e7: RETURNDATASIZE
000029e8: DUP3
000029e9: MSTORE
000029ea: RETURNDATASIZE
000029eb: PUSH1 0x00
000029ed: PUSH1 0x20
000029ef: DUP5
000029f0: ADD
000029f1: RETURNDATACOPY
000029f2: PUSH2 0x29fb
000029f5: JUMP
000029f6: JUMPDEST
000029f7: PUSH1 0x60
000029f9: SWAP2
000029fa: POP
000029fb: JUMPDEST
000029fc: POP
000029fd: SWAP2
000029fe: POP
000029ff: SWAP2
00002a00: POP
00002a01: PUSH2 0x2a0c
00002a04: DUP8
00002a05: DUP4
00002a06: DUP4
00002a07: DUP8
00002a08: PUSH2 0x2a17
00002a0b: JUMP
00002a0c: JUMPDEST
00002a0d: SWAP8
00002a0e: SWAP7
00002a0f: POP
00002a10: POP
00002a11: POP
00002a12: POP
00002a13: POP
00002a14: POP
00002a15: POP
00002a16: JUMP
00002a17: JUMPDEST
00002a18: PUSH1 0x60
00002a1a: DUP4
00002a1b: ISZERO
00002a1c: PUSH2 0x2a83
00002a1f: JUMPI
00002a20: DUP3
00002a21: MLOAD
00002a22: PUSH2 0x2a7c
00002a25: JUMPI
00002a26: PUSH1 0x01
00002a28: PUSH1 0x01
00002a2a: PUSH1 0xa0
00002a2c: SHL
00002a2d: SUB
00002a2e: DUP6
00002a2f: AND
00002a30: EXTCODESIZE
00002a31: PUSH2 0x2a7c
00002a34: JUMPI
00002a35: PUSH1 0x40
00002a37: MLOAD
00002a38: PUSH3 0x461bcd
00002a3c: PUSH1 0xe5
00002a3e: SHL
00002a3f: DUP2
00002a40: MSTORE
00002a41: PUSH1 0x20
00002a43: PUSH1 0x04
00002a45: DUP3
00002a46: ADD
00002a47: MSTORE
00002a48: PUSH1 0x1d
00002a4a: PUSH1 0x24
00002a4c: DUP3
00002a4d: ADD
00002a4e: MSTORE
00002a4f: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00002a70: PUSH1 0x44
00002a72: DUP3
00002a73: ADD
00002a74: MSTORE
00002a75: PUSH1 0x64
00002a77: ADD
00002a78: PUSH2 0x0901
00002a7b: JUMP
00002a7c: JUMPDEST
00002a7d: POP
00002a7e: DUP2
00002a7f: PUSH2 0x28a5
00002a82: JUMP
00002a83: JUMPDEST
00002a84: PUSH2 0x28a5
00002a87: DUP4
00002a88: DUP4
00002a89: DUP2
00002a8a: MLOAD
00002a8b: ISZERO
00002a8c: PUSH2 0x2a98
00002a8f: JUMPI
00002a90: DUP2
00002a91: MLOAD
00002a92: DUP1
00002a93: DUP4
00002a94: PUSH1 0x20
00002a96: ADD
00002a97: REVERT
00002a98: JUMPDEST
00002a99: DUP1
00002a9a: PUSH1 0x40
00002a9c: MLOAD
00002a9d: PUSH3 0x461bcd
00002aa1: PUSH1 0xe5
00002aa3: SHL
00002aa4: DUP2
00002aa5: MSTORE
00002aa6: PUSH1 0x04
00002aa8: ADD
00002aa9: PUSH2 0x0901
00002aac: SWAP2
00002aad: SWAP1
00002aae: PUSH2 0x3281
00002ab1: JUMP
00002ab2: JUMPDEST
00002ab3: PUSH1 0x00
00002ab5: PUSH1 0x20
00002ab7: DUP3
00002ab8: DUP5
00002ab9: SUB
00002aba: SLT
00002abb: ISZERO
00002abc: PUSH2 0x2ac4
00002abf: JUMPI
00002ac0: PUSH1 0x00
00002ac2: DUP1
00002ac3: REVERT
00002ac4: JUMPDEST
00002ac5: DUP2
00002ac6: CALLDATALOAD
00002ac7: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00002ae8: DUP2
00002ae9: AND
00002aea: DUP2
00002aeb: EQ
00002aec: PUSH2 0x282a
00002aef: JUMPI
00002af0: PUSH1 0x00
00002af2: DUP1
00002af3: REVERT
00002af4: JUMPDEST
00002af5: PUSH1 0x00
00002af7: PUSH1 0x20
00002af9: DUP3
00002afa: DUP5
00002afb: SUB
00002afc: SLT
00002afd: ISZERO
00002afe: PUSH2 0x2b06
00002b01: JUMPI
00002b02: PUSH1 0x00
00002b04: DUP1
00002b05: REVERT
00002b06: JUMPDEST
00002b07: POP
00002b08: CALLDATALOAD
00002b09: SWAP2
00002b0a: SWAP1
00002b0b: POP
00002b0c: JUMP
00002b0d: JUMPDEST
00002b0e: PUSH1 0x01
00002b10: PUSH1 0x01
00002b12: PUSH1 0xa0
00002b14: SHL
00002b15: SUB
00002b16: DUP2
00002b17: AND
00002b18: DUP2
00002b19: EQ
00002b1a: PUSH2 0x0aaf
00002b1d: JUMPI
00002b1e: PUSH1 0x00
00002b20: DUP1
00002b21: REVERT
00002b22: JUMPDEST
00002b23: PUSH1 0x00
00002b25: PUSH1 0x20
00002b27: DUP3
00002b28: DUP5
00002b29: SUB
00002b2a: SLT
00002b2b: ISZERO
00002b2c: PUSH2 0x2b34
00002b2f: JUMPI
00002b30: PUSH1 0x00
00002b32: DUP1
00002b33: REVERT
00002b34: JUMPDEST
00002b35: DUP2
00002b36: CALLDATALOAD
00002b37: PUSH2 0x282a
00002b3a: DUP2
00002b3b: PUSH2 0x2b0d
00002b3e: JUMP
00002b3f: JUMPDEST
00002b40: PUSH1 0x00
00002b42: DUP1
00002b43: PUSH1 0x40
00002b45: DUP4
00002b46: DUP6
00002b47: SUB
00002b48: SLT
00002b49: ISZERO
00002b4a: PUSH2 0x2b52
00002b4d: JUMPI
00002b4e: PUSH1 0x00
00002b50: DUP1
00002b51: REVERT
00002b52: JUMPDEST
00002b53: DUP3
00002b54: CALLDATALOAD
00002b55: SWAP2
00002b56: POP
00002b57: PUSH1 0x20
00002b59: DUP4
00002b5a: ADD
00002b5b: CALLDATALOAD
00002b5c: PUSH2 0x2b64
00002b5f: DUP2
00002b60: PUSH2 0x2b0d
00002b63: JUMP
00002b64: JUMPDEST
00002b65: DUP1
00002b66: SWAP2
00002b67: POP
00002b68: POP
00002b69: SWAP3
00002b6a: POP
00002b6b: SWAP3
00002b6c: SWAP1
00002b6d: POP
00002b6e: JUMP
00002b6f: JUMPDEST
00002b70: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002b91: PUSH1 0x00
00002b93: MSTORE
00002b94: PUSH1 0x41
00002b96: PUSH1 0x04
00002b98: MSTORE
00002b99: PUSH1 0x24
00002b9b: PUSH1 0x00
00002b9d: REVERT
00002b9e: JUMPDEST
00002b9f: PUSH1 0x40
00002ba1: MLOAD
00002ba2: PUSH1 0x1f
00002ba4: DUP3
00002ba5: ADD
00002ba6: PUSH1 0x1f
00002ba8: NOT
00002ba9: AND
00002baa: DUP2
00002bab: ADD
00002bac: PUSH8 0xffffffffffffffff
00002bb5: DUP2
00002bb6: GT
00002bb7: DUP3
00002bb8: DUP3
00002bb9: LT
00002bba: OR
00002bbb: ISZERO
00002bbc: PUSH2 0x2bc7
00002bbf: JUMPI
00002bc0: PUSH2 0x2bc7
00002bc3: PUSH2 0x2b6f
00002bc6: JUMP
00002bc7: JUMPDEST
00002bc8: PUSH1 0x40
00002bca: MSTORE
00002bcb: SWAP2
00002bcc: SWAP1
00002bcd: POP
00002bce: JUMP
00002bcf: JUMPDEST
00002bd0: PUSH1 0x00
00002bd2: PUSH8 0xffffffffffffffff
00002bdb: DUP3
00002bdc: GT
00002bdd: ISZERO
00002bde: PUSH2 0x2be9
00002be1: JUMPI
00002be2: PUSH2 0x2be9
00002be5: PUSH2 0x2b6f
00002be8: JUMP
00002be9: JUMPDEST
00002bea: POP
00002beb: PUSH1 0x1f
00002bed: ADD
00002bee: PUSH1 0x1f
00002bf0: NOT
00002bf1: AND
00002bf2: PUSH1 0x20
00002bf4: ADD
00002bf5: SWAP1
00002bf6: JUMP
00002bf7: JUMPDEST
00002bf8: PUSH1 0x00
00002bfa: DUP1
00002bfb: PUSH1 0x40
00002bfd: DUP4
00002bfe: DUP6
00002bff: SUB
00002c00: SLT
00002c01: ISZERO
00002c02: PUSH2 0x2c0a
00002c05: JUMPI
00002c06: PUSH1 0x00
00002c08: DUP1
00002c09: REVERT
00002c0a: JUMPDEST
00002c0b: DUP3
00002c0c: CALLDATALOAD
00002c0d: PUSH2 0x2c15
00002c10: DUP2
00002c11: PUSH2 0x2b0d
00002c14: JUMP
00002c15: JUMPDEST
00002c16: SWAP2
00002c17: POP
00002c18: PUSH1 0x20
00002c1a: DUP4
00002c1b: ADD
00002c1c: CALLDATALOAD
00002c1d: PUSH8 0xffffffffffffffff
00002c26: DUP2
00002c27: GT
00002c28: ISZERO
00002c29: PUSH2 0x2c31
00002c2c: JUMPI
00002c2d: PUSH1 0x00
00002c2f: DUP1
00002c30: REVERT
00002c31: JUMPDEST
00002c32: DUP4
00002c33: ADD
00002c34: PUSH1 0x1f
00002c36: DUP2
00002c37: ADD
00002c38: DUP6
00002c39: SGT
00002c3a: PUSH2 0x2c42
00002c3d: JUMPI
00002c3e: PUSH1 0x00
00002c40: DUP1
00002c41: REVERT
00002c42: JUMPDEST
00002c43: DUP1
00002c44: CALLDATALOAD
00002c45: PUSH2 0x2c55
00002c48: PUSH2 0x2c50
00002c4b: DUP3
00002c4c: PUSH2 0x2bcf
00002c4f: JUMP
00002c50: JUMPDEST
00002c51: PUSH2 0x2b9e
00002c54: JUMP
00002c55: JUMPDEST
00002c56: DUP2
00002c57: DUP2
00002c58: MSTORE
00002c59: DUP7
00002c5a: PUSH1 0x20
00002c5c: DUP4
00002c5d: DUP6
00002c5e: ADD
00002c5f: ADD
00002c60: GT
00002c61: ISZERO
00002c62: PUSH2 0x2c6a
00002c65: JUMPI
00002c66: PUSH1 0x00
00002c68: DUP1
00002c69: REVERT
00002c6a: JUMPDEST
00002c6b: DUP2
00002c6c: PUSH1 0x20
00002c6e: DUP5
00002c6f: ADD
00002c70: PUSH1 0x20
00002c72: DUP4
00002c73: ADD
00002c74: CALLDATACOPY
00002c75: PUSH1 0x00
00002c77: PUSH1 0x20
00002c79: DUP4
00002c7a: DUP4
00002c7b: ADD
00002c7c: ADD
00002c7d: MSTORE
00002c7e: DUP1
00002c7f: SWAP4
00002c80: POP
00002c81: POP
00002c82: POP
00002c83: POP
00002c84: SWAP3
00002c85: POP
00002c86: SWAP3
00002c87: SWAP1
00002c88: POP
00002c89: JUMP
00002c8a: JUMPDEST
00002c8b: PUSH1 0x00
00002c8d: DUP1
00002c8e: PUSH1 0x00
00002c90: DUP1
00002c91: PUSH1 0x00
00002c93: PUSH1 0x80
00002c95: DUP7
00002c96: DUP9
00002c97: SUB
00002c98: SLT
00002c99: ISZERO
00002c9a: PUSH2 0x2ca2
00002c9d: JUMPI
00002c9e: PUSH1 0x00
00002ca0: DUP1
00002ca1: REVERT
00002ca2: JUMPDEST
00002ca3: DUP6
00002ca4: CALLDATALOAD
00002ca5: SWAP5
00002ca6: POP
00002ca7: PUSH1 0x20
00002ca9: DUP7
00002caa: ADD
00002cab: CALLDATALOAD
00002cac: PUSH2 0x2cb4
00002caf: DUP2
00002cb0: PUSH2 0x2b0d
00002cb3: JUMP
00002cb4: JUMPDEST
00002cb5: SWAP4
00002cb6: POP
00002cb7: PUSH1 0x40
00002cb9: DUP7
00002cba: ADD
00002cbb: CALLDATALOAD
00002cbc: SWAP3
00002cbd: POP
00002cbe: PUSH1 0x60
00002cc0: DUP7
00002cc1: ADD
00002cc2: CALLDATALOAD
00002cc3: PUSH8 0xffffffffffffffff
00002ccc: DUP1
00002ccd: DUP3
00002cce: GT
00002ccf: ISZERO
00002cd0: PUSH2 0x2cd8
00002cd3: JUMPI
00002cd4: PUSH1 0x00
00002cd6: DUP1
00002cd7: REVERT
00002cd8: JUMPDEST
00002cd9: DUP2
00002cda: DUP9
00002cdb: ADD
00002cdc: SWAP2
00002cdd: POP
00002cde: DUP9
00002cdf: PUSH1 0x1f
00002ce1: DUP4
00002ce2: ADD
00002ce3: SLT
00002ce4: PUSH2 0x2cec
00002ce7: JUMPI
00002ce8: PUSH1 0x00
00002cea: DUP1
00002ceb: REVERT
00002cec: JUMPDEST
00002ced: DUP2
00002cee: CALLDATALOAD
00002cef: DUP2
00002cf0: DUP2
00002cf1: GT
00002cf2: ISZERO
00002cf3: PUSH2 0x2cfb
00002cf6: JUMPI
00002cf7: PUSH1 0x00
00002cf9: DUP1
00002cfa: REVERT
00002cfb: JUMPDEST
00002cfc: DUP10
00002cfd: PUSH1 0x20
00002cff: DUP3
00002d00: DUP6
00002d01: ADD
00002d02: ADD
00002d03: GT
00002d04: ISZERO
00002d05: PUSH2 0x2d0d
00002d08: JUMPI
00002d09: PUSH1 0x00
00002d0b: DUP1
00002d0c: REVERT
00002d0d: JUMPDEST
00002d0e: SWAP7
00002d0f: SWAP10
00002d10: SWAP6
00002d11: SWAP9
00002d12: POP
00002d13: SWAP4
00002d14: SWAP7
00002d15: POP
00002d16: PUSH1 0x20
00002d18: ADD
00002d19: SWAP5
00002d1a: SWAP4
00002d1b: SWAP3
00002d1c: POP
00002d1d: POP
00002d1e: POP
00002d1f: JUMP
00002d20: JUMPDEST
00002d21: PUSH1 0x00
00002d23: DUP1
00002d24: PUSH1 0x00
00002d26: DUP1
00002d27: PUSH1 0x80
00002d29: DUP6
00002d2a: DUP8
00002d2b: SUB
00002d2c: SLT
00002d2d: ISZERO
00002d2e: PUSH2 0x2d36
00002d31: JUMPI
00002d32: PUSH1 0x00
00002d34: DUP1
00002d35: REVERT
00002d36: JUMPDEST
00002d37: DUP5
00002d38: CALLDATALOAD
00002d39: PUSH2 0x2d41
00002d3c: DUP2
00002d3d: PUSH2 0x2b0d
00002d40: JUMP
00002d41: JUMPDEST
00002d42: SWAP4
00002d43: POP
00002d44: PUSH1 0x20
00002d46: DUP6
00002d47: ADD
00002d48: CALLDATALOAD
00002d49: PUSH2 0x2d51
00002d4c: DUP2
00002d4d: PUSH2 0x2b0d
00002d50: JUMP
00002d51: JUMPDEST
00002d52: SWAP4
00002d53: SWAP7
00002d54: SWAP4
00002d55: SWAP6
00002d56: POP
00002d57: POP
00002d58: POP
00002d59: POP
00002d5a: PUSH1 0x40
00002d5c: DUP3
00002d5d: ADD
00002d5e: CALLDATALOAD
00002d5f: SWAP2
00002d60: PUSH1 0x60
00002d62: ADD
00002d63: CALLDATALOAD
00002d64: SWAP1
00002d65: JUMP
00002d66: JUMPDEST
00002d67: DUP1
00002d68: ISZERO
00002d69: ISZERO
00002d6a: DUP2
00002d6b: EQ
00002d6c: PUSH2 0x0aaf
00002d6f: JUMPI
00002d70: PUSH1 0x00
00002d72: DUP1
00002d73: REVERT
00002d74: JUMPDEST
00002d75: PUSH1 0x00
00002d77: DUP1
00002d78: PUSH1 0x40
00002d7a: DUP4
00002d7b: DUP6
00002d7c: SUB
00002d7d: SLT
00002d7e: ISZERO
00002d7f: PUSH2 0x2d87
00002d82: JUMPI
00002d83: PUSH1 0x00
00002d85: DUP1
00002d86: REVERT
00002d87: JUMPDEST
00002d88: DUP3
00002d89: CALLDATALOAD
00002d8a: PUSH2 0x2d92
00002d8d: DUP2
00002d8e: PUSH2 0x2b0d
00002d91: JUMP
00002d92: JUMPDEST
00002d93: SWAP2
00002d94: POP
00002d95: PUSH1 0x20
00002d97: DUP4
00002d98: ADD
00002d99: CALLDATALOAD
00002d9a: PUSH2 0x2b64
00002d9d: DUP2
00002d9e: PUSH2 0x2d66
00002da1: JUMP
00002da2: JUMPDEST
00002da3: PUSH1 0x00
00002da5: DUP1
00002da6: PUSH1 0x40
00002da8: DUP4
00002da9: DUP6
00002daa: SUB
00002dab: SLT
00002dac: ISZERO
00002dad: PUSH2 0x2db5
00002db0: JUMPI
00002db1: PUSH1 0x00
00002db3: DUP1
00002db4: REVERT
00002db5: JUMPDEST
00002db6: DUP3
00002db7: CALLDATALOAD
00002db8: PUSH2 0x2dc0
00002dbb: DUP2
00002dbc: PUSH2 0x2b0d
00002dbf: JUMP
00002dc0: JUMPDEST
00002dc1: SWAP5
00002dc2: PUSH1 0x20
00002dc4: SWAP4
00002dc5: SWAP1
00002dc6: SWAP4
00002dc7: ADD
00002dc8: CALLDATALOAD
00002dc9: SWAP4
00002dca: POP
00002dcb: POP
00002dcc: POP
00002dcd: JUMP
00002dce: JUMPDEST
00002dcf: PUSH1 0x00
00002dd1: PUSH1 0x20
00002dd3: DUP3
00002dd4: DUP5
00002dd5: SUB
00002dd6: SLT
00002dd7: ISZERO
00002dd8: PUSH2 0x2de0
00002ddb: JUMPI
00002ddc: PUSH1 0x00
00002dde: DUP1
00002ddf: REVERT
00002de0: JUMPDEST
00002de1: DUP2
00002de2: CALLDATALOAD
00002de3: PUSH2 0x282a
00002de6: DUP2
00002de7: PUSH2 0x2d66
00002dea: JUMP
00002deb: JUMPDEST
00002dec: PUSH1 0x00
00002dee: DUP1
00002def: PUSH1 0x00
00002df1: PUSH1 0x60
00002df3: DUP5
00002df4: DUP7
00002df5: SUB
00002df6: SLT
00002df7: ISZERO
00002df8: PUSH2 0x2e00
00002dfb: JUMPI
00002dfc: PUSH1 0x00
00002dfe: DUP1
00002dff: REVERT
00002e00: JUMPDEST
00002e01: DUP4
00002e02: CALLDATALOAD
00002e03: SWAP3
00002e04: POP
00002e05: PUSH1 0x20
00002e07: DUP5
00002e08: ADD
00002e09: CALLDATALOAD
00002e0a: PUSH2 0x2e12
00002e0d: DUP2
00002e0e: PUSH2 0x2b0d
00002e11: JUMP
00002e12: JUMPDEST
00002e13: SWAP3
00002e14: SWAP6
00002e15: SWAP3
00002e16: SWAP5
00002e17: POP
00002e18: POP
00002e19: POP
00002e1a: PUSH1 0x40
00002e1c: SWAP2
00002e1d: SWAP1
00002e1e: SWAP2
00002e1f: ADD
00002e20: CALLDATALOAD
00002e21: SWAP1
00002e22: JUMP
00002e23: JUMPDEST
00002e24: PUSH1 0x00
00002e26: DUP1
00002e27: PUSH1 0x00
00002e29: PUSH1 0x60
00002e2b: DUP5
00002e2c: DUP7
00002e2d: SUB
00002e2e: SLT
00002e2f: ISZERO
00002e30: PUSH2 0x2e38
00002e33: JUMPI
00002e34: PUSH1 0x00
00002e36: DUP1
00002e37: REVERT
00002e38: JUMPDEST
00002e39: DUP4
00002e3a: CALLDATALOAD
00002e3b: PUSH2 0x2e43
00002e3e: DUP2
00002e3f: PUSH2 0x2b0d
00002e42: JUMP
00002e43: JUMPDEST
00002e44: SWAP6
00002e45: PUSH1 0x20
00002e47: DUP6
00002e48: ADD
00002e49: CALLDATALOAD
00002e4a: SWAP6
00002e4b: POP
00002e4c: PUSH1 0x40
00002e4e: SWAP1
00002e4f: SWAP5
00002e50: ADD
00002e51: CALLDATALOAD
00002e52: SWAP4
00002e53: SWAP3
00002e54: POP
00002e55: POP
00002e56: POP
00002e57: JUMP
00002e58: JUMPDEST
00002e59: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002e7a: PUSH1 0x00
00002e7c: MSTORE
00002e7d: PUSH1 0x21
00002e7f: PUSH1 0x04
00002e81: MSTORE
00002e82: PUSH1 0x24
00002e84: PUSH1 0x00
00002e86: REVERT
00002e87: JUMPDEST
00002e88: PUSH1 0x00
00002e8a: JUMPDEST
00002e8b: DUP4
00002e8c: DUP2
00002e8d: LT
00002e8e: ISZERO
00002e8f: PUSH2 0x2ea2
00002e92: JUMPI
00002e93: DUP2
00002e94: DUP2
00002e95: ADD
00002e96: MLOAD
00002e97: DUP4
00002e98: DUP3
00002e99: ADD
00002e9a: MSTORE
00002e9b: PUSH1 0x20
00002e9d: ADD
00002e9e: PUSH2 0x2e8a
00002ea1: JUMP
00002ea2: JUMPDEST
00002ea3: DUP4
00002ea4: DUP2
00002ea5: GT
00002ea6: ISZERO
00002ea7: PUSH2 0x2318
00002eaa: JUMPI
00002eab: POP
00002eac: POP
00002ead: PUSH1 0x00
00002eaf: SWAP2
00002eb0: ADD
00002eb1: MSTORE
00002eb2: JUMP
00002eb3: JUMPDEST
00002eb4: PUSH1 0x00
00002eb6: PUSH1 0x20
00002eb8: DUP3
00002eb9: DUP5
00002eba: SUB
00002ebb: SLT
00002ebc: ISZERO
00002ebd: PUSH2 0x2ec5
00002ec0: JUMPI
00002ec1: PUSH1 0x00
00002ec3: DUP1
00002ec4: REVERT
00002ec5: JUMPDEST
00002ec6: DUP2
00002ec7: MLOAD
00002ec8: PUSH8 0xffffffffffffffff
00002ed1: DUP2
00002ed2: GT
00002ed3: ISZERO
00002ed4: PUSH2 0x2edc
00002ed7: JUMPI
00002ed8: PUSH1 0x00
00002eda: DUP1
00002edb: REVERT
00002edc: JUMPDEST
00002edd: DUP3
00002ede: ADD
00002edf: PUSH1 0x1f
00002ee1: DUP2
00002ee2: ADD
00002ee3: DUP5
00002ee4: SGT
00002ee5: PUSH2 0x2eed
00002ee8: JUMPI
00002ee9: PUSH1 0x00
00002eeb: DUP1
00002eec: REVERT
00002eed: JUMPDEST
00002eee: DUP1
00002eef: MLOAD
00002ef0: PUSH2 0x2efb
00002ef3: PUSH2 0x2c50
00002ef6: DUP3
00002ef7: PUSH2 0x2bcf
00002efa: JUMP
00002efb: JUMPDEST
00002efc: DUP2
00002efd: DUP2
00002efe: MSTORE
00002eff: DUP6
00002f00: PUSH1 0x20
00002f02: DUP4
00002f03: DUP6
00002f04: ADD
00002f05: ADD
00002f06: GT
00002f07: ISZERO
00002f08: PUSH2 0x2f10
00002f0b: JUMPI
00002f0c: PUSH1 0x00
00002f0e: DUP1
00002f0f: REVERT
00002f10: JUMPDEST
00002f11: PUSH2 0x2f21
00002f14: DUP3
00002f15: PUSH1 0x20
00002f17: DUP4
00002f18: ADD
00002f19: PUSH1 0x20
00002f1b: DUP7
00002f1c: ADD
00002f1d: PUSH2 0x2e87
00002f20: JUMP
00002f21: JUMPDEST
00002f22: SWAP6
00002f23: SWAP5
00002f24: POP
00002f25: POP
00002f26: POP
00002f27: POP
00002f28: POP
00002f29: JUMP
00002f2a: JUMPDEST
00002f2b: PUSH1 0x00
00002f2d: DUP2
00002f2e: MLOAD
00002f2f: DUP1
00002f30: DUP5
00002f31: MSTORE
00002f32: PUSH2 0x2f42
00002f35: DUP2
00002f36: PUSH1 0x20
00002f38: DUP7
00002f39: ADD
00002f3a: PUSH1 0x20
00002f3c: DUP7
00002f3d: ADD
00002f3e: PUSH2 0x2e87
00002f41: JUMP
00002f42: JUMPDEST
00002f43: PUSH1 0x1f
00002f45: ADD
00002f46: PUSH1 0x1f
00002f48: NOT
00002f49: AND
00002f4a: SWAP3
00002f4b: SWAP1
00002f4c: SWAP3
00002f4d: ADD
00002f4e: PUSH1 0x20
00002f50: ADD
00002f51: SWAP3
00002f52: SWAP2
00002f53: POP
00002f54: POP
00002f55: JUMP
00002f56: JUMPDEST
00002f57: PUSH1 0x01
00002f59: PUSH1 0x01
00002f5b: PUSH1 0xa0
00002f5d: SHL
00002f5e: SUB
00002f5f: DUP6
00002f60: AND
00002f61: DUP2
00002f62: MSTORE
00002f63: DUP4
00002f64: PUSH1 0x20
00002f66: DUP3
00002f67: ADD
00002f68: MSTORE
00002f69: PUSH1 0x80
00002f6b: PUSH1 0x40
00002f6d: DUP3
00002f6e: ADD
00002f6f: MSTORE
00002f70: PUSH1 0x00
00002f72: PUSH2 0x2f7e
00002f75: PUSH1 0x80
00002f77: DUP4
00002f78: ADD
00002f79: DUP6
00002f7a: PUSH2 0x2f2a
00002f7d: JUMP
00002f7e: JUMPDEST
00002f7f: DUP3
00002f80: DUP2
00002f81: SUB
00002f82: PUSH1 0x60
00002f84: DUP5
00002f85: ADD
00002f86: MSTORE
00002f87: PUSH2 0x2a0c
00002f8a: DUP2
00002f8b: DUP6
00002f8c: PUSH2 0x2f2a
00002f8f: JUMP
00002f90: JUMPDEST
00002f91: DUP4
00002f92: DUP2
00002f93: MSTORE
00002f94: DUP3
00002f95: PUSH1 0x20
00002f97: DUP3
00002f98: ADD
00002f99: MSTORE
00002f9a: PUSH1 0x00
00002f9c: DUP3
00002f9d: MLOAD
00002f9e: PUSH2 0x2fae
00002fa1: DUP2
00002fa2: PUSH1 0x40
00002fa4: DUP6
00002fa5: ADD
00002fa6: PUSH1 0x20
00002fa8: DUP8
00002fa9: ADD
00002faa: PUSH2 0x2e87
00002fad: JUMP
00002fae: JUMPDEST
00002faf: SWAP2
00002fb0: SWAP1
00002fb1: SWAP2
00002fb2: ADD
00002fb3: PUSH1 0x40
00002fb5: ADD
00002fb6: SWAP5
00002fb7: SWAP4
00002fb8: POP
00002fb9: POP
00002fba: POP
00002fbb: POP
00002fbc: JUMP
00002fbd: JUMPDEST
00002fbe: DUP11
00002fbf: DUP2
00002fc0: MSTORE
00002fc1: DUP10
00002fc2: PUSH1 0x20
00002fc4: DUP3
00002fc5: ADD
00002fc6: MSTORE
00002fc7: DUP9
00002fc8: PUSH1 0x40
00002fca: DUP3
00002fcb: ADD
00002fcc: MSTORE
00002fcd: DUP8
00002fce: PUSH1 0x60
00002fd0: DUP3
00002fd1: ADD
00002fd2: MSTORE
00002fd3: DUP7
00002fd4: PUSH1 0x80
00002fd6: DUP3
00002fd7: ADD
00002fd8: MSTORE
00002fd9: DUP6
00002fda: PUSH1 0xa0
00002fdc: DUP3
00002fdd: ADD
00002fde: MSTORE
00002fdf: DUP5
00002fe0: PUSH1 0xc0
00002fe2: DUP3
00002fe3: ADD
00002fe4: MSTORE
00002fe5: DUP4
00002fe6: PUSH1 0xe0
00002fe8: DUP3
00002fe9: ADD
00002fea: MSTORE
00002feb: PUSH1 0x00
00002fed: PUSH2 0x0100
00002ff0: DUP4
00002ff1: DUP6
00002ff2: DUP3
00002ff3: DUP6
00002ff4: ADD
00002ff5: CALLDATACOPY
00002ff6: PUSH1 0x00
00002ff8: SWAP3
00002ff9: SWAP1
00002ffa: SWAP4
00002ffb: ADD
00002ffc: SWAP1
00002ffd: SWAP3
00002ffe: ADD
00002fff: SWAP1
00003000: DUP2
00003001: MSTORE
00003002: SWAP11
00003003: SWAP10
00003004: POP
00003005: POP
00003006: POP
00003007: POP
00003008: POP
00003009: POP
0000300a: POP
0000300b: POP
0000300c: POP
0000300d: POP
0000300e: JUMP
0000300f: JUMPDEST
00003010: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00003031: PUSH1 0x00
00003033: MSTORE
00003034: PUSH1 0x11
00003036: PUSH1 0x04
00003038: MSTORE
00003039: PUSH1 0x24
0000303b: PUSH1 0x00
0000303d: REVERT
0000303e: JUMPDEST
0000303f: PUSH1 0x00
00003041: DUP3
00003042: DUP3
00003043: LT
00003044: ISZERO
00003045: PUSH2 0x3050
00003048: JUMPI
00003049: PUSH2 0x3050
0000304c: PUSH2 0x300f
0000304f: JUMP
00003050: JUMPDEST
00003051: POP
00003052: SUB
00003053: SWAP1
00003054: JUMP
00003055: JUMPDEST
00003056: PUSH1 0x00
00003058: PUSH1 0x20
0000305a: DUP3
0000305b: DUP5
0000305c: SUB
0000305d: SLT
0000305e: ISZERO
0000305f: PUSH2 0x3067
00003062: JUMPI
00003063: PUSH1 0x00
00003065: DUP1
00003066: REVERT
00003067: JUMPDEST
00003068: POP
00003069: MLOAD
0000306a: SWAP2
0000306b: SWAP1
0000306c: POP
0000306d: JUMP
0000306e: JUMPDEST
0000306f: DUP3
00003070: DUP2
00003071: MSTORE
00003072: PUSH1 0x40
00003074: PUSH1 0x20
00003076: DUP3
00003077: ADD
00003078: MSTORE
00003079: PUSH1 0x00
0000307b: PUSH2 0x28a5
0000307e: PUSH1 0x40
00003080: DUP4
00003081: ADD
00003082: DUP5
00003083: PUSH2 0x2f2a
00003086: JUMP
00003087: JUMPDEST
00003088: PUSH1 0x00
0000308a: PUSH1 0x20
0000308c: DUP3
0000308d: DUP5
0000308e: SUB
0000308f: SLT
00003090: ISZERO
00003091: PUSH2 0x3099
00003094: JUMPI
00003095: PUSH1 0x00
00003097: DUP1
00003098: REVERT
00003099: JUMPDEST
0000309a: DUP2
0000309b: MLOAD
0000309c: PUSH1 0xff
0000309e: DUP2
0000309f: AND
000030a0: DUP2
000030a1: EQ
000030a2: PUSH2 0x282a
000030a5: JUMPI
000030a6: PUSH1 0x00
000030a8: DUP1
000030a9: REVERT
000030aa: JUMPDEST
000030ab: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000030cc: PUSH1 0x00
000030ce: MSTORE
000030cf: PUSH1 0x12
000030d1: PUSH1 0x04
000030d3: MSTORE
000030d4: PUSH1 0x24
000030d6: PUSH1 0x00
000030d8: REVERT
000030d9: JUMPDEST
000030da: PUSH1 0x00
000030dc: DUP3
000030dd: NOT
000030de: DUP3
000030df: GT
000030e0: ISZERO
000030e1: PUSH2 0x30ec
000030e4: JUMPI
000030e5: PUSH2 0x30ec
000030e8: PUSH2 0x300f
000030eb: JUMP
000030ec: JUMPDEST
000030ed: POP
000030ee: ADD
000030ef: SWAP1
000030f0: JUMP
000030f1: JUMPDEST
000030f2: PUSH1 0x01
000030f4: DUP2
000030f5: DUP2
000030f6: JUMPDEST
000030f7: DUP1
000030f8: DUP6
000030f9: GT
000030fa: ISZERO
000030fb: PUSH2 0x312c
000030fe: JUMPI
000030ff: DUP2
00003100: PUSH1 0x00
00003102: NOT
00003103: DIV
00003104: DUP3
00003105: GT
00003106: ISZERO
00003107: PUSH2 0x3112
0000310a: JUMPI
0000310b: PUSH2 0x3112
0000310e: PUSH2 0x300f
00003111: JUMP
00003112: JUMPDEST
00003113: DUP1
00003114: DUP6
00003115: AND
00003116: ISZERO
00003117: PUSH2 0x311f
0000311a: JUMPI
0000311b: SWAP2
0000311c: DUP2
0000311d: MUL
0000311e: SWAP2
0000311f: JUMPDEST
00003120: SWAP4
00003121: DUP5
00003122: SHR
00003123: SWAP4
00003124: SWAP1
00003125: DUP1
00003126: MUL
00003127: SWAP1
00003128: PUSH2 0x30f6
0000312b: JUMP
0000312c: JUMPDEST
0000312d: POP
0000312e: SWAP3
0000312f: POP
00003130: SWAP3
00003131: SWAP1
00003132: POP
00003133: JUMP
00003134: JUMPDEST
00003135: PUSH1 0x00
00003137: DUP3
00003138: PUSH2 0x3143
0000313b: JUMPI
0000313c: POP
0000313d: PUSH1 0x01
0000313f: PUSH2 0x07f3
00003142: JUMP
00003143: JUMPDEST
00003144: DUP2
00003145: PUSH2 0x3150
00003148: JUMPI
00003149: POP
0000314a: PUSH1 0x00
0000314c: PUSH2 0x07f3
0000314f: JUMP
00003150: JUMPDEST
00003151: DUP2
00003152: PUSH1 0x01
00003154: DUP2
00003155: EQ
00003156: PUSH2 0x3166
00003159: JUMPI
0000315a: PUSH1 0x02
0000315c: DUP2
0000315d: EQ
0000315e: PUSH2 0x3170
00003161: JUMPI
00003162: PUSH2 0x318c
00003165: JUMP
00003166: JUMPDEST
00003167: PUSH1 0x01
00003169: SWAP2
0000316a: POP
0000316b: POP
0000316c: PUSH2 0x07f3
0000316f: JUMP
00003170: JUMPDEST
00003171: PUSH1 0xff
00003173: DUP5
00003174: GT
00003175: ISZERO
00003176: PUSH2 0x3181
00003179: JUMPI
0000317a: PUSH2 0x3181
0000317d: PUSH2 0x300f
00003180: JUMP
00003181: JUMPDEST
00003182: POP
00003183: POP
00003184: PUSH1 0x01
00003186: DUP3
00003187: SHL
00003188: PUSH2 0x07f3
0000318b: JUMP
0000318c: JUMPDEST
0000318d: POP
0000318e: PUSH1 0x20
00003190: DUP4
00003191: LT
00003192: PUSH2 0x0133
00003195: DUP4
00003196: LT
00003197: AND
00003198: PUSH1 0x4e
0000319a: DUP5
0000319b: LT
0000319c: PUSH1 0x0b
0000319e: DUP5
0000319f: LT
000031a0: AND
000031a1: OR
000031a2: ISZERO
000031a3: PUSH2 0x31af
000031a6: JUMPI
000031a7: POP
000031a8: DUP2
000031a9: DUP2
000031aa: EXP
000031ab: PUSH2 0x07f3
000031ae: JUMP
000031af: JUMPDEST
000031b0: PUSH2 0x31b9
000031b3: DUP4
000031b4: DUP4
000031b5: PUSH2 0x30f1
000031b8: JUMP
000031b9: JUMPDEST
000031ba: DUP1
000031bb: PUSH1 0x00
000031bd: NOT
000031be: DIV
000031bf: DUP3
000031c0: GT
000031c1: ISZERO
000031c2: PUSH2 0x31cd
000031c5: JUMPI
000031c6: PUSH2 0x31cd
000031c9: PUSH2 0x300f
000031cc: JUMP
000031cd: JUMPDEST
000031ce: MUL
000031cf: SWAP4
000031d0: SWAP3
000031d1: POP
000031d2: POP
000031d3: POP
000031d4: JUMP
000031d5: JUMPDEST
000031d6: PUSH1 0x00
000031d8: PUSH2 0x282a
000031db: DUP4
000031dc: DUP4
000031dd: PUSH2 0x3134
000031e0: JUMP
000031e1: JUMPDEST
000031e2: PUSH1 0x00
000031e4: DUP2
000031e5: PUSH1 0x00
000031e7: NOT
000031e8: DIV
000031e9: DUP4
000031ea: GT
000031eb: DUP3
000031ec: ISZERO
000031ed: ISZERO
000031ee: AND
000031ef: ISZERO
000031f0: PUSH2 0x31fb
000031f3: JUMPI
000031f4: PUSH2 0x31fb
000031f7: PUSH2 0x300f
000031fa: JUMP
000031fb: JUMPDEST
000031fc: POP
000031fd: MUL
000031fe: SWAP1
000031ff: JUMP
00003200: JUMPDEST
00003201: PUSH32 0x416363657373436f6e74726f6c3a206163636f756e7420000000000000000000
00003222: DUP2
00003223: MSTORE
00003224: PUSH1 0x00
00003226: DUP4
00003227: MLOAD
00003228: PUSH2 0x3238
0000322b: DUP2
0000322c: PUSH1 0x17
0000322e: DUP6
0000322f: ADD
00003230: PUSH1 0x20
00003232: DUP9
00003233: ADD
00003234: PUSH2 0x2e87
00003237: JUMP
00003238: JUMPDEST
00003239: PUSH32 0x206973206d697373696e6720726f6c6520000000000000000000000000000000
0000325a: PUSH1 0x17
0000325c: SWAP2
0000325d: DUP5
0000325e: ADD
0000325f: SWAP2
00003260: DUP3
00003261: ADD
00003262: MSTORE
00003263: DUP4
00003264: MLOAD
00003265: PUSH2 0x3275
00003268: DUP2
00003269: PUSH1 0x28
0000326b: DUP5
0000326c: ADD
0000326d: PUSH1 0x20
0000326f: DUP9
00003270: ADD
00003271: PUSH2 0x2e87
00003274: JUMP
00003275: JUMPDEST
00003276: ADD
00003277: PUSH1 0x28
00003279: ADD
0000327a: SWAP5
0000327b: SWAP4
0000327c: POP
0000327d: POP
0000327e: POP
0000327f: POP
00003280: JUMP
00003281: JUMPDEST
00003282: PUSH1 0x20
00003284: DUP2
00003285: MSTORE
00003286: PUSH1 0x00
00003288: PUSH2 0x282a
0000328b: PUSH1 0x20
0000328d: DUP4
0000328e: ADD
0000328f: DUP5
00003290: PUSH2 0x2f2a
00003293: JUMP
00003294: JUMPDEST
00003295: PUSH1 0x00
00003297: PUSH1 0x20
00003299: DUP3
0000329a: DUP5
0000329b: SUB
0000329c: SLT
0000329d: ISZERO
0000329e: PUSH2 0x32a6
000032a1: JUMPI
000032a2: PUSH1 0x00
000032a4: DUP1
000032a5: REVERT
000032a6: JUMPDEST
000032a7: DUP2
000032a8: MLOAD
000032a9: PUSH2 0x282a
000032ac: DUP2
000032ad: PUSH2 0x2d66
000032b0: JUMP
000032b1: JUMPDEST
000032b2: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000032d3: PUSH1 0x00
000032d5: MSTORE
000032d6: PUSH1 0x32
000032d8: PUSH1 0x04
000032da: MSTORE
000032db: PUSH1 0x24
000032dd: PUSH1 0x00
000032df: REVERT
000032e0: JUMPDEST
000032e1: PUSH1 0x00
000032e3: DUP2
000032e4: PUSH2 0x32ef
000032e7: JUMPI
000032e8: PUSH2 0x32ef
000032eb: PUSH2 0x300f
000032ee: JUMP
000032ef: JUMPDEST
000032f0: POP
000032f1: PUSH1 0x00
000032f3: NOT
000032f4: ADD
000032f5: SWAP1
000032f6: JUMP
000032f7: JUMPDEST
000032f8: PUSH1 0x00
000032fa: DUP3
000032fb: MLOAD
000032fc: PUSH2 0x3309
000032ff: DUP2
00003300: DUP5
00003301: PUSH1 0x20
00003303: DUP8
00003304: ADD
00003305: PUSH2 0x2e87
00003308: JUMP
00003309: JUMPDEST
0000330a: SWAP2
0000330b: SWAP1
0000330c: SWAP2
0000330d: ADD
0000330e: SWAP3
0000330f: SWAP2
00003310: POP
00003311: POP
00003312: JUMP
00003313: INVALID
00003314: COINBASE
00003315: PUSH5 0x6472657373
0000331b: GASPRICE
0000331c: KECCAK256
0000331d: PUSH13 0x6f772d6c6576656c2064656c65
0000332b: PUSH8 0x6174652063616c6c
00003334: KECCAK256
00003335: PUSH7 0x61696c6564a264
0000333d: PUSH10 0x7066735822122075da34
00003348: CALLVALUE
00003349: PUSH20 0x46a25e491add0c998e2940a4762964efc077eab8
0000335e: CALLDATASIZE
0000335f: MLOAD
00003360: CALLER
00003361: UNKNOWN(0x25)
00003362: UNKNOWN(0xF9)
00003363: ADD
00003364: SWAP6
00003365: PUSH5 0x736f6c6343
0000336b: STOP
0000336c: ADDMOD
0000336d: MULMOD
0000336e: STOP
0000336f: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0x1c25d9ce36157491b36abf59d50b3c08fca98dd2d3ba6cf1c4d94b17b06c96f6
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0x1c25d9ce36157491b36abf59d50b3c08fca98dd2d3ba6cf1c4d94b17b06c96f6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xe63ab1e9",
            "selector": "0xe63ab1e9",
            "calldata_variants": [
                "0xe63ab1e9",
                "0xe63ab1e90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfb08f3a1",
            "selector": "0xfb08f3a1",
            "calldata_variants": [
                "0xfb08f3a1",
                "0xfb08f3a10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdec40a5",
            "selector": "0xfdec40a5",
            "calldata_variants": [
                "0xfdec40a5",
                "0xfdec40a50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd810e6f8",
            "selector": "0xd810e6f8",
            "calldata_variants": [
                "0xd810e6f8",
                "0xd810e6f80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd954863c",
            "selector": "0xd954863c",
            "calldata_variants": [
                "0xd954863c",
                "0xd954863c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcaa9147c",
            "selector": "0xcaa9147c",
            "calldata_variants": [
                "0xcaa9147c",
                "0xcaa9147c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb68448b",
            "selector": "0xcb68448b",
            "calldata_variants": [
                "0xcb68448b",
                "0xcb68448b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 10454,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x2ce527cca209143bc4a14c3e7c999e26113369053354d9f71d37093a3f18e9c1
call_targets: 0xde2d792ca3c4d02de3ce1cd1456d8d0990cc3fab
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x2ce527cca209143bc4a14c3e7c999e26113369053354d9f71d37093a3f18e9c1",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xde2d792ca3c4d02de3ce1cd1456d8d0990cc3fab"
    ],
    "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": "0xe63ab1e9",
            "selector": "0xe63ab1e9",
            "calldata_variants": [
                "0xe63ab1e9",
                "0xe63ab1e90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfb08f3a1",
            "selector": "0xfb08f3a1",
            "calldata_variants": [
                "0xfb08f3a1",
                "0xfb08f3a10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdec40a5",
            "selector": "0xfdec40a5",
            "calldata_variants": [
                "0xfdec40a5",
                "0xfdec40a50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd810e6f8",
            "selector": "0xd810e6f8",
            "calldata_variants": [
                "0xd810e6f8",
                "0xd810e6f80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd954863c",
            "selector": "0xd954863c",
            "calldata_variants": [
                "0xd954863c",
                "0xd954863c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcaa9147c",
            "selector": "0xcaa9147c",
            "calldata_variants": [
                "0xcaa9147c",
                "0xcaa9147c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb68448b",
            "selector": "0xcb68448b",
            "calldata_variants": [
                "0xcb68448b",
                "0xcb68448b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2070,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 6672,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 10694,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x2ce527cca209143bc4a14c3e7c999e26113369053354d9f71d37093a3f18e9c1
call_targets: 0xde2d792ca3c4d02de3ce1cd1456d8d0990cc3fab
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x2ce527cca209143bc4a14c3e7c999e26113369053354d9f71d37093a3f18e9c1",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xde2d792ca3c4d02de3ce1cd1456d8d0990cc3fab"
    ],
    "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": "0xe63ab1e9",
            "selector": "0xe63ab1e9",
            "calldata_variants": [
                "0xe63ab1e9",
                "0xe63ab1e90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfb08f3a1",
            "selector": "0xfb08f3a1",
            "calldata_variants": [
                "0xfb08f3a1",
                "0xfb08f3a10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdec40a5",
            "selector": "0xfdec40a5",
            "calldata_variants": [
                "0xfdec40a5",
                "0xfdec40a50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd810e6f8",
            "selector": "0xd810e6f8",
            "calldata_variants": [
                "0xd810e6f8",
                "0xd810e6f80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd954863c",
            "selector": "0xd954863c",
            "calldata_variants": [
                "0xd954863c",
                "0xd954863c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcaa9147c",
            "selector": "0xcaa9147c",
            "calldata_variants": [
                "0xcaa9147c",
                "0xcaa9147c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb68448b",
            "selector": "0xcb68448b",
            "calldata_variants": [
                "0xcb68448b",
                "0xcb68448b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd547741f",
            "selector": "0xd547741f",
            "calldata_variants": [
                "0xd547741f",
                "0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2070,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 6672,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 10694,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
low other codex Deposits trust `amount` rather than actual tokens received (deflationary/non-contract ERC20s can create unbacked L2 mints) 65 no
view
evidence_json
{
    "evidence": "`_deposit` updates accounting and sends the L2 mint message, then calls `safeTransferFrom` without verifying the actual amount received; comment notes fee-on-transfer incompatibility.",
    "locations": [
        "contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:330",
        "contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:359",
        "contracts/contracts/messaging/gateway/FuelERC20Gateway/FuelERC20GatewayV4.sol:362"
    ],
    "recommendation": "Measure `balanceBefore`/`balanceAfter` and mint based on the delta, or explicitly reject fee-on-transfer/non-standard tokens via allowlist plus `tokenAddress.code.length > 0` checks. Consider moving `sendMessage` after confirming the received amount.",
    "exploit_scenario": "An attacker deposits a fee-on-transfer or non-contract token address. The gateway increments `_deposits` and emits the L2 mint message based on `amount`, but the contract receives fewer (or zero) tokens. Later withdrawals for that token can revert due to insufficient balance or drain pooled liquidity for that token, leaving honest users unable to redeem."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 9
}