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

Analysis Run

c39ceeb7-70db-44e9-8e1f-07ef0170dbac

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 5, 2026 6:24 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Unprotected initialize allows ownership takeover and forged message withdrawals
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
31711 report.consolidate complete 1 / 1 3 months ago
95689 artifact.fetch complete 1 / 3 1 week ago
95690 tool.cast_disasm complete 1 / 3 1 week ago
95691 analysis.bundle complete 1 / 3 1 week ago
95692 capability.graph complete 1 / 3 1 week ago
95693 detector.run complete 1 / 3 1 week ago
95694 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
Found 1 critical issue: unprotected initializer allows ownership takeover and forged message withdrawals to drain native escrow.
View stderr
[codex:1325516] OpenAI Codex v0.77.0 (research preview)
[codex:1325516] --------
[codex:1325516] workdir: /tmp/codex-multi-qh23hmr8
[codex:1325516] model: gpt-5.2-codex
[codex:1325516] provider: openai
[codex:1325516] approval: never
[codex:1325516] sandbox: read-only
[codex:1325516] reasoning effort: xhigh
[codex:1325516] reasoning summaries: auto
[codex:1325516] session id: 019b8cd1-2154-75e3-bb5f-100dd210c6bc
[codex:1325516] --------
[codex:1325516] user
[codex:1325516] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1325516] 
[codex:1325516] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:1325516] 
[codex:1325516] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1325516] - Gas inefficiency, code quality, naming, or best practices
[codex:1325516] - Theoretical vulnerabilities without a clear extraction path
[codex:1325516] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:1325516] - Front-running unless it enables theft beyond MEV
[codex:1325516] - DoS, griefing, or issues that don't result in attacker profit
[codex:1325516] - Missing events, view function issues, or informational findings
[codex:1325516] 
[codex:1325516] HIGH-VALUE PATTERNS TO HUNT:
[codex:1325516] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:1325516] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:1325516] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:1325516] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:1325516] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:1325516] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:1325516] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:1325516] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:1325516] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:1325516] 
[codex:1325516] For each finding, you MUST provide:
[codex:1325516] 1. Exact file and line numbers of vulnerable code
[codex:1325516] 2. Step-by-step exploit transaction sequence
[codex:1325516] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:1325516] 
[codex:1325516] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:1325516] 
[codex:1325516] Output MUST be valid JSON matching the provided schema.
[codex:1325516] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1325516] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1325516] mcp startup: no servers
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Reading instructions and audit file**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc ls in /tmp/codex-multi-qh23hmr8 succeeded in 7ms:
[codex:1325516] AUDIT_BUNDLE.txt
[codex:1325516] codex-output-schema.json
[codex:1325516] contracts
[codex:1325516] exec
[codex:1325516] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-qh23hmr8 succeeded in 6ms:
[codex:1325516] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:1325516] 
[codex:1325516] ================================================================================
[codex:1325516] FILE: contracts/contracts/PackageVersioned.sol
[codex:1325516] ================================================================================
[codex:1325516] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1325516] pragma solidity >=0.6.11;
[codex:1325516] 
[codex:1325516] /**
[codex:1325516]  * @title PackageVersioned
[codex:1325516]  * @notice Package version getter for contracts
[codex:1325516]  **/
[codex:1325516] abstract contract PackageVersioned {
[codex:1325516]     // GENERATED CODE - DO NOT EDIT
[codex:1325516]     string public constant PACKAGE_VERSION = "7.1.4";
[codex:1325516] }
[codex:1325516] 
[codex:1325516] ================================================================================
[codex:1325516] FILE: contracts/contracts/client/GasRouter.sol
[codex:1325516] ================================================================================
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Analyzing contract functions for vulnerabilities**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc 'rg -n "withdraw|mint|burn|transfer|claim|redeem|swap|loan|flash|initialize|owner|onlyOwner|upgrade|permit|nonce|refund|pay" contracts/contracts' in /tmp/codex-multi-qh23hmr8 succeeded in 12ms:
[codex:1325516] contracts/contracts/interfaces/hooks/IPostDispatchHook.sol:57:    ) external payable;
[codex:1325516] contracts/contracts/interfaces/hooks/IPostDispatchHook.sol:60:     * @notice Compute the payment required by the postDispatch call
[codex:1325516] contracts/contracts/interfaces/hooks/IPostDispatchHook.sol:63:     * @return Quoted payment for the postDispatch call
[codex:1325516] contracts/contracts/interfaces/IMessageRecipient.sol:9:    ) external payable;
[codex:1325516] contracts/contracts/client/GasRouter.sol:39:    ) external onlyOwner {
[codex:1325516] contracts/contracts/client/GasRouter.sol:50:    function setDestinationGas(uint32 domain, uint256 gas) external onlyOwner {
[codex:1325516] contracts/contracts/client/GasRouter.sol:55:     * @notice Returns the gas payment required to dispatch a message to the given domain's router.
[codex:1325516] contracts/contracts/token/HypNative.sol:10: * @title Hyperlane Native Token Router that extends ERC20 with remote transfer functionality.
[codex:1325516] contracts/contracts/token/HypNative.sol:31:       @param _owner The this contract.
[codex:1325516] contracts/contracts/token/HypNative.sol:33:    function initialize(
[codex:1325516] contracts/contracts/token/HypNative.sol:36:        address _owner
[codex:1325516] contracts/contracts/token/HypNative.sol:37:    ) public initializer {
[codex:1325516] contracts/contracts/token/HypNative.sol:38:        _MailboxClient_initialize(_hook, _interchainSecurityModule, _owner);
[codex:1325516] contracts/contracts/token/HypNative.sol:43:     * @dev uses (`msg.value` - `_amount`) as hook payment and `msg.sender` as refund address.
[codex:1325516] contracts/contracts/token/HypNative.sol:45:    function transferRemote(
[codex:1325516] contracts/contracts/token/HypNative.sol:49:    ) external payable virtual override returns (bytes32 messageId) {
[codex:1325516] contracts/contracts/token/HypNative.sol:52:        return _transferRemote(_destination, _recipient, _amount, _hookPayment);
[codex:1325516] contracts/contracts/token/HypNative.sol:57:     * @dev uses (`msg.value` - `_amount`) as hook payment.
[codex:1325516] contracts/contracts/token/HypNative.sol:59:    function transferRemote(
[codex:1325516] contracts/contracts/token/HypNative.sol:65:    ) external payable virtual override returns (bytes32 messageId) {
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Checking for additional contracts**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc 'rg --files contracts/contracts' in /tmp/codex-multi-qh23hmr8 succeeded in 8ms:
[codex:1325516] contracts/contracts/interfaces/hooks/IPostDispatchHook.sol
[codex:1325516] contracts/contracts/interfaces/IMessageRecipient.sol
[codex:1325516] contracts/contracts/interfaces/IInterchainSecurityModule.sol
[codex:1325516] contracts/contracts/interfaces/IMailbox.sol
[codex:1325516] contracts/contracts/PackageVersioned.sol
[codex:1325516] contracts/contracts/hooks/libs/StandardHookMetadata.sol
[codex:1325516] contracts/contracts/libs/Message.sol
[codex:1325516] contracts/contracts/libs/TypeCasts.sol
[codex:1325516] contracts/contracts/libs/EnumerableMapExtended.sol
[codex:1325516] contracts/contracts/client/Router.sol
[codex:1325516] contracts/contracts/client/MailboxClient.sol
[codex:1325516] contracts/contracts/client/GasRouter.sol
[codex:1325516] contracts/contracts/token/HypNative.sol
[codex:1325516] contracts/contracts/token/libs/FungibleTokenRouter.sol
[codex:1325516] contracts/contracts/token/libs/TokenMessage.sol
[codex:1325516] contracts/contracts/token/libs/TokenRouter.sol
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Analyzing Hyperlane router vulnerabilities**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc "sed -n '1,200p' contracts/contracts/interfaces/IMailbox.sol" in /tmp/codex-multi-qh23hmr8 succeeded in 6ms:
[codex:1325516] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1325516] pragma solidity >=0.8.0;
[codex:1325516] 
[codex:1325516] import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
[codex:1325516] import {IPostDispatchHook} from "./hooks/IPostDispatchHook.sol";
[codex:1325516] 
[codex:1325516] interface IMailbox {
[codex:1325516]     // ============ Events ============
[codex:1325516]     /**
[codex:1325516]      * @notice Emitted when a new message is dispatched via Hyperlane
[codex:1325516]      * @param sender The address that dispatched the message
[codex:1325516]      * @param destination The destination domain of the message
[codex:1325516]      * @param recipient The message recipient address on `destination`
[codex:1325516]      * @param message Raw bytes of message
[codex:1325516]      */
[codex:1325516]     event Dispatch(
[codex:1325516]         address indexed sender,
[codex:1325516]         uint32 indexed destination,
[codex:1325516]         bytes32 indexed recipient,
[codex:1325516]         bytes message
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Examining interchain security modules in Hyperlane**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc "sed -n '1,200p' contracts/contracts/interfaces/IInterchainSecurityModule.sol" in /tmp/codex-multi-qh23hmr8 succeeded in 5ms:
[codex:1325516] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1325516] pragma solidity >=0.6.11;
[codex:1325516] 
[codex:1325516] interface IInterchainSecurityModule {
[codex:1325516]     enum Types {
[codex:1325516]         UNUSED,
[codex:1325516]         ROUTING,
[codex:1325516]         AGGREGATION,
[codex:1325516]         LEGACY_MULTISIG,
[codex:1325516]         MERKLE_ROOT_MULTISIG,
[codex:1325516]         MESSAGE_ID_MULTISIG,
[codex:1325516]         NULL, // used with relayer carrying no metadata
[codex:1325516]         CCIP_READ,
[codex:1325516]         ARB_L2_TO_L1,
[codex:1325516]         WEIGHTED_MERKLE_ROOT_MULTISIG,
[codex:1325516]         WEIGHTED_MESSAGE_ID_MULTISIG,
[codex:1325516]         OP_L2_TO_L1
[codex:1325516]     }
[codex:1325516] 
[codex:1325516]     /**
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Analyzing uninitialized ownership vulnerability**
[codex:1325516] 
[codex:1325516] I'm exploring how an uncalled initialize function in HypNative.sol can let an attacker seize ownership by setting a malicious interchainSecurityModule, enabling fraudulent message processing to drain native tokens. This hinges on the contract using OwnableUpgradeable with a constructor that sets owner but leaves initializers open, creating an exploitable window if initialize isn't called promptly after deployment. I'll verify actual vulnerable lines and confirm this attack path.
[codex:1325516] exec
[codex:1325516] /bin/bash -lc 'nl -ba contracts/contracts/token/HypNative.sol' in /tmp/codex-multi-qh23hmr8 succeeded in 6ms:
[codex:1325516]      1	// SPDX-License-Identifier: Apache-2.0
[codex:1325516]      2	pragma solidity >=0.8.0;
[codex:1325516]      3	
[codex:1325516]      4	import {TokenRouter} from "./libs/TokenRouter.sol";
[codex:1325516]      5	import {FungibleTokenRouter} from "./libs/FungibleTokenRouter.sol";
[codex:1325516]      6	import {TokenMessage} from "./libs/TokenMessage.sol";
[codex:1325516]      7	import {Address} from "@openzeppelin/contracts/utils/Address.sol";
[codex:1325516]      8	
[codex:1325516]      9	/**
[codex:1325516]     10	 * @title Hyperlane Native Token Router that extends ERC20 with remote transfer functionality.
[codex:1325516]     11	 * @author Abacus Works
[codex:1325516]     12	 * @dev Supply on each chain is not constant but the aggregate supply across all chains is.
[codex:1325516]     13	 */
[codex:1325516]     14	contract HypNative is FungibleTokenRouter {
[codex:1325516]     15	    /**
[codex:1325516]     16	     * @dev Emitted when native tokens are donated to the contract.
[codex:1325516]     17	     * @param sender The address of the sender.
[codex:1325516]     18	     * @param amount The amount of native tokens donated.
[codex:1325516]     19	     */
[codex:1325516]     20	    event Donation(address indexed sender, uint256 amount);
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Gathering line numbers for initializer methods**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc 'nl -ba contracts/contracts/client/MailboxClient.sol' in /tmp/codex-multi-qh23hmr8 succeeded in 5ms:
[codex:1325516]      1	// SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1325516]      2	pragma solidity >=0.6.11;
[codex:1325516]      3	
[codex:1325516]      4	/*@@@@@@@       @@@@@@@@@
[codex:1325516]      5	 @@@@@@@@@       @@@@@@@@@
[codex:1325516]      6	  @@@@@@@@@       @@@@@@@@@
[codex:1325516]      7	   @@@@@@@@@       @@@@@@@@@
[codex:1325516]      8	    @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1325516]      9	     @@@@@  HYPERLANE  @@@@@@@
[codex:1325516]     10	    @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1325516]     11	   @@@@@@@@@       @@@@@@@@@
[codex:1325516]     12	  @@@@@@@@@       @@@@@@@@@
[codex:1325516]     13	 @@@@@@@@@       @@@@@@@@@
[codex:1325516]     14	@@@@@@@@@       @@@@@@@@*/
[codex:1325516]     15	
[codex:1325516]     16	// ============ Internal Imports ============
[codex:1325516]     17	import {IMailbox} from "../interfaces/IMailbox.sol";
[codex:1325516]     18	import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
[codex:1325516]     19	import {IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
[codex:1325516]     20	import {Message} from "../libs/Message.sol";
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Surveying vulnerable contract parts**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc 'nl -ba contracts/contracts/client/Router.sol' in /tmp/codex-multi-qh23hmr8 succeeded in 5ms:
[codex:1325516]      1	// SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1325516]      2	pragma solidity >=0.6.11;
[codex:1325516]      3	
[codex:1325516]      4	// ============ Internal Imports ============
[codex:1325516]      5	import {IMessageRecipient} from "../interfaces/IMessageRecipient.sol";
[codex:1325516]      6	import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
[codex:1325516]      7	import {IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
[codex:1325516]      8	import {MailboxClient} from "./MailboxClient.sol";
[codex:1325516]      9	import {EnumerableMapExtended} from "../libs/EnumerableMapExtended.sol";
[codex:1325516]     10	
[codex:1325516]     11	// ============ External Imports ============
[codex:1325516]     12	import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
[codex:1325516]     13	
[codex:1325516]     14	abstract contract Router is MailboxClient, IMessageRecipient {
[codex:1325516]     15	    using EnumerableMapExtended for EnumerableMapExtended.UintToBytes32Map;
[codex:1325516]     16	    using Strings for uint32;
[codex:1325516]     17	
[codex:1325516]     18	    // ============ Mutable Storage ============
[codex:1325516]     19	    EnumerableMapExtended.UintToBytes32Map internal _routers;
[codex:1325516]     20	
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Identifying key TokenRouter methods**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc 'nl -ba contracts/contracts/token/libs/TokenRouter.sol' in /tmp/codex-multi-qh23hmr8 succeeded in 5ms:
[codex:1325516]      1	// SPDX-License-Identifier: Apache-2.0
[codex:1325516]      2	pragma solidity >=0.8.0;
[codex:1325516]      3	
[codex:1325516]      4	import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";
[codex:1325516]      5	import {GasRouter} from "../../client/GasRouter.sol";
[codex:1325516]      6	import {MailboxClient} from "../../client/MailboxClient.sol";
[codex:1325516]      7	import {TypeCasts} from "../../libs/TypeCasts.sol";
[codex:1325516]      8	import {TokenMessage} from "./TokenMessage.sol";
[codex:1325516]      9	
[codex:1325516]     10	/**
[codex:1325516]     11	 * @title Hyperlane Token Router that extends Router with abstract token (ERC20/ERC721) remote transfer functionality.
[codex:1325516]     12	 * @author Abacus Works
[codex:1325516]     13	 */
[codex:1325516]     14	abstract contract TokenRouter is GasRouter {
[codex:1325516]     15	    using TypeCasts for bytes32;
[codex:1325516]     16	    using TypeCasts for address;
[codex:1325516]     17	    using TokenMessage for bytes;
[codex:1325516]     18	
[codex:1325516]     19	    /**
[codex:1325516]     20	     * @dev Emitted on `transferRemote` when a transfer message is dispatched.
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Analyzing unprotected initialize exploit**
[codex:1325516] exec
[codex:1325516] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-qh23hmr8 succeeded in 5ms:
[codex:1325516] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:1325516] 
[codex:1325516] thinking
[codex:1325516] **Composing detailed JSON report**
[codex:1325516] 
[codex:1325516] I'll create a valid JSON output containing a boolean for findings presence, a concise summary string, and an array of findings detailing the vulnerability. Each finding will include exact file and line references, description, and an exploit scenario enumerating attack steps and estimated profit potential, following the user's instructions closely.
[codex:1325516] codex
[codex:1325516] {"no_findings":false,"summary":"Found 1 critical issue: unprotected initializer allows ownership takeover and forged message withdrawals to drain native escrow.","findings":[{"severity":"critical","category":"upgradeability","title":"Unprotected initialize allows ownership takeover and forged message withdrawals","exploit_scenario":"1) Attacker calls `HypNative.initialize(attackerHook, attackerISM, attackerEOA)` before the legitimate initializer (public initializer with no auth). 2) This sets `interchainSecurityModule` and transfers ownership to the attacker via `_MailboxClient_initialize`. 3) As owner, attacker calls `enrollRemoteRouter(origin, attackerRouter)` to register an attacker-controlled sender for some origin domain. 4) Attacker crafts a Hyperlane message with `sender=attackerRouter`, `origin=origin`, `recipient=HypNative`, and `amount` equal to the desired withdrawal, then calls `mailbox.process(metadata,message)` using their ISM that returns `true`. 5) `Router.handle` accepts the sender and `TokenRouter._handle` transfers native tokens to the attacker; repeat to drain. Profit: up to the entire native token balance held by the `HypNative` contract on this chain.","recommendation":"Lock initialization for non-proxy deployments by calling `__Ownable_init()` (or `_disableInitializers()`) in the constructor and remove/guard the public initializer; if using proxies, ensure `initialize` is called atomically at deployment and consider restricting it to a deployer-only factory.","evidence":"`HypNative.initialize` is public and can be called by anyone once; `_MailboxClient_initialize` calls `__Ownable_init()` and `_transferOwnership(_owner)` allowing ownership takeover. Once owner, attacker can enroll a remote router and set a permissive ISM, then trigger `_handle` to transfer funds.","locations":["contracts/contracts/token/HypNative.sol:33","contracts/contracts/client/MailboxClient.sol:100","contracts/contracts/client/MailboxClient.sol:105","contracts/contracts/client/MailboxClient.sol:108","contracts/contracts/client/Router.sol:54","contracts/contracts/token/libs/TokenRouter.sol:198"]}]}
[codex:1325516] tokens used
[codex:1325516] 58,149
[codex:1325516] {"no_findings":false,"summary":"Found 1 critical issue: unprotected initializer allows ownership takeover and forged message withdrawals to drain native escrow.","findings":[{"severity":"critical","category":"upgradeability","title":"Unprotected initialize allows ownership takeover and forged message withdrawals","exploit_scenario":"1) Attacker calls `HypNative.initialize(attackerHook, attackerISM, attackerEOA)` before the legitimate initializer (public initializer with no auth). 2) This sets `interchainSecurityModule` and transfers ownership to the attacker via `_MailboxClient_initialize`. 3) As owner, attacker calls `enrollRemoteRouter(origin, attackerRouter)` to register an attacker-controlled sender for some origin domain. 4) Attacker crafts a Hyperlane message with `sender=attackerRouter`, `origin=origin`, `recipient=HypNative`, and `amount` equal to the desired withdrawal, then calls `mailbox.process(metadata,message)` using their ISM that returns `true`. 5) `Router.handle` accepts the sender and `TokenRouter._handle` transfers native tokens to the attacker; repeat to drain. Profit: up to the entire native token balance held by the `HypNative` contract on this chain.","recommendation":"Lock initialization for non-proxy deployments by calling `__Ownable_init()` (or `_disableInitializers()`) in the constructor and remove/guard the public initializer; if using proxies, ensure `initialize` is called atomically at deployment and consider restricting it to a deployer-only factory.","evidence":"`HypNative.initialize` is public and can be called by anyone once; `_MailboxClient_initialize` calls `__Ownable_init()` and `_transferOwnership(_owner)` allowing ownership takeover. Once owner, attacker can enroll a remote router and set a permissive ISM, then trigger `_handle` to transfer funds.","locations":["contracts/contracts/token/HypNative.sol:33","contracts/contracts/client/MailboxClient.sol:100","contracts/contracts/client/MailboxClient.sol:105","contracts/contracts/client/MailboxClient.sol:108","contracts/contracts/client/Router.sol:54","contracts/contracts/token/libs/TokenRouter.sol:198"]}]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-05T06:24:15.076374+00:00",
        "returncode": 0
    },
    "summary": "Found 1 critical issue: unprotected initializer allows ownership takeover and forged message withdrawals to drain native escrow.",
    "raw_final": {
        "summary": "Found 1 critical issue: unprotected initializer allows ownership takeover and forged message withdrawals to drain native escrow.",
        "findings": [
            {
                "title": "Unprotected initialize allows ownership takeover and forged message withdrawals",
                "category": "upgradeability",
                "evidence": "`HypNative.initialize` is public and can be called by anyone once; `_MailboxClient_initialize` calls `__Ownable_init()` and `_transferOwnership(_owner)` allowing ownership takeover. Once owner, attacker can enroll a remote router and set a permissive ISM, then trigger `_handle` to transfer funds.",
                "severity": "critical",
                "locations": [
                    "contracts/contracts/token/HypNative.sol:33",
                    "contracts/contracts/client/MailboxClient.sol:100",
                    "contracts/contracts/client/MailboxClient.sol:105",
                    "contracts/contracts/client/MailboxClient.sol:108",
                    "contracts/contracts/client/Router.sol:54",
                    "contracts/contracts/token/libs/TokenRouter.sol:198"
                ],
                "recommendation": "Lock initialization for non-proxy deployments by calling `__Ownable_init()` (or `_disableInitializers()`) in the constructor and remove/guard the public initializer; if using proxies, ensure `initialize` is called atomically at deployment and consider restricting it to a deployer-only factory.",
                "exploit_scenario": "1) Attacker calls `HypNative.initialize(attackerHook, attackerISM, attackerEOA)` before the legitimate initializer (public initializer with no auth). 2) This sets `interchainSecurityModule` and transfers ownership to the attacker via `_MailboxClient_initialize`. 3) As owner, attacker calls `enrollRemoteRouter(origin, attackerRouter)` to register an attacker-controlled sender for some origin domain. 4) Attacker crafts a Hyperlane message with `sender=attackerRouter`, `origin=origin`, `recipient=HypNative`, and `amount` equal to the desired withdrawal, then calls `mailbox.process(metadata,message)` using their ISM that returns `true`. 5) `Router.handle` accepts the sender and `TokenRouter._handle` transfers native tokens to the attacker; repeat to drain. Profit: up to the entire native token balance held by the `HypNative` contract on this chain."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
4
Total opcodes
4882
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 0x01a5
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x8d3638f4
00000019: GT
0000001a: PUSH2 0x00e1
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 0x056a
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xf2ed8c53
00000045: EQ
00000046: PUSH2 0x058a
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf2fde38b
00000050: EQ
00000051: PUSH2 0x05aa
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf51e181a
0000005b: EQ
0000005c: PUSH2 0x05ca
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xd5438eae
0000006b: EQ
0000006c: PUSH2 0x04e9
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xde523cf3
00000076: EQ
00000077: PUSH2 0x051d
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xe9198bf9
00000081: EQ
00000082: PUSH2 0x054a
00000085: JUMPI
00000086: PUSH1 0x00
00000088: DUP1
00000089: REVERT
0000008a: JUMPDEST
0000008b: DUP1
0000008c: PUSH4 0xb1bd6436
00000091: GT
00000092: PUSH2 0x00bb
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xb1bd6436
0000009c: EQ
0000009d: PUSH2 0x0489
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0xb49c53a7
000000a7: EQ
000000a8: PUSH2 0x04a9
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0xc0c53b8b
000000b2: EQ
000000b3: PUSH2 0x04c9
000000b6: JUMPI
000000b7: PUSH1 0x00
000000b9: DUP1
000000ba: REVERT
000000bb: JUMPDEST
000000bc: DUP1
000000bd: PUSH4 0x8d3638f4
000000c2: EQ
000000c3: PUSH2 0x03bf
000000c6: JUMPI
000000c7: DUP1
000000c8: PUSH4 0x8da5cb5b
000000cd: EQ
000000ce: PUSH2 0x0408
000000d1: JUMPI
000000d2: DUP1
000000d3: PUSH4 0x93c44847
000000d8: EQ
000000d9: PUSH2 0x0433
000000dc: JUMPI
000000dd: PUSH1 0x00
000000df: DUP1
000000e0: REVERT
000000e1: JUMPDEST
000000e2: DUP1
000000e3: PUSH4 0x56d5d475
000000e8: GT
000000e9: PUSH2 0x014e
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0x71a15b38
000000f3: GT
000000f4: PUSH2 0x0128
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0x71a15b38
000000fe: EQ
000000ff: PUSH2 0x030d
00000102: JUMPI
00000103: DUP1
00000104: PUSH4 0x775313a1
00000109: EQ
0000010a: PUSH2 0x032d
0000010d: JUMPI
0000010e: DUP1
0000010f: PUSH4 0x7f5a7c7b
00000114: EQ
00000115: PUSH2 0x035a
00000118: JUMPI
00000119: DUP1
0000011a: PUSH4 0x81b4e8b4
0000011f: EQ
00000120: PUSH2 0x03ac
00000123: JUMPI
00000124: PUSH1 0x00
00000126: DUP1
00000127: REVERT
00000128: JUMPDEST
00000129: DUP1
0000012a: PUSH4 0x56d5d475
0000012f: EQ
00000130: PUSH2 0x02b0
00000133: JUMPI
00000134: DUP1
00000135: PUSH4 0x70a08231
0000013a: EQ
0000013b: PUSH2 0x02c3
0000013e: JUMPI
0000013f: DUP1
00000140: PUSH4 0x715018a6
00000145: EQ
00000146: PUSH2 0x02f8
00000149: JUMPI
0000014a: PUSH1 0x00
0000014c: DUP1
0000014d: REVERT
0000014e: JUMPDEST
0000014f: DUP1
00000150: PUSH4 0x440df4f4
00000155: GT
00000156: PUSH2 0x017f
00000159: JUMPI
0000015a: DUP1
0000015b: PUSH4 0x440df4f4
00000160: EQ
00000161: PUSH2 0x025b
00000164: JUMPI
00000165: DUP1
00000166: PUSH4 0x49d462ef
0000016b: EQ
0000016c: PUSH2 0x027d
0000016f: JUMPI
00000170: DUP1
00000171: PUSH4 0x51debffc
00000176: EQ
00000177: PUSH2 0x029d
0000017a: JUMPI
0000017b: PUSH1 0x00
0000017d: DUP1
0000017e: REVERT
0000017f: JUMPDEST
00000180: DUP1
00000181: PUSH4 0x0e72cc06
00000186: EQ
00000187: PUSH2 0x01e6
0000018a: JUMPI
0000018b: DUP1
0000018c: PUSH4 0x2ead72f6
00000191: EQ
00000192: PUSH2 0x0208
00000195: JUMPI
00000196: DUP1
00000197: PUSH4 0x3dfd3873
0000019c: EQ
0000019d: PUSH2 0x023b
000001a0: JUMPI
000001a1: PUSH1 0x00
000001a3: DUP1
000001a4: REVERT
000001a5: JUMPDEST
000001a6: CALLDATASIZE
000001a7: PUSH2 0x01e1
000001aa: JUMPI
000001ab: PUSH1 0x40
000001ad: MLOAD
000001ae: CALLVALUE
000001af: DUP2
000001b0: MSTORE
000001b1: CALLER
000001b2: SWAP1
000001b3: PUSH32 0x5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e
000001d4: SWAP1
000001d5: PUSH1 0x20
000001d7: ADD
000001d8: PUSH1 0x40
000001da: MLOAD
000001db: DUP1
000001dc: SWAP2
000001dd: SUB
000001de: SWAP1
000001df: LOG2
000001e0: STOP
000001e1: JUMPDEST
000001e2: PUSH1 0x00
000001e4: DUP1
000001e5: REVERT
000001e6: JUMPDEST
000001e7: CALLVALUE
000001e8: DUP1
000001e9: ISZERO
000001ea: PUSH2 0x01f2
000001ed: JUMPI
000001ee: PUSH1 0x00
000001f0: DUP1
000001f1: REVERT
000001f2: JUMPDEST
000001f3: POP
000001f4: PUSH2 0x0206
000001f7: PUSH2 0x0201
000001fa: CALLDATASIZE
000001fb: PUSH1 0x04
000001fd: PUSH2 0x2042
00000200: JUMP
00000201: JUMPDEST
00000202: PUSH2 0x05fe
00000205: JUMP
00000206: JUMPDEST
00000207: STOP
00000208: JUMPDEST
00000209: CALLVALUE
0000020a: DUP1
0000020b: ISZERO
0000020c: PUSH2 0x0214
0000020f: JUMPI
00000210: PUSH1 0x00
00000212: DUP1
00000213: REVERT
00000214: JUMPDEST
00000215: POP
00000216: PUSH2 0x0228
00000219: PUSH2 0x0223
0000021c: CALLDATASIZE
0000021d: PUSH1 0x04
0000021f: PUSH2 0x2071
00000222: JUMP
00000223: JUMPDEST
00000224: PUSH2 0x074c
00000227: JUMP
00000228: JUMPDEST
00000229: PUSH1 0x40
0000022b: MLOAD
0000022c: SWAP1
0000022d: DUP2
0000022e: MSTORE
0000022f: PUSH1 0x20
00000231: ADD
00000232: JUMPDEST
00000233: PUSH1 0x40
00000235: MLOAD
00000236: DUP1
00000237: SWAP2
00000238: SUB
00000239: SWAP1
0000023a: RETURN
0000023b: JUMPDEST
0000023c: CALLVALUE
0000023d: DUP1
0000023e: ISZERO
0000023f: PUSH2 0x0247
00000242: JUMPI
00000243: PUSH1 0x00
00000245: DUP1
00000246: REVERT
00000247: JUMPDEST
00000248: POP
00000249: PUSH2 0x0206
0000024c: PUSH2 0x0256
0000024f: CALLDATASIZE
00000250: PUSH1 0x04
00000252: PUSH2 0x2042
00000255: JUMP
00000256: JUMPDEST
00000257: PUSH2 0x076b
0000025a: JUMP
0000025b: JUMPDEST
0000025c: CALLVALUE
0000025d: DUP1
0000025e: ISZERO
0000025f: PUSH2 0x0267
00000262: JUMPI
00000263: PUSH1 0x00
00000265: DUP1
00000266: REVERT
00000267: JUMPDEST
00000268: POP
00000269: PUSH2 0x0270
0000026c: PUSH2 0x08ac
0000026f: JUMP
00000270: JUMPDEST
00000271: PUSH1 0x40
00000273: MLOAD
00000274: PUSH2 0x0232
00000277: SWAP2
00000278: SWAP1
00000279: PUSH2 0x208c
0000027c: JUMP
0000027d: JUMPDEST
0000027e: CALLVALUE
0000027f: DUP1
00000280: ISZERO
00000281: PUSH2 0x0289
00000284: JUMPI
00000285: PUSH1 0x00
00000287: DUP1
00000288: REVERT
00000289: JUMPDEST
0000028a: POP
0000028b: PUSH2 0x0206
0000028e: PUSH2 0x0298
00000291: CALLDATASIZE
00000292: PUSH1 0x04
00000294: PUSH2 0x20d6
00000297: JUMP
00000298: JUMPDEST
00000299: PUSH2 0x08bd
0000029c: JUMP
0000029d: JUMPDEST
0000029e: PUSH2 0x0228
000002a1: PUSH2 0x02ab
000002a4: CALLDATASIZE
000002a5: PUSH1 0x04
000002a7: PUSH2 0x2142
000002aa: JUMP
000002ab: JUMPDEST
000002ac: PUSH2 0x08d3
000002af: JUMP
000002b0: JUMPDEST
000002b1: PUSH2 0x0206
000002b4: PUSH2 0x02be
000002b7: CALLDATASIZE
000002b8: PUSH1 0x04
000002ba: PUSH2 0x21b9
000002bd: JUMP
000002be: JUMPDEST
000002bf: PUSH2 0x099e
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 0x0228
000002d4: PUSH2 0x02de
000002d7: CALLDATASIZE
000002d8: PUSH1 0x04
000002da: PUSH2 0x2042
000002dd: JUMP
000002de: JUMPDEST
000002df: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002f4: AND
000002f5: BALANCE
000002f6: SWAP1
000002f7: JUMP
000002f8: JUMPDEST
000002f9: CALLVALUE
000002fa: DUP1
000002fb: ISZERO
000002fc: PUSH2 0x0304
000002ff: JUMPI
00000300: PUSH1 0x00
00000302: DUP1
00000303: REVERT
00000304: JUMPDEST
00000305: POP
00000306: PUSH2 0x0206
00000309: PUSH2 0x0b12
0000030c: JUMP
0000030d: JUMPDEST
0000030e: CALLVALUE
0000030f: DUP1
00000310: ISZERO
00000311: PUSH2 0x0319
00000314: JUMPI
00000315: PUSH1 0x00
00000317: DUP1
00000318: REVERT
00000319: JUMPDEST
0000031a: POP
0000031b: PUSH2 0x0206
0000031e: PUSH2 0x0328
00000321: CALLDATASIZE
00000322: PUSH1 0x04
00000324: PUSH2 0x2258
00000327: JUMP
00000328: JUMPDEST
00000329: PUSH2 0x0b26
0000032c: JUMP
0000032d: JUMPDEST
0000032e: CALLVALUE
0000032f: DUP1
00000330: ISZERO
00000331: PUSH2 0x0339
00000334: JUMPI
00000335: PUSH1 0x00
00000337: DUP1
00000338: REVERT
00000339: JUMPDEST
0000033a: POP
0000033b: PUSH2 0x0228
0000033e: PUSH2 0x0348
00000341: CALLDATASIZE
00000342: PUSH1 0x04
00000344: PUSH2 0x2071
00000347: JUMP
00000348: JUMPDEST
00000349: PUSH1 0xca
0000034b: PUSH1 0x20
0000034d: MSTORE
0000034e: PUSH1 0x00
00000350: SWAP1
00000351: DUP2
00000352: MSTORE
00000353: PUSH1 0x40
00000355: SWAP1
00000356: KECCAK256
00000357: SLOAD
00000358: DUP2
00000359: JUMP
0000035a: JUMPDEST
0000035b: CALLVALUE
0000035c: DUP1
0000035d: ISZERO
0000035e: PUSH2 0x0366
00000361: JUMPI
00000362: PUSH1 0x00
00000364: DUP1
00000365: REVERT
00000366: JUMPDEST
00000367: POP
00000368: PUSH1 0x65
0000036a: SLOAD
0000036b: PUSH2 0x0387
0000036e: SWAP1
0000036f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000384: AND
00000385: DUP2
00000386: JUMP
00000387: JUMPDEST
00000388: PUSH1 0x40
0000038a: MLOAD
0000038b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003a0: SWAP1
000003a1: SWAP2
000003a2: AND
000003a3: DUP2
000003a4: MSTORE
000003a5: PUSH1 0x20
000003a7: ADD
000003a8: PUSH2 0x0232
000003ab: JUMP
000003ac: JUMPDEST
000003ad: PUSH2 0x0228
000003b0: PUSH2 0x03ba
000003b3: CALLDATASIZE
000003b4: PUSH1 0x04
000003b6: PUSH2 0x229a
000003b9: JUMP
000003ba: JUMPDEST
000003bb: PUSH2 0x0b81
000003be: JUMP
000003bf: JUMPDEST
000003c0: CALLVALUE
000003c1: DUP1
000003c2: ISZERO
000003c3: PUSH2 0x03cb
000003c6: JUMPI
000003c7: PUSH1 0x00
000003c9: DUP1
000003ca: REVERT
000003cb: JUMPDEST
000003cc: POP
000003cd: PUSH2 0x03f3
000003d0: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
000003f1: DUP2
000003f2: JUMP
000003f3: JUMPDEST
000003f4: PUSH1 0x40
000003f6: MLOAD
000003f7: PUSH4 0xffffffff
000003fc: SWAP1
000003fd: SWAP2
000003fe: AND
000003ff: DUP2
00000400: MSTORE
00000401: PUSH1 0x20
00000403: ADD
00000404: PUSH2 0x0232
00000407: JUMP
00000408: JUMPDEST
00000409: CALLVALUE
0000040a: DUP1
0000040b: ISZERO
0000040c: PUSH2 0x0414
0000040f: JUMPI
00000410: PUSH1 0x00
00000412: DUP1
00000413: REVERT
00000414: JUMPDEST
00000415: POP
00000416: PUSH1 0x33
00000418: SLOAD
00000419: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000042e: AND
0000042f: PUSH2 0x0387
00000432: JUMP
00000433: JUMPDEST
00000434: CALLVALUE
00000435: DUP1
00000436: ISZERO
00000437: PUSH2 0x043f
0000043a: JUMPI
0000043b: PUSH1 0x00
0000043d: DUP1
0000043e: REVERT
0000043f: JUMPDEST
00000440: POP
00000441: PUSH2 0x047c
00000444: PUSH1 0x40
00000446: MLOAD
00000447: DUP1
00000448: PUSH1 0x40
0000044a: ADD
0000044b: PUSH1 0x40
0000044d: MSTORE
0000044e: DUP1
0000044f: PUSH1 0x05
00000451: DUP2
00000452: MSTORE
00000453: PUSH1 0x20
00000455: ADD
00000456: PUSH32 0x372e312e34000000000000000000000000000000000000000000000000000000
00000477: DUP2
00000478: MSTORE
00000479: POP
0000047a: DUP2
0000047b: JUMP
0000047c: JUMPDEST
0000047d: PUSH1 0x40
0000047f: MLOAD
00000480: PUSH2 0x0232
00000483: SWAP2
00000484: SWAP1
00000485: PUSH2 0x233b
00000488: JUMP
00000489: JUMPDEST
0000048a: CALLVALUE
0000048b: DUP1
0000048c: ISZERO
0000048d: PUSH2 0x0495
00000490: JUMPI
00000491: PUSH1 0x00
00000493: DUP1
00000494: REVERT
00000495: JUMPDEST
00000496: POP
00000497: PUSH2 0x0206
0000049a: PUSH2 0x04a4
0000049d: CALLDATASIZE
0000049e: PUSH1 0x04
000004a0: PUSH2 0x234e
000004a3: JUMP
000004a4: JUMPDEST
000004a5: PUSH2 0x0c10
000004a8: JUMP
000004a9: JUMPDEST
000004aa: CALLVALUE
000004ab: DUP1
000004ac: ISZERO
000004ad: PUSH2 0x04b5
000004b0: JUMPI
000004b1: PUSH1 0x00
000004b3: DUP1
000004b4: REVERT
000004b5: JUMPDEST
000004b6: POP
000004b7: PUSH2 0x0206
000004ba: PUSH2 0x04c4
000004bd: CALLDATASIZE
000004be: PUSH1 0x04
000004c0: PUSH2 0x20d6
000004c3: JUMP
000004c4: JUMPDEST
000004c5: PUSH2 0x0c86
000004c8: JUMP
000004c9: JUMPDEST
000004ca: CALLVALUE
000004cb: DUP1
000004cc: ISZERO
000004cd: PUSH2 0x04d5
000004d0: JUMPI
000004d1: PUSH1 0x00
000004d3: DUP1
000004d4: REVERT
000004d5: JUMPDEST
000004d6: POP
000004d7: PUSH2 0x0206
000004da: PUSH2 0x04e4
000004dd: CALLDATASIZE
000004de: PUSH1 0x04
000004e0: PUSH2 0x23c3
000004e3: JUMP
000004e4: JUMPDEST
000004e5: PUSH2 0x0c98
000004e8: JUMP
000004e9: JUMPDEST
000004ea: CALLVALUE
000004eb: DUP1
000004ec: ISZERO
000004ed: PUSH2 0x04f5
000004f0: JUMPI
000004f1: PUSH1 0x00
000004f3: DUP1
000004f4: REVERT
000004f5: JUMPDEST
000004f6: POP
000004f7: PUSH2 0x0387
000004fa: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239
0000051b: DUP2
0000051c: JUMP
0000051d: JUMPDEST
0000051e: CALLVALUE
0000051f: DUP1
00000520: ISZERO
00000521: PUSH2 0x0529
00000524: JUMPI
00000525: PUSH1 0x00
00000527: DUP1
00000528: REVERT
00000529: JUMPDEST
0000052a: POP
0000052b: PUSH1 0x66
0000052d: SLOAD
0000052e: PUSH2 0x0387
00000531: SWAP1
00000532: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000547: AND
00000548: DUP2
00000549: JUMP
0000054a: JUMPDEST
0000054b: CALLVALUE
0000054c: DUP1
0000054d: ISZERO
0000054e: PUSH2 0x0556
00000551: JUMPI
00000552: PUSH1 0x00
00000554: DUP1
00000555: REVERT
00000556: JUMPDEST
00000557: POP
00000558: PUSH2 0x0206
0000055b: PUSH2 0x0565
0000055e: CALLDATASIZE
0000055f: PUSH1 0x04
00000561: PUSH2 0x2406
00000564: JUMP
00000565: JUMPDEST
00000566: PUSH2 0x0e2f
00000569: JUMP
0000056a: JUMPDEST
0000056b: CALLVALUE
0000056c: DUP1
0000056d: ISZERO
0000056e: PUSH2 0x0576
00000571: JUMPI
00000572: PUSH1 0x00
00000574: DUP1
00000575: REVERT
00000576: JUMPDEST
00000577: POP
00000578: PUSH2 0x0206
0000057b: PUSH2 0x0585
0000057e: CALLDATASIZE
0000057f: PUSH1 0x04
00000581: PUSH2 0x2071
00000584: JUMP
00000585: JUMPDEST
00000586: PUSH2 0x0f0e
00000589: JUMP
0000058a: JUMPDEST
0000058b: CALLVALUE
0000058c: DUP1
0000058d: ISZERO
0000058e: PUSH2 0x0596
00000591: JUMPI
00000592: PUSH1 0x00
00000594: DUP1
00000595: REVERT
00000596: JUMPDEST
00000597: POP
00000598: PUSH2 0x0228
0000059b: PUSH2 0x05a5
0000059e: CALLDATASIZE
0000059f: PUSH1 0x04
000005a1: PUSH2 0x2071
000005a4: JUMP
000005a5: JUMPDEST
000005a6: PUSH2 0x0f22
000005a9: JUMP
000005aa: JUMPDEST
000005ab: CALLVALUE
000005ac: DUP1
000005ad: ISZERO
000005ae: PUSH2 0x05b6
000005b1: JUMPI
000005b2: PUSH1 0x00
000005b4: DUP1
000005b5: REVERT
000005b6: JUMPDEST
000005b7: POP
000005b8: PUSH2 0x0206
000005bb: PUSH2 0x05c5
000005be: CALLDATASIZE
000005bf: PUSH1 0x04
000005c1: PUSH2 0x2042
000005c4: JUMP
000005c5: JUMPDEST
000005c6: PUSH2 0x0f89
000005c9: JUMP
000005ca: JUMPDEST
000005cb: CALLVALUE
000005cc: DUP1
000005cd: ISZERO
000005ce: PUSH2 0x05d6
000005d1: JUMPI
000005d2: PUSH1 0x00
000005d4: DUP1
000005d5: REVERT
000005d6: JUMPDEST
000005d7: POP
000005d8: PUSH2 0x0228
000005db: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
000005fc: DUP2
000005fd: JUMP
000005fe: JUMPDEST
000005ff: DUP1
00000600: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000615: DUP2
00000616: AND
00000617: EXTCODESIZE
00000618: ISZERO
00000619: ISZERO
0000061a: DUP1
0000061b: PUSH2 0x0638
0000061e: JUMPI
0000061f: POP
00000620: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000635: DUP2
00000636: AND
00000637: ISZERO
00000638: JUMPDEST
00000639: PUSH2 0x06c9
0000063c: JUMPI
0000063d: PUSH1 0x40
0000063f: MLOAD
00000640: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000661: DUP2
00000662: MSTORE
00000663: PUSH1 0x20
00000665: PUSH1 0x04
00000667: DUP3
00000668: ADD
00000669: MSTORE
0000066a: PUSH1 0x27
0000066c: PUSH1 0x24
0000066e: DUP3
0000066f: ADD
00000670: MSTORE
00000671: PUSH32 0x4d61696c626f78436c69656e743a20696e76616c696420636f6e747261637420
00000692: PUSH1 0x44
00000694: DUP3
00000695: ADD
00000696: MSTORE
00000697: PUSH32 0x73657474696e6700000000000000000000000000000000000000000000000000
000006b8: PUSH1 0x64
000006ba: DUP3
000006bb: ADD
000006bc: MSTORE
000006bd: PUSH1 0x84
000006bf: ADD
000006c0: JUMPDEST
000006c1: PUSH1 0x40
000006c3: MLOAD
000006c4: DUP1
000006c5: SWAP2
000006c6: SUB
000006c7: SWAP1
000006c8: REVERT
000006c9: JUMPDEST
000006ca: PUSH2 0x06d1
000006cd: PUSH2 0x103d
000006d0: JUMP
000006d1: JUMPDEST
000006d2: PUSH1 0x66
000006d4: DUP1
000006d5: SLOAD
000006d6: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
000006f7: AND
000006f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000070d: DUP5
0000070e: AND
0000070f: SWAP1
00000710: DUP2
00000711: OR
00000712: SWAP1
00000713: SWAP2
00000714: SSTORE
00000715: PUSH1 0x40
00000717: MLOAD
00000718: SWAP1
00000719: DUP2
0000071a: MSTORE
0000071b: PUSH32 0xc47cbcc588c67679e52261c45cc315e56562f8d0ccaba16facb9093ff9498799
0000073c: SWAP1
0000073d: PUSH1 0x20
0000073f: ADD
00000740: JUMPDEST
00000741: PUSH1 0x40
00000743: MLOAD
00000744: DUP1
00000745: SWAP2
00000746: SUB
00000747: SWAP1
00000748: LOG1
00000749: POP
0000074a: POP
0000074b: JUMP
0000074c: JUMPDEST
0000074d: PUSH1 0x00
0000074f: DUP1
00000750: PUSH2 0x0763
00000753: PUSH1 0x97
00000755: PUSH4 0xffffffff
0000075a: DUP1
0000075b: DUP7
0000075c: AND
0000075d: SWAP1
0000075e: PUSH2 0x10be
00000761: AND
00000762: JUMP
00000763: JUMPDEST
00000764: SWAP5
00000765: SWAP4
00000766: POP
00000767: POP
00000768: POP
00000769: POP
0000076a: JUMP
0000076b: JUMPDEST
0000076c: DUP1
0000076d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000782: DUP2
00000783: AND
00000784: EXTCODESIZE
00000785: ISZERO
00000786: ISZERO
00000787: DUP1
00000788: PUSH2 0x07a5
0000078b: JUMPI
0000078c: POP
0000078d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007a2: DUP2
000007a3: AND
000007a4: ISZERO
000007a5: JUMPDEST
000007a6: PUSH2 0x0831
000007a9: JUMPI
000007aa: PUSH1 0x40
000007ac: MLOAD
000007ad: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000007ce: DUP2
000007cf: MSTORE
000007d0: PUSH1 0x20
000007d2: PUSH1 0x04
000007d4: DUP3
000007d5: ADD
000007d6: MSTORE
000007d7: PUSH1 0x27
000007d9: PUSH1 0x24
000007db: DUP3
000007dc: ADD
000007dd: MSTORE
000007de: PUSH32 0x4d61696c626f78436c69656e743a20696e76616c696420636f6e747261637420
000007ff: PUSH1 0x44
00000801: DUP3
00000802: ADD
00000803: MSTORE
00000804: PUSH32 0x73657474696e6700000000000000000000000000000000000000000000000000
00000825: PUSH1 0x64
00000827: DUP3
00000828: ADD
00000829: MSTORE
0000082a: PUSH1 0x84
0000082c: ADD
0000082d: PUSH2 0x06c0
00000830: JUMP
00000831: JUMPDEST
00000832: PUSH2 0x0839
00000835: PUSH2 0x103d
00000838: JUMP
00000839: JUMPDEST
0000083a: PUSH1 0x65
0000083c: DUP1
0000083d: SLOAD
0000083e: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
0000085f: AND
00000860: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000875: DUP5
00000876: AND
00000877: SWAP1
00000878: DUP2
00000879: OR
0000087a: SWAP1
0000087b: SWAP2
0000087c: SSTORE
0000087d: PUSH1 0x40
0000087f: MLOAD
00000880: SWAP1
00000881: DUP2
00000882: MSTORE
00000883: PUSH32 0x4eab7b127c764308788622363ad3e9532de3dfba7845bd4f84c125a22544255a
000008a4: SWAP1
000008a5: PUSH1 0x20
000008a7: ADD
000008a8: PUSH2 0x0740
000008ab: JUMP
000008ac: JUMPDEST
000008ad: PUSH1 0x60
000008af: PUSH2 0x08b8
000008b2: PUSH1 0x97
000008b4: PUSH2 0x10d7
000008b7: JUMP
000008b8: JUMPDEST
000008b9: SWAP1
000008ba: POP
000008bb: SWAP1
000008bc: JUMP
000008bd: JUMPDEST
000008be: PUSH2 0x08c5
000008c1: PUSH2 0x103d
000008c4: JUMP
000008c5: JUMPDEST
000008c6: PUSH2 0x08cf
000008c9: DUP3
000008ca: DUP3
000008cb: PUSH2 0x1188
000008ce: JUMP
000008cf: JUMPDEST
000008d0: POP
000008d1: POP
000008d2: JUMP
000008d3: JUMPDEST
000008d4: PUSH1 0x00
000008d6: DUP5
000008d7: CALLVALUE
000008d8: LT
000008d9: ISZERO
000008da: PUSH2 0x093f
000008dd: JUMPI
000008de: PUSH1 0x40
000008e0: MLOAD
000008e1: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000902: DUP2
00000903: MSTORE
00000904: PUSH1 0x20
00000906: PUSH1 0x04
00000908: DUP3
00000909: ADD
0000090a: DUP2
0000090b: SWAP1
0000090c: MSTORE
0000090d: PUSH1 0x24
0000090f: DUP3
00000910: ADD
00000911: MSTORE
00000912: PUSH32 0x4e61746976653a20616d6f756e742065786365656473206d73672e76616c7565
00000933: PUSH1 0x44
00000935: DUP3
00000936: ADD
00000937: MSTORE
00000938: PUSH1 0x64
0000093a: ADD
0000093b: PUSH2 0x06c0
0000093e: JUMP
0000093f: JUMPDEST
00000940: PUSH1 0x00
00000942: PUSH2 0x094b
00000945: DUP7
00000946: CALLVALUE
00000947: PUSH2 0x2495
0000094a: JUMP
0000094b: JUMPDEST
0000094c: SWAP1
0000094d: POP
0000094e: PUSH2 0x0992
00000951: DUP9
00000952: DUP9
00000953: DUP9
00000954: DUP5
00000955: DUP10
00000956: DUP10
00000957: DUP1
00000958: DUP1
00000959: PUSH1 0x1f
0000095b: ADD
0000095c: PUSH1 0x20
0000095e: DUP1
0000095f: SWAP2
00000960: DIV
00000961: MUL
00000962: PUSH1 0x20
00000964: ADD
00000965: PUSH1 0x40
00000967: MLOAD
00000968: SWAP1
00000969: DUP2
0000096a: ADD
0000096b: PUSH1 0x40
0000096d: MSTORE
0000096e: DUP1
0000096f: SWAP4
00000970: SWAP3
00000971: SWAP2
00000972: SWAP1
00000973: DUP2
00000974: DUP2
00000975: MSTORE
00000976: PUSH1 0x20
00000978: ADD
00000979: DUP4
0000097a: DUP4
0000097b: DUP1
0000097c: DUP3
0000097d: DUP5
0000097e: CALLDATACOPY
0000097f: PUSH1 0x00
00000981: SWAP3
00000982: ADD
00000983: SWAP2
00000984: SWAP1
00000985: SWAP2
00000986: MSTORE
00000987: POP
00000988: DUP12
00000989: SWAP3
0000098a: POP
0000098b: PUSH2 0x11d6
0000098e: SWAP2
0000098f: POP
00000990: POP
00000991: JUMP
00000992: JUMPDEST
00000993: SWAP9
00000994: SWAP8
00000995: POP
00000996: POP
00000997: POP
00000998: POP
00000999: POP
0000099a: POP
0000099b: POP
0000099c: POP
0000099d: JUMP
0000099e: JUMPDEST
0000099f: CALLER
000009a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009b5: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239
000009d6: AND
000009d7: EQ
000009d8: PUSH2 0x0a63
000009db: JUMPI
000009dc: PUSH1 0x40
000009de: MLOAD
000009df: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000a00: DUP2
00000a01: MSTORE
00000a02: PUSH1 0x20
00000a04: PUSH1 0x04
00000a06: DUP3
00000a07: ADD
00000a08: MSTORE
00000a09: PUSH1 0x21
00000a0b: PUSH1 0x24
00000a0d: DUP3
00000a0e: ADD
00000a0f: MSTORE
00000a10: PUSH32 0x4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f
00000a31: PUSH1 0x44
00000a33: DUP3
00000a34: ADD
00000a35: MSTORE
00000a36: PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000
00000a57: PUSH1 0x64
00000a59: DUP3
00000a5a: ADD
00000a5b: MSTORE
00000a5c: PUSH1 0x84
00000a5e: ADD
00000a5f: PUSH2 0x06c0
00000a62: JUMP
00000a63: JUMPDEST
00000a64: PUSH1 0x00
00000a66: PUSH2 0x0a6e
00000a69: DUP6
00000a6a: PUSH2 0x1269
00000a6d: JUMP
00000a6e: JUMPDEST
00000a6f: SWAP1
00000a70: POP
00000a71: DUP4
00000a72: DUP2
00000a73: EQ
00000a74: PUSH2 0x0aff
00000a77: JUMPI
00000a78: PUSH1 0x40
00000a7a: MLOAD
00000a7b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000a9c: DUP2
00000a9d: MSTORE
00000a9e: PUSH1 0x20
00000aa0: PUSH1 0x04
00000aa2: DUP3
00000aa3: ADD
00000aa4: MSTORE
00000aa5: PUSH1 0x25
00000aa7: PUSH1 0x24
00000aa9: DUP3
00000aaa: ADD
00000aab: MSTORE
00000aac: PUSH32 0x456e726f6c6c656420726f7574657220646f6573206e6f74206d617463682073
00000acd: PUSH1 0x44
00000acf: DUP3
00000ad0: ADD
00000ad1: MSTORE
00000ad2: PUSH32 0x656e646572000000000000000000000000000000000000000000000000000000
00000af3: PUSH1 0x64
00000af5: DUP3
00000af6: ADD
00000af7: MSTORE
00000af8: PUSH1 0x84
00000afa: ADD
00000afb: PUSH2 0x06c0
00000afe: JUMP
00000aff: JUMPDEST
00000b00: PUSH2 0x0b0b
00000b03: DUP6
00000b04: DUP6
00000b05: DUP6
00000b06: DUP6
00000b07: PUSH2 0x12ce
00000b0a: JUMP
00000b0b: JUMPDEST
00000b0c: POP
00000b0d: POP
00000b0e: POP
00000b0f: POP
00000b10: POP
00000b11: JUMP
00000b12: JUMPDEST
00000b13: PUSH2 0x0b1a
00000b16: PUSH2 0x103d
00000b19: JUMP
00000b1a: JUMPDEST
00000b1b: PUSH2 0x0b24
00000b1e: PUSH1 0x00
00000b20: PUSH2 0x1362
00000b23: JUMP
00000b24: JUMPDEST
00000b25: JUMP
00000b26: JUMPDEST
00000b27: PUSH2 0x0b2e
00000b2a: PUSH2 0x103d
00000b2d: JUMP
00000b2e: JUMPDEST
00000b2f: DUP1
00000b30: PUSH1 0x00
00000b32: JUMPDEST
00000b33: DUP2
00000b34: DUP2
00000b35: LT
00000b36: ISZERO
00000b37: PUSH2 0x0b7b
00000b3a: JUMPI
00000b3b: PUSH2 0x0b69
00000b3e: DUP5
00000b3f: DUP5
00000b40: DUP4
00000b41: DUP2
00000b42: DUP2
00000b43: LT
00000b44: PUSH2 0x0b4f
00000b47: JUMPI
00000b48: PUSH2 0x0b4f
00000b4b: PUSH2 0x24a8
00000b4e: JUMP
00000b4f: JUMPDEST
00000b50: SWAP1
00000b51: POP
00000b52: PUSH1 0x20
00000b54: MUL
00000b55: ADD
00000b56: PUSH1 0x20
00000b58: DUP2
00000b59: ADD
00000b5a: SWAP1
00000b5b: PUSH2 0x0b64
00000b5e: SWAP2
00000b5f: SWAP1
00000b60: PUSH2 0x2071
00000b63: JUMP
00000b64: JUMPDEST
00000b65: PUSH2 0x13d9
00000b68: JUMP
00000b69: JUMPDEST
00000b6a: PUSH2 0x0b74
00000b6d: PUSH1 0x01
00000b6f: DUP3
00000b70: PUSH2 0x24d7
00000b73: JUMP
00000b74: JUMPDEST
00000b75: SWAP1
00000b76: POP
00000b77: PUSH2 0x0b32
00000b7a: JUMP
00000b7b: JUMPDEST
00000b7c: POP
00000b7d: POP
00000b7e: POP
00000b7f: POP
00000b80: JUMP
00000b81: JUMPDEST
00000b82: PUSH1 0x00
00000b84: DUP2
00000b85: CALLVALUE
00000b86: LT
00000b87: ISZERO
00000b88: PUSH2 0x0bed
00000b8b: JUMPI
00000b8c: PUSH1 0x40
00000b8e: MLOAD
00000b8f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000bb0: DUP2
00000bb1: MSTORE
00000bb2: PUSH1 0x20
00000bb4: PUSH1 0x04
00000bb6: DUP3
00000bb7: ADD
00000bb8: DUP2
00000bb9: SWAP1
00000bba: MSTORE
00000bbb: PUSH1 0x24
00000bbd: DUP3
00000bbe: ADD
00000bbf: MSTORE
00000bc0: PUSH32 0x4e61746976653a20616d6f756e742065786365656473206d73672e76616c7565
00000be1: PUSH1 0x44
00000be3: DUP3
00000be4: ADD
00000be5: MSTORE
00000be6: PUSH1 0x64
00000be8: ADD
00000be9: PUSH2 0x06c0
00000bec: JUMP
00000bed: JUMPDEST
00000bee: PUSH1 0x00
00000bf0: PUSH2 0x0bf9
00000bf3: DUP4
00000bf4: CALLVALUE
00000bf5: PUSH2 0x2495
00000bf8: JUMP
00000bf9: JUMPDEST
00000bfa: SWAP1
00000bfb: POP
00000bfc: PUSH2 0x0c07
00000bff: DUP6
00000c00: DUP6
00000c01: DUP6
00000c02: DUP5
00000c03: PUSH2 0x142e
00000c06: JUMP
00000c07: JUMPDEST
00000c08: SWAP6
00000c09: SWAP5
00000c0a: POP
00000c0b: POP
00000c0c: POP
00000c0d: POP
00000c0e: POP
00000c0f: JUMP
00000c10: JUMPDEST
00000c11: PUSH2 0x0c18
00000c14: PUSH2 0x103d
00000c17: JUMP
00000c18: JUMPDEST
00000c19: PUSH1 0x00
00000c1b: JUMPDEST
00000c1c: DUP2
00000c1d: DUP2
00000c1e: LT
00000c1f: ISZERO
00000c20: PUSH2 0x0c81
00000c23: JUMPI
00000c24: PUSH2 0x0c6f
00000c27: DUP4
00000c28: DUP4
00000c29: DUP4
00000c2a: DUP2
00000c2b: DUP2
00000c2c: LT
00000c2d: PUSH2 0x0c38
00000c30: JUMPI
00000c31: PUSH2 0x0c38
00000c34: PUSH2 0x24a8
00000c37: JUMP
00000c38: JUMPDEST
00000c39: PUSH2 0x0c4e
00000c3c: SWAP3
00000c3d: PUSH1 0x20
00000c3f: PUSH1 0x40
00000c41: SWAP1
00000c42: SWAP3
00000c43: MUL
00000c44: ADD
00000c45: SWAP1
00000c46: DUP2
00000c47: ADD
00000c48: SWAP2
00000c49: POP
00000c4a: PUSH2 0x2071
00000c4d: JUMP
00000c4e: JUMPDEST
00000c4f: DUP5
00000c50: DUP5
00000c51: DUP5
00000c52: DUP2
00000c53: DUP2
00000c54: LT
00000c55: PUSH2 0x0c60
00000c58: JUMPI
00000c59: PUSH2 0x0c60
00000c5c: PUSH2 0x24a8
00000c5f: JUMP
00000c60: JUMPDEST
00000c61: SWAP1
00000c62: POP
00000c63: PUSH1 0x40
00000c65: MUL
00000c66: ADD
00000c67: PUSH1 0x20
00000c69: ADD
00000c6a: CALLDATALOAD
00000c6b: PUSH2 0x1188
00000c6e: JUMP
00000c6f: JUMPDEST
00000c70: PUSH2 0x0c7a
00000c73: PUSH1 0x01
00000c75: DUP3
00000c76: PUSH2 0x24d7
00000c79: JUMP
00000c7a: JUMPDEST
00000c7b: SWAP1
00000c7c: POP
00000c7d: PUSH2 0x0c1b
00000c80: JUMP
00000c81: JUMPDEST
00000c82: POP
00000c83: POP
00000c84: POP
00000c85: JUMP
00000c86: JUMPDEST
00000c87: PUSH2 0x0c8e
00000c8a: PUSH2 0x103d
00000c8d: JUMP
00000c8e: JUMPDEST
00000c8f: PUSH2 0x08cf
00000c92: DUP3
00000c93: DUP3
00000c94: PUSH2 0x145e
00000c97: JUMP
00000c98: JUMPDEST
00000c99: PUSH1 0x00
00000c9b: SLOAD
00000c9c: PUSH2 0x0100
00000c9f: SWAP1
00000ca0: DIV
00000ca1: PUSH1 0xff
00000ca3: AND
00000ca4: ISZERO
00000ca5: DUP1
00000ca6: DUP1
00000ca7: ISZERO
00000ca8: PUSH2 0x0cb8
00000cab: JUMPI
00000cac: POP
00000cad: PUSH1 0x00
00000caf: SLOAD
00000cb0: PUSH1 0x01
00000cb2: PUSH1 0xff
00000cb4: SWAP1
00000cb5: SWAP2
00000cb6: AND
00000cb7: LT
00000cb8: JUMPDEST
00000cb9: DUP1
00000cba: PUSH2 0x0cd2
00000cbd: JUMPI
00000cbe: POP
00000cbf: ADDRESS
00000cc0: EXTCODESIZE
00000cc1: ISZERO
00000cc2: DUP1
00000cc3: ISZERO
00000cc4: PUSH2 0x0cd2
00000cc7: JUMPI
00000cc8: POP
00000cc9: PUSH1 0x00
00000ccb: SLOAD
00000ccc: PUSH1 0xff
00000cce: AND
00000ccf: PUSH1 0x01
00000cd1: EQ
00000cd2: JUMPDEST
00000cd3: PUSH2 0x0d5e
00000cd6: JUMPI
00000cd7: PUSH1 0x40
00000cd9: MLOAD
00000cda: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000cfb: DUP2
00000cfc: MSTORE
00000cfd: PUSH1 0x20
00000cff: PUSH1 0x04
00000d01: DUP3
00000d02: ADD
00000d03: MSTORE
00000d04: PUSH1 0x2e
00000d06: PUSH1 0x24
00000d08: DUP3
00000d09: ADD
00000d0a: MSTORE
00000d0b: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00000d2c: PUSH1 0x44
00000d2e: DUP3
00000d2f: ADD
00000d30: MSTORE
00000d31: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
00000d52: PUSH1 0x64
00000d54: DUP3
00000d55: ADD
00000d56: MSTORE
00000d57: PUSH1 0x84
00000d59: ADD
00000d5a: PUSH2 0x06c0
00000d5d: JUMP
00000d5e: JUMPDEST
00000d5f: PUSH1 0x00
00000d61: DUP1
00000d62: SLOAD
00000d63: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000d84: AND
00000d85: PUSH1 0x01
00000d87: OR
00000d88: SWAP1
00000d89: SSTORE
00000d8a: DUP1
00000d8b: ISZERO
00000d8c: PUSH2 0x0dbc
00000d8f: JUMPI
00000d90: PUSH1 0x00
00000d92: DUP1
00000d93: SLOAD
00000d94: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
00000db5: AND
00000db6: PUSH2 0x0100
00000db9: OR
00000dba: SWAP1
00000dbb: SSTORE
00000dbc: JUMPDEST
00000dbd: PUSH2 0x0dc7
00000dc0: DUP5
00000dc1: DUP5
00000dc2: DUP5
00000dc3: PUSH2 0x1474
00000dc6: JUMP
00000dc7: JUMPDEST
00000dc8: DUP1
00000dc9: ISZERO
00000dca: PUSH2 0x0b7b
00000dcd: JUMPI
00000dce: PUSH1 0x00
00000dd0: DUP1
00000dd1: SLOAD
00000dd2: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
00000df3: AND
00000df4: SWAP1
00000df5: SSTORE
00000df6: PUSH1 0x40
00000df8: MLOAD
00000df9: PUSH1 0x01
00000dfb: DUP2
00000dfc: MSTORE
00000dfd: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
00000e1e: SWAP1
00000e1f: PUSH1 0x20
00000e21: ADD
00000e22: PUSH1 0x40
00000e24: MLOAD
00000e25: DUP1
00000e26: SWAP2
00000e27: SUB
00000e28: SWAP1
00000e29: LOG1
00000e2a: POP
00000e2b: POP
00000e2c: POP
00000e2d: POP
00000e2e: JUMP
00000e2f: JUMPDEST
00000e30: PUSH2 0x0e37
00000e33: PUSH2 0x103d
00000e36: JUMP
00000e37: JUMPDEST
00000e38: DUP3
00000e39: DUP2
00000e3a: EQ
00000e3b: PUSH2 0x0ea0
00000e3e: JUMPI
00000e3f: PUSH1 0x40
00000e41: MLOAD
00000e42: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000e63: DUP2
00000e64: MSTORE
00000e65: PUSH1 0x20
00000e67: PUSH1 0x04
00000e69: DUP3
00000e6a: ADD
00000e6b: MSTORE
00000e6c: PUSH1 0x07
00000e6e: PUSH1 0x24
00000e70: DUP3
00000e71: ADD
00000e72: MSTORE
00000e73: PUSH32 0x216c656e67746800000000000000000000000000000000000000000000000000
00000e94: PUSH1 0x44
00000e96: DUP3
00000e97: ADD
00000e98: MSTORE
00000e99: PUSH1 0x64
00000e9b: ADD
00000e9c: PUSH2 0x06c0
00000e9f: JUMP
00000ea0: JUMPDEST
00000ea1: DUP3
00000ea2: PUSH1 0x00
00000ea4: JUMPDEST
00000ea5: DUP2
00000ea6: DUP2
00000ea7: LT
00000ea8: ISZERO
00000ea9: PUSH2 0x0f06
00000eac: JUMPI
00000ead: PUSH2 0x0ef4
00000eb0: DUP7
00000eb1: DUP7
00000eb2: DUP4
00000eb3: DUP2
00000eb4: DUP2
00000eb5: LT
00000eb6: PUSH2 0x0ec1
00000eb9: JUMPI
00000eba: PUSH2 0x0ec1
00000ebd: PUSH2 0x24a8
00000ec0: JUMP
00000ec1: JUMPDEST
00000ec2: SWAP1
00000ec3: POP
00000ec4: PUSH1 0x20
00000ec6: MUL
00000ec7: ADD
00000ec8: PUSH1 0x20
00000eca: DUP2
00000ecb: ADD
00000ecc: SWAP1
00000ecd: PUSH2 0x0ed6
00000ed0: SWAP2
00000ed1: SWAP1
00000ed2: PUSH2 0x2071
00000ed5: JUMP
00000ed6: JUMPDEST
00000ed7: DUP6
00000ed8: DUP6
00000ed9: DUP5
00000eda: DUP2
00000edb: DUP2
00000edc: LT
00000edd: PUSH2 0x0ee8
00000ee0: JUMPI
00000ee1: PUSH2 0x0ee8
00000ee4: PUSH2 0x24a8
00000ee7: JUMP
00000ee8: JUMPDEST
00000ee9: SWAP1
00000eea: POP
00000eeb: PUSH1 0x20
00000eed: MUL
00000eee: ADD
00000eef: CALLDATALOAD
00000ef0: PUSH2 0x145e
00000ef3: JUMP
00000ef4: JUMPDEST
00000ef5: PUSH2 0x0eff
00000ef8: PUSH1 0x01
00000efa: DUP3
00000efb: PUSH2 0x24d7
00000efe: JUMP
00000eff: JUMPDEST
00000f00: SWAP1
00000f01: POP
00000f02: PUSH2 0x0ea4
00000f05: JUMP
00000f06: JUMPDEST
00000f07: POP
00000f08: POP
00000f09: POP
00000f0a: POP
00000f0b: POP
00000f0c: POP
00000f0d: JUMP
00000f0e: JUMPDEST
00000f0f: PUSH2 0x0f16
00000f12: PUSH2 0x103d
00000f15: JUMP
00000f16: JUMPDEST
00000f17: PUSH2 0x0f1f
00000f1a: DUP2
00000f1b: PUSH2 0x13d9
00000f1e: JUMP
00000f1f: JUMPDEST
00000f20: POP
00000f21: JUMP
00000f22: JUMPDEST
00000f23: PUSH1 0x00
00000f25: PUSH2 0x0f83
00000f28: DUP3
00000f29: PUSH2 0x0f65
00000f2c: PUSH1 0x00
00000f2e: DUP1
00000f2f: SHL
00000f30: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000f51: PUSH1 0x40
00000f53: MLOAD
00000f54: DUP1
00000f55: PUSH1 0x20
00000f57: ADD
00000f58: PUSH1 0x40
00000f5a: MSTORE
00000f5b: DUP1
00000f5c: PUSH1 0x00
00000f5e: DUP2
00000f5f: MSTORE
00000f60: POP
00000f61: PUSH2 0x152e
00000f64: JUMP
00000f65: JUMPDEST
00000f66: PUSH1 0x65
00000f68: SLOAD
00000f69: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f7e: AND
00000f7f: PUSH2 0x155d
00000f82: JUMP
00000f83: JUMPDEST
00000f84: SWAP3
00000f85: SWAP2
00000f86: POP
00000f87: POP
00000f88: JUMP
00000f89: JUMPDEST
00000f8a: PUSH2 0x0f91
00000f8d: PUSH2 0x103d
00000f90: JUMP
00000f91: JUMPDEST
00000f92: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fa7: DUP2
00000fa8: AND
00000fa9: PUSH2 0x1034
00000fac: JUMPI
00000fad: PUSH1 0x40
00000faf: MLOAD
00000fb0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000fd1: DUP2
00000fd2: MSTORE
00000fd3: PUSH1 0x20
00000fd5: PUSH1 0x04
00000fd7: DUP3
00000fd8: ADD
00000fd9: MSTORE
00000fda: PUSH1 0x26
00000fdc: PUSH1 0x24
00000fde: DUP3
00000fdf: ADD
00000fe0: MSTORE
00000fe1: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
00001002: PUSH1 0x44
00001004: DUP3
00001005: ADD
00001006: MSTORE
00001007: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000
00001028: PUSH1 0x64
0000102a: DUP3
0000102b: ADD
0000102c: MSTORE
0000102d: PUSH1 0x84
0000102f: ADD
00001030: PUSH2 0x06c0
00001033: JUMP
00001034: JUMPDEST
00001035: PUSH2 0x0f1f
00001038: DUP2
00001039: PUSH2 0x1362
0000103c: JUMP
0000103d: JUMPDEST
0000103e: PUSH1 0x33
00001040: SLOAD
00001041: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001056: AND
00001057: CALLER
00001058: EQ
00001059: PUSH2 0x0b24
0000105c: JUMPI
0000105d: PUSH1 0x40
0000105f: MLOAD
00001060: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001081: DUP2
00001082: MSTORE
00001083: PUSH1 0x20
00001085: PUSH1 0x04
00001087: DUP3
00001088: ADD
00001089: DUP2
0000108a: SWAP1
0000108b: MSTORE
0000108c: PUSH1 0x24
0000108e: DUP3
0000108f: ADD
00001090: MSTORE
00001091: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
000010b2: PUSH1 0x44
000010b4: DUP3
000010b5: ADD
000010b6: MSTORE
000010b7: PUSH1 0x64
000010b9: ADD
000010ba: PUSH2 0x06c0
000010bd: JUMP
000010be: JUMPDEST
000010bf: PUSH1 0x00
000010c1: DUP1
000010c2: PUSH2 0x10cb
000010c5: DUP5
000010c6: DUP5
000010c7: PUSH2 0x1573
000010ca: JUMP
000010cb: JUMPDEST
000010cc: SWAP2
000010cd: POP
000010ce: SWAP2
000010cf: POP
000010d0: JUMPDEST
000010d1: SWAP3
000010d2: POP
000010d3: SWAP3
000010d4: SWAP1
000010d5: POP
000010d6: JUMP
000010d7: JUMPDEST
000010d8: PUSH1 0x60
000010da: PUSH1 0x00
000010dc: PUSH2 0x10e4
000010df: DUP4
000010e0: PUSH2 0x15ad
000010e3: JUMP
000010e4: JUMPDEST
000010e5: SWAP1
000010e6: POP
000010e7: DUP1
000010e8: MLOAD
000010e9: PUSH8 0xffffffffffffffff
000010f2: DUP2
000010f3: GT
000010f4: ISZERO
000010f5: PUSH2 0x1100
000010f8: JUMPI
000010f9: PUSH2 0x1100
000010fc: PUSH2 0x24ea
000010ff: JUMP
00001100: JUMPDEST
00001101: PUSH1 0x40
00001103: MLOAD
00001104: SWAP1
00001105: DUP1
00001106: DUP3
00001107: MSTORE
00001108: DUP1
00001109: PUSH1 0x20
0000110b: MUL
0000110c: PUSH1 0x20
0000110e: ADD
0000110f: DUP3
00001110: ADD
00001111: PUSH1 0x40
00001113: MSTORE
00001114: DUP1
00001115: ISZERO
00001116: PUSH2 0x1129
00001119: JUMPI
0000111a: DUP2
0000111b: PUSH1 0x20
0000111d: ADD
0000111e: PUSH1 0x20
00001120: DUP3
00001121: MUL
00001122: DUP1
00001123: CALLDATASIZE
00001124: DUP4
00001125: CALLDATACOPY
00001126: ADD
00001127: SWAP1
00001128: POP
00001129: JUMPDEST
0000112a: POP
0000112b: SWAP2
0000112c: POP
0000112d: PUSH1 0x00
0000112f: JUMPDEST
00001130: DUP2
00001131: MLOAD
00001132: DUP2
00001133: LT
00001134: ISZERO
00001135: PUSH2 0x1181
00001138: JUMPI
00001139: DUP2
0000113a: DUP2
0000113b: DUP2
0000113c: MLOAD
0000113d: DUP2
0000113e: LT
0000113f: PUSH2 0x114a
00001142: JUMPI
00001143: PUSH2 0x114a
00001146: PUSH2 0x24a8
00001149: JUMP
0000114a: JUMPDEST
0000114b: PUSH1 0x20
0000114d: MUL
0000114e: PUSH1 0x20
00001150: ADD
00001151: ADD
00001152: MLOAD
00001153: DUP4
00001154: DUP3
00001155: DUP2
00001156: MLOAD
00001157: DUP2
00001158: LT
00001159: PUSH2 0x1164
0000115c: JUMPI
0000115d: PUSH2 0x1164
00001160: PUSH2 0x24a8
00001163: JUMP
00001164: JUMPDEST
00001165: PUSH4 0xffffffff
0000116a: SWAP1
0000116b: SWAP3
0000116c: AND
0000116d: PUSH1 0x20
0000116f: SWAP3
00001170: DUP4
00001171: MUL
00001172: SWAP2
00001173: SWAP1
00001174: SWAP2
00001175: ADD
00001176: SWAP1
00001177: SWAP2
00001178: ADD
00001179: MSTORE
0000117a: PUSH1 0x01
0000117c: ADD
0000117d: PUSH2 0x112f
00001180: JUMP
00001181: JUMPDEST
00001182: POP
00001183: POP
00001184: SWAP2
00001185: SWAP1
00001186: POP
00001187: JUMP
00001188: JUMPDEST
00001189: PUSH4 0xffffffff
0000118e: DUP3
0000118f: AND
00001190: PUSH1 0x00
00001192: DUP2
00001193: DUP2
00001194: MSTORE
00001195: PUSH1 0xca
00001197: PUSH1 0x20
00001199: SWAP1
0000119a: DUP2
0000119b: MSTORE
0000119c: PUSH1 0x40
0000119e: SWAP2
0000119f: DUP3
000011a0: SWAP1
000011a1: KECCAK256
000011a2: DUP5
000011a3: SWAP1
000011a4: SSTORE
000011a5: DUP2
000011a6: MLOAD
000011a7: SWAP3
000011a8: DUP4
000011a9: MSTORE
000011aa: DUP3
000011ab: ADD
000011ac: DUP4
000011ad: SWAP1
000011ae: MSTORE
000011af: PUSH32 0xc3de732a98b24a2b5c6f67e8a7fb057ffc14046b83968a2c73e4148d2fba978b
000011d0: SWAP2
000011d1: ADD
000011d2: PUSH2 0x0740
000011d5: JUMP
000011d6: JUMPDEST
000011d7: PUSH1 0x00
000011d9: DUP1
000011da: PUSH2 0x11ee
000011dd: PUSH1 0x40
000011df: DUP1
000011e0: MLOAD
000011e1: PUSH1 0x20
000011e3: DUP2
000011e4: ADD
000011e5: SWAP1
000011e6: SWAP2
000011e7: MSTORE
000011e8: PUSH1 0x00
000011ea: DUP2
000011eb: MSTORE
000011ec: SWAP1
000011ed: JUMP
000011ee: JUMPDEST
000011ef: SWAP1
000011f0: POP
000011f1: PUSH1 0x00
000011f3: PUSH2 0x11fb
000011f6: DUP8
000011f7: PUSH2 0x163e
000011fa: JUMP
000011fb: JUMPDEST
000011fc: SWAP1
000011fd: POP
000011fe: PUSH1 0x00
00001200: PUSH2 0x120a
00001203: DUP10
00001204: DUP4
00001205: DUP6
00001206: PUSH2 0x152e
00001209: JUMP
0000120a: JUMPDEST
0000120b: SWAP1
0000120c: POP
0000120d: PUSH2 0x1219
00001210: DUP11
00001211: DUP9
00001212: DUP4
00001213: DUP10
00001214: DUP10
00001215: PUSH2 0x166a
00001218: JUMP
00001219: JUMPDEST
0000121a: SWAP4
0000121b: POP
0000121c: DUP9
0000121d: DUP11
0000121e: PUSH4 0xffffffff
00001223: AND
00001224: PUSH32 0xd229aacb94204188fe8042965fa6b269c62dc5818b21238779ab64bdd17efeec
00001245: DUP5
00001246: PUSH1 0x40
00001248: MLOAD
00001249: PUSH2 0x1254
0000124c: SWAP2
0000124d: DUP2
0000124e: MSTORE
0000124f: PUSH1 0x20
00001251: ADD
00001252: SWAP1
00001253: JUMP
00001254: JUMPDEST
00001255: PUSH1 0x40
00001257: MLOAD
00001258: DUP1
00001259: SWAP2
0000125a: SUB
0000125b: SWAP1
0000125c: LOG3
0000125d: POP
0000125e: POP
0000125f: POP
00001260: SWAP7
00001261: SWAP6
00001262: POP
00001263: POP
00001264: POP
00001265: POP
00001266: POP
00001267: POP
00001268: JUMP
00001269: JUMPDEST
0000126a: PUSH1 0x00
0000126c: DUP1
0000126d: DUP1
0000126e: PUSH2 0x1281
00001271: PUSH1 0x97
00001273: PUSH4 0xffffffff
00001278: DUP1
00001279: DUP8
0000127a: AND
0000127b: SWAP1
0000127c: PUSH2 0x10be
0000127f: AND
00001280: JUMP
00001281: JUMPDEST
00001282: SWAP2
00001283: POP
00001284: SWAP2
00001285: POP
00001286: DUP2
00001287: ISZERO
00001288: PUSH2 0x1292
0000128b: JUMPI
0000128c: SWAP4
0000128d: SWAP3
0000128e: POP
0000128f: POP
00001290: POP
00001291: JUMP
00001292: JUMPDEST
00001293: PUSH2 0x129b
00001296: DUP5
00001297: PUSH2 0x1728
0000129a: JUMP
0000129b: JUMPDEST
0000129c: PUSH1 0x40
0000129e: MLOAD
0000129f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000012c0: DUP2
000012c1: MSTORE
000012c2: PUSH1 0x04
000012c4: ADD
000012c5: PUSH2 0x06c0
000012c8: SWAP2
000012c9: SWAP1
000012ca: PUSH2 0x233b
000012cd: JUMP
000012ce: JUMPDEST
000012cf: PUSH1 0x00
000012d1: PUSH2 0x12da
000012d4: DUP4
000012d5: DUP4
000012d6: PUSH2 0x175f
000012d9: JUMP
000012da: JUMPDEST
000012db: SWAP1
000012dc: POP
000012dd: PUSH1 0x00
000012df: PUSH2 0x12e8
000012e2: DUP5
000012e3: DUP5
000012e4: PUSH2 0x177e
000012e7: JUMP
000012e8: JUMPDEST
000012e9: SWAP1
000012ea: POP
000012eb: CALLDATASIZE
000012ec: PUSH1 0x00
000012ee: PUSH2 0x12f7
000012f1: DUP7
000012f2: DUP7
000012f3: PUSH2 0x178e
000012f6: JUMP
000012f7: JUMPDEST
000012f8: SWAP2
000012f9: POP
000012fa: SWAP2
000012fb: POP
000012fc: PUSH2 0x1317
000012ff: PUSH2 0x1307
00001302: DUP6
00001303: PUSH2 0x179e
00001306: JUMP
00001307: JUMPDEST
00001308: PUSH2 0x1310
0000130b: DUP6
0000130c: PUSH2 0x1847
0000130f: JUMP
00001310: JUMPDEST
00001311: DUP5
00001312: DUP5
00001313: PUSH2 0x1873
00001316: JUMP
00001317: JUMPDEST
00001318: DUP4
00001319: DUP9
0000131a: PUSH4 0xffffffff
0000131f: AND
00001320: PUSH32 0xba20947a325f450d232530e5f5fce293e7963499d5309a07cee84a269f2f15a6
00001341: DUP6
00001342: PUSH1 0x40
00001344: MLOAD
00001345: PUSH2 0x1350
00001348: SWAP2
00001349: DUP2
0000134a: MSTORE
0000134b: PUSH1 0x20
0000134d: ADD
0000134e: SWAP1
0000134f: JUMP
00001350: JUMPDEST
00001351: PUSH1 0x40
00001353: MLOAD
00001354: DUP1
00001355: SWAP2
00001356: SUB
00001357: SWAP1
00001358: LOG3
00001359: POP
0000135a: POP
0000135b: POP
0000135c: POP
0000135d: POP
0000135e: POP
0000135f: POP
00001360: POP
00001361: JUMP
00001362: JUMPDEST
00001363: PUSH1 0x33
00001365: DUP1
00001366: SLOAD
00001367: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000137c: DUP4
0000137d: DUP2
0000137e: AND
0000137f: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
000013a0: DUP4
000013a1: AND
000013a2: DUP2
000013a3: OR
000013a4: SWAP1
000013a5: SWAP4
000013a6: SSTORE
000013a7: PUSH1 0x40
000013a9: MLOAD
000013aa: SWAP2
000013ab: AND
000013ac: SWAP2
000013ad: SWAP1
000013ae: DUP3
000013af: SWAP1
000013b0: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000013d1: SWAP1
000013d2: PUSH1 0x00
000013d4: SWAP1
000013d5: LOG3
000013d6: POP
000013d7: POP
000013d8: JUMP
000013d9: JUMPDEST
000013da: PUSH2 0x13ed
000013dd: PUSH1 0x97
000013df: PUSH4 0xffffffff
000013e4: DUP1
000013e5: DUP5
000013e6: AND
000013e7: SWAP1
000013e8: PUSH2 0x187d
000013eb: AND
000013ec: JUMP
000013ed: JUMPDEST
000013ee: PUSH2 0x13f6
000013f1: DUP3
000013f2: PUSH2 0x1728
000013f5: JUMP
000013f6: JUMPDEST
000013f7: SWAP1
000013f8: PUSH2 0x08cf
000013fb: JUMPI
000013fc: PUSH1 0x40
000013fe: MLOAD
000013ff: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001420: DUP2
00001421: MSTORE
00001422: PUSH1 0x04
00001424: ADD
00001425: PUSH2 0x06c0
00001428: SWAP2
00001429: SWAP1
0000142a: PUSH2 0x233b
0000142d: JUMP
0000142e: JUMPDEST
0000142f: PUSH1 0x00
00001431: PUSH2 0x0c07
00001434: DUP6
00001435: DUP6
00001436: DUP6
00001437: DUP6
00001438: PUSH2 0x1440
0000143b: DUP11
0000143c: PUSH2 0x1889
0000143f: JUMP
00001440: JUMPDEST
00001441: PUSH1 0x65
00001443: SLOAD
00001444: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001459: AND
0000145a: PUSH2 0x11d6
0000145d: JUMP
0000145e: JUMPDEST
0000145f: PUSH2 0x08cf
00001462: PUSH1 0x97
00001464: PUSH4 0xffffffff
00001469: DUP1
0000146a: DUP6
0000146b: AND
0000146c: SWAP1
0000146d: DUP5
0000146e: SWAP1
0000146f: PUSH2 0x18ab
00001472: AND
00001473: JUMP
00001474: JUMPDEST
00001475: PUSH1 0x00
00001477: SLOAD
00001478: PUSH2 0x0100
0000147b: SWAP1
0000147c: DIV
0000147d: PUSH1 0xff
0000147f: AND
00001480: PUSH2 0x150b
00001483: JUMPI
00001484: PUSH1 0x40
00001486: MLOAD
00001487: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000014a8: DUP2
000014a9: MSTORE
000014aa: PUSH1 0x20
000014ac: PUSH1 0x04
000014ae: DUP3
000014af: ADD
000014b0: MSTORE
000014b1: PUSH1 0x2b
000014b3: PUSH1 0x24
000014b5: DUP3
000014b6: ADD
000014b7: MSTORE
000014b8: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
000014d9: PUSH1 0x44
000014db: DUP3
000014dc: ADD
000014dd: MSTORE
000014de: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
000014ff: PUSH1 0x64
00001501: DUP3
00001502: ADD
00001503: MSTORE
00001504: PUSH1 0x84
00001506: ADD
00001507: PUSH2 0x06c0
0000150a: JUMP
0000150b: JUMPDEST
0000150c: PUSH2 0x1513
0000150f: PUSH2 0x18b6
00001512: JUMP
00001513: JUMPDEST
00001514: PUSH2 0x151c
00001517: DUP4
00001518: PUSH2 0x076b
0000151b: JUMP
0000151c: JUMPDEST
0000151d: PUSH2 0x1525
00001520: DUP3
00001521: PUSH2 0x05fe
00001524: JUMP
00001525: JUMPDEST
00001526: PUSH2 0x0c81
00001529: DUP2
0000152a: PUSH2 0x1362
0000152d: JUMP
0000152e: JUMPDEST
0000152f: PUSH1 0x60
00001531: DUP4
00001532: DUP4
00001533: DUP4
00001534: PUSH1 0x40
00001536: MLOAD
00001537: PUSH1 0x20
00001539: ADD
0000153a: PUSH2 0x1545
0000153d: SWAP4
0000153e: SWAP3
0000153f: SWAP2
00001540: SWAP1
00001541: PUSH2 0x2519
00001544: JUMP
00001545: JUMPDEST
00001546: PUSH1 0x40
00001548: MLOAD
00001549: PUSH1 0x20
0000154b: DUP2
0000154c: DUP4
0000154d: SUB
0000154e: SUB
0000154f: DUP2
00001550: MSTORE
00001551: SWAP1
00001552: PUSH1 0x40
00001554: MSTORE
00001555: SWAP1
00001556: POP
00001557: SWAP4
00001558: SWAP3
00001559: POP
0000155a: POP
0000155b: POP
0000155c: JUMP
0000155d: JUMPDEST
0000155e: PUSH1 0x00
00001560: PUSH2 0x0763
00001563: DUP5
00001564: DUP5
00001565: PUSH2 0x156d
00001568: DUP8
00001569: PUSH2 0x1889
0000156c: JUMP
0000156d: JUMPDEST
0000156e: DUP6
0000156f: PUSH2 0x1955
00001572: JUMP
00001573: JUMPDEST
00001574: PUSH1 0x00
00001576: DUP2
00001577: DUP2
00001578: MSTORE
00001579: PUSH1 0x02
0000157b: DUP4
0000157c: ADD
0000157d: PUSH1 0x20
0000157f: MSTORE
00001580: PUSH1 0x40
00001582: DUP2
00001583: KECCAK256
00001584: SLOAD
00001585: DUP2
00001586: SWAP1
00001587: DUP1
00001588: PUSH2 0x15a2
0000158b: JUMPI
0000158c: PUSH2 0x1595
0000158f: DUP6
00001590: DUP6
00001591: PUSH2 0x1a29
00001594: JUMP
00001595: JUMPDEST
00001596: SWAP3
00001597: POP
00001598: PUSH1 0x00
0000159a: SWAP2
0000159b: POP
0000159c: PUSH2 0x10d0
0000159f: SWAP1
000015a0: POP
000015a1: JUMP
000015a2: JUMPDEST
000015a3: PUSH1 0x01
000015a5: SWAP3
000015a6: POP
000015a7: SWAP1
000015a8: POP
000015a9: PUSH2 0x10d0
000015ac: JUMP
000015ad: JUMPDEST
000015ae: PUSH1 0x60
000015b0: PUSH1 0x00
000015b2: PUSH2 0x15ba
000015b5: DUP4
000015b6: PUSH2 0x1a35
000015b9: JUMP
000015ba: JUMPDEST
000015bb: SWAP1
000015bc: POP
000015bd: DUP1
000015be: PUSH8 0xffffffffffffffff
000015c7: DUP2
000015c8: GT
000015c9: ISZERO
000015ca: PUSH2 0x15d5
000015cd: JUMPI
000015ce: PUSH2 0x15d5
000015d1: PUSH2 0x24ea
000015d4: JUMP
000015d5: JUMPDEST
000015d6: PUSH1 0x40
000015d8: MLOAD
000015d9: SWAP1
000015da: DUP1
000015db: DUP3
000015dc: MSTORE
000015dd: DUP1
000015de: PUSH1 0x20
000015e0: MUL
000015e1: PUSH1 0x20
000015e3: ADD
000015e4: DUP3
000015e5: ADD
000015e6: PUSH1 0x40
000015e8: MSTORE
000015e9: DUP1
000015ea: ISZERO
000015eb: PUSH2 0x15fe
000015ee: JUMPI
000015ef: DUP2
000015f0: PUSH1 0x20
000015f2: ADD
000015f3: PUSH1 0x20
000015f5: DUP3
000015f6: MUL
000015f7: DUP1
000015f8: CALLDATASIZE
000015f9: DUP4
000015fa: CALLDATACOPY
000015fb: ADD
000015fc: SWAP1
000015fd: POP
000015fe: JUMPDEST
000015ff: POP
00001600: SWAP2
00001601: POP
00001602: PUSH1 0x00
00001604: JUMPDEST
00001605: DUP2
00001606: DUP2
00001607: LT
00001608: ISZERO
00001609: PUSH2 0x1181
0000160c: JUMPI
0000160d: PUSH2 0x1616
00001610: DUP5
00001611: DUP3
00001612: PUSH2 0x1a40
00001615: JUMP
00001616: JUMPDEST
00001617: PUSH1 0x00
00001619: SHR
0000161a: DUP4
0000161b: DUP3
0000161c: DUP2
0000161d: MLOAD
0000161e: DUP2
0000161f: LT
00001620: PUSH2 0x162b
00001623: JUMPI
00001624: PUSH2 0x162b
00001627: PUSH2 0x24a8
0000162a: JUMP
0000162b: JUMPDEST
0000162c: PUSH1 0x20
0000162e: SWAP1
0000162f: DUP2
00001630: MUL
00001631: SWAP2
00001632: SWAP1
00001633: SWAP2
00001634: ADD
00001635: ADD
00001636: MSTORE
00001637: PUSH1 0x01
00001639: ADD
0000163a: PUSH2 0x1604
0000163d: JUMP
0000163e: JUMPDEST
0000163f: PUSH1 0x00
00001641: PUSH2 0x0f83
00001644: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
00001665: DUP4
00001666: PUSH2 0x2546
00001669: JUMP
0000166a: JUMPDEST
0000166b: PUSH1 0x00
0000166d: DUP1
0000166e: PUSH2 0x1676
00001671: DUP8
00001672: PUSH2 0x1269
00001675: JUMP
00001676: JUMPDEST
00001677: SWAP1
00001678: POP
00001679: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239
0000169a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016af: AND
000016b0: PUSH4 0x10b83dc0
000016b5: DUP8
000016b6: DUP10
000016b7: DUP5
000016b8: DUP10
000016b9: DUP10
000016ba: DUP10
000016bb: PUSH1 0x40
000016bd: MLOAD
000016be: DUP8
000016bf: PUSH4 0xffffffff
000016c4: AND
000016c5: PUSH1 0xe0
000016c7: SHL
000016c8: DUP2
000016c9: MSTORE
000016ca: PUSH1 0x04
000016cc: ADD
000016cd: PUSH2 0x16da
000016d0: SWAP6
000016d1: SWAP5
000016d2: SWAP4
000016d3: SWAP3
000016d4: SWAP2
000016d5: SWAP1
000016d6: PUSH2 0x255d
000016d9: JUMP
000016da: JUMPDEST
000016db: PUSH1 0x20
000016dd: PUSH1 0x40
000016df: MLOAD
000016e0: DUP1
000016e1: DUP4
000016e2: SUB
000016e3: DUP2
000016e4: DUP6
000016e5: DUP9
000016e6: GAS
000016e7: CALL
000016e8: ISZERO
000016e9: DUP1
000016ea: ISZERO
000016eb: PUSH2 0x16f8
000016ee: JUMPI
000016ef: RETURNDATASIZE
000016f0: PUSH1 0x00
000016f2: DUP1
000016f3: RETURNDATACOPY
000016f4: RETURNDATASIZE
000016f5: PUSH1 0x00
000016f7: REVERT
000016f8: JUMPDEST
000016f9: POP
000016fa: POP
000016fb: POP
000016fc: POP
000016fd: POP
000016fe: PUSH1 0x40
00001700: MLOAD
00001701: RETURNDATASIZE
00001702: PUSH1 0x1f
00001704: NOT
00001705: PUSH1 0x1f
00001707: DUP3
00001708: ADD
00001709: AND
0000170a: DUP3
0000170b: ADD
0000170c: DUP1
0000170d: PUSH1 0x40
0000170f: MSTORE
00001710: POP
00001711: DUP2
00001712: ADD
00001713: SWAP1
00001714: PUSH2 0x171d
00001717: SWAP2
00001718: SWAP1
00001719: PUSH2 0x25bd
0000171c: JUMP
0000171d: JUMPDEST
0000171e: SWAP8
0000171f: SWAP7
00001720: POP
00001721: POP
00001722: POP
00001723: POP
00001724: POP
00001725: POP
00001726: POP
00001727: JUMP
00001728: JUMPDEST
00001729: PUSH1 0x60
0000172b: PUSH2 0x1739
0000172e: DUP3
0000172f: PUSH4 0xffffffff
00001734: AND
00001735: PUSH2 0x1a4c
00001738: JUMP
00001739: JUMPDEST
0000173a: PUSH1 0x40
0000173c: MLOAD
0000173d: PUSH1 0x20
0000173f: ADD
00001740: PUSH2 0x1749
00001743: SWAP2
00001744: SWAP1
00001745: PUSH2 0x25d6
00001748: JUMP
00001749: JUMPDEST
0000174a: PUSH1 0x40
0000174c: MLOAD
0000174d: PUSH1 0x20
0000174f: DUP2
00001750: DUP4
00001751: SUB
00001752: SUB
00001753: DUP2
00001754: MSTORE
00001755: SWAP1
00001756: PUSH1 0x40
00001758: MSTORE
00001759: SWAP1
0000175a: POP
0000175b: SWAP2
0000175c: SWAP1
0000175d: POP
0000175e: JUMP
0000175f: JUMPDEST
00001760: PUSH1 0x00
00001762: PUSH2 0x176e
00001765: PUSH1 0x20
00001767: DUP3
00001768: DUP5
00001769: DUP7
0000176a: PUSH2 0x261b
0000176d: JUMP
0000176e: JUMPDEST
0000176f: PUSH2 0x1777
00001772: SWAP2
00001773: PUSH2 0x2645
00001776: JUMP
00001777: JUMPDEST
00001778: SWAP4
00001779: SWAP3
0000177a: POP
0000177b: POP
0000177c: POP
0000177d: JUMP
0000177e: JUMPDEST
0000177f: PUSH1 0x00
00001781: PUSH2 0x176e
00001784: PUSH1 0x40
00001786: PUSH1 0x20
00001788: DUP5
00001789: DUP7
0000178a: PUSH2 0x261b
0000178d: JUMP
0000178e: JUMPDEST
0000178f: CALLDATASIZE
00001790: PUSH1 0x00
00001792: PUSH2 0x10cb
00001795: DUP4
00001796: PUSH1 0x40
00001798: DUP2
00001799: DUP8
0000179a: PUSH2 0x261b
0000179d: JUMP
0000179e: JUMPDEST
0000179f: PUSH1 0x00
000017a1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017b6: DUP3
000017b7: GT
000017b8: ISZERO
000017b9: PUSH2 0x1843
000017bc: JUMPI
000017bd: PUSH1 0x40
000017bf: MLOAD
000017c0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000017e1: DUP2
000017e2: MSTORE
000017e3: PUSH1 0x20
000017e5: PUSH1 0x04
000017e7: DUP3
000017e8: ADD
000017e9: MSTORE
000017ea: PUSH1 0x24
000017ec: DUP1
000017ed: DUP3
000017ee: ADD
000017ef: MSTORE
000017f0: PUSH32 0x5479706543617374733a2062797465733332546f41646472657373206f766572
00001811: PUSH1 0x44
00001813: DUP3
00001814: ADD
00001815: MSTORE
00001816: PUSH32 0x666c6f7700000000000000000000000000000000000000000000000000000000
00001837: PUSH1 0x64
00001839: DUP3
0000183a: ADD
0000183b: MSTORE
0000183c: PUSH1 0x84
0000183e: ADD
0000183f: PUSH2 0x06c0
00001842: JUMP
00001843: JUMPDEST
00001844: POP
00001845: SWAP1
00001846: JUMP
00001847: JUMPDEST
00001848: PUSH1 0x00
0000184a: PUSH2 0x0f83
0000184d: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
0000186e: DUP4
0000186f: PUSH2 0x2681
00001872: JUMP
00001873: JUMPDEST
00001874: PUSH2 0x0b7b
00001877: DUP5
00001878: DUP5
00001879: PUSH2 0x1b0a
0000187c: JUMP
0000187d: JUMPDEST
0000187e: PUSH1 0x00
00001880: PUSH2 0x1777
00001883: DUP4
00001884: DUP4
00001885: PUSH2 0x1c64
00001888: JUMP
00001889: JUMPDEST
0000188a: PUSH4 0xffffffff
0000188f: DUP2
00001890: AND
00001891: PUSH1 0x00
00001893: SWAP1
00001894: DUP2
00001895: MSTORE
00001896: PUSH1 0xca
00001898: PUSH1 0x20
0000189a: MSTORE
0000189b: PUSH1 0x40
0000189d: SWAP1
0000189e: KECCAK256
0000189f: SLOAD
000018a0: PUSH1 0x60
000018a2: SWAP1
000018a3: PUSH2 0x0f83
000018a6: SWAP1
000018a7: PUSH2 0x1c81
000018aa: JUMP
000018ab: JUMPDEST
000018ac: PUSH2 0x0b7b
000018af: DUP4
000018b0: DUP4
000018b1: DUP4
000018b2: PUSH2 0x1c9f
000018b5: JUMP
000018b6: JUMPDEST
000018b7: PUSH1 0x00
000018b9: SLOAD
000018ba: PUSH2 0x0100
000018bd: SWAP1
000018be: DIV
000018bf: PUSH1 0xff
000018c1: AND
000018c2: PUSH2 0x194d
000018c5: JUMPI
000018c6: PUSH1 0x40
000018c8: MLOAD
000018c9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000018ea: DUP2
000018eb: MSTORE
000018ec: PUSH1 0x20
000018ee: PUSH1 0x04
000018f0: DUP3
000018f1: ADD
000018f2: MSTORE
000018f3: PUSH1 0x2b
000018f5: PUSH1 0x24
000018f7: DUP3
000018f8: ADD
000018f9: MSTORE
000018fa: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
0000191b: PUSH1 0x44
0000191d: DUP3
0000191e: ADD
0000191f: MSTORE
00001920: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00001941: PUSH1 0x64
00001943: DUP3
00001944: ADD
00001945: MSTORE
00001946: PUSH1 0x84
00001948: ADD
00001949: PUSH2 0x06c0
0000194c: JUMP
0000194d: JUMPDEST
0000194e: PUSH2 0x0b24
00001951: PUSH2 0x1cbc
00001954: JUMP
00001955: JUMPDEST
00001956: PUSH1 0x00
00001958: DUP1
00001959: PUSH2 0x1961
0000195c: DUP7
0000195d: PUSH2 0x1269
00001960: JUMP
00001961: JUMPDEST
00001962: PUSH1 0x40
00001964: MLOAD
00001965: PUSH32 0x81d2ea9500000000000000000000000000000000000000000000000000000000
00001986: DUP2
00001987: MSTORE
00001988: SWAP1
00001989: SWAP2
0000198a: POP
0000198b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019a0: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239
000019c1: AND
000019c2: SWAP1
000019c3: PUSH4 0x81d2ea95
000019c8: SWAP1
000019c9: PUSH2 0x19de
000019cc: SWAP1
000019cd: DUP10
000019ce: SWAP1
000019cf: DUP6
000019d0: SWAP1
000019d1: DUP11
000019d2: SWAP1
000019d3: DUP11
000019d4: SWAP1
000019d5: DUP11
000019d6: SWAP1
000019d7: PUSH1 0x04
000019d9: ADD
000019da: PUSH2 0x255d
000019dd: JUMP
000019de: JUMPDEST
000019df: PUSH1 0x20
000019e1: PUSH1 0x40
000019e3: MLOAD
000019e4: DUP1
000019e5: DUP4
000019e6: SUB
000019e7: DUP2
000019e8: DUP7
000019e9: GAS
000019ea: STATICCALL
000019eb: ISZERO
000019ec: DUP1
000019ed: ISZERO
000019ee: PUSH2 0x19fb
000019f1: JUMPI
000019f2: RETURNDATASIZE
000019f3: PUSH1 0x00
000019f5: DUP1
000019f6: RETURNDATACOPY
000019f7: RETURNDATASIZE
000019f8: PUSH1 0x00
000019fa: REVERT
000019fb: JUMPDEST
000019fc: POP
000019fd: POP
000019fe: POP
000019ff: POP
00001a00: PUSH1 0x40
00001a02: MLOAD
00001a03: RETURNDATASIZE
00001a04: PUSH1 0x1f
00001a06: NOT
00001a07: PUSH1 0x1f
00001a09: DUP3
00001a0a: ADD
00001a0b: AND
00001a0c: DUP3
00001a0d: ADD
00001a0e: DUP1
00001a0f: PUSH1 0x40
00001a11: MSTORE
00001a12: POP
00001a13: DUP2
00001a14: ADD
00001a15: SWAP1
00001a16: PUSH2 0x1a1f
00001a19: SWAP2
00001a1a: SWAP1
00001a1b: PUSH2 0x25bd
00001a1e: JUMP
00001a1f: JUMPDEST
00001a20: SWAP7
00001a21: SWAP6
00001a22: POP
00001a23: POP
00001a24: POP
00001a25: POP
00001a26: POP
00001a27: POP
00001a28: JUMP
00001a29: JUMPDEST
00001a2a: PUSH1 0x00
00001a2c: PUSH2 0x1777
00001a2f: DUP4
00001a30: DUP4
00001a31: PUSH2 0x1d5c
00001a34: JUMP
00001a35: JUMPDEST
00001a36: PUSH1 0x00
00001a38: PUSH2 0x0f83
00001a3b: DUP3
00001a3c: PUSH2 0x1d74
00001a3f: JUMP
00001a40: JUMPDEST
00001a41: PUSH1 0x00
00001a43: PUSH2 0x1777
00001a46: DUP4
00001a47: DUP4
00001a48: PUSH2 0x1d7e
00001a4b: JUMP
00001a4c: JUMPDEST
00001a4d: PUSH1 0x60
00001a4f: PUSH1 0x00
00001a51: PUSH2 0x1a59
00001a54: DUP4
00001a55: PUSH2 0x1da8
00001a58: JUMP
00001a59: JUMPDEST
00001a5a: PUSH1 0x01
00001a5c: ADD
00001a5d: SWAP1
00001a5e: POP
00001a5f: PUSH1 0x00
00001a61: DUP2
00001a62: PUSH8 0xffffffffffffffff
00001a6b: DUP2
00001a6c: GT
00001a6d: ISZERO
00001a6e: PUSH2 0x1a79
00001a71: JUMPI
00001a72: PUSH2 0x1a79
00001a75: PUSH2 0x24ea
00001a78: JUMP
00001a79: JUMPDEST
00001a7a: PUSH1 0x40
00001a7c: MLOAD
00001a7d: SWAP1
00001a7e: DUP1
00001a7f: DUP3
00001a80: MSTORE
00001a81: DUP1
00001a82: PUSH1 0x1f
00001a84: ADD
00001a85: PUSH1 0x1f
00001a87: NOT
00001a88: AND
00001a89: PUSH1 0x20
00001a8b: ADD
00001a8c: DUP3
00001a8d: ADD
00001a8e: PUSH1 0x40
00001a90: MSTORE
00001a91: DUP1
00001a92: ISZERO
00001a93: PUSH2 0x1aa3
00001a96: JUMPI
00001a97: PUSH1 0x20
00001a99: DUP3
00001a9a: ADD
00001a9b: DUP2
00001a9c: DUP1
00001a9d: CALLDATASIZE
00001a9e: DUP4
00001a9f: CALLDATACOPY
00001aa0: ADD
00001aa1: SWAP1
00001aa2: POP
00001aa3: JUMPDEST
00001aa4: POP
00001aa5: SWAP1
00001aa6: POP
00001aa7: DUP2
00001aa8: DUP2
00001aa9: ADD
00001aaa: PUSH1 0x20
00001aac: ADD
00001aad: JUMPDEST
00001aae: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001acf: ADD
00001ad0: PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000
00001af1: PUSH1 0x0a
00001af3: DUP7
00001af4: MOD
00001af5: BYTE
00001af6: DUP2
00001af7: MSTORE8
00001af8: PUSH1 0x0a
00001afa: DUP6
00001afb: DIV
00001afc: SWAP5
00001afd: POP
00001afe: DUP5
00001aff: PUSH2 0x1aad
00001b02: JUMPI
00001b03: POP
00001b04: SWAP4
00001b05: SWAP3
00001b06: POP
00001b07: POP
00001b08: POP
00001b09: JUMP
00001b0a: JUMPDEST
00001b0b: DUP1
00001b0c: SELFBALANCE
00001b0d: LT
00001b0e: ISZERO
00001b0f: PUSH2 0x1b74
00001b12: JUMPI
00001b13: PUSH1 0x40
00001b15: MLOAD
00001b16: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001b37: DUP2
00001b38: MSTORE
00001b39: PUSH1 0x20
00001b3b: PUSH1 0x04
00001b3d: DUP3
00001b3e: ADD
00001b3f: MSTORE
00001b40: PUSH1 0x1d
00001b42: PUSH1 0x24
00001b44: DUP3
00001b45: ADD
00001b46: MSTORE
00001b47: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e6365000000
00001b68: PUSH1 0x44
00001b6a: DUP3
00001b6b: ADD
00001b6c: MSTORE
00001b6d: PUSH1 0x64
00001b6f: ADD
00001b70: PUSH2 0x06c0
00001b73: JUMP
00001b74: JUMPDEST
00001b75: PUSH1 0x00
00001b77: DUP3
00001b78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b8d: AND
00001b8e: DUP3
00001b8f: PUSH1 0x40
00001b91: MLOAD
00001b92: PUSH1 0x00
00001b94: PUSH1 0x40
00001b96: MLOAD
00001b97: DUP1
00001b98: DUP4
00001b99: SUB
00001b9a: DUP2
00001b9b: DUP6
00001b9c: DUP8
00001b9d: GAS
00001b9e: CALL
00001b9f: SWAP3
00001ba0: POP
00001ba1: POP
00001ba2: POP
00001ba3: RETURNDATASIZE
00001ba4: DUP1
00001ba5: PUSH1 0x00
00001ba7: DUP2
00001ba8: EQ
00001ba9: PUSH2 0x1bce
00001bac: JUMPI
00001bad: PUSH1 0x40
00001baf: MLOAD
00001bb0: SWAP2
00001bb1: POP
00001bb2: PUSH1 0x1f
00001bb4: NOT
00001bb5: PUSH1 0x3f
00001bb7: RETURNDATASIZE
00001bb8: ADD
00001bb9: AND
00001bba: DUP3
00001bbb: ADD
00001bbc: PUSH1 0x40
00001bbe: MSTORE
00001bbf: RETURNDATASIZE
00001bc0: DUP3
00001bc1: MSTORE
00001bc2: RETURNDATASIZE
00001bc3: PUSH1 0x00
00001bc5: PUSH1 0x20
00001bc7: DUP5
00001bc8: ADD
00001bc9: RETURNDATACOPY
00001bca: PUSH2 0x1bd3
00001bcd: JUMP
00001bce: JUMPDEST
00001bcf: PUSH1 0x60
00001bd1: SWAP2
00001bd2: POP
00001bd3: JUMPDEST
00001bd4: POP
00001bd5: POP
00001bd6: SWAP1
00001bd7: POP
00001bd8: DUP1
00001bd9: PUSH2 0x0c81
00001bdc: JUMPI
00001bdd: PUSH1 0x40
00001bdf: MLOAD
00001be0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001c01: DUP2
00001c02: MSTORE
00001c03: PUSH1 0x20
00001c05: PUSH1 0x04
00001c07: DUP3
00001c08: ADD
00001c09: MSTORE
00001c0a: PUSH1 0x3a
00001c0c: PUSH1 0x24
00001c0e: DUP3
00001c0f: ADD
00001c10: MSTORE
00001c11: PUSH32 0x416464726573733a20756e61626c6520746f2073656e642076616c75652c2072
00001c32: PUSH1 0x44
00001c34: DUP3
00001c35: ADD
00001c36: MSTORE
00001c37: PUSH32 0x6563697069656e74206d61792068617665207265766572746564000000000000
00001c58: PUSH1 0x64
00001c5a: DUP3
00001c5b: ADD
00001c5c: MSTORE
00001c5d: PUSH1 0x84
00001c5f: ADD
00001c60: PUSH2 0x06c0
00001c63: JUMP
00001c64: JUMPDEST
00001c65: PUSH1 0x00
00001c67: DUP2
00001c68: DUP2
00001c69: MSTORE
00001c6a: PUSH1 0x02
00001c6c: DUP4
00001c6d: ADD
00001c6e: PUSH1 0x20
00001c70: MSTORE
00001c71: PUSH1 0x40
00001c73: DUP2
00001c74: KECCAK256
00001c75: DUP2
00001c76: SWAP1
00001c77: SSTORE
00001c78: PUSH2 0x1777
00001c7b: DUP4
00001c7c: DUP4
00001c7d: PUSH2 0x1e8a
00001c80: JUMP
00001c81: JUMPDEST
00001c82: PUSH1 0x60
00001c84: PUSH2 0x0f83
00001c87: PUSH1 0x00
00001c89: DUP4
00001c8a: CALLER
00001c8b: PUSH1 0x40
00001c8d: MLOAD
00001c8e: DUP1
00001c8f: PUSH1 0x20
00001c91: ADD
00001c92: PUSH1 0x40
00001c94: MSTORE
00001c95: DUP1
00001c96: PUSH1 0x00
00001c98: DUP2
00001c99: MSTORE
00001c9a: POP
00001c9b: PUSH2 0x1e96
00001c9e: JUMP
00001c9f: JUMPDEST
00001ca0: PUSH1 0x00
00001ca2: DUP3
00001ca3: DUP2
00001ca4: MSTORE
00001ca5: PUSH1 0x02
00001ca7: DUP5
00001ca8: ADD
00001ca9: PUSH1 0x20
00001cab: MSTORE
00001cac: PUSH1 0x40
00001cae: DUP2
00001caf: KECCAK256
00001cb0: DUP3
00001cb1: SWAP1
00001cb2: SSTORE
00001cb3: PUSH2 0x0763
00001cb6: DUP5
00001cb7: DUP5
00001cb8: PUSH2 0x1ecb
00001cbb: JUMP
00001cbc: JUMPDEST
00001cbd: PUSH1 0x00
00001cbf: SLOAD
00001cc0: PUSH2 0x0100
00001cc3: SWAP1
00001cc4: DIV
00001cc5: PUSH1 0xff
00001cc7: AND
00001cc8: PUSH2 0x1d53
00001ccb: JUMPI
00001ccc: PUSH1 0x40
00001cce: MLOAD
00001ccf: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001cf0: DUP2
00001cf1: MSTORE
00001cf2: PUSH1 0x20
00001cf4: PUSH1 0x04
00001cf6: DUP3
00001cf7: ADD
00001cf8: MSTORE
00001cf9: PUSH1 0x2b
00001cfb: PUSH1 0x24
00001cfd: DUP3
00001cfe: ADD
00001cff: MSTORE
00001d00: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00001d21: PUSH1 0x44
00001d23: DUP3
00001d24: ADD
00001d25: MSTORE
00001d26: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00001d47: PUSH1 0x64
00001d49: DUP3
00001d4a: ADD
00001d4b: MSTORE
00001d4c: PUSH1 0x84
00001d4e: ADD
00001d4f: PUSH2 0x06c0
00001d52: JUMP
00001d53: JUMPDEST
00001d54: PUSH2 0x0b24
00001d57: CALLER
00001d58: PUSH2 0x1362
00001d5b: JUMP
00001d5c: JUMPDEST
00001d5d: PUSH1 0x00
00001d5f: DUP2
00001d60: DUP2
00001d61: MSTORE
00001d62: PUSH1 0x01
00001d64: DUP4
00001d65: ADD
00001d66: PUSH1 0x20
00001d68: MSTORE
00001d69: PUSH1 0x40
00001d6b: DUP2
00001d6c: KECCAK256
00001d6d: SLOAD
00001d6e: ISZERO
00001d6f: ISZERO
00001d70: PUSH2 0x1777
00001d73: JUMP
00001d74: JUMPDEST
00001d75: PUSH1 0x00
00001d77: PUSH2 0x0f83
00001d7a: DUP3
00001d7b: SLOAD
00001d7c: SWAP1
00001d7d: JUMP
00001d7e: JUMPDEST
00001d7f: PUSH1 0x00
00001d81: DUP3
00001d82: PUSH1 0x00
00001d84: ADD
00001d85: DUP3
00001d86: DUP2
00001d87: SLOAD
00001d88: DUP2
00001d89: LT
00001d8a: PUSH2 0x1d95
00001d8d: JUMPI
00001d8e: PUSH2 0x1d95
00001d91: PUSH2 0x24a8
00001d94: JUMP
00001d95: JUMPDEST
00001d96: SWAP1
00001d97: PUSH1 0x00
00001d99: MSTORE
00001d9a: PUSH1 0x20
00001d9c: PUSH1 0x00
00001d9e: KECCAK256
00001d9f: ADD
00001da0: SLOAD
00001da1: SWAP1
00001da2: POP
00001da3: SWAP3
00001da4: SWAP2
00001da5: POP
00001da6: POP
00001da7: JUMP
00001da8: JUMPDEST
00001da9: PUSH1 0x00
00001dab: DUP1
00001dac: PUSH27 0x184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000
00001dc8: DUP4
00001dc9: LT
00001dca: PUSH2 0x1df1
00001dcd: JUMPI
00001dce: PUSH27 0x184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000
00001dea: DUP4
00001deb: DIV
00001dec: SWAP3
00001ded: POP
00001dee: PUSH1 0x40
00001df0: ADD
00001df1: JUMPDEST
00001df2: PUSH14 0x04ee2d6d415b85acef8100000000
00001e01: DUP4
00001e02: LT
00001e03: PUSH2 0x1e1d
00001e06: JUMPI
00001e07: PUSH14 0x04ee2d6d415b85acef8100000000
00001e16: DUP4
00001e17: DIV
00001e18: SWAP3
00001e19: POP
00001e1a: PUSH1 0x20
00001e1c: ADD
00001e1d: JUMPDEST
00001e1e: PUSH7 0x2386f26fc10000
00001e26: DUP4
00001e27: LT
00001e28: PUSH2 0x1e3b
00001e2b: JUMPI
00001e2c: PUSH7 0x2386f26fc10000
00001e34: DUP4
00001e35: DIV
00001e36: SWAP3
00001e37: POP
00001e38: PUSH1 0x10
00001e3a: ADD
00001e3b: JUMPDEST
00001e3c: PUSH4 0x05f5e100
00001e41: DUP4
00001e42: LT
00001e43: PUSH2 0x1e53
00001e46: JUMPI
00001e47: PUSH4 0x05f5e100
00001e4c: DUP4
00001e4d: DIV
00001e4e: SWAP3
00001e4f: POP
00001e50: PUSH1 0x08
00001e52: ADD
00001e53: JUMPDEST
00001e54: PUSH2 0x2710
00001e57: DUP4
00001e58: LT
00001e59: PUSH2 0x1e67
00001e5c: JUMPI
00001e5d: PUSH2 0x2710
00001e60: DUP4
00001e61: DIV
00001e62: SWAP3
00001e63: POP
00001e64: PUSH1 0x04
00001e66: ADD
00001e67: JUMPDEST
00001e68: PUSH1 0x64
00001e6a: DUP4
00001e6b: LT
00001e6c: PUSH2 0x1e79
00001e6f: JUMPI
00001e70: PUSH1 0x64
00001e72: DUP4
00001e73: DIV
00001e74: SWAP3
00001e75: POP
00001e76: PUSH1 0x02
00001e78: ADD
00001e79: JUMPDEST
00001e7a: PUSH1 0x0a
00001e7c: DUP4
00001e7d: LT
00001e7e: PUSH2 0x0f83
00001e81: JUMPI
00001e82: PUSH1 0x01
00001e84: ADD
00001e85: SWAP3
00001e86: SWAP2
00001e87: POP
00001e88: POP
00001e89: JUMP
00001e8a: JUMPDEST
00001e8b: PUSH1 0x00
00001e8d: PUSH2 0x1777
00001e90: DUP4
00001e91: DUP4
00001e92: PUSH2 0x1ed7
00001e95: JUMP
00001e96: JUMPDEST
00001e97: PUSH1 0x60
00001e99: PUSH1 0x01
00001e9b: DUP6
00001e9c: DUP6
00001e9d: DUP6
00001e9e: DUP6
00001e9f: PUSH1 0x40
00001ea1: MLOAD
00001ea2: PUSH1 0x20
00001ea4: ADD
00001ea5: PUSH2 0x1eb2
00001ea8: SWAP6
00001ea9: SWAP5
00001eaa: SWAP4
00001eab: SWAP3
00001eac: SWAP2
00001ead: SWAP1
00001eae: PUSH2 0x26bc
00001eb1: JUMP
00001eb2: JUMPDEST
00001eb3: PUSH1 0x40
00001eb5: MLOAD
00001eb6: PUSH1 0x20
00001eb8: DUP2
00001eb9: DUP4
00001eba: SUB
00001ebb: SUB
00001ebc: DUP2
00001ebd: MSTORE
00001ebe: SWAP1
00001ebf: PUSH1 0x40
00001ec1: MSTORE
00001ec2: SWAP1
00001ec3: POP
00001ec4: SWAP5
00001ec5: SWAP4
00001ec6: POP
00001ec7: POP
00001ec8: POP
00001ec9: POP
00001eca: JUMP
00001ecb: JUMPDEST
00001ecc: PUSH1 0x00
00001ece: PUSH2 0x1777
00001ed1: DUP4
00001ed2: DUP4
00001ed3: PUSH2 0x1fca
00001ed6: JUMP
00001ed7: JUMPDEST
00001ed8: PUSH1 0x00
00001eda: DUP2
00001edb: DUP2
00001edc: MSTORE
00001edd: PUSH1 0x01
00001edf: DUP4
00001ee0: ADD
00001ee1: PUSH1 0x20
00001ee3: MSTORE
00001ee4: PUSH1 0x40
00001ee6: DUP2
00001ee7: KECCAK256
00001ee8: SLOAD
00001ee9: DUP1
00001eea: ISZERO
00001eeb: PUSH2 0x1fc0
00001eee: JUMPI
00001eef: PUSH1 0x00
00001ef1: PUSH2 0x1efb
00001ef4: PUSH1 0x01
00001ef6: DUP4
00001ef7: PUSH2 0x2495
00001efa: JUMP
00001efb: JUMPDEST
00001efc: DUP6
00001efd: SLOAD
00001efe: SWAP1
00001eff: SWAP2
00001f00: POP
00001f01: PUSH1 0x00
00001f03: SWAP1
00001f04: PUSH2 0x1f0f
00001f07: SWAP1
00001f08: PUSH1 0x01
00001f0a: SWAP1
00001f0b: PUSH2 0x2495
00001f0e: JUMP
00001f0f: JUMPDEST
00001f10: SWAP1
00001f11: POP
00001f12: DUP2
00001f13: DUP2
00001f14: EQ
00001f15: PUSH2 0x1f74
00001f18: JUMPI
00001f19: PUSH1 0x00
00001f1b: DUP7
00001f1c: PUSH1 0x00
00001f1e: ADD
00001f1f: DUP3
00001f20: DUP2
00001f21: SLOAD
00001f22: DUP2
00001f23: LT
00001f24: PUSH2 0x1f2f
00001f27: JUMPI
00001f28: PUSH2 0x1f2f
00001f2b: PUSH2 0x24a8
00001f2e: JUMP
00001f2f: JUMPDEST
00001f30: SWAP1
00001f31: PUSH1 0x00
00001f33: MSTORE
00001f34: PUSH1 0x20
00001f36: PUSH1 0x00
00001f38: KECCAK256
00001f39: ADD
00001f3a: SLOAD
00001f3b: SWAP1
00001f3c: POP
00001f3d: DUP1
00001f3e: DUP8
00001f3f: PUSH1 0x00
00001f41: ADD
00001f42: DUP5
00001f43: DUP2
00001f44: SLOAD
00001f45: DUP2
00001f46: LT
00001f47: PUSH2 0x1f52
00001f4a: JUMPI
00001f4b: PUSH2 0x1f52
00001f4e: PUSH2 0x24a8
00001f51: JUMP
00001f52: JUMPDEST
00001f53: PUSH1 0x00
00001f55: SWAP2
00001f56: DUP3
00001f57: MSTORE
00001f58: PUSH1 0x20
00001f5a: DUP1
00001f5b: DUP4
00001f5c: KECCAK256
00001f5d: SWAP1
00001f5e: SWAP2
00001f5f: ADD
00001f60: SWAP3
00001f61: SWAP1
00001f62: SWAP3
00001f63: SSTORE
00001f64: SWAP2
00001f65: DUP3
00001f66: MSTORE
00001f67: PUSH1 0x01
00001f69: DUP9
00001f6a: ADD
00001f6b: SWAP1
00001f6c: MSTORE
00001f6d: PUSH1 0x40
00001f6f: SWAP1
00001f70: KECCAK256
00001f71: DUP4
00001f72: SWAP1
00001f73: SSTORE
00001f74: JUMPDEST
00001f75: DUP6
00001f76: SLOAD
00001f77: DUP7
00001f78: SWAP1
00001f79: DUP1
00001f7a: PUSH2 0x1f85
00001f7d: JUMPI
00001f7e: PUSH2 0x1f85
00001f81: PUSH2 0x2741
00001f84: JUMP
00001f85: JUMPDEST
00001f86: PUSH1 0x01
00001f88: SWAP1
00001f89: SUB
00001f8a: DUP2
00001f8b: DUP2
00001f8c: SWAP1
00001f8d: PUSH1 0x00
00001f8f: MSTORE
00001f90: PUSH1 0x20
00001f92: PUSH1 0x00
00001f94: KECCAK256
00001f95: ADD
00001f96: PUSH1 0x00
00001f98: SWAP1
00001f99: SSTORE
00001f9a: SWAP1
00001f9b: SSTORE
00001f9c: DUP6
00001f9d: PUSH1 0x01
00001f9f: ADD
00001fa0: PUSH1 0x00
00001fa2: DUP7
00001fa3: DUP2
00001fa4: MSTORE
00001fa5: PUSH1 0x20
00001fa7: ADD
00001fa8: SWAP1
00001fa9: DUP2
00001faa: MSTORE
00001fab: PUSH1 0x20
00001fad: ADD
00001fae: PUSH1 0x00
00001fb0: KECCAK256
00001fb1: PUSH1 0x00
00001fb3: SWAP1
00001fb4: SSTORE
00001fb5: PUSH1 0x01
00001fb7: SWAP4
00001fb8: POP
00001fb9: POP
00001fba: POP
00001fbb: POP
00001fbc: PUSH2 0x0f83
00001fbf: JUMP
00001fc0: JUMPDEST
00001fc1: PUSH1 0x00
00001fc3: SWAP2
00001fc4: POP
00001fc5: POP
00001fc6: PUSH2 0x0f83
00001fc9: JUMP
00001fca: JUMPDEST
00001fcb: PUSH1 0x00
00001fcd: DUP2
00001fce: DUP2
00001fcf: MSTORE
00001fd0: PUSH1 0x01
00001fd2: DUP4
00001fd3: ADD
00001fd4: PUSH1 0x20
00001fd6: MSTORE
00001fd7: PUSH1 0x40
00001fd9: DUP2
00001fda: KECCAK256
00001fdb: SLOAD
00001fdc: PUSH2 0x2011
00001fdf: JUMPI
00001fe0: POP
00001fe1: DUP2
00001fe2: SLOAD
00001fe3: PUSH1 0x01
00001fe5: DUP2
00001fe6: DUP2
00001fe7: ADD
00001fe8: DUP5
00001fe9: SSTORE
00001fea: PUSH1 0x00
00001fec: DUP5
00001fed: DUP2
00001fee: MSTORE
00001fef: PUSH1 0x20
00001ff1: DUP1
00001ff2: DUP3
00001ff3: KECCAK256
00001ff4: SWAP1
00001ff5: SWAP4
00001ff6: ADD
00001ff7: DUP5
00001ff8: SWAP1
00001ff9: SSTORE
00001ffa: DUP5
00001ffb: SLOAD
00001ffc: DUP5
00001ffd: DUP3
00001ffe: MSTORE
00001fff: DUP3
00002000: DUP7
00002001: ADD
00002002: SWAP1
00002003: SWAP4
00002004: MSTORE
00002005: PUSH1 0x40
00002007: SWAP1
00002008: KECCAK256
00002009: SWAP2
0000200a: SWAP1
0000200b: SWAP2
0000200c: SSTORE
0000200d: PUSH2 0x0f83
00002010: JUMP
00002011: JUMPDEST
00002012: POP
00002013: PUSH1 0x00
00002015: PUSH2 0x0f83
00002018: JUMP
00002019: JUMPDEST
0000201a: DUP1
0000201b: CALLDATALOAD
0000201c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002031: DUP2
00002032: AND
00002033: DUP2
00002034: EQ
00002035: PUSH2 0x203d
00002038: JUMPI
00002039: PUSH1 0x00
0000203b: DUP1
0000203c: REVERT
0000203d: JUMPDEST
0000203e: SWAP2
0000203f: SWAP1
00002040: POP
00002041: JUMP
00002042: JUMPDEST
00002043: PUSH1 0x00
00002045: PUSH1 0x20
00002047: DUP3
00002048: DUP5
00002049: SUB
0000204a: SLT
0000204b: ISZERO
0000204c: PUSH2 0x2054
0000204f: JUMPI
00002050: PUSH1 0x00
00002052: DUP1
00002053: REVERT
00002054: JUMPDEST
00002055: PUSH2 0x1777
00002058: DUP3
00002059: PUSH2 0x2019
0000205c: JUMP
0000205d: JUMPDEST
0000205e: DUP1
0000205f: CALLDATALOAD
00002060: PUSH4 0xffffffff
00002065: DUP2
00002066: AND
00002067: DUP2
00002068: EQ
00002069: PUSH2 0x203d
0000206c: JUMPI
0000206d: PUSH1 0x00
0000206f: DUP1
00002070: REVERT
00002071: JUMPDEST
00002072: PUSH1 0x00
00002074: PUSH1 0x20
00002076: DUP3
00002077: DUP5
00002078: SUB
00002079: SLT
0000207a: ISZERO
0000207b: PUSH2 0x2083
0000207e: JUMPI
0000207f: PUSH1 0x00
00002081: DUP1
00002082: REVERT
00002083: JUMPDEST
00002084: PUSH2 0x1777
00002087: DUP3
00002088: PUSH2 0x205d
0000208b: JUMP
0000208c: JUMPDEST
0000208d: PUSH1 0x20
0000208f: DUP1
00002090: DUP3
00002091: MSTORE
00002092: DUP3
00002093: MLOAD
00002094: DUP3
00002095: DUP3
00002096: ADD
00002097: DUP2
00002098: SWAP1
00002099: MSTORE
0000209a: PUSH1 0x00
0000209c: SWAP2
0000209d: SWAP1
0000209e: DUP5
0000209f: DUP3
000020a0: ADD
000020a1: SWAP1
000020a2: PUSH1 0x40
000020a4: DUP6
000020a5: ADD
000020a6: SWAP1
000020a7: DUP5
000020a8: JUMPDEST
000020a9: DUP2
000020aa: DUP2
000020ab: LT
000020ac: ISZERO
000020ad: PUSH2 0x20ca
000020b0: JUMPI
000020b1: DUP4
000020b2: MLOAD
000020b3: PUSH4 0xffffffff
000020b8: AND
000020b9: DUP4
000020ba: MSTORE
000020bb: SWAP3
000020bc: DUP5
000020bd: ADD
000020be: SWAP3
000020bf: SWAP2
000020c0: DUP5
000020c1: ADD
000020c2: SWAP2
000020c3: PUSH1 0x01
000020c5: ADD
000020c6: PUSH2 0x20a8
000020c9: JUMP
000020ca: JUMPDEST
000020cb: POP
000020cc: SWAP1
000020cd: SWAP7
000020ce: SWAP6
000020cf: POP
000020d0: POP
000020d1: POP
000020d2: POP
000020d3: POP
000020d4: POP
000020d5: JUMP
000020d6: JUMPDEST
000020d7: PUSH1 0x00
000020d9: DUP1
000020da: PUSH1 0x40
000020dc: DUP4
000020dd: DUP6
000020de: SUB
000020df: SLT
000020e0: ISZERO
000020e1: PUSH2 0x20e9
000020e4: JUMPI
000020e5: PUSH1 0x00
000020e7: DUP1
000020e8: REVERT
000020e9: JUMPDEST
000020ea: PUSH2 0x20f2
000020ed: DUP4
000020ee: PUSH2 0x205d
000020f1: JUMP
000020f2: JUMPDEST
000020f3: SWAP5
000020f4: PUSH1 0x20
000020f6: SWAP4
000020f7: SWAP1
000020f8: SWAP4
000020f9: ADD
000020fa: CALLDATALOAD
000020fb: SWAP4
000020fc: POP
000020fd: POP
000020fe: POP
000020ff: JUMP
00002100: JUMPDEST
00002101: PUSH1 0x00
00002103: DUP1
00002104: DUP4
00002105: PUSH1 0x1f
00002107: DUP5
00002108: ADD
00002109: SLT
0000210a: PUSH2 0x2112
0000210d: JUMPI
0000210e: PUSH1 0x00
00002110: DUP1
00002111: REVERT
00002112: JUMPDEST
00002113: POP
00002114: DUP2
00002115: CALLDATALOAD
00002116: PUSH8 0xffffffffffffffff
0000211f: DUP2
00002120: GT
00002121: ISZERO
00002122: PUSH2 0x212a
00002125: JUMPI
00002126: PUSH1 0x00
00002128: DUP1
00002129: REVERT
0000212a: JUMPDEST
0000212b: PUSH1 0x20
0000212d: DUP4
0000212e: ADD
0000212f: SWAP2
00002130: POP
00002131: DUP4
00002132: PUSH1 0x20
00002134: DUP3
00002135: DUP6
00002136: ADD
00002137: ADD
00002138: GT
00002139: ISZERO
0000213a: PUSH2 0x10d0
0000213d: JUMPI
0000213e: PUSH1 0x00
00002140: DUP1
00002141: REVERT
00002142: JUMPDEST
00002143: PUSH1 0x00
00002145: DUP1
00002146: PUSH1 0x00
00002148: DUP1
00002149: PUSH1 0x00
0000214b: DUP1
0000214c: PUSH1 0xa0
0000214e: DUP8
0000214f: DUP10
00002150: SUB
00002151: SLT
00002152: ISZERO
00002153: PUSH2 0x215b
00002156: JUMPI
00002157: PUSH1 0x00
00002159: DUP1
0000215a: REVERT
0000215b: JUMPDEST
0000215c: PUSH2 0x2164
0000215f: DUP8
00002160: PUSH2 0x205d
00002163: JUMP
00002164: JUMPDEST
00002165: SWAP6
00002166: POP
00002167: PUSH1 0x20
00002169: DUP8
0000216a: ADD
0000216b: CALLDATALOAD
0000216c: SWAP5
0000216d: POP
0000216e: PUSH1 0x40
00002170: DUP8
00002171: ADD
00002172: CALLDATALOAD
00002173: SWAP4
00002174: POP
00002175: PUSH1 0x60
00002177: DUP8
00002178: ADD
00002179: CALLDATALOAD
0000217a: PUSH8 0xffffffffffffffff
00002183: DUP2
00002184: GT
00002185: ISZERO
00002186: PUSH2 0x218e
00002189: JUMPI
0000218a: PUSH1 0x00
0000218c: DUP1
0000218d: REVERT
0000218e: JUMPDEST
0000218f: PUSH2 0x219a
00002192: DUP10
00002193: DUP3
00002194: DUP11
00002195: ADD
00002196: PUSH2 0x2100
00002199: JUMP
0000219a: JUMPDEST
0000219b: SWAP1
0000219c: SWAP5
0000219d: POP
0000219e: SWAP3
0000219f: POP
000021a0: PUSH2 0x21ad
000021a3: SWAP1
000021a4: POP
000021a5: PUSH1 0x80
000021a7: DUP9
000021a8: ADD
000021a9: PUSH2 0x2019
000021ac: JUMP
000021ad: JUMPDEST
000021ae: SWAP1
000021af: POP
000021b0: SWAP3
000021b1: SWAP6
000021b2: POP
000021b3: SWAP3
000021b4: SWAP6
000021b5: POP
000021b6: SWAP3
000021b7: SWAP6
000021b8: JUMP
000021b9: JUMPDEST
000021ba: PUSH1 0x00
000021bc: DUP1
000021bd: PUSH1 0x00
000021bf: DUP1
000021c0: PUSH1 0x60
000021c2: DUP6
000021c3: DUP8
000021c4: SUB
000021c5: SLT
000021c6: ISZERO
000021c7: PUSH2 0x21cf
000021ca: JUMPI
000021cb: PUSH1 0x00
000021cd: DUP1
000021ce: REVERT
000021cf: JUMPDEST
000021d0: PUSH2 0x21d8
000021d3: DUP6
000021d4: PUSH2 0x205d
000021d7: JUMP
000021d8: JUMPDEST
000021d9: SWAP4
000021da: POP
000021db: PUSH1 0x20
000021dd: DUP6
000021de: ADD
000021df: CALLDATALOAD
000021e0: SWAP3
000021e1: POP
000021e2: PUSH1 0x40
000021e4: DUP6
000021e5: ADD
000021e6: CALLDATALOAD
000021e7: PUSH8 0xffffffffffffffff
000021f0: DUP2
000021f1: GT
000021f2: ISZERO
000021f3: PUSH2 0x21fb
000021f6: JUMPI
000021f7: PUSH1 0x00
000021f9: DUP1
000021fa: REVERT
000021fb: JUMPDEST
000021fc: PUSH2 0x2207
000021ff: DUP8
00002200: DUP3
00002201: DUP9
00002202: ADD
00002203: PUSH2 0x2100
00002206: JUMP
00002207: JUMPDEST
00002208: SWAP6
00002209: SWAP9
0000220a: SWAP5
0000220b: SWAP8
0000220c: POP
0000220d: SWAP6
0000220e: POP
0000220f: POP
00002210: POP
00002211: POP
00002212: JUMP
00002213: JUMPDEST
00002214: PUSH1 0x00
00002216: DUP1
00002217: DUP4
00002218: PUSH1 0x1f
0000221a: DUP5
0000221b: ADD
0000221c: SLT
0000221d: PUSH2 0x2225
00002220: JUMPI
00002221: PUSH1 0x00
00002223: DUP1
00002224: REVERT
00002225: JUMPDEST
00002226: POP
00002227: DUP2
00002228: CALLDATALOAD
00002229: PUSH8 0xffffffffffffffff
00002232: DUP2
00002233: GT
00002234: ISZERO
00002235: PUSH2 0x223d
00002238: JUMPI
00002239: PUSH1 0x00
0000223b: DUP1
0000223c: REVERT
0000223d: JUMPDEST
0000223e: PUSH1 0x20
00002240: DUP4
00002241: ADD
00002242: SWAP2
00002243: POP
00002244: DUP4
00002245: PUSH1 0x20
00002247: DUP3
00002248: PUSH1 0x05
0000224a: SHL
0000224b: DUP6
0000224c: ADD
0000224d: ADD
0000224e: GT
0000224f: ISZERO
00002250: PUSH2 0x10d0
00002253: JUMPI
00002254: PUSH1 0x00
00002256: DUP1
00002257: REVERT
00002258: JUMPDEST
00002259: PUSH1 0x00
0000225b: DUP1
0000225c: PUSH1 0x20
0000225e: DUP4
0000225f: DUP6
00002260: SUB
00002261: SLT
00002262: ISZERO
00002263: PUSH2 0x226b
00002266: JUMPI
00002267: PUSH1 0x00
00002269: DUP1
0000226a: REVERT
0000226b: JUMPDEST
0000226c: DUP3
0000226d: CALLDATALOAD
0000226e: PUSH8 0xffffffffffffffff
00002277: DUP2
00002278: GT
00002279: ISZERO
0000227a: PUSH2 0x2282
0000227d: JUMPI
0000227e: PUSH1 0x00
00002280: DUP1
00002281: REVERT
00002282: JUMPDEST
00002283: PUSH2 0x228e
00002286: DUP6
00002287: DUP3
00002288: DUP7
00002289: ADD
0000228a: PUSH2 0x2213
0000228d: JUMP
0000228e: JUMPDEST
0000228f: SWAP1
00002290: SWAP7
00002291: SWAP1
00002292: SWAP6
00002293: POP
00002294: SWAP4
00002295: POP
00002296: POP
00002297: POP
00002298: POP
00002299: JUMP
0000229a: JUMPDEST
0000229b: PUSH1 0x00
0000229d: DUP1
0000229e: PUSH1 0x00
000022a0: PUSH1 0x60
000022a2: DUP5
000022a3: DUP7
000022a4: SUB
000022a5: SLT
000022a6: ISZERO
000022a7: PUSH2 0x22af
000022aa: JUMPI
000022ab: PUSH1 0x00
000022ad: DUP1
000022ae: REVERT
000022af: JUMPDEST
000022b0: PUSH2 0x22b8
000022b3: DUP5
000022b4: PUSH2 0x205d
000022b7: JUMP
000022b8: JUMPDEST
000022b9: SWAP6
000022ba: PUSH1 0x20
000022bc: DUP6
000022bd: ADD
000022be: CALLDATALOAD
000022bf: SWAP6
000022c0: POP
000022c1: PUSH1 0x40
000022c3: SWAP1
000022c4: SWAP5
000022c5: ADD
000022c6: CALLDATALOAD
000022c7: SWAP4
000022c8: SWAP3
000022c9: POP
000022ca: POP
000022cb: POP
000022cc: JUMP
000022cd: JUMPDEST
000022ce: PUSH1 0x00
000022d0: JUMPDEST
000022d1: DUP4
000022d2: DUP2
000022d3: LT
000022d4: ISZERO
000022d5: PUSH2 0x22e8
000022d8: JUMPI
000022d9: DUP2
000022da: DUP2
000022db: ADD
000022dc: MLOAD
000022dd: DUP4
000022de: DUP3
000022df: ADD
000022e0: MSTORE
000022e1: PUSH1 0x20
000022e3: ADD
000022e4: PUSH2 0x22d0
000022e7: JUMP
000022e8: JUMPDEST
000022e9: POP
000022ea: POP
000022eb: PUSH1 0x00
000022ed: SWAP2
000022ee: ADD
000022ef: MSTORE
000022f0: JUMP
000022f1: JUMPDEST
000022f2: PUSH1 0x00
000022f4: DUP2
000022f5: MLOAD
000022f6: DUP1
000022f7: DUP5
000022f8: MSTORE
000022f9: PUSH2 0x2309
000022fc: DUP2
000022fd: PUSH1 0x20
000022ff: DUP7
00002300: ADD
00002301: PUSH1 0x20
00002303: DUP7
00002304: ADD
00002305: PUSH2 0x22cd
00002308: JUMP
00002309: JUMPDEST
0000230a: PUSH1 0x1f
0000230c: ADD
0000230d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
0000232e: AND
0000232f: SWAP3
00002330: SWAP1
00002331: SWAP3
00002332: ADD
00002333: PUSH1 0x20
00002335: ADD
00002336: SWAP3
00002337: SWAP2
00002338: POP
00002339: POP
0000233a: JUMP
0000233b: JUMPDEST
0000233c: PUSH1 0x20
0000233e: DUP2
0000233f: MSTORE
00002340: PUSH1 0x00
00002342: PUSH2 0x1777
00002345: PUSH1 0x20
00002347: DUP4
00002348: ADD
00002349: DUP5
0000234a: PUSH2 0x22f1
0000234d: JUMP
0000234e: JUMPDEST
0000234f: PUSH1 0x00
00002351: DUP1
00002352: PUSH1 0x20
00002354: DUP4
00002355: DUP6
00002356: SUB
00002357: SLT
00002358: ISZERO
00002359: PUSH2 0x2361
0000235c: JUMPI
0000235d: PUSH1 0x00
0000235f: DUP1
00002360: REVERT
00002361: JUMPDEST
00002362: DUP3
00002363: CALLDATALOAD
00002364: PUSH8 0xffffffffffffffff
0000236d: DUP1
0000236e: DUP3
0000236f: GT
00002370: ISZERO
00002371: PUSH2 0x2379
00002374: JUMPI
00002375: PUSH1 0x00
00002377: DUP1
00002378: REVERT
00002379: JUMPDEST
0000237a: DUP2
0000237b: DUP6
0000237c: ADD
0000237d: SWAP2
0000237e: POP
0000237f: DUP6
00002380: PUSH1 0x1f
00002382: DUP4
00002383: ADD
00002384: SLT
00002385: PUSH2 0x238d
00002388: JUMPI
00002389: PUSH1 0x00
0000238b: DUP1
0000238c: REVERT
0000238d: JUMPDEST
0000238e: DUP2
0000238f: CALLDATALOAD
00002390: DUP2
00002391: DUP2
00002392: GT
00002393: ISZERO
00002394: PUSH2 0x239c
00002397: JUMPI
00002398: PUSH1 0x00
0000239a: DUP1
0000239b: REVERT
0000239c: JUMPDEST
0000239d: DUP7
0000239e: PUSH1 0x20
000023a0: DUP3
000023a1: PUSH1 0x06
000023a3: SHL
000023a4: DUP6
000023a5: ADD
000023a6: ADD
000023a7: GT
000023a8: ISZERO
000023a9: PUSH2 0x23b1
000023ac: JUMPI
000023ad: PUSH1 0x00
000023af: DUP1
000023b0: REVERT
000023b1: JUMPDEST
000023b2: PUSH1 0x20
000023b4: SWAP3
000023b5: SWAP1
000023b6: SWAP3
000023b7: ADD
000023b8: SWAP7
000023b9: SWAP2
000023ba: SWAP6
000023bb: POP
000023bc: SWAP1
000023bd: SWAP4
000023be: POP
000023bf: POP
000023c0: POP
000023c1: POP
000023c2: JUMP
000023c3: JUMPDEST
000023c4: PUSH1 0x00
000023c6: DUP1
000023c7: PUSH1 0x00
000023c9: PUSH1 0x60
000023cb: DUP5
000023cc: DUP7
000023cd: SUB
000023ce: SLT
000023cf: ISZERO
000023d0: PUSH2 0x23d8
000023d3: JUMPI
000023d4: PUSH1 0x00
000023d6: DUP1
000023d7: REVERT
000023d8: JUMPDEST
000023d9: PUSH2 0x23e1
000023dc: DUP5
000023dd: PUSH2 0x2019
000023e0: JUMP
000023e1: JUMPDEST
000023e2: SWAP3
000023e3: POP
000023e4: PUSH2 0x23ef
000023e7: PUSH1 0x20
000023e9: DUP6
000023ea: ADD
000023eb: PUSH2 0x2019
000023ee: JUMP
000023ef: JUMPDEST
000023f0: SWAP2
000023f1: POP
000023f2: PUSH2 0x23fd
000023f5: PUSH1 0x40
000023f7: DUP6
000023f8: ADD
000023f9: PUSH2 0x2019
000023fc: JUMP
000023fd: JUMPDEST
000023fe: SWAP1
000023ff: POP
00002400: SWAP3
00002401: POP
00002402: SWAP3
00002403: POP
00002404: SWAP3
00002405: JUMP
00002406: JUMPDEST
00002407: PUSH1 0x00
00002409: DUP1
0000240a: PUSH1 0x00
0000240c: DUP1
0000240d: PUSH1 0x40
0000240f: DUP6
00002410: DUP8
00002411: SUB
00002412: SLT
00002413: ISZERO
00002414: PUSH2 0x241c
00002417: JUMPI
00002418: PUSH1 0x00
0000241a: DUP1
0000241b: REVERT
0000241c: JUMPDEST
0000241d: DUP5
0000241e: CALLDATALOAD
0000241f: PUSH8 0xffffffffffffffff
00002428: DUP1
00002429: DUP3
0000242a: GT
0000242b: ISZERO
0000242c: PUSH2 0x2434
0000242f: JUMPI
00002430: PUSH1 0x00
00002432: DUP1
00002433: REVERT
00002434: JUMPDEST
00002435: PUSH2 0x2440
00002438: DUP9
00002439: DUP4
0000243a: DUP10
0000243b: ADD
0000243c: PUSH2 0x2213
0000243f: JUMP
00002440: JUMPDEST
00002441: SWAP1
00002442: SWAP7
00002443: POP
00002444: SWAP5
00002445: POP
00002446: PUSH1 0x20
00002448: DUP8
00002449: ADD
0000244a: CALLDATALOAD
0000244b: SWAP2
0000244c: POP
0000244d: DUP1
0000244e: DUP3
0000244f: GT
00002450: ISZERO
00002451: PUSH2 0x2459
00002454: JUMPI
00002455: PUSH1 0x00
00002457: DUP1
00002458: REVERT
00002459: JUMPDEST
0000245a: POP
0000245b: PUSH2 0x2207
0000245e: DUP8
0000245f: DUP3
00002460: DUP9
00002461: ADD
00002462: PUSH2 0x2213
00002465: JUMP
00002466: JUMPDEST
00002467: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002488: PUSH1 0x00
0000248a: MSTORE
0000248b: PUSH1 0x11
0000248d: PUSH1 0x04
0000248f: MSTORE
00002490: PUSH1 0x24
00002492: PUSH1 0x00
00002494: REVERT
00002495: JUMPDEST
00002496: DUP2
00002497: DUP2
00002498: SUB
00002499: DUP2
0000249a: DUP2
0000249b: GT
0000249c: ISZERO
0000249d: PUSH2 0x0f83
000024a0: JUMPI
000024a1: PUSH2 0x0f83
000024a4: PUSH2 0x2466
000024a7: JUMP
000024a8: JUMPDEST
000024a9: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000024ca: PUSH1 0x00
000024cc: MSTORE
000024cd: PUSH1 0x32
000024cf: PUSH1 0x04
000024d1: MSTORE
000024d2: PUSH1 0x24
000024d4: PUSH1 0x00
000024d6: REVERT
000024d7: JUMPDEST
000024d8: DUP1
000024d9: DUP3
000024da: ADD
000024db: DUP1
000024dc: DUP3
000024dd: GT
000024de: ISZERO
000024df: PUSH2 0x0f83
000024e2: JUMPI
000024e3: PUSH2 0x0f83
000024e6: PUSH2 0x2466
000024e9: JUMP
000024ea: JUMPDEST
000024eb: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000250c: PUSH1 0x00
0000250e: MSTORE
0000250f: PUSH1 0x41
00002511: PUSH1 0x04
00002513: MSTORE
00002514: PUSH1 0x24
00002516: PUSH1 0x00
00002518: REVERT
00002519: JUMPDEST
0000251a: DUP4
0000251b: DUP2
0000251c: MSTORE
0000251d: DUP3
0000251e: PUSH1 0x20
00002520: DUP3
00002521: ADD
00002522: MSTORE
00002523: PUSH1 0x00
00002525: DUP3
00002526: MLOAD
00002527: PUSH2 0x2537
0000252a: DUP2
0000252b: PUSH1 0x40
0000252d: DUP6
0000252e: ADD
0000252f: PUSH1 0x20
00002531: DUP8
00002532: ADD
00002533: PUSH2 0x22cd
00002536: JUMP
00002537: JUMPDEST
00002538: SWAP2
00002539: SWAP1
0000253a: SWAP2
0000253b: ADD
0000253c: PUSH1 0x40
0000253e: ADD
0000253f: SWAP5
00002540: SWAP4
00002541: POP
00002542: POP
00002543: POP
00002544: POP
00002545: JUMP
00002546: JUMPDEST
00002547: DUP1
00002548: DUP3
00002549: MUL
0000254a: DUP2
0000254b: ISZERO
0000254c: DUP3
0000254d: DUP3
0000254e: DIV
0000254f: DUP5
00002550: EQ
00002551: OR
00002552: PUSH2 0x0f83
00002555: JUMPI
00002556: PUSH2 0x0f83
00002559: PUSH2 0x2466
0000255c: JUMP
0000255d: JUMPDEST
0000255e: PUSH4 0xffffffff
00002563: DUP7
00002564: AND
00002565: DUP2
00002566: MSTORE
00002567: DUP5
00002568: PUSH1 0x20
0000256a: DUP3
0000256b: ADD
0000256c: MSTORE
0000256d: PUSH1 0xa0
0000256f: PUSH1 0x40
00002571: DUP3
00002572: ADD
00002573: MSTORE
00002574: PUSH1 0x00
00002576: PUSH2 0x2582
00002579: PUSH1 0xa0
0000257b: DUP4
0000257c: ADD
0000257d: DUP7
0000257e: PUSH2 0x22f1
00002581: JUMP
00002582: JUMPDEST
00002583: DUP3
00002584: DUP2
00002585: SUB
00002586: PUSH1 0x60
00002588: DUP5
00002589: ADD
0000258a: MSTORE
0000258b: PUSH2 0x2594
0000258e: DUP2
0000258f: DUP7
00002590: PUSH2 0x22f1
00002593: JUMP
00002594: JUMPDEST
00002595: SWAP2
00002596: POP
00002597: POP
00002598: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025ad: DUP4
000025ae: AND
000025af: PUSH1 0x80
000025b1: DUP4
000025b2: ADD
000025b3: MSTORE
000025b4: SWAP7
000025b5: SWAP6
000025b6: POP
000025b7: POP
000025b8: POP
000025b9: POP
000025ba: POP
000025bb: POP
000025bc: JUMP
000025bd: JUMPDEST
000025be: PUSH1 0x00
000025c0: PUSH1 0x20
000025c2: DUP3
000025c3: DUP5
000025c4: SUB
000025c5: SLT
000025c6: ISZERO
000025c7: PUSH2 0x25cf
000025ca: JUMPI
000025cb: PUSH1 0x00
000025cd: DUP1
000025ce: REVERT
000025cf: JUMPDEST
000025d0: POP
000025d1: MLOAD
000025d2: SWAP2
000025d3: SWAP1
000025d4: POP
000025d5: JUMP
000025d6: JUMPDEST
000025d7: PUSH32 0x4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a2000
000025f8: DUP2
000025f9: MSTORE
000025fa: PUSH1 0x00
000025fc: DUP3
000025fd: MLOAD
000025fe: PUSH2 0x260e
00002601: DUP2
00002602: PUSH1 0x1f
00002604: DUP6
00002605: ADD
00002606: PUSH1 0x20
00002608: DUP8
00002609: ADD
0000260a: PUSH2 0x22cd
0000260d: JUMP
0000260e: JUMPDEST
0000260f: SWAP2
00002610: SWAP1
00002611: SWAP2
00002612: ADD
00002613: PUSH1 0x1f
00002615: ADD
00002616: SWAP3
00002617: SWAP2
00002618: POP
00002619: POP
0000261a: JUMP
0000261b: JUMPDEST
0000261c: PUSH1 0x00
0000261e: DUP1
0000261f: DUP6
00002620: DUP6
00002621: GT
00002622: ISZERO
00002623: PUSH2 0x262b
00002626: JUMPI
00002627: PUSH1 0x00
00002629: DUP1
0000262a: REVERT
0000262b: JUMPDEST
0000262c: DUP4
0000262d: DUP7
0000262e: GT
0000262f: ISZERO
00002630: PUSH2 0x2638
00002633: JUMPI
00002634: PUSH1 0x00
00002636: DUP1
00002637: REVERT
00002638: JUMPDEST
00002639: POP
0000263a: POP
0000263b: DUP3
0000263c: ADD
0000263d: SWAP4
0000263e: SWAP2
0000263f: SWAP1
00002640: SWAP3
00002641: SUB
00002642: SWAP2
00002643: POP
00002644: JUMP
00002645: JUMPDEST
00002646: DUP1
00002647: CALLDATALOAD
00002648: PUSH1 0x20
0000264a: DUP4
0000264b: LT
0000264c: ISZERO
0000264d: PUSH2 0x0f83
00002650: JUMPI
00002651: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002672: PUSH1 0x20
00002674: DUP5
00002675: SWAP1
00002676: SUB
00002677: PUSH1 0x03
00002679: SHL
0000267a: SHL
0000267b: AND
0000267c: SWAP3
0000267d: SWAP2
0000267e: POP
0000267f: POP
00002680: JUMP
00002681: JUMPDEST
00002682: PUSH1 0x00
00002684: DUP3
00002685: PUSH2 0x26b7
00002688: JUMPI
00002689: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000026aa: PUSH1 0x00
000026ac: MSTORE
000026ad: PUSH1 0x12
000026af: PUSH1 0x04
000026b1: MSTORE
000026b2: PUSH1 0x24
000026b4: PUSH1 0x00
000026b6: REVERT
000026b7: JUMPDEST
000026b8: POP
000026b9: DIV
000026ba: SWAP1
000026bb: JUMP
000026bc: JUMPDEST
000026bd: PUSH32 0xffff000000000000000000000000000000000000000000000000000000000000
000026de: DUP7
000026df: PUSH1 0xf0
000026e1: SHL
000026e2: AND
000026e3: DUP2
000026e4: MSTORE
000026e5: DUP5
000026e6: PUSH1 0x02
000026e8: DUP3
000026e9: ADD
000026ea: MSTORE
000026eb: DUP4
000026ec: PUSH1 0x22
000026ee: DUP3
000026ef: ADD
000026f0: MSTORE
000026f1: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
00002712: DUP4
00002713: PUSH1 0x60
00002715: SHL
00002716: AND
00002717: PUSH1 0x42
00002719: DUP3
0000271a: ADD
0000271b: MSTORE
0000271c: PUSH1 0x00
0000271e: DUP3
0000271f: MLOAD
00002720: PUSH2 0x2730
00002723: DUP2
00002724: PUSH1 0x56
00002726: DUP6
00002727: ADD
00002728: PUSH1 0x20
0000272a: DUP8
0000272b: ADD
0000272c: PUSH2 0x22cd
0000272f: JUMP
00002730: JUMPDEST
00002731: SWAP2
00002732: SWAP1
00002733: SWAP2
00002734: ADD
00002735: PUSH1 0x56
00002737: ADD
00002738: SWAP7
00002739: SWAP6
0000273a: POP
0000273b: POP
0000273c: POP
0000273d: POP
0000273e: POP
0000273f: POP
00002740: JUMP
00002741: JUMPDEST
00002742: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002763: PUSH1 0x00
00002765: MSTORE
00002766: PUSH1 0x31
00002768: PUSH1 0x04
0000276a: MSTORE
0000276b: PUSH1 0x24
0000276d: PUSH1 0x00
0000276f: REVERT
00002770: INVALID
00002771: LOG2
00002772: PUSH5 0x6970667358
00002778: UNKNOWN(0x22)
00002779: SLT
0000277a: KECCAK256
0000277b: UNKNOWN(0x26)
0000277c: UNKNOWN(0xE8)
0000277d: PUSH26 0xe6fa2733a68d8f89df510092094d719d0f4ec620494cd96d01f9
00002798: JUMP
00002799: DUP3
0000279a: UNKNOWN(0xC2)
0000279b: PUSH5 0x736f6c6343
000027a1: STOP
000027a2: ADDMOD
000027a3: AND
000027a4: STOP
000027a5: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability codex Unprotected initialize allows ownership takeover and forged message withdrawals 90 no
view
evidence_json
{
    "evidence": "`HypNative.initialize` is public and can be called by anyone once; `_MailboxClient_initialize` calls `__Ownable_init()` and `_transferOwnership(_owner)` allowing ownership takeover. Once owner, attacker can enroll a remote router and set a permissive ISM, then trigger `_handle` to transfer funds.",
    "locations": [
        "contracts/contracts/token/HypNative.sol:33",
        "contracts/contracts/client/MailboxClient.sol:100",
        "contracts/contracts/client/MailboxClient.sol:105",
        "contracts/contracts/client/MailboxClient.sol:108",
        "contracts/contracts/client/Router.sol:54",
        "contracts/contracts/token/libs/TokenRouter.sol:198"
    ],
    "recommendation": "Lock initialization for non-proxy deployments by calling `__Ownable_init()` (or `_disableInitializers()`) in the constructor and remove/guard the public initializer; if using proxies, ensure `initialize` is called atomically at deployment and consider restricting it to a deployer-only factory.",
    "exploit_scenario": "1) Attacker calls `HypNative.initialize(attackerHook, attackerISM, attackerEOA)` before the legitimate initializer (public initializer with no auth). 2) This sets `interchainSecurityModule` and transfers ownership to the attacker via `_MailboxClient_initialize`. 3) As owner, attacker calls `enrollRemoteRouter(origin, attackerRouter)` to register an attacker-controlled sender for some origin domain. 4) Attacker crafts a Hyperlane message with `sender=attackerRouter`, `origin=origin`, `recipient=HypNative`, and `amount` equal to the desired withdrawal, then calls `mailbox.process(metadata,message)` using their ISM that returns `true`. 5) `Router.handle` accepts the sender and `TokenRouter._handle` transfers native tokens to the attacker; repeat to drain. Profit: up to the entire native token balance held by the `HypNative` contract on this chain."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x426beef7f75b3e5c28ed021d0574027ae6c4d2a4686faa10783f834d717bf78e
call_targets: 0x341786048479f9f6ab7555e08ca2cdc4005ddec9
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x426beef7f75b3e5c28ed021d0574027ae6c4d2a4686faa10783f834d717bf78e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x341786048479f9f6ab7555e08ca2cdc4005ddec9"
    ],
    "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": "0xb1bd6436",
            "selector": "0xb1bd6436",
            "calldata_variants": [
                "0xb1bd6436",
                "0xb1bd64360000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5863,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7070,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 2463,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 2
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x426beef7f75b3e5c28ed021d0574027ae6c4d2a4686faa10783f834d717bf78e
call_targets: 0x341786048479f9f6ab7555e08ca2cdc4005ddec9
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x426beef7f75b3e5c28ed021d0574027ae6c4d2a4686faa10783f834d717bf78e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x341786048479f9f6ab7555e08ca2cdc4005ddec9"
    ],
    "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": "0xb1bd6436",
            "selector": "0xb1bd6436",
            "calldata_variants": [
                "0xb1bd6436",
                "0xb1bd64360000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5863,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7070,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 2463,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}