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

Analysis Run

967eefc5-5d64-4367-893f-8979c65295be

complete
Chain ID
1
Address
Block Number
Created
Wed, Dec 31, 2025 6:15 PM
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
Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral
crit 0 high 0 proxy context implementation known
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30884 report.consolidate complete 1 / 1 3 months ago
94315 artifact.fetch complete 1 / 3 1 week ago
94316 tool.cast_disasm complete 1 / 3 1 week ago
94317 analysis.bundle complete 1 / 3 1 week ago
94318 capability.graph complete 1 / 3 1 week ago
94319 detector.run complete 1 / 3 1 week ago
94320 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.
View stderr
[codex:1297625] OpenAI Codex v0.77.0 (research preview)
[codex:1297625] --------
[codex:1297625] workdir: /tmp/codex-multi-npogdspu
[codex:1297625] model: gpt-5.2-codex
[codex:1297625] provider: openai
[codex:1297625] approval: never
[codex:1297625] sandbox: read-only
[codex:1297625] reasoning effort: xhigh
[codex:1297625] reasoning summaries: auto
[codex:1297625] session id: 019b759b-bfe4-7153-8ce0-a4ce924dbe31
[codex:1297625] --------
[codex:1297625] user
[codex:1297625] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1297625] 
[codex:1297625] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:1297625] 
[codex:1297625] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1297625] - Gas inefficiency, code quality, naming, or best practices
[codex:1297625] - Theoretical vulnerabilities without a clear extraction path
[codex:1297625] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:1297625] - Front-running unless it enables theft beyond MEV
[codex:1297625] - DoS, griefing, or issues that don't result in attacker profit
[codex:1297625] - Missing events, view function issues, or informational findings
[codex:1297625] 
[codex:1297625] HIGH-VALUE PATTERNS TO HUNT:
[codex:1297625] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:1297625] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:1297625] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:1297625] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:1297625] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:1297625] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:1297625] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:1297625] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:1297625] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:1297625] 
[codex:1297625] For each finding, you MUST provide:
[codex:1297625] 1. Exact file and line numbers of vulnerable code
[codex:1297625] 2. Step-by-step exploit transaction sequence
[codex:1297625] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:1297625] 
[codex:1297625] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:1297625] 
[codex:1297625] Output MUST be valid JSON matching the provided schema.
[codex:1297625] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1297625] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1297625] mcp startup: no servers
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Preparing to read instructions**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc ls in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625] AUDIT_BUNDLE.txt
[codex:1297625] codex-output-schema.json
[codex:1297625] contracts
[codex:1297625] exec
[codex:1297625] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-npogdspu succeeded in 5ms:
[codex:1297625] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:1297625] 
[codex:1297625] ================================================================================
[codex:1297625] FILE: contracts/contracts/PackageVersioned.sol
[codex:1297625] ================================================================================
[codex:1297625] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625] pragma solidity >=0.6.11;
[codex:1297625] 
[codex:1297625] /**
[codex:1297625]  * @title PackageVersioned
[codex:1297625]  * @notice Package version getter for contracts
[codex:1297625]  **/
[codex:1297625] abstract contract PackageVersioned {
[codex:1297625]     // GENERATED CODE - DO NOT EDIT
[codex:1297625]     string public constant PACKAGE_VERSION = "7.0.0";
[codex:1297625] }
[codex:1297625] 
[codex:1297625] ================================================================================
[codex:1297625] FILE: contracts/contracts/client/GasRouter.sol
[codex:1297625] ================================================================================
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Searching for profit-related code**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc 'rg --files contracts/contracts' in /tmp/codex-multi-npogdspu succeeded in 8ms:
[codex:1297625] contracts/contracts/interfaces/hooks/IPostDispatchHook.sol
[codex:1297625] contracts/contracts/interfaces/IMessageRecipient.sol
[codex:1297625] contracts/contracts/interfaces/IInterchainSecurityModule.sol
[codex:1297625] contracts/contracts/interfaces/IMailbox.sol
[codex:1297625] contracts/contracts/PackageVersioned.sol
[codex:1297625] contracts/contracts/libs/Message.sol
[codex:1297625] contracts/contracts/libs/TypeCasts.sol
[codex:1297625] contracts/contracts/libs/EnumerableMapExtended.sol
[codex:1297625] contracts/contracts/token/HypERC20Collateral.sol
[codex:1297625] contracts/contracts/client/GasRouter.sol
[codex:1297625] contracts/contracts/client/MailboxClient.sol
[codex:1297625] contracts/contracts/hooks/libs/StandardHookMetadata.sol
[codex:1297625] contracts/contracts/client/Router.sol
[codex:1297625] contracts/contracts/token/libs/FungibleTokenRouter.sol
[codex:1297625] contracts/contracts/token/libs/TokenMessage.sol
[codex:1297625] contracts/contracts/token/libs/TokenRouter.sol
[codex:1297625] 
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Analyzing potential reentrancy and initialization exploits**
[codex:1297625] 
[codex:1297625] I'm carefully examining token collateral and router contracts for vulnerabilities, focusing on reentrancy risks with wrapped tokens, and the risks around the public initialize function that might let an attacker seize ownership and manipulate interchain message verification to drain tokens. There's a complex interplay of ownership, message validation, and contract initialization that could create a serious exploit if the contract is uninitialized or deployed incorrectly.
[codex:1297625] thinking
[codex:1297625] **Clarifying proxy initialization and attack conditions**
[codex:1297625] 
[codex:1297625] I'm evaluating how the proxy pattern with immutable mailbox affects initialization risks, confirming that uninitialized proxies create a real race allowing ownership hijacking. While typical, this risk depends on deployment practices, but owning the contract could let an attacker manipulate security modules and send forged messages to withdraw collateral, so it’s a concrete path if the proxy isn't properly initialized.
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "sed -n '1,220p' contracts/contracts/interfaces/IMailbox.sol" in /tmp/codex-multi-npogdspu succeeded in 7ms:
[codex:1297625] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625] pragma solidity >=0.8.0;
[codex:1297625] 
[codex:1297625] import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
[codex:1297625] import {IPostDispatchHook} from "./hooks/IPostDispatchHook.sol";
[codex:1297625] 
[codex:1297625] interface IMailbox {
[codex:1297625]     // ============ Events ============
[codex:1297625]     /**
[codex:1297625]      * @notice Emitted when a new message is dispatched via Hyperlane
[codex:1297625]      * @param sender The address that dispatched the message
[codex:1297625]      * @param destination The destination domain of the message
[codex:1297625]      * @param recipient The message recipient address on `destination`
[codex:1297625]      * @param message Raw bytes of message
[codex:1297625]      */
[codex:1297625]     event Dispatch(
[codex:1297625]         address indexed sender,
[codex:1297625]         uint32 indexed destination,
[codex:1297625]         bytes32 indexed recipient,
[codex:1297625]         bytes message
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Analyzing ISM usage and mailbox security**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "sed -n '1,200p' contracts/contracts/interfaces/IInterchainSecurityModule.sol" in /tmp/codex-multi-npogdspu succeeded in 5ms:
[codex:1297625] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625] pragma solidity >=0.6.11;
[codex:1297625] 
[codex:1297625] interface IInterchainSecurityModule {
[codex:1297625]     enum Types {
[codex:1297625]         UNUSED,
[codex:1297625]         ROUTING,
[codex:1297625]         AGGREGATION,
[codex:1297625]         LEGACY_MULTISIG,
[codex:1297625]         MERKLE_ROOT_MULTISIG,
[codex:1297625]         MESSAGE_ID_MULTISIG,
[codex:1297625]         NULL, // used with relayer carrying no metadata
[codex:1297625]         CCIP_READ,
[codex:1297625]         ARB_L2_TO_L1,
[codex:1297625]         WEIGHTED_MERKLE_ROOT_MULTISIG,
[codex:1297625]         WEIGHTED_MESSAGE_ID_MULTISIG,
[codex:1297625]         OP_L2_TO_L1
[codex:1297625]     }
[codex:1297625] 
[codex:1297625]     /**
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Verifying initializer access control**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/token/HypERC20Collateral.sol | sed -n '1,220p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625]      1	// SPDX-License-Identifier: Apache-2.0
[codex:1297625]      2	pragma solidity >=0.8.0;
[codex:1297625]      3	
[codex:1297625]      4	/*@@@@@@@       @@@@@@@@@
[codex:1297625]      5	 @@@@@@@@@       @@@@@@@@@
[codex:1297625]      6	  @@@@@@@@@       @@@@@@@@@
[codex:1297625]      7	   @@@@@@@@@       @@@@@@@@@
[codex:1297625]      8	    @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1297625]      9	     @@@@@  HYPERLANE  @@@@@@@
[codex:1297625]     10	    @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1297625]     11	   @@@@@@@@@       @@@@@@@@@
[codex:1297625]     12	  @@@@@@@@@       @@@@@@@@@
[codex:1297625]     13	 @@@@@@@@@       @@@@@@@@@
[codex:1297625]     14	@@@@@@@@@       @@@@@@@@*/
[codex:1297625]     15	
[codex:1297625]     16	// ============ Internal Imports ============
[codex:1297625]     17	import {TokenRouter} from "./libs/TokenRouter.sol";
[codex:1297625]     18	import {FungibleTokenRouter} from "./libs/FungibleTokenRouter.sol";
[codex:1297625]     19	import {TokenMessage} from "./libs/TokenMessage.sol";
[codex:1297625]     20	import {MailboxClient} from "../client/MailboxClient.sol";
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Locating initialization and hook setup lines**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/client/MailboxClient.sol | sed -n '1,220p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625]      1	// SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625]      2	pragma solidity >=0.6.11;
[codex:1297625]      3	
[codex:1297625]      4	/*@@@@@@@       @@@@@@@@@
[codex:1297625]      5	 @@@@@@@@@       @@@@@@@@@
[codex:1297625]      6	  @@@@@@@@@       @@@@@@@@@
[codex:1297625]      7	   @@@@@@@@@       @@@@@@@@@
[codex:1297625]      8	    @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1297625]      9	     @@@@@  HYPERLANE  @@@@@@@
[codex:1297625]     10	    @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1297625]     11	   @@@@@@@@@       @@@@@@@@@
[codex:1297625]     12	  @@@@@@@@@       @@@@@@@@@
[codex:1297625]     13	 @@@@@@@@@       @@@@@@@@@
[codex:1297625]     14	@@@@@@@@@       @@@@@@@@*/
[codex:1297625]     15	
[codex:1297625]     16	// ============ Internal Imports ============
[codex:1297625]     17	import {IMailbox} from "../interfaces/IMailbox.sol";
[codex:1297625]     18	import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
[codex:1297625]     19	import {IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
[codex:1297625]     20	import {Message} from "../libs/Message.sol";
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Documenting IMailbox.process usage**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/interfaces/IMailbox.sol | sed -n '1,220p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625]      1	// SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625]      2	pragma solidity >=0.8.0;
[codex:1297625]      3	
[codex:1297625]      4	import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
[codex:1297625]      5	import {IPostDispatchHook} from "./hooks/IPostDispatchHook.sol";
[codex:1297625]      6	
[codex:1297625]      7	interface IMailbox {
[codex:1297625]      8	    // ============ Events ============
[codex:1297625]      9	    /**
[codex:1297625]     10	     * @notice Emitted when a new message is dispatched via Hyperlane
[codex:1297625]     11	     * @param sender The address that dispatched the message
[codex:1297625]     12	     * @param destination The destination domain of the message
[codex:1297625]     13	     * @param recipient The message recipient address on `destination`
[codex:1297625]     14	     * @param message Raw bytes of message
[codex:1297625]     15	     */
[codex:1297625]     16	    event Dispatch(
[codex:1297625]     17	        address indexed sender,
[codex:1297625]     18	        uint32 indexed destination,
[codex:1297625]     19	        bytes32 indexed recipient,
[codex:1297625]     20	        bytes message
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Considering line numbers in TokenRouter methods**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/token/libs/TokenRouter.sol | sed -n '1,260p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625]      1	// SPDX-License-Identifier: Apache-2.0
[codex:1297625]      2	pragma solidity >=0.8.0;
[codex:1297625]      3	
[codex:1297625]      4	import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";
[codex:1297625]      5	import {GasRouter} from "../../client/GasRouter.sol";
[codex:1297625]      6	import {MailboxClient} from "../../client/MailboxClient.sol";
[codex:1297625]      7	import {TypeCasts} from "../../libs/TypeCasts.sol";
[codex:1297625]      8	import {TokenMessage} from "./TokenMessage.sol";
[codex:1297625]      9	
[codex:1297625]     10	/**
[codex:1297625]     11	 * @title Hyperlane Token Router that extends Router with abstract token (ERC20/ERC721) remote transfer functionality.
[codex:1297625]     12	 * @author Abacus Works
[codex:1297625]     13	 */
[codex:1297625]     14	abstract contract TokenRouter is GasRouter {
[codex:1297625]     15	    using TypeCasts for bytes32;
[codex:1297625]     16	    using TypeCasts for address;
[codex:1297625]     17	    using TokenMessage for bytes;
[codex:1297625]     18	
[codex:1297625]     19	    /**
[codex:1297625]     20	     * @dev Emitted on `transferRemote` when a transfer message is dispatched.
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Analyzing unprotected initialize vulnerability**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/client/Router.sol | sed -n '60,180p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625]     60	
[codex:1297625]     61	    /**
[codex:1297625]     62	     * @notice Batch version of `enrollRemoteRouter`
[codex:1297625]     63	     * @param _domains The domains of the remote Application Routers
[codex:1297625]     64	     * @param _addresses The addresses of the remote Application Routers
[codex:1297625]     65	     */
[codex:1297625]     66	    function enrollRemoteRouters(
[codex:1297625]     67	        uint32[] calldata _domains,
[codex:1297625]     68	        bytes32[] calldata _addresses
[codex:1297625]     69	    ) external virtual onlyOwner {
[codex:1297625]     70	        require(_domains.length == _addresses.length, "!length");
[codex:1297625]     71	        uint256 length = _domains.length;
[codex:1297625]     72	        for (uint256 i = 0; i < length; i += 1) {
[codex:1297625]     73	            _enrollRemoteRouter(_domains[i], _addresses[i]);
[codex:1297625]     74	        }
[codex:1297625]     75	    }
[codex:1297625]     76	
[codex:1297625]     77	    /**
[codex:1297625]     78	     * @notice Batch version of `unenrollRemoteRouter`
[codex:1297625]     79	     * @param _domains The domains of the remote Application Routers
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Constructing detailed vulnerability report**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/client/Router.sol | sed -n '20,80p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625]     20	
[codex:1297625]     21	    uint256[48] private __GAP; // gap for upgrade safety
[codex:1297625]     22	
[codex:1297625]     23	    constructor(address _mailbox) MailboxClient(_mailbox) {}
[codex:1297625]     24	
[codex:1297625]     25	    // ============ External functions ============
[codex:1297625]     26	    function domains() external view returns (uint32[] memory) {
[codex:1297625]     27	        return _routers.uint32Keys();
[codex:1297625]     28	    }
[codex:1297625]     29	
[codex:1297625]     30	    /**
[codex:1297625]     31	     * @notice Returns the address of the Router contract for the given domain
[codex:1297625]     32	     * @param _domain The remote domain ID.
[codex:1297625]     33	     * @dev Returns 0 address if no router is enrolled for the given domain
[codex:1297625]     34	     * @return router The address of the Router contract for the given domain
[codex:1297625]     35	     */
[codex:1297625]     36	    function routers(uint32 _domain) public view virtual returns (bytes32) {
[codex:1297625]     37	        (, bytes32 _router) = _routers.tryGet(_domain);
[codex:1297625]     38	        return _router;
[codex:1297625]     39	    }
[codex:1297625] 
[codex:1297625] thinking
[codex:1297625] **Summarizing exploit and fix details**
[codex:1297625] 
[codex:1297625] I'm crafting a detailed JSON report describing a critical unprotected initializer vulnerability that lets attackers take ownership and drain all collateral by forging mailbox messages. The JSON will include severity, category, exploit steps, fix recommendations like adding `_disableInitializers()` in the constructor, and precise evidence with line numbers to support the findings.
[codex:1297625] codex
[codex:1297625] {"no_findings":false,"summary":"One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.","findings":[{"severity":"critical","category":"upgradeability","title":"Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral","exploit_scenario":"1) Before the legitimate deployer initializes, attacker calls `HypERC20Collateral.initialize` with `_owner=attacker` and `_interchainSecurityModule` set to a permissive ISM that always returns true. 2) As owner, attacker calls `Router.enrollRemoteRouter` to register an attacker-controlled router for some origin domain. 3) Attacker calls `mailbox.process` with arbitrary metadata and a crafted Hyperlane message whose origin/sender match the enrolled router and whose body encodes `TokenMessage(recipient=attacker, amount=wrappedTokenBalance)`. 4) Mailbox invokes `Router.handle` and `TokenRouter._handle`, which calls `_transferTo` in `HypERC20Collateral`, transferring the collateral to attacker.","recommendation":"Harden initialization: call `_disableInitializers()` in the constructor and ensure initialization is executed atomically at proxy deployment (e.g., via constructor data). If non-proxy deployments are intended, gate `initialize` so only the constructor-set owner can call it or remove it entirely.","evidence":"`initialize` is public and unguarded, and `_MailboxClient_initialize` sets owner and the ISM/hook, enabling an attacker to install a permissive ISM and then forge mailbox processing that triggers `_handle` to transfer collateral.","locations":["contracts/contracts/token/HypERC20Collateral.sol:49","contracts/contracts/client/MailboxClient.sol:100","contracts/contracts/client/MailboxClient.sol:92","contracts/contracts/client/Router.sol:54","contracts/contracts/interfaces/IMailbox.sol:101","contracts/contracts/token/libs/TokenRouter.sol:198","contracts/contracts/token/HypERC20Collateral.sol:78"]}]}
[codex:1297625] tokens used
[codex:1297625] 36,563
[codex:1297625] {"no_findings":false,"summary":"One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.","findings":[{"severity":"critical","category":"upgradeability","title":"Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral","exploit_scenario":"1) Before the legitimate deployer initializes, attacker calls `HypERC20Collateral.initialize` with `_owner=attacker` and `_interchainSecurityModule` set to a permissive ISM that always returns true. 2) As owner, attacker calls `Router.enrollRemoteRouter` to register an attacker-controlled router for some origin domain. 3) Attacker calls `mailbox.process` with arbitrary metadata and a crafted Hyperlane message whose origin/sender match the enrolled router and whose body encodes `TokenMessage(recipient=attacker, amount=wrappedTokenBalance)`. 4) Mailbox invokes `Router.handle` and `TokenRouter._handle`, which calls `_transferTo` in `HypERC20Collateral`, transferring the collateral to attacker.","recommendation":"Harden initialization: call `_disableInitializers()` in the constructor and ensure initialization is executed atomically at proxy deployment (e.g., via constructor data). If non-proxy deployments are intended, gate `initialize` so only the constructor-set owner can call it or remove it entirely.","evidence":"`initialize` is public and unguarded, and `_MailboxClient_initialize` sets owner and the ISM/hook, enabling an attacker to install a permissive ISM and then forge mailbox processing that triggers `_handle` to transfer collateral.","locations":["contracts/contracts/token/HypERC20Collateral.sol:49","contracts/contracts/client/MailboxClient.sol:100","contracts/contracts/client/MailboxClient.sol:92","contracts/contracts/client/Router.sol:54","contracts/contracts/interfaces/IMailbox.sol:101","contracts/contracts/token/libs/TokenRouter.sol:198","contracts/contracts/token/HypERC20Collateral.sol:78"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-31T18:15:02.286305+00:00",
        "returncode": 0
    },
    "summary": "One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.",
    "raw_final": {
        "summary": "One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.",
        "findings": [
            {
                "title": "Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral",
                "category": "upgradeability",
                "evidence": "`initialize` is public and unguarded, and `_MailboxClient_initialize` sets owner and the ISM/hook, enabling an attacker to install a permissive ISM and then forge mailbox processing that triggers `_handle` to transfer collateral.",
                "severity": "critical",
                "locations": [
                    "contracts/contracts/token/HypERC20Collateral.sol:49",
                    "contracts/contracts/client/MailboxClient.sol:100",
                    "contracts/contracts/client/MailboxClient.sol:92",
                    "contracts/contracts/client/Router.sol:54",
                    "contracts/contracts/interfaces/IMailbox.sol:101",
                    "contracts/contracts/token/libs/TokenRouter.sol:198",
                    "contracts/contracts/token/HypERC20Collateral.sol:78"
                ],
                "recommendation": "Harden initialization: call `_disableInitializers()` in the constructor and ensure initialization is executed atomically at proxy deployment (e.g., via constructor data). If non-proxy deployments are intended, gate `initialize` so only the constructor-set owner can call it or remove it entirely.",
                "exploit_scenario": "1) Before the legitimate deployer initializes, attacker calls `HypERC20Collateral.initialize` with `_owner=attacker` and `_interchainSecurityModule` set to a permissive ISM that always returns true. 2) As owner, attacker calls `Router.enrollRemoteRouter` to register an attacker-controlled router for some origin domain. 3) Attacker calls `mailbox.process` with arbitrary metadata and a crafted Hyperlane message whose origin/sender match the enrolled router and whose body encodes `TokenMessage(recipient=attacker, amount=wrappedTokenBalance)`. 4) Mailbox invokes `Router.handle` and `TokenRouter._handle`, which calls `_transferTo` in `HypERC20Collateral`, transferring the collateral to attacker."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
4
EXT*/BALANCE
4
Total opcodes
5187
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 0x01ac
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x8d3638f4
00000019: GT
0000001a: PUSH2 0x00ec
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xd5438eae
00000024: GT
00000025: PUSH2 0x008a
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xefae508a
0000002f: GT
00000030: PUSH2 0x0064
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xefae508a
0000003a: EQ
0000003b: PUSH2 0x0554
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xf2ed8c53
00000045: EQ
00000046: PUSH2 0x0574
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf2fde38b
00000050: EQ
00000051: PUSH2 0x0594
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf51e181a
0000005b: EQ
0000005c: PUSH2 0x05b4
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xd5438eae
0000006b: EQ
0000006c: PUSH2 0x04d3
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xde523cf3
00000076: EQ
00000077: PUSH2 0x0507
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xe9198bf9
00000081: EQ
00000082: PUSH2 0x0534
00000085: JUMPI
00000086: PUSH1 0x00
00000088: DUP1
00000089: REVERT
0000008a: JUMPDEST
0000008b: DUP1
0000008c: PUSH4 0x996c6cc3
00000091: GT
00000092: PUSH2 0x00c6
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0x996c6cc3
0000009c: EQ
0000009d: PUSH2 0x043f
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0xb1bd6436
000000a7: EQ
000000a8: PUSH2 0x0473
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0xb49c53a7
000000b2: EQ
000000b3: PUSH2 0x0493
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0xc0c53b8b
000000bd: EQ
000000be: PUSH2 0x04b3
000000c1: JUMPI
000000c2: PUSH1 0x00
000000c4: DUP1
000000c5: REVERT
000000c6: JUMPDEST
000000c7: DUP1
000000c8: PUSH4 0x8d3638f4
000000cd: EQ
000000ce: PUSH2 0x0375
000000d1: JUMPI
000000d2: DUP1
000000d3: PUSH4 0x8da5cb5b
000000d8: EQ
000000d9: PUSH2 0x03be
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x93c44847
000000e3: EQ
000000e4: PUSH2 0x03e9
000000e7: JUMPI
000000e8: PUSH1 0x00
000000ea: DUP1
000000eb: REVERT
000000ec: JUMPDEST
000000ed: DUP1
000000ee: PUSH4 0x56d5d475
000000f3: GT
000000f4: PUSH2 0x0159
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0x71a15b38
000000fe: GT
000000ff: PUSH2 0x0133
00000102: JUMPI
00000103: DUP1
00000104: PUSH4 0x71a15b38
00000109: EQ
0000010a: PUSH2 0x02c3
0000010d: JUMPI
0000010e: DUP1
0000010f: PUSH4 0x775313a1
00000114: EQ
00000115: PUSH2 0x02e3
00000118: JUMPI
00000119: DUP1
0000011a: PUSH4 0x7f5a7c7b
0000011f: EQ
00000120: PUSH2 0x0310
00000123: JUMPI
00000124: DUP1
00000125: PUSH4 0x81b4e8b4
0000012a: EQ
0000012b: PUSH2 0x0362
0000012e: JUMPI
0000012f: PUSH1 0x00
00000131: DUP1
00000132: REVERT
00000133: JUMPDEST
00000134: DUP1
00000135: PUSH4 0x56d5d475
0000013a: EQ
0000013b: PUSH2 0x027b
0000013e: JUMPI
0000013f: DUP1
00000140: PUSH4 0x70a08231
00000145: EQ
00000146: PUSH2 0x028e
00000149: JUMPI
0000014a: DUP1
0000014b: PUSH4 0x715018a6
00000150: EQ
00000151: PUSH2 0x02ae
00000154: JUMPI
00000155: PUSH1 0x00
00000157: DUP1
00000158: REVERT
00000159: JUMPDEST
0000015a: DUP1
0000015b: PUSH4 0x440df4f4
00000160: GT
00000161: PUSH2 0x018a
00000164: JUMPI
00000165: DUP1
00000166: PUSH4 0x440df4f4
0000016b: EQ
0000016c: PUSH2 0x0226
0000016f: JUMPI
00000170: DUP1
00000171: PUSH4 0x49d462ef
00000176: EQ
00000177: PUSH2 0x0248
0000017a: JUMPI
0000017b: DUP1
0000017c: PUSH4 0x51debffc
00000181: EQ
00000182: PUSH2 0x0268
00000185: JUMPI
00000186: PUSH1 0x00
00000188: DUP1
00000189: REVERT
0000018a: JUMPDEST
0000018b: DUP1
0000018c: PUSH4 0x0e72cc06
00000191: EQ
00000192: PUSH2 0x01b1
00000195: JUMPI
00000196: DUP1
00000197: PUSH4 0x2ead72f6
0000019c: EQ
0000019d: PUSH2 0x01d3
000001a0: JUMPI
000001a1: DUP1
000001a2: PUSH4 0x3dfd3873
000001a7: EQ
000001a8: PUSH2 0x0206
000001ab: JUMPI
000001ac: JUMPDEST
000001ad: PUSH1 0x00
000001af: DUP1
000001b0: REVERT
000001b1: JUMPDEST
000001b2: CALLVALUE
000001b3: DUP1
000001b4: ISZERO
000001b5: PUSH2 0x01bd
000001b8: JUMPI
000001b9: PUSH1 0x00
000001bb: DUP1
000001bc: REVERT
000001bd: JUMPDEST
000001be: POP
000001bf: PUSH2 0x01d1
000001c2: PUSH2 0x01cc
000001c5: CALLDATASIZE
000001c6: PUSH1 0x04
000001c8: PUSH2 0x2346
000001cb: JUMP
000001cc: JUMPDEST
000001cd: PUSH2 0x05e8
000001d0: JUMP
000001d1: JUMPDEST
000001d2: STOP
000001d3: JUMPDEST
000001d4: CALLVALUE
000001d5: DUP1
000001d6: ISZERO
000001d7: PUSH2 0x01df
000001da: JUMPI
000001db: PUSH1 0x00
000001dd: DUP1
000001de: REVERT
000001df: JUMPDEST
000001e0: POP
000001e1: PUSH2 0x01f3
000001e4: PUSH2 0x01ee
000001e7: CALLDATASIZE
000001e8: PUSH1 0x04
000001ea: PUSH2 0x2375
000001ed: JUMP
000001ee: JUMPDEST
000001ef: PUSH2 0x0736
000001f2: JUMP
000001f3: JUMPDEST
000001f4: PUSH1 0x40
000001f6: MLOAD
000001f7: SWAP1
000001f8: DUP2
000001f9: MSTORE
000001fa: PUSH1 0x20
000001fc: ADD
000001fd: JUMPDEST
000001fe: PUSH1 0x40
00000200: MLOAD
00000201: DUP1
00000202: SWAP2
00000203: SUB
00000204: SWAP1
00000205: RETURN
00000206: JUMPDEST
00000207: CALLVALUE
00000208: DUP1
00000209: ISZERO
0000020a: PUSH2 0x0212
0000020d: JUMPI
0000020e: PUSH1 0x00
00000210: DUP1
00000211: REVERT
00000212: JUMPDEST
00000213: POP
00000214: PUSH2 0x01d1
00000217: PUSH2 0x0221
0000021a: CALLDATASIZE
0000021b: PUSH1 0x04
0000021d: PUSH2 0x2346
00000220: JUMP
00000221: JUMPDEST
00000222: PUSH2 0x0755
00000225: JUMP
00000226: JUMPDEST
00000227: CALLVALUE
00000228: DUP1
00000229: ISZERO
0000022a: PUSH2 0x0232
0000022d: JUMPI
0000022e: PUSH1 0x00
00000230: DUP1
00000231: REVERT
00000232: JUMPDEST
00000233: POP
00000234: PUSH2 0x023b
00000237: PUSH2 0x0896
0000023a: JUMP
0000023b: JUMPDEST
0000023c: PUSH1 0x40
0000023e: MLOAD
0000023f: PUSH2 0x01fd
00000242: SWAP2
00000243: SWAP1
00000244: PUSH2 0x2390
00000247: JUMP
00000248: JUMPDEST
00000249: CALLVALUE
0000024a: DUP1
0000024b: ISZERO
0000024c: PUSH2 0x0254
0000024f: JUMPI
00000250: PUSH1 0x00
00000252: DUP1
00000253: REVERT
00000254: JUMPDEST
00000255: POP
00000256: PUSH2 0x01d1
00000259: PUSH2 0x0263
0000025c: CALLDATASIZE
0000025d: PUSH1 0x04
0000025f: PUSH2 0x23da
00000262: JUMP
00000263: JUMPDEST
00000264: PUSH2 0x08a7
00000267: JUMP
00000268: JUMPDEST
00000269: PUSH2 0x01f3
0000026c: PUSH2 0x0276
0000026f: CALLDATASIZE
00000270: PUSH1 0x04
00000272: PUSH2 0x2446
00000275: JUMP
00000276: JUMPDEST
00000277: PUSH2 0x08bd
0000027a: JUMP
0000027b: JUMPDEST
0000027c: PUSH2 0x01d1
0000027f: PUSH2 0x0289
00000282: CALLDATASIZE
00000283: PUSH1 0x04
00000285: PUSH2 0x24bd
00000288: JUMP
00000289: JUMPDEST
0000028a: PUSH2 0x090f
0000028d: JUMP
0000028e: JUMPDEST
0000028f: CALLVALUE
00000290: DUP1
00000291: ISZERO
00000292: PUSH2 0x029a
00000295: JUMPI
00000296: PUSH1 0x00
00000298: DUP1
00000299: REVERT
0000029a: JUMPDEST
0000029b: POP
0000029c: PUSH2 0x01f3
0000029f: PUSH2 0x02a9
000002a2: CALLDATASIZE
000002a3: PUSH1 0x04
000002a5: PUSH2 0x2346
000002a8: JUMP
000002a9: JUMPDEST
000002aa: PUSH2 0x0a83
000002ad: JUMP
000002ae: JUMPDEST
000002af: CALLVALUE
000002b0: DUP1
000002b1: ISZERO
000002b2: PUSH2 0x02ba
000002b5: JUMPI
000002b6: PUSH1 0x00
000002b8: DUP1
000002b9: REVERT
000002ba: JUMPDEST
000002bb: POP
000002bc: PUSH2 0x01d1
000002bf: PUSH2 0x0b3e
000002c2: JUMP
000002c3: JUMPDEST
000002c4: CALLVALUE
000002c5: DUP1
000002c6: ISZERO
000002c7: PUSH2 0x02cf
000002ca: JUMPI
000002cb: PUSH1 0x00
000002cd: DUP1
000002ce: REVERT
000002cf: JUMPDEST
000002d0: POP
000002d1: PUSH2 0x01d1
000002d4: PUSH2 0x02de
000002d7: CALLDATASIZE
000002d8: PUSH1 0x04
000002da: PUSH2 0x255c
000002dd: JUMP
000002de: JUMPDEST
000002df: PUSH2 0x0b52
000002e2: JUMP
000002e3: JUMPDEST
000002e4: CALLVALUE
000002e5: DUP1
000002e6: ISZERO
000002e7: PUSH2 0x02ef
000002ea: JUMPI
000002eb: PUSH1 0x00
000002ed: DUP1
000002ee: REVERT
000002ef: JUMPDEST
000002f0: POP
000002f1: PUSH2 0x01f3
000002f4: PUSH2 0x02fe
000002f7: CALLDATASIZE
000002f8: PUSH1 0x04
000002fa: PUSH2 0x2375
000002fd: JUMP
000002fe: JUMPDEST
000002ff: PUSH1 0xca
00000301: PUSH1 0x20
00000303: MSTORE
00000304: PUSH1 0x00
00000306: SWAP1
00000307: DUP2
00000308: MSTORE
00000309: PUSH1 0x40
0000030b: SWAP1
0000030c: KECCAK256
0000030d: SLOAD
0000030e: DUP2
0000030f: JUMP
00000310: JUMPDEST
00000311: CALLVALUE
00000312: DUP1
00000313: ISZERO
00000314: PUSH2 0x031c
00000317: JUMPI
00000318: PUSH1 0x00
0000031a: DUP1
0000031b: REVERT
0000031c: JUMPDEST
0000031d: POP
0000031e: PUSH1 0x65
00000320: SLOAD
00000321: PUSH2 0x033d
00000324: SWAP1
00000325: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000033a: AND
0000033b: DUP2
0000033c: JUMP
0000033d: JUMPDEST
0000033e: PUSH1 0x40
00000340: MLOAD
00000341: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000356: SWAP1
00000357: SWAP2
00000358: AND
00000359: DUP2
0000035a: MSTORE
0000035b: PUSH1 0x20
0000035d: ADD
0000035e: PUSH2 0x01fd
00000361: JUMP
00000362: JUMPDEST
00000363: PUSH2 0x01f3
00000366: PUSH2 0x0370
00000369: CALLDATASIZE
0000036a: PUSH1 0x04
0000036c: PUSH2 0x259e
0000036f: JUMP
00000370: JUMPDEST
00000371: PUSH2 0x0bad
00000374: JUMP
00000375: JUMPDEST
00000376: CALLVALUE
00000377: DUP1
00000378: ISZERO
00000379: PUSH2 0x0381
0000037c: JUMPI
0000037d: PUSH1 0x00
0000037f: DUP1
00000380: REVERT
00000381: JUMPDEST
00000382: POP
00000383: PUSH2 0x03a9
00000386: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
000003a7: DUP2
000003a8: JUMP
000003a9: JUMPDEST
000003aa: PUSH1 0x40
000003ac: MLOAD
000003ad: PUSH4 0xffffffff
000003b2: SWAP1
000003b3: SWAP2
000003b4: AND
000003b5: DUP2
000003b6: MSTORE
000003b7: PUSH1 0x20
000003b9: ADD
000003ba: PUSH2 0x01fd
000003bd: JUMP
000003be: JUMPDEST
000003bf: CALLVALUE
000003c0: DUP1
000003c1: ISZERO
000003c2: PUSH2 0x03ca
000003c5: JUMPI
000003c6: PUSH1 0x00
000003c8: DUP1
000003c9: REVERT
000003ca: JUMPDEST
000003cb: POP
000003cc: PUSH1 0x33
000003ce: SLOAD
000003cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003e4: AND
000003e5: PUSH2 0x033d
000003e8: JUMP
000003e9: JUMPDEST
000003ea: CALLVALUE
000003eb: DUP1
000003ec: ISZERO
000003ed: PUSH2 0x03f5
000003f0: JUMPI
000003f1: PUSH1 0x00
000003f3: DUP1
000003f4: REVERT
000003f5: JUMPDEST
000003f6: POP
000003f7: PUSH2 0x0432
000003fa: PUSH1 0x40
000003fc: MLOAD
000003fd: DUP1
000003fe: PUSH1 0x40
00000400: ADD
00000401: PUSH1 0x40
00000403: MSTORE
00000404: DUP1
00000405: PUSH1 0x05
00000407: DUP2
00000408: MSTORE
00000409: PUSH1 0x20
0000040b: ADD
0000040c: PUSH32 0x372e302e30000000000000000000000000000000000000000000000000000000
0000042d: DUP2
0000042e: MSTORE
0000042f: POP
00000430: DUP2
00000431: JUMP
00000432: JUMPDEST
00000433: PUSH1 0x40
00000435: MLOAD
00000436: PUSH2 0x01fd
00000439: SWAP2
0000043a: SWAP1
0000043b: PUSH2 0x263f
0000043e: JUMP
0000043f: JUMPDEST
00000440: CALLVALUE
00000441: DUP1
00000442: ISZERO
00000443: PUSH2 0x044b
00000446: JUMPI
00000447: PUSH1 0x00
00000449: DUP1
0000044a: REVERT
0000044b: JUMPDEST
0000044c: POP
0000044d: PUSH2 0x033d
00000450: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00000471: DUP2
00000472: JUMP
00000473: JUMPDEST
00000474: CALLVALUE
00000475: DUP1
00000476: ISZERO
00000477: PUSH2 0x047f
0000047a: JUMPI
0000047b: PUSH1 0x00
0000047d: DUP1
0000047e: REVERT
0000047f: JUMPDEST
00000480: POP
00000481: PUSH2 0x01d1
00000484: PUSH2 0x048e
00000487: CALLDATASIZE
00000488: PUSH1 0x04
0000048a: PUSH2 0x2652
0000048d: JUMP
0000048e: JUMPDEST
0000048f: PUSH2 0x0bbb
00000492: JUMP
00000493: JUMPDEST
00000494: CALLVALUE
00000495: DUP1
00000496: ISZERO
00000497: PUSH2 0x049f
0000049a: JUMPI
0000049b: PUSH1 0x00
0000049d: DUP1
0000049e: REVERT
0000049f: JUMPDEST
000004a0: POP
000004a1: PUSH2 0x01d1
000004a4: PUSH2 0x04ae
000004a7: CALLDATASIZE
000004a8: PUSH1 0x04
000004aa: PUSH2 0x23da
000004ad: JUMP
000004ae: JUMPDEST
000004af: PUSH2 0x0c31
000004b2: JUMP
000004b3: JUMPDEST
000004b4: CALLVALUE
000004b5: DUP1
000004b6: ISZERO
000004b7: PUSH2 0x04bf
000004ba: JUMPI
000004bb: PUSH1 0x00
000004bd: DUP1
000004be: REVERT
000004bf: JUMPDEST
000004c0: POP
000004c1: PUSH2 0x01d1
000004c4: PUSH2 0x04ce
000004c7: CALLDATASIZE
000004c8: PUSH1 0x04
000004ca: PUSH2 0x26c7
000004cd: JUMP
000004ce: JUMPDEST
000004cf: PUSH2 0x0c43
000004d2: JUMP
000004d3: JUMPDEST
000004d4: CALLVALUE
000004d5: DUP1
000004d6: ISZERO
000004d7: PUSH2 0x04df
000004da: JUMPI
000004db: PUSH1 0x00
000004dd: DUP1
000004de: REVERT
000004df: JUMPDEST
000004e0: POP
000004e1: PUSH2 0x033d
000004e4: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239
00000505: DUP2
00000506: JUMP
00000507: JUMPDEST
00000508: CALLVALUE
00000509: DUP1
0000050a: ISZERO
0000050b: PUSH2 0x0513
0000050e: JUMPI
0000050f: PUSH1 0x00
00000511: DUP1
00000512: REVERT
00000513: JUMPDEST
00000514: POP
00000515: PUSH1 0x66
00000517: SLOAD
00000518: PUSH2 0x033d
0000051b: SWAP1
0000051c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000531: AND
00000532: DUP2
00000533: JUMP
00000534: JUMPDEST
00000535: CALLVALUE
00000536: DUP1
00000537: ISZERO
00000538: PUSH2 0x0540
0000053b: JUMPI
0000053c: PUSH1 0x00
0000053e: DUP1
0000053f: REVERT
00000540: JUMPDEST
00000541: POP
00000542: PUSH2 0x01d1
00000545: PUSH2 0x054f
00000548: CALLDATASIZE
00000549: PUSH1 0x04
0000054b: PUSH2 0x270a
0000054e: JUMP
0000054f: JUMPDEST
00000550: PUSH2 0x0dda
00000553: JUMP
00000554: JUMPDEST
00000555: CALLVALUE
00000556: DUP1
00000557: ISZERO
00000558: PUSH2 0x0560
0000055b: JUMPI
0000055c: PUSH1 0x00
0000055e: DUP1
0000055f: REVERT
00000560: JUMPDEST
00000561: POP
00000562: PUSH2 0x01d1
00000565: PUSH2 0x056f
00000568: CALLDATASIZE
00000569: PUSH1 0x04
0000056b: PUSH2 0x2375
0000056e: JUMP
0000056f: JUMPDEST
00000570: PUSH2 0x0eb9
00000573: JUMP
00000574: JUMPDEST
00000575: CALLVALUE
00000576: DUP1
00000577: ISZERO
00000578: PUSH2 0x0580
0000057b: JUMPI
0000057c: PUSH1 0x00
0000057e: DUP1
0000057f: REVERT
00000580: JUMPDEST
00000581: POP
00000582: PUSH2 0x01f3
00000585: PUSH2 0x058f
00000588: CALLDATASIZE
00000589: PUSH1 0x04
0000058b: PUSH2 0x2375
0000058e: JUMP
0000058f: JUMPDEST
00000590: PUSH2 0x0ecd
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 0x01d1
000005a5: PUSH2 0x05af
000005a8: CALLDATASIZE
000005a9: PUSH1 0x04
000005ab: PUSH2 0x2346
000005ae: JUMP
000005af: JUMPDEST
000005b0: PUSH2 0x0f2e
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 0x01f3
000005c5: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
000005e6: DUP2
000005e7: JUMP
000005e8: JUMPDEST
000005e9: DUP1
000005ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005ff: DUP2
00000600: AND
00000601: EXTCODESIZE
00000602: ISZERO
00000603: ISZERO
00000604: DUP1
00000605: PUSH2 0x0622
00000608: JUMPI
00000609: POP
0000060a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000061f: DUP2
00000620: AND
00000621: ISZERO
00000622: JUMPDEST
00000623: PUSH2 0x06b3
00000626: JUMPI
00000627: PUSH1 0x40
00000629: MLOAD
0000062a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000064b: DUP2
0000064c: MSTORE
0000064d: PUSH1 0x20
0000064f: PUSH1 0x04
00000651: DUP3
00000652: ADD
00000653: MSTORE
00000654: PUSH1 0x27
00000656: PUSH1 0x24
00000658: DUP3
00000659: ADD
0000065a: MSTORE
0000065b: PUSH32 0x4d61696c626f78436c69656e743a20696e76616c696420636f6e747261637420
0000067c: PUSH1 0x44
0000067e: DUP3
0000067f: ADD
00000680: MSTORE
00000681: PUSH32 0x73657474696e6700000000000000000000000000000000000000000000000000
000006a2: PUSH1 0x64
000006a4: DUP3
000006a5: ADD
000006a6: MSTORE
000006a7: PUSH1 0x84
000006a9: ADD
000006aa: JUMPDEST
000006ab: PUSH1 0x40
000006ad: MLOAD
000006ae: DUP1
000006af: SWAP2
000006b0: SUB
000006b1: SWAP1
000006b2: REVERT
000006b3: JUMPDEST
000006b4: PUSH2 0x06bb
000006b7: PUSH2 0x0fe2
000006ba: JUMP
000006bb: JUMPDEST
000006bc: PUSH1 0x66
000006be: DUP1
000006bf: SLOAD
000006c0: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
000006e1: AND
000006e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006f7: DUP5
000006f8: AND
000006f9: SWAP1
000006fa: DUP2
000006fb: OR
000006fc: SWAP1
000006fd: SWAP2
000006fe: SSTORE
000006ff: PUSH1 0x40
00000701: MLOAD
00000702: SWAP1
00000703: DUP2
00000704: MSTORE
00000705: PUSH32 0xc47cbcc588c67679e52261c45cc315e56562f8d0ccaba16facb9093ff9498799
00000726: SWAP1
00000727: PUSH1 0x20
00000729: ADD
0000072a: JUMPDEST
0000072b: PUSH1 0x40
0000072d: MLOAD
0000072e: DUP1
0000072f: SWAP2
00000730: SUB
00000731: SWAP1
00000732: LOG1
00000733: POP
00000734: POP
00000735: JUMP
00000736: JUMPDEST
00000737: PUSH1 0x00
00000739: DUP1
0000073a: PUSH2 0x074d
0000073d: PUSH1 0x97
0000073f: PUSH4 0xffffffff
00000744: DUP1
00000745: DUP7
00000746: AND
00000747: SWAP1
00000748: PUSH2 0x1063
0000074b: AND
0000074c: JUMP
0000074d: JUMPDEST
0000074e: SWAP5
0000074f: SWAP4
00000750: POP
00000751: POP
00000752: POP
00000753: POP
00000754: JUMP
00000755: JUMPDEST
00000756: DUP1
00000757: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000076c: DUP2
0000076d: AND
0000076e: EXTCODESIZE
0000076f: ISZERO
00000770: ISZERO
00000771: DUP1
00000772: PUSH2 0x078f
00000775: JUMPI
00000776: POP
00000777: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000078c: DUP2
0000078d: AND
0000078e: ISZERO
0000078f: JUMPDEST
00000790: PUSH2 0x081b
00000793: JUMPI
00000794: PUSH1 0x40
00000796: MLOAD
00000797: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000007b8: DUP2
000007b9: MSTORE
000007ba: PUSH1 0x20
000007bc: PUSH1 0x04
000007be: DUP3
000007bf: ADD
000007c0: MSTORE
000007c1: PUSH1 0x27
000007c3: PUSH1 0x24
000007c5: DUP3
000007c6: ADD
000007c7: MSTORE
000007c8: PUSH32 0x4d61696c626f78436c69656e743a20696e76616c696420636f6e747261637420
000007e9: PUSH1 0x44
000007eb: DUP3
000007ec: ADD
000007ed: MSTORE
000007ee: PUSH32 0x73657474696e6700000000000000000000000000000000000000000000000000
0000080f: PUSH1 0x64
00000811: DUP3
00000812: ADD
00000813: MSTORE
00000814: PUSH1 0x84
00000816: ADD
00000817: PUSH2 0x06aa
0000081a: JUMP
0000081b: JUMPDEST
0000081c: PUSH2 0x0823
0000081f: PUSH2 0x0fe2
00000822: JUMP
00000823: JUMPDEST
00000824: PUSH1 0x65
00000826: DUP1
00000827: SLOAD
00000828: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000849: AND
0000084a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000085f: DUP5
00000860: AND
00000861: SWAP1
00000862: DUP2
00000863: OR
00000864: SWAP1
00000865: SWAP2
00000866: SSTORE
00000867: PUSH1 0x40
00000869: MLOAD
0000086a: SWAP1
0000086b: DUP2
0000086c: MSTORE
0000086d: PUSH32 0x4eab7b127c764308788622363ad3e9532de3dfba7845bd4f84c125a22544255a
0000088e: SWAP1
0000088f: PUSH1 0x20
00000891: ADD
00000892: PUSH2 0x072a
00000895: JUMP
00000896: JUMPDEST
00000897: PUSH1 0x60
00000899: PUSH2 0x08a2
0000089c: PUSH1 0x97
0000089e: PUSH2 0x107c
000008a1: JUMP
000008a2: JUMPDEST
000008a3: SWAP1
000008a4: POP
000008a5: SWAP1
000008a6: JUMP
000008a7: JUMPDEST
000008a8: PUSH2 0x08af
000008ab: PUSH2 0x0fe2
000008ae: JUMP
000008af: JUMPDEST
000008b0: PUSH2 0x08b9
000008b3: DUP3
000008b4: DUP3
000008b5: PUSH2 0x112d
000008b8: JUMP
000008b9: JUMPDEST
000008ba: POP
000008bb: POP
000008bc: JUMP
000008bd: JUMPDEST
000008be: PUSH1 0x00
000008c0: PUSH2 0x0904
000008c3: DUP8
000008c4: DUP8
000008c5: DUP8
000008c6: CALLVALUE
000008c7: DUP9
000008c8: DUP9
000008c9: DUP1
000008ca: DUP1
000008cb: PUSH1 0x1f
000008cd: ADD
000008ce: PUSH1 0x20
000008d0: DUP1
000008d1: SWAP2
000008d2: DIV
000008d3: MUL
000008d4: PUSH1 0x20
000008d6: ADD
000008d7: PUSH1 0x40
000008d9: MLOAD
000008da: SWAP1
000008db: DUP2
000008dc: ADD
000008dd: PUSH1 0x40
000008df: MSTORE
000008e0: DUP1
000008e1: SWAP4
000008e2: SWAP3
000008e3: SWAP2
000008e4: SWAP1
000008e5: DUP2
000008e6: DUP2
000008e7: MSTORE
000008e8: PUSH1 0x20
000008ea: ADD
000008eb: DUP4
000008ec: DUP4
000008ed: DUP1
000008ee: DUP3
000008ef: DUP5
000008f0: CALLDATACOPY
000008f1: PUSH1 0x00
000008f3: SWAP3
000008f4: ADD
000008f5: SWAP2
000008f6: SWAP1
000008f7: SWAP2
000008f8: MSTORE
000008f9: POP
000008fa: DUP11
000008fb: SWAP3
000008fc: POP
000008fd: PUSH2 0x117b
00000900: SWAP2
00000901: POP
00000902: POP
00000903: JUMP
00000904: JUMPDEST
00000905: SWAP8
00000906: SWAP7
00000907: POP
00000908: POP
00000909: POP
0000090a: POP
0000090b: POP
0000090c: POP
0000090d: POP
0000090e: JUMP
0000090f: JUMPDEST
00000910: CALLER
00000911: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000926: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239
00000947: AND
00000948: EQ
00000949: PUSH2 0x09d4
0000094c: JUMPI
0000094d: PUSH1 0x40
0000094f: MLOAD
00000950: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000971: DUP2
00000972: MSTORE
00000973: PUSH1 0x20
00000975: PUSH1 0x04
00000977: DUP3
00000978: ADD
00000979: MSTORE
0000097a: PUSH1 0x21
0000097c: PUSH1 0x24
0000097e: DUP3
0000097f: ADD
00000980: MSTORE
00000981: PUSH32 0x4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f
000009a2: PUSH1 0x44
000009a4: DUP3
000009a5: ADD
000009a6: MSTORE
000009a7: PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000
000009c8: PUSH1 0x64
000009ca: DUP3
000009cb: ADD
000009cc: MSTORE
000009cd: PUSH1 0x84
000009cf: ADD
000009d0: PUSH2 0x06aa
000009d3: JUMP
000009d4: JUMPDEST
000009d5: PUSH1 0x00
000009d7: PUSH2 0x09df
000009da: DUP6
000009db: PUSH2 0x1202
000009de: JUMP
000009df: JUMPDEST
000009e0: SWAP1
000009e1: POP
000009e2: DUP4
000009e3: DUP2
000009e4: EQ
000009e5: PUSH2 0x0a70
000009e8: JUMPI
000009e9: PUSH1 0x40
000009eb: MLOAD
000009ec: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000a0d: DUP2
00000a0e: MSTORE
00000a0f: PUSH1 0x20
00000a11: PUSH1 0x04
00000a13: DUP3
00000a14: ADD
00000a15: MSTORE
00000a16: PUSH1 0x25
00000a18: PUSH1 0x24
00000a1a: DUP3
00000a1b: ADD
00000a1c: MSTORE
00000a1d: PUSH32 0x456e726f6c6c656420726f7574657220646f6573206e6f74206d617463682073
00000a3e: PUSH1 0x44
00000a40: DUP3
00000a41: ADD
00000a42: MSTORE
00000a43: PUSH32 0x656e646572000000000000000000000000000000000000000000000000000000
00000a64: PUSH1 0x64
00000a66: DUP3
00000a67: ADD
00000a68: MSTORE
00000a69: PUSH1 0x84
00000a6b: ADD
00000a6c: PUSH2 0x06aa
00000a6f: JUMP
00000a70: JUMPDEST
00000a71: PUSH2 0x0a7c
00000a74: DUP6
00000a75: DUP6
00000a76: DUP6
00000a77: DUP6
00000a78: PUSH2 0x1267
00000a7b: JUMP
00000a7c: JUMPDEST
00000a7d: POP
00000a7e: POP
00000a7f: POP
00000a80: POP
00000a81: POP
00000a82: JUMP
00000a83: JUMPDEST
00000a84: PUSH1 0x40
00000a86: MLOAD
00000a87: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00000aa8: DUP2
00000aa9: MSTORE
00000aaa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000abf: DUP3
00000ac0: DUP2
00000ac1: AND
00000ac2: PUSH1 0x04
00000ac4: DUP4
00000ac5: ADD
00000ac6: MSTORE
00000ac7: PUSH1 0x00
00000ac9: SWAP2
00000aca: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00000aeb: SWAP1
00000aec: SWAP2
00000aed: AND
00000aee: SWAP1
00000aef: PUSH4 0x70a08231
00000af4: SWAP1
00000af5: PUSH1 0x24
00000af7: ADD
00000af8: PUSH1 0x20
00000afa: PUSH1 0x40
00000afc: MLOAD
00000afd: DUP1
00000afe: DUP4
00000aff: SUB
00000b00: DUP2
00000b01: DUP7
00000b02: GAS
00000b03: STATICCALL
00000b04: ISZERO
00000b05: DUP1
00000b06: ISZERO
00000b07: PUSH2 0x0b14
00000b0a: JUMPI
00000b0b: RETURNDATASIZE
00000b0c: PUSH1 0x00
00000b0e: DUP1
00000b0f: RETURNDATACOPY
00000b10: RETURNDATASIZE
00000b11: PUSH1 0x00
00000b13: REVERT
00000b14: JUMPDEST
00000b15: POP
00000b16: POP
00000b17: POP
00000b18: POP
00000b19: PUSH1 0x40
00000b1b: MLOAD
00000b1c: RETURNDATASIZE
00000b1d: PUSH1 0x1f
00000b1f: NOT
00000b20: PUSH1 0x1f
00000b22: DUP3
00000b23: ADD
00000b24: AND
00000b25: DUP3
00000b26: ADD
00000b27: DUP1
00000b28: PUSH1 0x40
00000b2a: MSTORE
00000b2b: POP
00000b2c: DUP2
00000b2d: ADD
00000b2e: SWAP1
00000b2f: PUSH2 0x0b38
00000b32: SWAP2
00000b33: SWAP1
00000b34: PUSH2 0x276a
00000b37: JUMP
00000b38: JUMPDEST
00000b39: SWAP3
00000b3a: SWAP2
00000b3b: POP
00000b3c: POP
00000b3d: JUMP
00000b3e: JUMPDEST
00000b3f: PUSH2 0x0b46
00000b42: PUSH2 0x0fe2
00000b45: JUMP
00000b46: JUMPDEST
00000b47: PUSH2 0x0b50
00000b4a: PUSH1 0x00
00000b4c: PUSH2 0x12fb
00000b4f: JUMP
00000b50: JUMPDEST
00000b51: JUMP
00000b52: JUMPDEST
00000b53: PUSH2 0x0b5a
00000b56: PUSH2 0x0fe2
00000b59: JUMP
00000b5a: JUMPDEST
00000b5b: DUP1
00000b5c: PUSH1 0x00
00000b5e: JUMPDEST
00000b5f: DUP2
00000b60: DUP2
00000b61: LT
00000b62: ISZERO
00000b63: PUSH2 0x0ba7
00000b66: JUMPI
00000b67: PUSH2 0x0b95
00000b6a: DUP5
00000b6b: DUP5
00000b6c: DUP4
00000b6d: DUP2
00000b6e: DUP2
00000b6f: LT
00000b70: PUSH2 0x0b7b
00000b73: JUMPI
00000b74: PUSH2 0x0b7b
00000b77: PUSH2 0x2783
00000b7a: JUMP
00000b7b: JUMPDEST
00000b7c: SWAP1
00000b7d: POP
00000b7e: PUSH1 0x20
00000b80: MUL
00000b81: ADD
00000b82: PUSH1 0x20
00000b84: DUP2
00000b85: ADD
00000b86: SWAP1
00000b87: PUSH2 0x0b90
00000b8a: SWAP2
00000b8b: SWAP1
00000b8c: PUSH2 0x2375
00000b8f: JUMP
00000b90: JUMPDEST
00000b91: PUSH2 0x1372
00000b94: JUMP
00000b95: JUMPDEST
00000b96: PUSH2 0x0ba0
00000b99: PUSH1 0x01
00000b9b: DUP3
00000b9c: PUSH2 0x27e1
00000b9f: JUMP
00000ba0: JUMPDEST
00000ba1: SWAP1
00000ba2: POP
00000ba3: PUSH2 0x0b5e
00000ba6: JUMP
00000ba7: JUMPDEST
00000ba8: POP
00000ba9: POP
00000baa: POP
00000bab: POP
00000bac: JUMP
00000bad: JUMPDEST
00000bae: PUSH1 0x00
00000bb0: PUSH2 0x074d
00000bb3: DUP5
00000bb4: DUP5
00000bb5: DUP5
00000bb6: CALLVALUE
00000bb7: PUSH2 0x13c7
00000bba: JUMP
00000bbb: JUMPDEST
00000bbc: PUSH2 0x0bc3
00000bbf: PUSH2 0x0fe2
00000bc2: JUMP
00000bc3: JUMPDEST
00000bc4: PUSH1 0x00
00000bc6: JUMPDEST
00000bc7: DUP2
00000bc8: DUP2
00000bc9: LT
00000bca: ISZERO
00000bcb: PUSH2 0x0c2c
00000bce: JUMPI
00000bcf: PUSH2 0x0c1a
00000bd2: DUP4
00000bd3: DUP4
00000bd4: DUP4
00000bd5: DUP2
00000bd6: DUP2
00000bd7: LT
00000bd8: PUSH2 0x0be3
00000bdb: JUMPI
00000bdc: PUSH2 0x0be3
00000bdf: PUSH2 0x2783
00000be2: JUMP
00000be3: JUMPDEST
00000be4: PUSH2 0x0bf9
00000be7: SWAP3
00000be8: PUSH1 0x20
00000bea: PUSH1 0x40
00000bec: SWAP1
00000bed: SWAP3
00000bee: MUL
00000bef: ADD
00000bf0: SWAP1
00000bf1: DUP2
00000bf2: ADD
00000bf3: SWAP2
00000bf4: POP
00000bf5: PUSH2 0x2375
00000bf8: JUMP
00000bf9: JUMPDEST
00000bfa: DUP5
00000bfb: DUP5
00000bfc: DUP5
00000bfd: DUP2
00000bfe: DUP2
00000bff: LT
00000c00: PUSH2 0x0c0b
00000c03: JUMPI
00000c04: PUSH2 0x0c0b
00000c07: PUSH2 0x2783
00000c0a: JUMP
00000c0b: JUMPDEST
00000c0c: SWAP1
00000c0d: POP
00000c0e: PUSH1 0x40
00000c10: MUL
00000c11: ADD
00000c12: PUSH1 0x20
00000c14: ADD
00000c15: CALLDATALOAD
00000c16: PUSH2 0x112d
00000c19: JUMP
00000c1a: JUMPDEST
00000c1b: PUSH2 0x0c25
00000c1e: PUSH1 0x01
00000c20: DUP3
00000c21: PUSH2 0x27e1
00000c24: JUMP
00000c25: JUMPDEST
00000c26: SWAP1
00000c27: POP
00000c28: PUSH2 0x0bc6
00000c2b: JUMP
00000c2c: JUMPDEST
00000c2d: POP
00000c2e: POP
00000c2f: POP
00000c30: JUMP
00000c31: JUMPDEST
00000c32: PUSH2 0x0c39
00000c35: PUSH2 0x0fe2
00000c38: JUMP
00000c39: JUMPDEST
00000c3a: PUSH2 0x08b9
00000c3d: DUP3
00000c3e: DUP3
00000c3f: PUSH2 0x1400
00000c42: JUMP
00000c43: JUMPDEST
00000c44: PUSH1 0x00
00000c46: SLOAD
00000c47: PUSH2 0x0100
00000c4a: SWAP1
00000c4b: DIV
00000c4c: PUSH1 0xff
00000c4e: AND
00000c4f: ISZERO
00000c50: DUP1
00000c51: DUP1
00000c52: ISZERO
00000c53: PUSH2 0x0c63
00000c56: JUMPI
00000c57: POP
00000c58: PUSH1 0x00
00000c5a: SLOAD
00000c5b: PUSH1 0x01
00000c5d: PUSH1 0xff
00000c5f: SWAP1
00000c60: SWAP2
00000c61: AND
00000c62: LT
00000c63: JUMPDEST
00000c64: DUP1
00000c65: PUSH2 0x0c7d
00000c68: JUMPI
00000c69: POP
00000c6a: ADDRESS
00000c6b: EXTCODESIZE
00000c6c: ISZERO
00000c6d: DUP1
00000c6e: ISZERO
00000c6f: PUSH2 0x0c7d
00000c72: JUMPI
00000c73: POP
00000c74: PUSH1 0x00
00000c76: SLOAD
00000c77: PUSH1 0xff
00000c79: AND
00000c7a: PUSH1 0x01
00000c7c: EQ
00000c7d: JUMPDEST
00000c7e: PUSH2 0x0d09
00000c81: JUMPI
00000c82: PUSH1 0x40
00000c84: MLOAD
00000c85: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000ca6: DUP2
00000ca7: MSTORE
00000ca8: PUSH1 0x20
00000caa: PUSH1 0x04
00000cac: DUP3
00000cad: ADD
00000cae: MSTORE
00000caf: PUSH1 0x2e
00000cb1: PUSH1 0x24
00000cb3: DUP3
00000cb4: ADD
00000cb5: MSTORE
00000cb6: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00000cd7: PUSH1 0x44
00000cd9: DUP3
00000cda: ADD
00000cdb: MSTORE
00000cdc: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
00000cfd: PUSH1 0x64
00000cff: DUP3
00000d00: ADD
00000d01: MSTORE
00000d02: PUSH1 0x84
00000d04: ADD
00000d05: PUSH2 0x06aa
00000d08: JUMP
00000d09: JUMPDEST
00000d0a: PUSH1 0x00
00000d0c: DUP1
00000d0d: SLOAD
00000d0e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000d2f: AND
00000d30: PUSH1 0x01
00000d32: OR
00000d33: SWAP1
00000d34: SSTORE
00000d35: DUP1
00000d36: ISZERO
00000d37: PUSH2 0x0d67
00000d3a: JUMPI
00000d3b: PUSH1 0x00
00000d3d: DUP1
00000d3e: SLOAD
00000d3f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
00000d60: AND
00000d61: PUSH2 0x0100
00000d64: OR
00000d65: SWAP1
00000d66: SSTORE
00000d67: JUMPDEST
00000d68: PUSH2 0x0d72
00000d6b: DUP5
00000d6c: DUP5
00000d6d: DUP5
00000d6e: PUSH2 0x1416
00000d71: JUMP
00000d72: JUMPDEST
00000d73: DUP1
00000d74: ISZERO
00000d75: PUSH2 0x0ba7
00000d78: JUMPI
00000d79: PUSH1 0x00
00000d7b: DUP1
00000d7c: SLOAD
00000d7d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
00000d9e: AND
00000d9f: SWAP1
00000da0: SSTORE
00000da1: PUSH1 0x40
00000da3: MLOAD
00000da4: PUSH1 0x01
00000da6: DUP2
00000da7: MSTORE
00000da8: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
00000dc9: SWAP1
00000dca: PUSH1 0x20
00000dcc: ADD
00000dcd: PUSH1 0x40
00000dcf: MLOAD
00000dd0: DUP1
00000dd1: SWAP2
00000dd2: SUB
00000dd3: SWAP1
00000dd4: LOG1
00000dd5: POP
00000dd6: POP
00000dd7: POP
00000dd8: POP
00000dd9: JUMP
00000dda: JUMPDEST
00000ddb: PUSH2 0x0de2
00000dde: PUSH2 0x0fe2
00000de1: JUMP
00000de2: JUMPDEST
00000de3: DUP3
00000de4: DUP2
00000de5: EQ
00000de6: PUSH2 0x0e4b
00000de9: JUMPI
00000dea: PUSH1 0x40
00000dec: MLOAD
00000ded: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000e0e: DUP2
00000e0f: MSTORE
00000e10: PUSH1 0x20
00000e12: PUSH1 0x04
00000e14: DUP3
00000e15: ADD
00000e16: MSTORE
00000e17: PUSH1 0x07
00000e19: PUSH1 0x24
00000e1b: DUP3
00000e1c: ADD
00000e1d: MSTORE
00000e1e: PUSH32 0x216c656e67746800000000000000000000000000000000000000000000000000
00000e3f: PUSH1 0x44
00000e41: DUP3
00000e42: ADD
00000e43: MSTORE
00000e44: PUSH1 0x64
00000e46: ADD
00000e47: PUSH2 0x06aa
00000e4a: JUMP
00000e4b: JUMPDEST
00000e4c: DUP3
00000e4d: PUSH1 0x00
00000e4f: JUMPDEST
00000e50: DUP2
00000e51: DUP2
00000e52: LT
00000e53: ISZERO
00000e54: PUSH2 0x0eb1
00000e57: JUMPI
00000e58: PUSH2 0x0e9f
00000e5b: DUP7
00000e5c: DUP7
00000e5d: DUP4
00000e5e: DUP2
00000e5f: DUP2
00000e60: LT
00000e61: PUSH2 0x0e6c
00000e64: JUMPI
00000e65: PUSH2 0x0e6c
00000e68: PUSH2 0x2783
00000e6b: JUMP
00000e6c: JUMPDEST
00000e6d: SWAP1
00000e6e: POP
00000e6f: PUSH1 0x20
00000e71: MUL
00000e72: ADD
00000e73: PUSH1 0x20
00000e75: DUP2
00000e76: ADD
00000e77: SWAP1
00000e78: PUSH2 0x0e81
00000e7b: SWAP2
00000e7c: SWAP1
00000e7d: PUSH2 0x2375
00000e80: JUMP
00000e81: JUMPDEST
00000e82: DUP6
00000e83: DUP6
00000e84: DUP5
00000e85: DUP2
00000e86: DUP2
00000e87: LT
00000e88: PUSH2 0x0e93
00000e8b: JUMPI
00000e8c: PUSH2 0x0e93
00000e8f: PUSH2 0x2783
00000e92: JUMP
00000e93: JUMPDEST
00000e94: SWAP1
00000e95: POP
00000e96: PUSH1 0x20
00000e98: MUL
00000e99: ADD
00000e9a: CALLDATALOAD
00000e9b: PUSH2 0x1400
00000e9e: JUMP
00000e9f: JUMPDEST
00000ea0: PUSH2 0x0eaa
00000ea3: PUSH1 0x01
00000ea5: DUP3
00000ea6: PUSH2 0x27e1
00000ea9: JUMP
00000eaa: JUMPDEST
00000eab: SWAP1
00000eac: POP
00000ead: PUSH2 0x0e4f
00000eb0: JUMP
00000eb1: JUMPDEST
00000eb2: POP
00000eb3: POP
00000eb4: POP
00000eb5: POP
00000eb6: POP
00000eb7: POP
00000eb8: JUMP
00000eb9: JUMPDEST
00000eba: PUSH2 0x0ec1
00000ebd: PUSH2 0x0fe2
00000ec0: JUMP
00000ec1: JUMPDEST
00000ec2: PUSH2 0x0eca
00000ec5: DUP2
00000ec6: PUSH2 0x1372
00000ec9: JUMP
00000eca: JUMPDEST
00000ecb: POP
00000ecc: JUMP
00000ecd: JUMPDEST
00000ece: PUSH1 0x00
00000ed0: PUSH2 0x0b38
00000ed3: DUP3
00000ed4: PUSH2 0x0f10
00000ed7: PUSH1 0x00
00000ed9: DUP1
00000eda: SHL
00000edb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000efc: PUSH1 0x40
00000efe: MLOAD
00000eff: DUP1
00000f00: PUSH1 0x20
00000f02: ADD
00000f03: PUSH1 0x40
00000f05: MSTORE
00000f06: DUP1
00000f07: PUSH1 0x00
00000f09: DUP2
00000f0a: MSTORE
00000f0b: POP
00000f0c: PUSH2 0x14d0
00000f0f: JUMP
00000f10: JUMPDEST
00000f11: PUSH1 0x65
00000f13: SLOAD
00000f14: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f29: AND
00000f2a: PUSH2 0x14ff
00000f2d: JUMP
00000f2e: JUMPDEST
00000f2f: PUSH2 0x0f36
00000f32: PUSH2 0x0fe2
00000f35: JUMP
00000f36: JUMPDEST
00000f37: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f4c: DUP2
00000f4d: AND
00000f4e: PUSH2 0x0fd9
00000f51: JUMPI
00000f52: PUSH1 0x40
00000f54: MLOAD
00000f55: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000f76: DUP2
00000f77: MSTORE
00000f78: PUSH1 0x20
00000f7a: PUSH1 0x04
00000f7c: DUP3
00000f7d: ADD
00000f7e: MSTORE
00000f7f: PUSH1 0x26
00000f81: PUSH1 0x24
00000f83: DUP3
00000f84: ADD
00000f85: MSTORE
00000f86: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
00000fa7: PUSH1 0x44
00000fa9: DUP3
00000faa: ADD
00000fab: MSTORE
00000fac: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000
00000fcd: PUSH1 0x64
00000fcf: DUP3
00000fd0: ADD
00000fd1: MSTORE
00000fd2: PUSH1 0x84
00000fd4: ADD
00000fd5: PUSH2 0x06aa
00000fd8: JUMP
00000fd9: JUMPDEST
00000fda: PUSH2 0x0eca
00000fdd: DUP2
00000fde: PUSH2 0x12fb
00000fe1: JUMP
00000fe2: JUMPDEST
00000fe3: PUSH1 0x33
00000fe5: SLOAD
00000fe6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ffb: AND
00000ffc: CALLER
00000ffd: EQ
00000ffe: PUSH2 0x0b50
00001001: JUMPI
00001002: PUSH1 0x40
00001004: MLOAD
00001005: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001026: DUP2
00001027: MSTORE
00001028: PUSH1 0x20
0000102a: PUSH1 0x04
0000102c: DUP3
0000102d: ADD
0000102e: DUP2
0000102f: SWAP1
00001030: MSTORE
00001031: PUSH1 0x24
00001033: DUP3
00001034: ADD
00001035: MSTORE
00001036: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00001057: PUSH1 0x44
00001059: DUP3
0000105a: ADD
0000105b: MSTORE
0000105c: PUSH1 0x64
0000105e: ADD
0000105f: PUSH2 0x06aa
00001062: JUMP
00001063: JUMPDEST
00001064: PUSH1 0x00
00001066: DUP1
00001067: PUSH2 0x1070
0000106a: DUP5
0000106b: DUP5
0000106c: PUSH2 0x1515
0000106f: JUMP
00001070: JUMPDEST
00001071: SWAP2
00001072: POP
00001073: SWAP2
00001074: POP
00001075: JUMPDEST
00001076: SWAP3
00001077: POP
00001078: SWAP3
00001079: SWAP1
0000107a: POP
0000107b: JUMP
0000107c: JUMPDEST
0000107d: PUSH1 0x60
0000107f: PUSH1 0x00
00001081: PUSH2 0x1089
00001084: DUP4
00001085: PUSH2 0x154f
00001088: JUMP
00001089: JUMPDEST
0000108a: SWAP1
0000108b: POP
0000108c: DUP1
0000108d: MLOAD
0000108e: PUSH8 0xffffffffffffffff
00001097: DUP2
00001098: GT
00001099: ISZERO
0000109a: PUSH2 0x10a5
0000109d: JUMPI
0000109e: PUSH2 0x10a5
000010a1: PUSH2 0x27f4
000010a4: JUMP
000010a5: JUMPDEST
000010a6: PUSH1 0x40
000010a8: MLOAD
000010a9: SWAP1
000010aa: DUP1
000010ab: DUP3
000010ac: MSTORE
000010ad: DUP1
000010ae: PUSH1 0x20
000010b0: MUL
000010b1: PUSH1 0x20
000010b3: ADD
000010b4: DUP3
000010b5: ADD
000010b6: PUSH1 0x40
000010b8: MSTORE
000010b9: DUP1
000010ba: ISZERO
000010bb: PUSH2 0x10ce
000010be: JUMPI
000010bf: DUP2
000010c0: PUSH1 0x20
000010c2: ADD
000010c3: PUSH1 0x20
000010c5: DUP3
000010c6: MUL
000010c7: DUP1
000010c8: CALLDATASIZE
000010c9: DUP4
000010ca: CALLDATACOPY
000010cb: ADD
000010cc: SWAP1
000010cd: POP
000010ce: JUMPDEST
000010cf: POP
000010d0: SWAP2
000010d1: POP
000010d2: PUSH1 0x00
000010d4: JUMPDEST
000010d5: DUP2
000010d6: MLOAD
000010d7: DUP2
000010d8: LT
000010d9: ISZERO
000010da: PUSH2 0x1126
000010dd: JUMPI
000010de: DUP2
000010df: DUP2
000010e0: DUP2
000010e1: MLOAD
000010e2: DUP2
000010e3: LT
000010e4: PUSH2 0x10ef
000010e7: JUMPI
000010e8: PUSH2 0x10ef
000010eb: PUSH2 0x2783
000010ee: JUMP
000010ef: JUMPDEST
000010f0: PUSH1 0x20
000010f2: MUL
000010f3: PUSH1 0x20
000010f5: ADD
000010f6: ADD
000010f7: MLOAD
000010f8: DUP4
000010f9: DUP3
000010fa: DUP2
000010fb: MLOAD
000010fc: DUP2
000010fd: LT
000010fe: PUSH2 0x1109
00001101: JUMPI
00001102: PUSH2 0x1109
00001105: PUSH2 0x2783
00001108: JUMP
00001109: JUMPDEST
0000110a: PUSH4 0xffffffff
0000110f: SWAP1
00001110: SWAP3
00001111: AND
00001112: PUSH1 0x20
00001114: SWAP3
00001115: DUP4
00001116: MUL
00001117: SWAP2
00001118: SWAP1
00001119: SWAP2
0000111a: ADD
0000111b: SWAP1
0000111c: SWAP2
0000111d: ADD
0000111e: MSTORE
0000111f: PUSH1 0x01
00001121: ADD
00001122: PUSH2 0x10d4
00001125: JUMP
00001126: JUMPDEST
00001127: POP
00001128: POP
00001129: SWAP2
0000112a: SWAP1
0000112b: POP
0000112c: JUMP
0000112d: JUMPDEST
0000112e: PUSH4 0xffffffff
00001133: DUP3
00001134: AND
00001135: PUSH1 0x00
00001137: DUP2
00001138: DUP2
00001139: MSTORE
0000113a: PUSH1 0xca
0000113c: PUSH1 0x20
0000113e: SWAP1
0000113f: DUP2
00001140: MSTORE
00001141: PUSH1 0x40
00001143: SWAP2
00001144: DUP3
00001145: SWAP1
00001146: KECCAK256
00001147: DUP5
00001148: SWAP1
00001149: SSTORE
0000114a: DUP2
0000114b: MLOAD
0000114c: SWAP3
0000114d: DUP4
0000114e: MSTORE
0000114f: DUP3
00001150: ADD
00001151: DUP4
00001152: SWAP1
00001153: MSTORE
00001154: PUSH32 0xc3de732a98b24a2b5c6f67e8a7fb057ffc14046b83968a2c73e4148d2fba978b
00001175: SWAP2
00001176: ADD
00001177: PUSH2 0x072a
0000117a: JUMP
0000117b: JUMPDEST
0000117c: PUSH1 0x00
0000117e: DUP1
0000117f: PUSH2 0x1187
00001182: DUP7
00001183: PUSH2 0x15e0
00001186: JUMP
00001187: JUMPDEST
00001188: SWAP1
00001189: POP
0000118a: PUSH1 0x00
0000118c: PUSH2 0x1194
0000118f: DUP8
00001190: PUSH2 0x1638
00001193: JUMP
00001194: JUMPDEST
00001195: SWAP1
00001196: POP
00001197: PUSH1 0x00
00001199: PUSH2 0x11a3
0000119c: DUP10
0000119d: DUP4
0000119e: DUP6
0000119f: PUSH2 0x14d0
000011a2: JUMP
000011a3: JUMPDEST
000011a4: SWAP1
000011a5: POP
000011a6: PUSH2 0x11b2
000011a9: DUP11
000011aa: DUP9
000011ab: DUP4
000011ac: DUP10
000011ad: DUP10
000011ae: PUSH2 0x1664
000011b1: JUMP
000011b2: JUMPDEST
000011b3: SWAP4
000011b4: POP
000011b5: DUP9
000011b6: DUP11
000011b7: PUSH4 0xffffffff
000011bc: AND
000011bd: PUSH32 0xd229aacb94204188fe8042965fa6b269c62dc5818b21238779ab64bdd17efeec
000011de: DUP5
000011df: PUSH1 0x40
000011e1: MLOAD
000011e2: PUSH2 0x11ed
000011e5: SWAP2
000011e6: DUP2
000011e7: MSTORE
000011e8: PUSH1 0x20
000011ea: ADD
000011eb: SWAP1
000011ec: JUMP
000011ed: JUMPDEST
000011ee: PUSH1 0x40
000011f0: MLOAD
000011f1: DUP1
000011f2: SWAP2
000011f3: SUB
000011f4: SWAP1
000011f5: LOG3
000011f6: POP
000011f7: POP
000011f8: POP
000011f9: SWAP7
000011fa: SWAP6
000011fb: POP
000011fc: POP
000011fd: POP
000011fe: POP
000011ff: POP
00001200: POP
00001201: JUMP
00001202: JUMPDEST
00001203: PUSH1 0x00
00001205: DUP1
00001206: DUP1
00001207: PUSH2 0x121a
0000120a: PUSH1 0x97
0000120c: PUSH4 0xffffffff
00001211: DUP1
00001212: DUP8
00001213: AND
00001214: SWAP1
00001215: PUSH2 0x1063
00001218: AND
00001219: JUMP
0000121a: JUMPDEST
0000121b: SWAP2
0000121c: POP
0000121d: SWAP2
0000121e: POP
0000121f: DUP2
00001220: ISZERO
00001221: PUSH2 0x122b
00001224: JUMPI
00001225: SWAP4
00001226: SWAP3
00001227: POP
00001228: POP
00001229: POP
0000122a: JUMP
0000122b: JUMPDEST
0000122c: PUSH2 0x1234
0000122f: DUP5
00001230: PUSH2 0x1717
00001233: JUMP
00001234: JUMPDEST
00001235: PUSH1 0x40
00001237: MLOAD
00001238: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001259: DUP2
0000125a: MSTORE
0000125b: PUSH1 0x04
0000125d: ADD
0000125e: PUSH2 0x06aa
00001261: SWAP2
00001262: SWAP1
00001263: PUSH2 0x263f
00001266: JUMP
00001267: JUMPDEST
00001268: PUSH1 0x00
0000126a: PUSH2 0x1273
0000126d: DUP4
0000126e: DUP4
0000126f: PUSH2 0x174e
00001272: JUMP
00001273: JUMPDEST
00001274: SWAP1
00001275: POP
00001276: PUSH1 0x00
00001278: PUSH2 0x1281
0000127b: DUP5
0000127c: DUP5
0000127d: PUSH2 0x176d
00001280: JUMP
00001281: JUMPDEST
00001282: SWAP1
00001283: POP
00001284: CALLDATASIZE
00001285: PUSH1 0x00
00001287: PUSH2 0x1290
0000128a: DUP7
0000128b: DUP7
0000128c: PUSH2 0x177d
0000128f: JUMP
00001290: JUMPDEST
00001291: SWAP2
00001292: POP
00001293: SWAP2
00001294: POP
00001295: PUSH2 0x12b0
00001298: PUSH2 0x12a0
0000129b: DUP6
0000129c: PUSH2 0x178d
0000129f: JUMP
000012a0: JUMPDEST
000012a1: PUSH2 0x12a9
000012a4: DUP6
000012a5: PUSH2 0x1836
000012a8: JUMP
000012a9: JUMPDEST
000012aa: DUP5
000012ab: DUP5
000012ac: PUSH2 0x1862
000012af: JUMP
000012b0: JUMPDEST
000012b1: DUP4
000012b2: DUP9
000012b3: PUSH4 0xffffffff
000012b8: AND
000012b9: PUSH32 0xba20947a325f450d232530e5f5fce293e7963499d5309a07cee84a269f2f15a6
000012da: DUP6
000012db: PUSH1 0x40
000012dd: MLOAD
000012de: PUSH2 0x12e9
000012e1: SWAP2
000012e2: DUP2
000012e3: MSTORE
000012e4: PUSH1 0x20
000012e6: ADD
000012e7: SWAP1
000012e8: JUMP
000012e9: JUMPDEST
000012ea: PUSH1 0x40
000012ec: MLOAD
000012ed: DUP1
000012ee: SWAP2
000012ef: SUB
000012f0: SWAP1
000012f1: LOG3
000012f2: POP
000012f3: POP
000012f4: POP
000012f5: POP
000012f6: POP
000012f7: POP
000012f8: POP
000012f9: POP
000012fa: JUMP
000012fb: JUMPDEST
000012fc: PUSH1 0x33
000012fe: DUP1
000012ff: SLOAD
00001300: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001315: DUP4
00001316: DUP2
00001317: AND
00001318: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001339: DUP4
0000133a: AND
0000133b: DUP2
0000133c: OR
0000133d: SWAP1
0000133e: SWAP4
0000133f: SSTORE
00001340: PUSH1 0x40
00001342: MLOAD
00001343: SWAP2
00001344: AND
00001345: SWAP2
00001346: SWAP1
00001347: DUP3
00001348: SWAP1
00001349: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
0000136a: SWAP1
0000136b: PUSH1 0x00
0000136d: SWAP1
0000136e: LOG3
0000136f: POP
00001370: POP
00001371: JUMP
00001372: JUMPDEST
00001373: PUSH2 0x1386
00001376: PUSH1 0x97
00001378: PUSH4 0xffffffff
0000137d: DUP1
0000137e: DUP5
0000137f: AND
00001380: SWAP1
00001381: PUSH2 0x18a3
00001384: AND
00001385: JUMP
00001386: JUMPDEST
00001387: PUSH2 0x138f
0000138a: DUP3
0000138b: PUSH2 0x1717
0000138e: JUMP
0000138f: JUMPDEST
00001390: SWAP1
00001391: PUSH2 0x08b9
00001394: JUMPI
00001395: PUSH1 0x40
00001397: MLOAD
00001398: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000013b9: DUP2
000013ba: MSTORE
000013bb: PUSH1 0x04
000013bd: ADD
000013be: PUSH2 0x06aa
000013c1: SWAP2
000013c2: SWAP1
000013c3: PUSH2 0x263f
000013c6: JUMP
000013c7: JUMPDEST
000013c8: PUSH1 0x00
000013ca: PUSH2 0x13f7
000013cd: DUP6
000013ce: DUP6
000013cf: DUP6
000013d0: DUP6
000013d1: PUSH2 0x13d9
000013d4: DUP11
000013d5: PUSH2 0x18af
000013d8: JUMP
000013d9: JUMPDEST
000013da: PUSH1 0x65
000013dc: SLOAD
000013dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013f2: AND
000013f3: PUSH2 0x117b
000013f6: JUMP
000013f7: JUMPDEST
000013f8: SWAP6
000013f9: SWAP5
000013fa: POP
000013fb: POP
000013fc: POP
000013fd: POP
000013fe: POP
000013ff: JUMP
00001400: JUMPDEST
00001401: PUSH2 0x08b9
00001404: PUSH1 0x97
00001406: PUSH4 0xffffffff
0000140b: DUP1
0000140c: DUP6
0000140d: AND
0000140e: SWAP1
0000140f: DUP5
00001410: SWAP1
00001411: PUSH2 0x18d1
00001414: AND
00001415: JUMP
00001416: JUMPDEST
00001417: PUSH1 0x00
00001419: SLOAD
0000141a: PUSH2 0x0100
0000141d: SWAP1
0000141e: DIV
0000141f: PUSH1 0xff
00001421: AND
00001422: PUSH2 0x14ad
00001425: JUMPI
00001426: PUSH1 0x40
00001428: MLOAD
00001429: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000144a: DUP2
0000144b: MSTORE
0000144c: PUSH1 0x20
0000144e: PUSH1 0x04
00001450: DUP3
00001451: ADD
00001452: MSTORE
00001453: PUSH1 0x2b
00001455: PUSH1 0x24
00001457: DUP3
00001458: ADD
00001459: MSTORE
0000145a: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
0000147b: PUSH1 0x44
0000147d: DUP3
0000147e: ADD
0000147f: MSTORE
00001480: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
000014a1: PUSH1 0x64
000014a3: DUP3
000014a4: ADD
000014a5: MSTORE
000014a6: PUSH1 0x84
000014a8: ADD
000014a9: PUSH2 0x06aa
000014ac: JUMP
000014ad: JUMPDEST
000014ae: PUSH2 0x14b5
000014b1: PUSH2 0x18dc
000014b4: JUMP
000014b5: JUMPDEST
000014b6: PUSH2 0x14be
000014b9: DUP4
000014ba: PUSH2 0x0755
000014bd: JUMP
000014be: JUMPDEST
000014bf: PUSH2 0x14c7
000014c2: DUP3
000014c3: PUSH2 0x05e8
000014c6: JUMP
000014c7: JUMPDEST
000014c8: PUSH2 0x0c2c
000014cb: DUP2
000014cc: PUSH2 0x12fb
000014cf: JUMP
000014d0: JUMPDEST
000014d1: PUSH1 0x60
000014d3: DUP4
000014d4: DUP4
000014d5: DUP4
000014d6: PUSH1 0x40
000014d8: MLOAD
000014d9: PUSH1 0x20
000014db: ADD
000014dc: PUSH2 0x14e7
000014df: SWAP4
000014e0: SWAP3
000014e1: SWAP2
000014e2: SWAP1
000014e3: PUSH2 0x2823
000014e6: JUMP
000014e7: JUMPDEST
000014e8: PUSH1 0x40
000014ea: MLOAD
000014eb: PUSH1 0x20
000014ed: DUP2
000014ee: DUP4
000014ef: SUB
000014f0: SUB
000014f1: DUP2
000014f2: MSTORE
000014f3: SWAP1
000014f4: PUSH1 0x40
000014f6: MSTORE
000014f7: SWAP1
000014f8: POP
000014f9: SWAP4
000014fa: SWAP3
000014fb: POP
000014fc: POP
000014fd: POP
000014fe: JUMP
000014ff: JUMPDEST
00001500: PUSH1 0x00
00001502: PUSH2 0x074d
00001505: DUP5
00001506: DUP5
00001507: PUSH2 0x150f
0000150a: DUP8
0000150b: PUSH2 0x18af
0000150e: JUMP
0000150f: JUMPDEST
00001510: DUP6
00001511: PUSH2 0x197b
00001514: JUMP
00001515: JUMPDEST
00001516: PUSH1 0x00
00001518: DUP2
00001519: DUP2
0000151a: MSTORE
0000151b: PUSH1 0x02
0000151d: DUP4
0000151e: ADD
0000151f: PUSH1 0x20
00001521: MSTORE
00001522: PUSH1 0x40
00001524: DUP2
00001525: KECCAK256
00001526: SLOAD
00001527: DUP2
00001528: SWAP1
00001529: DUP1
0000152a: PUSH2 0x1544
0000152d: JUMPI
0000152e: PUSH2 0x1537
00001531: DUP6
00001532: DUP6
00001533: PUSH2 0x1a4f
00001536: JUMP
00001537: JUMPDEST
00001538: SWAP3
00001539: POP
0000153a: PUSH1 0x00
0000153c: SWAP2
0000153d: POP
0000153e: PUSH2 0x1075
00001541: SWAP1
00001542: POP
00001543: JUMP
00001544: JUMPDEST
00001545: PUSH1 0x01
00001547: SWAP3
00001548: POP
00001549: SWAP1
0000154a: POP
0000154b: PUSH2 0x1075
0000154e: JUMP
0000154f: JUMPDEST
00001550: PUSH1 0x60
00001552: PUSH1 0x00
00001554: PUSH2 0x155c
00001557: DUP4
00001558: PUSH2 0x1a5b
0000155b: JUMP
0000155c: JUMPDEST
0000155d: SWAP1
0000155e: POP
0000155f: DUP1
00001560: PUSH8 0xffffffffffffffff
00001569: DUP2
0000156a: GT
0000156b: ISZERO
0000156c: PUSH2 0x1577
0000156f: JUMPI
00001570: PUSH2 0x1577
00001573: PUSH2 0x27f4
00001576: JUMP
00001577: JUMPDEST
00001578: PUSH1 0x40
0000157a: MLOAD
0000157b: SWAP1
0000157c: DUP1
0000157d: DUP3
0000157e: MSTORE
0000157f: DUP1
00001580: PUSH1 0x20
00001582: MUL
00001583: PUSH1 0x20
00001585: ADD
00001586: DUP3
00001587: ADD
00001588: PUSH1 0x40
0000158a: MSTORE
0000158b: DUP1
0000158c: ISZERO
0000158d: PUSH2 0x15a0
00001590: JUMPI
00001591: DUP2
00001592: PUSH1 0x20
00001594: ADD
00001595: PUSH1 0x20
00001597: DUP3
00001598: MUL
00001599: DUP1
0000159a: CALLDATASIZE
0000159b: DUP4
0000159c: CALLDATACOPY
0000159d: ADD
0000159e: SWAP1
0000159f: POP
000015a0: JUMPDEST
000015a1: POP
000015a2: SWAP2
000015a3: POP
000015a4: PUSH1 0x00
000015a6: JUMPDEST
000015a7: DUP2
000015a8: DUP2
000015a9: LT
000015aa: ISZERO
000015ab: PUSH2 0x1126
000015ae: JUMPI
000015af: PUSH2 0x15b8
000015b2: DUP5
000015b3: DUP3
000015b4: PUSH2 0x1a66
000015b7: JUMP
000015b8: JUMPDEST
000015b9: PUSH1 0x00
000015bb: SHR
000015bc: DUP4
000015bd: DUP3
000015be: DUP2
000015bf: MLOAD
000015c0: DUP2
000015c1: LT
000015c2: PUSH2 0x15cd
000015c5: JUMPI
000015c6: PUSH2 0x15cd
000015c9: PUSH2 0x2783
000015cc: JUMP
000015cd: JUMPDEST
000015ce: PUSH1 0x20
000015d0: SWAP1
000015d1: DUP2
000015d2: MUL
000015d3: SWAP2
000015d4: SWAP1
000015d5: SWAP2
000015d6: ADD
000015d7: ADD
000015d8: MSTORE
000015d9: PUSH1 0x01
000015db: ADD
000015dc: PUSH2 0x15a6
000015df: JUMP
000015e0: JUMPDEST
000015e1: PUSH1 0x60
000015e3: PUSH2 0x1624
000015e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015fb: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
0000161c: AND
0000161d: CALLER
0000161e: ADDRESS
0000161f: DUP6
00001620: PUSH2 0x1a72
00001623: JUMP
00001624: JUMPDEST
00001625: POP
00001626: POP
00001627: PUSH1 0x40
00001629: DUP1
0000162a: MLOAD
0000162b: PUSH1 0x20
0000162d: DUP2
0000162e: ADD
0000162f: SWAP1
00001630: SWAP2
00001631: MSTORE
00001632: PUSH1 0x00
00001634: DUP2
00001635: MSTORE
00001636: SWAP1
00001637: JUMP
00001638: JUMPDEST
00001639: PUSH1 0x00
0000163b: PUSH2 0x0b38
0000163e: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
0000165f: DUP4
00001660: PUSH2 0x2850
00001663: JUMP
00001664: JUMPDEST
00001665: PUSH1 0x00
00001667: DUP1
00001668: PUSH2 0x1670
0000166b: DUP8
0000166c: PUSH2 0x1202
0000166f: JUMP
00001670: JUMPDEST
00001671: SWAP1
00001672: POP
00001673: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239
00001694: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016a9: AND
000016aa: PUSH4 0x10b83dc0
000016af: DUP8
000016b0: DUP10
000016b1: DUP5
000016b2: DUP10
000016b3: DUP10
000016b4: DUP10
000016b5: PUSH1 0x40
000016b7: MLOAD
000016b8: DUP8
000016b9: PUSH4 0xffffffff
000016be: AND
000016bf: PUSH1 0xe0
000016c1: SHL
000016c2: DUP2
000016c3: MSTORE
000016c4: PUSH1 0x04
000016c6: ADD
000016c7: PUSH2 0x16d4
000016ca: SWAP6
000016cb: SWAP5
000016cc: SWAP4
000016cd: SWAP3
000016ce: SWAP2
000016cf: SWAP1
000016d0: PUSH2 0x2867
000016d3: JUMP
000016d4: JUMPDEST
000016d5: PUSH1 0x20
000016d7: PUSH1 0x40
000016d9: MLOAD
000016da: DUP1
000016db: DUP4
000016dc: SUB
000016dd: DUP2
000016de: DUP6
000016df: DUP9
000016e0: GAS
000016e1: CALL
000016e2: ISZERO
000016e3: DUP1
000016e4: ISZERO
000016e5: PUSH2 0x16f2
000016e8: JUMPI
000016e9: RETURNDATASIZE
000016ea: PUSH1 0x00
000016ec: DUP1
000016ed: RETURNDATACOPY
000016ee: RETURNDATASIZE
000016ef: PUSH1 0x00
000016f1: REVERT
000016f2: JUMPDEST
000016f3: POP
000016f4: POP
000016f5: POP
000016f6: POP
000016f7: POP
000016f8: PUSH1 0x40
000016fa: MLOAD
000016fb: RETURNDATASIZE
000016fc: PUSH1 0x1f
000016fe: NOT
000016ff: PUSH1 0x1f
00001701: DUP3
00001702: ADD
00001703: AND
00001704: DUP3
00001705: ADD
00001706: DUP1
00001707: PUSH1 0x40
00001709: MSTORE
0000170a: POP
0000170b: DUP2
0000170c: ADD
0000170d: SWAP1
0000170e: PUSH2 0x0904
00001711: SWAP2
00001712: SWAP1
00001713: PUSH2 0x276a
00001716: JUMP
00001717: JUMPDEST
00001718: PUSH1 0x60
0000171a: PUSH2 0x1728
0000171d: DUP3
0000171e: PUSH4 0xffffffff
00001723: AND
00001724: PUSH2 0x1b4e
00001727: JUMP
00001728: JUMPDEST
00001729: PUSH1 0x40
0000172b: MLOAD
0000172c: PUSH1 0x20
0000172e: ADD
0000172f: PUSH2 0x1738
00001732: SWAP2
00001733: SWAP1
00001734: PUSH2 0x28c7
00001737: JUMP
00001738: JUMPDEST
00001739: PUSH1 0x40
0000173b: MLOAD
0000173c: PUSH1 0x20
0000173e: DUP2
0000173f: DUP4
00001740: SUB
00001741: SUB
00001742: DUP2
00001743: MSTORE
00001744: SWAP1
00001745: PUSH1 0x40
00001747: MSTORE
00001748: SWAP1
00001749: POP
0000174a: SWAP2
0000174b: SWAP1
0000174c: POP
0000174d: JUMP
0000174e: JUMPDEST
0000174f: PUSH1 0x00
00001751: PUSH2 0x175d
00001754: PUSH1 0x20
00001756: DUP3
00001757: DUP5
00001758: DUP7
00001759: PUSH2 0x290c
0000175c: JUMP
0000175d: JUMPDEST
0000175e: PUSH2 0x1766
00001761: SWAP2
00001762: PUSH2 0x2936
00001765: JUMP
00001766: JUMPDEST
00001767: SWAP4
00001768: SWAP3
00001769: POP
0000176a: POP
0000176b: POP
0000176c: JUMP
0000176d: JUMPDEST
0000176e: PUSH1 0x00
00001770: PUSH2 0x175d
00001773: PUSH1 0x40
00001775: PUSH1 0x20
00001777: DUP5
00001778: DUP7
00001779: PUSH2 0x290c
0000177c: JUMP
0000177d: JUMPDEST
0000177e: CALLDATASIZE
0000177f: PUSH1 0x00
00001781: PUSH2 0x1070
00001784: DUP4
00001785: PUSH1 0x40
00001787: DUP2
00001788: DUP8
00001789: PUSH2 0x290c
0000178c: JUMP
0000178d: JUMPDEST
0000178e: PUSH1 0x00
00001790: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017a5: DUP3
000017a6: GT
000017a7: ISZERO
000017a8: PUSH2 0x1832
000017ab: JUMPI
000017ac: PUSH1 0x40
000017ae: MLOAD
000017af: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000017d0: DUP2
000017d1: MSTORE
000017d2: PUSH1 0x20
000017d4: PUSH1 0x04
000017d6: DUP3
000017d7: ADD
000017d8: MSTORE
000017d9: PUSH1 0x24
000017db: DUP1
000017dc: DUP3
000017dd: ADD
000017de: MSTORE
000017df: PUSH32 0x5479706543617374733a2062797465733332546f41646472657373206f766572
00001800: PUSH1 0x44
00001802: DUP3
00001803: ADD
00001804: MSTORE
00001805: PUSH32 0x666c6f7700000000000000000000000000000000000000000000000000000000
00001826: PUSH1 0x64
00001828: DUP3
00001829: ADD
0000182a: MSTORE
0000182b: PUSH1 0x84
0000182d: ADD
0000182e: PUSH2 0x06aa
00001831: JUMP
00001832: JUMPDEST
00001833: POP
00001834: SWAP1
00001835: JUMP
00001836: JUMPDEST
00001837: PUSH1 0x00
00001839: PUSH2 0x0b38
0000183c: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
0000185d: DUP4
0000185e: PUSH2 0x2972
00001861: JUMP
00001862: JUMPDEST
00001863: PUSH2 0x0ba7
00001866: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000187b: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
0000189c: AND
0000189d: DUP6
0000189e: DUP6
0000189f: PUSH2 0x1c0c
000018a2: JUMP
000018a3: JUMPDEST
000018a4: PUSH1 0x00
000018a6: PUSH2 0x1766
000018a9: DUP4
000018aa: DUP4
000018ab: PUSH2 0x1c62
000018ae: JUMP
000018af: JUMPDEST
000018b0: PUSH4 0xffffffff
000018b5: DUP2
000018b6: AND
000018b7: PUSH1 0x00
000018b9: SWAP1
000018ba: DUP2
000018bb: MSTORE
000018bc: PUSH1 0xca
000018be: PUSH1 0x20
000018c0: MSTORE
000018c1: PUSH1 0x40
000018c3: SWAP1
000018c4: KECCAK256
000018c5: SLOAD
000018c6: PUSH1 0x60
000018c8: SWAP1
000018c9: PUSH2 0x0b38
000018cc: SWAP1
000018cd: PUSH2 0x1c7f
000018d0: JUMP
000018d1: JUMPDEST
000018d2: PUSH2 0x0ba7
000018d5: DUP4
000018d6: DUP4
000018d7: DUP4
000018d8: PUSH2 0x1c9d
000018db: JUMP
000018dc: JUMPDEST
000018dd: PUSH1 0x00
000018df: SLOAD
000018e0: PUSH2 0x0100
000018e3: SWAP1
000018e4: DIV
000018e5: PUSH1 0xff
000018e7: AND
000018e8: PUSH2 0x1973
000018eb: JUMPI
000018ec: PUSH1 0x40
000018ee: MLOAD
000018ef: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001910: DUP2
00001911: MSTORE
00001912: PUSH1 0x20
00001914: PUSH1 0x04
00001916: DUP3
00001917: ADD
00001918: MSTORE
00001919: PUSH1 0x2b
0000191b: PUSH1 0x24
0000191d: DUP3
0000191e: ADD
0000191f: MSTORE
00001920: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00001941: PUSH1 0x44
00001943: DUP3
00001944: ADD
00001945: MSTORE
00001946: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00001967: PUSH1 0x64
00001969: DUP3
0000196a: ADD
0000196b: MSTORE
0000196c: PUSH1 0x84
0000196e: ADD
0000196f: PUSH2 0x06aa
00001972: JUMP
00001973: JUMPDEST
00001974: PUSH2 0x0b50
00001977: PUSH2 0x1cba
0000197a: JUMP
0000197b: JUMPDEST
0000197c: PUSH1 0x00
0000197e: DUP1
0000197f: PUSH2 0x1987
00001982: DUP7
00001983: PUSH2 0x1202
00001986: JUMP
00001987: JUMPDEST
00001988: PUSH1 0x40
0000198a: MLOAD
0000198b: PUSH32 0x81d2ea9500000000000000000000000000000000000000000000000000000000
000019ac: DUP2
000019ad: MSTORE
000019ae: SWAP1
000019af: SWAP2
000019b0: POP
000019b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019c6: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239
000019e7: AND
000019e8: SWAP1
000019e9: PUSH4 0x81d2ea95
000019ee: SWAP1
000019ef: PUSH2 0x1a04
000019f2: SWAP1
000019f3: DUP10
000019f4: SWAP1
000019f5: DUP6
000019f6: SWAP1
000019f7: DUP11
000019f8: SWAP1
000019f9: DUP11
000019fa: SWAP1
000019fb: DUP11
000019fc: SWAP1
000019fd: PUSH1 0x04
000019ff: ADD
00001a00: PUSH2 0x2867
00001a03: JUMP
00001a04: JUMPDEST
00001a05: PUSH1 0x20
00001a07: PUSH1 0x40
00001a09: MLOAD
00001a0a: DUP1
00001a0b: DUP4
00001a0c: SUB
00001a0d: DUP2
00001a0e: DUP7
00001a0f: GAS
00001a10: STATICCALL
00001a11: ISZERO
00001a12: DUP1
00001a13: ISZERO
00001a14: PUSH2 0x1a21
00001a17: JUMPI
00001a18: RETURNDATASIZE
00001a19: PUSH1 0x00
00001a1b: DUP1
00001a1c: RETURNDATACOPY
00001a1d: RETURNDATASIZE
00001a1e: PUSH1 0x00
00001a20: REVERT
00001a21: JUMPDEST
00001a22: POP
00001a23: POP
00001a24: POP
00001a25: POP
00001a26: PUSH1 0x40
00001a28: MLOAD
00001a29: RETURNDATASIZE
00001a2a: PUSH1 0x1f
00001a2c: NOT
00001a2d: PUSH1 0x1f
00001a2f: DUP3
00001a30: ADD
00001a31: AND
00001a32: DUP3
00001a33: ADD
00001a34: DUP1
00001a35: PUSH1 0x40
00001a37: MSTORE
00001a38: POP
00001a39: DUP2
00001a3a: ADD
00001a3b: SWAP1
00001a3c: PUSH2 0x1a45
00001a3f: SWAP2
00001a40: SWAP1
00001a41: PUSH2 0x276a
00001a44: JUMP
00001a45: JUMPDEST
00001a46: SWAP7
00001a47: SWAP6
00001a48: POP
00001a49: POP
00001a4a: POP
00001a4b: POP
00001a4c: POP
00001a4d: POP
00001a4e: JUMP
00001a4f: JUMPDEST
00001a50: PUSH1 0x00
00001a52: PUSH2 0x1766
00001a55: DUP4
00001a56: DUP4
00001a57: PUSH2 0x1d5a
00001a5a: JUMP
00001a5b: JUMPDEST
00001a5c: PUSH1 0x00
00001a5e: PUSH2 0x0b38
00001a61: DUP3
00001a62: PUSH2 0x1d72
00001a65: JUMP
00001a66: JUMPDEST
00001a67: PUSH1 0x00
00001a69: PUSH2 0x1766
00001a6c: DUP4
00001a6d: DUP4
00001a6e: PUSH2 0x1d7c
00001a71: JUMP
00001a72: JUMPDEST
00001a73: PUSH1 0x40
00001a75: MLOAD
00001a76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a8b: DUP1
00001a8c: DUP6
00001a8d: AND
00001a8e: PUSH1 0x24
00001a90: DUP4
00001a91: ADD
00001a92: MSTORE
00001a93: DUP4
00001a94: AND
00001a95: PUSH1 0x44
00001a97: DUP3
00001a98: ADD
00001a99: MSTORE
00001a9a: PUSH1 0x64
00001a9c: DUP2
00001a9d: ADD
00001a9e: DUP3
00001a9f: SWAP1
00001aa0: MSTORE
00001aa1: PUSH2 0x0ba7
00001aa4: SWAP1
00001aa5: DUP6
00001aa6: SWAP1
00001aa7: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
00001ac8: SWAP1
00001ac9: PUSH1 0x84
00001acb: ADD
00001acc: JUMPDEST
00001acd: PUSH1 0x40
00001acf: DUP1
00001ad0: MLOAD
00001ad1: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001af2: DUP2
00001af3: DUP5
00001af4: SUB
00001af5: ADD
00001af6: DUP2
00001af7: MSTORE
00001af8: SWAP2
00001af9: SWAP1
00001afa: MSTORE
00001afb: PUSH1 0x20
00001afd: DUP2
00001afe: ADD
00001aff: DUP1
00001b00: MLOAD
00001b01: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001b1e: AND
00001b1f: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00001b40: SWAP1
00001b41: SWAP4
00001b42: AND
00001b43: SWAP3
00001b44: SWAP1
00001b45: SWAP3
00001b46: OR
00001b47: SWAP1
00001b48: SWAP2
00001b49: MSTORE
00001b4a: PUSH2 0x1da6
00001b4d: JUMP
00001b4e: JUMPDEST
00001b4f: PUSH1 0x60
00001b51: PUSH1 0x00
00001b53: PUSH2 0x1b5b
00001b56: DUP4
00001b57: PUSH2 0x1eb5
00001b5a: JUMP
00001b5b: JUMPDEST
00001b5c: PUSH1 0x01
00001b5e: ADD
00001b5f: SWAP1
00001b60: POP
00001b61: PUSH1 0x00
00001b63: DUP2
00001b64: PUSH8 0xffffffffffffffff
00001b6d: DUP2
00001b6e: GT
00001b6f: ISZERO
00001b70: PUSH2 0x1b7b
00001b73: JUMPI
00001b74: PUSH2 0x1b7b
00001b77: PUSH2 0x27f4
00001b7a: JUMP
00001b7b: JUMPDEST
00001b7c: PUSH1 0x40
00001b7e: MLOAD
00001b7f: SWAP1
00001b80: DUP1
00001b81: DUP3
00001b82: MSTORE
00001b83: DUP1
00001b84: PUSH1 0x1f
00001b86: ADD
00001b87: PUSH1 0x1f
00001b89: NOT
00001b8a: AND
00001b8b: PUSH1 0x20
00001b8d: ADD
00001b8e: DUP3
00001b8f: ADD
00001b90: PUSH1 0x40
00001b92: MSTORE
00001b93: DUP1
00001b94: ISZERO
00001b95: PUSH2 0x1ba5
00001b98: JUMPI
00001b99: PUSH1 0x20
00001b9b: DUP3
00001b9c: ADD
00001b9d: DUP2
00001b9e: DUP1
00001b9f: CALLDATASIZE
00001ba0: DUP4
00001ba1: CALLDATACOPY
00001ba2: ADD
00001ba3: SWAP1
00001ba4: POP
00001ba5: JUMPDEST
00001ba6: POP
00001ba7: SWAP1
00001ba8: POP
00001ba9: DUP2
00001baa: DUP2
00001bab: ADD
00001bac: PUSH1 0x20
00001bae: ADD
00001baf: JUMPDEST
00001bb0: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001bd1: ADD
00001bd2: PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000
00001bf3: PUSH1 0x0a
00001bf5: DUP7
00001bf6: MOD
00001bf7: BYTE
00001bf8: DUP2
00001bf9: MSTORE8
00001bfa: PUSH1 0x0a
00001bfc: DUP6
00001bfd: DIV
00001bfe: SWAP5
00001bff: POP
00001c00: DUP5
00001c01: PUSH2 0x1baf
00001c04: JUMPI
00001c05: POP
00001c06: SWAP4
00001c07: SWAP3
00001c08: POP
00001c09: POP
00001c0a: POP
00001c0b: JUMP
00001c0c: JUMPDEST
00001c0d: PUSH1 0x40
00001c0f: MLOAD
00001c10: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c25: DUP4
00001c26: AND
00001c27: PUSH1 0x24
00001c29: DUP3
00001c2a: ADD
00001c2b: MSTORE
00001c2c: PUSH1 0x44
00001c2e: DUP2
00001c2f: ADD
00001c30: DUP3
00001c31: SWAP1
00001c32: MSTORE
00001c33: PUSH2 0x0c2c
00001c36: SWAP1
00001c37: DUP5
00001c38: SWAP1
00001c39: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00001c5a: SWAP1
00001c5b: PUSH1 0x64
00001c5d: ADD
00001c5e: PUSH2 0x1acc
00001c61: JUMP
00001c62: JUMPDEST
00001c63: PUSH1 0x00
00001c65: DUP2
00001c66: DUP2
00001c67: MSTORE
00001c68: PUSH1 0x02
00001c6a: DUP4
00001c6b: ADD
00001c6c: PUSH1 0x20
00001c6e: MSTORE
00001c6f: PUSH1 0x40
00001c71: DUP2
00001c72: KECCAK256
00001c73: DUP2
00001c74: SWAP1
00001c75: SSTORE
00001c76: PUSH2 0x1766
00001c79: DUP4
00001c7a: DUP4
00001c7b: PUSH2 0x1f97
00001c7e: JUMP
00001c7f: JUMPDEST
00001c80: PUSH1 0x60
00001c82: PUSH2 0x0b38
00001c85: PUSH1 0x00
00001c87: DUP4
00001c88: CALLER
00001c89: PUSH1 0x40
00001c8b: MLOAD
00001c8c: DUP1
00001c8d: PUSH1 0x20
00001c8f: ADD
00001c90: PUSH1 0x40
00001c92: MSTORE
00001c93: DUP1
00001c94: PUSH1 0x00
00001c96: DUP2
00001c97: MSTORE
00001c98: POP
00001c99: PUSH2 0x1fa3
00001c9c: JUMP
00001c9d: JUMPDEST
00001c9e: PUSH1 0x00
00001ca0: DUP3
00001ca1: DUP2
00001ca2: MSTORE
00001ca3: PUSH1 0x02
00001ca5: DUP5
00001ca6: ADD
00001ca7: PUSH1 0x20
00001ca9: MSTORE
00001caa: PUSH1 0x40
00001cac: DUP2
00001cad: KECCAK256
00001cae: DUP3
00001caf: SWAP1
00001cb0: SSTORE
00001cb1: PUSH2 0x074d
00001cb4: DUP5
00001cb5: DUP5
00001cb6: PUSH2 0x1fd8
00001cb9: JUMP
00001cba: JUMPDEST
00001cbb: PUSH1 0x00
00001cbd: SLOAD
00001cbe: PUSH2 0x0100
00001cc1: SWAP1
00001cc2: DIV
00001cc3: PUSH1 0xff
00001cc5: AND
00001cc6: PUSH2 0x1d51
00001cc9: JUMPI
00001cca: PUSH1 0x40
00001ccc: MLOAD
00001ccd: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001cee: DUP2
00001cef: MSTORE
00001cf0: PUSH1 0x20
00001cf2: PUSH1 0x04
00001cf4: DUP3
00001cf5: ADD
00001cf6: MSTORE
00001cf7: PUSH1 0x2b
00001cf9: PUSH1 0x24
00001cfb: DUP3
00001cfc: ADD
00001cfd: MSTORE
00001cfe: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00001d1f: PUSH1 0x44
00001d21: DUP3
00001d22: ADD
00001d23: MSTORE
00001d24: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00001d45: PUSH1 0x64
00001d47: DUP3
00001d48: ADD
00001d49: MSTORE
00001d4a: PUSH1 0x84
00001d4c: ADD
00001d4d: PUSH2 0x06aa
00001d50: JUMP
00001d51: JUMPDEST
00001d52: PUSH2 0x0b50
00001d55: CALLER
00001d56: PUSH2 0x12fb
00001d59: JUMP
00001d5a: JUMPDEST
00001d5b: PUSH1 0x00
00001d5d: DUP2
00001d5e: DUP2
00001d5f: MSTORE
00001d60: PUSH1 0x01
00001d62: DUP4
00001d63: ADD
00001d64: PUSH1 0x20
00001d66: MSTORE
00001d67: PUSH1 0x40
00001d69: DUP2
00001d6a: KECCAK256
00001d6b: SLOAD
00001d6c: ISZERO
00001d6d: ISZERO
00001d6e: PUSH2 0x1766
00001d71: JUMP
00001d72: JUMPDEST
00001d73: PUSH1 0x00
00001d75: PUSH2 0x0b38
00001d78: DUP3
00001d79: SLOAD
00001d7a: SWAP1
00001d7b: JUMP
00001d7c: JUMPDEST
00001d7d: PUSH1 0x00
00001d7f: DUP3
00001d80: PUSH1 0x00
00001d82: ADD
00001d83: DUP3
00001d84: DUP2
00001d85: SLOAD
00001d86: DUP2
00001d87: LT
00001d88: PUSH2 0x1d93
00001d8b: JUMPI
00001d8c: PUSH2 0x1d93
00001d8f: PUSH2 0x2783
00001d92: JUMP
00001d93: JUMPDEST
00001d94: SWAP1
00001d95: PUSH1 0x00
00001d97: MSTORE
00001d98: PUSH1 0x20
00001d9a: PUSH1 0x00
00001d9c: KECCAK256
00001d9d: ADD
00001d9e: SLOAD
00001d9f: SWAP1
00001da0: POP
00001da1: SWAP3
00001da2: SWAP2
00001da3: POP
00001da4: POP
00001da5: JUMP
00001da6: JUMPDEST
00001da7: PUSH1 0x00
00001da9: PUSH2 0x1e08
00001dac: DUP3
00001dad: PUSH1 0x40
00001daf: MLOAD
00001db0: DUP1
00001db1: PUSH1 0x40
00001db3: ADD
00001db4: PUSH1 0x40
00001db6: MSTORE
00001db7: DUP1
00001db8: PUSH1 0x20
00001dba: DUP2
00001dbb: MSTORE
00001dbc: PUSH1 0x20
00001dbe: ADD
00001dbf: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00001de0: DUP2
00001de1: MSTORE
00001de2: POP
00001de3: DUP6
00001de4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001df9: AND
00001dfa: PUSH2 0x1fe4
00001dfd: SWAP1
00001dfe: SWAP3
00001dff: SWAP2
00001e00: SWAP1
00001e01: PUSH4 0xffffffff
00001e06: AND
00001e07: JUMP
00001e08: JUMPDEST
00001e09: SWAP1
00001e0a: POP
00001e0b: DUP1
00001e0c: MLOAD
00001e0d: PUSH1 0x00
00001e0f: EQ
00001e10: DUP1
00001e11: PUSH2 0x1e29
00001e14: JUMPI
00001e15: POP
00001e16: DUP1
00001e17: DUP1
00001e18: PUSH1 0x20
00001e1a: ADD
00001e1b: SWAP1
00001e1c: MLOAD
00001e1d: DUP2
00001e1e: ADD
00001e1f: SWAP1
00001e20: PUSH2 0x1e29
00001e23: SWAP2
00001e24: SWAP1
00001e25: PUSH2 0x29ad
00001e28: JUMP
00001e29: JUMPDEST
00001e2a: PUSH2 0x0c2c
00001e2d: JUMPI
00001e2e: PUSH1 0x40
00001e30: MLOAD
00001e31: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001e52: DUP2
00001e53: MSTORE
00001e54: PUSH1 0x20
00001e56: PUSH1 0x04
00001e58: DUP3
00001e59: ADD
00001e5a: MSTORE
00001e5b: PUSH1 0x2a
00001e5d: PUSH1 0x24
00001e5f: DUP3
00001e60: ADD
00001e61: MSTORE
00001e62: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00001e83: PUSH1 0x44
00001e85: DUP3
00001e86: ADD
00001e87: MSTORE
00001e88: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
00001ea9: PUSH1 0x64
00001eab: DUP3
00001eac: ADD
00001ead: MSTORE
00001eae: PUSH1 0x84
00001eb0: ADD
00001eb1: PUSH2 0x06aa
00001eb4: JUMP
00001eb5: JUMPDEST
00001eb6: PUSH1 0x00
00001eb8: DUP1
00001eb9: PUSH27 0x184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000
00001ed5: DUP4
00001ed6: LT
00001ed7: PUSH2 0x1efe
00001eda: JUMPI
00001edb: PUSH27 0x184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000
00001ef7: DUP4
00001ef8: DIV
00001ef9: SWAP3
00001efa: POP
00001efb: PUSH1 0x40
00001efd: ADD
00001efe: JUMPDEST
00001eff: PUSH14 0x04ee2d6d415b85acef8100000000
00001f0e: DUP4
00001f0f: LT
00001f10: PUSH2 0x1f2a
00001f13: JUMPI
00001f14: PUSH14 0x04ee2d6d415b85acef8100000000
00001f23: DUP4
00001f24: DIV
00001f25: SWAP3
00001f26: POP
00001f27: PUSH1 0x20
00001f29: ADD
00001f2a: JUMPDEST
00001f2b: PUSH7 0x2386f26fc10000
00001f33: DUP4
00001f34: LT
00001f35: PUSH2 0x1f48
00001f38: JUMPI
00001f39: PUSH7 0x2386f26fc10000
00001f41: DUP4
00001f42: DIV
00001f43: SWAP3
00001f44: POP
00001f45: PUSH1 0x10
00001f47: ADD
00001f48: JUMPDEST
00001f49: PUSH4 0x05f5e100
00001f4e: DUP4
00001f4f: LT
00001f50: PUSH2 0x1f60
00001f53: JUMPI
00001f54: PUSH4 0x05f5e100
00001f59: DUP4
00001f5a: DIV
00001f5b: SWAP3
00001f5c: POP
00001f5d: PUSH1 0x08
00001f5f: ADD
00001f60: JUMPDEST
00001f61: PUSH2 0x2710
00001f64: DUP4
00001f65: LT
00001f66: PUSH2 0x1f74
00001f69: JUMPI
00001f6a: PUSH2 0x2710
00001f6d: DUP4
00001f6e: DIV
00001f6f: SWAP3
00001f70: POP
00001f71: PUSH1 0x04
00001f73: ADD
00001f74: JUMPDEST
00001f75: PUSH1 0x64
00001f77: DUP4
00001f78: LT
00001f79: PUSH2 0x1f86
00001f7c: JUMPI
00001f7d: PUSH1 0x64
00001f7f: DUP4
00001f80: DIV
00001f81: SWAP3
00001f82: POP
00001f83: PUSH1 0x02
00001f85: ADD
00001f86: JUMPDEST
00001f87: PUSH1 0x0a
00001f89: DUP4
00001f8a: LT
00001f8b: PUSH2 0x0b38
00001f8e: JUMPI
00001f8f: PUSH1 0x01
00001f91: ADD
00001f92: SWAP3
00001f93: SWAP2
00001f94: POP
00001f95: POP
00001f96: JUMP
00001f97: JUMPDEST
00001f98: PUSH1 0x00
00001f9a: PUSH2 0x1766
00001f9d: DUP4
00001f9e: DUP4
00001f9f: PUSH2 0x1ff3
00001fa2: JUMP
00001fa3: JUMPDEST
00001fa4: PUSH1 0x60
00001fa6: PUSH1 0x01
00001fa8: DUP6
00001fa9: DUP6
00001faa: DUP6
00001fab: DUP6
00001fac: PUSH1 0x40
00001fae: MLOAD
00001faf: PUSH1 0x20
00001fb1: ADD
00001fb2: PUSH2 0x1fbf
00001fb5: SWAP6
00001fb6: SWAP5
00001fb7: SWAP4
00001fb8: SWAP3
00001fb9: SWAP2
00001fba: SWAP1
00001fbb: PUSH2 0x29cf
00001fbe: JUMP
00001fbf: JUMPDEST
00001fc0: PUSH1 0x40
00001fc2: MLOAD
00001fc3: PUSH1 0x20
00001fc5: DUP2
00001fc6: DUP4
00001fc7: SUB
00001fc8: SUB
00001fc9: DUP2
00001fca: MSTORE
00001fcb: SWAP1
00001fcc: PUSH1 0x40
00001fce: MSTORE
00001fcf: SWAP1
00001fd0: POP
00001fd1: SWAP5
00001fd2: SWAP4
00001fd3: POP
00001fd4: POP
00001fd5: POP
00001fd6: POP
00001fd7: JUMP
00001fd8: JUMPDEST
00001fd9: PUSH1 0x00
00001fdb: PUSH2 0x1766
00001fde: DUP4
00001fdf: DUP4
00001fe0: PUSH2 0x20e6
00001fe3: JUMP
00001fe4: JUMPDEST
00001fe5: PUSH1 0x60
00001fe7: PUSH2 0x074d
00001fea: DUP5
00001feb: DUP5
00001fec: PUSH1 0x00
00001fee: DUP6
00001fef: PUSH2 0x2135
00001ff2: JUMP
00001ff3: JUMPDEST
00001ff4: PUSH1 0x00
00001ff6: DUP2
00001ff7: DUP2
00001ff8: MSTORE
00001ff9: PUSH1 0x01
00001ffb: DUP4
00001ffc: ADD
00001ffd: PUSH1 0x20
00001fff: MSTORE
00002000: PUSH1 0x40
00002002: DUP2
00002003: KECCAK256
00002004: SLOAD
00002005: DUP1
00002006: ISZERO
00002007: PUSH2 0x20dc
0000200a: JUMPI
0000200b: PUSH1 0x00
0000200d: PUSH2 0x2017
00002010: PUSH1 0x01
00002012: DUP4
00002013: PUSH2 0x2a54
00002016: JUMP
00002017: JUMPDEST
00002018: DUP6
00002019: SLOAD
0000201a: SWAP1
0000201b: SWAP2
0000201c: POP
0000201d: PUSH1 0x00
0000201f: SWAP1
00002020: PUSH2 0x202b
00002023: SWAP1
00002024: PUSH1 0x01
00002026: SWAP1
00002027: PUSH2 0x2a54
0000202a: JUMP
0000202b: JUMPDEST
0000202c: SWAP1
0000202d: POP
0000202e: DUP2
0000202f: DUP2
00002030: EQ
00002031: PUSH2 0x2090
00002034: JUMPI
00002035: PUSH1 0x00
00002037: DUP7
00002038: PUSH1 0x00
0000203a: ADD
0000203b: DUP3
0000203c: DUP2
0000203d: SLOAD
0000203e: DUP2
0000203f: LT
00002040: PUSH2 0x204b
00002043: JUMPI
00002044: PUSH2 0x204b
00002047: PUSH2 0x2783
0000204a: JUMP
0000204b: JUMPDEST
0000204c: SWAP1
0000204d: PUSH1 0x00
0000204f: MSTORE
00002050: PUSH1 0x20
00002052: PUSH1 0x00
00002054: KECCAK256
00002055: ADD
00002056: SLOAD
00002057: SWAP1
00002058: POP
00002059: DUP1
0000205a: DUP8
0000205b: PUSH1 0x00
0000205d: ADD
0000205e: DUP5
0000205f: DUP2
00002060: SLOAD
00002061: DUP2
00002062: LT
00002063: PUSH2 0x206e
00002066: JUMPI
00002067: PUSH2 0x206e
0000206a: PUSH2 0x2783
0000206d: JUMP
0000206e: JUMPDEST
0000206f: PUSH1 0x00
00002071: SWAP2
00002072: DUP3
00002073: MSTORE
00002074: PUSH1 0x20
00002076: DUP1
00002077: DUP4
00002078: KECCAK256
00002079: SWAP1
0000207a: SWAP2
0000207b: ADD
0000207c: SWAP3
0000207d: SWAP1
0000207e: SWAP3
0000207f: SSTORE
00002080: SWAP2
00002081: DUP3
00002082: MSTORE
00002083: PUSH1 0x01
00002085: DUP9
00002086: ADD
00002087: SWAP1
00002088: MSTORE
00002089: PUSH1 0x40
0000208b: SWAP1
0000208c: KECCAK256
0000208d: DUP4
0000208e: SWAP1
0000208f: SSTORE
00002090: JUMPDEST
00002091: DUP6
00002092: SLOAD
00002093: DUP7
00002094: SWAP1
00002095: DUP1
00002096: PUSH2 0x20a1
00002099: JUMPI
0000209a: PUSH2 0x20a1
0000209d: PUSH2 0x2a67
000020a0: JUMP
000020a1: JUMPDEST
000020a2: PUSH1 0x01
000020a4: SWAP1
000020a5: SUB
000020a6: DUP2
000020a7: DUP2
000020a8: SWAP1
000020a9: PUSH1 0x00
000020ab: MSTORE
000020ac: PUSH1 0x20
000020ae: PUSH1 0x00
000020b0: KECCAK256
000020b1: ADD
000020b2: PUSH1 0x00
000020b4: SWAP1
000020b5: SSTORE
000020b6: SWAP1
000020b7: SSTORE
000020b8: DUP6
000020b9: PUSH1 0x01
000020bb: ADD
000020bc: PUSH1 0x00
000020be: DUP7
000020bf: DUP2
000020c0: MSTORE
000020c1: PUSH1 0x20
000020c3: ADD
000020c4: SWAP1
000020c5: DUP2
000020c6: MSTORE
000020c7: PUSH1 0x20
000020c9: ADD
000020ca: PUSH1 0x00
000020cc: KECCAK256
000020cd: PUSH1 0x00
000020cf: SWAP1
000020d0: SSTORE
000020d1: PUSH1 0x01
000020d3: SWAP4
000020d4: POP
000020d5: POP
000020d6: POP
000020d7: POP
000020d8: PUSH2 0x0b38
000020db: JUMP
000020dc: JUMPDEST
000020dd: PUSH1 0x00
000020df: SWAP2
000020e0: POP
000020e1: POP
000020e2: PUSH2 0x0b38
000020e5: JUMP
000020e6: JUMPDEST
000020e7: PUSH1 0x00
000020e9: DUP2
000020ea: DUP2
000020eb: MSTORE
000020ec: PUSH1 0x01
000020ee: DUP4
000020ef: ADD
000020f0: PUSH1 0x20
000020f2: MSTORE
000020f3: PUSH1 0x40
000020f5: DUP2
000020f6: KECCAK256
000020f7: SLOAD
000020f8: PUSH2 0x212d
000020fb: JUMPI
000020fc: POP
000020fd: DUP2
000020fe: SLOAD
000020ff: PUSH1 0x01
00002101: DUP2
00002102: DUP2
00002103: ADD
00002104: DUP5
00002105: SSTORE
00002106: PUSH1 0x00
00002108: DUP5
00002109: DUP2
0000210a: MSTORE
0000210b: PUSH1 0x20
0000210d: DUP1
0000210e: DUP3
0000210f: KECCAK256
00002110: SWAP1
00002111: SWAP4
00002112: ADD
00002113: DUP5
00002114: SWAP1
00002115: SSTORE
00002116: DUP5
00002117: SLOAD
00002118: DUP5
00002119: DUP3
0000211a: MSTORE
0000211b: DUP3
0000211c: DUP7
0000211d: ADD
0000211e: SWAP1
0000211f: SWAP4
00002120: MSTORE
00002121: PUSH1 0x40
00002123: SWAP1
00002124: KECCAK256
00002125: SWAP2
00002126: SWAP1
00002127: SWAP2
00002128: SSTORE
00002129: PUSH2 0x0b38
0000212c: JUMP
0000212d: JUMPDEST
0000212e: POP
0000212f: PUSH1 0x00
00002131: PUSH2 0x0b38
00002134: JUMP
00002135: JUMPDEST
00002136: PUSH1 0x60
00002138: DUP3
00002139: SELFBALANCE
0000213a: LT
0000213b: ISZERO
0000213c: PUSH2 0x21c7
0000213f: JUMPI
00002140: PUSH1 0x40
00002142: MLOAD
00002143: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002164: DUP2
00002165: MSTORE
00002166: PUSH1 0x20
00002168: PUSH1 0x04
0000216a: DUP3
0000216b: ADD
0000216c: MSTORE
0000216d: PUSH1 0x26
0000216f: PUSH1 0x24
00002171: DUP3
00002172: ADD
00002173: MSTORE
00002174: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
00002195: PUSH1 0x44
00002197: DUP3
00002198: ADD
00002199: MSTORE
0000219a: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000
000021bb: PUSH1 0x64
000021bd: DUP3
000021be: ADD
000021bf: MSTORE
000021c0: PUSH1 0x84
000021c2: ADD
000021c3: PUSH2 0x06aa
000021c6: JUMP
000021c7: JUMPDEST
000021c8: PUSH1 0x00
000021ca: DUP1
000021cb: DUP7
000021cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021e1: AND
000021e2: DUP6
000021e3: DUP8
000021e4: PUSH1 0x40
000021e6: MLOAD
000021e7: PUSH2 0x21f0
000021ea: SWAP2
000021eb: SWAP1
000021ec: PUSH2 0x2a96
000021ef: JUMP
000021f0: JUMPDEST
000021f1: PUSH1 0x00
000021f3: PUSH1 0x40
000021f5: MLOAD
000021f6: DUP1
000021f7: DUP4
000021f8: SUB
000021f9: DUP2
000021fa: DUP6
000021fb: DUP8
000021fc: GAS
000021fd: CALL
000021fe: SWAP3
000021ff: POP
00002200: POP
00002201: POP
00002202: RETURNDATASIZE
00002203: DUP1
00002204: PUSH1 0x00
00002206: DUP2
00002207: EQ
00002208: PUSH2 0x222d
0000220b: JUMPI
0000220c: PUSH1 0x40
0000220e: MLOAD
0000220f: SWAP2
00002210: POP
00002211: PUSH1 0x1f
00002213: NOT
00002214: PUSH1 0x3f
00002216: RETURNDATASIZE
00002217: ADD
00002218: AND
00002219: DUP3
0000221a: ADD
0000221b: PUSH1 0x40
0000221d: MSTORE
0000221e: RETURNDATASIZE
0000221f: DUP3
00002220: MSTORE
00002221: RETURNDATASIZE
00002222: PUSH1 0x00
00002224: PUSH1 0x20
00002226: DUP5
00002227: ADD
00002228: RETURNDATACOPY
00002229: PUSH2 0x2232
0000222c: JUMP
0000222d: JUMPDEST
0000222e: PUSH1 0x60
00002230: SWAP2
00002231: POP
00002232: JUMPDEST
00002233: POP
00002234: SWAP2
00002235: POP
00002236: SWAP2
00002237: POP
00002238: PUSH2 0x0904
0000223b: DUP8
0000223c: DUP4
0000223d: DUP4
0000223e: DUP8
0000223f: PUSH1 0x60
00002241: DUP4
00002242: ISZERO
00002243: PUSH2 0x22d4
00002246: JUMPI
00002247: DUP3
00002248: MLOAD
00002249: PUSH1 0x00
0000224b: SUB
0000224c: PUSH2 0x22cd
0000224f: JUMPI
00002250: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002265: DUP6
00002266: AND
00002267: EXTCODESIZE
00002268: PUSH2 0x22cd
0000226b: JUMPI
0000226c: PUSH1 0x40
0000226e: MLOAD
0000226f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002290: DUP2
00002291: MSTORE
00002292: PUSH1 0x20
00002294: PUSH1 0x04
00002296: DUP3
00002297: ADD
00002298: MSTORE
00002299: PUSH1 0x1d
0000229b: PUSH1 0x24
0000229d: DUP3
0000229e: ADD
0000229f: MSTORE
000022a0: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
000022c1: PUSH1 0x44
000022c3: DUP3
000022c4: ADD
000022c5: MSTORE
000022c6: PUSH1 0x64
000022c8: ADD
000022c9: PUSH2 0x06aa
000022cc: JUMP
000022cd: JUMPDEST
000022ce: POP
000022cf: DUP2
000022d0: PUSH2 0x074d
000022d3: JUMP
000022d4: JUMPDEST
000022d5: PUSH2 0x074d
000022d8: DUP4
000022d9: DUP4
000022da: DUP2
000022db: MLOAD
000022dc: ISZERO
000022dd: PUSH2 0x22e9
000022e0: JUMPI
000022e1: DUP2
000022e2: MLOAD
000022e3: DUP1
000022e4: DUP4
000022e5: PUSH1 0x20
000022e7: ADD
000022e8: REVERT
000022e9: JUMPDEST
000022ea: DUP1
000022eb: PUSH1 0x40
000022ed: MLOAD
000022ee: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000230f: DUP2
00002310: MSTORE
00002311: PUSH1 0x04
00002313: ADD
00002314: PUSH2 0x06aa
00002317: SWAP2
00002318: SWAP1
00002319: PUSH2 0x263f
0000231c: JUMP
0000231d: JUMPDEST
0000231e: DUP1
0000231f: CALLDATALOAD
00002320: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002335: DUP2
00002336: AND
00002337: DUP2
00002338: EQ
00002339: PUSH2 0x2341
0000233c: JUMPI
0000233d: PUSH1 0x00
0000233f: DUP1
00002340: REVERT
00002341: JUMPDEST
00002342: SWAP2
00002343: SWAP1
00002344: POP
00002345: JUMP
00002346: JUMPDEST
00002347: PUSH1 0x00
00002349: PUSH1 0x20
0000234b: DUP3
0000234c: DUP5
0000234d: SUB
0000234e: SLT
0000234f: ISZERO
00002350: PUSH2 0x2358
00002353: JUMPI
00002354: PUSH1 0x00
00002356: DUP1
00002357: REVERT
00002358: JUMPDEST
00002359: PUSH2 0x1766
0000235c: DUP3
0000235d: PUSH2 0x231d
00002360: JUMP
00002361: JUMPDEST
00002362: DUP1
00002363: CALLDATALOAD
00002364: PUSH4 0xffffffff
00002369: DUP2
0000236a: AND
0000236b: DUP2
0000236c: EQ
0000236d: PUSH2 0x2341
00002370: JUMPI
00002371: PUSH1 0x00
00002373: DUP1
00002374: REVERT
00002375: JUMPDEST
00002376: PUSH1 0x00
00002378: PUSH1 0x20
0000237a: DUP3
0000237b: DUP5
0000237c: SUB
0000237d: SLT
0000237e: ISZERO
0000237f: PUSH2 0x2387
00002382: JUMPI
00002383: PUSH1 0x00
00002385: DUP1
00002386: REVERT
00002387: JUMPDEST
00002388: PUSH2 0x1766
0000238b: DUP3
0000238c: PUSH2 0x2361
0000238f: JUMP
00002390: JUMPDEST
00002391: PUSH1 0x20
00002393: DUP1
00002394: DUP3
00002395: MSTORE
00002396: DUP3
00002397: MLOAD
00002398: DUP3
00002399: DUP3
0000239a: ADD
0000239b: DUP2
0000239c: SWAP1
0000239d: MSTORE
0000239e: PUSH1 0x00
000023a0: SWAP2
000023a1: SWAP1
000023a2: DUP5
000023a3: DUP3
000023a4: ADD
000023a5: SWAP1
000023a6: PUSH1 0x40
000023a8: DUP6
000023a9: ADD
000023aa: SWAP1
000023ab: DUP5
000023ac: JUMPDEST
000023ad: DUP2
000023ae: DUP2
000023af: LT
000023b0: ISZERO
000023b1: PUSH2 0x23ce
000023b4: JUMPI
000023b5: DUP4
000023b6: MLOAD
000023b7: PUSH4 0xffffffff
000023bc: AND
000023bd: DUP4
000023be: MSTORE
000023bf: SWAP3
000023c0: DUP5
000023c1: ADD
000023c2: SWAP3
000023c3: SWAP2
000023c4: DUP5
000023c5: ADD
000023c6: SWAP2
000023c7: PUSH1 0x01
000023c9: ADD
000023ca: PUSH2 0x23ac
000023cd: JUMP
000023ce: JUMPDEST
000023cf: POP
000023d0: SWAP1
000023d1: SWAP7
000023d2: SWAP6
000023d3: POP
000023d4: POP
000023d5: POP
000023d6: POP
000023d7: POP
000023d8: POP
000023d9: JUMP
000023da: JUMPDEST
000023db: PUSH1 0x00
000023dd: DUP1
000023de: PUSH1 0x40
000023e0: DUP4
000023e1: DUP6
000023e2: SUB
000023e3: SLT
000023e4: ISZERO
000023e5: PUSH2 0x23ed
000023e8: JUMPI
000023e9: PUSH1 0x00
000023eb: DUP1
000023ec: REVERT
000023ed: JUMPDEST
000023ee: PUSH2 0x23f6
000023f1: DUP4
000023f2: PUSH2 0x2361
000023f5: JUMP
000023f6: JUMPDEST
000023f7: SWAP5
000023f8: PUSH1 0x20
000023fa: SWAP4
000023fb: SWAP1
000023fc: SWAP4
000023fd: ADD
000023fe: CALLDATALOAD
000023ff: SWAP4
00002400: POP
00002401: POP
00002402: POP
00002403: JUMP
00002404: JUMPDEST
00002405: PUSH1 0x00
00002407: DUP1
00002408: DUP4
00002409: PUSH1 0x1f
0000240b: DUP5
0000240c: ADD
0000240d: SLT
0000240e: PUSH2 0x2416
00002411: JUMPI
00002412: PUSH1 0x00
00002414: DUP1
00002415: REVERT
00002416: JUMPDEST
00002417: POP
00002418: DUP2
00002419: CALLDATALOAD
0000241a: PUSH8 0xffffffffffffffff
00002423: DUP2
00002424: GT
00002425: ISZERO
00002426: PUSH2 0x242e
00002429: JUMPI
0000242a: PUSH1 0x00
0000242c: DUP1
0000242d: REVERT
0000242e: JUMPDEST
0000242f: PUSH1 0x20
00002431: DUP4
00002432: ADD
00002433: SWAP2
00002434: POP
00002435: DUP4
00002436: PUSH1 0x20
00002438: DUP3
00002439: DUP6
0000243a: ADD
0000243b: ADD
0000243c: GT
0000243d: ISZERO
0000243e: PUSH2 0x1075
00002441: JUMPI
00002442: PUSH1 0x00
00002444: DUP1
00002445: REVERT
00002446: JUMPDEST
00002447: PUSH1 0x00
00002449: DUP1
0000244a: PUSH1 0x00
0000244c: DUP1
0000244d: PUSH1 0x00
0000244f: DUP1
00002450: PUSH1 0xa0
00002452: DUP8
00002453: DUP10
00002454: SUB
00002455: SLT
00002456: ISZERO
00002457: PUSH2 0x245f
0000245a: JUMPI
0000245b: PUSH1 0x00
0000245d: DUP1
0000245e: REVERT
0000245f: JUMPDEST
00002460: PUSH2 0x2468
00002463: DUP8
00002464: PUSH2 0x2361
00002467: JUMP
00002468: JUMPDEST
00002469: SWAP6
0000246a: POP
0000246b: PUSH1 0x20
0000246d: DUP8
0000246e: ADD
0000246f: CALLDATALOAD
00002470: SWAP5
00002471: POP
00002472: PUSH1 0x40
00002474: DUP8
00002475: ADD
00002476: CALLDATALOAD
00002477: SWAP4
00002478: POP
00002479: PUSH1 0x60
0000247b: DUP8
0000247c: ADD
0000247d: CALLDATALOAD
0000247e: PUSH8 0xffffffffffffffff
00002487: DUP2
00002488: GT
00002489: ISZERO
0000248a: PUSH2 0x2492
0000248d: JUMPI
0000248e: PUSH1 0x00
00002490: DUP1
00002491: REVERT
00002492: JUMPDEST
00002493: PUSH2 0x249e
00002496: DUP10
00002497: DUP3
00002498: DUP11
00002499: ADD
0000249a: PUSH2 0x2404
0000249d: JUMP
0000249e: JUMPDEST
0000249f: SWAP1
000024a0: SWAP5
000024a1: POP
000024a2: SWAP3
000024a3: POP
000024a4: PUSH2 0x24b1
000024a7: SWAP1
000024a8: POP
000024a9: PUSH1 0x80
000024ab: DUP9
000024ac: ADD
000024ad: PUSH2 0x231d
000024b0: JUMP
000024b1: JUMPDEST
000024b2: SWAP1
000024b3: POP
000024b4: SWAP3
000024b5: SWAP6
000024b6: POP
000024b7: SWAP3
000024b8: SWAP6
000024b9: POP
000024ba: SWAP3
000024bb: SWAP6
000024bc: JUMP
000024bd: JUMPDEST
000024be: PUSH1 0x00
000024c0: DUP1
000024c1: PUSH1 0x00
000024c3: DUP1
000024c4: PUSH1 0x60
000024c6: DUP6
000024c7: DUP8
000024c8: SUB
000024c9: SLT
000024ca: ISZERO
000024cb: PUSH2 0x24d3
000024ce: JUMPI
000024cf: PUSH1 0x00
000024d1: DUP1
000024d2: REVERT
000024d3: JUMPDEST
000024d4: PUSH2 0x24dc
000024d7: DUP6
000024d8: PUSH2 0x2361
000024db: JUMP
000024dc: JUMPDEST
000024dd: SWAP4
000024de: POP
000024df: PUSH1 0x20
000024e1: DUP6
000024e2: ADD
000024e3: CALLDATALOAD
000024e4: SWAP3
000024e5: POP
000024e6: PUSH1 0x40
000024e8: DUP6
000024e9: ADD
000024ea: CALLDATALOAD
000024eb: PUSH8 0xffffffffffffffff
000024f4: DUP2
000024f5: GT
000024f6: ISZERO
000024f7: PUSH2 0x24ff
000024fa: JUMPI
000024fb: PUSH1 0x00
000024fd: DUP1
000024fe: REVERT
000024ff: JUMPDEST
00002500: PUSH2 0x250b
00002503: DUP8
00002504: DUP3
00002505: DUP9
00002506: ADD
00002507: PUSH2 0x2404
0000250a: JUMP
0000250b: JUMPDEST
0000250c: SWAP6
0000250d: SWAP9
0000250e: SWAP5
0000250f: SWAP8
00002510: POP
00002511: SWAP6
00002512: POP
00002513: POP
00002514: POP
00002515: POP
00002516: JUMP
00002517: JUMPDEST
00002518: PUSH1 0x00
0000251a: DUP1
0000251b: DUP4
0000251c: PUSH1 0x1f
0000251e: DUP5
0000251f: ADD
00002520: SLT
00002521: PUSH2 0x2529
00002524: JUMPI
00002525: PUSH1 0x00
00002527: DUP1
00002528: REVERT
00002529: JUMPDEST
0000252a: POP
0000252b: DUP2
0000252c: CALLDATALOAD
0000252d: PUSH8 0xffffffffffffffff
00002536: DUP2
00002537: GT
00002538: ISZERO
00002539: PUSH2 0x2541
0000253c: JUMPI
0000253d: PUSH1 0x00
0000253f: DUP1
00002540: REVERT
00002541: JUMPDEST
00002542: PUSH1 0x20
00002544: DUP4
00002545: ADD
00002546: SWAP2
00002547: POP
00002548: DUP4
00002549: PUSH1 0x20
0000254b: DUP3
0000254c: PUSH1 0x05
0000254e: SHL
0000254f: DUP6
00002550: ADD
00002551: ADD
00002552: GT
00002553: ISZERO
00002554: PUSH2 0x1075
00002557: JUMPI
00002558: PUSH1 0x00
0000255a: DUP1
0000255b: REVERT
0000255c: JUMPDEST
0000255d: PUSH1 0x00
0000255f: DUP1
00002560: PUSH1 0x20
00002562: DUP4
00002563: DUP6
00002564: SUB
00002565: SLT
00002566: ISZERO
00002567: PUSH2 0x256f
0000256a: JUMPI
0000256b: PUSH1 0x00
0000256d: DUP1
0000256e: REVERT
0000256f: JUMPDEST
00002570: DUP3
00002571: CALLDATALOAD
00002572: PUSH8 0xffffffffffffffff
0000257b: DUP2
0000257c: GT
0000257d: ISZERO
0000257e: PUSH2 0x2586
00002581: JUMPI
00002582: PUSH1 0x00
00002584: DUP1
00002585: REVERT
00002586: JUMPDEST
00002587: PUSH2 0x2592
0000258a: DUP6
0000258b: DUP3
0000258c: DUP7
0000258d: ADD
0000258e: PUSH2 0x2517
00002591: JUMP
00002592: JUMPDEST
00002593: SWAP1
00002594: SWAP7
00002595: SWAP1
00002596: SWAP6
00002597: POP
00002598: SWAP4
00002599: POP
0000259a: POP
0000259b: POP
0000259c: POP
0000259d: JUMP
0000259e: JUMPDEST
0000259f: PUSH1 0x00
000025a1: DUP1
000025a2: PUSH1 0x00
000025a4: PUSH1 0x60
000025a6: DUP5
000025a7: DUP7
000025a8: SUB
000025a9: SLT
000025aa: ISZERO
000025ab: PUSH2 0x25b3
000025ae: JUMPI
000025af: PUSH1 0x00
000025b1: DUP1
000025b2: REVERT
000025b3: JUMPDEST
000025b4: PUSH2 0x25bc
000025b7: DUP5
000025b8: PUSH2 0x2361
000025bb: JUMP
000025bc: JUMPDEST
000025bd: SWAP6
000025be: PUSH1 0x20
000025c0: DUP6
000025c1: ADD
000025c2: CALLDATALOAD
000025c3: SWAP6
000025c4: POP
000025c5: PUSH1 0x40
000025c7: SWAP1
000025c8: SWAP5
000025c9: ADD
000025ca: CALLDATALOAD
000025cb: SWAP4
000025cc: SWAP3
000025cd: POP
000025ce: POP
000025cf: POP
000025d0: JUMP
000025d1: JUMPDEST
000025d2: PUSH1 0x00
000025d4: JUMPDEST
000025d5: DUP4
000025d6: DUP2
000025d7: LT
000025d8: ISZERO
000025d9: PUSH2 0x25ec
000025dc: JUMPI
000025dd: DUP2
000025de: DUP2
000025df: ADD
000025e0: MLOAD
000025e1: DUP4
000025e2: DUP3
000025e3: ADD
000025e4: MSTORE
000025e5: PUSH1 0x20
000025e7: ADD
000025e8: PUSH2 0x25d4
000025eb: JUMP
000025ec: JUMPDEST
000025ed: POP
000025ee: POP
000025ef: PUSH1 0x00
000025f1: SWAP2
000025f2: ADD
000025f3: MSTORE
000025f4: JUMP
000025f5: JUMPDEST
000025f6: PUSH1 0x00
000025f8: DUP2
000025f9: MLOAD
000025fa: DUP1
000025fb: DUP5
000025fc: MSTORE
000025fd: PUSH2 0x260d
00002600: DUP2
00002601: PUSH1 0x20
00002603: DUP7
00002604: ADD
00002605: PUSH1 0x20
00002607: DUP7
00002608: ADD
00002609: PUSH2 0x25d1
0000260c: JUMP
0000260d: JUMPDEST
0000260e: PUSH1 0x1f
00002610: ADD
00002611: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00002632: AND
00002633: SWAP3
00002634: SWAP1
00002635: SWAP3
00002636: ADD
00002637: PUSH1 0x20
00002639: ADD
0000263a: SWAP3
0000263b: SWAP2
0000263c: POP
0000263d: POP
0000263e: JUMP
0000263f: JUMPDEST
00002640: PUSH1 0x20
00002642: DUP2
00002643: MSTORE
00002644: PUSH1 0x00
00002646: PUSH2 0x1766
00002649: PUSH1 0x20
0000264b: DUP4
0000264c: ADD
0000264d: DUP5
0000264e: PUSH2 0x25f5
00002651: JUMP
00002652: JUMPDEST
00002653: PUSH1 0x00
00002655: DUP1
00002656: PUSH1 0x20
00002658: DUP4
00002659: DUP6
0000265a: SUB
0000265b: SLT
0000265c: ISZERO
0000265d: PUSH2 0x2665
00002660: JUMPI
00002661: PUSH1 0x00
00002663: DUP1
00002664: REVERT
00002665: JUMPDEST
00002666: DUP3
00002667: CALLDATALOAD
00002668: PUSH8 0xffffffffffffffff
00002671: DUP1
00002672: DUP3
00002673: GT
00002674: ISZERO
00002675: PUSH2 0x267d
00002678: JUMPI
00002679: PUSH1 0x00
0000267b: DUP1
0000267c: REVERT
0000267d: JUMPDEST
0000267e: DUP2
0000267f: DUP6
00002680: ADD
00002681: SWAP2
00002682: POP
00002683: DUP6
00002684: PUSH1 0x1f
00002686: DUP4
00002687: ADD
00002688: SLT
00002689: PUSH2 0x2691
0000268c: JUMPI
0000268d: PUSH1 0x00
0000268f: DUP1
00002690: REVERT
00002691: JUMPDEST
00002692: DUP2
00002693: CALLDATALOAD
00002694: DUP2
00002695: DUP2
00002696: GT
00002697: ISZERO
00002698: PUSH2 0x26a0
0000269b: JUMPI
0000269c: PUSH1 0x00
0000269e: DUP1
0000269f: REVERT
000026a0: JUMPDEST
000026a1: DUP7
000026a2: PUSH1 0x20
000026a4: DUP3
000026a5: PUSH1 0x06
000026a7: SHL
000026a8: DUP6
000026a9: ADD
000026aa: ADD
000026ab: GT
000026ac: ISZERO
000026ad: PUSH2 0x26b5
000026b0: JUMPI
000026b1: PUSH1 0x00
000026b3: DUP1
000026b4: REVERT
000026b5: JUMPDEST
000026b6: PUSH1 0x20
000026b8: SWAP3
000026b9: SWAP1
000026ba: SWAP3
000026bb: ADD
000026bc: SWAP7
000026bd: SWAP2
000026be: SWAP6
000026bf: POP
000026c0: SWAP1
000026c1: SWAP4
000026c2: POP
000026c3: POP
000026c4: POP
000026c5: POP
000026c6: JUMP
000026c7: JUMPDEST
000026c8: PUSH1 0x00
000026ca: DUP1
000026cb: PUSH1 0x00
000026cd: PUSH1 0x60
000026cf: DUP5
000026d0: DUP7
000026d1: SUB
000026d2: SLT
000026d3: ISZERO
000026d4: PUSH2 0x26dc
000026d7: JUMPI
000026d8: PUSH1 0x00
000026da: DUP1
000026db: REVERT
000026dc: JUMPDEST
000026dd: PUSH2 0x26e5
000026e0: DUP5
000026e1: PUSH2 0x231d
000026e4: JUMP
000026e5: JUMPDEST
000026e6: SWAP3
000026e7: POP
000026e8: PUSH2 0x26f3
000026eb: PUSH1 0x20
000026ed: DUP6
000026ee: ADD
000026ef: PUSH2 0x231d
000026f2: JUMP
000026f3: JUMPDEST
000026f4: SWAP2
000026f5: POP
000026f6: PUSH2 0x2701
000026f9: PUSH1 0x40
000026fb: DUP6
000026fc: ADD
000026fd: PUSH2 0x231d
00002700: JUMP
00002701: JUMPDEST
00002702: SWAP1
00002703: POP
00002704: SWAP3
00002705: POP
00002706: SWAP3
00002707: POP
00002708: SWAP3
00002709: JUMP
0000270a: JUMPDEST
0000270b: PUSH1 0x00
0000270d: DUP1
0000270e: PUSH1 0x00
00002710: DUP1
00002711: PUSH1 0x40
00002713: DUP6
00002714: DUP8
00002715: SUB
00002716: SLT
00002717: ISZERO
00002718: PUSH2 0x2720
0000271b: JUMPI
0000271c: PUSH1 0x00
0000271e: DUP1
0000271f: REVERT
00002720: JUMPDEST
00002721: DUP5
00002722: CALLDATALOAD
00002723: PUSH8 0xffffffffffffffff
0000272c: DUP1
0000272d: DUP3
0000272e: GT
0000272f: ISZERO
00002730: PUSH2 0x2738
00002733: JUMPI
00002734: PUSH1 0x00
00002736: DUP1
00002737: REVERT
00002738: JUMPDEST
00002739: PUSH2 0x2744
0000273c: DUP9
0000273d: DUP4
0000273e: DUP10
0000273f: ADD
00002740: PUSH2 0x2517
00002743: JUMP
00002744: JUMPDEST
00002745: SWAP1
00002746: SWAP7
00002747: POP
00002748: SWAP5
00002749: POP
0000274a: PUSH1 0x20
0000274c: DUP8
0000274d: ADD
0000274e: CALLDATALOAD
0000274f: SWAP2
00002750: POP
00002751: DUP1
00002752: DUP3
00002753: GT
00002754: ISZERO
00002755: PUSH2 0x275d
00002758: JUMPI
00002759: PUSH1 0x00
0000275b: DUP1
0000275c: REVERT
0000275d: JUMPDEST
0000275e: POP
0000275f: PUSH2 0x250b
00002762: DUP8
00002763: DUP3
00002764: DUP9
00002765: ADD
00002766: PUSH2 0x2517
00002769: JUMP
0000276a: JUMPDEST
0000276b: PUSH1 0x00
0000276d: PUSH1 0x20
0000276f: DUP3
00002770: DUP5
00002771: SUB
00002772: SLT
00002773: ISZERO
00002774: PUSH2 0x277c
00002777: JUMPI
00002778: PUSH1 0x00
0000277a: DUP1
0000277b: REVERT
0000277c: JUMPDEST
0000277d: POP
0000277e: MLOAD
0000277f: SWAP2
00002780: SWAP1
00002781: POP
00002782: JUMP
00002783: JUMPDEST
00002784: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000027a5: PUSH1 0x00
000027a7: MSTORE
000027a8: PUSH1 0x32
000027aa: PUSH1 0x04
000027ac: MSTORE
000027ad: PUSH1 0x24
000027af: PUSH1 0x00
000027b1: REVERT
000027b2: JUMPDEST
000027b3: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000027d4: PUSH1 0x00
000027d6: MSTORE
000027d7: PUSH1 0x11
000027d9: PUSH1 0x04
000027db: MSTORE
000027dc: PUSH1 0x24
000027de: PUSH1 0x00
000027e0: REVERT
000027e1: JUMPDEST
000027e2: DUP1
000027e3: DUP3
000027e4: ADD
000027e5: DUP1
000027e6: DUP3
000027e7: GT
000027e8: ISZERO
000027e9: PUSH2 0x0b38
000027ec: JUMPI
000027ed: PUSH2 0x0b38
000027f0: PUSH2 0x27b2
000027f3: JUMP
000027f4: JUMPDEST
000027f5: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002816: PUSH1 0x00
00002818: MSTORE
00002819: PUSH1 0x41
0000281b: PUSH1 0x04
0000281d: MSTORE
0000281e: PUSH1 0x24
00002820: PUSH1 0x00
00002822: REVERT
00002823: JUMPDEST
00002824: DUP4
00002825: DUP2
00002826: MSTORE
00002827: DUP3
00002828: PUSH1 0x20
0000282a: DUP3
0000282b: ADD
0000282c: MSTORE
0000282d: PUSH1 0x00
0000282f: DUP3
00002830: MLOAD
00002831: PUSH2 0x2841
00002834: DUP2
00002835: PUSH1 0x40
00002837: DUP6
00002838: ADD
00002839: PUSH1 0x20
0000283b: DUP8
0000283c: ADD
0000283d: PUSH2 0x25d1
00002840: JUMP
00002841: JUMPDEST
00002842: SWAP2
00002843: SWAP1
00002844: SWAP2
00002845: ADD
00002846: PUSH1 0x40
00002848: ADD
00002849: SWAP5
0000284a: SWAP4
0000284b: POP
0000284c: POP
0000284d: POP
0000284e: POP
0000284f: JUMP
00002850: JUMPDEST
00002851: DUP1
00002852: DUP3
00002853: MUL
00002854: DUP2
00002855: ISZERO
00002856: DUP3
00002857: DUP3
00002858: DIV
00002859: DUP5
0000285a: EQ
0000285b: OR
0000285c: PUSH2 0x0b38
0000285f: JUMPI
00002860: PUSH2 0x0b38
00002863: PUSH2 0x27b2
00002866: JUMP
00002867: JUMPDEST
00002868: PUSH4 0xffffffff
0000286d: DUP7
0000286e: AND
0000286f: DUP2
00002870: MSTORE
00002871: DUP5
00002872: PUSH1 0x20
00002874: DUP3
00002875: ADD
00002876: MSTORE
00002877: PUSH1 0xa0
00002879: PUSH1 0x40
0000287b: DUP3
0000287c: ADD
0000287d: MSTORE
0000287e: PUSH1 0x00
00002880: PUSH2 0x288c
00002883: PUSH1 0xa0
00002885: DUP4
00002886: ADD
00002887: DUP7
00002888: PUSH2 0x25f5
0000288b: JUMP
0000288c: JUMPDEST
0000288d: DUP3
0000288e: DUP2
0000288f: SUB
00002890: PUSH1 0x60
00002892: DUP5
00002893: ADD
00002894: MSTORE
00002895: PUSH2 0x289e
00002898: DUP2
00002899: DUP7
0000289a: PUSH2 0x25f5
0000289d: JUMP
0000289e: JUMPDEST
0000289f: SWAP2
000028a0: POP
000028a1: POP
000028a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028b7: DUP4
000028b8: AND
000028b9: PUSH1 0x80
000028bb: DUP4
000028bc: ADD
000028bd: MSTORE
000028be: SWAP7
000028bf: SWAP6
000028c0: POP
000028c1: POP
000028c2: POP
000028c3: POP
000028c4: POP
000028c5: POP
000028c6: JUMP
000028c7: JUMPDEST
000028c8: PUSH32 0x4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a2000
000028e9: DUP2
000028ea: MSTORE
000028eb: PUSH1 0x00
000028ed: DUP3
000028ee: MLOAD
000028ef: PUSH2 0x28ff
000028f2: DUP2
000028f3: PUSH1 0x1f
000028f5: DUP6
000028f6: ADD
000028f7: PUSH1 0x20
000028f9: DUP8
000028fa: ADD
000028fb: PUSH2 0x25d1
000028fe: JUMP
000028ff: JUMPDEST
00002900: SWAP2
00002901: SWAP1
00002902: SWAP2
00002903: ADD
00002904: PUSH1 0x1f
00002906: ADD
00002907: SWAP3
00002908: SWAP2
00002909: POP
0000290a: POP
0000290b: JUMP
0000290c: JUMPDEST
0000290d: PUSH1 0x00
0000290f: DUP1
00002910: DUP6
00002911: DUP6
00002912: GT
00002913: ISZERO
00002914: PUSH2 0x291c
00002917: JUMPI
00002918: PUSH1 0x00
0000291a: DUP1
0000291b: REVERT
0000291c: JUMPDEST
0000291d: DUP4
0000291e: DUP7
0000291f: GT
00002920: ISZERO
00002921: PUSH2 0x2929
00002924: JUMPI
00002925: PUSH1 0x00
00002927: DUP1
00002928: REVERT
00002929: JUMPDEST
0000292a: POP
0000292b: POP
0000292c: DUP3
0000292d: ADD
0000292e: SWAP4
0000292f: SWAP2
00002930: SWAP1
00002931: SWAP3
00002932: SUB
00002933: SWAP2
00002934: POP
00002935: JUMP
00002936: JUMPDEST
00002937: DUP1
00002938: CALLDATALOAD
00002939: PUSH1 0x20
0000293b: DUP4
0000293c: LT
0000293d: ISZERO
0000293e: PUSH2 0x0b38
00002941: JUMPI
00002942: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002963: PUSH1 0x20
00002965: DUP5
00002966: SWAP1
00002967: SUB
00002968: PUSH1 0x03
0000296a: SHL
0000296b: SHL
0000296c: AND
0000296d: SWAP3
0000296e: SWAP2
0000296f: POP
00002970: POP
00002971: JUMP
00002972: JUMPDEST
00002973: PUSH1 0x00
00002975: DUP3
00002976: PUSH2 0x29a8
00002979: JUMPI
0000297a: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000299b: PUSH1 0x00
0000299d: MSTORE
0000299e: PUSH1 0x12
000029a0: PUSH1 0x04
000029a2: MSTORE
000029a3: PUSH1 0x24
000029a5: PUSH1 0x00
000029a7: REVERT
000029a8: JUMPDEST
000029a9: POP
000029aa: DIV
000029ab: SWAP1
000029ac: JUMP
000029ad: JUMPDEST
000029ae: PUSH1 0x00
000029b0: PUSH1 0x20
000029b2: DUP3
000029b3: DUP5
000029b4: SUB
000029b5: SLT
000029b6: ISZERO
000029b7: PUSH2 0x29bf
000029ba: JUMPI
000029bb: PUSH1 0x00
000029bd: DUP1
000029be: REVERT
000029bf: JUMPDEST
000029c0: DUP2
000029c1: MLOAD
000029c2: DUP1
000029c3: ISZERO
000029c4: ISZERO
000029c5: DUP2
000029c6: EQ
000029c7: PUSH2 0x1766
000029ca: JUMPI
000029cb: PUSH1 0x00
000029cd: DUP1
000029ce: REVERT
000029cf: JUMPDEST
000029d0: PUSH32 0xffff000000000000000000000000000000000000000000000000000000000000
000029f1: DUP7
000029f2: PUSH1 0xf0
000029f4: SHL
000029f5: AND
000029f6: DUP2
000029f7: MSTORE
000029f8: DUP5
000029f9: PUSH1 0x02
000029fb: DUP3
000029fc: ADD
000029fd: MSTORE
000029fe: DUP4
000029ff: PUSH1 0x22
00002a01: DUP3
00002a02: ADD
00002a03: MSTORE
00002a04: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
00002a25: DUP4
00002a26: PUSH1 0x60
00002a28: SHL
00002a29: AND
00002a2a: PUSH1 0x42
00002a2c: DUP3
00002a2d: ADD
00002a2e: MSTORE
00002a2f: PUSH1 0x00
00002a31: DUP3
00002a32: MLOAD
00002a33: PUSH2 0x2a43
00002a36: DUP2
00002a37: PUSH1 0x56
00002a39: DUP6
00002a3a: ADD
00002a3b: PUSH1 0x20
00002a3d: DUP8
00002a3e: ADD
00002a3f: PUSH2 0x25d1
00002a42: JUMP
00002a43: JUMPDEST
00002a44: SWAP2
00002a45: SWAP1
00002a46: SWAP2
00002a47: ADD
00002a48: PUSH1 0x56
00002a4a: ADD
00002a4b: SWAP7
00002a4c: SWAP6
00002a4d: POP
00002a4e: POP
00002a4f: POP
00002a50: POP
00002a51: POP
00002a52: POP
00002a53: JUMP
00002a54: JUMPDEST
00002a55: DUP2
00002a56: DUP2
00002a57: SUB
00002a58: DUP2
00002a59: DUP2
00002a5a: GT
00002a5b: ISZERO
00002a5c: PUSH2 0x0b38
00002a5f: JUMPI
00002a60: PUSH2 0x0b38
00002a63: PUSH2 0x27b2
00002a66: JUMP
00002a67: JUMPDEST
00002a68: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002a89: PUSH1 0x00
00002a8b: MSTORE
00002a8c: PUSH1 0x31
00002a8e: PUSH1 0x04
00002a90: MSTORE
00002a91: PUSH1 0x24
00002a93: PUSH1 0x00
00002a95: REVERT
00002a96: JUMPDEST
00002a97: PUSH1 0x00
00002a99: DUP3
00002a9a: MLOAD
00002a9b: PUSH2 0x2aa8
00002a9e: DUP2
00002a9f: DUP5
00002aa0: PUSH1 0x20
00002aa2: DUP8
00002aa3: ADD
00002aa4: PUSH2 0x25d1
00002aa7: JUMP
00002aa8: JUMPDEST
00002aa9: SWAP2
00002aaa: SWAP1
00002aab: SWAP2
00002aac: ADD
00002aad: SWAP3
00002aae: SWAP2
00002aaf: POP
00002ab0: POP
00002ab1: JUMP
00002ab2: INVALID
00002ab3: LOG2
00002ab4: PUSH5 0x6970667358
00002aba: UNKNOWN(0x22)
00002abb: SLT
00002abc: KECCAK256
00002abd: DIV
00002abe: UNKNOWN(0xA8)
00002abf: UNKNOWN(0xAA)
00002ac0: TLOAD
00002ac1: UNKNOWN(0xEB)
00002ac2: CALLDATASIZE
00002ac3: UNKNOWN(0xD9)
00002ac4: UNKNOWN(0xE2)
00002ac5: SWAP3
00002ac6: DIV
00002ac7: UNKNOWN(0xF9)
00002ac8: UNKNOWN(0xD8)
00002ac9: SWAP3
00002aca: SWAP3
00002acb: PUSH8 0x5c9d41f21c9b6541
00002ad4: UNKNOWN(0xD6)
00002ad5: UNKNOWN(0xE6)
00002ad6: DUP10
00002ad7: UNKNOWN(0x28)
00002ad8: GT
00002ad9: DUP1
00002ada: REVERT
00002adb: PUSH11 0xef64736f6c634300081600
00002ae7: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability codex Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral 90 no
view
evidence_json
{
    "evidence": "`initialize` is public and unguarded, and `_MailboxClient_initialize` sets owner and the ISM/hook, enabling an attacker to install a permissive ISM and then forge mailbox processing that triggers `_handle` to transfer collateral.",
    "locations": [
        "contracts/contracts/token/HypERC20Collateral.sol:49",
        "contracts/contracts/client/MailboxClient.sol:100",
        "contracts/contracts/client/MailboxClient.sol:92",
        "contracts/contracts/client/Router.sol:54",
        "contracts/contracts/interfaces/IMailbox.sol:101",
        "contracts/contracts/token/libs/TokenRouter.sol:198",
        "contracts/contracts/token/HypERC20Collateral.sol:78"
    ],
    "recommendation": "Harden initialization: call `_disableInitializers()` in the constructor and ensure initialization is executed atomically at proxy deployment (e.g., via constructor data). If non-proxy deployments are intended, gate `initialize` so only the constructor-set owner can call it or remove it entirely.",
    "exploit_scenario": "1) Before the legitimate deployer initializes, attacker calls `HypERC20Collateral.initialize` with `_owner=attacker` and `_interchainSecurityModule` set to a permissive ISM that always returns true. 2) As owner, attacker calls `Router.enrollRemoteRouter` to register an attacker-controlled router for some origin domain. 3) Attacker calls `mailbox.process` with arbitrary metadata and a crafted Hyperlane message whose origin/sender match the enrolled router and whose body encodes `TokenMessage(recipient=attacker, amount=wrappedTokenBalance)`. 4) Mailbox invokes `Router.handle` and `TokenRouter._handle`, which calls `_transferTo` in `HypERC20Collateral`, transferring the collateral to attacker."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xbfa6ef15b1e7d075c5ad84344afbbccfd409ce16cb5aefedcf6eee84debd6472
call_targets: 0x631953e16e8a57fc159e1fb1d92443c981b00770
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbfa6ef15b1e7d075c5ad84344afbbccfd409ce16cb5aefedcf6eee84debd6472",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x631953e16e8a57fc159e1fb1d92443c981b00770"
    ],
    "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": "0xefae508a",
            "selector": "0xefae508a",
            "calldata_variants": [
                "0xefae508a",
                "0xefae508a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2ed8c53",
            "selector": "0xf2ed8c53",
            "calldata_variants": [
                "0xf2ed8c53",
                "0xf2ed8c530000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf51e181a",
            "selector": "0xf51e181a",
            "calldata_variants": [
                "0xf51e181a",
                "0xf51e181a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd5438eae",
            "selector": "0xd5438eae",
            "calldata_variants": [
                "0xd5438eae",
                "0xd5438eae0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xde523cf3",
            "selector": "0xde523cf3",
            "calldata_variants": [
                "0xde523cf3",
                "0xde523cf30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9198bf9",
            "selector": "0xe9198bf9",
            "calldata_variants": [
                "0xe9198bf9",
                "0xe9198bf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x996c6cc3",
            "selector": "0x996c6cc3",
            "calldata_variants": [
                "0x996c6cc3",
                "0x996c6cc30000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5857,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 8701,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 2320,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 2
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xbfa6ef15b1e7d075c5ad84344afbbccfd409ce16cb5aefedcf6eee84debd6472
call_targets: 0x631953e16e8a57fc159e1fb1d92443c981b00770
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbfa6ef15b1e7d075c5ad84344afbbccfd409ce16cb5aefedcf6eee84debd6472",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x631953e16e8a57fc159e1fb1d92443c981b00770"
    ],
    "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": "0xefae508a",
            "selector": "0xefae508a",
            "calldata_variants": [
                "0xefae508a",
                "0xefae508a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2ed8c53",
            "selector": "0xf2ed8c53",
            "calldata_variants": [
                "0xf2ed8c53",
                "0xf2ed8c530000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf51e181a",
            "selector": "0xf51e181a",
            "calldata_variants": [
                "0xf51e181a",
                "0xf51e181a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd5438eae",
            "selector": "0xd5438eae",
            "calldata_variants": [
                "0xd5438eae",
                "0xd5438eae0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xde523cf3",
            "selector": "0xde523cf3",
            "calldata_variants": [
                "0xde523cf3",
                "0xde523cf30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9198bf9",
            "selector": "0xe9198bf9",
            "calldata_variants": [
                "0xe9198bf9",
                "0xe9198bf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x996c6cc3",
            "selector": "0x996c6cc3",
            "calldata_variants": [
                "0x996c6cc3",
                "0x996c6cc30000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5857,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 8701,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 2320,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}