e06193e8-5116-4939-aa91-edaf29b45ab5
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 30282 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 73876 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 73877 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 73878 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 73879 | capability.graph | complete | 1 / 3 | 1 week ago |
| 73880 | detector.run | complete | 1 / 3 | 1 week ago |
| 73881 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:879421] OpenAI Codex v0.77.0 (research preview)
[codex:879421] --------
[codex:879421] workdir: /tmp/codex-multi-xqy00j11
[codex:879421] model: gpt-5.2-codex
[codex:879421] provider: openai
[codex:879421] approval: never
[codex:879421] sandbox: read-only
[codex:879421] reasoning effort: xhigh
[codex:879421] reasoning summaries: auto
[codex:879421] session id: 019b62dd-f351-7fe1-b479-214a195598d0
[codex:879421] --------
[codex:879421] user
[codex:879421] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:879421] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:879421] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:879421]
[codex:879421] Scope rules:
[codex:879421] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:879421] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:879421]
[codex:879421] Output MUST be valid JSON matching the provided schema.
[codex:879421] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:879421] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:879421]
[codex:879421] Output constraints (IMPORTANT):
[codex:879421] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:879421] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:879421] mcp startup: no servers
[codex:879421]
[codex:879421] thinking
[codex:879421] **Preparing to read audit instructions**
[codex:879421] exec
[codex:879421] /bin/bash -lc ls in /tmp/codex-multi-xqy00j11 succeeded in 5ms:
[codex:879421] AUDIT_BUNDLE.txt
[codex:879421] codex-output-schema.json
[codex:879421] contracts
[codex:879421]
[codex:879421] thinking
[codex:879421] **Reading AUDIT_BUNDLE.txt**
[codex:879421] exec
[codex:879421] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:879421]
[codex:879421] ================================================================================
[codex:879421] FILE: contracts/@openzeppelin/contracts/access/Ownable.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
[codex:879421]
[codex:879421] pragma solidity ^0.8.0;
[codex:879421]
[codex:879421] import "../utils/Context.sol";
[codex:879421]
[codex:879421] /**
[codex:879421] * @dev Contract module which provides a basic access control mechanism, where
[codex:879421] * there is an account (an owner) that can be granted exclusive access to
[codex:879421] * specific functions.
[codex:879421] *
[codex:879421] * By default, the owner account will be the one that deploys the contract. This
[codex:879421] * can later be changed with {transferOwnership}.
[codex:879421] *
[codex:879421]
[codex:879421] thinking
[codex:879421] **Planning full file content retrieval**
[codex:879421]
[codex:879421] I noticed the audit bundle file output was truncated, so I want to avoid missing anything crucial by reading the file in smaller parts or using ripgrep to extract first-party contract sections for thorough review without including third-party code. I'll use ripgrep to list and selectively parse the relevant contract files inside contracts/contracts to ensure I capture all needed content.
[codex:879421] exec
[codex:879421] /bin/bash -lc 'rg -n "''^FILE: contracts/contracts" AUDIT_BUNDLE.txt' in /tmp/codex-multi-xqy00j11 succeeded in 7ms:
[codex:879421] 2551:FILE: contracts/contracts/Bridge.sol
[codex:879421] 2875:FILE: contracts/contracts/GasOracle.sol
[codex:879421] 2992:FILE: contracts/contracts/GasUsage.sol
[codex:879421] 3041:FILE: contracts/contracts/Messenger.sol
[codex:879421] 3214:FILE: contracts/contracts/MessengerGateway.sol
[codex:879421] 3323:FILE: contracts/contracts/Pool.sol
[codex:879421] 3770:FILE: contracts/contracts/RewardManager.sol
[codex:879421] 3919:FILE: contracts/contracts/Router.sol
[codex:879421] 4070:FILE: contracts/contracts/WormholeMessenger.sol
[codex:879421] 4176:FILE: contracts/contracts/interfaces/IBridge.sol
[codex:879421] 4246:FILE: contracts/contracts/interfaces/IGasOracle.sol
[codex:879421] 4272:FILE: contracts/contracts/interfaces/IMessenger.sol
[codex:879421] 4288:FILE: contracts/contracts/interfaces/IRouter.sol
[codex:879421] 4302:FILE: contracts/contracts/interfaces/IWormhole.sol
[codex:879421] 4391:FILE: contracts/contracts/libraries/HashUtils.sol
[codex:879421] 4453:FILE: contracts/contracts/test/TestBridgeForSwap.sol
[codex:879421] 4531:FILE: contracts/contracts/test/TestPool.sol
[codex:879421] 4559:FILE: contracts/contracts/test/TestPoolForRewards.sol
[codex:879421]
[codex:879421] thinking
[codex:879421] **Extracting main smart contract files**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '2551,2874p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 5ms:
[codex:879421] FILE: contracts/contracts/Bridge.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:879421] import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:879421] import {IBridge, MessengerProtocol} from "./interfaces/IBridge.sol";
[codex:879421] import {Router} from "./Router.sol";
[codex:879421] import {Messenger} from "./Messenger.sol";
[codex:879421] import {MessengerGateway} from "./MessengerGateway.sol";
[codex:879421] import {IGasOracle} from "./interfaces/IGasOracle.sol";
[codex:879421] import {GasUsage} from "./GasUsage.sol";
[codex:879421] import {WormholeMessenger} from "./WormholeMessenger.sol";
[codex:879421] import {HashUtils} from "./libraries/HashUtils.sol";
[codex:879421]
[codex:879421] /**
[codex:879421] * @title Bridge
[codex:879421] * @dev A contract with functions to facilitate bridging tokens across different blockchains.
[codex:879421] */
[codex:879421]
[codex:879421] thinking
[codex:879421] **Continuing file inspection**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '2875,2991p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] FILE: contracts/contracts/GasOracle.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:879421] import {IGasOracle} from "./interfaces/IGasOracle.sol";
[codex:879421]
[codex:879421] /**
[codex:879421] * @title GasOracle
[codex:879421] * @dev A contract that provides gas price and native token USD price data on other blockchains.
[codex:879421] */
[codex:879421] contract GasOracle is Ownable, IGasOracle {
[codex:879421] struct ChainData {
[codex:879421] // price of the chain's native token in USD
[codex:879421] uint128 price;
[codex:879421] // price of a gas unit in the chain's native token with precision according to the const ORACLE_PRECISION
[codex:879421] uint128 gasPrice;
[codex:879421] }
[codex:879421] uint private constant ORACLE_PRECISION = 18;
[codex:879421]
[codex:879421] thinking
[codex:879421] **Continuing GasUsage exploration**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '2992,3040p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] FILE: contracts/contracts/GasUsage.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:879421] import {IGasOracle} from "./interfaces/IGasOracle.sol";
[codex:879421]
[codex:879421] /**
[codex:879421] * @dev Contract module which allows children to store typical gas usage of a certain transaction on another chain.
[codex:879421] */
[codex:879421] abstract contract GasUsage is Ownable {
[codex:879421] IGasOracle internal gasOracle;
[codex:879421] mapping(uint chainId => uint amount) public gasUsage;
[codex:879421]
[codex:879421] constructor(IGasOracle gasOracle_) {
[codex:879421] gasOracle = gasOracle_;
[codex:879421] }
[codex:879421]
[codex:879421] /**
[codex:879421]
[codex:879421] thinking
[codex:879421] **Identifying Messenger.sol file**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '3041,3213p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 5ms:
[codex:879421] FILE: contracts/contracts/Messenger.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:879421] import {IGasOracle} from "./interfaces/IGasOracle.sol";
[codex:879421] import {IMessenger} from "./interfaces/IMessenger.sol";
[codex:879421] import {GasUsage} from "./GasUsage.sol";
[codex:879421] import {HashUtils} from "./libraries/HashUtils.sol";
[codex:879421]
[codex:879421] /**
[codex:879421] * @dev This contract implements the Allbridge messenger cross-chain communication protocol.
[codex:879421] */
[codex:879421] contract Messenger is Ownable, GasUsage, IMessenger {
[codex:879421] using HashUtils for bytes32;
[codex:879421] // current chain ID
[codex:879421] uint public immutable chainId;
[codex:879421] // supported destination chain IDs
[codex:879421] bytes32 public otherChainIds;
[codex:879421]
[codex:879421] thinking
[codex:879421] **Proceeding to MessengerGateway**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '3214,3322p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] FILE: contracts/contracts/MessengerGateway.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:879421] import {IGasOracle} from "./interfaces/IGasOracle.sol";
[codex:879421] import {Messenger} from "./Messenger.sol";
[codex:879421] import {MessengerProtocol} from "./interfaces/IBridge.sol";
[codex:879421] import {WormholeMessenger} from "./WormholeMessenger.sol";
[codex:879421]
[codex:879421] /**
[codex:879421] * @dev This abstract contract provides functions for cross-chain communication and supports different messaging
[codex:879421] * protocols.
[codex:879421] */
[codex:879421] abstract contract MessengerGateway is Ownable {
[codex:879421] Messenger private allbridgeMessenger;
[codex:879421] WormholeMessenger private wormholeMessenger;
[codex:879421]
[codex:879421] constructor(Messenger allbridgeMessenger_, WormholeMessenger wormholeMessenger_) {
[codex:879421]
[codex:879421] thinking
[codex:879421] **Switching to Pool.sol**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '3323,3769p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] FILE: contracts/contracts/Pool.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:879421] import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:879421] import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
[codex:879421] import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";
[codex:879421] import {RewardManager} from "./RewardManager.sol";
[codex:879421]
[codex:879421] /**
[codex:879421] * 4AD - D = 4A(x + y) - (D³ / 4xy)
[codex:879421] * X - is value of real stable token
[codex:879421] * Y - is value of virtual usd
[codex:879421] */
[codex:879421] contract Pool is RewardManager {
[codex:879421] using SafeERC20 for ERC20;
[codex:879421] uint private constant SYSTEM_PRECISION = 3;
[codex:879421] int private constant PP = 1e4; // Price Precision
[codex:879421]
[codex:879421] thinking
[codex:879421] **Moving to RewardManager**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '3770,3918p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] FILE: contracts/contracts/RewardManager.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:879421] import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:879421] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:879421]
[codex:879421] contract RewardManager is Ownable, ERC20 {
[codex:879421] using SafeERC20 for ERC20;
[codex:879421] uint private constant P = 52;
[codex:879421] uint internal constant BP = 1e4;
[codex:879421]
[codex:879421] // Accumulated rewards per share, shifted left by P bits
[codex:879421] uint public accRewardPerShareP;
[codex:879421]
[codex:879421] // Reward token
[codex:879421] ERC20 public immutable token;
[codex:879421] // Info of each user reward debt
[codex:879421]
[codex:879421] thinking
[codex:879421] **Switching to Router.sol**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '3919,4069p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 5ms:
[codex:879421] FILE: contracts/contracts/Router.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:879421] import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:879421] import {IRouter} from "./interfaces/IRouter.sol";
[codex:879421] import {MessengerProtocol} from "./interfaces/IBridge.sol";
[codex:879421] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:879421] import {Pool} from "./Pool.sol";
[codex:879421]
[codex:879421] abstract contract Router is Ownable, IRouter {
[codex:879421] using SafeERC20 for ERC20;
[codex:879421] uint private immutable chainPrecision;
[codex:879421] uint internal constant ORACLE_PRECISION = 18;
[codex:879421]
[codex:879421] mapping(bytes32 tokenId => Pool) public pools;
[codex:879421] // precomputed values to divide by to change the precision from the Gas Oracle precision to the token precision
[codex:879421] mapping(address tokenAddress => uint scalingFactor) internal fromGasOracleScalingFactor;
[codex:879421]
[codex:879421] thinking
[codex:879421] **Checking WormholeMessenger details**
[codex:879421] exec
[codex:879421] /bin/bash -lc "sed -n '4070,4175p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] FILE: contracts/contracts/WormholeMessenger.sol
[codex:879421] ================================================================================
[codex:879421] // SPDX-License-Identifier: MIT
[codex:879421] pragma solidity ^0.8.18;
[codex:879421]
[codex:879421] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:879421] import {IGasOracle} from "./interfaces/IGasOracle.sol";
[codex:879421] import {IMessenger} from "./interfaces/IMessenger.sol";
[codex:879421] import {IWormhole} from "./interfaces/IWormhole.sol";
[codex:879421] import {GasUsage} from "./GasUsage.sol";
[codex:879421] import {GasOracle} from "./GasOracle.sol";
[codex:879421] import {HashUtils} from "./libraries/HashUtils.sol";
[codex:879421]
[codex:879421] contract WormholeMessenger is Ownable, GasUsage {
[codex:879421] using HashUtils for bytes32;
[codex:879421]
[codex:879421] IWormhole private immutable wormhole;
[codex:879421] uint public immutable chainId;
[codex:879421] bytes32 public otherChainIds;
[codex:879421]
[codex:879421]
[codex:879421]
[codex:879421]
[codex:879421]
[codex:879421]
[codex:879421] thinking
[codex:879421] **Reviewing smart contract vulnerabilities in detail**
[codex:879421]
[codex:879421] I'm carefully analyzing the Bridge, Router, Pool, Messenger, and related contracts for potential security issues, focusing on reentrancy, access control, signature validation, oracle and math risks, and upgradeability concerns, weighing how state updates and external calls might expose exploits. There's a lot here about subtle reentrancy possibilities especially with ERC777 tokens, signature validation nuances, and owner-controlled oracle dependencies, so I want to sort findings by severity and type as requested.
[codex:879421] thinking
[codex:879421] **Examining message handling and token transfer nuances**
[codex:879421]
[codex:879421] I'm investigating how reentrancy and message hashing handle chain IDs and token transfer edge cases, especially around bridging message uniqueness, fee calculations, and potential issues with fee-on-transfer tokens. There’s subtle complexity in how messages are hashed with chain bytes replaced and how token transfers might cause accounting mismatches or reentrancy, so I’m focusing on these mechanics and their security impact.
[codex:879421] thinking
[codex:879421] **Analyzing message sender hashing and signature flow**
[codex:879421]
[codex:879421] I'm untangling how messages are hashed with sender addresses in sendMessage and received in receiveMessage across Allbridge and Wormhole messengers, focusing on consistency in keys and signature verification. I’m verifying how Bridge uses these messageWithSender hashes to check receipt and the subtle interactions of validators signing events versus raw messages to confirm proper bridging enforcement.
[codex:879421] thinking
[codex:879421] **Evaluating signature validation and reentrancy risks**
[codex:879421]
[codex:879421] I'm examining possible gaps in signature checks, replay protections, and how external calls in Bridge and Pool contracts could allow reentrancy or state inconsistencies, especially around token transfers and reward calculations. I’m also considering message duplication handling and how messaging validations rely on trusted mappings.
[codex:879421] thinking
[codex:879421] **Analyzing message fee handling and hashing logic**
[codex:879421]
[codex:879421] I'm checking how message fees are calculated and passed during messaging calls, especially differences between Allbridge and Wormhole messengers, and how messageWithSender hashes combine sender and message data, ensuring uniqueness without risking collisions.
[codex:879421] exec
[codex:879421] /bin/bash -lc 'rg -n "delegatecall" AUDIT_BUNDLE.txt' in /tmp/codex-multi-xqy00j11 succeeded in 7ms:
[codex:879421] 972: (bool success, bytes memory returndata) = target.delegatecall(data);
[codex:879421]
[codex:879421]
[codex:879421]
[codex:879421]
[codex:879421]
[codex:879421] thinking
[codex:879421] **Analyzing complex contract interactions and potential vulnerabilities**
[codex:879421]
[codex:879421] I'm carefully reviewing the interplay of Bridge, Messenger, and Wormhole contracts focusing on signature validation, replay protections, nonce handling, fee checks, and reentrancy risks. There’s a lot going on with message uniqueness relying on user-provided nonces, subtle potential DoS via front-running, fee accounting nuances, and some lower-risk reentrancy scenarios involving token transfers. I’m zeroing in on where assumptions could break or attackers might exploit user input or contract states, trying to distinguish true vulnerabilities from operational edge cases.
[codex:879421] thinking
[codex:879421] **Reviewing subtle token handling and reentrancy concerns**
[codex:879421]
[codex:879421] I’m digging into fee exemptions tied to the rebalancer address, admin-controlled router permissions, and nuanced token accounting—especially around fee-on-transfer tokens that could skew pool balances. I’m also examining external self-calls and potential reentrancy during token transfers, plus risks from chain ID truncation and signature domain separation. There’s a lot of intricate behavior where owner settings and token standards influence security boundaries.
[codex:879421] thinking
[codex:879421] **Analyzing message replay and arithmetic edge cases**
[codex:879421]
[codex:879421] I'm exploring risks around signature replay across messengers due to missing domain separation, plus subtle division-by-zero possibilities in core math functions when handling very small amounts or zero balances. There’s a lot to unpack around message hashing nuances, external call order, and subtle token handling that might cause unexpected reverts or replay scenarios.
[codex:879421] thinking
[codex:879421] **Reviewing token handling and message validation intricacies**
[codex:879421]
[codex:879421] I’m digging through token transfers, pool balance checks, and message hashing logic, especially how tokens with transfer fees might disrupt accounting. There’s a complex interplay between message signatures, chain ID domain separation, and owner-controlled mappings that could affect bridging correctness. The details in token decimals, reentrancy patterns, and reward calculations offer interesting angles to consider.
[codex:879421] thinking
[codex:879421] **Analyzing bytes32 recipient ambiguity and owner minting control**
[codex:879421]
[codex:879421] I'm exploring how the use of bytes32 for recipients might cause message ambiguities due to high-byte differences that don't affect the actual address. Also checking how owner-controlled LP token minting via adjustTotalLpAmount could dilute holders despite seeming necessary for rounding corrections. There's a lot to unpack here about message uniqueness and centralization risks.
[codex:879421] exec
[codex:879421] /bin/bash -lc "rg -n \"call\\{value\" AUDIT_BUNDLE.txt" in /tmp/codex-multi-xqy00j11 succeeded in 7ms:
[codex:879421] 850: (bool success, ) = recipient.call{value: amount}("");
[codex:879421] 922: (bool success, bytes memory returndata) = target.call{value: value}(data);
[codex:879421] 2707: payable(address(uint160(uint(recipient)))).call{value: msg.value}("");
[codex:879421]
[codex:879421] thinking
[codex:879421] **Analyzing Bridge contract security nuances**
[codex:879421] exec
[codex:879421] /bin/bash -lc 'rg -n "swapAndBridge" contracts/contracts/Bridge.sol' in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] 93: function swapAndBridge(
[codex:879421] 115: * through the `swapAndBridge` function on the source chain.
[codex:879421]
[codex:879421] thinking
[codex:879421] **Analyzing smart contract message handling and access controls**
[codex:879421]
[codex:879421] I'm carefully reviewing the message sending and receiving flows, examining potential weaknesses in signature validation, reentrancy risks through token decimals calls, access controls on critical setters, and possible flawed assumptions around chain IDs for message origin and destination. I'm checking complex interactions among Messenger, Bridge, and Routers for logical or security oversights, while considering if any validators or owner-controlled functions could be exploited or bypassed. This includes scrutinizing gas cost calculations, unchecked arithmetic, and chain ID validations to assess if any vulnerabilities or misconfigurations exist. Let's explore these findings closely!
[codex:879421] exec
[codex:879421] /bin/bash -lc 'rg -n "unchecked" contracts/contracts' in /tmp/codex-multi-xqy00j11 succeeded in 9ms:
[codex:879421] contracts/contracts/Messenger.sol:54: unchecked {
[codex:879421] contracts/contracts/Messenger.sol:138: unchecked {
[codex:879421] contracts/contracts/Messenger.sol:146: unchecked {
[codex:879421] contracts/contracts/GasUsage.sol:41: unchecked {
[codex:879421] contracts/contracts/Bridge.sol:282: unchecked {
[codex:879421] contracts/contracts/WormholeMessenger.sol:53: unchecked {
[codex:879421] contracts/contracts/RewardManager.sol:91: unchecked {
[codex:879421] contracts/contracts/Pool.sol:251: // We can use unchecked here because feeShareBP <= BP
[codex:879421] contracts/contracts/Pool.sol:252: unchecked {
[codex:879421] contracts/contracts/Pool.sol:377: unchecked {
[codex:879421] contracts/contracts/Pool.sol:407: unchecked {
[codex:879421] contracts/contracts/Pool.sol:422: unchecked {
[codex:879421]
[codex:879421] thinking
[codex:879421] **Analyzing potential vulnerabilities**
[codex:879421] exec
[codex:879421] /bin/bash -lc "nl -ba contracts/contracts/Router.sol | sed -n '90,160p'" in /tmp/codex-multi-xqy00j11 succeeded in 8ms:
[codex:879421] 90 * @dev Adds the address of the `Pool` contract to the list of supported liquidity pools.
[codex:879421] 91 * @param pool The address of the `Pool` contract.
[codex:879421] 92 * @param token The address of the token in the liquidity pool.
[codex:879421] 93 */
[codex:879421] 94 function addPool(Pool pool, bytes32 token) external onlyOwner {
[codex:879421] 95 pools[token] = pool;
[codex:879421] 96 address tokenAddress = address(uint160(uint(token)));
[codex:879421] 97 uint tokenDecimals = ERC20(tokenAddress).decimals();
[codex:879421] 98 bridgingFeeConversionScalingFactor[tokenAddress] = 10 ** (ORACLE_PRECISION - tokenDecimals + chainPrecision);
[codex:879421] 99 fromGasOracleScalingFactor[tokenAddress] = 10 ** (ORACLE_PRECISION - tokenDecimals);
[codex:879421] 100 }
[codex:879421] 101
[codex:879421] 102 /**
[codex:879421] 103 * @dev Switches off the possibility to make swaps.
[codex:879421] 104 */
[codex:879421] 105 function stopSwap() external onlyStopAuthority {
[codex:879421] 106 canSwap = 0;
[codex:879421] 107 }
[codex:879421] 108
[codex:879421] 109 /**
[codex:879421]
[codex:879421] thinking
[codex:879421] **Referencing specific line numbers**
[codex:879421] exec
[codex:879421] /bin/bash -lc "nl -ba contracts/contracts/Pool.sol | sed -n '70,190p'" in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] 70 modifier onlyRouter() {
[codex:879421] 71 require(router == msg.sender, "Pool: is not router");
[codex:879421] 72 _;
[codex:879421] 73 }
[codex:879421] 74
[codex:879421] 75 /**
[codex:879421] 76 * @dev Throws if called by any account other than the stopAuthority.
[codex:879421] 77 */
[codex:879421] 78 modifier onlyStopAuthority() {
[codex:879421] 79 require(stopAuthority == msg.sender, "Pool: is not stopAuthority");
[codex:879421] 80 _;
[codex:879421] 81 }
[codex:879421] 82
[codex:879421] 83 /**
[codex:879421] 84 * @dev Modifier to prevent function from disbalancing the pool over a threshold defined by `balanceRatioMinBP`
[codex:879421] 85 */
[codex:879421] 86 modifier validateBalanceRatio() {
[codex:879421] 87 _;
[codex:879421] 88 if (tokenBalance > vUsdBalance) {
[codex:879421] 89 require((vUsdBalance * BP) / tokenBalance >= balanceRatioMinBP, "Pool: low vUSD balance");
[codex:879421]
[codex:879421] thinking
[codex:879421] **Searching for swapToVUsd usage**
[codex:879421] exec
[codex:879421] /bin/bash -lc "nl -ba contracts/contracts/Pool.sol | sed -n '185,270p'" in /tmp/codex-multi-xqy00j11 succeeded in 7ms:
[codex:879421] 185 function swapToVUsd(
[codex:879421] 186 address user,
[codex:879421] 187 uint amount,
[codex:879421] 188 bool zeroFee
[codex:879421] 189 ) external onlyRouter validateBalanceRatio returns (uint) {
[codex:879421] 190 uint result; // 0 by default
[codex:879421] 191 uint fee;
[codex:879421] 192 if (amount > 0) {
[codex:879421] 193 if (!zeroFee) {
[codex:879421] 194 fee = (amount * feeShareBP) / BP;
[codex:879421] 195 }
[codex:879421] 196 uint amountIn = _toSystemPrecision(amount - fee);
[codex:879421] 197 // Incorporate rounding dust into the fee
[codex:879421] 198 fee = amount - _fromSystemPrecision(amountIn);
[codex:879421] 199
[codex:879421] 200 // Adjust token and reserve balances after the fee is applied
[codex:879421] 201 tokenBalance += amountIn;
[codex:879421] 202 reserves += amountIn;
[codex:879421] 203
[codex:879421] 204 uint vUsdNewAmount = this.getY(tokenBalance);
[codex:879421]
[codex:879421] thinking
[codex:879421] **Identifying fee and slippage vulnerabilities**
[codex:879421] exec
[codex:879421] /bin/bash -lc "nl -ba contracts/contracts/Bridge.sol | sed -n '120,190p'" in /tmp/codex-multi-xqy00j11 succeeded in 7ms:
[codex:879421] 120 * @param nonce A unique nonce for the bridging transaction.
[codex:879421] 121 * @param messenger The protocol used to relay the message.
[codex:879421] 122 * @param receiveAmountMin The minimum amount of receiveToken required to be received.
[codex:879421] 123 */
[codex:879421] 124 function receiveTokens(
[codex:879421] 125 uint amount,
[codex:879421] 126 bytes32 recipient,
[codex:879421] 127 uint sourceChainId,
[codex:879421] 128 bytes32 receiveToken,
[codex:879421] 129 uint nonce,
[codex:879421] 130 MessengerProtocol messenger,
[codex:879421] 131 uint receiveAmountMin
[codex:879421] 132 ) external payable override whenCanSwap {
[codex:879421] 133 require(otherBridges[sourceChainId] != bytes32(0), "Bridge: source not registered");
[codex:879421] 134 bytes32 messageWithSender = this
[codex:879421] 135 .hashMessage(amount, recipient, sourceChainId, chainId, receiveToken, nonce, messenger)
[codex:879421] 136 .hashWithSender(otherBridges[sourceChainId]);
[codex:879421] 137
[codex:879421] 138 require(processedMessages[messageWithSender] == 0, "Bridge: message processed");
[codex:879421] 139 // mark the transfer as received on the destination chain
[codex:879421]
[codex:879421] thinking
[codex:879421] **Analyzing slippage and token fee vulnerabilities**
[codex:879421]
[codex:879421] I’m examining how `receiveAmountMin` isn’t included in the signed message hash, letting callers set it freely, which opens up price manipulation risks categorized as "oracle." Also, fee-on-transfer tokens cause accounting mismatches due to assuming exact transfer amounts, leading to potential pool draining; I’m classifying this as a "math" issue. I’m preparing detailed findings with evidence, recommendations, and relevant line numbers in the Bridge contracts.
[codex:879421] exec
[codex:879421] /bin/bash -lc "nl -ba contracts/contracts/Bridge.sol | sed -n '210,280p'" in /tmp/codex-multi-xqy00j11 succeeded in 6ms:
[codex:879421] 210 * - the gas cost of making the receive transaction on the destination chain,
[codex:879421] 211 * - the gas cost of sending the message to the destination chain using the specified messenger protocol.
[codex:879421] 212 * @param destinationChainId The ID of the destination chain.
[codex:879421] 213 * @param messenger The chosen way of delivering the message across chains.
[codex:879421] 214 * @param tokenAddress The address of the token contract on the source chain.
[codex:879421] 215 * @return The total price of bridging, with the precision according to the token's `decimals()` value.
[codex:879421] 216 */
[codex:879421] 217 function getBridgingCostInTokens(
[codex:879421] 218 uint destinationChainId,
[codex:879421] 219 MessengerProtocol messenger,
[codex:879421] 220 address tokenAddress
[codex:879421] 221 ) external view override returns (uint) {
[codex:879421] 222 return
[codex:879421] 223 gasOracle.getTransactionGasCostInUSD(
[codex:879421] 224 destinationChainId,
[codex:879421] 225 gasUsage[destinationChainId] + getMessageGasUsage(destinationChainId, messenger)
[codex:879421] 226 ) / fromGasOracleScalingFactor[tokenAddress];
[codex:879421] 227 }
[codex:879421] 228
[codex:879421] 229 /**
[codex:879421]
[codex:879421] thinking
[codex:879421] **Preparing detailed audit findings in JSON**
[codex:879421]
[codex:879421] I'm putting together a JSON object summarizing two medium-severity issues found: one about untrusted relayers controlling slippage in the bridge’s receiveTokens, and another regarding accounting assumptions that fail with fee-on-transfer tokens. I’m carefully including relevant file locations, evidence, and recommendations, ensuring the JSON conforms exactly to the required schema.
[codex:879421] codex
[codex:879421] {"no_findings":false,"summary":"Two issues found: untrusted callers can choose the slippage limit when completing bridge receives, and pool accounting assumes full-value transfers, which breaks for fee-on-transfer/rebasing tokens.","findings":[{"severity":"medium","category":"oracle","title":"Untrusted relayer controls slippage on bridge receive (min output not authenticated)","exploit_scenario":"A third party monitors inbound messages, manipulates the destination pool price (or waits for unfavorable conditions), then calls `receiveTokens` with `receiveAmountMin = 0` to force execution at a bad rate before the recipient can act. Because `receiveAmountMin` is not part of the signed message, this permanently consumes the message and the recipient receives fewer tokens than expected; the attacker can back-run to profit from the price distortion.","recommendation":"Include `receiveAmountMin` (and ideally a deadline) in the message hash/signature, or restrict `receiveTokens` to the recipient/authorized relayer. Alternatively, require an off-chain signature from the recipient over `(receiveAmountMin, deadline)` and verify it on-chain before swapping.","evidence":"`receiveTokens` accepts an arbitrary `receiveAmountMin` from any caller, while `hashMessage` does not include this parameter, so it is not authenticated by the cross-chain message.","locations":["contracts/contracts/Bridge.sol:124","contracts/contracts/Bridge.sol:240"]},{"severity":"medium","category":"math","title":"Accounting assumes full token transfers, enabling fee-on-transfer/rebasing token drains","exploit_scenario":"If a supported token charges a transfer fee or rebases, the pool credits the full `amount` even though fewer tokens arrive. An attacker can repeatedly swap/deposit/withdraw to extract the phantom balance (e.g., swap 100 tokens with 1% fee, pool receives 99 but credits 100), eventually draining real liquidity.","recommendation":"Use balance-delta accounting: compute actual received amount via `balanceOf` before/after transfer and use that value for pool/reserve updates. Alternatively, enforce a strict allowlist of standard ERC20 tokens and revert if `balanceOf` change != `amount`.","evidence":"Router transfers the user-supplied `amount` and passes that same value into pool accounting; deposit/swap logic never reconciles actual token receipts.","locations":["contracts/contracts/Router.sol:141","contracts/contracts/Pool.sol:116","contracts/contracts/Pool.sol:185"]}]}
[codex:879421] tokens used
[codex:879421] 84,297
[codex:879421] {"no_findings":false,"summary":"Two issues found: untrusted callers can choose the slippage limit when completing bridge receives, and pool accounting assumes full-value transfers, which breaks for fee-on-transfer/rebasing tokens.","findings":[{"severity":"medium","category":"oracle","title":"Untrusted relayer controls slippage on bridge receive (min output not authenticated)","exploit_scenario":"A third party monitors inbound messages, manipulates the destination pool price (or waits for unfavorable conditions), then calls `receiveTokens` with `receiveAmountMin = 0` to force execution at a bad rate before the recipient can act. Because `receiveAmountMin` is not part of the signed message, this permanently consumes the message and the recipient receives fewer tokens than expected; the attacker can back-run to profit from the price distortion.","recommendation":"Include `receiveAmountMin` (and ideally a deadline) in the message hash/signature, or restrict `receiveTokens` to the recipient/authorized relayer. Alternatively, require an off-chain signature from the recipient over `(receiveAmountMin, deadline)` and verify it on-chain before swapping.","evidence":"`receiveTokens` accepts an arbitrary `receiveAmountMin` from any caller, while `hashMessage` does not include this parameter, so it is not authenticated by the cross-chain message.","locations":["contracts/contracts/Bridge.sol:124","contracts/contracts/Bridge.sol:240"]},{"severity":"medium","category":"math","title":"Accounting assumes full token transfers, enabling fee-on-transfer/rebasing token drains","exploit_scenario":"If a supported token charges a transfer fee or rebases, the pool credits the full `amount` even though fewer tokens arrive. An attacker can repeatedly swap/deposit/withdraw to extract the phantom balance (e.g., swap 100 tokens with 1% fee, pool receives 99 but credits 100), eventually draining real liquidity.","recommendation":"Use balance-delta accounting: compute actual received amount via `balanceOf` before/after transfer and use that value for pool/reserve updates. Alternatively, enforce a strict allowlist of standard ERC20 tokens and revert if `balanceOf` change != `amount`.","evidence":"Router transfers the user-supplied `amount` and passes that same value into pool accounting; deposit/swap logic never reconciles actual token receipts.","locations":["contracts/contracts/Router.sol:141","contracts/contracts/Pool.sol:116","contracts/contracts/Pool.sol:185"]}]}
{
"codex": {
"ran_at": "2025-12-28T03:05:41.622038+00:00",
"returncode": 0
},
"summary": "Two issues found: untrusted callers can choose the slippage limit when completing bridge receives, and pool accounting assumes full-value transfers, which breaks for fee-on-transfer/rebasing tokens.",
"raw_final": {
"summary": "Two issues found: untrusted callers can choose the slippage limit when completing bridge receives, and pool accounting assumes full-value transfers, which breaks for fee-on-transfer/rebasing tokens.",
"findings": [
{
"title": "Untrusted relayer controls slippage on bridge receive (min output not authenticated)",
"category": "oracle",
"evidence": "`receiveTokens` accepts an arbitrary `receiveAmountMin` from any caller, while `hashMessage` does not include this parameter, so it is not authenticated by the cross-chain message.",
"severity": "medium",
"locations": [
"contracts/contracts/Bridge.sol:124",
"contracts/contracts/Bridge.sol:240"
],
"recommendation": "Include `receiveAmountMin` (and ideally a deadline) in the message hash/signature, or restrict `receiveTokens` to the recipient/authorized relayer. Alternatively, require an off-chain signature from the recipient over `(receiveAmountMin, deadline)` and verify it on-chain before swapping.",
"exploit_scenario": "A third party monitors inbound messages, manipulates the destination pool price (or waits for unfavorable conditions), then calls `receiveTokens` with `receiveAmountMin = 0` to force execution at a bad rate before the recipient can act. Because `receiveAmountMin` is not part of the signed message, this permanently consumes the message and the recipient receives fewer tokens than expected; the attacker can back-run to profit from the price distortion."
},
{
"title": "Accounting assumes full token transfers, enabling fee-on-transfer/rebasing token drains",
"category": "math",
"evidence": "Router transfers the user-supplied `amount` and passes that same value into pool accounting; deposit/swap logic never reconciles actual token receipts.",
"severity": "medium",
"locations": [
"contracts/contracts/Router.sol:141",
"contracts/contracts/Pool.sol:116",
"contracts/contracts/Pool.sol:185"
],
"recommendation": "Use balance-delta accounting: compute actual received amount via `balanceOf` before/after transfer and use that value for pool/reserve updates. Alternatively, enforce a strict allowlist of standard ERC20 tokens and revert if `balanceOf` change != `amount`.",
"exploit_scenario": "If a supported token charges a transfer fee or rebases, the pool credits the full `amount` even though fewer tokens arrive. An attacker can repeatedly swap/deposit/withdraw to extract the phantom balance (e.g., swap 100 tokens with 1% fee, pool receives 99 but credits 100), eventually draining real liquidity."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0317 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x79df4fa2 00000019: GT 0000001a: PUSH2 0x019a 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xa9059cbb 00000024: GT 00000025: PUSH2 0x00e1 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xe78a5875 0000002f: GT 00000030: PUSH2 0x008a 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xf40f0f52 0000003a: GT 0000003b: PUSH2 0x0064 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xf40f0f52 00000045: EQ 00000046: PUSH2 0x08d4 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf887ea40 00000050: EQ 00000051: PUSH2 0x08f4 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xfc0c546a 0000005b: EQ 0000005c: PUSH2 0x091a 0000005f: JUMPI 00000060: PUSH2 0x0357 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xe78a5875 0000006b: EQ 0000006c: PUSH2 0x0889 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xe99fee3e 00000076: EQ 00000077: PUSH2 0x089f 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xf2fde38b 00000081: EQ 00000082: PUSH2 0x08b4 00000085: JUMPI 00000086: PUSH2 0x0357 00000089: JUMP 0000008a: JUMPDEST 0000008b: DUP1 0000008c: PUSH4 0xc0d78655 00000091: GT 00000092: PUSH2 0x00bb 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0xc0d78655 0000009c: EQ 0000009d: PUSH2 0x0803 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xc1c46dbe 000000a7: EQ 000000a8: PUSH2 0x0823 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xdd62ed3e 000000b2: EQ 000000b3: PUSH2 0x0843 000000b6: JUMPI 000000b7: PUSH2 0x0357 000000ba: JUMP 000000bb: JUMPDEST 000000bc: DUP1 000000bd: PUSH4 0xa9059cbb 000000c2: EQ 000000c3: PUSH2 0x03b8 000000c6: JUMPI 000000c7: DUP1 000000c8: PUSH4 0xb51459fe 000000cd: EQ 000000ce: PUSH2 0x07cd 000000d1: JUMPI 000000d2: DUP1 000000d3: PUSH4 0xb6b55f25 000000d8: EQ 000000d9: PUSH2 0x07e3 000000dc: JUMPI 000000dd: PUSH2 0x0357 000000e0: JUMP 000000e1: JUMPDEST 000000e2: DUP1 000000e3: PUSH4 0x8da5cb5b 000000e8: GT 000000e9: PUSH2 0x0143 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0x98d5fdca 000000f3: GT 000000f4: PUSH2 0x011d 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x98d5fdca 000000fe: EQ 000000ff: PUSH2 0x0782 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x9e1a4d19 00000109: EQ 0000010a: PUSH2 0x0797 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0xa457c2d7 00000114: EQ 00000115: PUSH2 0x07ad 00000118: JUMPI 00000119: PUSH2 0x0357 0000011c: JUMP 0000011d: JUMPDEST 0000011e: DUP1 0000011f: PUSH4 0x8da5cb5b 00000124: EQ 00000125: PUSH2 0x0726 00000128: JUMPI 00000129: DUP1 0000012a: PUSH4 0x90ed6bf4 0000012f: EQ 00000130: PUSH2 0x0758 00000133: JUMPI 00000134: DUP1 00000135: PUSH4 0x95d89b41 0000013a: EQ 0000013b: PUSH2 0x076d 0000013e: JUMPI 0000013f: PUSH2 0x0357 00000142: JUMP 00000143: JUMPDEST 00000144: DUP1 00000145: PUSH4 0x8427a581 0000014a: GT 0000014b: PUSH2 0x0174 0000014e: JUMPI 0000014f: DUP1 00000150: PUSH4 0x8427a581 00000155: EQ 00000156: PUSH2 0x06db 00000159: JUMPI 0000015a: DUP1 0000015b: PUSH4 0x845a4697 00000160: EQ 00000161: PUSH2 0x06f0 00000164: JUMPI 00000165: DUP1 00000166: PUSH4 0x8a054ac2 0000016b: EQ 0000016c: PUSH2 0x0710 0000016f: JUMPI 00000170: PUSH2 0x0357 00000173: JUMP 00000174: JUMPDEST 00000175: DUP1 00000176: PUSH4 0x79df4fa2 0000017b: EQ 0000017c: PUSH2 0x0682 0000017f: JUMPI 00000180: DUP1 00000181: PUSH4 0x7a23032c 00000186: EQ 00000187: PUSH2 0x0697 0000018a: JUMPI 0000018b: DUP1 0000018c: PUSH4 0x7f6a92ed 00000191: EQ 00000192: PUSH2 0x06ad 00000195: JUMPI 00000196: PUSH2 0x0357 00000199: JUMP 0000019a: JUMPDEST 0000019b: DUP1 0000019c: PUSH4 0x35c24a88 000001a1: GT 000001a2: PUSH2 0x025e 000001a5: JUMPI 000001a6: DUP1 000001a7: PUSH4 0x52fb8b03 000001ac: GT 000001ad: PUSH2 0x0207 000001b0: JUMPI 000001b1: DUP1 000001b2: PUSH4 0x70a08231 000001b7: GT 000001b8: PUSH2 0x01e1 000001bb: JUMPI 000001bc: DUP1 000001bd: PUSH4 0x70a08231 000001c2: EQ 000001c3: PUSH2 0x0621 000001c6: JUMPI 000001c7: DUP1 000001c8: PUSH4 0x715018a6 000001cd: EQ 000001ce: PUSH2 0x0657 000001d1: JUMPI 000001d2: DUP1 000001d3: PUSH4 0x75172a8b 000001d8: EQ 000001d9: PUSH2 0x066c 000001dc: JUMPI 000001dd: PUSH2 0x0357 000001e0: JUMP 000001e1: JUMPDEST 000001e2: DUP1 000001e3: PUSH4 0x52fb8b03 000001e8: EQ 000001e9: PUSH2 0x05e1 000001ec: JUMPI 000001ed: DUP1 000001ee: PUSH4 0x5860638d 000001f3: EQ 000001f4: PUSH2 0x05f7 000001f7: JUMPI 000001f8: DUP1 000001f9: PUSH4 0x58ba94d7 000001fe: EQ 000001ff: PUSH2 0x060c 00000202: JUMPI 00000203: PUSH2 0x0357 00000206: JUMP 00000207: JUMPDEST 00000208: DUP1 00000209: PUSH4 0x488cb841 0000020e: GT 0000020f: PUSH2 0x0238 00000212: JUMPI 00000213: DUP1 00000214: PUSH4 0x488cb841 00000219: EQ 0000021a: PUSH2 0x057e 0000021d: JUMPI 0000021e: DUP1 0000021f: PUSH4 0x4927b44c 00000224: EQ 00000225: PUSH2 0x0594 00000228: JUMPI 00000229: DUP1 0000022a: PUSH4 0x4bf6f9e7 0000022f: EQ 00000230: PUSH2 0x05b4 00000233: JUMPI 00000234: PUSH2 0x0357 00000237: JUMP 00000238: JUMPDEST 00000239: DUP1 0000023a: PUSH4 0x35c24a88 0000023f: EQ 00000240: PUSH2 0x0533 00000243: JUMPI 00000244: DUP1 00000245: PUSH4 0x372500ab 0000024a: EQ 0000024b: PUSH2 0x0549 0000024e: JUMPI 0000024f: DUP1 00000250: PUSH4 0x39509351 00000255: EQ 00000256: PUSH2 0x055e 00000259: JUMPI 0000025a: PUSH2 0x0357 0000025d: JUMP 0000025e: JUMPDEST 0000025f: DUP1 00000260: PUSH4 0x28fdb481 00000265: GT 00000266: PUSH2 0x02c0 00000269: JUMPI 0000026a: DUP1 0000026b: PUSH4 0x2e1a7d4d 00000270: GT 00000271: PUSH2 0x029a 00000274: JUMPI 00000275: DUP1 00000276: PUSH4 0x2e1a7d4d 0000027b: EQ 0000027c: PUSH2 0x04d7 0000027f: JUMPI 00000280: DUP1 00000281: PUSH4 0x313ce567 00000286: EQ 00000287: PUSH2 0x04f7 0000028a: JUMPI 0000028b: DUP1 0000028c: PUSH4 0x3536a1dc 00000291: EQ 00000292: PUSH2 0x0513 00000295: JUMPI 00000296: PUSH2 0x0357 00000299: JUMP 0000029a: JUMPDEST 0000029b: DUP1 0000029c: PUSH4 0x28fdb481 000002a1: EQ 000002a2: PUSH2 0x0475 000002a5: JUMPI 000002a6: DUP1 000002a7: PUSH4 0x2d46f63e 000002ac: EQ 000002ad: PUSH2 0x0495 000002b0: JUMPI 000002b1: DUP1 000002b2: PUSH4 0x2d8fe99a 000002b7: EQ 000002b8: PUSH2 0x04b5 000002bb: JUMPI 000002bc: PUSH2 0x0357 000002bf: JUMP 000002c0: JUMPDEST 000002c1: DUP1 000002c2: PUSH4 0x0ec33022 000002c7: GT 000002c8: PUSH2 0x02f1 000002cb: JUMPI 000002cc: DUP1 000002cd: PUSH4 0x0ec33022 000002d2: EQ 000002d3: PUSH2 0x042a 000002d6: JUMPI 000002d7: DUP1 000002d8: PUSH4 0x18160ddd 000002dd: EQ 000002de: PUSH2 0x0440 000002e1: JUMPI 000002e2: DUP1 000002e3: PUSH4 0x23b872dd 000002e8: EQ 000002e9: PUSH2 0x0455 000002ec: JUMPI 000002ed: PUSH2 0x0357 000002f0: JUMP 000002f1: JUMPDEST 000002f2: DUP1 000002f3: PUSH4 0x06fdde03 000002f8: EQ 000002f9: PUSH2 0x038d 000002fc: JUMPI 000002fd: DUP1 000002fe: PUSH4 0x095ea7b3 00000303: EQ 00000304: PUSH2 0x03b8 00000307: JUMPI 00000308: DUP1 00000309: PUSH4 0x0dbe671f 0000030e: EQ 0000030f: PUSH2 0x03e8 00000312: JUMPI 00000313: PUSH2 0x0357 00000316: JUMP 00000317: JUMPDEST 00000318: CALLDATASIZE 00000319: PUSH2 0x0357 0000031c: JUMPI 0000031d: PUSH1 0x40 0000031f: MLOAD 00000320: PUSH3 0x461bcd 00000324: PUSH1 0xe5 00000326: SHL 00000327: DUP2 00000328: MSTORE 00000329: PUSH1 0x20 0000032b: PUSH1 0x04 0000032d: DUP3 0000032e: ADD 0000032f: MSTORE 00000330: PUSH1 0x0b 00000332: PUSH1 0x24 00000334: DUP3 00000335: ADD 00000336: MSTORE 00000337: PUSH11 0x155b9cdd5c1c1bdc9d1959 00000343: PUSH1 0xaa 00000345: SHL 00000346: PUSH1 0x44 00000348: DUP3 00000349: ADD 0000034a: MSTORE 0000034b: PUSH1 0x64 0000034d: ADD 0000034e: JUMPDEST 0000034f: PUSH1 0x40 00000351: MLOAD 00000352: DUP1 00000353: SWAP2 00000354: SUB 00000355: SWAP1 00000356: REVERT 00000357: JUMPDEST 00000358: PUSH1 0x40 0000035a: MLOAD 0000035b: PUSH3 0x461bcd 0000035f: PUSH1 0xe5 00000361: SHL 00000362: DUP2 00000363: MSTORE 00000364: PUSH1 0x20 00000366: PUSH1 0x04 00000368: DUP3 00000369: ADD 0000036a: MSTORE 0000036b: PUSH1 0x0b 0000036d: PUSH1 0x24 0000036f: DUP3 00000370: ADD 00000371: MSTORE 00000372: PUSH11 0x155b9cdd5c1c1bdc9d1959 0000037e: PUSH1 0xaa 00000380: SHL 00000381: PUSH1 0x44 00000383: DUP3 00000384: ADD 00000385: MSTORE 00000386: PUSH1 0x64 00000388: ADD 00000389: PUSH2 0x034e 0000038c: JUMP 0000038d: JUMPDEST 0000038e: CALLVALUE 0000038f: DUP1 00000390: ISZERO 00000391: PUSH2 0x0399 00000394: JUMPI 00000395: PUSH1 0x00 00000397: DUP1 00000398: REVERT 00000399: JUMPDEST 0000039a: POP 0000039b: PUSH2 0x03a2 0000039e: PUSH2 0x094e 000003a1: JUMP 000003a2: JUMPDEST 000003a3: PUSH1 0x40 000003a5: MLOAD 000003a6: PUSH2 0x03af 000003a9: SWAP2 000003aa: SWAP1 000003ab: PUSH2 0x2b31 000003ae: JUMP 000003af: JUMPDEST 000003b0: PUSH1 0x40 000003b2: MLOAD 000003b3: DUP1 000003b4: SWAP2 000003b5: SUB 000003b6: SWAP1 000003b7: RETURN 000003b8: JUMPDEST 000003b9: CALLVALUE 000003ba: DUP1 000003bb: ISZERO 000003bc: PUSH2 0x03c4 000003bf: JUMPI 000003c0: PUSH1 0x00 000003c2: DUP1 000003c3: REVERT 000003c4: JUMPDEST 000003c5: POP 000003c6: PUSH2 0x03d8 000003c9: PUSH2 0x03d3 000003cc: CALLDATASIZE 000003cd: PUSH1 0x04 000003cf: PUSH2 0x2b80 000003d2: JUMP 000003d3: JUMPDEST 000003d4: PUSH2 0x09e0 000003d7: JUMP 000003d8: JUMPDEST 000003d9: PUSH1 0x40 000003db: MLOAD 000003dc: SWAP1 000003dd: ISZERO 000003de: ISZERO 000003df: DUP2 000003e0: MSTORE 000003e1: PUSH1 0x20 000003e3: ADD 000003e4: PUSH2 0x03af 000003e7: JUMP 000003e8: JUMPDEST 000003e9: CALLVALUE 000003ea: DUP1 000003eb: ISZERO 000003ec: PUSH2 0x03f4 000003ef: JUMPI 000003f0: PUSH1 0x00 000003f2: DUP1 000003f3: REVERT 000003f4: JUMPDEST 000003f5: POP 000003f6: PUSH2 0x041c 000003f9: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000014 0000041a: DUP2 0000041b: JUMP 0000041c: JUMPDEST 0000041d: PUSH1 0x40 0000041f: MLOAD 00000420: SWAP1 00000421: DUP2 00000422: MSTORE 00000423: PUSH1 0x20 00000425: ADD 00000426: PUSH2 0x03af 00000429: JUMP 0000042a: JUMPDEST 0000042b: CALLVALUE 0000042c: DUP1 0000042d: ISZERO 0000042e: PUSH2 0x0436 00000431: JUMPI 00000432: PUSH1 0x00 00000434: DUP1 00000435: REVERT 00000436: JUMPDEST 00000437: POP 00000438: PUSH2 0x041c 0000043b: PUSH1 0x0c 0000043d: SLOAD 0000043e: DUP2 0000043f: JUMP 00000440: JUMPDEST 00000441: CALLVALUE 00000442: DUP1 00000443: ISZERO 00000444: PUSH2 0x044c 00000447: JUMPI 00000448: PUSH1 0x00 0000044a: DUP1 0000044b: REVERT 0000044c: JUMPDEST 0000044d: POP 0000044e: PUSH1 0x03 00000450: SLOAD 00000451: PUSH2 0x041c 00000454: JUMP 00000455: JUMPDEST 00000456: CALLVALUE 00000457: DUP1 00000458: ISZERO 00000459: PUSH2 0x0461 0000045c: JUMPI 0000045d: PUSH1 0x00 0000045f: DUP1 00000460: REVERT 00000461: JUMPDEST 00000462: POP 00000463: PUSH2 0x03d8 00000466: PUSH2 0x0470 00000469: CALLDATASIZE 0000046a: PUSH1 0x04 0000046c: PUSH2 0x2baa 0000046f: JUMP 00000470: JUMPDEST 00000471: PUSH2 0x09fa 00000474: JUMP 00000475: JUMPDEST 00000476: CALLVALUE 00000477: DUP1 00000478: ISZERO 00000479: PUSH2 0x0481 0000047c: JUMPI 0000047d: PUSH1 0x00 0000047f: DUP1 00000480: REVERT 00000481: JUMPDEST 00000482: POP 00000483: PUSH2 0x041c 00000486: PUSH2 0x0490 00000489: CALLDATASIZE 0000048a: PUSH1 0x04 0000048c: PUSH2 0x2bf4 0000048f: JUMP 00000490: JUMPDEST 00000491: PUSH2 0x0a20 00000494: JUMP 00000495: JUMPDEST 00000496: CALLVALUE 00000497: DUP1 00000498: ISZERO 00000499: PUSH2 0x04a1 0000049c: JUMPI 0000049d: PUSH1 0x00 0000049f: DUP1 000004a0: REVERT 000004a1: JUMPDEST 000004a2: POP 000004a3: PUSH2 0x041c 000004a6: PUSH2 0x04b0 000004a9: CALLDATASIZE 000004aa: PUSH1 0x04 000004ac: PUSH2 0x2c34 000004af: JUMP 000004b0: JUMPDEST 000004b1: PUSH2 0x0d1d 000004b4: JUMP 000004b5: JUMPDEST 000004b6: CALLVALUE 000004b7: DUP1 000004b8: ISZERO 000004b9: PUSH2 0x04c1 000004bc: JUMPI 000004bd: PUSH1 0x00 000004bf: DUP1 000004c0: REVERT 000004c1: JUMPDEST 000004c2: POP 000004c3: PUSH2 0x04d5 000004c6: PUSH2 0x04d0 000004c9: CALLDATASIZE 000004ca: PUSH1 0x04 000004cc: PUSH2 0x2c7c 000004cf: JUMP 000004d0: JUMPDEST 000004d1: PUSH2 0x10dd 000004d4: JUMP 000004d5: JUMPDEST 000004d6: STOP 000004d7: JUMPDEST 000004d8: CALLVALUE 000004d9: DUP1 000004da: ISZERO 000004db: PUSH2 0x04e3 000004de: JUMPI 000004df: PUSH1 0x00 000004e1: DUP1 000004e2: REVERT 000004e3: JUMPDEST 000004e4: POP 000004e5: PUSH2 0x04d5 000004e8: PUSH2 0x04f2 000004eb: CALLDATASIZE 000004ec: PUSH1 0x04 000004ee: PUSH2 0x2c7c 000004f1: JUMP 000004f2: JUMPDEST 000004f3: PUSH2 0x113c 000004f6: JUMP 000004f7: JUMPDEST 000004f8: CALLVALUE 000004f9: DUP1 000004fa: ISZERO 000004fb: PUSH2 0x0503 000004fe: JUMPI 000004ff: PUSH1 0x00 00000501: DUP1 00000502: REVERT 00000503: JUMPDEST 00000504: POP 00000505: PUSH1 0x40 00000507: MLOAD 00000508: PUSH1 0x03 0000050a: DUP2 0000050b: MSTORE 0000050c: PUSH1 0x20 0000050e: ADD 0000050f: PUSH2 0x03af 00000512: JUMP 00000513: JUMPDEST 00000514: CALLVALUE 00000515: DUP1 00000516: ISZERO 00000517: PUSH2 0x051f 0000051a: JUMPI 0000051b: PUSH1 0x00 0000051d: DUP1 0000051e: REVERT 0000051f: JUMPDEST 00000520: POP 00000521: PUSH2 0x04d5 00000524: PUSH2 0x052e 00000527: CALLDATASIZE 00000528: PUSH1 0x04 0000052a: PUSH2 0x2c95 0000052d: JUMP 0000052e: JUMPDEST 0000052f: PUSH2 0x1371 00000532: JUMP 00000533: JUMPDEST 00000534: CALLVALUE 00000535: DUP1 00000536: ISZERO 00000537: PUSH2 0x053f 0000053a: JUMPI 0000053b: PUSH1 0x00 0000053d: DUP1 0000053e: REVERT 0000053f: JUMPDEST 00000540: POP 00000541: PUSH2 0x041c 00000544: PUSH1 0x0d 00000546: SLOAD 00000547: DUP2 00000548: JUMP 00000549: JUMPDEST 0000054a: CALLVALUE 0000054b: DUP1 0000054c: ISZERO 0000054d: PUSH2 0x0555 00000550: JUMPI 00000551: PUSH1 0x00 00000553: DUP1 00000554: REVERT 00000555: JUMPDEST 00000556: POP 00000557: PUSH2 0x04d5 0000055a: PUSH2 0x13e7 0000055d: JUMP 0000055e: JUMPDEST 0000055f: CALLVALUE 00000560: DUP1 00000561: ISZERO 00000562: PUSH2 0x056a 00000565: JUMPI 00000566: PUSH1 0x00 00000568: DUP1 00000569: REVERT 0000056a: JUMPDEST 0000056b: POP 0000056c: PUSH2 0x03d8 0000056f: PUSH2 0x0579 00000572: CALLDATASIZE 00000573: PUSH1 0x04 00000575: PUSH2 0x2b80 00000578: JUMP 00000579: JUMPDEST 0000057a: PUSH2 0x14b9 0000057d: JUMP 0000057e: JUMPDEST 0000057f: CALLVALUE 00000580: DUP1 00000581: ISZERO 00000582: PUSH2 0x058a 00000585: JUMPI 00000586: PUSH1 0x00 00000588: DUP1 00000589: REVERT 0000058a: JUMPDEST 0000058b: POP 0000058c: PUSH2 0x041c 0000058f: PUSH1 0x08 00000591: SLOAD 00000592: DUP2 00000593: JUMP 00000594: JUMPDEST 00000595: CALLVALUE 00000596: DUP1 00000597: ISZERO 00000598: PUSH2 0x05a0 0000059b: JUMPI 0000059c: PUSH1 0x00 0000059e: DUP1 0000059f: REVERT 000005a0: JUMPDEST 000005a1: POP 000005a2: PUSH2 0x04d5 000005a5: PUSH2 0x05af 000005a8: CALLDATASIZE 000005a9: PUSH1 0x04 000005ab: PUSH2 0x2cb9 000005ae: JUMP 000005af: JUMPDEST 000005b0: PUSH2 0x14f8 000005b3: JUMP 000005b4: JUMPDEST 000005b5: CALLVALUE 000005b6: DUP1 000005b7: ISZERO 000005b8: PUSH2 0x05c0 000005bb: JUMPI 000005bc: PUSH1 0x00 000005be: DUP1 000005bf: REVERT 000005c0: JUMPDEST 000005c1: POP 000005c2: PUSH2 0x041c 000005c5: PUSH2 0x05cf 000005c8: CALLDATASIZE 000005c9: PUSH1 0x04 000005cb: PUSH2 0x2cb9 000005ce: JUMP 000005cf: JUMPDEST 000005d0: PUSH1 0x07 000005d2: PUSH1 0x20 000005d4: MSTORE 000005d5: PUSH1 0x00 000005d7: SWAP1 000005d8: DUP2 000005d9: MSTORE 000005da: PUSH1 0x40 000005dc: SWAP1 000005dd: KECCAK256 000005de: SLOAD 000005df: DUP2 000005e0: JUMP 000005e1: JUMPDEST 000005e2: CALLVALUE 000005e3: DUP1 000005e4: ISZERO 000005e5: PUSH2 0x05ed 000005e8: JUMPI 000005e9: PUSH1 0x00 000005eb: DUP1 000005ec: REVERT 000005ed: JUMPDEST 000005ee: POP 000005ef: PUSH2 0x041c 000005f2: PUSH1 0x06 000005f4: SLOAD 000005f5: DUP2 000005f6: JUMP 000005f7: JUMPDEST 000005f8: CALLVALUE 000005f9: DUP1 000005fa: ISZERO 000005fb: PUSH2 0x0603 000005fe: JUMPI 000005ff: PUSH1 0x00 00000601: DUP1 00000602: REVERT 00000603: JUMPDEST 00000604: POP 00000605: PUSH2 0x04d5 00000608: PUSH2 0x152f 0000060b: JUMP 0000060c: JUMPDEST 0000060d: CALLVALUE 0000060e: DUP1 0000060f: ISZERO 00000610: PUSH2 0x0618 00000613: JUMPI 00000614: PUSH1 0x00 00000616: DUP1 00000617: REVERT 00000618: JUMPDEST 00000619: POP 0000061a: PUSH2 0x04d5 0000061d: PUSH2 0x1590 00000620: JUMP 00000621: JUMPDEST 00000622: CALLVALUE 00000623: DUP1 00000624: ISZERO 00000625: PUSH2 0x062d 00000628: JUMPI 00000629: PUSH1 0x00 0000062b: DUP1 0000062c: REVERT 0000062d: JUMPDEST 0000062e: POP 0000062f: PUSH2 0x041c 00000632: PUSH2 0x063c 00000635: CALLDATASIZE 00000636: PUSH1 0x04 00000638: PUSH2 0x2cb9 0000063b: JUMP 0000063c: JUMPDEST 0000063d: PUSH1 0x01 0000063f: PUSH1 0x01 00000641: PUSH1 0xa0 00000643: SHL 00000644: SUB 00000645: AND 00000646: PUSH1 0x00 00000648: SWAP1 00000649: DUP2 0000064a: MSTORE 0000064b: PUSH1 0x01 0000064d: PUSH1 0x20 0000064f: MSTORE 00000650: PUSH1 0x40 00000652: SWAP1 00000653: KECCAK256 00000654: SLOAD 00000655: SWAP1 00000656: JUMP 00000657: JUMPDEST 00000658: CALLVALUE 00000659: DUP1 0000065a: ISZERO 0000065b: PUSH2 0x0663 0000065e: JUMPI 0000065f: PUSH1 0x00 00000661: DUP1 00000662: REVERT 00000663: JUMPDEST 00000664: POP 00000665: PUSH2 0x04d5 00000668: PUSH2 0x15f1 0000066b: JUMP 0000066c: JUMPDEST 0000066d: CALLVALUE 0000066e: DUP1 0000066f: ISZERO 00000670: PUSH2 0x0678 00000673: JUMPI 00000674: PUSH1 0x00 00000676: DUP1 00000677: REVERT 00000678: JUMPDEST 00000679: POP 0000067a: PUSH2 0x041c 0000067d: PUSH1 0x0e 0000067f: SLOAD 00000680: DUP2 00000681: JUMP 00000682: JUMPDEST 00000683: CALLVALUE 00000684: DUP1 00000685: ISZERO 00000686: PUSH2 0x068e 00000689: JUMPI 0000068a: PUSH1 0x00 0000068c: DUP1 0000068d: REVERT 0000068e: JUMPDEST 0000068f: POP 00000690: PUSH2 0x04d5 00000693: PUSH2 0x1605 00000696: JUMP 00000697: JUMPDEST 00000698: CALLVALUE 00000699: DUP1 0000069a: ISZERO 0000069b: PUSH2 0x06a3 0000069e: JUMPI 0000069f: PUSH1 0x00 000006a1: DUP1 000006a2: REVERT 000006a3: JUMPDEST 000006a4: POP 000006a5: PUSH2 0x041c 000006a8: PUSH1 0x09 000006aa: SLOAD 000006ab: DUP2 000006ac: JUMP 000006ad: JUMPDEST 000006ae: CALLVALUE 000006af: DUP1 000006b0: ISZERO 000006b1: PUSH2 0x06b9 000006b4: JUMPI 000006b5: PUSH1 0x00 000006b7: DUP1 000006b8: REVERT 000006b9: JUMPDEST 000006ba: POP 000006bb: PUSH1 0x0a 000006bd: SLOAD 000006be: PUSH2 0x06c8 000006c1: SWAP1 000006c2: PUSH2 0xffff 000006c5: AND 000006c6: DUP2 000006c7: JUMP 000006c8: JUMPDEST 000006c9: PUSH1 0x40 000006cb: MLOAD 000006cc: PUSH2 0xffff 000006cf: SWAP1 000006d0: SWAP2 000006d1: AND 000006d2: DUP2 000006d3: MSTORE 000006d4: PUSH1 0x20 000006d6: ADD 000006d7: PUSH2 0x03af 000006da: JUMP 000006db: JUMPDEST 000006dc: CALLVALUE 000006dd: DUP1 000006de: ISZERO 000006df: PUSH2 0x06e7 000006e2: JUMPI 000006e3: PUSH1 0x00 000006e5: DUP1 000006e6: REVERT 000006e7: JUMPDEST 000006e8: POP 000006e9: PUSH2 0x04d5 000006ec: PUSH2 0x1614 000006ef: JUMP 000006f0: JUMPDEST 000006f1: CALLVALUE 000006f2: DUP1 000006f3: ISZERO 000006f4: PUSH2 0x06fc 000006f7: JUMPI 000006f8: PUSH1 0x00 000006fa: DUP1 000006fb: REVERT 000006fc: JUMPDEST 000006fd: POP 000006fe: PUSH2 0x041c 00000701: PUSH2 0x070b 00000704: CALLDATASIZE 00000705: PUSH1 0x04 00000707: PUSH2 0x2c7c 0000070a: JUMP 0000070b: JUMPDEST 0000070c: PUSH2 0x1652 0000070f: JUMP 00000710: JUMPDEST 00000711: CALLVALUE 00000712: DUP1 00000713: ISZERO 00000714: PUSH2 0x071c 00000717: JUMPI 00000718: PUSH1 0x00 0000071a: DUP1 0000071b: REVERT 0000071c: JUMPDEST 0000071d: POP 0000071e: PUSH2 0x041c 00000721: PUSH1 0x0f 00000723: SLOAD 00000724: DUP2 00000725: JUMP 00000726: JUMPDEST 00000727: CALLVALUE 00000728: DUP1 00000729: ISZERO 0000072a: PUSH2 0x0732 0000072d: JUMPI 0000072e: PUSH1 0x00 00000730: DUP1 00000731: REVERT 00000732: JUMPDEST 00000733: POP 00000734: PUSH1 0x00 00000736: SLOAD 00000737: PUSH1 0x01 00000739: PUSH1 0x01 0000073b: PUSH1 0xa0 0000073d: SHL 0000073e: SUB 0000073f: AND 00000740: JUMPDEST 00000741: PUSH1 0x40 00000743: MLOAD 00000744: PUSH1 0x01 00000746: PUSH1 0x01 00000748: PUSH1 0xa0 0000074a: SHL 0000074b: SUB 0000074c: SWAP1 0000074d: SWAP2 0000074e: AND 0000074f: DUP2 00000750: MSTORE 00000751: PUSH1 0x20 00000753: ADD 00000754: PUSH2 0x03af 00000757: JUMP 00000758: JUMPDEST 00000759: CALLVALUE 0000075a: DUP1 0000075b: ISZERO 0000075c: PUSH2 0x0764 0000075f: JUMPI 00000760: PUSH1 0x00 00000762: DUP1 00000763: REVERT 00000764: JUMPDEST 00000765: POP 00000766: PUSH2 0x04d5 00000769: PUSH2 0x173f 0000076c: JUMP 0000076d: JUMPDEST 0000076e: CALLVALUE 0000076f: DUP1 00000770: ISZERO 00000771: PUSH2 0x0779 00000774: JUMPI 00000775: PUSH1 0x00 00000777: DUP1 00000778: REVERT 00000779: JUMPDEST 0000077a: POP 0000077b: PUSH2 0x03a2 0000077e: PUSH2 0x174e 00000781: JUMP 00000782: JUMPDEST 00000783: CALLVALUE 00000784: DUP1 00000785: ISZERO 00000786: PUSH2 0x078e 00000789: JUMPI 0000078a: PUSH1 0x00 0000078c: DUP1 0000078d: REVERT 0000078e: JUMPDEST 0000078f: POP 00000790: PUSH2 0x041c 00000793: PUSH2 0x175d 00000796: JUMP 00000797: JUMPDEST 00000798: CALLVALUE 00000799: DUP1 0000079a: ISZERO 0000079b: PUSH2 0x07a3 0000079e: JUMPI 0000079f: PUSH1 0x00 000007a1: DUP1 000007a2: REVERT 000007a3: JUMPDEST 000007a4: POP 000007a5: PUSH2 0x041c 000007a8: PUSH1 0x0b 000007aa: SLOAD 000007ab: DUP2 000007ac: JUMP 000007ad: JUMPDEST 000007ae: CALLVALUE 000007af: DUP1 000007b0: ISZERO 000007b1: PUSH2 0x07b9 000007b4: JUMPI 000007b5: PUSH1 0x00 000007b7: DUP1 000007b8: REVERT 000007b9: JUMPDEST 000007ba: POP 000007bb: PUSH2 0x03d8 000007be: PUSH2 0x07c8 000007c1: CALLDATASIZE 000007c2: PUSH1 0x04 000007c4: PUSH2 0x2b80 000007c7: JUMP 000007c8: JUMPDEST 000007c9: PUSH2 0x1938 000007cc: JUMP 000007cd: JUMPDEST 000007ce: CALLVALUE 000007cf: DUP1 000007d0: ISZERO 000007d1: PUSH2 0x07d9 000007d4: JUMPI 000007d5: PUSH1 0x00 000007d7: DUP1 000007d8: REVERT 000007d9: JUMPDEST 000007da: POP 000007db: PUSH2 0x041c 000007de: PUSH1 0x12 000007e0: SLOAD 000007e1: DUP2 000007e2: JUMP 000007e3: JUMPDEST 000007e4: CALLVALUE 000007e5: DUP1 000007e6: ISZERO 000007e7: PUSH2 0x07ef 000007ea: JUMPI 000007eb: PUSH1 0x00 000007ed: DUP1 000007ee: REVERT 000007ef: JUMPDEST 000007f0: POP 000007f1: PUSH2 0x04d5 000007f4: PUSH2 0x07fe 000007f7: CALLDATASIZE 000007f8: PUSH1 0x04 000007fa: PUSH2 0x2c7c 000007fd: JUMP 000007fe: JUMPDEST 000007ff: PUSH2 0x19ed 00000802: JUMP 00000803: JUMPDEST 00000804: CALLVALUE 00000805: DUP1 00000806: ISZERO 00000807: PUSH2 0x080f 0000080a: JUMPI 0000080b: PUSH1 0x00 0000080d: DUP1 0000080e: REVERT 0000080f: JUMPDEST 00000810: POP 00000811: PUSH2 0x04d5 00000814: PUSH2 0x081e 00000817: CALLDATASIZE 00000818: PUSH1 0x04 0000081a: PUSH2 0x2cb9 0000081d: JUMP 0000081e: JUMPDEST 0000081f: PUSH2 0x1c25 00000822: JUMP 00000823: JUMPDEST 00000824: CALLVALUE 00000825: DUP1 00000826: ISZERO 00000827: PUSH2 0x082f 0000082a: JUMPI 0000082b: PUSH1 0x00 0000082d: DUP1 0000082e: REVERT 0000082f: JUMPDEST 00000830: POP 00000831: PUSH2 0x04d5 00000834: PUSH2 0x083e 00000837: CALLDATASIZE 00000838: PUSH1 0x04 0000083a: PUSH2 0x2c7c 0000083d: JUMP 0000083e: JUMPDEST 0000083f: PUSH2 0x1c6d 00000842: JUMP 00000843: JUMPDEST 00000844: CALLVALUE 00000845: DUP1 00000846: ISZERO 00000847: PUSH2 0x084f 0000084a: JUMPI 0000084b: PUSH1 0x00 0000084d: DUP1 0000084e: REVERT 0000084f: JUMPDEST 00000850: POP 00000851: PUSH2 0x041c 00000854: PUSH2 0x085e 00000857: CALLDATASIZE 00000858: PUSH1 0x04 0000085a: PUSH2 0x2cd4 0000085d: JUMP 0000085e: JUMPDEST 0000085f: PUSH1 0x01 00000861: PUSH1 0x01 00000863: PUSH1 0xa0 00000865: SHL 00000866: SUB 00000867: SWAP2 00000868: DUP3 00000869: AND 0000086a: PUSH1 0x00 0000086c: SWAP1 0000086d: DUP2 0000086e: MSTORE 0000086f: PUSH1 0x02 00000871: PUSH1 0x20 00000873: SWAP1 00000874: DUP2 00000875: MSTORE 00000876: PUSH1 0x40 00000878: DUP1 00000879: DUP4 0000087a: KECCAK256 0000087b: SWAP4 0000087c: SWAP1 0000087d: SWAP5 0000087e: AND 0000087f: DUP3 00000880: MSTORE 00000881: SWAP2 00000882: SWAP1 00000883: SWAP2 00000884: MSTORE 00000885: KECCAK256 00000886: SLOAD 00000887: SWAP1 00000888: JUMP 00000889: JUMPDEST 0000088a: CALLVALUE 0000088b: DUP1 0000088c: ISZERO 0000088d: PUSH2 0x0895 00000890: JUMPI 00000891: PUSH1 0x00 00000893: DUP1 00000894: REVERT 00000895: JUMPDEST 00000896: POP 00000897: PUSH2 0x041c 0000089a: PUSH1 0x11 0000089c: SLOAD 0000089d: DUP2 0000089e: JUMP 0000089f: JUMPDEST 000008a0: CALLVALUE 000008a1: DUP1 000008a2: ISZERO 000008a3: PUSH2 0x08ab 000008a6: JUMPI 000008a7: PUSH1 0x00 000008a9: DUP1 000008aa: REVERT 000008ab: JUMPDEST 000008ac: POP 000008ad: PUSH2 0x04d5 000008b0: PUSH2 0x1ccc 000008b3: JUMP 000008b4: JUMPDEST 000008b5: CALLVALUE 000008b6: DUP1 000008b7: ISZERO 000008b8: PUSH2 0x08c0 000008bb: JUMPI 000008bc: PUSH1 0x00 000008be: DUP1 000008bf: REVERT 000008c0: JUMPDEST 000008c1: POP 000008c2: PUSH2 0x04d5 000008c5: PUSH2 0x08cf 000008c8: CALLDATASIZE 000008c9: PUSH1 0x04 000008cb: PUSH2 0x2cb9 000008ce: JUMP 000008cf: JUMPDEST 000008d0: PUSH2 0x1d1c 000008d3: JUMP 000008d4: JUMPDEST 000008d5: CALLVALUE 000008d6: DUP1 000008d7: ISZERO 000008d8: PUSH2 0x08e0 000008db: JUMPI 000008dc: PUSH1 0x00 000008de: DUP1 000008df: REVERT 000008e0: JUMPDEST 000008e1: POP 000008e2: PUSH2 0x041c 000008e5: PUSH2 0x08ef 000008e8: CALLDATASIZE 000008e9: PUSH1 0x04 000008eb: PUSH2 0x2cb9 000008ee: JUMP 000008ef: JUMPDEST 000008f0: PUSH2 0x1da9 000008f3: JUMP 000008f4: JUMPDEST 000008f5: CALLVALUE 000008f6: DUP1 000008f7: ISZERO 000008f8: PUSH2 0x0900 000008fb: JUMPI 000008fc: PUSH1 0x00 000008fe: DUP1 000008ff: REVERT 00000900: JUMPDEST 00000901: POP 00000902: PUSH1 0x0a 00000904: SLOAD 00000905: PUSH2 0x0740 00000908: SWAP1 00000909: PUSH3 0x010000 0000090d: SWAP1 0000090e: DIV 0000090f: PUSH1 0x01 00000911: PUSH1 0x01 00000913: PUSH1 0xa0 00000915: SHL 00000916: SUB 00000917: AND 00000918: DUP2 00000919: JUMP 0000091a: JUMPDEST 0000091b: CALLVALUE 0000091c: DUP1 0000091d: ISZERO 0000091e: PUSH2 0x0926 00000921: JUMPI 00000922: PUSH1 0x00 00000924: DUP1 00000925: REVERT 00000926: JUMPDEST 00000927: POP 00000928: PUSH2 0x0740 0000092b: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000094c: DUP2 0000094d: JUMP 0000094e: JUMPDEST 0000094f: PUSH1 0x60 00000951: PUSH1 0x04 00000953: DUP1 00000954: SLOAD 00000955: PUSH2 0x095d 00000958: SWAP1 00000959: PUSH2 0x2d07 0000095c: JUMP 0000095d: JUMPDEST 0000095e: DUP1 0000095f: PUSH1 0x1f 00000961: ADD 00000962: PUSH1 0x20 00000964: DUP1 00000965: SWAP2 00000966: DIV 00000967: MUL 00000968: PUSH1 0x20 0000096a: ADD 0000096b: PUSH1 0x40 0000096d: MLOAD 0000096e: SWAP1 0000096f: DUP2 00000970: ADD 00000971: PUSH1 0x40 00000973: MSTORE 00000974: DUP1 00000975: SWAP3 00000976: SWAP2 00000977: SWAP1 00000978: DUP2 00000979: DUP2 0000097a: MSTORE 0000097b: PUSH1 0x20 0000097d: ADD 0000097e: DUP3 0000097f: DUP1 00000980: SLOAD 00000981: PUSH2 0x0989 00000984: SWAP1 00000985: PUSH2 0x2d07 00000988: JUMP 00000989: JUMPDEST 0000098a: DUP1 0000098b: ISZERO 0000098c: PUSH2 0x09d6 0000098f: JUMPI 00000990: DUP1 00000991: PUSH1 0x1f 00000993: LT 00000994: PUSH2 0x09ab 00000997: JUMPI 00000998: PUSH2 0x0100 0000099b: DUP1 0000099c: DUP4 0000099d: SLOAD 0000099e: DIV 0000099f: MUL 000009a0: DUP4 000009a1: MSTORE 000009a2: SWAP2 000009a3: PUSH1 0x20 000009a5: ADD 000009a6: SWAP2 000009a7: PUSH2 0x09d6 000009aa: JUMP 000009ab: JUMPDEST 000009ac: DUP3 000009ad: ADD 000009ae: SWAP2 000009af: SWAP1 000009b0: PUSH1 0x00 000009b2: MSTORE 000009b3: PUSH1 0x20 000009b5: PUSH1 0x00 000009b7: KECCAK256 000009b8: SWAP1 000009b9: JUMPDEST 000009ba: DUP2 000009bb: SLOAD 000009bc: DUP2 000009bd: MSTORE 000009be: SWAP1 000009bf: PUSH1 0x01 000009c1: ADD 000009c2: SWAP1 000009c3: PUSH1 0x20 000009c5: ADD 000009c6: DUP1 000009c7: DUP4 000009c8: GT 000009c9: PUSH2 0x09b9 000009cc: JUMPI 000009cd: DUP3 000009ce: SWAP1 000009cf: SUB 000009d0: PUSH1 0x1f 000009d2: AND 000009d3: DUP3 000009d4: ADD 000009d5: SWAP2 000009d6: JUMPDEST 000009d7: POP 000009d8: POP 000009d9: POP 000009da: POP 000009db: POP 000009dc: SWAP1 000009dd: POP 000009de: SWAP1 000009df: JUMP 000009e0: JUMPDEST 000009e1: PUSH1 0x00 000009e3: CALLER 000009e4: PUSH2 0x09ee 000009e7: DUP2 000009e8: DUP6 000009e9: DUP6 000009ea: PUSH2 0x0357 000009ed: JUMP 000009ee: JUMPDEST 000009ef: PUSH1 0x01 000009f1: SWAP2 000009f2: POP 000009f3: POP 000009f4: JUMPDEST 000009f5: SWAP3 000009f6: SWAP2 000009f7: POP 000009f8: POP 000009f9: JUMP 000009fa: JUMPDEST 000009fb: PUSH1 0x00 000009fd: CALLER 000009fe: PUSH2 0x0a08 00000a01: DUP6 00000a02: DUP3 00000a03: DUP6 00000a04: PUSH2 0x1deb 00000a07: JUMP 00000a08: JUMPDEST 00000a09: PUSH2 0x0a13 00000a0c: DUP6 00000a0d: DUP6 00000a0e: DUP6 00000a0f: PUSH2 0x0357 00000a12: JUMP 00000a13: JUMPDEST 00000a14: PUSH1 0x01 00000a16: SWAP2 00000a17: POP 00000a18: POP 00000a19: JUMPDEST 00000a1a: SWAP4 00000a1b: SWAP3 00000a1c: POP 00000a1d: POP 00000a1e: POP 00000a1f: JUMP 00000a20: JUMPDEST 00000a21: PUSH1 0x0a 00000a23: SLOAD 00000a24: PUSH1 0x00 00000a26: SWAP1 00000a27: PUSH3 0x010000 00000a2b: SWAP1 00000a2c: DIV 00000a2d: PUSH1 0x01 00000a2f: PUSH1 0x01 00000a31: PUSH1 0xa0 00000a33: SHL 00000a34: SUB 00000a35: AND 00000a36: CALLER 00000a37: EQ 00000a38: PUSH2 0x0a83 00000a3b: JUMPI 00000a3c: PUSH1 0x40 00000a3e: MLOAD 00000a3f: PUSH3 0x461bcd 00000a43: PUSH1 0xe5 00000a45: SHL 00000a46: DUP2 00000a47: MSTORE 00000a48: PUSH1 0x20 00000a4a: PUSH1 0x04 00000a4c: DUP3 00000a4d: ADD 00000a4e: MSTORE 00000a4f: PUSH1 0x13 00000a51: PUSH1 0x24 00000a53: DUP3 00000a54: ADD 00000a55: MSTORE 00000a56: PUSH32 0x506f6f6c3a206973206e6f7420726f7574657200000000000000000000000000 00000a77: PUSH1 0x44 00000a79: DUP3 00000a7a: ADD 00000a7b: MSTORE 00000a7c: PUSH1 0x64 00000a7e: ADD 00000a7f: PUSH2 0x034e 00000a82: JUMP 00000a83: JUMPDEST 00000a84: PUSH1 0x00 00000a86: DUP1 00000a87: DUP5 00000a88: ISZERO 00000a89: PUSH2 0x0ba8 00000a8c: JUMPI 00000a8d: DUP4 00000a8e: PUSH2 0x0ab3 00000a91: JUMPI 00000a92: PUSH1 0x0a 00000a94: SLOAD 00000a95: PUSH2 0x2710 00000a98: SWAP1 00000a99: PUSH2 0x0aa6 00000a9c: SWAP1 00000a9d: PUSH2 0xffff 00000aa0: AND 00000aa1: DUP8 00000aa2: PUSH2 0x2d57 00000aa5: JUMP 00000aa6: JUMPDEST 00000aa7: PUSH2 0x0ab0 00000aaa: SWAP2 00000aab: SWAP1 00000aac: PUSH2 0x2d84 00000aaf: JUMP 00000ab0: JUMPDEST 00000ab1: SWAP1 00000ab2: POP 00000ab3: JUMPDEST 00000ab4: PUSH1 0x00 00000ab6: PUSH2 0x0ac7 00000ab9: PUSH2 0x0ac2 00000abc: DUP4 00000abd: DUP9 00000abe: PUSH2 0x2d98 00000ac1: JUMP 00000ac2: JUMPDEST 00000ac3: PUSH2 0x1e77 00000ac6: JUMP 00000ac7: JUMPDEST 00000ac8: SWAP1 00000ac9: POP 00000aca: PUSH2 0x0ad2 00000acd: DUP2 00000ace: PUSH2 0x1f1d 00000ad1: JUMP 00000ad2: JUMPDEST 00000ad3: PUSH2 0x0adc 00000ad6: SWAP1 00000ad7: DUP8 00000ad8: PUSH2 0x2d98 00000adb: JUMP 00000adc: JUMPDEST 00000add: SWAP2 00000ade: POP 00000adf: DUP1 00000ae0: PUSH1 0x0b 00000ae2: PUSH1 0x00 00000ae4: DUP3 00000ae5: DUP3 00000ae6: SLOAD 00000ae7: PUSH2 0x0af0 00000aea: SWAP2 00000aeb: SWAP1 00000aec: PUSH2 0x2dab 00000aef: JUMP 00000af0: JUMPDEST 00000af1: SWAP3 00000af2: POP 00000af3: POP 00000af4: DUP2 00000af5: SWAP1 00000af6: SSTORE 00000af7: POP 00000af8: DUP1 00000af9: PUSH1 0x0e 00000afb: PUSH1 0x00 00000afd: DUP3 00000afe: DUP3 00000aff: SLOAD 00000b00: PUSH2 0x0b09 00000b03: SWAP2 00000b04: SWAP1 00000b05: PUSH2 0x2dab 00000b08: JUMP 00000b09: JUMPDEST 00000b0a: SWAP1 00000b0b: SWAP2 00000b0c: SSTORE 00000b0d: POP 00000b0e: POP 00000b0f: PUSH1 0x0b 00000b11: SLOAD 00000b12: PUSH1 0x40 00000b14: MLOAD 00000b15: PUSH4 0x845a4697 00000b1a: PUSH1 0xe0 00000b1c: SHL 00000b1d: DUP2 00000b1e: MSTORE 00000b1f: PUSH1 0x00 00000b21: SWAP2 00000b22: ADDRESS 00000b23: SWAP2 00000b24: PUSH4 0x845a4697 00000b29: SWAP2 00000b2a: PUSH2 0x0b39 00000b2d: SWAP2 00000b2e: PUSH1 0x04 00000b30: ADD 00000b31: SWAP1 00000b32: DUP2 00000b33: MSTORE 00000b34: PUSH1 0x20 00000b36: ADD 00000b37: SWAP1 00000b38: JUMP 00000b39: JUMPDEST 00000b3a: PUSH1 0x20 00000b3c: PUSH1 0x40 00000b3e: MLOAD 00000b3f: DUP1 00000b40: DUP4 00000b41: SUB 00000b42: DUP2 00000b43: DUP7 00000b44: GAS 00000b45: STATICCALL 00000b46: ISZERO 00000b47: DUP1 00000b48: ISZERO 00000b49: PUSH2 0x0b56 00000b4c: JUMPI 00000b4d: RETURNDATASIZE 00000b4e: PUSH1 0x00 00000b50: DUP1 00000b51: RETURNDATACOPY 00000b52: RETURNDATASIZE 00000b53: PUSH1 0x00 00000b55: REVERT 00000b56: JUMPDEST 00000b57: POP 00000b58: POP 00000b59: POP 00000b5a: POP 00000b5b: PUSH1 0x40 00000b5d: MLOAD 00000b5e: RETURNDATASIZE 00000b5f: PUSH1 0x1f 00000b61: NOT 00000b62: PUSH1 0x1f 00000b64: DUP3 00000b65: ADD 00000b66: AND 00000b67: DUP3 00000b68: ADD 00000b69: DUP1 00000b6a: PUSH1 0x40 00000b6c: MSTORE 00000b6d: POP 00000b6e: DUP2 00000b6f: ADD 00000b70: SWAP1 00000b71: PUSH2 0x0b7a 00000b74: SWAP2 00000b75: SWAP1 00000b76: PUSH2 0x2dbe 00000b79: JUMP 00000b7a: JUMPDEST 00000b7b: SWAP1 00000b7c: POP 00000b7d: DUP1 00000b7e: PUSH1 0x0c 00000b80: SLOAD 00000b81: GT 00000b82: ISZERO 00000b83: PUSH2 0x0b97 00000b86: JUMPI 00000b87: DUP1 00000b88: PUSH1 0x0c 00000b8a: SLOAD 00000b8b: PUSH2 0x0b94 00000b8e: SWAP2 00000b8f: SWAP1 00000b90: PUSH2 0x2d98 00000b93: JUMP 00000b94: JUMPDEST 00000b95: SWAP4 00000b96: POP 00000b97: JUMPDEST 00000b98: PUSH1 0x0c 00000b9a: DUP2 00000b9b: SWAP1 00000b9c: SSTORE 00000b9d: PUSH2 0x0ba5 00000ba0: DUP4 00000ba1: PUSH2 0x1fbf 00000ba4: JUMP 00000ba5: JUMPDEST 00000ba6: POP 00000ba7: POP 00000ba8: JUMPDEST 00000ba9: PUSH1 0x40 00000bab: DUP1 00000bac: MLOAD 00000bad: PUSH1 0x01 00000baf: PUSH1 0x01 00000bb1: PUSH1 0xa0 00000bb3: SHL 00000bb4: SUB 00000bb5: DUP1 00000bb6: DUP10 00000bb7: AND 00000bb8: DUP3 00000bb9: MSTORE 00000bba: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000bdb: AND 00000bdc: PUSH1 0x20 00000bde: DUP3 00000bdf: ADD 00000be0: MSTORE 00000be1: SWAP1 00000be2: DUP2 00000be3: ADD 00000be4: DUP7 00000be5: SWAP1 00000be6: MSTORE 00000be7: PUSH1 0x60 00000be9: DUP2 00000bea: ADD 00000beb: DUP4 00000bec: SWAP1 00000bed: MSTORE 00000bee: PUSH1 0x80 00000bf0: DUP2 00000bf1: ADD 00000bf2: DUP3 00000bf3: SWAP1 00000bf4: MSTORE 00000bf5: PUSH32 0xa930da1d3f27a25892307dd59cec52dd9b881661a0f20364757f83a0da2f6873 00000c16: SWAP1 00000c17: PUSH1 0xa0 00000c19: ADD 00000c1a: PUSH1 0x40 00000c1c: MLOAD 00000c1d: DUP1 00000c1e: SWAP2 00000c1f: SUB 00000c20: SWAP1 00000c21: LOG1 00000c22: POP 00000c23: SWAP1 00000c24: POP 00000c25: PUSH1 0x0c 00000c27: SLOAD 00000c28: PUSH1 0x0b 00000c2a: SLOAD 00000c2b: GT 00000c2c: ISZERO 00000c2d: PUSH2 0x0ca3 00000c30: JUMPI 00000c31: PUSH1 0x0d 00000c33: SLOAD 00000c34: PUSH1 0x0b 00000c36: SLOAD 00000c37: PUSH2 0x2710 00000c3a: PUSH1 0x0c 00000c3c: SLOAD 00000c3d: PUSH2 0x0c46 00000c40: SWAP2 00000c41: SWAP1 00000c42: PUSH2 0x2d57 00000c45: JUMP 00000c46: JUMPDEST 00000c47: PUSH2 0x0c50 00000c4a: SWAP2 00000c4b: SWAP1 00000c4c: PUSH2 0x2d84 00000c4f: JUMP 00000c50: JUMPDEST 00000c51: LT 00000c52: ISZERO 00000c53: PUSH2 0x0c9e 00000c56: JUMPI 00000c57: PUSH1 0x40 00000c59: MLOAD 00000c5a: PUSH3 0x461bcd 00000c5e: PUSH1 0xe5 00000c60: SHL 00000c61: DUP2 00000c62: MSTORE 00000c63: PUSH1 0x20 00000c65: PUSH1 0x04 00000c67: DUP3 00000c68: ADD 00000c69: MSTORE 00000c6a: PUSH1 0x16 00000c6c: PUSH1 0x24 00000c6e: DUP3 00000c6f: ADD 00000c70: MSTORE 00000c71: PUSH32 0x506f6f6c3a206c6f7720765553442062616c616e636500000000000000000000 00000c92: PUSH1 0x44 00000c94: DUP3 00000c95: ADD 00000c96: MSTORE 00000c97: PUSH1 0x64 00000c99: ADD 00000c9a: PUSH2 0x034e 00000c9d: JUMP 00000c9e: JUMPDEST 00000c9f: PUSH2 0x0a19 00000ca2: JUMP 00000ca3: JUMPDEST 00000ca4: PUSH1 0x0c 00000ca6: SLOAD 00000ca7: PUSH1 0x0b 00000ca9: SLOAD 00000caa: LT 00000cab: ISZERO 00000cac: PUSH2 0x0a19 00000caf: JUMPI 00000cb0: PUSH1 0x0d 00000cb2: SLOAD 00000cb3: PUSH1 0x0c 00000cb5: SLOAD 00000cb6: PUSH2 0x2710 00000cb9: PUSH1 0x0b 00000cbb: SLOAD 00000cbc: PUSH2 0x0cc5 00000cbf: SWAP2 00000cc0: SWAP1 00000cc1: PUSH2 0x2d57 00000cc4: JUMP 00000cc5: JUMPDEST 00000cc6: PUSH2 0x0ccf 00000cc9: SWAP2 00000cca: SWAP1 00000ccb: PUSH2 0x2d84 00000cce: JUMP 00000ccf: JUMPDEST 00000cd0: LT 00000cd1: ISZERO 00000cd2: PUSH2 0x0a19 00000cd5: JUMPI 00000cd6: PUSH1 0x40 00000cd8: MLOAD 00000cd9: PUSH3 0x461bcd 00000cdd: PUSH1 0xe5 00000cdf: SHL 00000ce0: DUP2 00000ce1: MSTORE 00000ce2: PUSH1 0x20 00000ce4: PUSH1 0x04 00000ce6: DUP3 00000ce7: ADD 00000ce8: MSTORE 00000ce9: PUSH1 0x17 00000ceb: PUSH1 0x24 00000ced: DUP3 00000cee: ADD 00000cef: MSTORE 00000cf0: PUSH32 0x506f6f6c3a206c6f7720746f6b656e2062616c616e6365000000000000000000 00000d11: PUSH1 0x44 00000d13: DUP3 00000d14: ADD 00000d15: MSTORE 00000d16: PUSH1 0x64 00000d18: ADD 00000d19: PUSH2 0x034e 00000d1c: JUMP 00000d1d: JUMPDEST 00000d1e: PUSH1 0x0a 00000d20: SLOAD 00000d21: PUSH1 0x00 00000d23: SWAP1 00000d24: PUSH3 0x010000 00000d28: SWAP1 00000d29: DIV 00000d2a: PUSH1 0x01 00000d2c: PUSH1 0x01 00000d2e: PUSH1 0xa0 00000d30: SHL 00000d31: SUB 00000d32: AND 00000d33: CALLER 00000d34: EQ 00000d35: PUSH2 0x0d80 00000d38: JUMPI 00000d39: PUSH1 0x40 00000d3b: MLOAD 00000d3c: PUSH3 0x461bcd 00000d40: PUSH1 0xe5 00000d42: SHL 00000d43: DUP2 00000d44: MSTORE 00000d45: PUSH1 0x20 00000d47: PUSH1 0x04 00000d49: DUP3 00000d4a: ADD 00000d4b: MSTORE 00000d4c: PUSH1 0x13 00000d4e: PUSH1 0x24 00000d50: DUP3 00000d51: ADD 00000d52: MSTORE 00000d53: PUSH32 0x506f6f6c3a206973206e6f7420726f7574657200000000000000000000000000 00000d74: PUSH1 0x44 00000d76: DUP3 00000d77: ADD 00000d78: MSTORE 00000d79: PUSH1 0x64 00000d7b: ADD 00000d7c: PUSH2 0x034e 00000d7f: JUMP 00000d80: JUMPDEST 00000d81: PUSH1 0x00 00000d83: DUP1 00000d84: DUP1 00000d85: DUP7 00000d86: ISZERO 00000d87: PUSH2 0x0f5f 00000d8a: JUMPI 00000d8b: DUP7 00000d8c: PUSH1 0x0c 00000d8e: PUSH1 0x00 00000d90: DUP3 00000d91: DUP3 00000d92: SLOAD 00000d93: PUSH2 0x0d9c 00000d96: SWAP2 00000d97: SWAP1 00000d98: PUSH2 0x2dab 00000d9b: JUMP 00000d9c: JUMPDEST 00000d9d: SWAP1 00000d9e: SWAP2 00000d9f: SSTORE 00000da0: POP 00000da1: POP 00000da2: PUSH1 0x0c 00000da4: SLOAD 00000da5: PUSH1 0x40 00000da7: MLOAD 00000da8: PUSH4 0x845a4697 00000dad: PUSH1 0xe0 00000daf: SHL 00000db0: DUP2 00000db1: MSTORE 00000db2: PUSH1 0x00 00000db4: SWAP2 00000db5: ADDRESS 00000db6: SWAP2 00000db7: PUSH4 0x845a4697 00000dbc: SWAP2 00000dbd: PUSH2 0x0dcc 00000dc0: SWAP2 00000dc1: PUSH1 0x04 00000dc3: ADD 00000dc4: SWAP1 00000dc5: DUP2 00000dc6: MSTORE 00000dc7: PUSH1 0x20 00000dc9: ADD 00000dca: SWAP1 00000dcb: JUMP 00000dcc: JUMPDEST 00000dcd: PUSH1 0x20 00000dcf: PUSH1 0x40 00000dd1: MLOAD 00000dd2: DUP1 00000dd3: DUP4 00000dd4: SUB 00000dd5: DUP2 00000dd6: DUP7 00000dd7: GAS 00000dd8: STATICCALL 00000dd9: ISZERO 00000dda: DUP1 00000ddb: ISZERO 00000ddc: PUSH2 0x0de9 00000ddf: JUMPI 00000de0: RETURNDATASIZE 00000de1: PUSH1 0x00 00000de3: DUP1 00000de4: RETURNDATACOPY 00000de5: RETURNDATASIZE 00000de6: PUSH1 0x00 00000de8: REVERT 00000de9: JUMPDEST 00000dea: POP 00000deb: POP 00000dec: POP 00000ded: POP 00000dee: PUSH1 0x40 00000df0: MLOAD 00000df1: RETURNDATASIZE 00000df2: PUSH1 0x1f 00000df4: NOT 00000df5: PUSH1 0x1f 00000df7: DUP3 00000df8: ADD 00000df9: AND 00000dfa: DUP3 00000dfb: ADD 00000dfc: DUP1 00000dfd: PUSH1 0x40 00000dff: MSTORE 00000e00: POP 00000e01: DUP2 00000e02: ADD 00000e03: SWAP1 00000e04: PUSH2 0x0e0d 00000e07: SWAP2 00000e08: SWAP1 00000e09: PUSH2 0x2dbe 00000e0c: JUMP 00000e0d: JUMPDEST 00000e0e: SWAP1 00000e0f: POP 00000e10: DUP1 00000e11: PUSH1 0x0b 00000e13: SLOAD 00000e14: GT 00000e15: ISZERO 00000e16: PUSH2 0x0e35 00000e19: JUMPI 00000e1a: DUP1 00000e1b: PUSH1 0x0b 00000e1d: SLOAD 00000e1e: PUSH2 0x0e27 00000e21: SWAP2 00000e22: SWAP1 00000e23: PUSH2 0x2d98 00000e26: JUMP 00000e27: JUMPDEST 00000e28: SWAP4 00000e29: POP 00000e2a: PUSH2 0x0e32 00000e2d: DUP5 00000e2e: PUSH2 0x1f1d 00000e31: JUMP 00000e32: JUMPDEST 00000e33: SWAP3 00000e34: POP 00000e35: JUMPDEST 00000e36: PUSH1 0x0e 00000e38: SLOAD 00000e39: DUP5 00000e3a: GT 00000e3b: ISZERO 00000e3c: PUSH2 0x0e87 00000e3f: JUMPI 00000e40: PUSH1 0x40 00000e42: MLOAD 00000e43: PUSH3 0x461bcd 00000e47: PUSH1 0xe5 00000e49: SHL 00000e4a: DUP2 00000e4b: MSTORE 00000e4c: PUSH1 0x20 00000e4e: PUSH1 0x04 00000e50: DUP3 00000e51: ADD 00000e52: MSTORE 00000e53: PUSH1 0x0e 00000e55: PUSH1 0x24 00000e57: DUP3 00000e58: ADD 00000e59: MSTORE 00000e5a: PUSH32 0x506f6f6c3a207265736572766573000000000000000000000000000000000000 00000e7b: PUSH1 0x44 00000e7d: DUP3 00000e7e: ADD 00000e7f: MSTORE 00000e80: PUSH1 0x64 00000e82: ADD 00000e83: PUSH2 0x034e 00000e86: JUMP 00000e87: JUMPDEST 00000e88: DUP4 00000e89: PUSH1 0x0e 00000e8b: PUSH1 0x00 00000e8d: DUP3 00000e8e: DUP3 00000e8f: SLOAD 00000e90: PUSH2 0x0e99 00000e93: SWAP2 00000e94: SWAP1 00000e95: PUSH2 0x2d98 00000e98: JUMP 00000e99: JUMPDEST 00000e9a: SWAP1 00000e9b: SWAP2 00000e9c: SSTORE 00000e9d: POP 00000e9e: DUP7 00000e9f: SWAP1 00000ea0: POP 00000ea1: PUSH2 0x0ec6 00000ea4: JUMPI 00000ea5: PUSH1 0x0a 00000ea7: SLOAD 00000ea8: PUSH2 0x2710 00000eab: SWAP1 00000eac: PUSH2 0x0eb9 00000eaf: SWAP1 00000eb0: PUSH2 0xffff 00000eb3: AND 00000eb4: DUP6 00000eb5: PUSH2 0x2d57 00000eb8: JUMP 00000eb9: JUMPDEST 00000eba: PUSH2 0x0ec3 00000ebd: SWAP2 00000ebe: SWAP1 00000ebf: PUSH2 0x2d84 00000ec2: JUMP 00000ec3: JUMPDEST 00000ec4: SWAP2 00000ec5: POP 00000ec6: JUMPDEST 00000ec7: PUSH1 0x0b 00000ec9: DUP2 00000eca: SWAP1 00000ecb: SSTORE 00000ecc: SWAP2 00000ecd: DUP2 00000ece: SWAP1 00000ecf: SUB 00000ed0: SWAP2 00000ed1: DUP7 00000ed2: DUP4 00000ed3: LT 00000ed4: ISZERO 00000ed5: PUSH2 0x0f20 00000ed8: JUMPI 00000ed9: PUSH1 0x40 00000edb: MLOAD 00000edc: PUSH3 0x461bcd 00000ee0: PUSH1 0xe5 00000ee2: SHL 00000ee3: DUP2 00000ee4: MSTORE 00000ee5: PUSH1 0x20 00000ee7: PUSH1 0x04 00000ee9: DUP3 00000eea: ADD 00000eeb: MSTORE 00000eec: PUSH1 0x0e 00000eee: PUSH1 0x24 00000ef0: DUP3 00000ef1: ADD 00000ef2: MSTORE 00000ef3: PUSH32 0x506f6f6c3a20736c697070616765000000000000000000000000000000000000 00000f14: PUSH1 0x44 00000f16: DUP3 00000f17: ADD 00000f18: MSTORE 00000f19: PUSH1 0x64 00000f1b: ADD 00000f1c: PUSH2 0x034e 00000f1f: JUMP 00000f20: JUMPDEST 00000f21: PUSH2 0x0f54 00000f24: PUSH1 0x01 00000f26: PUSH1 0x01 00000f28: PUSH1 0xa0 00000f2a: SHL 00000f2b: SUB 00000f2c: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000f4d: AND 00000f4e: DUP11 00000f4f: DUP6 00000f50: PUSH2 0x203e 00000f53: JUMP 00000f54: JUMPDEST 00000f55: PUSH2 0x0f5d 00000f58: DUP3 00000f59: PUSH2 0x1fbf 00000f5c: JUMP 00000f5d: JUMPDEST 00000f5e: POP 00000f5f: JUMPDEST 00000f60: PUSH1 0x40 00000f62: DUP1 00000f63: MLOAD 00000f64: PUSH1 0x01 00000f66: PUSH1 0x01 00000f68: PUSH1 0xa0 00000f6a: SHL 00000f6b: SUB 00000f6c: DUP1 00000f6d: DUP12 00000f6e: AND 00000f6f: DUP3 00000f70: MSTORE 00000f71: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000f92: AND 00000f93: PUSH1 0x20 00000f95: DUP3 00000f96: ADD 00000f97: MSTORE 00000f98: SWAP1 00000f99: DUP2 00000f9a: ADD 00000f9b: DUP9 00000f9c: SWAP1 00000f9d: MSTORE 00000f9e: PUSH1 0x60 00000fa0: DUP2 00000fa1: ADD 00000fa2: DUP4 00000fa3: SWAP1 00000fa4: MSTORE 00000fa5: PUSH1 0x80 00000fa7: DUP2 00000fa8: ADD 00000fa9: DUP3 00000faa: SWAP1 00000fab: MSTORE 00000fac: PUSH32 0xfc1df7b9ba72a13350b8a4e0f094e232eebded9edd179950e74a852a0f405112 00000fcd: SWAP1 00000fce: PUSH1 0xa0 00000fd0: ADD 00000fd1: PUSH1 0x40 00000fd3: MLOAD 00000fd4: DUP1 00000fd5: SWAP2 00000fd6: SUB 00000fd7: SWAP1 00000fd8: LOG1 00000fd9: POP 00000fda: SWAP2 00000fdb: POP 00000fdc: POP 00000fdd: PUSH1 0x0c 00000fdf: SLOAD 00000fe0: PUSH1 0x0b 00000fe2: SLOAD 00000fe3: GT 00000fe4: ISZERO 00000fe5: PUSH2 0x105b 00000fe8: JUMPI 00000fe9: PUSH1 0x0d 00000feb: SLOAD 00000fec: PUSH1 0x0b 00000fee: SLOAD 00000fef: PUSH2 0x2710 00000ff2: PUSH1 0x0c 00000ff4: SLOAD 00000ff5: PUSH2 0x0ffe 00000ff8: SWAP2 00000ff9: SWAP1 00000ffa: PUSH2 0x2d57 00000ffd: JUMP 00000ffe: JUMPDEST 00000fff: PUSH2 0x1008 00001002: SWAP2 00001003: SWAP1 00001004: PUSH2 0x2d84 00001007: JUMP 00001008: JUMPDEST 00001009: LT 0000100a: ISZERO 0000100b: PUSH2 0x1056 0000100e: JUMPI 0000100f: PUSH1 0x40 00001011: MLOAD 00001012: PUSH3 0x461bcd 00001016: PUSH1 0xe5 00001018: SHL 00001019: DUP2 0000101a: MSTORE 0000101b: PUSH1 0x20 0000101d: PUSH1 0x04 0000101f: DUP3 00001020: ADD 00001021: MSTORE 00001022: PUSH1 0x16 00001024: PUSH1 0x24 00001026: DUP3 00001027: ADD 00001028: MSTORE 00001029: PUSH32 0x506f6f6c3a206c6f7720765553442062616c616e636500000000000000000000 0000104a: PUSH1 0x44 0000104c: DUP3 0000104d: ADD 0000104e: MSTORE 0000104f: PUSH1 0x64 00001051: ADD 00001052: PUSH2 0x034e 00001055: JUMP 00001056: JUMPDEST 00001057: PUSH2 0x10d5 0000105a: JUMP 0000105b: JUMPDEST 0000105c: PUSH1 0x0c 0000105e: SLOAD 0000105f: PUSH1 0x0b 00001061: SLOAD 00001062: LT 00001063: ISZERO 00001064: PUSH2 0x10d5 00001067: JUMPI 00001068: PUSH1 0x0d 0000106a: SLOAD 0000106b: PUSH1 0x0c 0000106d: SLOAD 0000106e: PUSH2 0x2710 00001071: PUSH1 0x0b 00001073: SLOAD 00001074: PUSH2 0x107d 00001077: SWAP2 00001078: SWAP1 00001079: PUSH2 0x2d57 0000107c: JUMP 0000107d: JUMPDEST 0000107e: PUSH2 0x1087 00001081: SWAP2 00001082: SWAP1 00001083: PUSH2 0x2d84 00001086: JUMP 00001087: JUMPDEST 00001088: LT 00001089: ISZERO 0000108a: PUSH2 0x10d5 0000108d: JUMPI 0000108e: PUSH1 0x40 00001090: MLOAD 00001091: PUSH3 0x461bcd 00001095: PUSH1 0xe5 00001097: SHL 00001098: DUP2 00001099: MSTORE 0000109a: PUSH1 0x20 0000109c: PUSH1 0x04 0000109e: DUP3 0000109f: ADD 000010a0: MSTORE 000010a1: PUSH1 0x17 000010a3: PUSH1 0x24 000010a5: DUP3 000010a6: ADD 000010a7: MSTORE 000010a8: PUSH32 0x506f6f6c3a206c6f7720746f6b656e2062616c616e6365000000000000000000 000010c9: PUSH1 0x44 000010cb: DUP3 000010cc: ADD 000010cd: MSTORE 000010ce: PUSH1 0x64 000010d0: ADD 000010d1: PUSH2 0x034e 000010d4: JUMP 000010d5: JUMPDEST 000010d6: SWAP5 000010d7: SWAP4 000010d8: POP 000010d9: POP 000010da: POP 000010db: POP 000010dc: JUMP 000010dd: JUMPDEST 000010de: PUSH2 0x10e5 000010e1: PUSH2 0x20e7 000010e4: JUMP 000010e5: JUMPDEST 000010e6: PUSH2 0x2710 000010e9: DUP2 000010ea: GT 000010eb: ISZERO 000010ec: PUSH2 0x1137 000010ef: JUMPI 000010f0: PUSH1 0x40 000010f2: MLOAD 000010f3: PUSH3 0x461bcd 000010f7: PUSH1 0xe5 000010f9: SHL 000010fa: DUP2 000010fb: MSTORE 000010fc: PUSH1 0x20 000010fe: PUSH1 0x04 00001100: DUP3 00001101: ADD 00001102: MSTORE 00001103: PUSH1 0x17 00001105: PUSH1 0x24 00001107: DUP3 00001108: ADD 00001109: MSTORE 0000110a: PUSH32 0x5265776172644d616e616765723a20746f6f2068696768000000000000000000 0000112b: PUSH1 0x44 0000112d: DUP3 0000112e: ADD 0000112f: MSTORE 00001130: PUSH1 0x64 00001132: ADD 00001133: PUSH2 0x034e 00001136: JUMP 00001137: JUMPDEST 00001138: PUSH1 0x08 0000113a: SSTORE 0000113b: JUMP 0000113c: JUMPDEST 0000113d: PUSH1 0x12 0000113f: SLOAD 00001140: PUSH1 0x01 00001142: EQ 00001143: PUSH2 0x118e 00001146: JUMPI 00001147: PUSH1 0x40 00001149: MLOAD 0000114a: PUSH3 0x461bcd 0000114e: PUSH1 0xe5 00001150: SHL 00001151: DUP2 00001152: MSTORE 00001153: PUSH1 0x20 00001155: PUSH1 0x04 00001157: DUP3 00001158: ADD 00001159: MSTORE 0000115a: PUSH1 0x19 0000115c: PUSH1 0x24 0000115e: DUP3 0000115f: ADD 00001160: MSTORE 00001161: PUSH32 0x506f6f6c3a2077697468647261772070726f6869626974656400000000000000 00001182: PUSH1 0x44 00001184: DUP3 00001185: ADD 00001186: MSTORE 00001187: PUSH1 0x64 00001189: ADD 0000118a: PUSH2 0x034e 0000118d: JUMP 0000118e: JUMPDEST 0000118f: PUSH1 0x0f 00001191: SLOAD 00001192: PUSH2 0x119b 00001195: CALLER 00001196: DUP4 00001197: PUSH2 0x2141 0000119a: JUMP 0000119b: JUMPDEST 0000119c: PUSH1 0x00 0000119e: PUSH1 0x0c 000011a0: SLOAD 000011a1: PUSH1 0x0b 000011a3: SLOAD 000011a4: PUSH2 0x11ad 000011a7: SWAP2 000011a8: SWAP1 000011a9: PUSH2 0x2dab 000011ac: JUMP 000011ad: JUMPDEST 000011ae: SWAP1 000011af: POP 000011b0: DUP1 000011b1: PUSH1 0x0b 000011b3: SLOAD 000011b4: DUP5 000011b5: PUSH2 0x11be 000011b8: SWAP2 000011b9: SWAP1 000011ba: PUSH2 0x2d57 000011bd: JUMP 000011be: JUMPDEST 000011bf: PUSH2 0x11c8 000011c2: SWAP2 000011c3: SWAP1 000011c4: PUSH2 0x2d84 000011c7: JUMP 000011c8: JUMPDEST 000011c9: PUSH1 0x0b 000011cb: PUSH1 0x00 000011cd: DUP3 000011ce: DUP3 000011cf: SLOAD 000011d0: PUSH2 0x11d9 000011d3: SWAP2 000011d4: SWAP1 000011d5: PUSH2 0x2d98 000011d8: JUMP 000011d9: JUMPDEST 000011da: SWAP1 000011db: SWAP2 000011dc: SSTORE 000011dd: POP 000011de: POP 000011df: PUSH1 0x0c 000011e1: SLOAD 000011e2: DUP2 000011e3: SWAP1 000011e4: PUSH2 0x11ed 000011e7: SWAP1 000011e8: DUP6 000011e9: PUSH2 0x2d57 000011ec: JUMP 000011ed: JUMPDEST 000011ee: PUSH2 0x11f7 000011f1: SWAP2 000011f2: SWAP1 000011f3: PUSH2 0x2d84 000011f6: JUMP 000011f7: JUMPDEST 000011f8: PUSH1 0x0c 000011fa: PUSH1 0x00 000011fc: DUP3 000011fd: DUP3 000011fe: SLOAD 000011ff: PUSH2 0x1208 00001202: SWAP2 00001203: SWAP1 00001204: PUSH2 0x2d98 00001207: JUMP 00001208: JUMPDEST 00001209: SWAP1 0000120a: SWAP2 0000120b: SSTORE 0000120c: POP 0000120d: POP 0000120e: PUSH1 0x0c 00001210: SLOAD 00001211: PUSH1 0x0b 00001213: SLOAD 00001214: DUP3 00001215: SWAP2 00001216: PUSH2 0x121e 00001219: SWAP2 0000121a: PUSH2 0x2dab 0000121d: JUMP 0000121e: JUMPDEST 0000121f: LT 00001220: PUSH2 0x126b 00001223: JUMPI 00001224: PUSH1 0x40 00001226: MLOAD 00001227: PUSH3 0x461bcd 0000122b: PUSH1 0xe5 0000122d: SHL 0000122e: DUP2 0000122f: MSTORE 00001230: PUSH1 0x20 00001232: PUSH1 0x04 00001234: DUP3 00001235: ADD 00001236: MSTORE 00001237: PUSH1 0x12 00001239: PUSH1 0x24 0000123b: DUP3 0000123c: ADD 0000123d: MSTORE 0000123e: PUSH32 0x506f6f6c3a207a65726f206368616e6765730000000000000000000000000000 0000125f: PUSH1 0x44 00001261: DUP3 00001262: ADD 00001263: MSTORE 00001264: PUSH1 0x64 00001266: ADD 00001267: PUSH2 0x034e 0000126a: JUMP 0000126b: JUMPDEST 0000126c: PUSH1 0x0e 0000126e: SLOAD 0000126f: DUP4 00001270: GT 00001271: ISZERO 00001272: PUSH2 0x12bd 00001275: JUMPI 00001276: PUSH1 0x40 00001278: MLOAD 00001279: PUSH3 0x461bcd 0000127d: PUSH1 0xe5 0000127f: SHL 00001280: DUP2 00001281: MSTORE 00001282: PUSH1 0x20 00001284: PUSH1 0x04 00001286: DUP3 00001287: ADD 00001288: MSTORE 00001289: PUSH1 0x0e 0000128b: PUSH1 0x24 0000128d: DUP3 0000128e: ADD 0000128f: MSTORE 00001290: PUSH32 0x506f6f6c3a207265736572766573000000000000000000000000000000000000 000012b1: PUSH1 0x44 000012b3: DUP3 000012b4: ADD 000012b5: MSTORE 000012b6: PUSH1 0x64 000012b8: ADD 000012b9: PUSH2 0x034e 000012bc: JUMP 000012bd: JUMPDEST 000012be: DUP3 000012bf: PUSH1 0x0e 000012c1: PUSH1 0x00 000012c3: DUP3 000012c4: DUP3 000012c5: SLOAD 000012c6: PUSH2 0x12cf 000012c9: SWAP2 000012ca: SWAP1 000012cb: PUSH2 0x2d98 000012ce: JUMP 000012cf: JUMPDEST 000012d0: SWAP1 000012d1: SWAP2 000012d2: SSTORE 000012d3: POP 000012d4: PUSH2 0x12dd 000012d7: SWAP1 000012d8: POP 000012d9: PUSH2 0x22f2 000012dc: JUMP 000012dd: JUMPDEST 000012de: DUP2 000012df: PUSH1 0x0f 000012e1: SLOAD 000012e2: LT 000012e3: PUSH2 0x132e 000012e6: JUMPI 000012e7: PUSH1 0x40 000012e9: MLOAD 000012ea: PUSH3 0x461bcd 000012ee: PUSH1 0xe5 000012f0: SHL 000012f1: DUP2 000012f2: MSTORE 000012f3: PUSH1 0x20 000012f5: PUSH1 0x04 000012f7: DUP3 000012f8: ADD 000012f9: MSTORE 000012fa: PUSH1 0x14 000012fc: PUSH1 0x24 000012fe: DUP3 000012ff: ADD 00001300: MSTORE 00001301: PUSH32 0x506f6f6c3a207a65726f2044206368616e676573000000000000000000000000 00001322: PUSH1 0x44 00001324: DUP3 00001325: ADD 00001326: MSTORE 00001327: PUSH1 0x64 00001329: ADD 0000132a: PUSH2 0x034e 0000132d: JUMP 0000132e: JUMPDEST 0000132f: PUSH2 0x136c 00001332: CALLER 00001333: PUSH2 0x133b 00001336: DUP6 00001337: PUSH2 0x1f1d 0000133a: JUMP 0000133b: JUMPDEST 0000133c: PUSH1 0x01 0000133e: PUSH1 0x01 00001340: PUSH1 0xa0 00001342: SHL 00001343: SUB 00001344: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001365: AND 00001366: SWAP2 00001367: SWAP1 00001368: PUSH2 0x203e 0000136b: JUMP 0000136c: JUMPDEST 0000136d: POP 0000136e: POP 0000136f: POP 00001370: JUMP 00001371: JUMPDEST 00001372: PUSH2 0x1379 00001375: PUSH2 0x20e7 00001378: JUMP 00001379: JUMPDEST 0000137a: PUSH2 0x2710 0000137d: DUP2 0000137e: PUSH2 0xffff 00001381: AND 00001382: GT 00001383: ISZERO 00001384: PUSH2 0x13cf 00001387: JUMPI 00001388: PUSH1 0x40 0000138a: MLOAD 0000138b: PUSH3 0x461bcd 0000138f: PUSH1 0xe5 00001391: SHL 00001392: DUP2 00001393: MSTORE 00001394: PUSH1 0x20 00001396: PUSH1 0x04 00001398: DUP3 00001399: ADD 0000139a: MSTORE 0000139b: PUSH1 0x0f 0000139d: PUSH1 0x24 0000139f: DUP3 000013a0: ADD 000013a1: MSTORE 000013a2: PUSH32 0x506f6f6c3a20746f6f206c617267650000000000000000000000000000000000 000013c3: PUSH1 0x44 000013c5: DUP3 000013c6: ADD 000013c7: MSTORE 000013c8: PUSH1 0x64 000013ca: ADD 000013cb: PUSH2 0x034e 000013ce: JUMP 000013cf: JUMPDEST 000013d0: PUSH1 0x0a 000013d2: DUP1 000013d3: SLOAD 000013d4: PUSH2 0xffff 000013d7: NOT 000013d8: AND 000013d9: PUSH2 0xffff 000013dc: SWAP3 000013dd: SWAP1 000013de: SWAP3 000013df: AND 000013e0: SWAP2 000013e1: SWAP1 000013e2: SWAP2 000013e3: OR 000013e4: SWAP1 000013e5: SSTORE 000013e6: JUMP 000013e7: JUMPDEST 000013e8: CALLER 000013e9: PUSH1 0x00 000013eb: SWAP1 000013ec: DUP2 000013ed: MSTORE 000013ee: PUSH1 0x01 000013f0: PUSH1 0x20 000013f2: MSTORE 000013f3: PUSH1 0x40 000013f5: SWAP1 000013f6: KECCAK256 000013f7: SLOAD 000013f8: DUP1 000013f9: ISZERO 000013fa: PUSH2 0x14b6 000013fd: JUMPI 000013fe: PUSH1 0x00 00001400: PUSH1 0x34 00001402: PUSH1 0x06 00001404: SLOAD 00001405: DUP4 00001406: PUSH2 0x140f 00001409: SWAP2 0000140a: SWAP1 0000140b: PUSH2 0x2d57 0000140e: JUMP 0000140f: JUMPDEST 00001410: CALLER 00001411: PUSH1 0x00 00001413: SWAP1 00001414: DUP2 00001415: MSTORE 00001416: PUSH1 0x07 00001418: PUSH1 0x20 0000141a: MSTORE 0000141b: PUSH1 0x40 0000141d: DUP2 0000141e: KECCAK256 0000141f: SLOAD 00001420: SWAP2 00001421: SWAP1 00001422: SWAP3 00001423: SHR 00001424: SWAP3 00001425: POP 00001426: PUSH2 0x142f 00001429: SWAP1 0000142a: DUP4 0000142b: PUSH2 0x2d98 0000142e: JUMP 0000142f: JUMPDEST 00001430: SWAP1 00001431: POP 00001432: DUP1 00001433: ISZERO 00001434: PUSH2 0x136c 00001437: JUMPI 00001438: CALLER 00001439: PUSH1 0x00 0000143b: DUP2 0000143c: DUP2 0000143d: MSTORE 0000143e: PUSH1 0x07 00001440: PUSH1 0x20 00001442: MSTORE 00001443: PUSH1 0x40 00001445: SWAP1 00001446: KECCAK256 00001447: DUP4 00001448: SWAP1 00001449: SSTORE 0000144a: PUSH2 0x147e 0000144d: SWAP1 0000144e: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000146f: PUSH1 0x01 00001471: PUSH1 0x01 00001473: PUSH1 0xa0 00001475: SHL 00001476: SUB 00001477: AND 00001478: SWAP1 00001479: DUP4 0000147a: PUSH2 0x203e 0000147d: JUMP 0000147e: JUMPDEST 0000147f: PUSH1 0x40 00001481: MLOAD 00001482: DUP2 00001483: DUP2 00001484: MSTORE 00001485: CALLER 00001486: SWAP1 00001487: PUSH32 0xfc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe 000014a8: SWAP1 000014a9: PUSH1 0x20 000014ab: ADD 000014ac: PUSH1 0x40 000014ae: MLOAD 000014af: DUP1 000014b0: SWAP2 000014b1: SUB 000014b2: SWAP1 000014b3: LOG2 000014b4: POP 000014b5: POP 000014b6: JUMPDEST 000014b7: POP 000014b8: JUMP 000014b9: JUMPDEST 000014ba: CALLER 000014bb: PUSH1 0x00 000014bd: DUP2 000014be: DUP2 000014bf: MSTORE 000014c0: PUSH1 0x02 000014c2: PUSH1 0x20 000014c4: SWAP1 000014c5: DUP2 000014c6: MSTORE 000014c7: PUSH1 0x40 000014c9: DUP1 000014ca: DUP4 000014cb: KECCAK256 000014cc: PUSH1 0x01 000014ce: PUSH1 0x01 000014d0: PUSH1 0xa0 000014d2: SHL 000014d3: SUB 000014d4: DUP8 000014d5: AND 000014d6: DUP5 000014d7: MSTORE 000014d8: SWAP1 000014d9: SWAP2 000014da: MSTORE 000014db: DUP2 000014dc: KECCAK256 000014dd: SLOAD 000014de: SWAP1 000014df: SWAP2 000014e0: SWAP1 000014e1: PUSH2 0x09ee 000014e4: SWAP1 000014e5: DUP3 000014e6: SWAP1 000014e7: DUP7 000014e8: SWAP1 000014e9: PUSH2 0x14f3 000014ec: SWAP1 000014ed: DUP8 000014ee: SWAP1 000014ef: PUSH2 0x2dab 000014f2: JUMP 000014f3: JUMPDEST 000014f4: PUSH2 0x0357 000014f7: JUMP 000014f8: JUMPDEST 000014f9: PUSH2 0x1500 000014fc: PUSH2 0x20e7 000014ff: JUMP 00001500: JUMPDEST 00001501: PUSH1 0x10 00001503: DUP1 00001504: SLOAD 00001505: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000151a: NOT 0000151b: AND 0000151c: PUSH1 0x01 0000151e: PUSH1 0x01 00001520: PUSH1 0xa0 00001522: SHL 00001523: SUB 00001524: SWAP3 00001525: SWAP1 00001526: SWAP3 00001527: AND 00001528: SWAP2 00001529: SWAP1 0000152a: SWAP2 0000152b: OR 0000152c: SWAP1 0000152d: SSTORE 0000152e: JUMP 0000152f: JUMPDEST 00001530: PUSH1 0x10 00001532: SLOAD 00001533: PUSH1 0x01 00001535: PUSH1 0x01 00001537: PUSH1 0xa0 00001539: SHL 0000153a: SUB 0000153b: AND 0000153c: CALLER 0000153d: EQ 0000153e: PUSH2 0x1589 00001541: JUMPI 00001542: PUSH1 0x40 00001544: MLOAD 00001545: PUSH3 0x461bcd 00001549: PUSH1 0xe5 0000154b: SHL 0000154c: DUP2 0000154d: MSTORE 0000154e: PUSH1 0x20 00001550: PUSH1 0x04 00001552: DUP3 00001553: ADD 00001554: MSTORE 00001555: PUSH1 0x1a 00001557: PUSH1 0x24 00001559: DUP3 0000155a: ADD 0000155b: MSTORE 0000155c: PUSH32 0x506f6f6c3a206973206e6f742073746f70417574686f72697479000000000000 0000157d: PUSH1 0x44 0000157f: DUP3 00001580: ADD 00001581: MSTORE 00001582: PUSH1 0x64 00001584: ADD 00001585: PUSH2 0x034e 00001588: JUMP 00001589: JUMPDEST 0000158a: PUSH1 0x00 0000158c: PUSH1 0x12 0000158e: SSTORE 0000158f: JUMP 00001590: JUMPDEST 00001591: PUSH1 0x10 00001593: SLOAD 00001594: PUSH1 0x01 00001596: PUSH1 0x01 00001598: PUSH1 0xa0 0000159a: SHL 0000159b: SUB 0000159c: AND 0000159d: CALLER 0000159e: EQ 0000159f: PUSH2 0x15ea 000015a2: JUMPI 000015a3: PUSH1 0x40 000015a5: MLOAD 000015a6: PUSH3 0x461bcd 000015aa: PUSH1 0xe5 000015ac: SHL 000015ad: DUP2 000015ae: MSTORE 000015af: PUSH1 0x20 000015b1: PUSH1 0x04 000015b3: DUP3 000015b4: ADD 000015b5: MSTORE 000015b6: PUSH1 0x1a 000015b8: PUSH1 0x24 000015ba: DUP3 000015bb: ADD 000015bc: MSTORE 000015bd: PUSH32 0x506f6f6c3a206973206e6f742073746f70417574686f72697479000000000000 000015de: PUSH1 0x44 000015e0: DUP3 000015e1: ADD 000015e2: MSTORE 000015e3: PUSH1 0x64 000015e5: ADD 000015e6: PUSH2 0x034e 000015e9: JUMP 000015ea: JUMPDEST 000015eb: PUSH1 0x00 000015ed: PUSH1 0x11 000015ef: SSTORE 000015f0: JUMP 000015f1: JUMPDEST 000015f2: PUSH2 0x15f9 000015f5: PUSH2 0x20e7 000015f8: JUMP 000015f9: JUMPDEST 000015fa: PUSH2 0x1603 000015fd: PUSH1 0x00 000015ff: PUSH2 0x23ec 00001602: JUMP 00001603: JUMPDEST 00001604: JUMP 00001605: JUMPDEST 00001606: PUSH2 0x160d 00001609: PUSH2 0x20e7 0000160c: JUMP 0000160d: JUMPDEST 0000160e: PUSH1 0x01 00001610: PUSH1 0x11 00001612: SSTORE 00001613: JUMP 00001614: JUMPDEST 00001615: PUSH2 0x161c 00001618: PUSH2 0x20e7 0000161b: JUMP 0000161c: JUMPDEST 0000161d: PUSH1 0x03 0000161f: SLOAD 00001620: PUSH1 0x0f 00001622: SLOAD 00001623: GT 00001624: ISZERO 00001625: PUSH2 0x1603 00001628: JUMPI 00001629: PUSH2 0x1603 0000162c: PUSH2 0x163d 0000162f: PUSH1 0x00 00001631: SLOAD 00001632: PUSH1 0x01 00001634: PUSH1 0x01 00001636: PUSH1 0xa0 00001638: SHL 00001639: SUB 0000163a: AND 0000163b: SWAP1 0000163c: JUMP 0000163d: JUMPDEST 0000163e: PUSH1 0x03 00001640: SLOAD 00001641: PUSH1 0x0f 00001643: SLOAD 00001644: PUSH2 0x164d 00001647: SWAP2 00001648: SWAP1 00001649: PUSH2 0x2d98 0000164c: JUMP 0000164d: JUMPDEST 0000164e: PUSH2 0x2449 00001651: JUMP 00001652: JUMPDEST 00001653: PUSH1 0x0f 00001655: SLOAD 00001656: PUSH1 0x00 00001658: SWAP1 00001659: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000014 0000167a: PUSH1 0x02 0000167c: DUP2 0000167d: SWAP1 0000167e: SHL 0000167f: SWAP1 00001680: PUSH1 0x03 00001682: SHL 00001683: DUP4 00001684: DUP4 00001685: PUSH2 0x168e 00001688: DUP8 00001689: DUP3 0000168a: PUSH2 0x2dd7 0000168d: JUMP 0000168e: JUMPDEST 0000168f: PUSH2 0x1698 00001692: SWAP1 00001693: DUP6 00001694: PUSH2 0x2df7 00001697: JUMP 00001698: JUMPDEST 00001699: PUSH2 0x16a2 0000169c: SWAP2 0000169d: SWAP1 0000169e: PUSH2 0x2dd7 000016a1: JUMP 000016a2: JUMPDEST 000016a3: SWAP1 000016a4: POP 000016a5: PUSH1 0x00 000016a7: PUSH2 0x16b0 000016aa: DUP3 000016ab: DUP1 000016ac: PUSH2 0x2df7 000016af: JUMP 000016b0: JUMPDEST 000016b1: PUSH2 0x16ba 000016b4: SWAP1 000016b5: DUP9 000016b6: PUSH2 0x2d57 000016b9: JUMP 000016ba: JUMPDEST 000016bb: DUP6 000016bc: DUP1 000016bd: PUSH2 0x16c6 000016c0: DUP2 000016c1: DUP9 000016c2: PUSH2 0x2d57 000016c5: JUMP 000016c6: JUMPDEST 000016c7: PUSH2 0x16d0 000016ca: SWAP2 000016cb: SWAP1 000016cc: PUSH2 0x2d57 000016cf: JUMP 000016d0: JUMPDEST 000016d1: PUSH2 0x16da 000016d4: SWAP2 000016d5: SWAP1 000016d6: PUSH2 0x2d57 000016d9: JUMP 000016da: JUMPDEST 000016db: PUSH2 0x16e4 000016de: SWAP2 000016df: SWAP1 000016e0: PUSH2 0x2dab 000016e3: JUMP 000016e4: JUMPDEST 000016e5: PUSH2 0x16ee 000016e8: SWAP1 000016e9: DUP9 000016ea: PUSH2 0x2d57 000016ed: JUMP 000016ee: JUMPDEST 000016ef: SWAP1 000016f0: POP 000016f1: PUSH2 0x16fa 000016f4: DUP8 000016f5: DUP5 000016f6: PUSH2 0x2d57 000016f9: JUMP 000016fa: JUMPDEST 000016fb: PUSH2 0x171f 000016fe: PUSH2 0x1707 00001701: DUP5 00001702: DUP11 00001703: PUSH2 0x2df7 00001706: JUMP 00001707: JUMPDEST 00001708: PUSH2 0x1710 0000170b: DUP5 0000170c: PUSH2 0x259a 0000170f: JUMP 00001710: JUMPDEST 00001711: PUSH2 0x171a 00001714: SWAP2 00001715: SWAP1 00001716: PUSH2 0x2e27 00001719: JUMP 0000171a: JUMPDEST 0000171b: PUSH2 0x25fb 0000171e: JUMP 0000171f: JUMPDEST 00001720: PUSH2 0x1729 00001723: SWAP2 00001724: SWAP1 00001725: PUSH2 0x2d84 00001728: JUMP 00001729: JUMPDEST 0000172a: PUSH2 0x1734 0000172d: SWAP1 0000172e: PUSH1 0x01 00001730: PUSH2 0x2dab 00001733: JUMP 00001734: JUMPDEST 00001735: SWAP8 00001736: SWAP7 00001737: POP 00001738: POP 00001739: POP 0000173a: POP 0000173b: POP 0000173c: POP 0000173d: POP 0000173e: JUMP 0000173f: JUMPDEST 00001740: PUSH2 0x1747 00001743: PUSH2 0x20e7 00001746: JUMP 00001747: JUMPDEST 00001748: PUSH1 0x01 0000174a: PUSH1 0x12 0000174c: SSTORE 0000174d: JUMP 0000174e: JUMPDEST 0000174f: PUSH1 0x60 00001751: PUSH1 0x05 00001753: DUP1 00001754: SLOAD 00001755: PUSH2 0x095d 00001758: SWAP1 00001759: PUSH2 0x2d07 0000175c: JUMP 0000175d: JUMPDEST 0000175e: PUSH1 0x0b 00001760: SLOAD 00001761: PUSH1 0x0f 00001763: SLOAD 00001764: PUSH1 0x00 00001766: SWAP2 00001767: SWAP1 00001768: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000014 00001789: PUSH1 0x03 0000178b: SHL 0000178c: SWAP1 0000178d: DUP4 0000178e: SWAP1 0000178f: PUSH2 0x1798 00001792: DUP2 00001793: DUP1 00001794: PUSH2 0x2d57 00001797: JUMP 00001798: JUMPDEST 00001799: PUSH2 0x17a2 0000179c: SWAP2 0000179d: SWAP1 0000179e: PUSH2 0x2d57 000017a1: JUMP 000017a2: JUMPDEST 000017a3: PUSH1 0x0f 000017a5: SLOAD 000017a6: SWAP1 000017a7: SWAP2 000017a8: POP 000017a9: PUSH1 0x00 000017ab: SWAP1 000017ac: PUSH2 0x17b5 000017af: DUP6 000017b0: DUP3 000017b1: PUSH2 0x2dd7 000017b4: JUMP 000017b5: JUMPDEST 000017b6: PUSH2 0x17e2 000017b9: SWAP1 000017ba: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000014 000017db: PUSH1 0x02 000017dd: SHL 000017de: PUSH2 0x2df7 000017e1: JUMP 000017e2: JUMPDEST 000017e3: PUSH2 0x17ec 000017e6: SWAP2 000017e7: SWAP1 000017e8: PUSH2 0x2dd7 000017eb: JUMP 000017ec: JUMPDEST 000017ed: SWAP1 000017ee: POP 000017ef: PUSH1 0x00 000017f1: PUSH2 0x17fa 000017f4: DUP3 000017f5: DUP1 000017f6: PUSH2 0x2df7 000017f9: JUMP 000017fa: JUMPDEST 000017fb: PUSH2 0x1804 000017fe: SWAP1 000017ff: DUP7 00001800: PUSH2 0x2d57 00001803: JUMP 00001804: JUMPDEST 00001805: PUSH2 0x1831 00001808: DUP5 00001809: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000014 0000182a: PUSH1 0x02 0000182c: SHL 0000182d: PUSH2 0x2d57 00001830: JUMP 00001831: JUMPDEST 00001832: PUSH2 0x183b 00001835: SWAP2 00001836: SWAP1 00001837: PUSH2 0x2dab 0000183a: JUMP 0000183b: JUMPDEST 0000183c: PUSH2 0x1845 0000183f: SWAP1 00001840: DUP7 00001841: PUSH2 0x2d57 00001844: JUMP 00001845: JUMPDEST 00001846: SWAP1 00001847: POP 00001848: PUSH1 0x00 0000184a: DUP6 0000184b: DUP7 0000184c: PUSH1 0x01 0000184e: PUSH1 0x0f 00001850: SLOAD 00001851: SWAP1 00001852: SHL 00001853: PUSH2 0x185c 00001856: SWAP2 00001857: SWAP1 00001858: PUSH2 0x2d57 0000185b: JUMP 0000185c: JUMPDEST 0000185d: PUSH2 0x1866 00001860: SWAP2 00001861: SWAP1 00001862: PUSH2 0x2d57 00001865: JUMP 00001866: JUMPDEST 00001867: DUP7 00001868: DUP1 00001869: PUSH2 0x1872 0000186c: DUP2 0000186d: DUP10 0000186e: PUSH2 0x2d57 00001871: JUMP 00001872: JUMPDEST 00001873: PUSH2 0x187c 00001876: SWAP2 00001877: SWAP1 00001878: PUSH2 0x2d57 0000187b: JUMP 0000187c: JUMPDEST 0000187d: PUSH2 0x1886 00001880: SWAP2 00001881: SWAP1 00001882: PUSH2 0x2d57 00001885: JUMP 00001886: JUMPDEST 00001887: DUP8 00001888: DUP9 00001889: PUSH1 0x0f 0000188b: SLOAD 0000188c: PUSH1 0x03 0000188e: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000014 000018af: SWAP1 000018b0: SHL 000018b1: PUSH2 0x18ba 000018b4: SWAP2 000018b5: SWAP1 000018b6: PUSH2 0x2d57 000018b9: JUMP 000018ba: JUMPDEST 000018bb: PUSH2 0x18c4 000018be: SWAP2 000018bf: SWAP1 000018c0: PUSH2 0x2d57 000018c3: JUMP 000018c4: JUMPDEST 000018c5: PUSH2 0x18ce 000018c8: SWAP2 000018c9: SWAP1 000018ca: PUSH2 0x2d57 000018cd: JUMP 000018ce: JUMPDEST 000018cf: PUSH2 0x18d8 000018d2: SWAP1 000018d3: DUP8 000018d4: PUSH2 0x2e27 000018d7: JUMP 000018d8: JUMPDEST 000018d9: PUSH2 0x18e2 000018dc: SWAP2 000018dd: SWAP1 000018de: PUSH2 0x2dd7 000018e1: JUMP 000018e2: JUMPDEST 000018e3: PUSH2 0x18ec 000018e6: SWAP2 000018e7: SWAP1 000018e8: PUSH2 0x2dd7 000018eb: JUMP 000018ec: JUMPDEST 000018ed: SWAP1 000018ee: POP 000018ef: PUSH2 0x192d 000018f2: PUSH2 0x18fa 000018f5: DUP4 000018f6: PUSH2 0x259a 000018f9: JUMP 000018fa: JUMPDEST 000018fb: PUSH2 0x1908 000018fe: SWAP1 000018ff: PUSH1 0x02 00001901: DUP10 00001902: SWAP1 00001903: SHL 00001904: PUSH2 0x2d57 00001907: JUMP 00001908: JUMPDEST 00001909: PUSH2 0x1914 0000190c: DUP4 0000190d: PUSH2 0x2710 00001910: PUSH2 0x2df7 00001913: JUMP 00001914: JUMPDEST 00001915: PUSH2 0x191e 00001918: SWAP2 00001919: SWAP1 0000191a: PUSH2 0x2e4f 0000191d: JUMP 0000191e: JUMPDEST 0000191f: PUSH2 0x171a 00001922: SWAP1 00001923: PUSH2 0x2710 00001926: PUSH1 0x01 00001928: SAR 00001929: PUSH2 0x2e27 0000192c: JUMP 0000192d: JUMPDEST 0000192e: SWAP7 0000192f: POP 00001930: POP 00001931: POP 00001932: POP 00001933: POP 00001934: POP 00001935: POP 00001936: SWAP1 00001937: JUMP 00001938: JUMPDEST 00001939: CALLER 0000193a: PUSH1 0x00 0000193c: DUP2 0000193d: DUP2 0000193e: MSTORE 0000193f: PUSH1 0x02 00001941: PUSH1 0x20 00001943: SWAP1 00001944: DUP2 00001945: MSTORE 00001946: PUSH1 0x40 00001948: DUP1 00001949: DUP4 0000194a: KECCAK256 0000194b: PUSH1 0x01 0000194d: PUSH1 0x01 0000194f: PUSH1 0xa0 00001951: SHL 00001952: SUB 00001953: DUP8 00001954: AND 00001955: DUP5 00001956: MSTORE 00001957: SWAP1 00001958: SWAP2 00001959: MSTORE 0000195a: DUP2 0000195b: KECCAK256 0000195c: SLOAD 0000195d: SWAP1 0000195e: SWAP2 0000195f: SWAP1 00001960: DUP4 00001961: DUP2 00001962: LT 00001963: ISZERO 00001964: PUSH2 0x19d5 00001967: JUMPI 00001968: PUSH1 0x40 0000196a: MLOAD 0000196b: PUSH3 0x461bcd 0000196f: PUSH1 0xe5 00001971: SHL 00001972: DUP2 00001973: MSTORE 00001974: PUSH1 0x20 00001976: PUSH1 0x04 00001978: DUP3 00001979: ADD 0000197a: MSTORE 0000197b: PUSH1 0x25 0000197d: PUSH1 0x24 0000197f: DUP3 00001980: ADD 00001981: MSTORE 00001982: PUSH32 0x45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77 000019a3: PUSH1 0x44 000019a5: DUP3 000019a6: ADD 000019a7: MSTORE 000019a8: PUSH32 0x207a65726f000000000000000000000000000000000000000000000000000000 000019c9: PUSH1 0x64 000019cb: DUP3 000019cc: ADD 000019cd: MSTORE 000019ce: PUSH1 0x84 000019d0: ADD 000019d1: PUSH2 0x034e 000019d4: JUMP 000019d5: JUMPDEST 000019d6: PUSH2 0x19e2 000019d9: DUP3 000019da: DUP7 000019db: DUP7 000019dc: DUP5 000019dd: SUB 000019de: PUSH2 0x0357 000019e1: JUMP 000019e2: JUMPDEST 000019e3: POP 000019e4: PUSH1 0x01 000019e6: SWAP5 000019e7: SWAP4 000019e8: POP 000019e9: POP 000019ea: POP 000019eb: POP 000019ec: JUMP 000019ed: JUMPDEST 000019ee: PUSH1 0x11 000019f0: SLOAD 000019f1: PUSH1 0x01 000019f3: EQ 000019f4: PUSH2 0x1a3f 000019f7: JUMPI 000019f8: PUSH1 0x40 000019fa: MLOAD 000019fb: PUSH3 0x461bcd 000019ff: PUSH1 0xe5 00001a01: SHL 00001a02: DUP2 00001a03: MSTORE 00001a04: PUSH1 0x20 00001a06: PUSH1 0x04 00001a08: DUP3 00001a09: ADD 00001a0a: MSTORE 00001a0b: PUSH1 0x18 00001a0d: PUSH1 0x24 00001a0f: DUP3 00001a10: ADD 00001a11: MSTORE 00001a12: PUSH32 0x506f6f6c3a206465706f7369742070726f686962697465640000000000000000 00001a33: PUSH1 0x44 00001a35: DUP3 00001a36: ADD 00001a37: MSTORE 00001a38: PUSH1 0x64 00001a3a: ADD 00001a3b: PUSH2 0x034e 00001a3e: JUMP 00001a3f: JUMPDEST 00001a40: PUSH1 0x0f 00001a42: SLOAD 00001a43: PUSH1 0x00 00001a45: PUSH2 0x1a4d 00001a48: DUP4 00001a49: PUSH2 0x1e77 00001a4c: JUMP 00001a4d: JUMPDEST 00001a4e: SWAP1 00001a4f: POP 00001a50: PUSH1 0x00 00001a52: DUP2 00001a53: GT 00001a54: PUSH2 0x1a9f 00001a57: JUMPI 00001a58: PUSH1 0x40 00001a5a: MLOAD 00001a5b: PUSH3 0x461bcd 00001a5f: PUSH1 0xe5 00001a61: SHL 00001a62: DUP2 00001a63: MSTORE 00001a64: PUSH1 0x20 00001a66: PUSH1 0x04 00001a68: DUP3 00001a69: ADD 00001a6a: MSTORE 00001a6b: PUSH1 0x10 00001a6d: PUSH1 0x24 00001a6f: DUP3 00001a70: ADD 00001a71: MSTORE 00001a72: PUSH32 0x506f6f6c3a20746f6f206c6974746c6500000000000000000000000000000000 00001a93: PUSH1 0x44 00001a95: DUP3 00001a96: ADD 00001a97: MSTORE 00001a98: PUSH1 0x64 00001a9a: ADD 00001a9b: PUSH2 0x034e 00001a9e: JUMP 00001a9f: JUMPDEST 00001aa0: PUSH2 0x1ad4 00001aa3: PUSH1 0x01 00001aa5: PUSH1 0x01 00001aa7: PUSH1 0xa0 00001aa9: SHL 00001aaa: SUB 00001aab: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001acc: AND 00001acd: CALLER 00001ace: ADDRESS 00001acf: DUP7 00001ad0: PUSH2 0x264d 00001ad3: JUMP 00001ad4: JUMPDEST 00001ad5: DUP1 00001ad6: PUSH1 0x0e 00001ad8: PUSH1 0x00 00001ada: DUP3 00001adb: DUP3 00001adc: SLOAD 00001add: PUSH2 0x1ae6 00001ae0: SWAP2 00001ae1: SWAP1 00001ae2: PUSH2 0x2dab 00001ae5: JUMP 00001ae6: JUMPDEST 00001ae7: SWAP1 00001ae8: SWAP2 00001ae9: SSTORE 00001aea: POP 00001aeb: POP 00001aec: PUSH1 0x0c 00001aee: SLOAD 00001aef: PUSH1 0x0b 00001af1: SLOAD 00001af2: PUSH1 0x00 00001af4: SWAP2 00001af5: PUSH2 0x1afd 00001af8: SWAP2 00001af9: PUSH2 0x2dab 00001afc: JUMP 00001afd: JUMPDEST 00001afe: SWAP1 00001aff: POP 00001b00: DUP3 00001b01: ISZERO 00001b02: DUP1 00001b03: PUSH2 0x1b0a 00001b06: JUMPI 00001b07: POP 00001b08: DUP1 00001b09: ISZERO 00001b0a: JUMPDEST 00001b0b: ISZERO 00001b0c: PUSH2 0x1b4f 00001b0f: JUMPI 00001b10: PUSH1 0x00 00001b12: PUSH1 0x01 00001b14: DUP4 00001b15: SWAP1 00001b16: SHR 00001b17: SWAP1 00001b18: POP 00001b19: DUP1 00001b1a: PUSH1 0x0b 00001b1c: PUSH1 0x00 00001b1e: DUP3 00001b1f: DUP3 00001b20: SLOAD 00001b21: PUSH2 0x1b2a 00001b24: SWAP2 00001b25: SWAP1 00001b26: PUSH2 0x2dab 00001b29: JUMP 00001b2a: JUMPDEST 00001b2b: SWAP3 00001b2c: POP 00001b2d: POP 00001b2e: DUP2 00001b2f: SWAP1 00001b30: SSTORE 00001b31: POP 00001b32: DUP1 00001b33: PUSH1 0x0c 00001b35: PUSH1 0x00 00001b37: DUP3 00001b38: DUP3 00001b39: SLOAD 00001b3a: PUSH2 0x1b43 00001b3d: SWAP2 00001b3e: SWAP1 00001b3f: PUSH2 0x2dab 00001b42: JUMP 00001b43: JUMPDEST 00001b44: SWAP1 00001b45: SWAP2 00001b46: SSTORE 00001b47: POP 00001b48: PUSH2 0x1bae 00001b4b: SWAP2 00001b4c: POP 00001b4d: POP 00001b4e: JUMP 00001b4f: JUMPDEST 00001b50: DUP1 00001b51: PUSH1 0x0b 00001b53: SLOAD 00001b54: DUP4 00001b55: PUSH2 0x1b5e 00001b58: SWAP2 00001b59: SWAP1 00001b5a: PUSH2 0x2d57 00001b5d: JUMP 00001b5e: JUMPDEST 00001b5f: PUSH2 0x1b68 00001b62: SWAP2 00001b63: SWAP1 00001b64: PUSH2 0x2d84 00001b67: JUMP 00001b68: JUMPDEST 00001b69: PUSH1 0x0b 00001b6b: PUSH1 0x00 00001b6d: DUP3 00001b6e: DUP3 00001b6f: SLOAD 00001b70: PUSH2 0x1b79 00001b73: SWAP2 00001b74: SWAP1 00001b75: PUSH2 0x2dab 00001b78: JUMP 00001b79: JUMPDEST 00001b7a: SWAP1 00001b7b: SWAP2 00001b7c: SSTORE 00001b7d: POP 00001b7e: POP 00001b7f: PUSH1 0x0c 00001b81: SLOAD 00001b82: DUP2 00001b83: SWAP1 00001b84: PUSH2 0x1b8d 00001b87: SWAP1 00001b88: DUP5 00001b89: PUSH2 0x2d57 00001b8c: JUMP 00001b8d: JUMPDEST 00001b8e: PUSH2 0x1b97 00001b91: SWAP2 00001b92: SWAP1 00001b93: PUSH2 0x2d84 00001b96: JUMP 00001b97: JUMPDEST 00001b98: PUSH1 0x0c 00001b9a: PUSH1 0x00 00001b9c: DUP3 00001b9d: DUP3 00001b9e: SLOAD 00001b9f: PUSH2 0x1ba8 00001ba2: SWAP2 00001ba3: SWAP1 00001ba4: PUSH2 0x2dab 00001ba7: JUMP 00001ba8: JUMPDEST 00001ba9: SWAP1 00001baa: SWAP2 00001bab: SSTORE 00001bac: POP 00001bad: POP 00001bae: JUMPDEST 00001baf: PUSH2 0x1bb6 00001bb2: PUSH2 0x22f2 00001bb5: JUMP 00001bb6: JUMPDEST 00001bb7: PUSH2 0x1bc8 00001bba: CALLER 00001bbb: DUP5 00001bbc: PUSH1 0x0f 00001bbe: SLOAD 00001bbf: PUSH2 0x164d 00001bc2: SWAP2 00001bc3: SWAP1 00001bc4: PUSH2 0x2d98 00001bc7: JUMP 00001bc8: JUMPDEST 00001bc9: PUSH6 0x010000000000 00001bd0: PUSH1 0x0b 00001bd2: SLOAD 00001bd3: LT 00001bd4: PUSH2 0x1c1f 00001bd7: JUMPI 00001bd8: PUSH1 0x40 00001bda: MLOAD 00001bdb: PUSH3 0x461bcd 00001bdf: PUSH1 0xe5 00001be1: SHL 00001be2: DUP2 00001be3: MSTORE 00001be4: PUSH1 0x20 00001be6: PUSH1 0x04 00001be8: DUP3 00001be9: ADD 00001bea: MSTORE 00001beb: PUSH1 0x0e 00001bed: PUSH1 0x24 00001bef: DUP3 00001bf0: ADD 00001bf1: MSTORE 00001bf2: PUSH32 0x506f6f6c3a20746f6f206d756368000000000000000000000000000000000000 00001c13: PUSH1 0x44 00001c15: DUP3 00001c16: ADD 00001c17: MSTORE 00001c18: PUSH1 0x64 00001c1a: ADD 00001c1b: PUSH2 0x034e 00001c1e: JUMP 00001c1f: JUMPDEST 00001c20: POP 00001c21: POP 00001c22: POP 00001c23: POP 00001c24: JUMP 00001c25: JUMPDEST 00001c26: PUSH2 0x1c2d 00001c29: PUSH2 0x20e7 00001c2c: JUMP 00001c2d: JUMPDEST 00001c2e: PUSH1 0x0a 00001c30: DUP1 00001c31: SLOAD 00001c32: PUSH1 0x01 00001c34: PUSH1 0x01 00001c36: PUSH1 0xa0 00001c38: SHL 00001c39: SUB 00001c3a: SWAP1 00001c3b: SWAP3 00001c3c: AND 00001c3d: PUSH3 0x010000 00001c41: MUL 00001c42: PUSH32 0xffffffffffffffffffff0000000000000000000000000000000000000000ffff 00001c63: SWAP1 00001c64: SWAP3 00001c65: AND 00001c66: SWAP2 00001c67: SWAP1 00001c68: SWAP2 00001c69: OR 00001c6a: SWAP1 00001c6b: SSTORE 00001c6c: JUMP 00001c6d: JUMPDEST 00001c6e: PUSH2 0x1c75 00001c71: PUSH2 0x20e7 00001c74: JUMP 00001c75: JUMPDEST 00001c76: PUSH2 0x2710 00001c79: DUP2 00001c7a: GT 00001c7b: ISZERO 00001c7c: PUSH2 0x1cc7 00001c7f: JUMPI 00001c80: PUSH1 0x40 00001c82: MLOAD 00001c83: PUSH3 0x461bcd 00001c87: PUSH1 0xe5 00001c89: SHL 00001c8a: DUP2 00001c8b: MSTORE 00001c8c: PUSH1 0x20 00001c8e: PUSH1 0x04 00001c90: DUP3 00001c91: ADD 00001c92: MSTORE 00001c93: PUSH1 0x0f 00001c95: PUSH1 0x24 00001c97: DUP3 00001c98: ADD 00001c99: MSTORE 00001c9a: PUSH32 0x506f6f6c3a20746f6f206c617267650000000000000000000000000000000000 00001cbb: PUSH1 0x44 00001cbd: DUP3 00001cbe: ADD 00001cbf: MSTORE 00001cc0: PUSH1 0x64 00001cc2: ADD 00001cc3: PUSH2 0x034e 00001cc6: JUMP 00001cc7: JUMPDEST 00001cc8: PUSH1 0x0d 00001cca: SSTORE 00001ccb: JUMP 00001ccc: JUMPDEST 00001ccd: PUSH2 0x1cd4 00001cd0: PUSH2 0x20e7 00001cd3: JUMP 00001cd4: JUMPDEST 00001cd5: PUSH1 0x09 00001cd7: SLOAD 00001cd8: ISZERO 00001cd9: PUSH2 0x1603 00001cdc: JUMPI 00001cdd: PUSH1 0x09 00001cdf: SLOAD 00001ce0: PUSH2 0x1d15 00001ce3: SWAP1 00001ce4: PUSH1 0x01 00001ce6: PUSH1 0x01 00001ce8: PUSH1 0xa0 00001cea: SHL 00001ceb: SUB 00001cec: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001d0d: AND 00001d0e: SWAP1 00001d0f: CALLER 00001d10: SWAP1 00001d11: PUSH2 0x203e 00001d14: JUMP 00001d15: JUMPDEST 00001d16: PUSH1 0x00 00001d18: PUSH1 0x09 00001d1a: SSTORE 00001d1b: JUMP 00001d1c: JUMPDEST 00001d1d: PUSH2 0x1d24 00001d20: PUSH2 0x20e7 00001d23: JUMP 00001d24: JUMPDEST 00001d25: PUSH1 0x01 00001d27: PUSH1 0x01 00001d29: PUSH1 0xa0 00001d2b: SHL 00001d2c: SUB 00001d2d: DUP2 00001d2e: AND 00001d2f: PUSH2 0x1da0 00001d32: JUMPI 00001d33: PUSH1 0x40 00001d35: MLOAD 00001d36: PUSH3 0x461bcd 00001d3a: PUSH1 0xe5 00001d3c: SHL 00001d3d: DUP2 00001d3e: MSTORE 00001d3f: PUSH1 0x20 00001d41: PUSH1 0x04 00001d43: DUP3 00001d44: ADD 00001d45: MSTORE 00001d46: PUSH1 0x26 00001d48: PUSH1 0x24 00001d4a: DUP3 00001d4b: ADD 00001d4c: MSTORE 00001d4d: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 00001d6e: PUSH1 0x44 00001d70: DUP3 00001d71: ADD 00001d72: MSTORE 00001d73: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 00001d94: PUSH1 0x64 00001d96: DUP3 00001d97: ADD 00001d98: MSTORE 00001d99: PUSH1 0x84 00001d9b: ADD 00001d9c: PUSH2 0x034e 00001d9f: JUMP 00001da0: JUMPDEST 00001da1: PUSH2 0x14b6 00001da4: DUP2 00001da5: PUSH2 0x23ec 00001da8: JUMP 00001da9: JUMPDEST 00001daa: PUSH1 0x01 00001dac: PUSH1 0x01 00001dae: PUSH1 0xa0 00001db0: SHL 00001db1: SUB 00001db2: DUP2 00001db3: AND 00001db4: PUSH1 0x00 00001db6: SWAP1 00001db7: DUP2 00001db8: MSTORE 00001db9: PUSH1 0x07 00001dbb: PUSH1 0x20 00001dbd: SWAP1 00001dbe: DUP2 00001dbf: MSTORE 00001dc0: PUSH1 0x40 00001dc2: DUP1 00001dc3: DUP4 00001dc4: KECCAK256 00001dc5: SLOAD 00001dc6: PUSH1 0x06 00001dc8: SLOAD 00001dc9: PUSH1 0x01 00001dcb: SWAP1 00001dcc: SWAP4 00001dcd: MSTORE 00001dce: SWAP1 00001dcf: DUP4 00001dd0: KECCAK256 00001dd1: SLOAD 00001dd2: SWAP1 00001dd3: SWAP2 00001dd4: PUSH1 0x34 00001dd6: SWAP2 00001dd7: PUSH2 0x1de0 00001dda: SWAP2 00001ddb: SWAP1 00001ddc: PUSH2 0x2d57 00001ddf: JUMP 00001de0: JUMPDEST 00001de1: PUSH2 0x09f4 00001de4: SWAP3 00001de5: SWAP2 00001de6: SHR 00001de7: PUSH2 0x2d98 00001dea: JUMP 00001deb: JUMPDEST 00001dec: PUSH1 0x01 00001dee: PUSH1 0x01 00001df0: PUSH1 0xa0 00001df2: SHL 00001df3: SUB 00001df4: DUP4 00001df5: DUP2 00001df6: AND 00001df7: PUSH1 0x00 00001df9: SWAP1 00001dfa: DUP2 00001dfb: MSTORE 00001dfc: PUSH1 0x02 00001dfe: PUSH1 0x20 00001e00: SWAP1 00001e01: DUP2 00001e02: MSTORE 00001e03: PUSH1 0x40 00001e05: DUP1 00001e06: DUP4 00001e07: KECCAK256 00001e08: SWAP4 00001e09: DUP7 00001e0a: AND 00001e0b: DUP4 00001e0c: MSTORE 00001e0d: SWAP3 00001e0e: SWAP1 00001e0f: MSTORE 00001e10: KECCAK256 00001e11: SLOAD 00001e12: PUSH1 0x00 00001e14: NOT 00001e15: DUP2 00001e16: EQ 00001e17: PUSH2 0x1c1f 00001e1a: JUMPI 00001e1b: DUP2 00001e1c: DUP2 00001e1d: LT 00001e1e: ISZERO 00001e1f: PUSH2 0x1e6a 00001e22: JUMPI 00001e23: PUSH1 0x40 00001e25: MLOAD 00001e26: PUSH3 0x461bcd 00001e2a: PUSH1 0xe5 00001e2c: SHL 00001e2d: DUP2 00001e2e: MSTORE 00001e2f: PUSH1 0x20 00001e31: PUSH1 0x04 00001e33: DUP3 00001e34: ADD 00001e35: MSTORE 00001e36: PUSH1 0x1d 00001e38: PUSH1 0x24 00001e3a: DUP3 00001e3b: ADD 00001e3c: MSTORE 00001e3d: PUSH32 0x45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000 00001e5e: PUSH1 0x44 00001e60: DUP3 00001e61: ADD 00001e62: MSTORE 00001e63: PUSH1 0x64 00001e65: ADD 00001e66: PUSH2 0x034e 00001e69: JUMP 00001e6a: JUMPDEST 00001e6b: PUSH2 0x1c1f 00001e6e: DUP5 00001e6f: DUP5 00001e70: DUP5 00001e71: DUP5 00001e72: SUB 00001e73: PUSH2 0x0357 00001e76: JUMP 00001e77: JUMPDEST 00001e78: PUSH1 0x00 00001e7a: PUSH32 0x00000000000000000000000000000000000000000000000000000000000003e8 00001e9b: ISZERO 00001e9c: PUSH2 0x1ec9 00001e9f: JUMPI 00001ea0: PUSH2 0x09f4 00001ea3: PUSH32 0x00000000000000000000000000000000000000000000000000000000000003e8 00001ec4: DUP4 00001ec5: PUSH2 0x2d84 00001ec8: JUMP 00001ec9: JUMPDEST 00001eca: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000000 00001eeb: ISZERO 00001eec: PUSH2 0x1f19 00001eef: JUMPI 00001ef0: PUSH2 0x09f4 00001ef3: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000000 00001f14: DUP4 00001f15: PUSH2 0x2d57 00001f18: JUMP 00001f19: JUMPDEST 00001f1a: POP 00001f1b: SWAP1 00001f1c: JUMP 00001f1d: JUMPDEST 00001f1e: PUSH1 0x00 00001f20: PUSH32 0x00000000000000000000000000000000000000000000000000000000000003e8 00001f41: ISZERO 00001f42: PUSH2 0x1f6f 00001f45: JUMPI 00001f46: PUSH2 0x09f4 00001f49: PUSH32 0x00000000000000000000000000000000000000000000000000000000000003e8 00001f6a: DUP4 00001f6b: PUSH2 0x2d57 00001f6e: JUMP 00001f6f: JUMPDEST 00001f70: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000000 00001f91: ISZERO 00001f92: PUSH2 0x1f19 00001f95: JUMPI 00001f96: PUSH2 0x09f4 00001f99: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000000 00001fba: DUP4 00001fbb: PUSH2 0x2d84 00001fbe: JUMP 00001fbf: JUMPDEST 00001fc0: PUSH1 0x00 00001fc2: PUSH2 0x1fca 00001fc5: PUSH1 0x03 00001fc7: SLOAD 00001fc8: SWAP1 00001fc9: JUMP 00001fca: JUMPDEST 00001fcb: GT 00001fcc: ISZERO 00001fcd: PUSH2 0x14b6 00001fd0: JUMPI 00001fd1: PUSH1 0x00 00001fd3: PUSH2 0x2710 00001fd6: PUSH1 0x08 00001fd8: SLOAD 00001fd9: DUP4 00001fda: PUSH2 0x1fe3 00001fdd: SWAP2 00001fde: SWAP1 00001fdf: PUSH2 0x2d57 00001fe2: JUMP 00001fe3: JUMPDEST 00001fe4: PUSH2 0x1fed 00001fe7: SWAP2 00001fe8: SWAP1 00001fe9: PUSH2 0x2d84 00001fec: JUMP 00001fed: JUMPDEST 00001fee: SWAP1 00001fef: POP 00001ff0: DUP1 00001ff1: DUP3 00001ff2: SUB 00001ff3: SWAP2 00001ff4: POP 00001ff5: PUSH2 0x1ffd 00001ff8: PUSH1 0x03 00001ffa: SLOAD 00001ffb: SWAP1 00001ffc: JUMP 00001ffd: JUMPDEST 00001ffe: PUSH2 0x200b 00002001: SWAP1 00002002: PUSH1 0x34 00002004: DUP5 00002005: SWAP1 00002006: SHL 00002007: PUSH2 0x2d84 0000200a: JUMP 0000200b: JUMPDEST 0000200c: PUSH1 0x06 0000200e: PUSH1 0x00 00002010: DUP3 00002011: DUP3 00002012: SLOAD 00002013: PUSH2 0x201c 00002016: SWAP2 00002017: SWAP1 00002018: PUSH2 0x2dab 0000201b: JUMP 0000201c: JUMPDEST 0000201d: SWAP3 0000201e: POP 0000201f: POP 00002020: DUP2 00002021: SWAP1 00002022: SSTORE 00002023: POP 00002024: DUP1 00002025: PUSH1 0x09 00002027: PUSH1 0x00 00002029: DUP3 0000202a: DUP3 0000202b: SLOAD 0000202c: PUSH2 0x2035 0000202f: SWAP2 00002030: SWAP1 00002031: PUSH2 0x2dab 00002034: JUMP 00002035: JUMPDEST 00002036: SWAP1 00002037: SWAP2 00002038: SSTORE 00002039: POP 0000203a: POP 0000203b: POP 0000203c: POP 0000203d: JUMP 0000203e: JUMPDEST 0000203f: PUSH1 0x40 00002041: MLOAD 00002042: PUSH1 0x01 00002044: PUSH1 0x01 00002046: PUSH1 0xa0 00002048: SHL 00002049: SUB 0000204a: DUP4 0000204b: AND 0000204c: PUSH1 0x24 0000204e: DUP3 0000204f: ADD 00002050: MSTORE 00002051: PUSH1 0x44 00002053: DUP2 00002054: ADD 00002055: DUP3 00002056: SWAP1 00002057: MSTORE 00002058: PUSH2 0x136c 0000205b: SWAP1 0000205c: DUP5 0000205d: SWAP1 0000205e: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 0000207f: SWAP1 00002080: PUSH1 0x64 00002082: ADD 00002083: JUMPDEST 00002084: PUSH1 0x40 00002086: DUP1 00002087: MLOAD 00002088: PUSH1 0x1f 0000208a: NOT 0000208b: DUP2 0000208c: DUP5 0000208d: SUB 0000208e: ADD 0000208f: DUP2 00002090: MSTORE 00002091: SWAP2 00002092: SWAP1 00002093: MSTORE 00002094: PUSH1 0x20 00002096: DUP2 00002097: ADD 00002098: DUP1 00002099: MLOAD 0000209a: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000020b7: AND 000020b8: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000020d9: SWAP1 000020da: SWAP4 000020db: AND 000020dc: SWAP3 000020dd: SWAP1 000020de: SWAP3 000020df: OR 000020e0: SWAP1 000020e1: SWAP2 000020e2: MSTORE 000020e3: PUSH2 0x269e 000020e6: JUMP 000020e7: JUMPDEST 000020e8: PUSH1 0x00 000020ea: SLOAD 000020eb: PUSH1 0x01 000020ed: PUSH1 0x01 000020ef: PUSH1 0xa0 000020f1: SHL 000020f2: SUB 000020f3: AND 000020f4: CALLER 000020f5: EQ 000020f6: PUSH2 0x1603 000020f9: JUMPI 000020fa: PUSH1 0x40 000020fc: MLOAD 000020fd: PUSH3 0x461bcd 00002101: PUSH1 0xe5 00002103: SHL 00002104: DUP2 00002105: MSTORE 00002106: PUSH1 0x20 00002108: PUSH1 0x04 0000210a: DUP3 0000210b: ADD 0000210c: DUP2 0000210d: SWAP1 0000210e: MSTORE 0000210f: PUSH1 0x24 00002111: DUP3 00002112: ADD 00002113: MSTORE 00002114: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00002135: PUSH1 0x44 00002137: DUP3 00002138: ADD 00002139: MSTORE 0000213a: PUSH1 0x64 0000213c: ADD 0000213d: PUSH2 0x034e 00002140: JUMP 00002141: JUMPDEST 00002142: PUSH1 0x01 00002144: PUSH1 0x01 00002146: PUSH1 0xa0 00002148: SHL 00002149: SUB 0000214a: DUP3 0000214b: AND 0000214c: PUSH1 0x00 0000214e: SWAP1 0000214f: DUP2 00002150: MSTORE 00002151: PUSH1 0x01 00002153: PUSH1 0x20 00002155: MSTORE 00002156: PUSH1 0x40 00002158: SWAP1 00002159: KECCAK256 0000215a: SLOAD 0000215b: DUP2 0000215c: DUP2 0000215d: LT 0000215e: ISZERO 0000215f: PUSH2 0x21aa 00002162: JUMPI 00002163: PUSH1 0x40 00002165: MLOAD 00002166: PUSH3 0x461bcd 0000216a: PUSH1 0xe5 0000216c: SHL 0000216d: DUP2 0000216e: MSTORE 0000216f: PUSH1 0x20 00002171: PUSH1 0x04 00002173: DUP3 00002174: ADD 00002175: DUP2 00002176: SWAP1 00002177: MSTORE 00002178: PUSH1 0x24 0000217a: DUP3 0000217b: ADD 0000217c: MSTORE 0000217d: PUSH32 0x5265776172644d616e616765723a206e6f7420656e6f75676820616d6f756e74 0000219e: PUSH1 0x44 000021a0: DUP3 000021a1: ADD 000021a2: MSTORE 000021a3: PUSH1 0x64 000021a5: ADD 000021a6: PUSH2 0x034e 000021a9: JUMP 000021aa: JUMPDEST 000021ab: PUSH1 0x00 000021ad: DUP2 000021ae: ISZERO 000021af: PUSH2 0x21e9 000021b2: JUMPI 000021b3: PUSH1 0x01 000021b5: PUSH1 0x01 000021b7: PUSH1 0xa0 000021b9: SHL 000021ba: SUB 000021bb: DUP5 000021bc: AND 000021bd: PUSH1 0x00 000021bf: SWAP1 000021c0: DUP2 000021c1: MSTORE 000021c2: PUSH1 0x07 000021c4: PUSH1 0x20 000021c6: MSTORE 000021c7: PUSH1 0x40 000021c9: SWAP1 000021ca: KECCAK256 000021cb: SLOAD 000021cc: PUSH1 0x06 000021ce: SLOAD 000021cf: PUSH1 0x34 000021d1: SWAP1 000021d2: PUSH2 0x21db 000021d5: SWAP1 000021d6: DUP6 000021d7: PUSH2 0x2d57 000021da: JUMP 000021db: JUMPDEST 000021dc: PUSH2 0x21e6 000021df: SWAP3 000021e0: SWAP2 000021e1: SHR 000021e2: PUSH2 0x2d98 000021e5: JUMP 000021e6: JUMPDEST 000021e7: SWAP1 000021e8: POP 000021e9: JUMPDEST 000021ea: PUSH2 0x21f3 000021ed: DUP4 000021ee: DUP4 000021ef: PUSH2 0x2d98 000021f2: JUMP 000021f3: JUMPDEST 000021f4: SWAP2 000021f5: POP 000021f6: PUSH2 0x21ff 000021f9: DUP5 000021fa: DUP5 000021fb: PUSH2 0x2783 000021fe: JUMP 000021ff: JUMPDEST 00002200: PUSH1 0x34 00002202: PUSH1 0x06 00002204: SLOAD 00002205: DUP4 00002206: PUSH2 0x220f 00002209: SWAP2 0000220a: SWAP1 0000220b: PUSH2 0x2d57 0000220e: JUMP 0000220f: JUMPDEST 00002210: PUSH1 0x01 00002212: PUSH1 0x01 00002214: PUSH1 0xa0 00002216: SHL 00002217: SUB 00002218: DUP7 00002219: AND 0000221a: PUSH1 0x00 0000221c: SWAP1 0000221d: DUP2 0000221e: MSTORE 0000221f: PUSH1 0x07 00002221: PUSH1 0x20 00002223: MSTORE 00002224: PUSH1 0x40 00002226: SWAP1 00002227: KECCAK256 00002228: SWAP2 00002229: SHR 0000222a: SWAP1 0000222b: SSTORE 0000222c: DUP1 0000222d: ISZERO 0000222e: PUSH2 0x22a9 00002231: JUMPI 00002232: PUSH2 0x2265 00002235: PUSH1 0x01 00002237: PUSH1 0x01 00002239: PUSH1 0xa0 0000223b: SHL 0000223c: SUB 0000223d: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000225e: AND 0000225f: DUP6 00002260: DUP4 00002261: PUSH2 0x203e 00002264: JUMP 00002265: JUMPDEST 00002266: DUP4 00002267: PUSH1 0x01 00002269: PUSH1 0x01 0000226b: PUSH1 0xa0 0000226d: SHL 0000226e: SUB 0000226f: AND 00002270: PUSH32 0xfc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe 00002291: DUP3 00002292: PUSH1 0x40 00002294: MLOAD 00002295: PUSH2 0x22a0 00002298: SWAP2 00002299: DUP2 0000229a: MSTORE 0000229b: PUSH1 0x20 0000229d: ADD 0000229e: SWAP1 0000229f: JUMP 000022a0: JUMPDEST 000022a1: PUSH1 0x40 000022a3: MLOAD 000022a4: DUP1 000022a5: SWAP2 000022a6: SUB 000022a7: SWAP1 000022a8: LOG2 000022a9: JUMPDEST 000022aa: DUP4 000022ab: PUSH1 0x01 000022ad: PUSH1 0x01 000022af: PUSH1 0xa0 000022b1: SHL 000022b2: SUB 000022b3: AND 000022b4: PUSH32 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364 000022d5: DUP5 000022d6: PUSH1 0x40 000022d8: MLOAD 000022d9: PUSH2 0x22e4 000022dc: SWAP2 000022dd: DUP2 000022de: MSTORE 000022df: PUSH1 0x20 000022e1: ADD 000022e2: SWAP1 000022e3: JUMP 000022e4: JUMPDEST 000022e5: PUSH1 0x40 000022e7: MLOAD 000022e8: DUP1 000022e9: SWAP2 000022ea: SUB 000022eb: SWAP1 000022ec: LOG2 000022ed: POP 000022ee: POP 000022ef: POP 000022f0: POP 000022f1: JUMP 000022f2: JUMPDEST 000022f3: PUSH1 0x0b 000022f5: SLOAD 000022f6: PUSH1 0x0c 000022f8: SLOAD 000022f9: PUSH1 0x00 000022fb: PUSH2 0x2304 000022fe: DUP3 000022ff: DUP5 00002300: PUSH2 0x2d57 00002303: JUMP 00002304: JUMPDEST 00002305: SWAP1 00002306: POP 00002307: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000014 00002328: PUSH1 0x00 0000232a: PUSH2 0x2333 0000232d: DUP5 0000232e: DUP7 0000232f: PUSH2 0x2dab 00002332: JUMP 00002333: JUMPDEST 00002334: PUSH2 0x233d 00002337: DUP5 00002338: DUP5 00002339: PUSH2 0x2d57 0000233c: JUMP 0000233d: JUMPDEST 0000233e: PUSH2 0x2347 00002341: SWAP2 00002342: SWAP1 00002343: PUSH2 0x2d57 00002346: JUMP 00002347: JUMPDEST 00002348: SWAP1 00002349: POP 0000234a: PUSH1 0x00 0000234c: PUSH1 0x03 0000234e: PUSH2 0x235c 00002351: PUSH1 0x01 00002353: PUSH1 0x02 00002355: DUP7 00002356: SWAP1 00002357: SHL 00002358: PUSH2 0x2d98 0000235b: JUMP 0000235c: JUMPDEST 0000235d: PUSH2 0x2366 00002360: SWAP1 00002361: DUP7 00002362: PUSH2 0x2d57 00002365: JUMP 00002366: JUMPDEST 00002367: PUSH2 0x2370 0000236a: SWAP2 0000236b: SWAP1 0000236c: PUSH2 0x2d84 0000236f: JUMP 00002370: JUMPDEST 00002371: SWAP1 00002372: POP 00002373: PUSH1 0x00 00002375: PUSH2 0x23a5 00002378: DUP3 00002379: PUSH2 0x2382 0000237c: DUP2 0000237d: DUP1 0000237e: PUSH2 0x2d57 00002381: JUMP 00002382: JUMPDEST 00002383: PUSH2 0x238c 00002386: SWAP2 00002387: SWAP1 00002388: PUSH2 0x2d57 0000238b: JUMP 0000238c: JUMPDEST 0000238d: PUSH2 0x2396 00002390: DUP6 00002391: DUP1 00002392: PUSH2 0x2d57 00002395: JUMP 00002396: JUMPDEST 00002397: PUSH2 0x23a0 0000239a: SWAP2 0000239b: SWAP1 0000239c: PUSH2 0x2dab 0000239f: JUMP 000023a0: JUMPDEST 000023a1: PUSH2 0x259a 000023a4: JUMP 000023a5: JUMPDEST 000023a6: SWAP1 000023a7: POP 000023a8: PUSH1 0x00 000023aa: PUSH2 0x23b4 000023ad: DUP3 000023ae: DUP6 000023af: ADD 000023b0: PUSH2 0x28ee 000023b3: JUMP 000023b4: JUMPDEST 000023b5: SWAP1 000023b6: POP 000023b7: DUP4 000023b8: DUP3 000023b9: GT 000023ba: ISZERO 000023bb: PUSH2 0x23d0 000023be: JUMPI 000023bf: PUSH2 0x23c9 000023c2: DUP5 000023c3: DUP4 000023c4: SUB 000023c5: PUSH2 0x28ee 000023c8: JUMP 000023c9: JUMPDEST 000023ca: SWAP1 000023cb: SUB 000023cc: PUSH2 0x23dd 000023cf: JUMP 000023d0: JUMPDEST 000023d1: PUSH2 0x23db 000023d4: DUP3 000023d5: DUP6 000023d6: SUB 000023d7: PUSH2 0x28ee 000023da: JUMP 000023db: JUMPDEST 000023dc: ADD 000023dd: JUMPDEST 000023de: PUSH1 0x01 000023e0: SHL 000023e1: PUSH1 0x0f 000023e3: SSTORE 000023e4: POP 000023e5: POP 000023e6: POP 000023e7: POP 000023e8: POP 000023e9: POP 000023ea: POP 000023eb: JUMP 000023ec: JUMPDEST 000023ed: PUSH1 0x00 000023ef: DUP1 000023f0: SLOAD 000023f1: PUSH1 0x01 000023f3: PUSH1 0x01 000023f5: PUSH1 0xa0 000023f7: SHL 000023f8: SUB 000023f9: DUP4 000023fa: DUP2 000023fb: AND 000023fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002411: NOT 00002412: DUP4 00002413: AND 00002414: DUP2 00002415: OR 00002416: DUP5 00002417: SSTORE 00002418: PUSH1 0x40 0000241a: MLOAD 0000241b: SWAP2 0000241c: SWAP1 0000241d: SWAP3 0000241e: AND 0000241f: SWAP3 00002420: DUP4 00002421: SWAP2 00002422: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00002443: SWAP2 00002444: SWAP1 00002445: LOG3 00002446: POP 00002447: POP 00002448: JUMP 00002449: JUMPDEST 0000244a: PUSH1 0x01 0000244c: PUSH1 0x01 0000244e: PUSH1 0xa0 00002450: SHL 00002451: SUB 00002452: DUP3 00002453: AND 00002454: PUSH1 0x00 00002456: SWAP1 00002457: DUP2 00002458: MSTORE 00002459: PUSH1 0x01 0000245b: PUSH1 0x20 0000245d: MSTORE 0000245e: PUSH1 0x40 00002460: DUP2 00002461: KECCAK256 00002462: SLOAD 00002463: DUP1 00002464: ISZERO 00002465: PUSH2 0x249f 00002468: JUMPI 00002469: PUSH1 0x01 0000246b: PUSH1 0x01 0000246d: PUSH1 0xa0 0000246f: SHL 00002470: SUB 00002471: DUP5 00002472: AND 00002473: PUSH1 0x00 00002475: SWAP1 00002476: DUP2 00002477: MSTORE 00002478: PUSH1 0x07 0000247a: PUSH1 0x20 0000247c: MSTORE 0000247d: PUSH1 0x40 0000247f: SWAP1 00002480: KECCAK256 00002481: SLOAD 00002482: PUSH1 0x06 00002484: SLOAD 00002485: PUSH1 0x34 00002487: SWAP1 00002488: PUSH2 0x2491 0000248b: SWAP1 0000248c: DUP5 0000248d: PUSH2 0x2d57 00002490: JUMP 00002491: JUMPDEST 00002492: PUSH2 0x249c 00002495: SWAP3 00002496: SWAP2 00002497: SHR 00002498: PUSH2 0x2d98 0000249b: JUMP 0000249c: JUMPDEST 0000249d: SWAP2 0000249e: POP 0000249f: JUMPDEST 000024a0: PUSH2 0x24a9 000024a3: DUP4 000024a4: DUP3 000024a5: PUSH2 0x2dab 000024a8: JUMP 000024a9: JUMPDEST 000024aa: SWAP1 000024ab: POP 000024ac: PUSH2 0x24b5 000024af: DUP5 000024b0: DUP5 000024b1: PUSH2 0x2939 000024b4: JUMP 000024b5: JUMPDEST 000024b6: PUSH1 0x34 000024b8: PUSH1 0x06 000024ba: SLOAD 000024bb: DUP3 000024bc: PUSH2 0x24c5 000024bf: SWAP2 000024c0: SWAP1 000024c1: PUSH2 0x2d57 000024c4: JUMP 000024c5: JUMPDEST 000024c6: PUSH1 0x01 000024c8: PUSH1 0x01 000024ca: PUSH1 0xa0 000024cc: SHL 000024cd: SUB 000024ce: DUP7 000024cf: AND 000024d0: PUSH1 0x00 000024d2: SWAP1 000024d3: DUP2 000024d4: MSTORE 000024d5: PUSH1 0x07 000024d7: PUSH1 0x20 000024d9: MSTORE 000024da: PUSH1 0x40 000024dc: SWAP1 000024dd: KECCAK256 000024de: SWAP2 000024df: SHR 000024e0: SWAP1 000024e1: SSTORE 000024e2: DUP2 000024e3: ISZERO 000024e4: PUSH2 0x255f 000024e7: JUMPI 000024e8: PUSH2 0x251b 000024eb: PUSH1 0x01 000024ed: PUSH1 0x01 000024ef: PUSH1 0xa0 000024f1: SHL 000024f2: SUB 000024f3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00002514: AND 00002515: DUP6 00002516: DUP5 00002517: PUSH2 0x203e 0000251a: JUMP 0000251b: JUMPDEST 0000251c: DUP4 0000251d: PUSH1 0x01 0000251f: PUSH1 0x01 00002521: PUSH1 0xa0 00002523: SHL 00002524: SUB 00002525: AND 00002526: PUSH32 0xfc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe 00002547: DUP4 00002548: PUSH1 0x40 0000254a: MLOAD 0000254b: PUSH2 0x2556 0000254e: SWAP2 0000254f: DUP2 00002550: MSTORE 00002551: PUSH1 0x20 00002553: ADD 00002554: SWAP1 00002555: JUMP 00002556: JUMPDEST 00002557: PUSH1 0x40 00002559: MLOAD 0000255a: DUP1 0000255b: SWAP2 0000255c: SUB 0000255d: SWAP1 0000255e: LOG2 0000255f: JUMPDEST 00002560: DUP4 00002561: PUSH1 0x01 00002563: PUSH1 0x01 00002565: PUSH1 0xa0 00002567: SHL 00002568: SUB 00002569: AND 0000256a: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c 0000258b: DUP5 0000258c: PUSH1 0x40 0000258e: MLOAD 0000258f: PUSH2 0x22e4 00002592: SWAP2 00002593: DUP2 00002594: MSTORE 00002595: PUSH1 0x20 00002597: ADD 00002598: SWAP1 00002599: JUMP 0000259a: JUMPDEST 0000259b: PUSH1 0x00 0000259d: DUP2 0000259e: ISZERO 0000259f: PUSH2 0x25f3 000025a2: JUMPI 000025a3: PUSH1 0x01 000025a5: DUP3 000025a6: DUP2 000025a7: SHR 000025a8: DUP2 000025a9: ADD 000025aa: SWAP1 000025ab: PUSH1 0x00 000025ad: SWAP1 000025ae: DUP3 000025af: DUP6 000025b0: DUP2 000025b1: PUSH2 0x25bc 000025b4: JUMPI 000025b5: PUSH2 0x25bc 000025b8: PUSH2 0x2d6e 000025bb: JUMP 000025bc: JUMPDEST 000025bd: DIV 000025be: DUP4 000025bf: ADD 000025c0: SWAP1 000025c1: SHR 000025c2: SWAP1 000025c3: POP 000025c4: JUMPDEST 000025c5: DUP1 000025c6: DUP3 000025c7: GT 000025c8: ISZERO 000025c9: PUSH2 0x25ec 000025cc: JUMPI 000025cd: DUP1 000025ce: SWAP2 000025cf: POP 000025d0: PUSH1 0x01 000025d2: DUP3 000025d3: DUP6 000025d4: DUP2 000025d5: PUSH2 0x25e0 000025d8: JUMPI 000025d9: PUSH2 0x25e0 000025dc: PUSH2 0x2d6e 000025df: JUMP 000025e0: JUMPDEST 000025e1: DIV 000025e2: DUP4 000025e3: ADD 000025e4: SWAP1 000025e5: SHR 000025e6: SWAP1 000025e7: POP 000025e8: PUSH2 0x25c4 000025eb: JUMP 000025ec: JUMPDEST 000025ed: POP 000025ee: SWAP3 000025ef: SWAP2 000025f0: POP 000025f1: POP 000025f2: JUMP 000025f3: JUMPDEST 000025f4: POP 000025f5: PUSH1 0x00 000025f7: SWAP2 000025f8: SWAP1 000025f9: POP 000025fa: JUMP 000025fb: JUMPDEST 000025fc: PUSH1 0x00 000025fe: DUP1 000025ff: DUP3 00002600: SLT 00002601: ISZERO 00002602: PUSH2 0x1f19 00002605: JUMPI 00002606: PUSH1 0x40 00002608: MLOAD 00002609: PUSH3 0x461bcd 0000260d: PUSH1 0xe5 0000260f: SHL 00002610: DUP2 00002611: MSTORE 00002612: PUSH1 0x20 00002614: PUSH1 0x04 00002616: DUP3 00002617: ADD 00002618: DUP2 00002619: SWAP1 0000261a: MSTORE 0000261b: PUSH1 0x24 0000261d: DUP3 0000261e: ADD 0000261f: MSTORE 00002620: PUSH32 0x53616665436173743a2076616c7565206d75737420626520706f736974697665 00002641: PUSH1 0x44 00002643: DUP3 00002644: ADD 00002645: MSTORE 00002646: PUSH1 0x64 00002648: ADD 00002649: PUSH2 0x034e 0000264c: JUMP 0000264d: JUMPDEST 0000264e: PUSH1 0x40 00002650: MLOAD 00002651: PUSH1 0x01 00002653: PUSH1 0x01 00002655: PUSH1 0xa0 00002657: SHL 00002658: SUB 00002659: DUP1 0000265a: DUP6 0000265b: AND 0000265c: PUSH1 0x24 0000265e: DUP4 0000265f: ADD 00002660: MSTORE 00002661: DUP4 00002662: AND 00002663: PUSH1 0x44 00002665: DUP3 00002666: ADD 00002667: MSTORE 00002668: PUSH1 0x64 0000266a: DUP2 0000266b: ADD 0000266c: DUP3 0000266d: SWAP1 0000266e: MSTORE 0000266f: PUSH2 0x1c1f 00002672: SWAP1 00002673: DUP6 00002674: SWAP1 00002675: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00002696: SWAP1 00002697: PUSH1 0x84 00002699: ADD 0000269a: PUSH2 0x2083 0000269d: JUMP 0000269e: JUMPDEST 0000269f: PUSH1 0x00 000026a1: PUSH2 0x26f3 000026a4: DUP3 000026a5: PUSH1 0x40 000026a7: MLOAD 000026a8: DUP1 000026a9: PUSH1 0x40 000026ab: ADD 000026ac: PUSH1 0x40 000026ae: MSTORE 000026af: DUP1 000026b0: PUSH1 0x20 000026b2: DUP2 000026b3: MSTORE 000026b4: PUSH1 0x20 000026b6: ADD 000026b7: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 000026d8: DUP2 000026d9: MSTORE 000026da: POP 000026db: DUP6 000026dc: PUSH1 0x01 000026de: PUSH1 0x01 000026e0: PUSH1 0xa0 000026e2: SHL 000026e3: SUB 000026e4: AND 000026e5: PUSH2 0x29fa 000026e8: SWAP1 000026e9: SWAP3 000026ea: SWAP2 000026eb: SWAP1 000026ec: PUSH4 0xffffffff 000026f1: AND 000026f2: JUMP 000026f3: JUMPDEST 000026f4: DUP1 000026f5: MLOAD 000026f6: SWAP1 000026f7: SWAP2 000026f8: POP 000026f9: ISZERO 000026fa: PUSH2 0x136c 000026fd: JUMPI 000026fe: DUP1 000026ff: DUP1 00002700: PUSH1 0x20 00002702: ADD 00002703: SWAP1 00002704: MLOAD 00002705: DUP2 00002706: ADD 00002707: SWAP1 00002708: PUSH2 0x2711 0000270b: SWAP2 0000270c: SWAP1 0000270d: PUSH2 0x2e7d 00002710: JUMP 00002711: JUMPDEST 00002712: PUSH2 0x136c 00002715: JUMPI 00002716: PUSH1 0x40 00002718: MLOAD 00002719: PUSH3 0x461bcd 0000271d: PUSH1 0xe5 0000271f: SHL 00002720: DUP2 00002721: MSTORE 00002722: PUSH1 0x20 00002724: PUSH1 0x04 00002726: DUP3 00002727: ADD 00002728: MSTORE 00002729: PUSH1 0x2a 0000272b: PUSH1 0x24 0000272d: DUP3 0000272e: ADD 0000272f: MSTORE 00002730: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00002751: PUSH1 0x44 00002753: DUP3 00002754: ADD 00002755: MSTORE 00002756: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00002777: PUSH1 0x64 00002779: DUP3 0000277a: ADD 0000277b: MSTORE 0000277c: PUSH1 0x84 0000277e: ADD 0000277f: PUSH2 0x034e 00002782: JUMP 00002783: JUMPDEST 00002784: PUSH1 0x01 00002786: PUSH1 0x01 00002788: PUSH1 0xa0 0000278a: SHL 0000278b: SUB 0000278c: DUP3 0000278d: AND 0000278e: PUSH2 0x27ff 00002791: JUMPI 00002792: PUSH1 0x40 00002794: MLOAD 00002795: PUSH3 0x461bcd 00002799: PUSH1 0xe5 0000279b: SHL 0000279c: DUP2 0000279d: MSTORE 0000279e: PUSH1 0x20 000027a0: PUSH1 0x04 000027a2: DUP3 000027a3: ADD 000027a4: MSTORE 000027a5: PUSH1 0x21 000027a7: PUSH1 0x24 000027a9: DUP3 000027aa: ADD 000027ab: MSTORE 000027ac: PUSH32 0x45524332303a206275726e2066726f6d20746865207a65726f20616464726573 000027cd: PUSH1 0x44 000027cf: DUP3 000027d0: ADD 000027d1: MSTORE 000027d2: PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 000027f3: PUSH1 0x64 000027f5: DUP3 000027f6: ADD 000027f7: MSTORE 000027f8: PUSH1 0x84 000027fa: ADD 000027fb: PUSH2 0x034e 000027fe: JUMP 000027ff: JUMPDEST 00002800: PUSH1 0x01 00002802: PUSH1 0x01 00002804: PUSH1 0xa0 00002806: SHL 00002807: SUB 00002808: DUP3 00002809: AND 0000280a: PUSH1 0x00 0000280c: SWAP1 0000280d: DUP2 0000280e: MSTORE 0000280f: PUSH1 0x01 00002811: PUSH1 0x20 00002813: MSTORE 00002814: PUSH1 0x40 00002816: SWAP1 00002817: KECCAK256 00002818: SLOAD 00002819: DUP2 0000281a: DUP2 0000281b: LT 0000281c: ISZERO 0000281d: PUSH2 0x288e 00002820: JUMPI 00002821: PUSH1 0x40 00002823: MLOAD 00002824: PUSH3 0x461bcd 00002828: PUSH1 0xe5 0000282a: SHL 0000282b: DUP2 0000282c: MSTORE 0000282d: PUSH1 0x20 0000282f: PUSH1 0x04 00002831: DUP3 00002832: ADD 00002833: MSTORE 00002834: PUSH1 0x22 00002836: PUSH1 0x24 00002838: DUP3 00002839: ADD 0000283a: MSTORE 0000283b: PUSH32 0x45524332303a206275726e20616d6f756e7420657863656564732062616c616e 0000285c: PUSH1 0x44 0000285e: DUP3 0000285f: ADD 00002860: MSTORE 00002861: PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 00002882: PUSH1 0x64 00002884: DUP3 00002885: ADD 00002886: MSTORE 00002887: PUSH1 0x84 00002889: ADD 0000288a: PUSH2 0x034e 0000288d: JUMP 0000288e: JUMPDEST 0000288f: PUSH1 0x01 00002891: PUSH1 0x01 00002893: PUSH1 0xa0 00002895: SHL 00002896: SUB 00002897: DUP4 00002898: AND 00002899: PUSH1 0x00 0000289b: DUP2 0000289c: DUP2 0000289d: MSTORE 0000289e: PUSH1 0x01 000028a0: PUSH1 0x20 000028a2: SWAP1 000028a3: DUP2 000028a4: MSTORE 000028a5: PUSH1 0x40 000028a7: DUP1 000028a8: DUP4 000028a9: KECCAK256 000028aa: DUP7 000028ab: DUP7 000028ac: SUB 000028ad: SWAP1 000028ae: SSTORE 000028af: PUSH1 0x03 000028b1: DUP1 000028b2: SLOAD 000028b3: DUP8 000028b4: SWAP1 000028b5: SUB 000028b6: SWAP1 000028b7: SSTORE 000028b8: MLOAD 000028b9: DUP6 000028ba: DUP2 000028bb: MSTORE 000028bc: SWAP2 000028bd: SWAP3 000028be: SWAP2 000028bf: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000028e0: SWAP2 000028e1: ADD 000028e2: PUSH1 0x40 000028e4: MLOAD 000028e5: DUP1 000028e6: SWAP2 000028e7: SUB 000028e8: SWAP1 000028e9: LOG3 000028ea: POP 000028eb: POP 000028ec: POP 000028ed: JUMP 000028ee: JUMPDEST 000028ef: PUSH1 0x00 000028f1: DUP1 000028f2: PUSH1 0x01 000028f4: PUSH1 0xff 000028f6: SHL 000028f7: JUMPDEST 000028f8: DUP1 000028f9: ISZERO 000028fa: PUSH2 0x25ec 000028fd: JUMPI 000028fe: PUSH1 0x01 00002900: SWAP2 00002901: DUP3 00002902: SHL 00002903: SWAP2 00002904: DUP3 00002905: DUP2 00002906: ADD 00002907: DUP4 00002908: MUL 00002909: PUSH1 0x03 0000290b: MUL 0000290c: ADD 0000290d: DUP1 0000290e: DUP3 0000290f: DUP7 00002910: DUP2 00002911: PUSH2 0x291c 00002914: JUMPI 00002915: PUSH2 0x291c 00002918: PUSH2 0x2d6e 0000291b: JUMP 0000291c: JUMPDEST 0000291d: DIV 0000291e: LT 0000291f: PUSH2 0x2930 00002922: JUMPI 00002923: DUP1 00002924: DUP3 00002925: MUL 00002926: DUP6 00002927: SUB 00002928: SWAP5 00002929: POP 0000292a: PUSH1 0x01 0000292c: DUP4 0000292d: ADD 0000292e: SWAP3 0000292f: POP 00002930: JUMPDEST 00002931: POP 00002932: PUSH1 0x03 00002934: SHR 00002935: PUSH2 0x28f7 00002938: JUMP 00002939: JUMPDEST 0000293a: PUSH1 0x01 0000293c: PUSH1 0x01 0000293e: PUSH1 0xa0 00002940: SHL 00002941: SUB 00002942: DUP3 00002943: AND 00002944: PUSH2 0x298f 00002947: JUMPI 00002948: PUSH1 0x40 0000294a: MLOAD 0000294b: PUSH3 0x461bcd 0000294f: PUSH1 0xe5 00002951: SHL 00002952: DUP2 00002953: MSTORE 00002954: PUSH1 0x20 00002956: PUSH1 0x04 00002958: DUP3 00002959: ADD 0000295a: MSTORE 0000295b: PUSH1 0x1f 0000295d: PUSH1 0x24 0000295f: DUP3 00002960: ADD 00002961: MSTORE 00002962: PUSH32 0x45524332303a206d696e7420746f20746865207a65726f206164647265737300 00002983: PUSH1 0x44 00002985: DUP3 00002986: ADD 00002987: MSTORE 00002988: PUSH1 0x64 0000298a: ADD 0000298b: PUSH2 0x034e 0000298e: JUMP 0000298f: JUMPDEST 00002990: DUP1 00002991: PUSH1 0x03 00002993: PUSH1 0x00 00002995: DUP3 00002996: DUP3 00002997: SLOAD 00002998: PUSH2 0x29a1 0000299b: SWAP2 0000299c: SWAP1 0000299d: PUSH2 0x2dab 000029a0: JUMP 000029a1: JUMPDEST 000029a2: SWAP1 000029a3: SWAP2 000029a4: SSTORE 000029a5: POP 000029a6: POP 000029a7: PUSH1 0x01 000029a9: PUSH1 0x01 000029ab: PUSH1 0xa0 000029ad: SHL 000029ae: SUB 000029af: DUP3 000029b0: AND 000029b1: PUSH1 0x00 000029b3: DUP2 000029b4: DUP2 000029b5: MSTORE 000029b6: PUSH1 0x01 000029b8: PUSH1 0x20 000029ba: SWAP1 000029bb: DUP2 000029bc: MSTORE 000029bd: PUSH1 0x40 000029bf: DUP1 000029c0: DUP4 000029c1: KECCAK256 000029c2: DUP1 000029c3: SLOAD 000029c4: DUP7 000029c5: ADD 000029c6: SWAP1 000029c7: SSTORE 000029c8: MLOAD 000029c9: DUP5 000029ca: DUP2 000029cb: MSTORE 000029cc: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000029ed: SWAP2 000029ee: ADD 000029ef: PUSH1 0x40 000029f1: MLOAD 000029f2: DUP1 000029f3: SWAP2 000029f4: SUB 000029f5: SWAP1 000029f6: LOG3 000029f7: POP 000029f8: POP 000029f9: JUMP 000029fa: JUMPDEST 000029fb: PUSH1 0x60 000029fd: PUSH2 0x10d5 00002a00: DUP5 00002a01: DUP5 00002a02: PUSH1 0x00 00002a04: DUP6 00002a05: DUP6 00002a06: PUSH1 0x00 00002a08: DUP1 00002a09: DUP7 00002a0a: PUSH1 0x01 00002a0c: PUSH1 0x01 00002a0e: PUSH1 0xa0 00002a10: SHL 00002a11: SUB 00002a12: AND 00002a13: DUP6 00002a14: DUP8 00002a15: PUSH1 0x40 00002a17: MLOAD 00002a18: PUSH2 0x2a21 00002a1b: SWAP2 00002a1c: SWAP1 00002a1d: PUSH2 0x2e9a 00002a20: JUMP 00002a21: JUMPDEST 00002a22: PUSH1 0x00 00002a24: PUSH1 0x40 00002a26: MLOAD 00002a27: DUP1 00002a28: DUP4 00002a29: SUB 00002a2a: DUP2 00002a2b: DUP6 00002a2c: DUP8 00002a2d: GAS 00002a2e: CALL 00002a2f: SWAP3 00002a30: POP 00002a31: POP 00002a32: POP 00002a33: RETURNDATASIZE 00002a34: DUP1 00002a35: PUSH1 0x00 00002a37: DUP2 00002a38: EQ 00002a39: PUSH2 0x2a5e 00002a3c: JUMPI 00002a3d: PUSH1 0x40 00002a3f: MLOAD 00002a40: SWAP2 00002a41: POP 00002a42: PUSH1 0x1f 00002a44: NOT 00002a45: PUSH1 0x3f 00002a47: RETURNDATASIZE 00002a48: ADD 00002a49: AND 00002a4a: DUP3 00002a4b: ADD 00002a4c: PUSH1 0x40 00002a4e: MSTORE 00002a4f: RETURNDATASIZE 00002a50: DUP3 00002a51: MSTORE 00002a52: RETURNDATASIZE 00002a53: PUSH1 0x00 00002a55: PUSH1 0x20 00002a57: DUP5 00002a58: ADD 00002a59: RETURNDATACOPY 00002a5a: PUSH2 0x2a63 00002a5d: JUMP 00002a5e: JUMPDEST 00002a5f: PUSH1 0x60 00002a61: SWAP2 00002a62: POP 00002a63: JUMPDEST 00002a64: POP 00002a65: SWAP2 00002a66: POP 00002a67: SWAP2 00002a68: POP 00002a69: PUSH2 0x1734 00002a6c: DUP8 00002a6d: DUP4 00002a6e: DUP4 00002a6f: DUP8 00002a70: PUSH1 0x60 00002a72: DUP4 00002a73: ISZERO 00002a74: PUSH2 0x2ade 00002a77: JUMPI 00002a78: DUP3 00002a79: MLOAD 00002a7a: PUSH1 0x00 00002a7c: SUB 00002a7d: PUSH2 0x2ad7 00002a80: JUMPI 00002a81: PUSH1 0x01 00002a83: PUSH1 0x01 00002a85: PUSH1 0xa0 00002a87: SHL 00002a88: SUB 00002a89: DUP6 00002a8a: AND 00002a8b: EXTCODESIZE 00002a8c: PUSH2 0x2ad7 00002a8f: JUMPI 00002a90: PUSH1 0x40 00002a92: MLOAD 00002a93: PUSH3 0x461bcd 00002a97: PUSH1 0xe5 00002a99: SHL 00002a9a: DUP2 00002a9b: MSTORE 00002a9c: PUSH1 0x20 00002a9e: PUSH1 0x04 00002aa0: DUP3 00002aa1: ADD 00002aa2: MSTORE 00002aa3: PUSH1 0x1d 00002aa5: PUSH1 0x24 00002aa7: DUP3 00002aa8: ADD 00002aa9: MSTORE 00002aaa: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00002acb: PUSH1 0x44 00002acd: DUP3 00002ace: ADD 00002acf: MSTORE 00002ad0: PUSH1 0x64 00002ad2: ADD 00002ad3: PUSH2 0x034e 00002ad6: JUMP 00002ad7: JUMPDEST 00002ad8: POP 00002ad9: DUP2 00002ada: PUSH2 0x10d5 00002add: JUMP 00002ade: JUMPDEST 00002adf: PUSH2 0x10d5 00002ae2: DUP4 00002ae3: DUP4 00002ae4: DUP2 00002ae5: MLOAD 00002ae6: ISZERO 00002ae7: PUSH2 0x2af3 00002aea: JUMPI 00002aeb: DUP2 00002aec: MLOAD 00002aed: DUP1 00002aee: DUP4 00002aef: PUSH1 0x20 00002af1: ADD 00002af2: REVERT 00002af3: JUMPDEST 00002af4: DUP1 00002af5: PUSH1 0x40 00002af7: MLOAD 00002af8: PUSH3 0x461bcd 00002afc: PUSH1 0xe5 00002afe: SHL 00002aff: DUP2 00002b00: MSTORE 00002b01: PUSH1 0x04 00002b03: ADD 00002b04: PUSH2 0x034e 00002b07: SWAP2 00002b08: SWAP1 00002b09: PUSH2 0x2b31 00002b0c: JUMP 00002b0d: JUMPDEST 00002b0e: PUSH1 0x00 00002b10: JUMPDEST 00002b11: DUP4 00002b12: DUP2 00002b13: LT 00002b14: ISZERO 00002b15: PUSH2 0x2b28 00002b18: JUMPI 00002b19: DUP2 00002b1a: DUP2 00002b1b: ADD 00002b1c: MLOAD 00002b1d: DUP4 00002b1e: DUP3 00002b1f: ADD 00002b20: MSTORE 00002b21: PUSH1 0x20 00002b23: ADD 00002b24: PUSH2 0x2b10 00002b27: JUMP 00002b28: JUMPDEST 00002b29: POP 00002b2a: POP 00002b2b: PUSH1 0x00 00002b2d: SWAP2 00002b2e: ADD 00002b2f: MSTORE 00002b30: JUMP 00002b31: JUMPDEST 00002b32: PUSH1 0x20 00002b34: DUP2 00002b35: MSTORE 00002b36: PUSH1 0x00 00002b38: DUP3 00002b39: MLOAD 00002b3a: DUP1 00002b3b: PUSH1 0x20 00002b3d: DUP5 00002b3e: ADD 00002b3f: MSTORE 00002b40: PUSH2 0x2b50 00002b43: DUP2 00002b44: PUSH1 0x40 00002b46: DUP6 00002b47: ADD 00002b48: PUSH1 0x20 00002b4a: DUP8 00002b4b: ADD 00002b4c: PUSH2 0x2b0d 00002b4f: JUMP 00002b50: JUMPDEST 00002b51: PUSH1 0x1f 00002b53: ADD 00002b54: PUSH1 0x1f 00002b56: NOT 00002b57: AND 00002b58: SWAP2 00002b59: SWAP1 00002b5a: SWAP2 00002b5b: ADD 00002b5c: PUSH1 0x40 00002b5e: ADD 00002b5f: SWAP3 00002b60: SWAP2 00002b61: POP 00002b62: POP 00002b63: JUMP 00002b64: JUMPDEST 00002b65: DUP1 00002b66: CALLDATALOAD 00002b67: PUSH1 0x01 00002b69: PUSH1 0x01 00002b6b: PUSH1 0xa0 00002b6d: SHL 00002b6e: SUB 00002b6f: DUP2 00002b70: AND 00002b71: DUP2 00002b72: EQ 00002b73: PUSH2 0x2b7b 00002b76: JUMPI 00002b77: PUSH1 0x00 00002b79: DUP1 00002b7a: REVERT 00002b7b: JUMPDEST 00002b7c: SWAP2 00002b7d: SWAP1 00002b7e: POP 00002b7f: JUMP 00002b80: JUMPDEST 00002b81: PUSH1 0x00 00002b83: DUP1 00002b84: PUSH1 0x40 00002b86: DUP4 00002b87: DUP6 00002b88: SUB 00002b89: SLT 00002b8a: ISZERO 00002b8b: PUSH2 0x2b93 00002b8e: JUMPI 00002b8f: PUSH1 0x00 00002b91: DUP1 00002b92: REVERT 00002b93: JUMPDEST 00002b94: PUSH2 0x2b9c 00002b97: DUP4 00002b98: PUSH2 0x2b64 00002b9b: JUMP 00002b9c: JUMPDEST 00002b9d: SWAP5 00002b9e: PUSH1 0x20 00002ba0: SWAP4 00002ba1: SWAP1 00002ba2: SWAP4 00002ba3: ADD 00002ba4: CALLDATALOAD 00002ba5: SWAP4 00002ba6: POP 00002ba7: POP 00002ba8: POP 00002ba9: JUMP 00002baa: JUMPDEST 00002bab: PUSH1 0x00 00002bad: DUP1 00002bae: PUSH1 0x00 00002bb0: PUSH1 0x60 00002bb2: DUP5 00002bb3: DUP7 00002bb4: SUB 00002bb5: SLT 00002bb6: ISZERO 00002bb7: PUSH2 0x2bbf 00002bba: JUMPI 00002bbb: PUSH1 0x00 00002bbd: DUP1 00002bbe: REVERT 00002bbf: JUMPDEST 00002bc0: PUSH2 0x2bc8 00002bc3: DUP5 00002bc4: PUSH2 0x2b64 00002bc7: JUMP 00002bc8: JUMPDEST 00002bc9: SWAP3 00002bca: POP 00002bcb: PUSH2 0x2bd6 00002bce: PUSH1 0x20 00002bd0: DUP6 00002bd1: ADD 00002bd2: PUSH2 0x2b64 00002bd5: JUMP 00002bd6: JUMPDEST 00002bd7: SWAP2 00002bd8: POP 00002bd9: PUSH1 0x40 00002bdb: DUP5 00002bdc: ADD 00002bdd: CALLDATALOAD 00002bde: SWAP1 00002bdf: POP 00002be0: SWAP3 00002be1: POP 00002be2: SWAP3 00002be3: POP 00002be4: SWAP3 00002be5: JUMP 00002be6: JUMPDEST 00002be7: DUP1 00002be8: ISZERO 00002be9: ISZERO 00002bea: DUP2 00002beb: EQ 00002bec: PUSH2 0x14b6 00002bef: JUMPI 00002bf0: PUSH1 0x00 00002bf2: DUP1 00002bf3: REVERT 00002bf4: JUMPDEST 00002bf5: PUSH1 0x00 00002bf7: DUP1 00002bf8: PUSH1 0x00 00002bfa: PUSH1 0x60 00002bfc: DUP5 00002bfd: DUP7 00002bfe: SUB 00002bff: SLT 00002c00: ISZERO 00002c01: PUSH2 0x2c09 00002c04: JUMPI 00002c05: PUSH1 0x00 00002c07: DUP1 00002c08: REVERT 00002c09: JUMPDEST 00002c0a: PUSH2 0x2c12 00002c0d: DUP5 00002c0e: PUSH2 0x2b64 00002c11: JUMP 00002c12: JUMPDEST 00002c13: SWAP3 00002c14: POP 00002c15: PUSH1 0x20 00002c17: DUP5 00002c18: ADD 00002c19: CALLDATALOAD 00002c1a: SWAP2 00002c1b: POP 00002c1c: PUSH1 0x40 00002c1e: DUP5 00002c1f: ADD 00002c20: CALLDATALOAD 00002c21: PUSH2 0x2c29 00002c24: DUP2 00002c25: PUSH2 0x2be6 00002c28: JUMP 00002c29: JUMPDEST 00002c2a: DUP1 00002c2b: SWAP2 00002c2c: POP 00002c2d: POP 00002c2e: SWAP3 00002c2f: POP 00002c30: SWAP3 00002c31: POP 00002c32: SWAP3 00002c33: JUMP 00002c34: JUMPDEST 00002c35: PUSH1 0x00 00002c37: DUP1 00002c38: PUSH1 0x00 00002c3a: DUP1 00002c3b: PUSH1 0x80 00002c3d: DUP6 00002c3e: DUP8 00002c3f: SUB 00002c40: SLT 00002c41: ISZERO 00002c42: PUSH2 0x2c4a 00002c45: JUMPI 00002c46: PUSH1 0x00 00002c48: DUP1 00002c49: REVERT 00002c4a: JUMPDEST 00002c4b: PUSH2 0x2c53 00002c4e: DUP6 00002c4f: PUSH2 0x2b64 00002c52: JUMP 00002c53: JUMPDEST 00002c54: SWAP4 00002c55: POP 00002c56: PUSH1 0x20 00002c58: DUP6 00002c59: ADD 00002c5a: CALLDATALOAD 00002c5b: SWAP3 00002c5c: POP 00002c5d: PUSH1 0x40 00002c5f: DUP6 00002c60: ADD 00002c61: CALLDATALOAD 00002c62: SWAP2 00002c63: POP 00002c64: PUSH1 0x60 00002c66: DUP6 00002c67: ADD 00002c68: CALLDATALOAD 00002c69: PUSH2 0x2c71 00002c6c: DUP2 00002c6d: PUSH2 0x2be6 00002c70: JUMP 00002c71: JUMPDEST 00002c72: SWAP4 00002c73: SWAP7 00002c74: SWAP3 00002c75: SWAP6 00002c76: POP 00002c77: SWAP1 00002c78: SWAP4 00002c79: POP 00002c7a: POP 00002c7b: JUMP 00002c7c: JUMPDEST 00002c7d: PUSH1 0x00 00002c7f: PUSH1 0x20 00002c81: DUP3 00002c82: DUP5 00002c83: SUB 00002c84: SLT 00002c85: ISZERO 00002c86: PUSH2 0x2c8e 00002c89: JUMPI 00002c8a: PUSH1 0x00 00002c8c: DUP1 00002c8d: REVERT 00002c8e: JUMPDEST 00002c8f: POP 00002c90: CALLDATALOAD 00002c91: SWAP2 00002c92: SWAP1 00002c93: POP 00002c94: JUMP 00002c95: JUMPDEST 00002c96: PUSH1 0x00 00002c98: PUSH1 0x20 00002c9a: DUP3 00002c9b: DUP5 00002c9c: SUB 00002c9d: SLT 00002c9e: ISZERO 00002c9f: PUSH2 0x2ca7 00002ca2: JUMPI 00002ca3: PUSH1 0x00 00002ca5: DUP1 00002ca6: REVERT 00002ca7: JUMPDEST 00002ca8: DUP2 00002ca9: CALLDATALOAD 00002caa: PUSH2 0xffff 00002cad: DUP2 00002cae: AND 00002caf: DUP2 00002cb0: EQ 00002cb1: PUSH2 0x0a19 00002cb4: JUMPI 00002cb5: PUSH1 0x00 00002cb7: DUP1 00002cb8: REVERT 00002cb9: JUMPDEST 00002cba: PUSH1 0x00 00002cbc: PUSH1 0x20 00002cbe: DUP3 00002cbf: DUP5 00002cc0: SUB 00002cc1: SLT 00002cc2: ISZERO 00002cc3: PUSH2 0x2ccb 00002cc6: JUMPI 00002cc7: PUSH1 0x00 00002cc9: DUP1 00002cca: REVERT 00002ccb: JUMPDEST 00002ccc: PUSH2 0x0a19 00002ccf: DUP3 00002cd0: PUSH2 0x2b64 00002cd3: JUMP 00002cd4: JUMPDEST 00002cd5: PUSH1 0x00 00002cd7: DUP1 00002cd8: PUSH1 0x40 00002cda: DUP4 00002cdb: DUP6 00002cdc: SUB 00002cdd: SLT 00002cde: ISZERO 00002cdf: PUSH2 0x2ce7 00002ce2: JUMPI 00002ce3: PUSH1 0x00 00002ce5: DUP1 00002ce6: REVERT 00002ce7: JUMPDEST 00002ce8: PUSH2 0x2cf0 00002ceb: DUP4 00002cec: PUSH2 0x2b64 00002cef: JUMP 00002cf0: JUMPDEST 00002cf1: SWAP2 00002cf2: POP 00002cf3: PUSH2 0x2cfe 00002cf6: PUSH1 0x20 00002cf8: DUP5 00002cf9: ADD 00002cfa: PUSH2 0x2b64 00002cfd: JUMP 00002cfe: JUMPDEST 00002cff: SWAP1 00002d00: POP 00002d01: SWAP3 00002d02: POP 00002d03: SWAP3 00002d04: SWAP1 00002d05: POP 00002d06: JUMP 00002d07: JUMPDEST 00002d08: PUSH1 0x01 00002d0a: DUP2 00002d0b: DUP2 00002d0c: SHR 00002d0d: SWAP1 00002d0e: DUP3 00002d0f: AND 00002d10: DUP1 00002d11: PUSH2 0x2d1b 00002d14: JUMPI 00002d15: PUSH1 0x7f 00002d17: DUP3 00002d18: AND 00002d19: SWAP2 00002d1a: POP 00002d1b: JUMPDEST 00002d1c: PUSH1 0x20 00002d1e: DUP3 00002d1f: LT 00002d20: DUP2 00002d21: SUB 00002d22: PUSH2 0x2d3b 00002d25: JUMPI 00002d26: PUSH4 0x4e487b71 00002d2b: PUSH1 0xe0 00002d2d: SHL 00002d2e: PUSH1 0x00 00002d30: MSTORE 00002d31: PUSH1 0x22 00002d33: PUSH1 0x04 00002d35: MSTORE 00002d36: PUSH1 0x24 00002d38: PUSH1 0x00 00002d3a: REVERT 00002d3b: JUMPDEST 00002d3c: POP 00002d3d: SWAP2 00002d3e: SWAP1 00002d3f: POP 00002d40: JUMP 00002d41: JUMPDEST 00002d42: PUSH4 0x4e487b71 00002d47: PUSH1 0xe0 00002d49: SHL 00002d4a: PUSH1 0x00 00002d4c: MSTORE 00002d4d: PUSH1 0x11 00002d4f: PUSH1 0x04 00002d51: MSTORE 00002d52: PUSH1 0x24 00002d54: PUSH1 0x00 00002d56: REVERT 00002d57: JUMPDEST 00002d58: DUP1 00002d59: DUP3 00002d5a: MUL 00002d5b: DUP2 00002d5c: ISZERO 00002d5d: DUP3 00002d5e: DUP3 00002d5f: DIV 00002d60: DUP5 00002d61: EQ 00002d62: OR 00002d63: PUSH2 0x09f4 00002d66: JUMPI 00002d67: PUSH2 0x09f4 00002d6a: PUSH2 0x2d41 00002d6d: JUMP 00002d6e: JUMPDEST 00002d6f: PUSH4 0x4e487b71 00002d74: PUSH1 0xe0 00002d76: SHL 00002d77: PUSH1 0x00 00002d79: MSTORE 00002d7a: PUSH1 0x12 00002d7c: PUSH1 0x04 00002d7e: MSTORE 00002d7f: PUSH1 0x24 00002d81: PUSH1 0x00 00002d83: REVERT 00002d84: JUMPDEST 00002d85: PUSH1 0x00 00002d87: DUP3 00002d88: PUSH2 0x2d93 00002d8b: JUMPI 00002d8c: PUSH2 0x2d93 00002d8f: PUSH2 0x2d6e 00002d92: JUMP 00002d93: JUMPDEST 00002d94: POP 00002d95: DIV 00002d96: SWAP1 00002d97: JUMP 00002d98: JUMPDEST 00002d99: DUP2 00002d9a: DUP2 00002d9b: SUB 00002d9c: DUP2 00002d9d: DUP2 00002d9e: GT 00002d9f: ISZERO 00002da0: PUSH2 0x09f4 00002da3: JUMPI 00002da4: PUSH2 0x09f4 00002da7: PUSH2 0x2d41 00002daa: JUMP 00002dab: JUMPDEST 00002dac: DUP1 00002dad: DUP3 00002dae: ADD 00002daf: DUP1 00002db0: DUP3 00002db1: GT 00002db2: ISZERO 00002db3: PUSH2 0x09f4 00002db6: JUMPI 00002db7: PUSH2 0x09f4 00002dba: PUSH2 0x2d41 00002dbd: JUMP 00002dbe: JUMPDEST 00002dbf: PUSH1 0x00 00002dc1: PUSH1 0x20 00002dc3: DUP3 00002dc4: DUP5 00002dc5: SUB 00002dc6: SLT 00002dc7: ISZERO 00002dc8: PUSH2 0x2dd0 00002dcb: JUMPI 00002dcc: PUSH1 0x00 00002dce: DUP1 00002dcf: REVERT 00002dd0: JUMPDEST 00002dd1: POP 00002dd2: MLOAD 00002dd3: SWAP2 00002dd4: SWAP1 00002dd5: POP 00002dd6: JUMP 00002dd7: JUMPDEST 00002dd8: DUP2 00002dd9: DUP2 00002dda: SUB 00002ddb: PUSH1 0x00 00002ddd: DUP4 00002dde: SLT 00002ddf: DUP1 00002de0: ISZERO 00002de1: DUP4 00002de2: DUP4 00002de3: SGT 00002de4: AND 00002de5: DUP4 00002de6: DUP4 00002de7: SLT 00002de8: DUP3 00002de9: AND 00002dea: OR 00002deb: ISZERO 00002dec: PUSH2 0x25ec 00002def: JUMPI 00002df0: PUSH2 0x25ec 00002df3: PUSH2 0x2d41 00002df6: JUMP 00002df7: JUMPDEST 00002df8: DUP1 00002df9: DUP3 00002dfa: MUL 00002dfb: PUSH1 0x00 00002dfd: DUP3 00002dfe: SLT 00002dff: PUSH1 0x01 00002e01: PUSH1 0xff 00002e03: SHL 00002e04: DUP5 00002e05: EQ 00002e06: AND 00002e07: ISZERO 00002e08: PUSH2 0x2e13 00002e0b: JUMPI 00002e0c: PUSH2 0x2e13 00002e0f: PUSH2 0x2d41 00002e12: JUMP 00002e13: JUMPDEST 00002e14: DUP2 00002e15: DUP2 00002e16: SDIV 00002e17: DUP4 00002e18: EQ 00002e19: DUP3 00002e1a: ISZERO 00002e1b: OR 00002e1c: PUSH2 0x09f4 00002e1f: JUMPI 00002e20: PUSH2 0x09f4 00002e23: PUSH2 0x2d41 00002e26: JUMP 00002e27: JUMPDEST 00002e28: DUP1 00002e29: DUP3 00002e2a: ADD 00002e2b: DUP3 00002e2c: DUP2 00002e2d: SLT 00002e2e: PUSH1 0x00 00002e30: DUP4 00002e31: SLT 00002e32: DUP1 00002e33: ISZERO 00002e34: DUP3 00002e35: AND 00002e36: DUP3 00002e37: ISZERO 00002e38: DUP3 00002e39: AND 00002e3a: OR 00002e3b: ISZERO 00002e3c: PUSH2 0x2e47 00002e3f: JUMPI 00002e40: PUSH2 0x2e47 00002e43: PUSH2 0x2d41 00002e46: JUMP 00002e47: JUMPDEST 00002e48: POP 00002e49: POP 00002e4a: SWAP3 00002e4b: SWAP2 00002e4c: POP 00002e4d: POP 00002e4e: JUMP 00002e4f: JUMPDEST 00002e50: PUSH1 0x00 00002e52: DUP3 00002e53: PUSH2 0x2e5e 00002e56: JUMPI 00002e57: PUSH2 0x2e5e 00002e5a: PUSH2 0x2d6e 00002e5d: JUMP 00002e5e: JUMPDEST 00002e5f: PUSH1 0x01 00002e61: PUSH1 0xff 00002e63: SHL 00002e64: DUP3 00002e65: EQ 00002e66: PUSH1 0x00 00002e68: NOT 00002e69: DUP5 00002e6a: EQ 00002e6b: AND 00002e6c: ISZERO 00002e6d: PUSH2 0x2e78 00002e70: JUMPI 00002e71: PUSH2 0x2e78 00002e74: PUSH2 0x2d41 00002e77: JUMP 00002e78: JUMPDEST 00002e79: POP 00002e7a: SDIV 00002e7b: SWAP1 00002e7c: JUMP 00002e7d: JUMPDEST 00002e7e: PUSH1 0x00 00002e80: PUSH1 0x20 00002e82: DUP3 00002e83: DUP5 00002e84: SUB 00002e85: SLT 00002e86: ISZERO 00002e87: PUSH2 0x2e8f 00002e8a: JUMPI 00002e8b: PUSH1 0x00 00002e8d: DUP1 00002e8e: REVERT 00002e8f: JUMPDEST 00002e90: DUP2 00002e91: MLOAD 00002e92: PUSH2 0x0a19 00002e95: DUP2 00002e96: PUSH2 0x2be6 00002e99: JUMP 00002e9a: JUMPDEST 00002e9b: PUSH1 0x00 00002e9d: DUP3 00002e9e: MLOAD 00002e9f: PUSH2 0x2eac 00002ea2: DUP2 00002ea3: DUP5 00002ea4: PUSH1 0x20 00002ea6: DUP8 00002ea7: ADD 00002ea8: PUSH2 0x2b0d 00002eab: JUMP 00002eac: JUMPDEST 00002ead: SWAP2 00002eae: SWAP1 00002eaf: SWAP2 00002eb0: ADD 00002eb1: SWAP3 00002eb2: SWAP2 00002eb3: POP 00002eb4: POP 00002eb5: JUMP 00002eb6: INVALID 00002eb7: LOG2 00002eb8: PUSH5 0x6970667358 00002ebe: UNKNOWN(0x22) 00002ebf: SLT 00002ec0: KECCAK256 00002ec1: UNKNOWN(0xCF) 00002ec2: DUP12 00002ec3: UNKNOWN(0xBC) 00002ec4: DUP14 00002ec5: PUSH24 0x3f3a9e8c446559f4074b1091e3753e4d731f648de781ae83 00002ede: UNKNOWN(0xD1) 00002edf: SWAP15 00002ee0: PUSH9 0x64736f6c6343000812 00002eea: STOP 00002eeb: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xd6e20fca239c40ae0c382c777d9fc2c588766f6932abca81ae2e8fee1681c662
call_targets:
0xa7062bba94c91d565ae33b893ab5dfaf1fc57c4d
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xd6e20fca239c40ae0c382c777d9fc2c588766f6932abca81ae2e8fee1681c662",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa7062bba94c91d565ae33b893ab5dfaf1fc57c4d"
],
"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": "0xf40f0f52",
"selector": "0xf40f0f52",
"calldata_variants": [
"0xf40f0f52",
"0xf40f0f520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf887ea40",
"selector": "0xf887ea40",
"calldata_variants": [
"0xf887ea40",
"0xf887ea400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0c546a",
"selector": "0xfc0c546a",
"calldata_variants": [
"0xfc0c546a",
"0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe78a5875",
"selector": "0xe78a5875",
"calldata_variants": [
"0xe78a5875",
"0xe78a58750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe99fee3e",
"selector": "0xe99fee3e",
"calldata_variants": [
"0xe99fee3e",
"0xe99fee3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0d78655",
"selector": "0xc0d78655",
"calldata_variants": [
"0xc0d78655",
"0xc0d786550000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc1c46dbe",
"selector": "0xc1c46dbe",
"calldata_variants": [
"0xc1c46dbe",
"0xc1c46dbe0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 10798,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xd6e20fca239c40ae0c382c777d9fc2c588766f6932abca81ae2e8fee1681c662
call_targets:
0xa7062bba94c91d565ae33b893ab5dfaf1fc57c4d
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xd6e20fca239c40ae0c382c777d9fc2c588766f6932abca81ae2e8fee1681c662",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa7062bba94c91d565ae33b893ab5dfaf1fc57c4d"
],
"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": "0xf40f0f52",
"selector": "0xf40f0f52",
"calldata_variants": [
"0xf40f0f52",
"0xf40f0f520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf887ea40",
"selector": "0xf887ea40",
"calldata_variants": [
"0xf887ea40",
"0xf887ea400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0c546a",
"selector": "0xfc0c546a",
"calldata_variants": [
"0xfc0c546a",
"0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe78a5875",
"selector": "0xe78a5875",
"calldata_variants": [
"0xe78a5875",
"0xe78a58750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe99fee3e",
"selector": "0xe99fee3e",
"calldata_variants": [
"0xe99fee3e",
"0xe99fee3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0d78655",
"selector": "0xc0d78655",
"calldata_variants": [
"0xc0d78655",
"0xc0d786550000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc1c46dbe",
"selector": "0xc1c46dbe",
"calldata_variants": [
"0xc1c46dbe",
"0xc1c46dbe0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 10798,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| medium | oracle | codex | Untrusted relayer controls slippage on bridge receive (min output not authenticated) | 75 | no | — |
viewevidence_json{
"evidence": "`receiveTokens` accepts an arbitrary `receiveAmountMin` from any caller, while `hashMessage` does not include this parameter, so it is not authenticated by the cross-chain message.",
"locations": [
"contracts/contracts/Bridge.sol:124",
"contracts/contracts/Bridge.sol:240"
],
"recommendation": "Include `receiveAmountMin` (and ideally a deadline) in the message hash/signature, or restrict `receiveTokens` to the recipient/authorized relayer. Alternatively, require an off-chain signature from the recipient over `(receiveAmountMin, deadline)` and verify it on-chain before swapping.",
"exploit_scenario": "A third party monitors inbound messages, manipulates the destination pool price (or waits for unfavorable conditions), then calls `receiveTokens` with `receiveAmountMin = 0` to force execution at a bad rate before the recipient can act. Because `receiveAmountMin` is not part of the signed message, this permanently consumes the message and the recipient receives fewer tokens than expected; the attacker can back-run to profit from the price distortion."
}
|
| medium | math | codex | Accounting assumes full token transfers, enabling fee-on-transfer/rebasing token drains | 75 | no | — |
viewevidence_json{
"evidence": "Router transfers the user-supplied `amount` and passes that same value into pool accounting; deposit/swap logic never reconciles actual token receipts.",
"locations": [
"contracts/contracts/Router.sol:141",
"contracts/contracts/Pool.sol:116",
"contracts/contracts/Pool.sol:185"
],
"recommendation": "Use balance-delta accounting: compute actual received amount via `balanceOf` before/after transfer and use that value for pool/reserve updates. Alternatively, enforce a strict allowlist of standard ERC20 tokens and revert if `balanceOf` change != `amount`.",
"exploit_scenario": "If a supported token charges a transfer fee or rebases, the pool credits the full `amount` even though fewer tokens arrive. An attacker can repeatedly swap/deposit/withdraw to extract the phantom balance (e.g., swap 100 tokens with 1% fee, pool receives 99 but credits 100), eventually draining real liquidity."
}
|