c39ceeb7-70db-44e9-8e1f-07ef0170dbac
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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"]}]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | codex | Unprotected initialize allows ownership takeover and forged message withdrawals | 90 | no | — |
viewevidence_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 |
viewtrace_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 |
viewtrace_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"
}
]
}
|