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

Analysis Run

e06193e8-5116-4939-aa91-edaf29b45ab5

complete
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 3:05 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
2
No findings?
no
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.
View stderr
[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"]}]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
1
Total opcodes
6421
Flags
No heuristic flags raised.
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_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
view
trace_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
view
evidence_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
view
evidence_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."
}