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

Analysis Run

28c692cb-34be-4594-99b9-e4f1085a916a

failed
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 12:49 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Unprotected initializer enables ownership takeover on uninitialized deployments
crit 0 high 0 proxy context implementation known
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30634 report.consolidate complete 1 / 1 3 months ago
74800 artifact.fetch failed 1 / 3 1 week ago
74801 tool.cast_disasm complete 1 / 3 1 week ago
74802 analysis.bundle complete 1 / 3 1 week ago
74803 capability.graph complete 1 / 3 1 week ago
74804 detector.run complete 1 / 3 1 week ago
74805 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
1 high-severity issue: HypERC20Collateral can be initialized post-deployment by any caller, enabling ownership takeover if not initialized during deployment.
View stderr
[codex:1510585] OpenAI Codex v0.77.0 (research preview)
[codex:1510585] --------
[codex:1510585] workdir: /tmp/codex-multi-cduzcwyy
[codex:1510585] model: gpt-5.2-codex
[codex:1510585] provider: openai
[codex:1510585] approval: never
[codex:1510585] sandbox: read-only
[codex:1510585] reasoning effort: xhigh
[codex:1510585] reasoning summaries: auto
[codex:1510585] session id: 019b6cb4-ac88-7361-a80c-e08082ad5d38
[codex:1510585] --------
[codex:1510585] user
[codex:1510585] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1510585] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1510585] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1510585] 
[codex:1510585] Scope rules:
[codex:1510585] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1510585] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1510585] 
[codex:1510585] Output MUST be valid JSON matching the provided schema.
[codex:1510585] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1510585] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1510585] 
[codex:1510585] Output constraints (IMPORTANT):
[codex:1510585] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1510585] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1510585] mcp startup: no servers
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Planning to read AUDIT_BUNDLE.txt**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc ls in /tmp/codex-multi-cduzcwyy succeeded in 5ms:
[codex:1510585] AUDIT_BUNDLE.txt
[codex:1510585] codex-output-schema.json
[codex:1510585] contracts
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-cduzcwyy succeeded in 5ms:
[codex:1510585] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1510585] 
[codex:1510585] ================================================================================
[codex:1510585] FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1510585] ================================================================================
[codex:1510585] // SPDX-License-Identifier: MIT
[codex:1510585] // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
[codex:1510585] 
[codex:1510585] pragma solidity ^0.8.0;
[codex:1510585] 
[codex:1510585] /**
[codex:1510585]  * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:1510585]  */
[codex:1510585] interface IERC20 {
[codex:1510585]     /**
[codex:1510585]      * @dev Emitted when `value` tokens are moved from one account (`from`) to
[codex:1510585]      * another (`to`).
[codex:1510585]      *
[codex:1510585]      * Note that `value` may be zero.
[codex:1510585]      */
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Searching file markers with ripgrep**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc 'rg --line-number "''^FILE:" AUDIT_BUNDLE.txt' in /tmp/codex-multi-cduzcwyy succeeded in 7ms:
[codex:1510585] 4:FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1510585] 86:FILE: contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol
[codex:1510585] 150:FILE: contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
[codex:1510585] 297:FILE: contracts/@openzeppelin/contracts/utils/Address.sol
[codex:1510585] 545:FILE: contracts/@openzeppelin/contracts/utils/Context.sol
[codex:1510585] 573:FILE: contracts/@openzeppelin/contracts/utils/Strings.sol
[codex:1510585] 662:FILE: contracts/@openzeppelin/contracts/utils/math/Math.sol
[codex:1510585] 1005:FILE: contracts/@openzeppelin/contracts/utils/math/SignedMath.sol
[codex:1510585] 1052:FILE: contracts/@openzeppelin/contracts/utils/structs/EnumerableMap.sol
[codex:1510585] 1654:FILE: contracts/@openzeppelin/contracts/utils/structs/EnumerableSet.sol
[codex:1510585] 2036:FILE: contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol
[codex:1510585] 2135:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol
[codex:1510585] 2305:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol
[codex:1510585] 2553:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol
[codex:1510585] 2594:FILE: contracts/contracts/PackageVersioned.sol
[codex:1510585] 2609:FILE: contracts/contracts/client/GasRouter.sol
[codex:1510585] 2719:FILE: contracts/contracts/client/MailboxClient.sol
[codex:1510585] 2850:FILE: contracts/contracts/client/Router.sol
[codex:1510585] 3095:FILE: contracts/contracts/hooks/libs/StandardHookMetadata.sol
[codex:1510585] 3308:FILE: contracts/contracts/interfaces/IInterchainSecurityModule.sol
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Extracting first-party contract sections**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "sed -n '2594,4500p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-cduzcwyy succeeded in 5ms:
[codex:1510585] FILE: contracts/contracts/PackageVersioned.sol
[codex:1510585] ================================================================================
[codex:1510585] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585] pragma solidity >=0.6.11;
[codex:1510585] 
[codex:1510585] /**
[codex:1510585]  * @title PackageVersioned
[codex:1510585]  * @notice Package version getter for contracts
[codex:1510585]  **/
[codex:1510585] abstract contract PackageVersioned {
[codex:1510585]     // GENERATED CODE - DO NOT EDIT
[codex:1510585]     string public constant PACKAGE_VERSION = "9.0.9";
[codex:1510585] }
[codex:1510585] 
[codex:1510585] ================================================================================
[codex:1510585] FILE: contracts/contracts/client/GasRouter.sol
[codex:1510585] ================================================================================
[codex:1510585] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585] pragma solidity >=0.6.11;
[codex:1510585] 
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Planning file extraction and parsing**
[codex:1510585] 
[codex:1510585] I’m figuring out how to extract each first-party file from the large bundled file for detailed inspection. Since output truncates, I’ll write a python script to parse and print selected file sections by name, including line numbers, so I can analyze them without losing data. I plan to start with important files like HypERC20Collateral and TokenRouter to ensure I get full content for auditing.
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import re,sys
[codex:1510585] path='contracts/contracts/token/HypERC20Collateral.sol'
[codex:1510585] start=None
[codex:1510585] lines=open('AUDIT_BUNDLE.txt','r').read().splitlines()
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: '):
[codex:1510585]         if l[len('FILE: '):]==path:
[codex:1510585]             start=i+1
[codex:1510585]             break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] # skip separator line after FILE? actual format: FILE line then === line
[codex:1510585] # find next FILE or EOF
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start, len(lines)):
[codex:1510585]     if j>start and lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] # print with line numbers within file
[codex:1510585] out=[]
[codex:1510585] ln=1
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     # skip separator lines of === ??? but include code. There is separator line after FILE line and after code maybe; the start index points at line after FILE line (separator). We should skip separator line if it's all ===.
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         # skip this separator
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 39ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: /*@@@@@@@       @@@@@@@@@
[codex:1510585]    5:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]    6:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]    7:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]    8:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]    9:      @@@@@  HYPERLANE  @@@@@@@
[codex:1510585]   10:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]   11:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]   12:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]   13:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]   14: @@@@@@@@@       @@@@@@@@*/
[codex:1510585]   15: 
[codex:1510585]   16: // ============ Internal Imports ============
[codex:1510585]   17: import {TokenMessage} from "./libs/TokenMessage.sol";
[codex:1510585]   18: import {TokenRouter} from "./libs/TokenRouter.sol";
[codex:1510585]   19: import {FungibleTokenRouter} from "./libs/FungibleTokenRouter.sol";
[codex:1510585]   20: import {MovableCollateralRouter} from "./libs/MovableCollateralRouter.sol";
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Preparing to examine router files**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/token/libs/TokenRouter.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 20ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: // ============ Internal Imports ============
[codex:1510585]    5: import {TypeCasts} from "../../libs/TypeCasts.sol";
[codex:1510585]    6: import {GasRouter} from "../../client/GasRouter.sol";
[codex:1510585]    7: import {TokenMessage} from "./TokenMessage.sol";
[codex:1510585]    8: import {Quote, ITokenBridge} from "../../interfaces/ITokenBridge.sol";
[codex:1510585]    9: 
[codex:1510585]   10: /**
[codex:1510585]   11:  * @title Hyperlane Token Router that extends Router with abstract token (ERC20/ERC721) remote transfer functionality.
[codex:1510585]   12:  * @author Abacus Works
[codex:1510585]   13:  */
[codex:1510585]   14: abstract contract TokenRouter is GasRouter, ITokenBridge {
[codex:1510585]   15:     using TypeCasts for bytes32;
[codex:1510585]   16:     using TypeCasts for address;
[codex:1510585]   17:     using TokenMessage for bytes;
[codex:1510585]   18: 
[codex:1510585]   19:     /**
[codex:1510585]   20:      * @dev Emitted on `transferRemote` when a transfer message is dispatched.
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Locating MovableCollateralRouter lines**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/token/libs/MovableCollateralRouter.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 18ms:
[codex:1510585]    1: // SPDX-License-Identifier: Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: import {Router} from "../../client/Router.sol";
[codex:1510585]    5: import {FungibleTokenRouter} from "./FungibleTokenRouter.sol";
[codex:1510585]    6: import {ValueTransferBridge} from "../interfaces/ValueTransferBridge.sol";
[codex:1510585]    7: import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
[codex:1510585]    8: 
[codex:1510585]    9: import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1510585]   10: import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1510585]   11: 
[codex:1510585]   12: abstract contract MovableCollateralRouter is FungibleTokenRouter {
[codex:1510585]   13:     using SafeERC20 for IERC20;
[codex:1510585]   14:     using EnumerableSet for EnumerableSet.AddressSet;
[codex:1510585]   15: 
[codex:1510585]   16:     /// @notice Mapping of domain to allowed rebalance recipient.
[codex:1510585]   17:     /// @dev Keys constrained to a subset of Router.domains()
[codex:1510585]   18:     mapping(uint32 routerDomain => bytes32 recipient) public allowedRecipient;
[codex:1510585]   19: 
[codex:1510585]   20:     /// @notice Mapping of domain to allowed rebalance bridges.
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Opening GasRouter component**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/client/GasRouter.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 19ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.6.11;
[codex:1510585]    3: 
[codex:1510585]    4: /*@@@@@@@       @@@@@@@@@
[codex:1510585]    5:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]    6:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]    7:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]    8:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]    9:      @@@@@  HYPERLANE  @@@@@@@
[codex:1510585]   10:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]   11:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]   12:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]   13:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]   14: @@@@@@@@@       @@@@@@@@*/
[codex:1510585]   15: 
[codex:1510585]   16: // ============ Internal Imports ============
[codex:1510585]   17: import {Router} from "./Router.sol";
[codex:1510585]   18: import {StandardHookMetadata} from "../hooks/libs/StandardHookMetadata.sol";
[codex:1510585]   19: 
[codex:1510585]   20: abstract contract GasRouter is Router {
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Identifying target class**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/client/MailboxClient.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 20ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.6.11;
[codex:1510585]    3: 
[codex:1510585]    4: /*@@@@@@@       @@@@@@@@@
[codex:1510585]    5:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]    6:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]    7:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]    8:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]    9:      @@@@@  HYPERLANE  @@@@@@@
[codex:1510585]   10:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]   11:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]   12:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]   13:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]   14: @@@@@@@@@       @@@@@@@@*/
[codex:1510585]   15: 
[codex:1510585]   16: // ============ Internal Imports ============
[codex:1510585]   17: import {IMailbox} from "../interfaces/IMailbox.sol";
[codex:1510585]   18: import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
[codex:1510585]   19: import {IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
[codex:1510585]   20: import {Message} from "../libs/Message.sol";
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Noticing Router mention**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/client/Router.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 20ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.6.11;
[codex:1510585]    3: 
[codex:1510585]    4: // ============ Internal Imports ============
[codex:1510585]    5: import {IMessageRecipient} from "../interfaces/IMessageRecipient.sol";
[codex:1510585]    6: import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
[codex:1510585]    7: import {MailboxClient} from "./MailboxClient.sol";
[codex:1510585]    8: import {EnumerableMapExtended} from "../libs/EnumerableMapExtended.sol";
[codex:1510585]    9: 
[codex:1510585]   10: // ============ External Imports ============
[codex:1510585]   11: import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
[codex:1510585]   12: 
[codex:1510585]   13: abstract contract Router is MailboxClient, IMessageRecipient {
[codex:1510585]   14:     using EnumerableMapExtended for EnumerableMapExtended.UintToBytes32Map;
[codex:1510585]   15:     using Strings for uint32;
[codex:1510585]   16: 
[codex:1510585]   17:     // ============ Mutable Storage ============
[codex:1510585]   18:     /// @dev Mapping of domain => router. For a given domain we have one router we send/receive messages from.
[codex:1510585]   19:     EnumerableMapExtended.UintToBytes32Map internal _routers;
[codex:1510585]   20: 
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Extracting StandardHookMetadata**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/hooks/libs/StandardHookMetadata.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 18ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: /*@@@@@@@       @@@@@@@@@
[codex:1510585]    5:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]    6:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]    7:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]    8:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]    9:      @@@@@  HYPERLANE  @@@@@@@
[codex:1510585]   10:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]   11:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]   12:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]   13:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]   14: @@@@@@@@@       @@@@@@@@*/
[codex:1510585]   15: 
[codex:1510585]   16: /**
[codex:1510585]   17:  * Format of metadata:
[codex:1510585]   18:  *
[codex:1510585]   19:  * [0:2] variant
[codex:1510585]   20:  * [2:34] msg.value
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Extracting needed libraries**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/libs/EnumerableMapExtended.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 19ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.6.11;
[codex:1510585]    3: 
[codex:1510585]    4: // ============ External Imports ============
[codex:1510585]    5: import "@openzeppelin/contracts/utils/structs/EnumerableMap.sol";
[codex:1510585]    6: import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
[codex:1510585]    7: 
[codex:1510585]    8: // extends EnumerableMap with uint256 => bytes32 type
[codex:1510585]    9: // modelled after https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.0/contracts/utils/structs/EnumerableMap.sol
[codex:1510585]   10: library EnumerableMapExtended {
[codex:1510585]   11:     using EnumerableMap for EnumerableMap.Bytes32ToBytes32Map;
[codex:1510585]   12:     using EnumerableSet for EnumerableSet.Bytes32Set;
[codex:1510585]   13: 
[codex:1510585]   14:     struct UintToBytes32Map {
[codex:1510585]   15:         EnumerableMap.Bytes32ToBytes32Map _inner;
[codex:1510585]   16:     }
[codex:1510585]   17: 
[codex:1510585]   18:     // ============ Library Functions ============
[codex:1510585]   19:     function keys(
[codex:1510585]   20:         UintToBytes32Map storage map
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Reviewing message library**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/libs/Message.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 18ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: import {TypeCasts} from "./TypeCasts.sol";
[codex:1510585]    5: 
[codex:1510585]    6: /**
[codex:1510585]    7:  * @title Hyperlane Message Library
[codex:1510585]    8:  * @notice Library for formatted messages used by Mailbox
[codex:1510585]    9:  **/
[codex:1510585]   10: library Message {
[codex:1510585]   11:     using TypeCasts for bytes32;
[codex:1510585]   12: 
[codex:1510585]   13:     uint256 private constant VERSION_OFFSET = 0;
[codex:1510585]   14:     uint256 private constant NONCE_OFFSET = 1;
[codex:1510585]   15:     uint256 private constant ORIGIN_OFFSET = 5;
[codex:1510585]   16:     uint256 private constant SENDER_OFFSET = 9;
[codex:1510585]   17:     uint256 private constant DESTINATION_OFFSET = 41;
[codex:1510585]   18:     uint256 private constant RECIPIENT_OFFSET = 45;
[codex:1510585]   19:     uint256 private constant BODY_OFFSET = 77;
[codex:1510585]   20: 
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Reviewing type casts**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/libs/TypeCasts.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 19ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.6.11;
[codex:1510585]    3: 
[codex:1510585]    4: library TypeCasts {
[codex:1510585]    5:     // alignment preserving cast
[codex:1510585]    6:     function addressToBytes32(address _addr) internal pure returns (bytes32) {
[codex:1510585]    7:         return bytes32(uint256(uint160(_addr)));
[codex:1510585]    8:     }
[codex:1510585]    9: 
[codex:1510585]   10:     // alignment preserving cast
[codex:1510585]   11:     function bytes32ToAddress(bytes32 _buf) internal pure returns (address) {
[codex:1510585]   12:         require(
[codex:1510585]   13:             uint256(_buf) <= uint256(type(uint160).max),
[codex:1510585]   14:             "TypeCasts: bytes32ToAddress overflow"
[codex:1510585]   15:         );
[codex:1510585]   16:         return address(uint160(uint256(_buf)));
[codex:1510585]   17:     }
[codex:1510585]   18: }
[codex:1510585]   19: 
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Exploring interfaces for access control**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/interfaces/IMailbox.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 18ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
[codex:1510585]    5: import {IPostDispatchHook} from "./hooks/IPostDispatchHook.sol";
[codex:1510585]    6: 
[codex:1510585]    7: interface IMailbox {
[codex:1510585]    8:     // ============ Events ============
[codex:1510585]    9:     /**
[codex:1510585]   10:      * @notice Emitted when a new message is dispatched via Hyperlane
[codex:1510585]   11:      * @param sender The address that dispatched the message
[codex:1510585]   12:      * @param destination The destination domain of the message
[codex:1510585]   13:      * @param recipient The message recipient address on `destination`
[codex:1510585]   14:      * @param message Raw bytes of message
[codex:1510585]   15:      */
[codex:1510585]   16:     event Dispatch(
[codex:1510585]   17:         address indexed sender,
[codex:1510585]   18:         uint32 indexed destination,
[codex:1510585]   19:         bytes32 indexed recipient,
[codex:1510585]   20:         bytes message
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Reviewing additional interfaces**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/interfaces/IInterchainSecurityModule.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 18ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.6.11;
[codex:1510585]    3: 
[codex:1510585]    4: interface IInterchainSecurityModule {
[codex:1510585]    5:     enum Types {
[codex:1510585]    6:         UNUSED,
[codex:1510585]    7:         ROUTING,
[codex:1510585]    8:         AGGREGATION,
[codex:1510585]    9:         LEGACY_MULTISIG,
[codex:1510585]   10:         MERKLE_ROOT_MULTISIG,
[codex:1510585]   11:         MESSAGE_ID_MULTISIG,
[codex:1510585]   12:         NULL, // used with relayer carrying no metadata
[codex:1510585]   13:         CCIP_READ,
[codex:1510585]   14:         ARB_L2_TO_L1,
[codex:1510585]   15:         WEIGHTED_MERKLE_ROOT_MULTISIG,
[codex:1510585]   16:         WEIGHTED_MESSAGE_ID_MULTISIG,
[codex:1510585]   17:         OP_L2_TO_L1
[codex:1510585]   18:     }
[codex:1510585]   19: 
[codex:1510585]   20:     /**
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Identifying IMessageRecipient**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/interfaces/IMessageRecipient.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 19ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.6.11;
[codex:1510585]    3: 
[codex:1510585]    4: interface IMessageRecipient {
[codex:1510585]    5:     function handle(
[codex:1510585]    6:         uint32 _origin,
[codex:1510585]    7:         bytes32 _sender,
[codex:1510585]    8:         bytes calldata _message
[codex:1510585]    9:     ) external payable;
[codex:1510585]   10: }
[codex:1510585]   11: 
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Identifying ITokenBridge**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/interfaces/ITokenBridge.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 19ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: struct Quote {
[codex:1510585]    5:     address token; // address(0) for the native token
[codex:1510585]    6:     uint256 amount;
[codex:1510585]    7: }
[codex:1510585]    8: 
[codex:1510585]    9: interface ITokenBridge {
[codex:1510585]   10:     /**
[codex:1510585]   11:      * @notice Transfer value to another domain
[codex:1510585]   12:      * @param _destination The destination domain of the message
[codex:1510585]   13:      * @param _recipient The message recipient address on `destination`
[codex:1510585]   14:      * @param _amount The amount to send to the recipient
[codex:1510585]   15:      * @return messageId The identifier of the dispatched message.
[codex:1510585]   16:      */
[codex:1510585]   17:     function transferRemote(
[codex:1510585]   18:         uint32 _destination,
[codex:1510585]   19:         bytes32 _recipient,
[codex:1510585]   20:         uint256 _amount
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Identifying IPostDispatchHook**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/interfaces/hooks/IPostDispatchHook.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 19ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: /*@@@@@@@       @@@@@@@@@
[codex:1510585]    5:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]    6:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]    7:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]    8:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]    9:      @@@@@  HYPERLANE  @@@@@@@
[codex:1510585]   10:     @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1510585]   11:    @@@@@@@@@       @@@@@@@@@
[codex:1510585]   12:   @@@@@@@@@       @@@@@@@@@
[codex:1510585]   13:  @@@@@@@@@       @@@@@@@@@
[codex:1510585]   14: @@@@@@@@@       @@@@@@@@*/
[codex:1510585]   15: 
[codex:1510585]   16: interface IPostDispatchHook {
[codex:1510585]   17:     enum Types {
[codex:1510585]   18:         UNUSED,
[codex:1510585]   19:         ROUTING,
[codex:1510585]   20:         AGGREGATION,
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Reviewing key contract components**
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/token/libs/FungibleTokenRouter.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 19ms:
[codex:1510585]    1: // SPDX-License-Identifier: Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: import {TokenRouter} from "./TokenRouter.sol";
[codex:1510585]    5: 
[codex:1510585]    6: /**
[codex:1510585]    7:  * @title Hyperlane Fungible Token Router that extends TokenRouter with scaling logic for fungible tokens with different decimals.
[codex:1510585]    8:  * @author Abacus Works
[codex:1510585]    9:  */
[codex:1510585]   10: abstract contract FungibleTokenRouter is TokenRouter {
[codex:1510585]   11:     uint256 public immutable scale;
[codex:1510585]   12: 
[codex:1510585]   13:     constructor(uint256 _scale, address _mailbox) TokenRouter(_mailbox) {
[codex:1510585]   14:         scale = _scale;
[codex:1510585]   15:     }
[codex:1510585]   16: 
[codex:1510585]   17:     /**
[codex:1510585]   18:      * @dev Scales local amount to message amount (up by scale factor).
[codex:1510585]   19:      * @inheritdoc TokenRouter
[codex:1510585]   20:      */
[codex:1510585] exec
[codex:1510585] /bin/bash -lc "python - <<'PY'
[codex:1510585] import sys
[codex:1510585] path='contracts/contracts/token/interfaces/ValueTransferBridge.sol'
[codex:1510585] lines=open('AUDIT_BUNDLE.txt').read().splitlines()
[codex:1510585] start=None
[codex:1510585] for i,l in enumerate(lines):
[codex:1510585]     if l.startswith('FILE: ') and l[len('FILE: '):]==path:
[codex:1510585]         start=i+1
[codex:1510585]         break
[codex:1510585] if start is None:
[codex:1510585]     sys.exit('not found')
[codex:1510585] end=len(lines)
[codex:1510585] for j in range(start+1,len(lines)):
[codex:1510585]     if lines[j].startswith('FILE: '):
[codex:1510585]         end=j-1
[codex:1510585]         break
[codex:1510585] ln=1
[codex:1510585] out=[]
[codex:1510585] for l in lines[start:end]:
[codex:1510585]     if ln==1 and set(l)=={'='}:
[codex:1510585]         continue
[codex:1510585]     out.append(f\"{ln:4d}: {l}\")
[codex:1510585]     ln+=1
[codex:1510585] print('\\n'.join(out))
[codex:1510585] PY" in /tmp/codex-multi-cduzcwyy succeeded in 19ms:
[codex:1510585]    1: // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1510585]    2: pragma solidity >=0.8.0;
[codex:1510585]    3: 
[codex:1510585]    4: struct Quote {
[codex:1510585]    5:     address token;
[codex:1510585]    6:     uint256 amount;
[codex:1510585]    7: }
[codex:1510585]    8: 
[codex:1510585]    9: interface ValueTransferBridge {
[codex:1510585]   10:     function quoteTransferRemote(
[codex:1510585]   11:         uint32 destinationDomain,
[codex:1510585]   12:         bytes32 recipient,
[codex:1510585]   13:         uint amountOut
[codex:1510585]   14:     ) external view returns (Quote[] memory);
[codex:1510585]   15: 
[codex:1510585]   16:     function transferRemote(
[codex:1510585]   17:         uint32 destinationDomain,
[codex:1510585]   18:         bytes32 recipient,
[codex:1510585]   19:         uint256 amountOut
[codex:1510585]   20:     ) external payable returns (bytes32 transferId);
[codex:1510585] 
[codex:1510585] 
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Analyzing security and upgradeability risks**
[codex:1510585] 
[codex:1510585] I’m reviewing the contract for vulnerabilities like reentrancy, access control flaws, upgradeability pitfalls, and external call risks. There are concerns with unprotected `initialize` allowing ownership takeover if not called promptly after deployment, especially since constructors set owners but don’t disable initializers. Also, reentrancy might be possible through token transfers or bridge calls, though state mutation after external calls seems minimal. The handling of SafeERC20 approvals and immutable variables in proxy contexts raises operational questions but no glaring exploits. Overall, the main risk is deployment misconfiguration leaving the implementation contract open to hijacking ownership after deployment.
[codex:1510585] thinking
[codex:1510585] **Examining contract edge cases and call patterns**
[codex:1510585] 
[codex:1510585] I’m reviewing how the contract handles cross-chain messaging, external calls, and edge cases like rounding and zero addresses. There’s a chance messages could get blocked if addresses aren’t formatted as expected, but that’s by design. Reentrancy risks seem limited due to access restrictions and call ordering. Some operational quirks like allowance resets and rounding might cause failed calls or token loss but no direct exploits. The unprotected initializer on the implementation contract remains the main serious concern here, while overall the contract uses careful access controls and safe external call patterns.
[codex:1510585] thinking
[codex:1510585] **Detailing initializer and allowance issues**
[codex:1510585] 
[codex:1510585] I’m focusing on how the public initializer in HypERC20Collateral can be called once by anyone to take control if not called right after deployment, especially since the constructor sets ownership but doesn’t disable the initializer. This creates a high-severity upgradeability risk if the deployment is mismanaged. Also, the repeated safeApprove calls in _rebalance without resetting allowance to zero could cause reverts or DoS if previous allowances remain non-zero, posing operational challenges rather than critical vulnerabilities. Overall, these findings center on initialization patterns and token approval usage.
[codex:1510585] exec
[codex:1510585] /bin/bash -lc 'rg --line-number "initializer|onlyInitializing|Initializable|_disableInitializers" contracts -g"*.sol"' in /tmp/codex-multi-cduzcwyy succeeded in 12ms:
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:2:// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:11: * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:12: * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23: *     function initialize() initializer public {
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:29: *     function initializeV2() reinitializer(2) public {
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:35: * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:38: * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:39: * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:47: * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:53: *     _disableInitializers();
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:58:abstract contract Initializable {
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:76:     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:77:     * `onlyInitializing` functions can be used to initialize parent contracts.
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:79:     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:84:    modifier initializer() {
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:88:            "Initializable: contract is already initialized"
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:102:     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:103:     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:106:     * A reinitializer may be used after the original initialization step. This is essential to configure modules that
[codex:1510585] contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:109:     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`
[codex:1510585] 
[codex:1510585] thinking
[codex:1510585] **Summarizing audit findings and preparing JSON output**
[codex:1510585] 
[codex:1510585] I’m putting together the JSON report for the audit. I’ve identified one high-severity issue: the public initializer on HypERC20Collateral can be exploited to takeover ownership if not called during deployment, letting an attacker drain tokens via malicious bridges. I’m carefully including all necessary details—severity, category, evidence, locations—and crafting precise exploit and recommendation sections. I’ll keep the summary short and make sure the JSON matches the schema exactly with no extra text.
[codex:1510585] exec
[codex:1510585] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-cduzcwyy succeeded in 7ms:
[codex:1510585] {"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:1510585] 
[codex:1510585] thinking
[codex:1510585] **Constructing detailed JSON report**
[codex:1510585] 
[codex:1510585] I'm preparing a precise JSON report detailing a high-severity upgradeability issue in HypERC20Collateral, carefully considering the formatting constraints for file paths and balancing clarity with strict JSON validity. I'll include references, evidence, the exploit scenario, and recommendations in a way that fits the schema and instructions.
[codex:1510585] codex
[codex:1510585] {"no_findings":false,"summary":"1 high-severity issue: HypERC20Collateral can be initialized post-deployment by any caller, enabling ownership takeover if not initialized during deployment.","findings":[{"severity":"high","category":"upgradeability","title":"Unprotected initializer enables ownership takeover on uninitialized deployments","exploit_scenario":"If the deployer does not call `initialize` in the deployment transaction, any external account can call `initialize`, set themselves as `_owner`, and then add themselves as rebalancer/bridge to move all collateral via `rebalance` using a malicious bridge implementation.","recommendation":"Lock the implementation by calling `_disableInitializers()` in the constructor and ensure proxies are initialized at deployment. If this contract is meant to be used directly (non-proxy), either call `_MailboxClient_initialize` during construction and remove the external initializer, or restrict initialization to an authorized deployer flow.","evidence":"`initialize` is a public `initializer` that calls `_MailboxClient_initialize`, which initializes ownership and critical settings, but the constructor does not disable initializers.","locations":["contracts/contracts/token/HypERC20Collateral.sol:53","contracts/contracts/client/MailboxClient.sol:109"]}]}
[codex:1510585] tokens used
[codex:1510585] 70,699
[codex:1510585] {"no_findings":false,"summary":"1 high-severity issue: HypERC20Collateral can be initialized post-deployment by any caller, enabling ownership takeover if not initialized during deployment.","findings":[{"severity":"high","category":"upgradeability","title":"Unprotected initializer enables ownership takeover on uninitialized deployments","exploit_scenario":"If the deployer does not call `initialize` in the deployment transaction, any external account can call `initialize`, set themselves as `_owner`, and then add themselves as rebalancer/bridge to move all collateral via `rebalance` using a malicious bridge implementation.","recommendation":"Lock the implementation by calling `_disableInitializers()` in the constructor and ensure proxies are initialized at deployment. If this contract is meant to be used directly (non-proxy), either call `_MailboxClient_initialize` during construction and remove the external initializer, or restrict initialization to an authorized deployer flow.","evidence":"`initialize` is a public `initializer` that calls `_MailboxClient_initialize`, which initializes ownership and critical settings, but the constructor does not disable initializers.","locations":["contracts/contracts/token/HypERC20Collateral.sol:53","contracts/contracts/client/MailboxClient.sol:109"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T00:49:22.731989+00:00",
        "returncode": 0
    },
    "summary": "1 high-severity issue: HypERC20Collateral can be initialized post-deployment by any caller, enabling ownership takeover if not initialized during deployment.",
    "raw_final": {
        "summary": "1 high-severity issue: HypERC20Collateral can be initialized post-deployment by any caller, enabling ownership takeover if not initialized during deployment.",
        "findings": [
            {
                "title": "Unprotected initializer enables ownership takeover on uninitialized deployments",
                "category": "upgradeability",
                "evidence": "`initialize` is a public `initializer` that calls `_MailboxClient_initialize`, which initializes ownership and critical settings, but the constructor does not disable initializers.",
                "severity": "high",
                "locations": [
                    "contracts/contracts/token/HypERC20Collateral.sol:53",
                    "contracts/contracts/client/MailboxClient.sol:109"
                ],
                "recommendation": "Lock the implementation by calling `_disableInitializers()` in the constructor and ensure proxies are initialized at deployment. If this contract is meant to be used directly (non-proxy), either call `_MailboxClient_initialize` during construction and remove the external initializer, or restrict initialization to an authorized deployer flow.",
                "exploit_scenario": "If the deployer does not call `initialize` in the deployment transaction, any external account can call `initialize`, set themselves as `_owner`, and then add themselves as rebalancer/bridge to move all collateral via `rebalance` using a malicious bridge implementation."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
6
EXT*/BALANCE
4
Total opcodes
6754
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x02a0
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x81b4e8b4
00000019: GT
0000001a: PUSH2 0x016e
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xc69c8ce2
00000024: GT
00000025: PUSH2 0x00cb
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xf2ed8c53
0000002f: GT
00000030: PUSH2 0x007f
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xf51e181a
0000003a: GT
0000003b: PUSH2 0x0064
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xf51e181a
00000045: EQ
00000046: PUSH2 0x07f9
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xfa57f157
00000050: EQ
00000051: PUSH2 0x082d
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfbaca44c
0000005b: EQ
0000005c: PUSH2 0x084d
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xf2ed8c53
0000006b: EQ
0000006c: PUSH2 0x07b9
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xf2fde38b
00000076: EQ
00000077: PUSH2 0x07d9
0000007a: JUMPI
0000007b: PUSH1 0x00
0000007d: DUP1
0000007e: REVERT
0000007f: JUMPDEST
00000080: DUP1
00000081: PUSH4 0xde523cf3
00000086: GT
00000087: PUSH2 0x00b0
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0xde523cf3
00000091: EQ
00000092: PUSH2 0x074e
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xe9198bf9
0000009c: EQ
0000009d: PUSH2 0x0779
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0xefae508a
000000a7: EQ
000000a8: PUSH2 0x0799
000000ab: JUMPI
000000ac: PUSH1 0x00
000000ae: DUP1
000000af: REVERT
000000b0: JUMPDEST
000000b1: DUP1
000000b2: PUSH4 0xc69c8ce2
000000b7: EQ
000000b8: PUSH2 0x0705
000000bb: JUMPI
000000bc: DUP1
000000bd: PUSH4 0xd5438eae
000000c2: EQ
000000c3: PUSH2 0x071a
000000c6: JUMPI
000000c7: PUSH1 0x00
000000c9: DUP1
000000ca: REVERT
000000cb: JUMPDEST
000000cc: DUP1
000000cd: PUSH4 0x996c6cc3
000000d2: GT
000000d3: PUSH2 0x0122
000000d6: JUMPI
000000d7: DUP1
000000d8: PUSH4 0xb49c53a7
000000dd: GT
000000de: PUSH2 0x0107
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0xb49c53a7
000000e8: EQ
000000e9: PUSH2 0x06a5
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0xc0c53b8b
000000f3: EQ
000000f4: PUSH2 0x06c5
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0xc3827115
000000fe: EQ
000000ff: PUSH2 0x06e5
00000102: JUMPI
00000103: PUSH1 0x00
00000105: DUP1
00000106: REVERT
00000107: JUMPDEST
00000108: DUP1
00000109: PUSH4 0x996c6cc3
0000010e: EQ
0000010f: PUSH2 0x0651
00000112: JUMPI
00000113: DUP1
00000114: PUSH4 0xb1bd6436
00000119: EQ
0000011a: PUSH2 0x0685
0000011d: JUMPI
0000011e: PUSH1 0x00
00000120: DUP1
00000121: REVERT
00000122: JUMPDEST
00000123: DUP1
00000124: PUSH4 0x8d3638f4
00000129: GT
0000012a: PUSH2 0x0153
0000012d: JUMPI
0000012e: DUP1
0000012f: PUSH4 0x8d3638f4
00000134: EQ
00000135: PUSH2 0x0587
00000138: JUMPI
00000139: DUP1
0000013a: PUSH4 0x8da5cb5b
0000013f: EQ
00000140: PUSH2 0x05d0
00000143: JUMPI
00000144: DUP1
00000145: PUSH4 0x93c44847
0000014a: EQ
0000014b: PUSH2 0x05fb
0000014e: JUMPI
0000014f: PUSH1 0x00
00000151: DUP1
00000152: REVERT
00000153: JUMPDEST
00000154: DUP1
00000155: PUSH4 0x81b4e8b4
0000015a: EQ
0000015b: PUSH2 0x0547
0000015e: JUMPI
0000015f: DUP1
00000160: PUSH4 0x8bd90b82
00000165: EQ
00000166: PUSH2 0x055a
00000169: JUMPI
0000016a: PUSH1 0x00
0000016c: DUP1
0000016d: REVERT
0000016e: JUMPDEST
0000016f: DUP1
00000170: PUSH4 0x4e38a81d
00000175: GT
00000176: PUSH2 0x021c
00000179: JUMPI
0000017a: DUP1
0000017b: PUSH4 0x715018a6
00000180: GT
00000181: PUSH2 0x01d0
00000184: JUMPI
00000185: DUP1
00000186: PUSH4 0x775313a1
0000018b: GT
0000018c: PUSH2 0x01b5
0000018f: JUMPI
00000190: DUP1
00000191: PUSH4 0x775313a1
00000196: EQ
00000197: PUSH2 0x049b
0000019a: JUMPI
0000019b: DUP1
0000019c: PUSH4 0x77e2dc7a
000001a1: EQ
000001a2: PUSH2 0x04c8
000001a5: JUMPI
000001a6: DUP1
000001a7: PUSH4 0x7f5a7c7b
000001ac: EQ
000001ad: PUSH2 0x04f5
000001b0: JUMPI
000001b1: PUSH1 0x00
000001b3: DUP1
000001b4: REVERT
000001b5: JUMPDEST
000001b6: DUP1
000001b7: PUSH4 0x715018a6
000001bc: EQ
000001bd: PUSH2 0x0466
000001c0: JUMPI
000001c1: DUP1
000001c2: PUSH4 0x71a15b38
000001c7: EQ
000001c8: PUSH2 0x047b
000001cb: JUMPI
000001cc: PUSH1 0x00
000001ce: DUP1
000001cf: REVERT
000001d0: JUMPDEST
000001d1: DUP1
000001d2: PUSH4 0x56d5d475
000001d7: GT
000001d8: PUSH2 0x0201
000001db: JUMPI
000001dc: DUP1
000001dd: PUSH4 0x56d5d475
000001e2: EQ
000001e3: PUSH2 0x0420
000001e6: JUMPI
000001e7: DUP1
000001e8: PUSH4 0x6a99c333
000001ed: EQ
000001ee: PUSH2 0x0433
000001f1: JUMPI
000001f2: DUP1
000001f3: PUSH4 0x70a08231
000001f8: EQ
000001f9: PUSH2 0x0446
000001fc: JUMPI
000001fd: PUSH1 0x00
000001ff: DUP1
00000200: REVERT
00000201: JUMPDEST
00000202: DUP1
00000203: PUSH4 0x4e38a81d
00000208: EQ
00000209: PUSH2 0x03ed
0000020c: JUMPI
0000020d: DUP1
0000020e: PUSH4 0x51debffc
00000213: EQ
00000214: PUSH2 0x040d
00000217: JUMPI
00000218: PUSH1 0x00
0000021a: DUP1
0000021b: REVERT
0000021c: JUMPDEST
0000021d: DUP1
0000021e: PUSH4 0x2ead72f6
00000223: GT
00000224: PUSH2 0x0273
00000227: JUMPI
00000228: DUP1
00000229: PUSH4 0x43bc4b9a
0000022e: GT
0000022f: PUSH2 0x0258
00000232: JUMPI
00000233: DUP1
00000234: PUSH4 0x43bc4b9a
00000239: EQ
0000023a: PUSH2 0x038b
0000023d: JUMPI
0000023e: DUP1
0000023f: PUSH4 0x440df4f4
00000244: EQ
00000245: PUSH2 0x03ab
00000248: JUMPI
00000249: DUP1
0000024a: PUSH4 0x49d462ef
0000024f: EQ
00000250: PUSH2 0x03cd
00000253: JUMPI
00000254: PUSH1 0x00
00000256: DUP1
00000257: REVERT
00000258: JUMPDEST
00000259: DUP1
0000025a: PUSH4 0x2ead72f6
0000025f: EQ
00000260: PUSH2 0x033d
00000263: JUMPI
00000264: DUP1
00000265: PUSH4 0x3dfd3873
0000026a: EQ
0000026b: PUSH2 0x036b
0000026e: JUMPI
0000026f: PUSH1 0x00
00000271: DUP1
00000272: REVERT
00000273: JUMPDEST
00000274: DUP1
00000275: PUSH4 0x0c979919
0000027a: EQ
0000027b: PUSH2 0x02a5
0000027e: JUMPI
0000027f: DUP1
00000280: PUSH4 0x0e72cc06
00000285: EQ
00000286: PUSH2 0x02c7
00000289: JUMPI
0000028a: DUP1
0000028b: PUSH4 0x1ba83149
00000290: EQ
00000291: PUSH2 0x02e7
00000294: JUMPI
00000295: DUP1
00000296: PUSH4 0x2c2d8089
0000029b: EQ
0000029c: PUSH2 0x031d
0000029f: JUMPI
000002a0: JUMPDEST
000002a1: PUSH1 0x00
000002a3: DUP1
000002a4: REVERT
000002a5: JUMPDEST
000002a6: CALLVALUE
000002a7: DUP1
000002a8: ISZERO
000002a9: PUSH2 0x02b1
000002ac: JUMPI
000002ad: PUSH1 0x00
000002af: DUP1
000002b0: REVERT
000002b1: JUMPDEST
000002b2: POP
000002b3: PUSH2 0x02c5
000002b6: PUSH2 0x02c0
000002b9: CALLDATASIZE
000002ba: PUSH1 0x04
000002bc: PUSH2 0x2d9a
000002bf: JUMP
000002c0: JUMPDEST
000002c1: PUSH2 0x086d
000002c4: JUMP
000002c5: JUMPDEST
000002c6: STOP
000002c7: JUMPDEST
000002c8: CALLVALUE
000002c9: DUP1
000002ca: ISZERO
000002cb: PUSH2 0x02d3
000002ce: JUMPI
000002cf: PUSH1 0x00
000002d1: DUP1
000002d2: REVERT
000002d3: JUMPDEST
000002d4: POP
000002d5: PUSH2 0x02c5
000002d8: PUSH2 0x02e2
000002db: CALLDATASIZE
000002dc: PUSH1 0x04
000002de: PUSH2 0x2d9a
000002e1: JUMP
000002e2: JUMPDEST
000002e3: PUSH2 0x0884
000002e6: JUMP
000002e7: JUMPDEST
000002e8: CALLVALUE
000002e9: DUP1
000002ea: ISZERO
000002eb: PUSH2 0x02f3
000002ee: JUMPI
000002ef: PUSH1 0x00
000002f1: DUP1
000002f2: REVERT
000002f3: JUMPDEST
000002f4: POP
000002f5: PUSH2 0x0307
000002f8: PUSH2 0x0302
000002fb: CALLDATASIZE
000002fc: PUSH1 0x04
000002fe: PUSH2 0x2dd0
00000301: JUMP
00000302: JUMPDEST
00000303: PUSH2 0x09d2
00000306: JUMP
00000307: JUMPDEST
00000308: PUSH1 0x40
0000030a: MLOAD
0000030b: PUSH2 0x0314
0000030e: SWAP2
0000030f: SWAP1
00000310: PUSH2 0x2deb
00000313: JUMP
00000314: JUMPDEST
00000315: PUSH1 0x40
00000317: MLOAD
00000318: DUP1
00000319: SWAP2
0000031a: SUB
0000031b: SWAP1
0000031c: RETURN
0000031d: JUMPDEST
0000031e: CALLVALUE
0000031f: DUP1
00000320: ISZERO
00000321: PUSH2 0x0329
00000324: JUMPI
00000325: PUSH1 0x00
00000327: DUP1
00000328: REVERT
00000329: JUMPDEST
0000032a: POP
0000032b: PUSH2 0x02c5
0000032e: PUSH2 0x0338
00000331: CALLDATASIZE
00000332: PUSH1 0x04
00000334: PUSH2 0x2e45
00000337: JUMP
00000338: JUMPDEST
00000339: PUSH2 0x09f9
0000033c: JUMP
0000033d: JUMPDEST
0000033e: CALLVALUE
0000033f: DUP1
00000340: ISZERO
00000341: PUSH2 0x0349
00000344: JUMPI
00000345: PUSH1 0x00
00000347: DUP1
00000348: REVERT
00000349: JUMPDEST
0000034a: POP
0000034b: PUSH2 0x035d
0000034e: PUSH2 0x0358
00000351: CALLDATASIZE
00000352: PUSH1 0x04
00000354: PUSH2 0x2dd0
00000357: JUMP
00000358: JUMPDEST
00000359: PUSH2 0x0a24
0000035c: JUMP
0000035d: JUMPDEST
0000035e: PUSH1 0x40
00000360: MLOAD
00000361: SWAP1
00000362: DUP2
00000363: MSTORE
00000364: PUSH1 0x20
00000366: ADD
00000367: PUSH2 0x0314
0000036a: JUMP
0000036b: JUMPDEST
0000036c: CALLVALUE
0000036d: DUP1
0000036e: ISZERO
0000036f: PUSH2 0x0377
00000372: JUMPI
00000373: PUSH1 0x00
00000375: DUP1
00000376: REVERT
00000377: JUMPDEST
00000378: POP
00000379: PUSH2 0x02c5
0000037c: PUSH2 0x0386
0000037f: CALLDATASIZE
00000380: PUSH1 0x04
00000382: PUSH2 0x2d9a
00000385: JUMP
00000386: JUMPDEST
00000387: PUSH2 0x0a43
0000038a: JUMP
0000038b: JUMPDEST
0000038c: CALLVALUE
0000038d: DUP1
0000038e: ISZERO
0000038f: PUSH2 0x0397
00000392: JUMPI
00000393: PUSH1 0x00
00000395: DUP1
00000396: REVERT
00000397: JUMPDEST
00000398: POP
00000399: PUSH2 0x02c5
0000039c: PUSH2 0x03a6
0000039f: CALLDATASIZE
000003a0: PUSH1 0x04
000003a2: PUSH2 0x2d9a
000003a5: JUMP
000003a6: JUMPDEST
000003a7: PUSH2 0x0b84
000003aa: JUMP
000003ab: JUMPDEST
000003ac: CALLVALUE
000003ad: DUP1
000003ae: ISZERO
000003af: PUSH2 0x03b7
000003b2: JUMPI
000003b3: PUSH1 0x00
000003b5: DUP1
000003b6: REVERT
000003b7: JUMPDEST
000003b8: POP
000003b9: PUSH2 0x03c0
000003bc: PUSH2 0x0b97
000003bf: JUMP
000003c0: JUMPDEST
000003c1: PUSH1 0x40
000003c3: MLOAD
000003c4: PUSH2 0x0314
000003c7: SWAP2
000003c8: SWAP1
000003c9: PUSH2 0x2e6f
000003cc: JUMP
000003cd: JUMPDEST
000003ce: CALLVALUE
000003cf: DUP1
000003d0: ISZERO
000003d1: PUSH2 0x03d9
000003d4: JUMPI
000003d5: PUSH1 0x00
000003d7: DUP1
000003d8: REVERT
000003d9: JUMPDEST
000003da: POP
000003db: PUSH2 0x02c5
000003de: PUSH2 0x03e8
000003e1: CALLDATASIZE
000003e2: PUSH1 0x04
000003e4: PUSH2 0x2e45
000003e7: JUMP
000003e8: JUMPDEST
000003e9: PUSH2 0x0ba8
000003ec: JUMP
000003ed: JUMPDEST
000003ee: CALLVALUE
000003ef: DUP1
000003f0: ISZERO
000003f1: PUSH2 0x03f9
000003f4: JUMPI
000003f5: PUSH1 0x00
000003f7: DUP1
000003f8: REVERT
000003f9: JUMPDEST
000003fa: POP
000003fb: PUSH2 0x02c5
000003fe: PUSH2 0x0408
00000401: CALLDATASIZE
00000402: PUSH1 0x04
00000404: PUSH2 0x2ead
00000407: JUMP
00000408: JUMPDEST
00000409: PUSH2 0x0bba
0000040c: JUMP
0000040d: JUMPDEST
0000040e: PUSH2 0x035d
00000411: PUSH2 0x041b
00000414: CALLDATASIZE
00000415: PUSH1 0x04
00000417: PUSH2 0x2f26
0000041a: JUMP
0000041b: JUMPDEST
0000041c: PUSH2 0x0be9
0000041f: JUMP
00000420: JUMPDEST
00000421: PUSH2 0x02c5
00000424: PUSH2 0x042e
00000427: CALLDATASIZE
00000428: PUSH1 0x04
0000042a: PUSH2 0x2fa0
0000042d: JUMP
0000042e: JUMPDEST
0000042f: PUSH2 0x0c3b
00000432: JUMP
00000433: JUMPDEST
00000434: PUSH2 0x02c5
00000437: PUSH2 0x0441
0000043a: CALLDATASIZE
0000043b: PUSH1 0x04
0000043d: PUSH2 0x2ffa
00000440: JUMP
00000441: JUMPDEST
00000442: PUSH2 0x0daf
00000445: JUMP
00000446: JUMPDEST
00000447: CALLVALUE
00000448: DUP1
00000449: ISZERO
0000044a: PUSH2 0x0452
0000044d: JUMPI
0000044e: PUSH1 0x00
00000450: DUP1
00000451: REVERT
00000452: JUMPDEST
00000453: POP
00000454: PUSH2 0x035d
00000457: PUSH2 0x0461
0000045a: CALLDATASIZE
0000045b: PUSH1 0x04
0000045d: PUSH2 0x2d9a
00000460: JUMP
00000461: JUMPDEST
00000462: PUSH2 0x0f48
00000465: JUMP
00000466: JUMPDEST
00000467: CALLVALUE
00000468: DUP1
00000469: ISZERO
0000046a: PUSH2 0x0472
0000046d: JUMPI
0000046e: PUSH1 0x00
00000470: DUP1
00000471: REVERT
00000472: JUMPDEST
00000473: POP
00000474: PUSH2 0x02c5
00000477: PUSH2 0x0ffd
0000047a: JUMP
0000047b: JUMPDEST
0000047c: CALLVALUE
0000047d: DUP1
0000047e: ISZERO
0000047f: PUSH2 0x0487
00000482: JUMPI
00000483: PUSH1 0x00
00000485: DUP1
00000486: REVERT
00000487: JUMPDEST
00000488: POP
00000489: PUSH2 0x02c5
0000048c: PUSH2 0x0496
0000048f: CALLDATASIZE
00000490: PUSH1 0x04
00000492: PUSH2 0x307f
00000495: JUMP
00000496: JUMPDEST
00000497: PUSH2 0x1011
0000049a: JUMP
0000049b: JUMPDEST
0000049c: CALLVALUE
0000049d: DUP1
0000049e: ISZERO
0000049f: PUSH2 0x04a7
000004a2: JUMPI
000004a3: PUSH1 0x00
000004a5: DUP1
000004a6: REVERT
000004a7: JUMPDEST
000004a8: POP
000004a9: PUSH2 0x035d
000004ac: PUSH2 0x04b6
000004af: CALLDATASIZE
000004b0: PUSH1 0x04
000004b2: PUSH2 0x2dd0
000004b5: JUMP
000004b6: JUMPDEST
000004b7: PUSH1 0xca
000004b9: PUSH1 0x20
000004bb: MSTORE
000004bc: PUSH1 0x00
000004be: SWAP1
000004bf: DUP2
000004c0: MSTORE
000004c1: PUSH1 0x40
000004c3: SWAP1
000004c4: KECCAK256
000004c5: SLOAD
000004c6: DUP2
000004c7: JUMP
000004c8: JUMPDEST
000004c9: CALLVALUE
000004ca: DUP1
000004cb: ISZERO
000004cc: PUSH2 0x04d4
000004cf: JUMPI
000004d0: PUSH1 0x00
000004d2: DUP1
000004d3: REVERT
000004d4: JUMPDEST
000004d5: POP
000004d6: PUSH2 0x035d
000004d9: PUSH2 0x04e3
000004dc: CALLDATASIZE
000004dd: PUSH1 0x04
000004df: PUSH2 0x2dd0
000004e2: JUMP
000004e3: JUMPDEST
000004e4: PUSH1 0xcb
000004e6: PUSH1 0x20
000004e8: MSTORE
000004e9: PUSH1 0x00
000004eb: SWAP1
000004ec: DUP2
000004ed: MSTORE
000004ee: PUSH1 0x40
000004f0: SWAP1
000004f1: KECCAK256
000004f2: SLOAD
000004f3: DUP2
000004f4: JUMP
000004f5: JUMPDEST
000004f6: CALLVALUE
000004f7: DUP1
000004f8: ISZERO
000004f9: PUSH2 0x0501
000004fc: JUMPI
000004fd: PUSH1 0x00
000004ff: DUP1
00000500: REVERT
00000501: JUMPDEST
00000502: POP
00000503: PUSH1 0x65
00000505: SLOAD
00000506: PUSH2 0x0522
00000509: SWAP1
0000050a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000051f: AND
00000520: DUP2
00000521: JUMP
00000522: JUMPDEST
00000523: PUSH1 0x40
00000525: MLOAD
00000526: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000053b: SWAP1
0000053c: SWAP2
0000053d: AND
0000053e: DUP2
0000053f: MSTORE
00000540: PUSH1 0x20
00000542: ADD
00000543: PUSH2 0x0314
00000546: JUMP
00000547: JUMPDEST
00000548: PUSH2 0x035d
0000054b: PUSH2 0x0555
0000054e: CALLDATASIZE
0000054f: PUSH1 0x04
00000551: PUSH2 0x30c1
00000554: JUMP
00000555: JUMPDEST
00000556: PUSH2 0x106c
00000559: JUMP
0000055a: JUMPDEST
0000055b: CALLVALUE
0000055c: DUP1
0000055d: ISZERO
0000055e: PUSH2 0x0566
00000561: JUMPI
00000562: PUSH1 0x00
00000564: DUP1
00000565: REVERT
00000566: JUMPDEST
00000567: POP
00000568: PUSH2 0x057a
0000056b: PUSH2 0x0575
0000056e: CALLDATASIZE
0000056f: PUSH1 0x04
00000571: PUSH2 0x30c1
00000574: JUMP
00000575: JUMPDEST
00000576: PUSH2 0x107a
00000579: JUMP
0000057a: JUMPDEST
0000057b: PUSH1 0x40
0000057d: MLOAD
0000057e: PUSH2 0x0314
00000581: SWAP2
00000582: SWAP1
00000583: PUSH2 0x30f4
00000586: JUMP
00000587: JUMPDEST
00000588: CALLVALUE
00000589: DUP1
0000058a: ISZERO
0000058b: PUSH2 0x0593
0000058e: JUMPI
0000058f: PUSH1 0x00
00000591: DUP1
00000592: REVERT
00000593: JUMPDEST
00000594: POP
00000595: PUSH2 0x05bb
00000598: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
000005b9: DUP2
000005ba: JUMP
000005bb: JUMPDEST
000005bc: PUSH1 0x40
000005be: MLOAD
000005bf: PUSH4 0xffffffff
000005c4: SWAP1
000005c5: SWAP2
000005c6: AND
000005c7: DUP2
000005c8: MSTORE
000005c9: PUSH1 0x20
000005cb: ADD
000005cc: PUSH2 0x0314
000005cf: JUMP
000005d0: JUMPDEST
000005d1: CALLVALUE
000005d2: DUP1
000005d3: ISZERO
000005d4: PUSH2 0x05dc
000005d7: JUMPI
000005d8: PUSH1 0x00
000005da: DUP1
000005db: REVERT
000005dc: JUMPDEST
000005dd: POP
000005de: PUSH1 0x33
000005e0: SLOAD
000005e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005f6: AND
000005f7: PUSH2 0x0522
000005fa: JUMP
000005fb: JUMPDEST
000005fc: CALLVALUE
000005fd: DUP1
000005fe: ISZERO
000005ff: PUSH2 0x0607
00000602: JUMPI
00000603: PUSH1 0x00
00000605: DUP1
00000606: REVERT
00000607: JUMPDEST
00000608: POP
00000609: PUSH2 0x0644
0000060c: PUSH1 0x40
0000060e: MLOAD
0000060f: DUP1
00000610: PUSH1 0x40
00000612: ADD
00000613: PUSH1 0x40
00000615: MSTORE
00000616: DUP1
00000617: PUSH1 0x05
00000619: DUP2
0000061a: MSTORE
0000061b: PUSH1 0x20
0000061d: ADD
0000061e: PUSH32 0x392e302e39000000000000000000000000000000000000000000000000000000
0000063f: DUP2
00000640: MSTORE
00000641: POP
00000642: DUP2
00000643: JUMP
00000644: JUMPDEST
00000645: PUSH1 0x40
00000647: MLOAD
00000648: PUSH2 0x0314
0000064b: SWAP2
0000064c: SWAP1
0000064d: PUSH2 0x31c7
00000650: JUMP
00000651: JUMPDEST
00000652: CALLVALUE
00000653: DUP1
00000654: ISZERO
00000655: PUSH2 0x065d
00000658: JUMPI
00000659: PUSH1 0x00
0000065b: DUP1
0000065c: REVERT
0000065d: JUMPDEST
0000065e: POP
0000065f: PUSH2 0x0522
00000662: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00000683: DUP2
00000684: JUMP
00000685: JUMPDEST
00000686: CALLVALUE
00000687: DUP1
00000688: ISZERO
00000689: PUSH2 0x0691
0000068c: JUMPI
0000068d: PUSH1 0x00
0000068f: DUP1
00000690: REVERT
00000691: JUMPDEST
00000692: POP
00000693: PUSH2 0x02c5
00000696: PUSH2 0x06a0
00000699: CALLDATASIZE
0000069a: PUSH1 0x04
0000069c: PUSH2 0x31da
0000069f: JUMP
000006a0: JUMPDEST
000006a1: PUSH2 0x117d
000006a4: JUMP
000006a5: JUMPDEST
000006a6: CALLVALUE
000006a7: DUP1
000006a8: ISZERO
000006a9: PUSH2 0x06b1
000006ac: JUMPI
000006ad: PUSH1 0x00
000006af: DUP1
000006b0: REVERT
000006b1: JUMPDEST
000006b2: POP
000006b3: PUSH2 0x02c5
000006b6: PUSH2 0x06c0
000006b9: CALLDATASIZE
000006ba: PUSH1 0x04
000006bc: PUSH2 0x2e45
000006bf: JUMP
000006c0: JUMPDEST
000006c1: PUSH2 0x11ee
000006c4: JUMP
000006c5: JUMPDEST
000006c6: CALLVALUE
000006c7: DUP1
000006c8: ISZERO
000006c9: PUSH2 0x06d1
000006cc: JUMPI
000006cd: PUSH1 0x00
000006cf: DUP1
000006d0: REVERT
000006d1: JUMPDEST
000006d2: POP
000006d3: PUSH2 0x02c5
000006d6: PUSH2 0x06e0
000006d9: CALLDATASIZE
000006da: PUSH1 0x04
000006dc: PUSH2 0x324f
000006df: JUMP
000006e0: JUMPDEST
000006e1: PUSH2 0x1200
000006e4: JUMP
000006e5: JUMPDEST
000006e6: CALLVALUE
000006e7: DUP1
000006e8: ISZERO
000006e9: PUSH2 0x06f1
000006ec: JUMPI
000006ed: PUSH1 0x00
000006ef: DUP1
000006f0: REVERT
000006f1: JUMPDEST
000006f2: POP
000006f3: PUSH2 0x02c5
000006f6: PUSH2 0x0700
000006f9: CALLDATASIZE
000006fa: PUSH1 0x04
000006fc: PUSH2 0x2dd0
000006ff: JUMP
00000700: JUMPDEST
00000701: PUSH2 0x1397
00000704: JUMP
00000705: JUMPDEST
00000706: CALLVALUE
00000707: DUP1
00000708: ISZERO
00000709: PUSH2 0x0711
0000070c: JUMPI
0000070d: PUSH1 0x00
0000070f: DUP1
00000710: REVERT
00000711: JUMPDEST
00000712: POP
00000713: PUSH2 0x0307
00000716: PUSH2 0x13b6
00000719: JUMP
0000071a: JUMPDEST
0000071b: CALLVALUE
0000071c: DUP1
0000071d: ISZERO
0000071e: PUSH2 0x0726
00000721: JUMPI
00000722: PUSH1 0x00
00000724: DUP1
00000725: REVERT
00000726: JUMPDEST
00000727: POP
00000728: PUSH2 0x0522
0000072b: PUSH32 0x0000000000000000000000006c6828673152ec307482e72b4a9ad9d84c1d761c
0000074c: DUP2
0000074d: JUMP
0000074e: JUMPDEST
0000074f: CALLVALUE
00000750: DUP1
00000751: ISZERO
00000752: PUSH2 0x075a
00000755: JUMPI
00000756: PUSH1 0x00
00000758: DUP1
00000759: REVERT
0000075a: JUMPDEST
0000075b: POP
0000075c: PUSH1 0x66
0000075e: SLOAD
0000075f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000774: AND
00000775: PUSH2 0x0522
00000778: JUMP
00000779: JUMPDEST
0000077a: CALLVALUE
0000077b: DUP1
0000077c: ISZERO
0000077d: PUSH2 0x0785
00000780: JUMPI
00000781: PUSH1 0x00
00000783: DUP1
00000784: REVERT
00000785: JUMPDEST
00000786: POP
00000787: PUSH2 0x02c5
0000078a: PUSH2 0x0794
0000078d: CALLDATASIZE
0000078e: PUSH1 0x04
00000790: PUSH2 0x328f
00000793: JUMP
00000794: JUMPDEST
00000795: PUSH2 0x13c2
00000798: JUMP
00000799: JUMPDEST
0000079a: CALLVALUE
0000079b: DUP1
0000079c: ISZERO
0000079d: PUSH2 0x07a5
000007a0: JUMPI
000007a1: PUSH1 0x00
000007a3: DUP1
000007a4: REVERT
000007a5: JUMPDEST
000007a6: POP
000007a7: PUSH2 0x02c5
000007aa: PUSH2 0x07b4
000007ad: CALLDATASIZE
000007ae: PUSH1 0x04
000007b0: PUSH2 0x2dd0
000007b3: JUMP
000007b4: JUMPDEST
000007b5: PUSH2 0x14a1
000007b8: JUMP
000007b9: JUMPDEST
000007ba: CALLVALUE
000007bb: DUP1
000007bc: ISZERO
000007bd: PUSH2 0x07c5
000007c0: JUMPI
000007c1: PUSH1 0x00
000007c3: DUP1
000007c4: REVERT
000007c5: JUMPDEST
000007c6: POP
000007c7: PUSH2 0x035d
000007ca: PUSH2 0x07d4
000007cd: CALLDATASIZE
000007ce: PUSH1 0x04
000007d0: PUSH2 0x2dd0
000007d3: JUMP
000007d4: JUMPDEST
000007d5: PUSH2 0x14b5
000007d8: JUMP
000007d9: JUMPDEST
000007da: CALLVALUE
000007db: DUP1
000007dc: ISZERO
000007dd: PUSH2 0x07e5
000007e0: JUMPI
000007e1: PUSH1 0x00
000007e3: DUP1
000007e4: REVERT
000007e5: JUMPDEST
000007e6: POP
000007e7: PUSH2 0x02c5
000007ea: PUSH2 0x07f4
000007ed: CALLDATASIZE
000007ee: PUSH1 0x04
000007f0: PUSH2 0x2d9a
000007f3: JUMP
000007f4: JUMPDEST
000007f5: PUSH2 0x14e2
000007f8: JUMP
000007f9: JUMPDEST
000007fa: CALLVALUE
000007fb: DUP1
000007fc: ISZERO
000007fd: PUSH2 0x0805
00000800: JUMPI
00000801: PUSH1 0x00
00000803: DUP1
00000804: REVERT
00000805: JUMPDEST
00000806: POP
00000807: PUSH2 0x035d
0000080a: PUSH32 0x000000000000000000000000000000000000000000000000000000e8d4a51000
0000082b: DUP2
0000082c: JUMP
0000082d: JUMPDEST
0000082e: CALLVALUE
0000082f: DUP1
00000830: ISZERO
00000831: PUSH2 0x0839
00000834: JUMPI
00000835: PUSH1 0x00
00000837: DUP1
00000838: REVERT
00000839: JUMPDEST
0000083a: POP
0000083b: PUSH2 0x02c5
0000083e: PUSH2 0x0848
00000841: CALLDATASIZE
00000842: PUSH1 0x04
00000844: PUSH2 0x32ef
00000847: JUMP
00000848: JUMPDEST
00000849: PUSH2 0x1596
0000084c: JUMP
0000084d: JUMPDEST
0000084e: CALLVALUE
0000084f: DUP1
00000850: ISZERO
00000851: PUSH2 0x0859
00000854: JUMPI
00000855: PUSH1 0x00
00000857: DUP1
00000858: REVERT
00000859: JUMPDEST
0000085a: POP
0000085b: PUSH2 0x02c5
0000085e: PUSH2 0x0868
00000861: CALLDATASIZE
00000862: PUSH1 0x04
00000864: PUSH2 0x2ead
00000867: JUMP
00000868: JUMPDEST
00000869: PUSH2 0x15df
0000086c: JUMP
0000086d: JUMPDEST
0000086e: PUSH2 0x0875
00000871: PUSH2 0x1613
00000874: JUMP
00000875: JUMPDEST
00000876: PUSH2 0x0880
00000879: PUSH1 0xcd
0000087b: DUP3
0000087c: PUSH2 0x1694
0000087f: JUMP
00000880: JUMPDEST
00000881: POP
00000882: POP
00000883: JUMP
00000884: JUMPDEST
00000885: DUP1
00000886: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000089b: DUP2
0000089c: AND
0000089d: EXTCODESIZE
0000089e: ISZERO
0000089f: ISZERO
000008a0: DUP1
000008a1: PUSH2 0x08be
000008a4: JUMPI
000008a5: POP
000008a6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008bb: DUP2
000008bc: AND
000008bd: ISZERO
000008be: JUMPDEST
000008bf: PUSH2 0x094f
000008c2: JUMPI
000008c3: PUSH1 0x40
000008c5: MLOAD
000008c6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000008e7: DUP2
000008e8: MSTORE
000008e9: PUSH1 0x20
000008eb: PUSH1 0x04
000008ed: DUP3
000008ee: ADD
000008ef: MSTORE
000008f0: PUSH1 0x27
000008f2: PUSH1 0x24
000008f4: DUP3
000008f5: ADD
000008f6: MSTORE
000008f7: PUSH32 0x4d61696c626f78436c69656e743a20696e76616c696420636f6e747261637420
00000918: PUSH1 0x44
0000091a: DUP3
0000091b: ADD
0000091c: MSTORE
0000091d: PUSH32 0x73657474696e6700000000000000000000000000000000000000000000000000
0000093e: PUSH1 0x64
00000940: DUP3
00000941: ADD
00000942: MSTORE
00000943: PUSH1 0x84
00000945: ADD
00000946: JUMPDEST
00000947: PUSH1 0x40
00000949: MLOAD
0000094a: DUP1
0000094b: SWAP2
0000094c: SUB
0000094d: SWAP1
0000094e: REVERT
0000094f: JUMPDEST
00000950: PUSH2 0x0957
00000953: PUSH2 0x1613
00000956: JUMP
00000957: JUMPDEST
00000958: PUSH1 0x66
0000095a: DUP1
0000095b: SLOAD
0000095c: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
0000097d: AND
0000097e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000993: DUP5
00000994: AND
00000995: SWAP1
00000996: DUP2
00000997: OR
00000998: SWAP1
00000999: SWAP2
0000099a: SSTORE
0000099b: PUSH1 0x40
0000099d: MLOAD
0000099e: SWAP1
0000099f: DUP2
000009a0: MSTORE
000009a1: PUSH32 0xc47cbcc588c67679e52261c45cc315e56562f8d0ccaba16facb9093ff9498799
000009c2: SWAP1
000009c3: PUSH1 0x20
000009c5: ADD
000009c6: JUMPDEST
000009c7: PUSH1 0x40
000009c9: MLOAD
000009ca: DUP1
000009cb: SWAP2
000009cc: SUB
000009cd: SWAP1
000009ce: LOG1
000009cf: POP
000009d0: POP
000009d1: JUMP
000009d2: JUMPDEST
000009d3: PUSH4 0xffffffff
000009d8: DUP2
000009d9: AND
000009da: PUSH1 0x00
000009dc: SWAP1
000009dd: DUP2
000009de: MSTORE
000009df: PUSH1 0xcc
000009e1: PUSH1 0x20
000009e3: MSTORE
000009e4: PUSH1 0x40
000009e6: SWAP1
000009e7: KECCAK256
000009e8: PUSH1 0x60
000009ea: SWAP1
000009eb: PUSH2 0x09f3
000009ee: SWAP1
000009ef: PUSH2 0x16bd
000009f2: JUMP
000009f3: JUMPDEST
000009f4: SWAP3
000009f5: SWAP2
000009f6: POP
000009f7: POP
000009f8: JUMP
000009f9: JUMPDEST
000009fa: PUSH2 0x0a01
000009fd: PUSH2 0x1613
00000a00: JUMP
00000a01: JUMPDEST
00000a02: PUSH2 0x0a0a
00000a05: DUP3
00000a06: PUSH2 0x16ca
00000a09: JUMP
00000a0a: JUMPDEST
00000a0b: POP
00000a0c: PUSH4 0xffffffff
00000a11: SWAP1
00000a12: SWAP2
00000a13: AND
00000a14: PUSH1 0x00
00000a16: SWAP1
00000a17: DUP2
00000a18: MSTORE
00000a19: PUSH1 0xcb
00000a1b: PUSH1 0x20
00000a1d: MSTORE
00000a1e: PUSH1 0x40
00000a20: SWAP1
00000a21: KECCAK256
00000a22: SSTORE
00000a23: JUMP
00000a24: JUMPDEST
00000a25: PUSH1 0x00
00000a27: DUP1
00000a28: PUSH2 0x0a3b
00000a2b: PUSH1 0x97
00000a2d: PUSH4 0xffffffff
00000a32: DUP1
00000a33: DUP7
00000a34: AND
00000a35: SWAP1
00000a36: PUSH2 0x172f
00000a39: AND
00000a3a: JUMP
00000a3b: JUMPDEST
00000a3c: SWAP5
00000a3d: SWAP4
00000a3e: POP
00000a3f: POP
00000a40: POP
00000a41: POP
00000a42: JUMP
00000a43: JUMPDEST
00000a44: DUP1
00000a45: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a5a: DUP2
00000a5b: AND
00000a5c: EXTCODESIZE
00000a5d: ISZERO
00000a5e: ISZERO
00000a5f: DUP1
00000a60: PUSH2 0x0a7d
00000a63: JUMPI
00000a64: POP
00000a65: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a7a: DUP2
00000a7b: AND
00000a7c: ISZERO
00000a7d: JUMPDEST
00000a7e: PUSH2 0x0b09
00000a81: JUMPI
00000a82: PUSH1 0x40
00000a84: MLOAD
00000a85: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000aa6: DUP2
00000aa7: MSTORE
00000aa8: PUSH1 0x20
00000aaa: PUSH1 0x04
00000aac: DUP3
00000aad: ADD
00000aae: MSTORE
00000aaf: PUSH1 0x27
00000ab1: PUSH1 0x24
00000ab3: DUP3
00000ab4: ADD
00000ab5: MSTORE
00000ab6: PUSH32 0x4d61696c626f78436c69656e743a20696e76616c696420636f6e747261637420
00000ad7: PUSH1 0x44
00000ad9: DUP3
00000ada: ADD
00000adb: MSTORE
00000adc: PUSH32 0x73657474696e6700000000000000000000000000000000000000000000000000
00000afd: PUSH1 0x64
00000aff: DUP3
00000b00: ADD
00000b01: MSTORE
00000b02: PUSH1 0x84
00000b04: ADD
00000b05: PUSH2 0x0946
00000b08: JUMP
00000b09: JUMPDEST
00000b0a: PUSH2 0x0b11
00000b0d: PUSH2 0x1613
00000b10: JUMP
00000b11: JUMPDEST
00000b12: PUSH1 0x65
00000b14: DUP1
00000b15: SLOAD
00000b16: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000b37: AND
00000b38: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b4d: DUP5
00000b4e: AND
00000b4f: SWAP1
00000b50: DUP2
00000b51: OR
00000b52: SWAP1
00000b53: SWAP2
00000b54: SSTORE
00000b55: PUSH1 0x40
00000b57: MLOAD
00000b58: SWAP1
00000b59: DUP2
00000b5a: MSTORE
00000b5b: PUSH32 0x4eab7b127c764308788622363ad3e9532de3dfba7845bd4f84c125a22544255a
00000b7c: SWAP1
00000b7d: PUSH1 0x20
00000b7f: ADD
00000b80: PUSH2 0x09c6
00000b83: JUMP
00000b84: JUMPDEST
00000b85: PUSH2 0x0b8c
00000b88: PUSH2 0x1613
00000b8b: JUMP
00000b8c: JUMPDEST
00000b8d: PUSH2 0x0880
00000b90: PUSH1 0xcd
00000b92: DUP3
00000b93: PUSH2 0x1748
00000b96: JUMP
00000b97: JUMPDEST
00000b98: PUSH1 0x60
00000b9a: PUSH2 0x0ba3
00000b9d: PUSH1 0x97
00000b9f: PUSH2 0x176a
00000ba2: JUMP
00000ba3: JUMPDEST
00000ba4: SWAP1
00000ba5: POP
00000ba6: SWAP1
00000ba7: JUMP
00000ba8: JUMPDEST
00000ba9: PUSH2 0x0bb0
00000bac: PUSH2 0x1613
00000baf: JUMP
00000bb0: JUMPDEST
00000bb1: PUSH2 0x0880
00000bb4: DUP3
00000bb5: DUP3
00000bb6: PUSH2 0x181b
00000bb9: JUMP
00000bba: JUMPDEST
00000bbb: PUSH2 0x0bc2
00000bbe: PUSH2 0x1613
00000bc1: JUMP
00000bc2: JUMPDEST
00000bc3: PUSH4 0xffffffff
00000bc8: DUP1
00000bc9: DUP4
00000bca: AND
00000bcb: PUSH1 0x00
00000bcd: SWAP1
00000bce: DUP2
00000bcf: MSTORE
00000bd0: PUSH1 0xcc
00000bd2: PUSH1 0x20
00000bd4: MSTORE
00000bd5: PUSH1 0x40
00000bd7: SWAP1
00000bd8: KECCAK256
00000bd9: PUSH2 0x0be4
00000bdc: SWAP2
00000bdd: DUP4
00000bde: SWAP1
00000bdf: PUSH2 0x1748
00000be2: AND
00000be3: JUMP
00000be4: JUMPDEST
00000be5: POP
00000be6: POP
00000be7: POP
00000be8: JUMP
00000be9: JUMPDEST
00000bea: PUSH1 0x00
00000bec: PUSH2 0x0c30
00000bef: DUP8
00000bf0: DUP8
00000bf1: DUP8
00000bf2: CALLVALUE
00000bf3: DUP9
00000bf4: DUP9
00000bf5: DUP1
00000bf6: DUP1
00000bf7: PUSH1 0x1f
00000bf9: ADD
00000bfa: PUSH1 0x20
00000bfc: DUP1
00000bfd: SWAP2
00000bfe: DIV
00000bff: MUL
00000c00: PUSH1 0x20
00000c02: ADD
00000c03: PUSH1 0x40
00000c05: MLOAD
00000c06: SWAP1
00000c07: DUP2
00000c08: ADD
00000c09: PUSH1 0x40
00000c0b: MSTORE
00000c0c: DUP1
00000c0d: SWAP4
00000c0e: SWAP3
00000c0f: SWAP2
00000c10: SWAP1
00000c11: DUP2
00000c12: DUP2
00000c13: MSTORE
00000c14: PUSH1 0x20
00000c16: ADD
00000c17: DUP4
00000c18: DUP4
00000c19: DUP1
00000c1a: DUP3
00000c1b: DUP5
00000c1c: CALLDATACOPY
00000c1d: PUSH1 0x00
00000c1f: SWAP3
00000c20: ADD
00000c21: SWAP2
00000c22: SWAP1
00000c23: SWAP2
00000c24: MSTORE
00000c25: POP
00000c26: DUP11
00000c27: SWAP3
00000c28: POP
00000c29: PUSH2 0x1869
00000c2c: SWAP2
00000c2d: POP
00000c2e: POP
00000c2f: JUMP
00000c30: JUMPDEST
00000c31: SWAP8
00000c32: SWAP7
00000c33: POP
00000c34: POP
00000c35: POP
00000c36: POP
00000c37: POP
00000c38: POP
00000c39: POP
00000c3a: JUMP
00000c3b: JUMPDEST
00000c3c: CALLER
00000c3d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c52: PUSH32 0x0000000000000000000000006c6828673152ec307482e72b4a9ad9d84c1d761c
00000c73: AND
00000c74: EQ
00000c75: PUSH2 0x0d00
00000c78: JUMPI
00000c79: PUSH1 0x40
00000c7b: MLOAD
00000c7c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000c9d: DUP2
00000c9e: MSTORE
00000c9f: PUSH1 0x20
00000ca1: PUSH1 0x04
00000ca3: DUP3
00000ca4: ADD
00000ca5: MSTORE
00000ca6: PUSH1 0x21
00000ca8: PUSH1 0x24
00000caa: DUP3
00000cab: ADD
00000cac: MSTORE
00000cad: PUSH32 0x4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f
00000cce: PUSH1 0x44
00000cd0: DUP3
00000cd1: ADD
00000cd2: MSTORE
00000cd3: PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000
00000cf4: PUSH1 0x64
00000cf6: DUP3
00000cf7: ADD
00000cf8: MSTORE
00000cf9: PUSH1 0x84
00000cfb: ADD
00000cfc: PUSH2 0x0946
00000cff: JUMP
00000d00: JUMPDEST
00000d01: PUSH1 0x00
00000d03: PUSH2 0x0d0b
00000d06: DUP6
00000d07: PUSH2 0x16ca
00000d0a: JUMP
00000d0b: JUMPDEST
00000d0c: SWAP1
00000d0d: POP
00000d0e: DUP4
00000d0f: DUP2
00000d10: EQ
00000d11: PUSH2 0x0d9c
00000d14: JUMPI
00000d15: PUSH1 0x40
00000d17: MLOAD
00000d18: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000d39: DUP2
00000d3a: MSTORE
00000d3b: PUSH1 0x20
00000d3d: PUSH1 0x04
00000d3f: DUP3
00000d40: ADD
00000d41: MSTORE
00000d42: PUSH1 0x25
00000d44: PUSH1 0x24
00000d46: DUP3
00000d47: ADD
00000d48: MSTORE
00000d49: PUSH32 0x456e726f6c6c656420726f7574657220646f6573206e6f74206d617463682073
00000d6a: PUSH1 0x44
00000d6c: DUP3
00000d6d: ADD
00000d6e: MSTORE
00000d6f: PUSH32 0x656e646572000000000000000000000000000000000000000000000000000000
00000d90: PUSH1 0x64
00000d92: DUP3
00000d93: ADD
00000d94: MSTORE
00000d95: PUSH1 0x84
00000d97: ADD
00000d98: PUSH2 0x0946
00000d9b: JUMP
00000d9c: JUMPDEST
00000d9d: PUSH2 0x0da8
00000da0: DUP6
00000da1: DUP6
00000da2: DUP6
00000da3: DUP6
00000da4: PUSH2 0x18f0
00000da7: JUMP
00000da8: JUMPDEST
00000da9: POP
00000daa: POP
00000dab: POP
00000dac: POP
00000dad: POP
00000dae: JUMP
00000daf: JUMPDEST
00000db0: PUSH2 0x0dba
00000db3: PUSH1 0xcd
00000db5: CALLER
00000db6: PUSH2 0x1972
00000db9: JUMP
00000dba: JUMPDEST
00000dbb: PUSH2 0x0e20
00000dbe: JUMPI
00000dbf: PUSH1 0x40
00000dc1: MLOAD
00000dc2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000de3: DUP2
00000de4: MSTORE
00000de5: PUSH1 0x20
00000de7: PUSH1 0x04
00000de9: DUP3
00000dea: ADD
00000deb: MSTORE
00000dec: PUSH1 0x14
00000dee: PUSH1 0x24
00000df0: DUP3
00000df1: ADD
00000df2: MSTORE
00000df3: PUSH32 0x4d43523a204f6e6c7920526562616c616e636572000000000000000000000000
00000e14: PUSH1 0x44
00000e16: DUP3
00000e17: ADD
00000e18: MSTORE
00000e19: PUSH1 0x64
00000e1b: ADD
00000e1c: PUSH2 0x0946
00000e1f: JUMP
00000e20: JUMPDEST
00000e21: PUSH4 0xffffffff
00000e26: DUP1
00000e27: DUP5
00000e28: AND
00000e29: PUSH1 0x00
00000e2b: SWAP1
00000e2c: DUP2
00000e2d: MSTORE
00000e2e: PUSH1 0xcc
00000e30: PUSH1 0x20
00000e32: MSTORE
00000e33: PUSH1 0x40
00000e35: SWAP1
00000e36: KECCAK256
00000e37: DUP5
00000e38: SWAP2
00000e39: DUP4
00000e3a: SWAP2
00000e3b: SWAP1
00000e3c: PUSH2 0x0e49
00000e3f: SWAP1
00000e40: DUP3
00000e41: SWAP1
00000e42: DUP5
00000e43: SWAP1
00000e44: PUSH2 0x1972
00000e47: AND
00000e48: JUMP
00000e49: JUMPDEST
00000e4a: PUSH2 0x0eaf
00000e4d: JUMPI
00000e4e: PUSH1 0x40
00000e50: MLOAD
00000e51: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000e72: DUP2
00000e73: MSTORE
00000e74: PUSH1 0x20
00000e76: PUSH1 0x04
00000e78: DUP3
00000e79: ADD
00000e7a: MSTORE
00000e7b: PUSH1 0x17
00000e7d: PUSH1 0x24
00000e7f: DUP3
00000e80: ADD
00000e81: MSTORE
00000e82: PUSH32 0x4d43523a204e6f7420616c6c6f77656420627269646765000000000000000000
00000ea3: PUSH1 0x44
00000ea5: DUP3
00000ea6: ADD
00000ea7: MSTORE
00000ea8: PUSH1 0x64
00000eaa: ADD
00000eab: PUSH2 0x0946
00000eae: JUMP
00000eaf: JUMPDEST
00000eb0: PUSH4 0xffffffff
00000eb5: DUP7
00000eb6: AND
00000eb7: PUSH1 0x00
00000eb9: SWAP1
00000eba: DUP2
00000ebb: MSTORE
00000ebc: PUSH1 0xcb
00000ebe: PUSH1 0x20
00000ec0: MSTORE
00000ec1: PUSH1 0x40
00000ec3: SWAP1
00000ec4: KECCAK256
00000ec5: SLOAD
00000ec6: CALLER
00000ec7: SWAP1
00000ec8: DUP1
00000ec9: PUSH2 0x0ed8
00000ecc: JUMPI
00000ecd: PUSH2 0x0ed5
00000ed0: DUP9
00000ed1: PUSH2 0x16ca
00000ed4: JUMP
00000ed5: JUMPDEST
00000ed6: SWAP1
00000ed7: POP
00000ed8: JUMPDEST
00000ed9: PUSH2 0x0ee4
00000edc: DUP9
00000edd: DUP3
00000ede: DUP10
00000edf: DUP10
00000ee0: PUSH2 0x19a1
00000ee3: JUMP
00000ee4: JUMPDEST
00000ee5: PUSH1 0x40
00000ee7: DUP1
00000ee8: MLOAD
00000ee9: DUP3
00000eea: DUP2
00000eeb: MSTORE
00000eec: PUSH1 0x20
00000eee: DUP2
00000eef: ADD
00000ef0: DUP10
00000ef1: SWAP1
00000ef2: MSTORE
00000ef3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f08: DUP5
00000f09: AND
00000f0a: SWAP2
00000f0b: PUSH4 0xffffffff
00000f10: DUP12
00000f11: AND
00000f12: SWAP2
00000f13: PUSH32 0xb1e1b117ddf429b1b8a359fe0e978f0ae191c0f70e0babfea7acaad1b0ee8a2d
00000f34: SWAP2
00000f35: ADD
00000f36: JUMPDEST
00000f37: PUSH1 0x40
00000f39: MLOAD
00000f3a: DUP1
00000f3b: SWAP2
00000f3c: SUB
00000f3d: SWAP1
00000f3e: LOG3
00000f3f: POP
00000f40: POP
00000f41: POP
00000f42: POP
00000f43: POP
00000f44: POP
00000f45: POP
00000f46: POP
00000f47: JUMP
00000f48: JUMPDEST
00000f49: PUSH1 0x40
00000f4b: MLOAD
00000f4c: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00000f6d: DUP2
00000f6e: MSTORE
00000f6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f84: DUP3
00000f85: DUP2
00000f86: AND
00000f87: PUSH1 0x04
00000f89: DUP4
00000f8a: ADD
00000f8b: MSTORE
00000f8c: PUSH1 0x00
00000f8e: SWAP2
00000f8f: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00000fb0: SWAP1
00000fb1: SWAP2
00000fb2: AND
00000fb3: SWAP1
00000fb4: PUSH4 0x70a08231
00000fb9: SWAP1
00000fba: PUSH1 0x24
00000fbc: ADD
00000fbd: PUSH1 0x20
00000fbf: PUSH1 0x40
00000fc1: MLOAD
00000fc2: DUP1
00000fc3: DUP4
00000fc4: SUB
00000fc5: DUP2
00000fc6: DUP7
00000fc7: GAS
00000fc8: STATICCALL
00000fc9: ISZERO
00000fca: DUP1
00000fcb: ISZERO
00000fcc: PUSH2 0x0fd9
00000fcf: JUMPI
00000fd0: RETURNDATASIZE
00000fd1: PUSH1 0x00
00000fd3: DUP1
00000fd4: RETURNDATACOPY
00000fd5: RETURNDATASIZE
00000fd6: PUSH1 0x00
00000fd8: REVERT
00000fd9: JUMPDEST
00000fda: POP
00000fdb: POP
00000fdc: POP
00000fdd: POP
00000fde: PUSH1 0x40
00000fe0: MLOAD
00000fe1: RETURNDATASIZE
00000fe2: PUSH1 0x1f
00000fe4: NOT
00000fe5: PUSH1 0x1f
00000fe7: DUP3
00000fe8: ADD
00000fe9: AND
00000fea: DUP3
00000feb: ADD
00000fec: DUP1
00000fed: PUSH1 0x40
00000fef: MSTORE
00000ff0: POP
00000ff1: DUP2
00000ff2: ADD
00000ff3: SWAP1
00000ff4: PUSH2 0x09f3
00000ff7: SWAP2
00000ff8: SWAP1
00000ff9: PUSH2 0x330d
00000ffc: JUMP
00000ffd: JUMPDEST
00000ffe: PUSH2 0x1005
00001001: PUSH2 0x1613
00001004: JUMP
00001005: JUMPDEST
00001006: PUSH2 0x100f
00001009: PUSH1 0x00
0000100b: PUSH2 0x19ee
0000100e: JUMP
0000100f: JUMPDEST
00001010: JUMP
00001011: JUMPDEST
00001012: PUSH2 0x1019
00001015: PUSH2 0x1613
00001018: JUMP
00001019: JUMPDEST
0000101a: DUP1
0000101b: PUSH1 0x00
0000101d: JUMPDEST
0000101e: DUP2
0000101f: DUP2
00001020: LT
00001021: ISZERO
00001022: PUSH2 0x1066
00001025: JUMPI
00001026: PUSH2 0x1054
00001029: DUP5
0000102a: DUP5
0000102b: DUP4
0000102c: DUP2
0000102d: DUP2
0000102e: LT
0000102f: PUSH2 0x103a
00001032: JUMPI
00001033: PUSH2 0x103a
00001036: PUSH2 0x3326
00001039: JUMP
0000103a: JUMPDEST
0000103b: SWAP1
0000103c: POP
0000103d: PUSH1 0x20
0000103f: MUL
00001040: ADD
00001041: PUSH1 0x20
00001043: DUP2
00001044: ADD
00001045: SWAP1
00001046: PUSH2 0x104f
00001049: SWAP2
0000104a: SWAP1
0000104b: PUSH2 0x2dd0
0000104e: JUMP
0000104f: JUMPDEST
00001050: PUSH2 0x1a65
00001053: JUMP
00001054: JUMPDEST
00001055: PUSH2 0x105f
00001058: PUSH1 0x01
0000105a: DUP3
0000105b: PUSH2 0x3384
0000105e: JUMP
0000105f: JUMPDEST
00001060: SWAP1
00001061: POP
00001062: PUSH2 0x101d
00001065: JUMP
00001066: JUMPDEST
00001067: POP
00001068: POP
00001069: POP
0000106a: POP
0000106b: JUMP
0000106c: JUMPDEST
0000106d: PUSH1 0x00
0000106f: PUSH2 0x0a3b
00001072: DUP5
00001073: DUP5
00001074: DUP5
00001075: CALLVALUE
00001076: PUSH2 0x1a99
00001079: JUMP
0000107a: JUMPDEST
0000107b: PUSH1 0x40
0000107d: DUP1
0000107e: MLOAD
0000107f: PUSH1 0x02
00001081: DUP1
00001082: DUP3
00001083: MSTORE
00001084: PUSH1 0x60
00001086: DUP3
00001087: DUP2
00001088: ADD
00001089: SWAP1
0000108a: SWAP4
0000108b: MSTORE
0000108c: DUP2
0000108d: PUSH1 0x20
0000108f: ADD
00001090: JUMPDEST
00001091: PUSH1 0x40
00001093: DUP1
00001094: MLOAD
00001095: DUP1
00001096: DUP3
00001097: ADD
00001098: SWAP1
00001099: SWAP2
0000109a: MSTORE
0000109b: PUSH1 0x00
0000109d: DUP1
0000109e: DUP3
0000109f: MSTORE
000010a0: PUSH1 0x20
000010a2: DUP3
000010a3: ADD
000010a4: MSTORE
000010a5: DUP2
000010a6: MSTORE
000010a7: PUSH1 0x20
000010a9: ADD
000010aa: SWAP1
000010ab: PUSH1 0x01
000010ad: SWAP1
000010ae: SUB
000010af: SWAP1
000010b0: DUP2
000010b1: PUSH2 0x1090
000010b4: JUMPI
000010b5: SWAP1
000010b6: POP
000010b7: POP
000010b8: SWAP1
000010b9: POP
000010ba: PUSH1 0x40
000010bc: MLOAD
000010bd: DUP1
000010be: PUSH1 0x40
000010c0: ADD
000010c1: PUSH1 0x40
000010c3: MSTORE
000010c4: DUP1
000010c5: PUSH1 0x00
000010c7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010dc: AND
000010dd: DUP2
000010de: MSTORE
000010df: PUSH1 0x20
000010e1: ADD
000010e2: PUSH2 0x10ec
000010e5: DUP7
000010e6: DUP7
000010e7: DUP7
000010e8: PUSH2 0x1ad2
000010eb: JUMP
000010ec: JUMPDEST
000010ed: DUP2
000010ee: MSTORE
000010ef: POP
000010f0: DUP2
000010f1: PUSH1 0x00
000010f3: DUP2
000010f4: MLOAD
000010f5: DUP2
000010f6: LT
000010f7: PUSH2 0x1102
000010fa: JUMPI
000010fb: PUSH2 0x1102
000010fe: PUSH2 0x3326
00001101: JUMP
00001102: JUMPDEST
00001103: PUSH1 0x20
00001105: MUL
00001106: PUSH1 0x20
00001108: ADD
00001109: ADD
0000110a: DUP2
0000110b: SWAP1
0000110c: MSTORE
0000110d: POP
0000110e: PUSH1 0x40
00001110: MLOAD
00001111: DUP1
00001112: PUSH1 0x40
00001114: ADD
00001115: PUSH1 0x40
00001117: MSTORE
00001118: DUP1
00001119: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
0000113a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000114f: AND
00001150: DUP2
00001151: MSTORE
00001152: PUSH1 0x20
00001154: ADD
00001155: DUP4
00001156: DUP2
00001157: MSTORE
00001158: POP
00001159: DUP2
0000115a: PUSH1 0x01
0000115c: DUP2
0000115d: MLOAD
0000115e: DUP2
0000115f: LT
00001160: PUSH2 0x116b
00001163: JUMPI
00001164: PUSH2 0x116b
00001167: PUSH2 0x3326
0000116a: JUMP
0000116b: JUMPDEST
0000116c: PUSH1 0x20
0000116e: MUL
0000116f: PUSH1 0x20
00001171: ADD
00001172: ADD
00001173: DUP2
00001174: SWAP1
00001175: MSTORE
00001176: POP
00001177: SWAP4
00001178: SWAP3
00001179: POP
0000117a: POP
0000117b: POP
0000117c: JUMP
0000117d: JUMPDEST
0000117e: PUSH2 0x1185
00001181: PUSH2 0x1613
00001184: JUMP
00001185: JUMPDEST
00001186: PUSH1 0x00
00001188: JUMPDEST
00001189: DUP2
0000118a: DUP2
0000118b: LT
0000118c: ISZERO
0000118d: PUSH2 0x0be4
00001190: JUMPI
00001191: PUSH2 0x11dc
00001194: DUP4
00001195: DUP4
00001196: DUP4
00001197: DUP2
00001198: DUP2
00001199: LT
0000119a: PUSH2 0x11a5
0000119d: JUMPI
0000119e: PUSH2 0x11a5
000011a1: PUSH2 0x3326
000011a4: JUMP
000011a5: JUMPDEST
000011a6: PUSH2 0x11bb
000011a9: SWAP3
000011aa: PUSH1 0x20
000011ac: PUSH1 0x40
000011ae: SWAP1
000011af: SWAP3
000011b0: MUL
000011b1: ADD
000011b2: SWAP1
000011b3: DUP2
000011b4: ADD
000011b5: SWAP2
000011b6: POP
000011b7: PUSH2 0x2dd0
000011ba: JUMP
000011bb: JUMPDEST
000011bc: DUP5
000011bd: DUP5
000011be: DUP5
000011bf: DUP2
000011c0: DUP2
000011c1: LT
000011c2: PUSH2 0x11cd
000011c5: JUMPI
000011c6: PUSH2 0x11cd
000011c9: PUSH2 0x3326
000011cc: JUMP
000011cd: JUMPDEST
000011ce: SWAP1
000011cf: POP
000011d0: PUSH1 0x40
000011d2: MUL
000011d3: ADD
000011d4: PUSH1 0x20
000011d6: ADD
000011d7: CALLDATALOAD
000011d8: PUSH2 0x181b
000011db: JUMP
000011dc: JUMPDEST
000011dd: PUSH2 0x11e7
000011e0: PUSH1 0x01
000011e2: DUP3
000011e3: PUSH2 0x3384
000011e6: JUMP
000011e7: JUMPDEST
000011e8: SWAP1
000011e9: POP
000011ea: PUSH2 0x1188
000011ed: JUMP
000011ee: JUMPDEST
000011ef: PUSH2 0x11f6
000011f2: PUSH2 0x1613
000011f5: JUMP
000011f6: JUMPDEST
000011f7: PUSH2 0x0880
000011fa: DUP3
000011fb: DUP3
000011fc: PUSH2 0x1b1b
000011ff: JUMP
00001200: JUMPDEST
00001201: PUSH1 0x00
00001203: SLOAD
00001204: PUSH2 0x0100
00001207: SWAP1
00001208: DIV
00001209: PUSH1 0xff
0000120b: AND
0000120c: ISZERO
0000120d: DUP1
0000120e: DUP1
0000120f: ISZERO
00001210: PUSH2 0x1220
00001213: JUMPI
00001214: POP
00001215: PUSH1 0x00
00001217: SLOAD
00001218: PUSH1 0x01
0000121a: PUSH1 0xff
0000121c: SWAP1
0000121d: SWAP2
0000121e: AND
0000121f: LT
00001220: JUMPDEST
00001221: DUP1
00001222: PUSH2 0x123a
00001225: JUMPI
00001226: POP
00001227: ADDRESS
00001228: EXTCODESIZE
00001229: ISZERO
0000122a: DUP1
0000122b: ISZERO
0000122c: PUSH2 0x123a
0000122f: JUMPI
00001230: POP
00001231: PUSH1 0x00
00001233: SLOAD
00001234: PUSH1 0xff
00001236: AND
00001237: PUSH1 0x01
00001239: EQ
0000123a: JUMPDEST
0000123b: PUSH2 0x12c6
0000123e: JUMPI
0000123f: PUSH1 0x40
00001241: MLOAD
00001242: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001263: DUP2
00001264: MSTORE
00001265: PUSH1 0x20
00001267: PUSH1 0x04
00001269: DUP3
0000126a: ADD
0000126b: MSTORE
0000126c: PUSH1 0x2e
0000126e: PUSH1 0x24
00001270: DUP3
00001271: ADD
00001272: MSTORE
00001273: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00001294: PUSH1 0x44
00001296: DUP3
00001297: ADD
00001298: MSTORE
00001299: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
000012ba: PUSH1 0x64
000012bc: DUP3
000012bd: ADD
000012be: MSTORE
000012bf: PUSH1 0x84
000012c1: ADD
000012c2: PUSH2 0x0946
000012c5: JUMP
000012c6: JUMPDEST
000012c7: PUSH1 0x00
000012c9: DUP1
000012ca: SLOAD
000012cb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
000012ec: AND
000012ed: PUSH1 0x01
000012ef: OR
000012f0: SWAP1
000012f1: SSTORE
000012f2: DUP1
000012f3: ISZERO
000012f4: PUSH2 0x1324
000012f7: JUMPI
000012f8: PUSH1 0x00
000012fa: DUP1
000012fb: SLOAD
000012fc: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
0000131d: AND
0000131e: PUSH2 0x0100
00001321: OR
00001322: SWAP1
00001323: SSTORE
00001324: JUMPDEST
00001325: PUSH2 0x132f
00001328: DUP5
00001329: DUP5
0000132a: DUP5
0000132b: PUSH2 0x1b31
0000132e: JUMP
0000132f: JUMPDEST
00001330: DUP1
00001331: ISZERO
00001332: PUSH2 0x1066
00001335: JUMPI
00001336: PUSH1 0x00
00001338: DUP1
00001339: SLOAD
0000133a: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
0000135b: AND
0000135c: SWAP1
0000135d: SSTORE
0000135e: PUSH1 0x40
00001360: MLOAD
00001361: PUSH1 0x01
00001363: DUP2
00001364: MSTORE
00001365: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
00001386: SWAP1
00001387: PUSH1 0x20
00001389: ADD
0000138a: PUSH1 0x40
0000138c: MLOAD
0000138d: DUP1
0000138e: SWAP2
0000138f: SUB
00001390: SWAP1
00001391: LOG1
00001392: POP
00001393: POP
00001394: POP
00001395: POP
00001396: JUMP
00001397: JUMPDEST
00001398: PUSH2 0x139f
0000139b: PUSH2 0x1613
0000139e: JUMP
0000139f: JUMPDEST
000013a0: PUSH4 0xffffffff
000013a5: AND
000013a6: PUSH1 0x00
000013a8: SWAP1
000013a9: DUP2
000013aa: MSTORE
000013ab: PUSH1 0xcb
000013ad: PUSH1 0x20
000013af: MSTORE
000013b0: PUSH1 0x40
000013b2: DUP2
000013b3: KECCAK256
000013b4: SSTORE
000013b5: JUMP
000013b6: JUMPDEST
000013b7: PUSH1 0x60
000013b9: PUSH2 0x0ba3
000013bc: PUSH1 0xcd
000013be: PUSH2 0x16bd
000013c1: JUMP
000013c2: JUMPDEST
000013c3: PUSH2 0x13ca
000013c6: PUSH2 0x1613
000013c9: JUMP
000013ca: JUMPDEST
000013cb: DUP3
000013cc: DUP2
000013cd: EQ
000013ce: PUSH2 0x1433
000013d1: JUMPI
000013d2: PUSH1 0x40
000013d4: MLOAD
000013d5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000013f6: DUP2
000013f7: MSTORE
000013f8: PUSH1 0x20
000013fa: PUSH1 0x04
000013fc: DUP3
000013fd: ADD
000013fe: MSTORE
000013ff: PUSH1 0x07
00001401: PUSH1 0x24
00001403: DUP3
00001404: ADD
00001405: MSTORE
00001406: PUSH32 0x216c656e67746800000000000000000000000000000000000000000000000000
00001427: PUSH1 0x44
00001429: DUP3
0000142a: ADD
0000142b: MSTORE
0000142c: PUSH1 0x64
0000142e: ADD
0000142f: PUSH2 0x0946
00001432: JUMP
00001433: JUMPDEST
00001434: DUP3
00001435: PUSH1 0x00
00001437: JUMPDEST
00001438: DUP2
00001439: DUP2
0000143a: LT
0000143b: ISZERO
0000143c: PUSH2 0x1499
0000143f: JUMPI
00001440: PUSH2 0x1487
00001443: DUP7
00001444: DUP7
00001445: DUP4
00001446: DUP2
00001447: DUP2
00001448: LT
00001449: PUSH2 0x1454
0000144c: JUMPI
0000144d: PUSH2 0x1454
00001450: PUSH2 0x3326
00001453: JUMP
00001454: JUMPDEST
00001455: SWAP1
00001456: POP
00001457: PUSH1 0x20
00001459: MUL
0000145a: ADD
0000145b: PUSH1 0x20
0000145d: DUP2
0000145e: ADD
0000145f: SWAP1
00001460: PUSH2 0x1469
00001463: SWAP2
00001464: SWAP1
00001465: PUSH2 0x2dd0
00001468: JUMP
00001469: JUMPDEST
0000146a: DUP6
0000146b: DUP6
0000146c: DUP5
0000146d: DUP2
0000146e: DUP2
0000146f: LT
00001470: PUSH2 0x147b
00001473: JUMPI
00001474: PUSH2 0x147b
00001477: PUSH2 0x3326
0000147a: JUMP
0000147b: JUMPDEST
0000147c: SWAP1
0000147d: POP
0000147e: PUSH1 0x20
00001480: MUL
00001481: ADD
00001482: CALLDATALOAD
00001483: PUSH2 0x1b1b
00001486: JUMP
00001487: JUMPDEST
00001488: PUSH2 0x1492
0000148b: PUSH1 0x01
0000148d: DUP3
0000148e: PUSH2 0x3384
00001491: JUMP
00001492: JUMPDEST
00001493: SWAP1
00001494: POP
00001495: PUSH2 0x1437
00001498: JUMP
00001499: JUMPDEST
0000149a: POP
0000149b: POP
0000149c: POP
0000149d: POP
0000149e: POP
0000149f: POP
000014a0: JUMP
000014a1: JUMPDEST
000014a2: PUSH2 0x14a9
000014a5: PUSH2 0x1613
000014a8: JUMP
000014a9: JUMPDEST
000014aa: PUSH2 0x14b2
000014ad: DUP2
000014ae: PUSH2 0x1a65
000014b1: JUMP
000014b2: JUMPDEST
000014b3: POP
000014b4: JUMP
000014b5: JUMPDEST
000014b6: PUSH1 0x00
000014b8: PUSH2 0x09f3
000014bb: DUP3
000014bc: DUP3
000014bd: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000014de: PUSH2 0x1ad2
000014e1: JUMP
000014e2: JUMPDEST
000014e3: PUSH2 0x14ea
000014e6: PUSH2 0x1613
000014e9: JUMP
000014ea: JUMPDEST
000014eb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001500: DUP2
00001501: AND
00001502: PUSH2 0x158d
00001505: JUMPI
00001506: PUSH1 0x40
00001508: MLOAD
00001509: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000152a: DUP2
0000152b: MSTORE
0000152c: PUSH1 0x20
0000152e: PUSH1 0x04
00001530: DUP3
00001531: ADD
00001532: MSTORE
00001533: PUSH1 0x26
00001535: PUSH1 0x24
00001537: DUP3
00001538: ADD
00001539: MSTORE
0000153a: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
0000155b: PUSH1 0x44
0000155d: DUP3
0000155e: ADD
0000155f: MSTORE
00001560: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000
00001581: PUSH1 0x64
00001583: DUP3
00001584: ADD
00001585: MSTORE
00001586: PUSH1 0x84
00001588: ADD
00001589: PUSH2 0x0946
0000158c: JUMP
0000158d: JUMPDEST
0000158e: PUSH2 0x14b2
00001591: DUP2
00001592: PUSH2 0x19ee
00001595: JUMP
00001596: JUMPDEST
00001597: PUSH2 0x159e
0000159a: PUSH2 0x1613
0000159d: JUMP
0000159e: JUMPDEST
0000159f: PUSH2 0x0880
000015a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015b7: DUP4
000015b8: AND
000015b9: DUP3
000015ba: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000015db: PUSH2 0x1beb
000015de: JUMP
000015df: JUMPDEST
000015e0: PUSH2 0x15e7
000015e3: PUSH2 0x1613
000015e6: JUMP
000015e7: JUMPDEST
000015e8: PUSH2 0x15f0
000015eb: DUP3
000015ec: PUSH2 0x16ca
000015ef: JUMP
000015f0: JUMPDEST
000015f1: POP
000015f2: PUSH4 0xffffffff
000015f7: DUP1
000015f8: DUP4
000015f9: AND
000015fa: PUSH1 0x00
000015fc: SWAP1
000015fd: DUP2
000015fe: MSTORE
000015ff: PUSH1 0xcc
00001601: PUSH1 0x20
00001603: MSTORE
00001604: PUSH1 0x40
00001606: SWAP1
00001607: KECCAK256
00001608: PUSH2 0x0be4
0000160b: SWAP2
0000160c: DUP4
0000160d: SWAP1
0000160e: PUSH2 0x1694
00001611: AND
00001612: JUMP
00001613: JUMPDEST
00001614: PUSH1 0x33
00001616: SLOAD
00001617: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000162c: AND
0000162d: CALLER
0000162e: EQ
0000162f: PUSH2 0x100f
00001632: JUMPI
00001633: PUSH1 0x40
00001635: MLOAD
00001636: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001657: DUP2
00001658: MSTORE
00001659: PUSH1 0x20
0000165b: PUSH1 0x04
0000165d: DUP3
0000165e: ADD
0000165f: DUP2
00001660: SWAP1
00001661: MSTORE
00001662: PUSH1 0x24
00001664: DUP3
00001665: ADD
00001666: MSTORE
00001667: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00001688: PUSH1 0x44
0000168a: DUP3
0000168b: ADD
0000168c: MSTORE
0000168d: PUSH1 0x64
0000168f: ADD
00001690: PUSH2 0x0946
00001693: JUMP
00001694: JUMPDEST
00001695: PUSH1 0x00
00001697: PUSH2 0x16b6
0000169a: DUP4
0000169b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016b0: DUP5
000016b1: AND
000016b2: PUSH2 0x1deb
000016b5: JUMP
000016b6: JUMPDEST
000016b7: SWAP4
000016b8: SWAP3
000016b9: POP
000016ba: POP
000016bb: POP
000016bc: JUMP
000016bd: JUMPDEST
000016be: PUSH1 0x60
000016c0: PUSH1 0x00
000016c2: PUSH2 0x16b6
000016c5: DUP4
000016c6: PUSH2 0x1e3a
000016c9: JUMP
000016ca: JUMPDEST
000016cb: PUSH1 0x00
000016cd: DUP1
000016ce: DUP1
000016cf: PUSH2 0x16e2
000016d2: PUSH1 0x97
000016d4: PUSH4 0xffffffff
000016d9: DUP1
000016da: DUP8
000016db: AND
000016dc: SWAP1
000016dd: PUSH2 0x172f
000016e0: AND
000016e1: JUMP
000016e2: JUMPDEST
000016e3: SWAP2
000016e4: POP
000016e5: SWAP2
000016e6: POP
000016e7: DUP2
000016e8: ISZERO
000016e9: PUSH2 0x16f3
000016ec: JUMPI
000016ed: SWAP4
000016ee: SWAP3
000016ef: POP
000016f0: POP
000016f1: POP
000016f2: JUMP
000016f3: JUMPDEST
000016f4: PUSH2 0x16fc
000016f7: DUP5
000016f8: PUSH2 0x1e96
000016fb: JUMP
000016fc: JUMPDEST
000016fd: PUSH1 0x40
000016ff: MLOAD
00001700: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001721: DUP2
00001722: MSTORE
00001723: PUSH1 0x04
00001725: ADD
00001726: PUSH2 0x0946
00001729: SWAP2
0000172a: SWAP1
0000172b: PUSH2 0x31c7
0000172e: JUMP
0000172f: JUMPDEST
00001730: PUSH1 0x00
00001732: DUP1
00001733: PUSH2 0x173c
00001736: DUP5
00001737: DUP5
00001738: PUSH2 0x1ecd
0000173b: JUMP
0000173c: JUMPDEST
0000173d: SWAP2
0000173e: POP
0000173f: SWAP2
00001740: POP
00001741: JUMPDEST
00001742: SWAP3
00001743: POP
00001744: SWAP3
00001745: SWAP1
00001746: POP
00001747: JUMP
00001748: JUMPDEST
00001749: PUSH1 0x00
0000174b: PUSH2 0x16b6
0000174e: DUP4
0000174f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001764: DUP5
00001765: AND
00001766: PUSH2 0x1f07
00001769: JUMP
0000176a: JUMPDEST
0000176b: PUSH1 0x60
0000176d: PUSH1 0x00
0000176f: PUSH2 0x1777
00001772: DUP4
00001773: PUSH2 0x1ffa
00001776: JUMP
00001777: JUMPDEST
00001778: SWAP1
00001779: POP
0000177a: DUP1
0000177b: MLOAD
0000177c: PUSH8 0xffffffffffffffff
00001785: DUP2
00001786: GT
00001787: ISZERO
00001788: PUSH2 0x1793
0000178b: JUMPI
0000178c: PUSH2 0x1793
0000178f: PUSH2 0x3397
00001792: JUMP
00001793: JUMPDEST
00001794: PUSH1 0x40
00001796: MLOAD
00001797: SWAP1
00001798: DUP1
00001799: DUP3
0000179a: MSTORE
0000179b: DUP1
0000179c: PUSH1 0x20
0000179e: MUL
0000179f: PUSH1 0x20
000017a1: ADD
000017a2: DUP3
000017a3: ADD
000017a4: PUSH1 0x40
000017a6: MSTORE
000017a7: DUP1
000017a8: ISZERO
000017a9: PUSH2 0x17bc
000017ac: JUMPI
000017ad: DUP2
000017ae: PUSH1 0x20
000017b0: ADD
000017b1: PUSH1 0x20
000017b3: DUP3
000017b4: MUL
000017b5: DUP1
000017b6: CALLDATASIZE
000017b7: DUP4
000017b8: CALLDATACOPY
000017b9: ADD
000017ba: SWAP1
000017bb: POP
000017bc: JUMPDEST
000017bd: POP
000017be: SWAP2
000017bf: POP
000017c0: PUSH1 0x00
000017c2: JUMPDEST
000017c3: DUP2
000017c4: MLOAD
000017c5: DUP2
000017c6: LT
000017c7: ISZERO
000017c8: PUSH2 0x1814
000017cb: JUMPI
000017cc: DUP2
000017cd: DUP2
000017ce: DUP2
000017cf: MLOAD
000017d0: DUP2
000017d1: LT
000017d2: PUSH2 0x17dd
000017d5: JUMPI
000017d6: PUSH2 0x17dd
000017d9: PUSH2 0x3326
000017dc: JUMP
000017dd: JUMPDEST
000017de: PUSH1 0x20
000017e0: MUL
000017e1: PUSH1 0x20
000017e3: ADD
000017e4: ADD
000017e5: MLOAD
000017e6: DUP4
000017e7: DUP3
000017e8: DUP2
000017e9: MLOAD
000017ea: DUP2
000017eb: LT
000017ec: PUSH2 0x17f7
000017ef: JUMPI
000017f0: PUSH2 0x17f7
000017f3: PUSH2 0x3326
000017f6: JUMP
000017f7: JUMPDEST
000017f8: PUSH4 0xffffffff
000017fd: SWAP1
000017fe: SWAP3
000017ff: AND
00001800: PUSH1 0x20
00001802: SWAP3
00001803: DUP4
00001804: MUL
00001805: SWAP2
00001806: SWAP1
00001807: SWAP2
00001808: ADD
00001809: SWAP1
0000180a: SWAP2
0000180b: ADD
0000180c: MSTORE
0000180d: PUSH1 0x01
0000180f: ADD
00001810: PUSH2 0x17c2
00001813: JUMP
00001814: JUMPDEST
00001815: POP
00001816: POP
00001817: SWAP2
00001818: SWAP1
00001819: POP
0000181a: JUMP
0000181b: JUMPDEST
0000181c: PUSH4 0xffffffff
00001821: DUP3
00001822: AND
00001823: PUSH1 0x00
00001825: DUP2
00001826: DUP2
00001827: MSTORE
00001828: PUSH1 0xca
0000182a: PUSH1 0x20
0000182c: SWAP1
0000182d: DUP2
0000182e: MSTORE
0000182f: PUSH1 0x40
00001831: SWAP2
00001832: DUP3
00001833: SWAP1
00001834: KECCAK256
00001835: DUP5
00001836: SWAP1
00001837: SSTORE
00001838: DUP2
00001839: MLOAD
0000183a: SWAP3
0000183b: DUP4
0000183c: MSTORE
0000183d: DUP3
0000183e: ADD
0000183f: DUP4
00001840: SWAP1
00001841: MSTORE
00001842: PUSH32 0xc3de732a98b24a2b5c6f67e8a7fb057ffc14046b83968a2c73e4148d2fba978b
00001863: SWAP2
00001864: ADD
00001865: PUSH2 0x09c6
00001868: JUMP
00001869: JUMPDEST
0000186a: PUSH1 0x00
0000186c: DUP1
0000186d: PUSH2 0x1875
00001870: DUP7
00001871: PUSH2 0x208b
00001874: JUMP
00001875: JUMPDEST
00001876: SWAP1
00001877: POP
00001878: PUSH1 0x00
0000187a: PUSH2 0x1882
0000187d: DUP8
0000187e: PUSH2 0x20e3
00001881: JUMP
00001882: JUMPDEST
00001883: SWAP1
00001884: POP
00001885: PUSH1 0x00
00001887: PUSH2 0x1891
0000188a: DUP10
0000188b: DUP4
0000188c: DUP6
0000188d: PUSH2 0x210f
00001890: JUMP
00001891: JUMPDEST
00001892: SWAP1
00001893: POP
00001894: PUSH2 0x18a0
00001897: DUP11
00001898: DUP9
00001899: DUP4
0000189a: DUP10
0000189b: DUP10
0000189c: PUSH2 0x213e
0000189f: JUMP
000018a0: JUMPDEST
000018a1: SWAP4
000018a2: POP
000018a3: DUP9
000018a4: DUP11
000018a5: PUSH4 0xffffffff
000018aa: AND
000018ab: PUSH32 0xd229aacb94204188fe8042965fa6b269c62dc5818b21238779ab64bdd17efeec
000018cc: DUP5
000018cd: PUSH1 0x40
000018cf: MLOAD
000018d0: PUSH2 0x18db
000018d3: SWAP2
000018d4: DUP2
000018d5: MSTORE
000018d6: PUSH1 0x20
000018d8: ADD
000018d9: SWAP1
000018da: JUMP
000018db: JUMPDEST
000018dc: PUSH1 0x40
000018de: MLOAD
000018df: DUP1
000018e0: SWAP2
000018e1: SUB
000018e2: SWAP1
000018e3: LOG3
000018e4: POP
000018e5: POP
000018e6: POP
000018e7: SWAP7
000018e8: SWAP6
000018e9: POP
000018ea: POP
000018eb: POP
000018ec: POP
000018ed: POP
000018ee: POP
000018ef: JUMP
000018f0: JUMPDEST
000018f1: PUSH1 0x00
000018f3: PUSH2 0x18fc
000018f6: DUP4
000018f7: DUP4
000018f8: PUSH2 0x21f1
000018fb: JUMP
000018fc: JUMPDEST
000018fd: SWAP1
000018fe: POP
000018ff: PUSH1 0x00
00001901: PUSH2 0x190a
00001904: DUP5
00001905: DUP5
00001906: PUSH2 0x221a
00001909: JUMP
0000190a: JUMPDEST
0000190b: SWAP1
0000190c: POP
0000190d: CALLDATASIZE
0000190e: PUSH1 0x00
00001910: PUSH2 0x1919
00001913: DUP7
00001914: DUP7
00001915: PUSH2 0x222a
00001918: JUMP
00001919: JUMPDEST
0000191a: SWAP2
0000191b: POP
0000191c: SWAP2
0000191d: POP
0000191e: PUSH2 0x1939
00001921: PUSH2 0x1929
00001924: DUP6
00001925: PUSH2 0x223a
00001928: JUMP
00001929: JUMPDEST
0000192a: PUSH2 0x1932
0000192d: DUP6
0000192e: PUSH2 0x22e3
00001931: JUMP
00001932: JUMPDEST
00001933: DUP5
00001934: DUP5
00001935: PUSH2 0x230f
00001938: JUMP
00001939: JUMPDEST
0000193a: DUP4
0000193b: DUP9
0000193c: PUSH4 0xffffffff
00001941: AND
00001942: PUSH32 0xba20947a325f450d232530e5f5fce293e7963499d5309a07cee84a269f2f15a6
00001963: DUP6
00001964: PUSH1 0x40
00001966: MLOAD
00001967: PUSH2 0x0f36
0000196a: SWAP2
0000196b: DUP2
0000196c: MSTORE
0000196d: PUSH1 0x20
0000196f: ADD
00001970: SWAP1
00001971: JUMP
00001972: JUMPDEST
00001973: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001988: DUP2
00001989: AND
0000198a: PUSH1 0x00
0000198c: SWAP1
0000198d: DUP2
0000198e: MSTORE
0000198f: PUSH1 0x01
00001991: DUP4
00001992: ADD
00001993: PUSH1 0x20
00001995: MSTORE
00001996: PUSH1 0x40
00001998: DUP2
00001999: KECCAK256
0000199a: SLOAD
0000199b: ISZERO
0000199c: ISZERO
0000199d: PUSH2 0x16b6
000019a0: JUMP
000019a1: JUMPDEST
000019a2: PUSH2 0x19e2
000019a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019ba: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
000019db: AND
000019dc: DUP3
000019dd: DUP5
000019de: PUSH2 0x1beb
000019e1: JUMP
000019e2: JUMPDEST
000019e3: PUSH2 0x1066
000019e6: DUP5
000019e7: DUP5
000019e8: DUP5
000019e9: DUP5
000019ea: PUSH2 0x2350
000019ed: JUMP
000019ee: JUMPDEST
000019ef: PUSH1 0x33
000019f1: DUP1
000019f2: SLOAD
000019f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a08: DUP4
00001a09: DUP2
00001a0a: AND
00001a0b: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001a2c: DUP4
00001a2d: AND
00001a2e: DUP2
00001a2f: OR
00001a30: SWAP1
00001a31: SWAP4
00001a32: SSTORE
00001a33: PUSH1 0x40
00001a35: MLOAD
00001a36: SWAP2
00001a37: AND
00001a38: SWAP2
00001a39: SWAP1
00001a3a: DUP3
00001a3b: SWAP1
00001a3c: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00001a5d: SWAP1
00001a5e: PUSH1 0x00
00001a60: SWAP1
00001a61: LOG3
00001a62: POP
00001a63: POP
00001a64: JUMP
00001a65: JUMPDEST
00001a66: PUSH4 0xffffffff
00001a6b: DUP2
00001a6c: AND
00001a6d: PUSH1 0x00
00001a6f: SWAP1
00001a70: DUP2
00001a71: MSTORE
00001a72: PUSH1 0xcb
00001a74: PUSH1 0x20
00001a76: SWAP1
00001a77: DUP2
00001a78: MSTORE
00001a79: PUSH1 0x40
00001a7b: DUP1
00001a7c: DUP4
00001a7d: KECCAK256
00001a7e: DUP4
00001a7f: SWAP1
00001a80: SSTORE
00001a81: PUSH1 0xcc
00001a83: SWAP1
00001a84: SWAP2
00001a85: MSTORE
00001a86: SWAP1
00001a87: KECCAK256
00001a88: PUSH2 0x1a90
00001a8b: SWAP1
00001a8c: PUSH2 0x23f6
00001a8f: JUMP
00001a90: JUMPDEST
00001a91: PUSH2 0x14b2
00001a94: DUP2
00001a95: PUSH2 0x244e
00001a98: JUMP
00001a99: JUMPDEST
00001a9a: PUSH1 0x00
00001a9c: PUSH2 0x1ac9
00001a9f: DUP6
00001aa0: DUP6
00001aa1: DUP6
00001aa2: DUP6
00001aa3: PUSH2 0x1aab
00001aa6: DUP11
00001aa7: PUSH2 0x24a3
00001aaa: JUMP
00001aab: JUMPDEST
00001aac: PUSH1 0x65
00001aae: SLOAD
00001aaf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ac4: AND
00001ac5: PUSH2 0x1869
00001ac8: JUMP
00001ac9: JUMPDEST
00001aca: SWAP6
00001acb: SWAP5
00001acc: POP
00001acd: POP
00001ace: POP
00001acf: POP
00001ad0: POP
00001ad1: JUMP
00001ad2: JUMPDEST
00001ad3: PUSH1 0x40
00001ad5: DUP1
00001ad6: MLOAD
00001ad7: PUSH1 0x20
00001ad9: DUP2
00001ada: ADD
00001adb: DUP5
00001adc: SWAP1
00001add: MSTORE
00001ade: DUP1
00001adf: DUP3
00001ae0: ADD
00001ae1: DUP4
00001ae2: SWAP1
00001ae3: MSTORE
00001ae4: DUP2
00001ae5: MLOAD
00001ae6: DUP1
00001ae7: DUP3
00001ae8: SUB
00001ae9: DUP4
00001aea: ADD
00001aeb: DUP2
00001aec: MSTORE
00001aed: PUSH1 0x60
00001aef: SWAP1
00001af0: SWAP2
00001af1: ADD
00001af2: SWAP1
00001af3: SWAP2
00001af4: MSTORE
00001af5: PUSH1 0x00
00001af7: SWAP1
00001af8: PUSH2 0x0a3b
00001afb: SWAP1
00001afc: DUP6
00001afd: SWAP1
00001afe: PUSH1 0x65
00001b00: SLOAD
00001b01: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b16: AND
00001b17: PUSH2 0x24c5
00001b1a: JUMP
00001b1b: JUMPDEST
00001b1c: PUSH2 0x0880
00001b1f: PUSH1 0x97
00001b21: PUSH4 0xffffffff
00001b26: DUP1
00001b27: DUP6
00001b28: AND
00001b29: SWAP1
00001b2a: DUP5
00001b2b: SWAP1
00001b2c: PUSH2 0x24db
00001b2f: AND
00001b30: JUMP
00001b31: JUMPDEST
00001b32: PUSH1 0x00
00001b34: SLOAD
00001b35: PUSH2 0x0100
00001b38: SWAP1
00001b39: DIV
00001b3a: PUSH1 0xff
00001b3c: AND
00001b3d: PUSH2 0x1bc8
00001b40: JUMPI
00001b41: PUSH1 0x40
00001b43: MLOAD
00001b44: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001b65: DUP2
00001b66: MSTORE
00001b67: PUSH1 0x20
00001b69: PUSH1 0x04
00001b6b: DUP3
00001b6c: ADD
00001b6d: MSTORE
00001b6e: PUSH1 0x2b
00001b70: PUSH1 0x24
00001b72: DUP3
00001b73: ADD
00001b74: MSTORE
00001b75: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00001b96: PUSH1 0x44
00001b98: DUP3
00001b99: ADD
00001b9a: MSTORE
00001b9b: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00001bbc: PUSH1 0x64
00001bbe: DUP3
00001bbf: ADD
00001bc0: MSTORE
00001bc1: PUSH1 0x84
00001bc3: ADD
00001bc4: PUSH2 0x0946
00001bc7: JUMP
00001bc8: JUMPDEST
00001bc9: PUSH2 0x1bd0
00001bcc: PUSH2 0x24e6
00001bcf: JUMP
00001bd0: JUMPDEST
00001bd1: PUSH2 0x1bd9
00001bd4: DUP4
00001bd5: PUSH2 0x0a43
00001bd8: JUMP
00001bd9: JUMPDEST
00001bda: PUSH2 0x1be2
00001bdd: DUP3
00001bde: PUSH2 0x0884
00001be1: JUMP
00001be2: JUMPDEST
00001be3: PUSH2 0x0be4
00001be6: DUP2
00001be7: PUSH2 0x19ee
00001bea: JUMP
00001beb: JUMPDEST
00001bec: DUP1
00001bed: ISZERO
00001bee: DUP1
00001bef: PUSH2 0x1c8b
00001bf2: JUMPI
00001bf3: POP
00001bf4: PUSH1 0x40
00001bf6: MLOAD
00001bf7: PUSH32 0xdd62ed3e00000000000000000000000000000000000000000000000000000000
00001c18: DUP2
00001c19: MSTORE
00001c1a: ADDRESS
00001c1b: PUSH1 0x04
00001c1d: DUP3
00001c1e: ADD
00001c1f: MSTORE
00001c20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c35: DUP4
00001c36: DUP2
00001c37: AND
00001c38: PUSH1 0x24
00001c3a: DUP4
00001c3b: ADD
00001c3c: MSTORE
00001c3d: DUP5
00001c3e: AND
00001c3f: SWAP1
00001c40: PUSH4 0xdd62ed3e
00001c45: SWAP1
00001c46: PUSH1 0x44
00001c48: ADD
00001c49: PUSH1 0x20
00001c4b: PUSH1 0x40
00001c4d: MLOAD
00001c4e: DUP1
00001c4f: DUP4
00001c50: SUB
00001c51: DUP2
00001c52: DUP7
00001c53: GAS
00001c54: STATICCALL
00001c55: ISZERO
00001c56: DUP1
00001c57: ISZERO
00001c58: PUSH2 0x1c65
00001c5b: JUMPI
00001c5c: RETURNDATASIZE
00001c5d: PUSH1 0x00
00001c5f: DUP1
00001c60: RETURNDATACOPY
00001c61: RETURNDATASIZE
00001c62: PUSH1 0x00
00001c64: REVERT
00001c65: JUMPDEST
00001c66: POP
00001c67: POP
00001c68: POP
00001c69: POP
00001c6a: PUSH1 0x40
00001c6c: MLOAD
00001c6d: RETURNDATASIZE
00001c6e: PUSH1 0x1f
00001c70: NOT
00001c71: PUSH1 0x1f
00001c73: DUP3
00001c74: ADD
00001c75: AND
00001c76: DUP3
00001c77: ADD
00001c78: DUP1
00001c79: PUSH1 0x40
00001c7b: MSTORE
00001c7c: POP
00001c7d: DUP2
00001c7e: ADD
00001c7f: SWAP1
00001c80: PUSH2 0x1c89
00001c83: SWAP2
00001c84: SWAP1
00001c85: PUSH2 0x330d
00001c88: JUMP
00001c89: JUMPDEST
00001c8a: ISZERO
00001c8b: JUMPDEST
00001c8c: PUSH2 0x1d17
00001c8f: JUMPI
00001c90: PUSH1 0x40
00001c92: MLOAD
00001c93: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001cb4: DUP2
00001cb5: MSTORE
00001cb6: PUSH1 0x20
00001cb8: PUSH1 0x04
00001cba: DUP3
00001cbb: ADD
00001cbc: MSTORE
00001cbd: PUSH1 0x36
00001cbf: PUSH1 0x24
00001cc1: DUP3
00001cc2: ADD
00001cc3: MSTORE
00001cc4: PUSH32 0x5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f
00001ce5: PUSH1 0x44
00001ce7: DUP3
00001ce8: ADD
00001ce9: MSTORE
00001cea: PUSH32 0x20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000
00001d0b: PUSH1 0x64
00001d0d: DUP3
00001d0e: ADD
00001d0f: MSTORE
00001d10: PUSH1 0x84
00001d12: ADD
00001d13: PUSH2 0x0946
00001d16: JUMP
00001d17: JUMPDEST
00001d18: PUSH1 0x40
00001d1a: MLOAD
00001d1b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d30: DUP4
00001d31: AND
00001d32: PUSH1 0x24
00001d34: DUP3
00001d35: ADD
00001d36: MSTORE
00001d37: PUSH1 0x44
00001d39: DUP2
00001d3a: ADD
00001d3b: DUP3
00001d3c: SWAP1
00001d3d: MSTORE
00001d3e: PUSH2 0x0be4
00001d41: SWAP1
00001d42: DUP5
00001d43: SWAP1
00001d44: PUSH32 0x095ea7b300000000000000000000000000000000000000000000000000000000
00001d65: SWAP1
00001d66: PUSH1 0x64
00001d68: ADD
00001d69: JUMPDEST
00001d6a: PUSH1 0x40
00001d6c: DUP1
00001d6d: MLOAD
00001d6e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001d8f: DUP2
00001d90: DUP5
00001d91: SUB
00001d92: ADD
00001d93: DUP2
00001d94: MSTORE
00001d95: SWAP2
00001d96: SWAP1
00001d97: MSTORE
00001d98: PUSH1 0x20
00001d9a: DUP2
00001d9b: ADD
00001d9c: DUP1
00001d9d: MLOAD
00001d9e: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001dbb: AND
00001dbc: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00001ddd: SWAP1
00001dde: SWAP4
00001ddf: AND
00001de0: SWAP3
00001de1: SWAP1
00001de2: SWAP3
00001de3: OR
00001de4: SWAP1
00001de5: SWAP2
00001de6: MSTORE
00001de7: PUSH2 0x2585
00001dea: JUMP
00001deb: JUMPDEST
00001dec: PUSH1 0x00
00001dee: DUP2
00001def: DUP2
00001df0: MSTORE
00001df1: PUSH1 0x01
00001df3: DUP4
00001df4: ADD
00001df5: PUSH1 0x20
00001df7: MSTORE
00001df8: PUSH1 0x40
00001dfa: DUP2
00001dfb: KECCAK256
00001dfc: SLOAD
00001dfd: PUSH2 0x1e32
00001e00: JUMPI
00001e01: POP
00001e02: DUP2
00001e03: SLOAD
00001e04: PUSH1 0x01
00001e06: DUP2
00001e07: DUP2
00001e08: ADD
00001e09: DUP5
00001e0a: SSTORE
00001e0b: PUSH1 0x00
00001e0d: DUP5
00001e0e: DUP2
00001e0f: MSTORE
00001e10: PUSH1 0x20
00001e12: DUP1
00001e13: DUP3
00001e14: KECCAK256
00001e15: SWAP1
00001e16: SWAP4
00001e17: ADD
00001e18: DUP5
00001e19: SWAP1
00001e1a: SSTORE
00001e1b: DUP5
00001e1c: SLOAD
00001e1d: DUP5
00001e1e: DUP3
00001e1f: MSTORE
00001e20: DUP3
00001e21: DUP7
00001e22: ADD
00001e23: SWAP1
00001e24: SWAP4
00001e25: MSTORE
00001e26: PUSH1 0x40
00001e28: SWAP1
00001e29: KECCAK256
00001e2a: SWAP2
00001e2b: SWAP1
00001e2c: SWAP2
00001e2d: SSTORE
00001e2e: PUSH2 0x09f3
00001e31: JUMP
00001e32: JUMPDEST
00001e33: POP
00001e34: PUSH1 0x00
00001e36: PUSH2 0x09f3
00001e39: JUMP
00001e3a: JUMPDEST
00001e3b: PUSH1 0x60
00001e3d: DUP2
00001e3e: PUSH1 0x00
00001e40: ADD
00001e41: DUP1
00001e42: SLOAD
00001e43: DUP1
00001e44: PUSH1 0x20
00001e46: MUL
00001e47: PUSH1 0x20
00001e49: ADD
00001e4a: PUSH1 0x40
00001e4c: MLOAD
00001e4d: SWAP1
00001e4e: DUP2
00001e4f: ADD
00001e50: PUSH1 0x40
00001e52: MSTORE
00001e53: DUP1
00001e54: SWAP3
00001e55: SWAP2
00001e56: SWAP1
00001e57: DUP2
00001e58: DUP2
00001e59: MSTORE
00001e5a: PUSH1 0x20
00001e5c: ADD
00001e5d: DUP3
00001e5e: DUP1
00001e5f: SLOAD
00001e60: DUP1
00001e61: ISZERO
00001e62: PUSH2 0x1e8a
00001e65: JUMPI
00001e66: PUSH1 0x20
00001e68: MUL
00001e69: DUP3
00001e6a: ADD
00001e6b: SWAP2
00001e6c: SWAP1
00001e6d: PUSH1 0x00
00001e6f: MSTORE
00001e70: PUSH1 0x20
00001e72: PUSH1 0x00
00001e74: KECCAK256
00001e75: SWAP1
00001e76: JUMPDEST
00001e77: DUP2
00001e78: SLOAD
00001e79: DUP2
00001e7a: MSTORE
00001e7b: PUSH1 0x20
00001e7d: ADD
00001e7e: SWAP1
00001e7f: PUSH1 0x01
00001e81: ADD
00001e82: SWAP1
00001e83: DUP1
00001e84: DUP4
00001e85: GT
00001e86: PUSH2 0x1e76
00001e89: JUMPI
00001e8a: JUMPDEST
00001e8b: POP
00001e8c: POP
00001e8d: POP
00001e8e: POP
00001e8f: POP
00001e90: SWAP1
00001e91: POP
00001e92: SWAP2
00001e93: SWAP1
00001e94: POP
00001e95: JUMP
00001e96: JUMPDEST
00001e97: PUSH1 0x60
00001e99: PUSH2 0x1ea7
00001e9c: DUP3
00001e9d: PUSH4 0xffffffff
00001ea2: AND
00001ea3: PUSH2 0x2694
00001ea6: JUMP
00001ea7: JUMPDEST
00001ea8: PUSH1 0x40
00001eaa: MLOAD
00001eab: PUSH1 0x20
00001ead: ADD
00001eae: PUSH2 0x1eb7
00001eb1: SWAP2
00001eb2: SWAP1
00001eb3: PUSH2 0x33c6
00001eb6: JUMP
00001eb7: JUMPDEST
00001eb8: PUSH1 0x40
00001eba: MLOAD
00001ebb: PUSH1 0x20
00001ebd: DUP2
00001ebe: DUP4
00001ebf: SUB
00001ec0: SUB
00001ec1: DUP2
00001ec2: MSTORE
00001ec3: SWAP1
00001ec4: PUSH1 0x40
00001ec6: MSTORE
00001ec7: SWAP1
00001ec8: POP
00001ec9: SWAP2
00001eca: SWAP1
00001ecb: POP
00001ecc: JUMP
00001ecd: JUMPDEST
00001ece: PUSH1 0x00
00001ed0: DUP2
00001ed1: DUP2
00001ed2: MSTORE
00001ed3: PUSH1 0x02
00001ed5: DUP4
00001ed6: ADD
00001ed7: PUSH1 0x20
00001ed9: MSTORE
00001eda: PUSH1 0x40
00001edc: DUP2
00001edd: KECCAK256
00001ede: SLOAD
00001edf: DUP2
00001ee0: SWAP1
00001ee1: DUP1
00001ee2: PUSH2 0x1efc
00001ee5: JUMPI
00001ee6: PUSH2 0x1eef
00001ee9: DUP6
00001eea: DUP6
00001eeb: PUSH2 0x2752
00001eee: JUMP
00001eef: JUMPDEST
00001ef0: SWAP3
00001ef1: POP
00001ef2: PUSH1 0x00
00001ef4: SWAP2
00001ef5: POP
00001ef6: PUSH2 0x1741
00001ef9: SWAP1
00001efa: POP
00001efb: JUMP
00001efc: JUMPDEST
00001efd: PUSH1 0x01
00001eff: SWAP3
00001f00: POP
00001f01: SWAP1
00001f02: POP
00001f03: PUSH2 0x1741
00001f06: JUMP
00001f07: JUMPDEST
00001f08: PUSH1 0x00
00001f0a: DUP2
00001f0b: DUP2
00001f0c: MSTORE
00001f0d: PUSH1 0x01
00001f0f: DUP4
00001f10: ADD
00001f11: PUSH1 0x20
00001f13: MSTORE
00001f14: PUSH1 0x40
00001f16: DUP2
00001f17: KECCAK256
00001f18: SLOAD
00001f19: DUP1
00001f1a: ISZERO
00001f1b: PUSH2 0x1ff0
00001f1e: JUMPI
00001f1f: PUSH1 0x00
00001f21: PUSH2 0x1f2b
00001f24: PUSH1 0x01
00001f26: DUP4
00001f27: PUSH2 0x340b
00001f2a: JUMP
00001f2b: JUMPDEST
00001f2c: DUP6
00001f2d: SLOAD
00001f2e: SWAP1
00001f2f: SWAP2
00001f30: POP
00001f31: PUSH1 0x00
00001f33: SWAP1
00001f34: PUSH2 0x1f3f
00001f37: SWAP1
00001f38: PUSH1 0x01
00001f3a: SWAP1
00001f3b: PUSH2 0x340b
00001f3e: JUMP
00001f3f: JUMPDEST
00001f40: SWAP1
00001f41: POP
00001f42: DUP2
00001f43: DUP2
00001f44: EQ
00001f45: PUSH2 0x1fa4
00001f48: JUMPI
00001f49: PUSH1 0x00
00001f4b: DUP7
00001f4c: PUSH1 0x00
00001f4e: ADD
00001f4f: DUP3
00001f50: DUP2
00001f51: SLOAD
00001f52: DUP2
00001f53: LT
00001f54: PUSH2 0x1f5f
00001f57: JUMPI
00001f58: PUSH2 0x1f5f
00001f5b: PUSH2 0x3326
00001f5e: JUMP
00001f5f: JUMPDEST
00001f60: SWAP1
00001f61: PUSH1 0x00
00001f63: MSTORE
00001f64: PUSH1 0x20
00001f66: PUSH1 0x00
00001f68: KECCAK256
00001f69: ADD
00001f6a: SLOAD
00001f6b: SWAP1
00001f6c: POP
00001f6d: DUP1
00001f6e: DUP8
00001f6f: PUSH1 0x00
00001f71: ADD
00001f72: DUP5
00001f73: DUP2
00001f74: SLOAD
00001f75: DUP2
00001f76: LT
00001f77: PUSH2 0x1f82
00001f7a: JUMPI
00001f7b: PUSH2 0x1f82
00001f7e: PUSH2 0x3326
00001f81: JUMP
00001f82: JUMPDEST
00001f83: PUSH1 0x00
00001f85: SWAP2
00001f86: DUP3
00001f87: MSTORE
00001f88: PUSH1 0x20
00001f8a: DUP1
00001f8b: DUP4
00001f8c: KECCAK256
00001f8d: SWAP1
00001f8e: SWAP2
00001f8f: ADD
00001f90: SWAP3
00001f91: SWAP1
00001f92: SWAP3
00001f93: SSTORE
00001f94: SWAP2
00001f95: DUP3
00001f96: MSTORE
00001f97: PUSH1 0x01
00001f99: DUP9
00001f9a: ADD
00001f9b: SWAP1
00001f9c: MSTORE
00001f9d: PUSH1 0x40
00001f9f: SWAP1
00001fa0: KECCAK256
00001fa1: DUP4
00001fa2: SWAP1
00001fa3: SSTORE
00001fa4: JUMPDEST
00001fa5: DUP6
00001fa6: SLOAD
00001fa7: DUP7
00001fa8: SWAP1
00001fa9: DUP1
00001faa: PUSH2 0x1fb5
00001fad: JUMPI
00001fae: PUSH2 0x1fb5
00001fb1: PUSH2 0x341e
00001fb4: JUMP
00001fb5: JUMPDEST
00001fb6: PUSH1 0x01
00001fb8: SWAP1
00001fb9: SUB
00001fba: DUP2
00001fbb: DUP2
00001fbc: SWAP1
00001fbd: PUSH1 0x00
00001fbf: MSTORE
00001fc0: PUSH1 0x20
00001fc2: PUSH1 0x00
00001fc4: KECCAK256
00001fc5: ADD
00001fc6: PUSH1 0x00
00001fc8: SWAP1
00001fc9: SSTORE
00001fca: SWAP1
00001fcb: SSTORE
00001fcc: DUP6
00001fcd: PUSH1 0x01
00001fcf: ADD
00001fd0: PUSH1 0x00
00001fd2: DUP7
00001fd3: DUP2
00001fd4: MSTORE
00001fd5: PUSH1 0x20
00001fd7: ADD
00001fd8: SWAP1
00001fd9: DUP2
00001fda: MSTORE
00001fdb: PUSH1 0x20
00001fdd: ADD
00001fde: PUSH1 0x00
00001fe0: KECCAK256
00001fe1: PUSH1 0x00
00001fe3: SWAP1
00001fe4: SSTORE
00001fe5: PUSH1 0x01
00001fe7: SWAP4
00001fe8: POP
00001fe9: POP
00001fea: POP
00001feb: POP
00001fec: PUSH2 0x09f3
00001fef: JUMP
00001ff0: JUMPDEST
00001ff1: PUSH1 0x00
00001ff3: SWAP2
00001ff4: POP
00001ff5: POP
00001ff6: PUSH2 0x09f3
00001ff9: JUMP
00001ffa: JUMPDEST
00001ffb: PUSH1 0x60
00001ffd: PUSH1 0x00
00001fff: PUSH2 0x2007
00002002: DUP4
00002003: PUSH2 0x275e
00002006: JUMP
00002007: JUMPDEST
00002008: SWAP1
00002009: POP
0000200a: DUP1
0000200b: PUSH8 0xffffffffffffffff
00002014: DUP2
00002015: GT
00002016: ISZERO
00002017: PUSH2 0x2022
0000201a: JUMPI
0000201b: PUSH2 0x2022
0000201e: PUSH2 0x3397
00002021: JUMP
00002022: JUMPDEST
00002023: PUSH1 0x40
00002025: MLOAD
00002026: SWAP1
00002027: DUP1
00002028: DUP3
00002029: MSTORE
0000202a: DUP1
0000202b: PUSH1 0x20
0000202d: MUL
0000202e: PUSH1 0x20
00002030: ADD
00002031: DUP3
00002032: ADD
00002033: PUSH1 0x40
00002035: MSTORE
00002036: DUP1
00002037: ISZERO
00002038: PUSH2 0x204b
0000203b: JUMPI
0000203c: DUP2
0000203d: PUSH1 0x20
0000203f: ADD
00002040: PUSH1 0x20
00002042: DUP3
00002043: MUL
00002044: DUP1
00002045: CALLDATASIZE
00002046: DUP4
00002047: CALLDATACOPY
00002048: ADD
00002049: SWAP1
0000204a: POP
0000204b: JUMPDEST
0000204c: POP
0000204d: SWAP2
0000204e: POP
0000204f: PUSH1 0x00
00002051: JUMPDEST
00002052: DUP2
00002053: DUP2
00002054: LT
00002055: ISZERO
00002056: PUSH2 0x1814
00002059: JUMPI
0000205a: PUSH2 0x2063
0000205d: DUP5
0000205e: DUP3
0000205f: PUSH2 0x2769
00002062: JUMP
00002063: JUMPDEST
00002064: PUSH1 0x00
00002066: SHR
00002067: DUP4
00002068: DUP3
00002069: DUP2
0000206a: MLOAD
0000206b: DUP2
0000206c: LT
0000206d: PUSH2 0x2078
00002070: JUMPI
00002071: PUSH2 0x2078
00002074: PUSH2 0x3326
00002077: JUMP
00002078: JUMPDEST
00002079: PUSH1 0x20
0000207b: SWAP1
0000207c: DUP2
0000207d: MUL
0000207e: SWAP2
0000207f: SWAP1
00002080: SWAP2
00002081: ADD
00002082: ADD
00002083: MSTORE
00002084: PUSH1 0x01
00002086: ADD
00002087: PUSH2 0x2051
0000208a: JUMP
0000208b: JUMPDEST
0000208c: PUSH1 0x60
0000208e: PUSH2 0x20cf
00002091: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020a6: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
000020c7: AND
000020c8: CALLER
000020c9: ADDRESS
000020ca: DUP6
000020cb: PUSH2 0x2775
000020ce: JUMP
000020cf: JUMPDEST
000020d0: POP
000020d1: POP
000020d2: PUSH1 0x40
000020d4: DUP1
000020d5: MLOAD
000020d6: PUSH1 0x20
000020d8: DUP2
000020d9: ADD
000020da: SWAP1
000020db: SWAP2
000020dc: MSTORE
000020dd: PUSH1 0x00
000020df: DUP2
000020e0: MSTORE
000020e1: SWAP1
000020e2: JUMP
000020e3: JUMPDEST
000020e4: PUSH1 0x00
000020e6: PUSH2 0x09f3
000020e9: PUSH32 0x000000000000000000000000000000000000000000000000000000e8d4a51000
0000210a: DUP4
0000210b: PUSH2 0x344d
0000210e: JUMP
0000210f: JUMPDEST
00002110: PUSH1 0x60
00002112: DUP4
00002113: DUP4
00002114: DUP4
00002115: PUSH1 0x40
00002117: MLOAD
00002118: PUSH1 0x20
0000211a: ADD
0000211b: PUSH2 0x2126
0000211e: SWAP4
0000211f: SWAP3
00002120: SWAP2
00002121: SWAP1
00002122: PUSH2 0x3464
00002125: JUMP
00002126: JUMPDEST
00002127: PUSH1 0x40
00002129: MLOAD
0000212a: PUSH1 0x20
0000212c: DUP2
0000212d: DUP4
0000212e: SUB
0000212f: SUB
00002130: DUP2
00002131: MSTORE
00002132: SWAP1
00002133: PUSH1 0x40
00002135: MSTORE
00002136: SWAP1
00002137: POP
00002138: SWAP4
00002139: SWAP3
0000213a: POP
0000213b: POP
0000213c: POP
0000213d: JUMP
0000213e: JUMPDEST
0000213f: PUSH1 0x00
00002141: DUP1
00002142: PUSH2 0x214a
00002145: DUP8
00002146: PUSH2 0x16ca
00002149: JUMP
0000214a: JUMPDEST
0000214b: SWAP1
0000214c: POP
0000214d: PUSH32 0x0000000000000000000000006c6828673152ec307482e72b4a9ad9d84c1d761c
0000216e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002183: AND
00002184: PUSH4 0x10b83dc0
00002189: DUP8
0000218a: DUP10
0000218b: DUP5
0000218c: DUP10
0000218d: DUP10
0000218e: DUP10
0000218f: PUSH1 0x40
00002191: MLOAD
00002192: DUP8
00002193: PUSH4 0xffffffff
00002198: AND
00002199: PUSH1 0xe0
0000219b: SHL
0000219c: DUP2
0000219d: MSTORE
0000219e: PUSH1 0x04
000021a0: ADD
000021a1: PUSH2 0x21ae
000021a4: SWAP6
000021a5: SWAP5
000021a6: SWAP4
000021a7: SWAP3
000021a8: SWAP2
000021a9: SWAP1
000021aa: PUSH2 0x3491
000021ad: JUMP
000021ae: JUMPDEST
000021af: PUSH1 0x20
000021b1: PUSH1 0x40
000021b3: MLOAD
000021b4: DUP1
000021b5: DUP4
000021b6: SUB
000021b7: DUP2
000021b8: DUP6
000021b9: DUP9
000021ba: GAS
000021bb: CALL
000021bc: ISZERO
000021bd: DUP1
000021be: ISZERO
000021bf: PUSH2 0x21cc
000021c2: JUMPI
000021c3: RETURNDATASIZE
000021c4: PUSH1 0x00
000021c6: DUP1
000021c7: RETURNDATACOPY
000021c8: RETURNDATASIZE
000021c9: PUSH1 0x00
000021cb: REVERT
000021cc: JUMPDEST
000021cd: POP
000021ce: POP
000021cf: POP
000021d0: POP
000021d1: POP
000021d2: PUSH1 0x40
000021d4: MLOAD
000021d5: RETURNDATASIZE
000021d6: PUSH1 0x1f
000021d8: NOT
000021d9: PUSH1 0x1f
000021db: DUP3
000021dc: ADD
000021dd: AND
000021de: DUP3
000021df: ADD
000021e0: DUP1
000021e1: PUSH1 0x40
000021e3: MSTORE
000021e4: POP
000021e5: DUP2
000021e6: ADD
000021e7: SWAP1
000021e8: PUSH2 0x0c30
000021eb: SWAP2
000021ec: SWAP1
000021ed: PUSH2 0x330d
000021f0: JUMP
000021f1: JUMPDEST
000021f2: PUSH1 0x00
000021f4: DUP3
000021f5: DUP2
000021f6: DUP4
000021f7: PUSH2 0x2201
000021fa: DUP3
000021fb: PUSH1 0x20
000021fd: PUSH2 0x34f1
00002200: JUMP
00002201: JUMPDEST
00002202: PUSH1 0xff
00002204: AND
00002205: SWAP3
00002206: PUSH2 0x2211
00002209: SWAP4
0000220a: SWAP3
0000220b: SWAP2
0000220c: SWAP1
0000220d: PUSH2 0x350a
00002210: JUMP
00002211: JUMPDEST
00002212: PUSH2 0x16b6
00002215: SWAP2
00002216: PUSH2 0x3534
00002219: JUMP
0000221a: JUMPDEST
0000221b: PUSH1 0x00
0000221d: DUP3
0000221e: PUSH1 0x20
00002220: DUP4
00002221: PUSH2 0x2201
00002224: DUP3
00002225: DUP1
00002226: PUSH2 0x34f1
00002229: JUMP
0000222a: JUMPDEST
0000222b: CALLDATASIZE
0000222c: PUSH1 0x00
0000222e: PUSH2 0x173c
00002231: DUP4
00002232: PUSH1 0x40
00002234: DUP2
00002235: DUP8
00002236: PUSH2 0x350a
00002239: JUMP
0000223a: JUMPDEST
0000223b: PUSH1 0x00
0000223d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002252: DUP3
00002253: GT
00002254: ISZERO
00002255: PUSH2 0x22df
00002258: JUMPI
00002259: PUSH1 0x40
0000225b: MLOAD
0000225c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000227d: DUP2
0000227e: MSTORE
0000227f: PUSH1 0x20
00002281: PUSH1 0x04
00002283: DUP3
00002284: ADD
00002285: MSTORE
00002286: PUSH1 0x24
00002288: DUP1
00002289: DUP3
0000228a: ADD
0000228b: MSTORE
0000228c: PUSH32 0x5479706543617374733a2062797465733332546f41646472657373206f766572
000022ad: PUSH1 0x44
000022af: DUP3
000022b0: ADD
000022b1: MSTORE
000022b2: PUSH32 0x666c6f7700000000000000000000000000000000000000000000000000000000
000022d3: PUSH1 0x64
000022d5: DUP3
000022d6: ADD
000022d7: MSTORE
000022d8: PUSH1 0x84
000022da: ADD
000022db: PUSH2 0x0946
000022de: JUMP
000022df: JUMPDEST
000022e0: POP
000022e1: SWAP1
000022e2: JUMP
000022e3: JUMPDEST
000022e4: PUSH1 0x00
000022e6: PUSH2 0x09f3
000022e9: PUSH32 0x000000000000000000000000000000000000000000000000000000e8d4a51000
0000230a: DUP4
0000230b: PUSH2 0x3570
0000230e: JUMP
0000230f: JUMPDEST
00002310: PUSH2 0x1066
00002313: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002328: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
00002349: AND
0000234a: DUP6
0000234b: DUP6
0000234c: PUSH2 0x27d3
0000234f: JUMP
00002350: JUMPDEST
00002351: PUSH1 0x40
00002353: MLOAD
00002354: PUSH32 0x81b4e8b400000000000000000000000000000000000000000000000000000000
00002375: DUP2
00002376: MSTORE
00002377: PUSH4 0xffffffff
0000237c: DUP6
0000237d: AND
0000237e: PUSH1 0x04
00002380: DUP3
00002381: ADD
00002382: MSTORE
00002383: PUSH1 0x24
00002385: DUP2
00002386: ADD
00002387: DUP5
00002388: SWAP1
00002389: MSTORE
0000238a: PUSH1 0x44
0000238c: DUP2
0000238d: ADD
0000238e: DUP4
0000238f: SWAP1
00002390: MSTORE
00002391: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023a6: DUP3
000023a7: AND
000023a8: SWAP1
000023a9: PUSH4 0x81b4e8b4
000023ae: SWAP1
000023af: CALLVALUE
000023b0: SWAP1
000023b1: PUSH1 0x64
000023b3: ADD
000023b4: PUSH1 0x20
000023b6: PUSH1 0x40
000023b8: MLOAD
000023b9: DUP1
000023ba: DUP4
000023bb: SUB
000023bc: DUP2
000023bd: DUP6
000023be: DUP9
000023bf: GAS
000023c0: CALL
000023c1: ISZERO
000023c2: DUP1
000023c3: ISZERO
000023c4: PUSH2 0x23d1
000023c7: JUMPI
000023c8: RETURNDATASIZE
000023c9: PUSH1 0x00
000023cb: DUP1
000023cc: RETURNDATACOPY
000023cd: RETURNDATASIZE
000023ce: PUSH1 0x00
000023d0: REVERT
000023d1: JUMPDEST
000023d2: POP
000023d3: POP
000023d4: POP
000023d5: POP
000023d6: POP
000023d7: PUSH1 0x40
000023d9: MLOAD
000023da: RETURNDATASIZE
000023db: PUSH1 0x1f
000023dd: NOT
000023de: PUSH1 0x1f
000023e0: DUP3
000023e1: ADD
000023e2: AND
000023e3: DUP3
000023e4: ADD
000023e5: DUP1
000023e6: PUSH1 0x40
000023e8: MSTORE
000023e9: POP
000023ea: DUP2
000023eb: ADD
000023ec: SWAP1
000023ed: PUSH2 0x0da8
000023f0: SWAP2
000023f1: SWAP1
000023f2: PUSH2 0x330d
000023f5: JUMP
000023f6: JUMPDEST
000023f7: DUP1
000023f8: SLOAD
000023f9: PUSH1 0x00
000023fb: JUMPDEST
000023fc: DUP2
000023fd: DUP2
000023fe: LT
000023ff: ISZERO
00002400: PUSH2 0x2446
00002403: JUMPI
00002404: DUP3
00002405: PUSH1 0x01
00002407: ADD
00002408: PUSH1 0x00
0000240a: DUP5
0000240b: PUSH1 0x00
0000240d: ADD
0000240e: DUP4
0000240f: DUP2
00002410: SLOAD
00002411: DUP2
00002412: LT
00002413: PUSH2 0x241e
00002416: JUMPI
00002417: PUSH2 0x241e
0000241a: PUSH2 0x3326
0000241d: JUMP
0000241e: JUMPDEST
0000241f: SWAP1
00002420: PUSH1 0x00
00002422: MSTORE
00002423: PUSH1 0x20
00002425: PUSH1 0x00
00002427: KECCAK256
00002428: ADD
00002429: SLOAD
0000242a: DUP2
0000242b: MSTORE
0000242c: PUSH1 0x20
0000242e: ADD
0000242f: SWAP1
00002430: DUP2
00002431: MSTORE
00002432: PUSH1 0x20
00002434: ADD
00002435: PUSH1 0x00
00002437: KECCAK256
00002438: PUSH1 0x00
0000243a: SWAP1
0000243b: SSTORE
0000243c: DUP1
0000243d: PUSH1 0x01
0000243f: ADD
00002440: SWAP1
00002441: POP
00002442: PUSH2 0x23fb
00002445: JUMP
00002446: JUMPDEST
00002447: POP
00002448: POP
00002449: PUSH1 0x00
0000244b: SWAP1
0000244c: SSTORE
0000244d: JUMP
0000244e: JUMPDEST
0000244f: PUSH2 0x2462
00002452: PUSH1 0x97
00002454: PUSH4 0xffffffff
00002459: DUP1
0000245a: DUP5
0000245b: AND
0000245c: SWAP1
0000245d: PUSH2 0x2829
00002460: AND
00002461: JUMP
00002462: JUMPDEST
00002463: PUSH2 0x246b
00002466: DUP3
00002467: PUSH2 0x1e96
0000246a: JUMP
0000246b: JUMPDEST
0000246c: SWAP1
0000246d: PUSH2 0x0880
00002470: JUMPI
00002471: PUSH1 0x40
00002473: MLOAD
00002474: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002495: DUP2
00002496: MSTORE
00002497: PUSH1 0x04
00002499: ADD
0000249a: PUSH2 0x0946
0000249d: SWAP2
0000249e: SWAP1
0000249f: PUSH2 0x31c7
000024a2: JUMP
000024a3: JUMPDEST
000024a4: PUSH4 0xffffffff
000024a9: DUP2
000024aa: AND
000024ab: PUSH1 0x00
000024ad: SWAP1
000024ae: DUP2
000024af: MSTORE
000024b0: PUSH1 0xca
000024b2: PUSH1 0x20
000024b4: MSTORE
000024b5: PUSH1 0x40
000024b7: SWAP1
000024b8: KECCAK256
000024b9: SLOAD
000024ba: PUSH1 0x60
000024bc: SWAP1
000024bd: PUSH2 0x09f3
000024c0: SWAP1
000024c1: PUSH2 0x2835
000024c4: JUMP
000024c5: JUMPDEST
000024c6: PUSH1 0x00
000024c8: PUSH2 0x0a3b
000024cb: DUP5
000024cc: DUP5
000024cd: PUSH2 0x24d5
000024d0: DUP8
000024d1: PUSH2 0x24a3
000024d4: JUMP
000024d5: JUMPDEST
000024d6: DUP6
000024d7: PUSH2 0x2853
000024da: JUMP
000024db: JUMPDEST
000024dc: PUSH2 0x1066
000024df: DUP4
000024e0: DUP4
000024e1: DUP4
000024e2: PUSH2 0x2927
000024e5: JUMP
000024e6: JUMPDEST
000024e7: PUSH1 0x00
000024e9: SLOAD
000024ea: PUSH2 0x0100
000024ed: SWAP1
000024ee: DIV
000024ef: PUSH1 0xff
000024f1: AND
000024f2: PUSH2 0x257d
000024f5: JUMPI
000024f6: PUSH1 0x40
000024f8: MLOAD
000024f9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000251a: DUP2
0000251b: MSTORE
0000251c: PUSH1 0x20
0000251e: PUSH1 0x04
00002520: DUP3
00002521: ADD
00002522: MSTORE
00002523: PUSH1 0x2b
00002525: PUSH1 0x24
00002527: DUP3
00002528: ADD
00002529: MSTORE
0000252a: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
0000254b: PUSH1 0x44
0000254d: DUP3
0000254e: ADD
0000254f: MSTORE
00002550: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00002571: PUSH1 0x64
00002573: DUP3
00002574: ADD
00002575: MSTORE
00002576: PUSH1 0x84
00002578: ADD
00002579: PUSH2 0x0946
0000257c: JUMP
0000257d: JUMPDEST
0000257e: PUSH2 0x100f
00002581: PUSH2 0x2944
00002584: JUMP
00002585: JUMPDEST
00002586: PUSH1 0x00
00002588: PUSH2 0x25e7
0000258b: DUP3
0000258c: PUSH1 0x40
0000258e: MLOAD
0000258f: DUP1
00002590: PUSH1 0x40
00002592: ADD
00002593: PUSH1 0x40
00002595: MSTORE
00002596: DUP1
00002597: PUSH1 0x20
00002599: DUP2
0000259a: MSTORE
0000259b: PUSH1 0x20
0000259d: ADD
0000259e: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
000025bf: DUP2
000025c0: MSTORE
000025c1: POP
000025c2: DUP6
000025c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025d8: AND
000025d9: PUSH2 0x29e4
000025dc: SWAP1
000025dd: SWAP3
000025de: SWAP2
000025df: SWAP1
000025e0: PUSH4 0xffffffff
000025e5: AND
000025e6: JUMP
000025e7: JUMPDEST
000025e8: SWAP1
000025e9: POP
000025ea: DUP1
000025eb: MLOAD
000025ec: PUSH1 0x00
000025ee: EQ
000025ef: DUP1
000025f0: PUSH2 0x2608
000025f3: JUMPI
000025f4: POP
000025f5: DUP1
000025f6: DUP1
000025f7: PUSH1 0x20
000025f9: ADD
000025fa: SWAP1
000025fb: MLOAD
000025fc: DUP2
000025fd: ADD
000025fe: SWAP1
000025ff: PUSH2 0x2608
00002602: SWAP2
00002603: SWAP1
00002604: PUSH2 0x35ab
00002607: JUMP
00002608: JUMPDEST
00002609: PUSH2 0x0be4
0000260c: JUMPI
0000260d: PUSH1 0x40
0000260f: MLOAD
00002610: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002631: DUP2
00002632: MSTORE
00002633: PUSH1 0x20
00002635: PUSH1 0x04
00002637: DUP3
00002638: ADD
00002639: MSTORE
0000263a: PUSH1 0x2a
0000263c: PUSH1 0x24
0000263e: DUP3
0000263f: ADD
00002640: MSTORE
00002641: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00002662: PUSH1 0x44
00002664: DUP3
00002665: ADD
00002666: MSTORE
00002667: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
00002688: PUSH1 0x64
0000268a: DUP3
0000268b: ADD
0000268c: MSTORE
0000268d: PUSH1 0x84
0000268f: ADD
00002690: PUSH2 0x0946
00002693: JUMP
00002694: JUMPDEST
00002695: PUSH1 0x60
00002697: PUSH1 0x00
00002699: PUSH2 0x26a1
0000269c: DUP4
0000269d: PUSH2 0x29f3
000026a0: JUMP
000026a1: JUMPDEST
000026a2: PUSH1 0x01
000026a4: ADD
000026a5: SWAP1
000026a6: POP
000026a7: PUSH1 0x00
000026a9: DUP2
000026aa: PUSH8 0xffffffffffffffff
000026b3: DUP2
000026b4: GT
000026b5: ISZERO
000026b6: PUSH2 0x26c1
000026b9: JUMPI
000026ba: PUSH2 0x26c1
000026bd: PUSH2 0x3397
000026c0: JUMP
000026c1: JUMPDEST
000026c2: PUSH1 0x40
000026c4: MLOAD
000026c5: SWAP1
000026c6: DUP1
000026c7: DUP3
000026c8: MSTORE
000026c9: DUP1
000026ca: PUSH1 0x1f
000026cc: ADD
000026cd: PUSH1 0x1f
000026cf: NOT
000026d0: AND
000026d1: PUSH1 0x20
000026d3: ADD
000026d4: DUP3
000026d5: ADD
000026d6: PUSH1 0x40
000026d8: MSTORE
000026d9: DUP1
000026da: ISZERO
000026db: PUSH2 0x26eb
000026de: JUMPI
000026df: PUSH1 0x20
000026e1: DUP3
000026e2: ADD
000026e3: DUP2
000026e4: DUP1
000026e5: CALLDATASIZE
000026e6: DUP4
000026e7: CALLDATACOPY
000026e8: ADD
000026e9: SWAP1
000026ea: POP
000026eb: JUMPDEST
000026ec: POP
000026ed: SWAP1
000026ee: POP
000026ef: DUP2
000026f0: DUP2
000026f1: ADD
000026f2: PUSH1 0x20
000026f4: ADD
000026f5: JUMPDEST
000026f6: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002717: ADD
00002718: PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000
00002739: PUSH1 0x0a
0000273b: DUP7
0000273c: MOD
0000273d: BYTE
0000273e: DUP2
0000273f: MSTORE8
00002740: PUSH1 0x0a
00002742: DUP6
00002743: DIV
00002744: SWAP5
00002745: POP
00002746: DUP5
00002747: PUSH2 0x26f5
0000274a: JUMPI
0000274b: POP
0000274c: SWAP4
0000274d: SWAP3
0000274e: POP
0000274f: POP
00002750: POP
00002751: JUMP
00002752: JUMPDEST
00002753: PUSH1 0x00
00002755: PUSH2 0x16b6
00002758: DUP4
00002759: DUP4
0000275a: PUSH2 0x2ad5
0000275d: JUMP
0000275e: JUMPDEST
0000275f: PUSH1 0x00
00002761: PUSH2 0x09f3
00002764: DUP3
00002765: PUSH2 0x2aed
00002768: JUMP
00002769: JUMPDEST
0000276a: PUSH1 0x00
0000276c: PUSH2 0x16b6
0000276f: DUP4
00002770: DUP4
00002771: PUSH2 0x2af7
00002774: JUMP
00002775: JUMPDEST
00002776: PUSH1 0x40
00002778: MLOAD
00002779: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000278e: DUP1
0000278f: DUP6
00002790: AND
00002791: PUSH1 0x24
00002793: DUP4
00002794: ADD
00002795: MSTORE
00002796: DUP4
00002797: AND
00002798: PUSH1 0x44
0000279a: DUP3
0000279b: ADD
0000279c: MSTORE
0000279d: PUSH1 0x64
0000279f: DUP2
000027a0: ADD
000027a1: DUP3
000027a2: SWAP1
000027a3: MSTORE
000027a4: PUSH2 0x1066
000027a7: SWAP1
000027a8: DUP6
000027a9: SWAP1
000027aa: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
000027cb: SWAP1
000027cc: PUSH1 0x84
000027ce: ADD
000027cf: PUSH2 0x1d69
000027d2: JUMP
000027d3: JUMPDEST
000027d4: PUSH1 0x40
000027d6: MLOAD
000027d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000027ec: DUP4
000027ed: AND
000027ee: PUSH1 0x24
000027f0: DUP3
000027f1: ADD
000027f2: MSTORE
000027f3: PUSH1 0x44
000027f5: DUP2
000027f6: ADD
000027f7: DUP3
000027f8: SWAP1
000027f9: MSTORE
000027fa: PUSH2 0x0be4
000027fd: SWAP1
000027fe: DUP5
000027ff: SWAP1
00002800: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00002821: SWAP1
00002822: PUSH1 0x64
00002824: ADD
00002825: PUSH2 0x1d69
00002828: JUMP
00002829: JUMPDEST
0000282a: PUSH1 0x00
0000282c: PUSH2 0x16b6
0000282f: DUP4
00002830: DUP4
00002831: PUSH2 0x2b21
00002834: JUMP
00002835: JUMPDEST
00002836: PUSH1 0x60
00002838: PUSH2 0x09f3
0000283b: PUSH1 0x00
0000283d: DUP4
0000283e: CALLER
0000283f: PUSH1 0x40
00002841: MLOAD
00002842: DUP1
00002843: PUSH1 0x20
00002845: ADD
00002846: PUSH1 0x40
00002848: MSTORE
00002849: DUP1
0000284a: PUSH1 0x00
0000284c: DUP2
0000284d: MSTORE
0000284e: POP
0000284f: PUSH2 0x2b3e
00002852: JUMP
00002853: JUMPDEST
00002854: PUSH1 0x00
00002856: DUP1
00002857: PUSH2 0x285f
0000285a: DUP7
0000285b: PUSH2 0x16ca
0000285e: JUMP
0000285f: JUMPDEST
00002860: PUSH1 0x40
00002862: MLOAD
00002863: PUSH32 0x81d2ea9500000000000000000000000000000000000000000000000000000000
00002884: DUP2
00002885: MSTORE
00002886: SWAP1
00002887: SWAP2
00002888: POP
00002889: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000289e: PUSH32 0x0000000000000000000000006c6828673152ec307482e72b4a9ad9d84c1d761c
000028bf: AND
000028c0: SWAP1
000028c1: PUSH4 0x81d2ea95
000028c6: SWAP1
000028c7: PUSH2 0x28dc
000028ca: SWAP1
000028cb: DUP10
000028cc: SWAP1
000028cd: DUP6
000028ce: SWAP1
000028cf: DUP11
000028d0: SWAP1
000028d1: DUP11
000028d2: SWAP1
000028d3: DUP11
000028d4: SWAP1
000028d5: PUSH1 0x04
000028d7: ADD
000028d8: PUSH2 0x3491
000028db: JUMP
000028dc: JUMPDEST
000028dd: PUSH1 0x20
000028df: PUSH1 0x40
000028e1: MLOAD
000028e2: DUP1
000028e3: DUP4
000028e4: SUB
000028e5: DUP2
000028e6: DUP7
000028e7: GAS
000028e8: STATICCALL
000028e9: ISZERO
000028ea: DUP1
000028eb: ISZERO
000028ec: PUSH2 0x28f9
000028ef: JUMPI
000028f0: RETURNDATASIZE
000028f1: PUSH1 0x00
000028f3: DUP1
000028f4: RETURNDATACOPY
000028f5: RETURNDATASIZE
000028f6: PUSH1 0x00
000028f8: REVERT
000028f9: JUMPDEST
000028fa: POP
000028fb: POP
000028fc: POP
000028fd: POP
000028fe: PUSH1 0x40
00002900: MLOAD
00002901: RETURNDATASIZE
00002902: PUSH1 0x1f
00002904: NOT
00002905: PUSH1 0x1f
00002907: DUP3
00002908: ADD
00002909: AND
0000290a: DUP3
0000290b: ADD
0000290c: DUP1
0000290d: PUSH1 0x40
0000290f: MSTORE
00002910: POP
00002911: DUP2
00002912: ADD
00002913: SWAP1
00002914: PUSH2 0x291d
00002917: SWAP2
00002918: SWAP1
00002919: PUSH2 0x330d
0000291c: JUMP
0000291d: JUMPDEST
0000291e: SWAP7
0000291f: SWAP6
00002920: POP
00002921: POP
00002922: POP
00002923: POP
00002924: POP
00002925: POP
00002926: JUMP
00002927: JUMPDEST
00002928: PUSH1 0x00
0000292a: DUP3
0000292b: DUP2
0000292c: MSTORE
0000292d: PUSH1 0x02
0000292f: DUP5
00002930: ADD
00002931: PUSH1 0x20
00002933: MSTORE
00002934: PUSH1 0x40
00002936: DUP2
00002937: KECCAK256
00002938: DUP3
00002939: SWAP1
0000293a: SSTORE
0000293b: PUSH2 0x0a3b
0000293e: DUP5
0000293f: DUP5
00002940: PUSH2 0x2b73
00002943: JUMP
00002944: JUMPDEST
00002945: PUSH1 0x00
00002947: SLOAD
00002948: PUSH2 0x0100
0000294b: SWAP1
0000294c: DIV
0000294d: PUSH1 0xff
0000294f: AND
00002950: PUSH2 0x29db
00002953: JUMPI
00002954: PUSH1 0x40
00002956: MLOAD
00002957: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002978: DUP2
00002979: MSTORE
0000297a: PUSH1 0x20
0000297c: PUSH1 0x04
0000297e: DUP3
0000297f: ADD
00002980: MSTORE
00002981: PUSH1 0x2b
00002983: PUSH1 0x24
00002985: DUP3
00002986: ADD
00002987: MSTORE
00002988: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
000029a9: PUSH1 0x44
000029ab: DUP3
000029ac: ADD
000029ad: MSTORE
000029ae: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
000029cf: PUSH1 0x64
000029d1: DUP3
000029d2: ADD
000029d3: MSTORE
000029d4: PUSH1 0x84
000029d6: ADD
000029d7: PUSH2 0x0946
000029da: JUMP
000029db: JUMPDEST
000029dc: PUSH2 0x100f
000029df: CALLER
000029e0: PUSH2 0x19ee
000029e3: JUMP
000029e4: JUMPDEST
000029e5: PUSH1 0x60
000029e7: PUSH2 0x0a3b
000029ea: DUP5
000029eb: DUP5
000029ec: PUSH1 0x00
000029ee: DUP6
000029ef: PUSH2 0x2b7f
000029f2: JUMP
000029f3: JUMPDEST
000029f4: PUSH1 0x00
000029f6: DUP1
000029f7: PUSH27 0x184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000
00002a13: DUP4
00002a14: LT
00002a15: PUSH2 0x2a3c
00002a18: JUMPI
00002a19: PUSH27 0x184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000
00002a35: DUP4
00002a36: DIV
00002a37: SWAP3
00002a38: POP
00002a39: PUSH1 0x40
00002a3b: ADD
00002a3c: JUMPDEST
00002a3d: PUSH14 0x04ee2d6d415b85acef8100000000
00002a4c: DUP4
00002a4d: LT
00002a4e: PUSH2 0x2a68
00002a51: JUMPI
00002a52: PUSH14 0x04ee2d6d415b85acef8100000000
00002a61: DUP4
00002a62: DIV
00002a63: SWAP3
00002a64: POP
00002a65: PUSH1 0x20
00002a67: ADD
00002a68: JUMPDEST
00002a69: PUSH7 0x2386f26fc10000
00002a71: DUP4
00002a72: LT
00002a73: PUSH2 0x2a86
00002a76: JUMPI
00002a77: PUSH7 0x2386f26fc10000
00002a7f: DUP4
00002a80: DIV
00002a81: SWAP3
00002a82: POP
00002a83: PUSH1 0x10
00002a85: ADD
00002a86: JUMPDEST
00002a87: PUSH4 0x05f5e100
00002a8c: DUP4
00002a8d: LT
00002a8e: PUSH2 0x2a9e
00002a91: JUMPI
00002a92: PUSH4 0x05f5e100
00002a97: DUP4
00002a98: DIV
00002a99: SWAP3
00002a9a: POP
00002a9b: PUSH1 0x08
00002a9d: ADD
00002a9e: JUMPDEST
00002a9f: PUSH2 0x2710
00002aa2: DUP4
00002aa3: LT
00002aa4: PUSH2 0x2ab2
00002aa7: JUMPI
00002aa8: PUSH2 0x2710
00002aab: DUP4
00002aac: DIV
00002aad: SWAP3
00002aae: POP
00002aaf: PUSH1 0x04
00002ab1: ADD
00002ab2: JUMPDEST
00002ab3: PUSH1 0x64
00002ab5: DUP4
00002ab6: LT
00002ab7: PUSH2 0x2ac4
00002aba: JUMPI
00002abb: PUSH1 0x64
00002abd: DUP4
00002abe: DIV
00002abf: SWAP3
00002ac0: POP
00002ac1: PUSH1 0x02
00002ac3: ADD
00002ac4: JUMPDEST
00002ac5: PUSH1 0x0a
00002ac7: DUP4
00002ac8: LT
00002ac9: PUSH2 0x09f3
00002acc: JUMPI
00002acd: PUSH1 0x01
00002acf: ADD
00002ad0: SWAP3
00002ad1: SWAP2
00002ad2: POP
00002ad3: POP
00002ad4: JUMP
00002ad5: JUMPDEST
00002ad6: PUSH1 0x00
00002ad8: DUP2
00002ad9: DUP2
00002ada: MSTORE
00002adb: PUSH1 0x01
00002add: DUP4
00002ade: ADD
00002adf: PUSH1 0x20
00002ae1: MSTORE
00002ae2: PUSH1 0x40
00002ae4: DUP2
00002ae5: KECCAK256
00002ae6: SLOAD
00002ae7: ISZERO
00002ae8: ISZERO
00002ae9: PUSH2 0x16b6
00002aec: JUMP
00002aed: JUMPDEST
00002aee: PUSH1 0x00
00002af0: PUSH2 0x09f3
00002af3: DUP3
00002af4: SLOAD
00002af5: SWAP1
00002af6: JUMP
00002af7: JUMPDEST
00002af8: PUSH1 0x00
00002afa: DUP3
00002afb: PUSH1 0x00
00002afd: ADD
00002afe: DUP3
00002aff: DUP2
00002b00: SLOAD
00002b01: DUP2
00002b02: LT
00002b03: PUSH2 0x2b0e
00002b06: JUMPI
00002b07: PUSH2 0x2b0e
00002b0a: PUSH2 0x3326
00002b0d: JUMP
00002b0e: JUMPDEST
00002b0f: SWAP1
00002b10: PUSH1 0x00
00002b12: MSTORE
00002b13: PUSH1 0x20
00002b15: PUSH1 0x00
00002b17: KECCAK256
00002b18: ADD
00002b19: SLOAD
00002b1a: SWAP1
00002b1b: POP
00002b1c: SWAP3
00002b1d: SWAP2
00002b1e: POP
00002b1f: POP
00002b20: JUMP
00002b21: JUMPDEST
00002b22: PUSH1 0x00
00002b24: DUP2
00002b25: DUP2
00002b26: MSTORE
00002b27: PUSH1 0x02
00002b29: DUP4
00002b2a: ADD
00002b2b: PUSH1 0x20
00002b2d: MSTORE
00002b2e: PUSH1 0x40
00002b30: DUP2
00002b31: KECCAK256
00002b32: DUP2
00002b33: SWAP1
00002b34: SSTORE
00002b35: PUSH2 0x16b6
00002b38: DUP4
00002b39: DUP4
00002b3a: PUSH2 0x2c8d
00002b3d: JUMP
00002b3e: JUMPDEST
00002b3f: PUSH1 0x60
00002b41: PUSH1 0x01
00002b43: DUP6
00002b44: DUP6
00002b45: DUP6
00002b46: DUP6
00002b47: PUSH1 0x40
00002b49: MLOAD
00002b4a: PUSH1 0x20
00002b4c: ADD
00002b4d: PUSH2 0x2b5a
00002b50: SWAP6
00002b51: SWAP5
00002b52: SWAP4
00002b53: SWAP3
00002b54: SWAP2
00002b55: SWAP1
00002b56: PUSH2 0x35cd
00002b59: JUMP
00002b5a: JUMPDEST
00002b5b: PUSH1 0x40
00002b5d: MLOAD
00002b5e: PUSH1 0x20
00002b60: DUP2
00002b61: DUP4
00002b62: SUB
00002b63: SUB
00002b64: DUP2
00002b65: MSTORE
00002b66: SWAP1
00002b67: PUSH1 0x40
00002b69: MSTORE
00002b6a: SWAP1
00002b6b: POP
00002b6c: SWAP5
00002b6d: SWAP4
00002b6e: POP
00002b6f: POP
00002b70: POP
00002b71: POP
00002b72: JUMP
00002b73: JUMPDEST
00002b74: PUSH1 0x00
00002b76: PUSH2 0x16b6
00002b79: DUP4
00002b7a: DUP4
00002b7b: PUSH2 0x1deb
00002b7e: JUMP
00002b7f: JUMPDEST
00002b80: PUSH1 0x60
00002b82: DUP3
00002b83: SELFBALANCE
00002b84: LT
00002b85: ISZERO
00002b86: PUSH2 0x2c11
00002b89: JUMPI
00002b8a: PUSH1 0x40
00002b8c: MLOAD
00002b8d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002bae: DUP2
00002baf: MSTORE
00002bb0: PUSH1 0x20
00002bb2: PUSH1 0x04
00002bb4: DUP3
00002bb5: ADD
00002bb6: MSTORE
00002bb7: PUSH1 0x26
00002bb9: PUSH1 0x24
00002bbb: DUP3
00002bbc: ADD
00002bbd: MSTORE
00002bbe: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
00002bdf: PUSH1 0x44
00002be1: DUP3
00002be2: ADD
00002be3: MSTORE
00002be4: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000
00002c05: PUSH1 0x64
00002c07: DUP3
00002c08: ADD
00002c09: MSTORE
00002c0a: PUSH1 0x84
00002c0c: ADD
00002c0d: PUSH2 0x0946
00002c10: JUMP
00002c11: JUMPDEST
00002c12: PUSH1 0x00
00002c14: DUP1
00002c15: DUP7
00002c16: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c2b: AND
00002c2c: DUP6
00002c2d: DUP8
00002c2e: PUSH1 0x40
00002c30: MLOAD
00002c31: PUSH2 0x2c3a
00002c34: SWAP2
00002c35: SWAP1
00002c36: PUSH2 0x3652
00002c39: JUMP
00002c3a: JUMPDEST
00002c3b: PUSH1 0x00
00002c3d: PUSH1 0x40
00002c3f: MLOAD
00002c40: DUP1
00002c41: DUP4
00002c42: SUB
00002c43: DUP2
00002c44: DUP6
00002c45: DUP8
00002c46: GAS
00002c47: CALL
00002c48: SWAP3
00002c49: POP
00002c4a: POP
00002c4b: POP
00002c4c: RETURNDATASIZE
00002c4d: DUP1
00002c4e: PUSH1 0x00
00002c50: DUP2
00002c51: EQ
00002c52: PUSH2 0x2c77
00002c55: JUMPI
00002c56: PUSH1 0x40
00002c58: MLOAD
00002c59: SWAP2
00002c5a: POP
00002c5b: PUSH1 0x1f
00002c5d: NOT
00002c5e: PUSH1 0x3f
00002c60: RETURNDATASIZE
00002c61: ADD
00002c62: AND
00002c63: DUP3
00002c64: ADD
00002c65: PUSH1 0x40
00002c67: MSTORE
00002c68: RETURNDATASIZE
00002c69: DUP3
00002c6a: MSTORE
00002c6b: RETURNDATASIZE
00002c6c: PUSH1 0x00
00002c6e: PUSH1 0x20
00002c70: DUP5
00002c71: ADD
00002c72: RETURNDATACOPY
00002c73: PUSH2 0x2c7c
00002c76: JUMP
00002c77: JUMPDEST
00002c78: PUSH1 0x60
00002c7a: SWAP2
00002c7b: POP
00002c7c: JUMPDEST
00002c7d: POP
00002c7e: SWAP2
00002c7f: POP
00002c80: SWAP2
00002c81: POP
00002c82: PUSH2 0x0c30
00002c85: DUP8
00002c86: DUP4
00002c87: DUP4
00002c88: DUP8
00002c89: PUSH2 0x2c99
00002c8c: JUMP
00002c8d: JUMPDEST
00002c8e: PUSH1 0x00
00002c90: PUSH2 0x16b6
00002c93: DUP4
00002c94: DUP4
00002c95: PUSH2 0x1f07
00002c98: JUMP
00002c99: JUMPDEST
00002c9a: PUSH1 0x60
00002c9c: DUP4
00002c9d: ISZERO
00002c9e: PUSH2 0x2d2f
00002ca1: JUMPI
00002ca2: DUP3
00002ca3: MLOAD
00002ca4: PUSH1 0x00
00002ca6: SUB
00002ca7: PUSH2 0x2d28
00002caa: JUMPI
00002cab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002cc0: DUP6
00002cc1: AND
00002cc2: EXTCODESIZE
00002cc3: PUSH2 0x2d28
00002cc6: JUMPI
00002cc7: PUSH1 0x40
00002cc9: MLOAD
00002cca: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002ceb: DUP2
00002cec: MSTORE
00002ced: PUSH1 0x20
00002cef: PUSH1 0x04
00002cf1: DUP3
00002cf2: ADD
00002cf3: MSTORE
00002cf4: PUSH1 0x1d
00002cf6: PUSH1 0x24
00002cf8: DUP3
00002cf9: ADD
00002cfa: MSTORE
00002cfb: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00002d1c: PUSH1 0x44
00002d1e: DUP3
00002d1f: ADD
00002d20: MSTORE
00002d21: PUSH1 0x64
00002d23: ADD
00002d24: PUSH2 0x0946
00002d27: JUMP
00002d28: JUMPDEST
00002d29: POP
00002d2a: DUP2
00002d2b: PUSH2 0x0a3b
00002d2e: JUMP
00002d2f: JUMPDEST
00002d30: PUSH2 0x0a3b
00002d33: DUP4
00002d34: DUP4
00002d35: DUP2
00002d36: MLOAD
00002d37: ISZERO
00002d38: PUSH2 0x2d44
00002d3b: JUMPI
00002d3c: DUP2
00002d3d: MLOAD
00002d3e: DUP1
00002d3f: DUP4
00002d40: PUSH1 0x20
00002d42: ADD
00002d43: REVERT
00002d44: JUMPDEST
00002d45: DUP1
00002d46: PUSH1 0x40
00002d48: MLOAD
00002d49: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002d6a: DUP2
00002d6b: MSTORE
00002d6c: PUSH1 0x04
00002d6e: ADD
00002d6f: PUSH2 0x0946
00002d72: SWAP2
00002d73: SWAP1
00002d74: PUSH2 0x31c7
00002d77: JUMP
00002d78: JUMPDEST
00002d79: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d8e: DUP2
00002d8f: AND
00002d90: DUP2
00002d91: EQ
00002d92: PUSH2 0x14b2
00002d95: JUMPI
00002d96: PUSH1 0x00
00002d98: DUP1
00002d99: REVERT
00002d9a: JUMPDEST
00002d9b: PUSH1 0x00
00002d9d: PUSH1 0x20
00002d9f: DUP3
00002da0: DUP5
00002da1: SUB
00002da2: SLT
00002da3: ISZERO
00002da4: PUSH2 0x2dac
00002da7: JUMPI
00002da8: PUSH1 0x00
00002daa: DUP1
00002dab: REVERT
00002dac: JUMPDEST
00002dad: DUP2
00002dae: CALLDATALOAD
00002daf: PUSH2 0x16b6
00002db2: DUP2
00002db3: PUSH2 0x2d78
00002db6: JUMP
00002db7: JUMPDEST
00002db8: DUP1
00002db9: CALLDATALOAD
00002dba: PUSH4 0xffffffff
00002dbf: DUP2
00002dc0: AND
00002dc1: DUP2
00002dc2: EQ
00002dc3: PUSH2 0x2dcb
00002dc6: JUMPI
00002dc7: PUSH1 0x00
00002dc9: DUP1
00002dca: REVERT
00002dcb: JUMPDEST
00002dcc: SWAP2
00002dcd: SWAP1
00002dce: POP
00002dcf: JUMP
00002dd0: JUMPDEST
00002dd1: PUSH1 0x00
00002dd3: PUSH1 0x20
00002dd5: DUP3
00002dd6: DUP5
00002dd7: SUB
00002dd8: SLT
00002dd9: ISZERO
00002dda: PUSH2 0x2de2
00002ddd: JUMPI
00002dde: PUSH1 0x00
00002de0: DUP1
00002de1: REVERT
00002de2: JUMPDEST
00002de3: PUSH2 0x16b6
00002de6: DUP3
00002de7: PUSH2 0x2db7
00002dea: JUMP
00002deb: JUMPDEST
00002dec: PUSH1 0x20
00002dee: DUP1
00002def: DUP3
00002df0: MSTORE
00002df1: DUP3
00002df2: MLOAD
00002df3: DUP3
00002df4: DUP3
00002df5: ADD
00002df6: DUP2
00002df7: SWAP1
00002df8: MSTORE
00002df9: PUSH1 0x00
00002dfb: SWAP2
00002dfc: SWAP1
00002dfd: DUP5
00002dfe: DUP3
00002dff: ADD
00002e00: SWAP1
00002e01: PUSH1 0x40
00002e03: DUP6
00002e04: ADD
00002e05: SWAP1
00002e06: DUP5
00002e07: JUMPDEST
00002e08: DUP2
00002e09: DUP2
00002e0a: LT
00002e0b: ISZERO
00002e0c: PUSH2 0x2e39
00002e0f: JUMPI
00002e10: DUP4
00002e11: MLOAD
00002e12: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e27: AND
00002e28: DUP4
00002e29: MSTORE
00002e2a: SWAP3
00002e2b: DUP5
00002e2c: ADD
00002e2d: SWAP3
00002e2e: SWAP2
00002e2f: DUP5
00002e30: ADD
00002e31: SWAP2
00002e32: PUSH1 0x01
00002e34: ADD
00002e35: PUSH2 0x2e07
00002e38: JUMP
00002e39: JUMPDEST
00002e3a: POP
00002e3b: SWAP1
00002e3c: SWAP7
00002e3d: SWAP6
00002e3e: POP
00002e3f: POP
00002e40: POP
00002e41: POP
00002e42: POP
00002e43: POP
00002e44: JUMP
00002e45: JUMPDEST
00002e46: PUSH1 0x00
00002e48: DUP1
00002e49: PUSH1 0x40
00002e4b: DUP4
00002e4c: DUP6
00002e4d: SUB
00002e4e: SLT
00002e4f: ISZERO
00002e50: PUSH2 0x2e58
00002e53: JUMPI
00002e54: PUSH1 0x00
00002e56: DUP1
00002e57: REVERT
00002e58: JUMPDEST
00002e59: PUSH2 0x2e61
00002e5c: DUP4
00002e5d: PUSH2 0x2db7
00002e60: JUMP
00002e61: JUMPDEST
00002e62: SWAP5
00002e63: PUSH1 0x20
00002e65: SWAP4
00002e66: SWAP1
00002e67: SWAP4
00002e68: ADD
00002e69: CALLDATALOAD
00002e6a: SWAP4
00002e6b: POP
00002e6c: POP
00002e6d: POP
00002e6e: JUMP
00002e6f: JUMPDEST
00002e70: PUSH1 0x20
00002e72: DUP1
00002e73: DUP3
00002e74: MSTORE
00002e75: DUP3
00002e76: MLOAD
00002e77: DUP3
00002e78: DUP3
00002e79: ADD
00002e7a: DUP2
00002e7b: SWAP1
00002e7c: MSTORE
00002e7d: PUSH1 0x00
00002e7f: SWAP2
00002e80: SWAP1
00002e81: DUP5
00002e82: DUP3
00002e83: ADD
00002e84: SWAP1
00002e85: PUSH1 0x40
00002e87: DUP6
00002e88: ADD
00002e89: SWAP1
00002e8a: DUP5
00002e8b: JUMPDEST
00002e8c: DUP2
00002e8d: DUP2
00002e8e: LT
00002e8f: ISZERO
00002e90: PUSH2 0x2e39
00002e93: JUMPI
00002e94: DUP4
00002e95: MLOAD
00002e96: PUSH4 0xffffffff
00002e9b: AND
00002e9c: DUP4
00002e9d: MSTORE
00002e9e: SWAP3
00002e9f: DUP5
00002ea0: ADD
00002ea1: SWAP3
00002ea2: SWAP2
00002ea3: DUP5
00002ea4: ADD
00002ea5: SWAP2
00002ea6: PUSH1 0x01
00002ea8: ADD
00002ea9: PUSH2 0x2e8b
00002eac: JUMP
00002ead: JUMPDEST
00002eae: PUSH1 0x00
00002eb0: DUP1
00002eb1: PUSH1 0x40
00002eb3: DUP4
00002eb4: DUP6
00002eb5: SUB
00002eb6: SLT
00002eb7: ISZERO
00002eb8: PUSH2 0x2ec0
00002ebb: JUMPI
00002ebc: PUSH1 0x00
00002ebe: DUP1
00002ebf: REVERT
00002ec0: JUMPDEST
00002ec1: PUSH2 0x2ec9
00002ec4: DUP4
00002ec5: PUSH2 0x2db7
00002ec8: JUMP
00002ec9: JUMPDEST
00002eca: SWAP2
00002ecb: POP
00002ecc: PUSH1 0x20
00002ece: DUP4
00002ecf: ADD
00002ed0: CALLDATALOAD
00002ed1: PUSH2 0x2ed9
00002ed4: DUP2
00002ed5: PUSH2 0x2d78
00002ed8: JUMP
00002ed9: JUMPDEST
00002eda: DUP1
00002edb: SWAP2
00002edc: POP
00002edd: POP
00002ede: SWAP3
00002edf: POP
00002ee0: SWAP3
00002ee1: SWAP1
00002ee2: POP
00002ee3: JUMP
00002ee4: JUMPDEST
00002ee5: PUSH1 0x00
00002ee7: DUP1
00002ee8: DUP4
00002ee9: PUSH1 0x1f
00002eeb: DUP5
00002eec: ADD
00002eed: SLT
00002eee: PUSH2 0x2ef6
00002ef1: JUMPI
00002ef2: PUSH1 0x00
00002ef4: DUP1
00002ef5: REVERT
00002ef6: JUMPDEST
00002ef7: POP
00002ef8: DUP2
00002ef9: CALLDATALOAD
00002efa: PUSH8 0xffffffffffffffff
00002f03: DUP2
00002f04: GT
00002f05: ISZERO
00002f06: PUSH2 0x2f0e
00002f09: JUMPI
00002f0a: PUSH1 0x00
00002f0c: DUP1
00002f0d: REVERT
00002f0e: JUMPDEST
00002f0f: PUSH1 0x20
00002f11: DUP4
00002f12: ADD
00002f13: SWAP2
00002f14: POP
00002f15: DUP4
00002f16: PUSH1 0x20
00002f18: DUP3
00002f19: DUP6
00002f1a: ADD
00002f1b: ADD
00002f1c: GT
00002f1d: ISZERO
00002f1e: PUSH2 0x1741
00002f21: JUMPI
00002f22: PUSH1 0x00
00002f24: DUP1
00002f25: REVERT
00002f26: JUMPDEST
00002f27: PUSH1 0x00
00002f29: DUP1
00002f2a: PUSH1 0x00
00002f2c: DUP1
00002f2d: PUSH1 0x00
00002f2f: DUP1
00002f30: PUSH1 0xa0
00002f32: DUP8
00002f33: DUP10
00002f34: SUB
00002f35: SLT
00002f36: ISZERO
00002f37: PUSH2 0x2f3f
00002f3a: JUMPI
00002f3b: PUSH1 0x00
00002f3d: DUP1
00002f3e: REVERT
00002f3f: JUMPDEST
00002f40: PUSH2 0x2f48
00002f43: DUP8
00002f44: PUSH2 0x2db7
00002f47: JUMP
00002f48: JUMPDEST
00002f49: SWAP6
00002f4a: POP
00002f4b: PUSH1 0x20
00002f4d: DUP8
00002f4e: ADD
00002f4f: CALLDATALOAD
00002f50: SWAP5
00002f51: POP
00002f52: PUSH1 0x40
00002f54: DUP8
00002f55: ADD
00002f56: CALLDATALOAD
00002f57: SWAP4
00002f58: POP
00002f59: PUSH1 0x60
00002f5b: DUP8
00002f5c: ADD
00002f5d: CALLDATALOAD
00002f5e: PUSH8 0xffffffffffffffff
00002f67: DUP2
00002f68: GT
00002f69: ISZERO
00002f6a: PUSH2 0x2f72
00002f6d: JUMPI
00002f6e: PUSH1 0x00
00002f70: DUP1
00002f71: REVERT
00002f72: JUMPDEST
00002f73: PUSH2 0x2f7e
00002f76: DUP10
00002f77: DUP3
00002f78: DUP11
00002f79: ADD
00002f7a: PUSH2 0x2ee4
00002f7d: JUMP
00002f7e: JUMPDEST
00002f7f: SWAP1
00002f80: SWAP5
00002f81: POP
00002f82: SWAP3
00002f83: POP
00002f84: POP
00002f85: PUSH1 0x80
00002f87: DUP8
00002f88: ADD
00002f89: CALLDATALOAD
00002f8a: PUSH2 0x2f92
00002f8d: DUP2
00002f8e: PUSH2 0x2d78
00002f91: JUMP
00002f92: JUMPDEST
00002f93: DUP1
00002f94: SWAP2
00002f95: POP
00002f96: POP
00002f97: SWAP3
00002f98: SWAP6
00002f99: POP
00002f9a: SWAP3
00002f9b: SWAP6
00002f9c: POP
00002f9d: SWAP3
00002f9e: SWAP6
00002f9f: JUMP
00002fa0: JUMPDEST
00002fa1: PUSH1 0x00
00002fa3: DUP1
00002fa4: PUSH1 0x00
00002fa6: DUP1
00002fa7: PUSH1 0x60
00002fa9: DUP6
00002faa: DUP8
00002fab: SUB
00002fac: SLT
00002fad: ISZERO
00002fae: PUSH2 0x2fb6
00002fb1: JUMPI
00002fb2: PUSH1 0x00
00002fb4: DUP1
00002fb5: REVERT
00002fb6: JUMPDEST
00002fb7: PUSH2 0x2fbf
00002fba: DUP6
00002fbb: PUSH2 0x2db7
00002fbe: JUMP
00002fbf: JUMPDEST
00002fc0: SWAP4
00002fc1: POP
00002fc2: PUSH1 0x20
00002fc4: DUP6
00002fc5: ADD
00002fc6: CALLDATALOAD
00002fc7: SWAP3
00002fc8: POP
00002fc9: PUSH1 0x40
00002fcb: DUP6
00002fcc: ADD
00002fcd: CALLDATALOAD
00002fce: PUSH8 0xffffffffffffffff
00002fd7: DUP2
00002fd8: GT
00002fd9: ISZERO
00002fda: PUSH2 0x2fe2
00002fdd: JUMPI
00002fde: PUSH1 0x00
00002fe0: DUP1
00002fe1: REVERT
00002fe2: JUMPDEST
00002fe3: PUSH2 0x2fee
00002fe6: DUP8
00002fe7: DUP3
00002fe8: DUP9
00002fe9: ADD
00002fea: PUSH2 0x2ee4
00002fed: JUMP
00002fee: JUMPDEST
00002fef: SWAP6
00002ff0: SWAP9
00002ff1: SWAP5
00002ff2: SWAP8
00002ff3: POP
00002ff4: SWAP6
00002ff5: POP
00002ff6: POP
00002ff7: POP
00002ff8: POP
00002ff9: JUMP
00002ffa: JUMPDEST
00002ffb: PUSH1 0x00
00002ffd: DUP1
00002ffe: PUSH1 0x00
00003000: PUSH1 0x60
00003002: DUP5
00003003: DUP7
00003004: SUB
00003005: SLT
00003006: ISZERO
00003007: PUSH2 0x300f
0000300a: JUMPI
0000300b: PUSH1 0x00
0000300d: DUP1
0000300e: REVERT
0000300f: JUMPDEST
00003010: PUSH2 0x3018
00003013: DUP5
00003014: PUSH2 0x2db7
00003017: JUMP
00003018: JUMPDEST
00003019: SWAP3
0000301a: POP
0000301b: PUSH1 0x20
0000301d: DUP5
0000301e: ADD
0000301f: CALLDATALOAD
00003020: SWAP2
00003021: POP
00003022: PUSH1 0x40
00003024: DUP5
00003025: ADD
00003026: CALLDATALOAD
00003027: PUSH2 0x302f
0000302a: DUP2
0000302b: PUSH2 0x2d78
0000302e: JUMP
0000302f: JUMPDEST
00003030: DUP1
00003031: SWAP2
00003032: POP
00003033: POP
00003034: SWAP3
00003035: POP
00003036: SWAP3
00003037: POP
00003038: SWAP3
00003039: JUMP
0000303a: JUMPDEST
0000303b: PUSH1 0x00
0000303d: DUP1
0000303e: DUP4
0000303f: PUSH1 0x1f
00003041: DUP5
00003042: ADD
00003043: SLT
00003044: PUSH2 0x304c
00003047: JUMPI
00003048: PUSH1 0x00
0000304a: DUP1
0000304b: REVERT
0000304c: JUMPDEST
0000304d: POP
0000304e: DUP2
0000304f: CALLDATALOAD
00003050: PUSH8 0xffffffffffffffff
00003059: DUP2
0000305a: GT
0000305b: ISZERO
0000305c: PUSH2 0x3064
0000305f: JUMPI
00003060: PUSH1 0x00
00003062: DUP1
00003063: REVERT
00003064: JUMPDEST
00003065: PUSH1 0x20
00003067: DUP4
00003068: ADD
00003069: SWAP2
0000306a: POP
0000306b: DUP4
0000306c: PUSH1 0x20
0000306e: DUP3
0000306f: PUSH1 0x05
00003071: SHL
00003072: DUP6
00003073: ADD
00003074: ADD
00003075: GT
00003076: ISZERO
00003077: PUSH2 0x1741
0000307a: JUMPI
0000307b: PUSH1 0x00
0000307d: DUP1
0000307e: REVERT
0000307f: JUMPDEST
00003080: PUSH1 0x00
00003082: DUP1
00003083: PUSH1 0x20
00003085: DUP4
00003086: DUP6
00003087: SUB
00003088: SLT
00003089: ISZERO
0000308a: PUSH2 0x3092
0000308d: JUMPI
0000308e: PUSH1 0x00
00003090: DUP1
00003091: REVERT
00003092: JUMPDEST
00003093: DUP3
00003094: CALLDATALOAD
00003095: PUSH8 0xffffffffffffffff
0000309e: DUP2
0000309f: GT
000030a0: ISZERO
000030a1: PUSH2 0x30a9
000030a4: JUMPI
000030a5: PUSH1 0x00
000030a7: DUP1
000030a8: REVERT
000030a9: JUMPDEST
000030aa: PUSH2 0x30b5
000030ad: DUP6
000030ae: DUP3
000030af: DUP7
000030b0: ADD
000030b1: PUSH2 0x303a
000030b4: JUMP
000030b5: JUMPDEST
000030b6: SWAP1
000030b7: SWAP7
000030b8: SWAP1
000030b9: SWAP6
000030ba: POP
000030bb: SWAP4
000030bc: POP
000030bd: POP
000030be: POP
000030bf: POP
000030c0: JUMP
000030c1: JUMPDEST
000030c2: PUSH1 0x00
000030c4: DUP1
000030c5: PUSH1 0x00
000030c7: PUSH1 0x60
000030c9: DUP5
000030ca: DUP7
000030cb: SUB
000030cc: SLT
000030cd: ISZERO
000030ce: PUSH2 0x30d6
000030d1: JUMPI
000030d2: PUSH1 0x00
000030d4: DUP1
000030d5: REVERT
000030d6: JUMPDEST
000030d7: PUSH2 0x30df
000030da: DUP5
000030db: PUSH2 0x2db7
000030de: JUMP
000030df: JUMPDEST
000030e0: SWAP6
000030e1: PUSH1 0x20
000030e3: DUP6
000030e4: ADD
000030e5: CALLDATALOAD
000030e6: SWAP6
000030e7: POP
000030e8: PUSH1 0x40
000030ea: SWAP1
000030eb: SWAP5
000030ec: ADD
000030ed: CALLDATALOAD
000030ee: SWAP4
000030ef: SWAP3
000030f0: POP
000030f1: POP
000030f2: POP
000030f3: JUMP
000030f4: JUMPDEST
000030f5: PUSH1 0x20
000030f7: DUP1
000030f8: DUP3
000030f9: MSTORE
000030fa: DUP3
000030fb: MLOAD
000030fc: DUP3
000030fd: DUP3
000030fe: ADD
000030ff: DUP2
00003100: SWAP1
00003101: MSTORE
00003102: PUSH1 0x00
00003104: SWAP2
00003105: SWAP1
00003106: PUSH1 0x40
00003108: SWAP1
00003109: DUP2
0000310a: DUP6
0000310b: ADD
0000310c: SWAP1
0000310d: DUP7
0000310e: DUP5
0000310f: ADD
00003110: DUP6
00003111: JUMPDEST
00003112: DUP3
00003113: DUP2
00003114: LT
00003115: ISZERO
00003116: PUSH2 0x314c
00003119: JUMPI
0000311a: DUP2
0000311b: MLOAD
0000311c: DUP1
0000311d: MLOAD
0000311e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003133: AND
00003134: DUP6
00003135: MSTORE
00003136: DUP7
00003137: ADD
00003138: MLOAD
00003139: DUP7
0000313a: DUP6
0000313b: ADD
0000313c: MSTORE
0000313d: SWAP3
0000313e: DUP5
0000313f: ADD
00003140: SWAP3
00003141: SWAP1
00003142: DUP6
00003143: ADD
00003144: SWAP1
00003145: PUSH1 0x01
00003147: ADD
00003148: PUSH2 0x3111
0000314b: JUMP
0000314c: JUMPDEST
0000314d: POP
0000314e: SWAP2
0000314f: SWAP8
00003150: SWAP7
00003151: POP
00003152: POP
00003153: POP
00003154: POP
00003155: POP
00003156: POP
00003157: POP
00003158: JUMP
00003159: JUMPDEST
0000315a: PUSH1 0x00
0000315c: JUMPDEST
0000315d: DUP4
0000315e: DUP2
0000315f: LT
00003160: ISZERO
00003161: PUSH2 0x3174
00003164: JUMPI
00003165: DUP2
00003166: DUP2
00003167: ADD
00003168: MLOAD
00003169: DUP4
0000316a: DUP3
0000316b: ADD
0000316c: MSTORE
0000316d: PUSH1 0x20
0000316f: ADD
00003170: PUSH2 0x315c
00003173: JUMP
00003174: JUMPDEST
00003175: POP
00003176: POP
00003177: PUSH1 0x00
00003179: SWAP2
0000317a: ADD
0000317b: MSTORE
0000317c: JUMP
0000317d: JUMPDEST
0000317e: PUSH1 0x00
00003180: DUP2
00003181: MLOAD
00003182: DUP1
00003183: DUP5
00003184: MSTORE
00003185: PUSH2 0x3195
00003188: DUP2
00003189: PUSH1 0x20
0000318b: DUP7
0000318c: ADD
0000318d: PUSH1 0x20
0000318f: DUP7
00003190: ADD
00003191: PUSH2 0x3159
00003194: JUMP
00003195: JUMPDEST
00003196: PUSH1 0x1f
00003198: ADD
00003199: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000031ba: AND
000031bb: SWAP3
000031bc: SWAP1
000031bd: SWAP3
000031be: ADD
000031bf: PUSH1 0x20
000031c1: ADD
000031c2: SWAP3
000031c3: SWAP2
000031c4: POP
000031c5: POP
000031c6: JUMP
000031c7: JUMPDEST
000031c8: PUSH1 0x20
000031ca: DUP2
000031cb: MSTORE
000031cc: PUSH1 0x00
000031ce: PUSH2 0x16b6
000031d1: PUSH1 0x20
000031d3: DUP4
000031d4: ADD
000031d5: DUP5
000031d6: PUSH2 0x317d
000031d9: JUMP
000031da: JUMPDEST
000031db: PUSH1 0x00
000031dd: DUP1
000031de: PUSH1 0x20
000031e0: DUP4
000031e1: DUP6
000031e2: SUB
000031e3: SLT
000031e4: ISZERO
000031e5: PUSH2 0x31ed
000031e8: JUMPI
000031e9: PUSH1 0x00
000031eb: DUP1
000031ec: REVERT
000031ed: JUMPDEST
000031ee: DUP3
000031ef: CALLDATALOAD
000031f0: PUSH8 0xffffffffffffffff
000031f9: DUP1
000031fa: DUP3
000031fb: GT
000031fc: ISZERO
000031fd: PUSH2 0x3205
00003200: JUMPI
00003201: PUSH1 0x00
00003203: DUP1
00003204: REVERT
00003205: JUMPDEST
00003206: DUP2
00003207: DUP6
00003208: ADD
00003209: SWAP2
0000320a: POP
0000320b: DUP6
0000320c: PUSH1 0x1f
0000320e: DUP4
0000320f: ADD
00003210: SLT
00003211: PUSH2 0x3219
00003214: JUMPI
00003215: PUSH1 0x00
00003217: DUP1
00003218: REVERT
00003219: JUMPDEST
0000321a: DUP2
0000321b: CALLDATALOAD
0000321c: DUP2
0000321d: DUP2
0000321e: GT
0000321f: ISZERO
00003220: PUSH2 0x3228
00003223: JUMPI
00003224: PUSH1 0x00
00003226: DUP1
00003227: REVERT
00003228: JUMPDEST
00003229: DUP7
0000322a: PUSH1 0x20
0000322c: DUP3
0000322d: PUSH1 0x06
0000322f: SHL
00003230: DUP6
00003231: ADD
00003232: ADD
00003233: GT
00003234: ISZERO
00003235: PUSH2 0x323d
00003238: JUMPI
00003239: PUSH1 0x00
0000323b: DUP1
0000323c: REVERT
0000323d: JUMPDEST
0000323e: PUSH1 0x20
00003240: SWAP3
00003241: SWAP1
00003242: SWAP3
00003243: ADD
00003244: SWAP7
00003245: SWAP2
00003246: SWAP6
00003247: POP
00003248: SWAP1
00003249: SWAP4
0000324a: POP
0000324b: POP
0000324c: POP
0000324d: POP
0000324e: JUMP
0000324f: JUMPDEST
00003250: PUSH1 0x00
00003252: DUP1
00003253: PUSH1 0x00
00003255: PUSH1 0x60
00003257: DUP5
00003258: DUP7
00003259: SUB
0000325a: SLT
0000325b: ISZERO
0000325c: PUSH2 0x3264
0000325f: JUMPI
00003260: PUSH1 0x00
00003262: DUP1
00003263: REVERT
00003264: JUMPDEST
00003265: DUP4
00003266: CALLDATALOAD
00003267: PUSH2 0x326f
0000326a: DUP2
0000326b: PUSH2 0x2d78
0000326e: JUMP
0000326f: JUMPDEST
00003270: SWAP3
00003271: POP
00003272: PUSH1 0x20
00003274: DUP5
00003275: ADD
00003276: CALLDATALOAD
00003277: PUSH2 0x327f
0000327a: DUP2
0000327b: PUSH2 0x2d78
0000327e: JUMP
0000327f: JUMPDEST
00003280: SWAP2
00003281: POP
00003282: PUSH1 0x40
00003284: DUP5
00003285: ADD
00003286: CALLDATALOAD
00003287: PUSH2 0x302f
0000328a: DUP2
0000328b: PUSH2 0x2d78
0000328e: JUMP
0000328f: JUMPDEST
00003290: PUSH1 0x00
00003292: DUP1
00003293: PUSH1 0x00
00003295: DUP1
00003296: PUSH1 0x40
00003298: DUP6
00003299: DUP8
0000329a: SUB
0000329b: SLT
0000329c: ISZERO
0000329d: PUSH2 0x32a5
000032a0: JUMPI
000032a1: PUSH1 0x00
000032a3: DUP1
000032a4: REVERT
000032a5: JUMPDEST
000032a6: DUP5
000032a7: CALLDATALOAD
000032a8: PUSH8 0xffffffffffffffff
000032b1: DUP1
000032b2: DUP3
000032b3: GT
000032b4: ISZERO
000032b5: PUSH2 0x32bd
000032b8: JUMPI
000032b9: PUSH1 0x00
000032bb: DUP1
000032bc: REVERT
000032bd: JUMPDEST
000032be: PUSH2 0x32c9
000032c1: DUP9
000032c2: DUP4
000032c3: DUP10
000032c4: ADD
000032c5: PUSH2 0x303a
000032c8: JUMP
000032c9: JUMPDEST
000032ca: SWAP1
000032cb: SWAP7
000032cc: POP
000032cd: SWAP5
000032ce: POP
000032cf: PUSH1 0x20
000032d1: DUP8
000032d2: ADD
000032d3: CALLDATALOAD
000032d4: SWAP2
000032d5: POP
000032d6: DUP1
000032d7: DUP3
000032d8: GT
000032d9: ISZERO
000032da: PUSH2 0x32e2
000032dd: JUMPI
000032de: PUSH1 0x00
000032e0: DUP1
000032e1: REVERT
000032e2: JUMPDEST
000032e3: POP
000032e4: PUSH2 0x2fee
000032e7: DUP8
000032e8: DUP3
000032e9: DUP9
000032ea: ADD
000032eb: PUSH2 0x303a
000032ee: JUMP
000032ef: JUMPDEST
000032f0: PUSH1 0x00
000032f2: DUP1
000032f3: PUSH1 0x40
000032f5: DUP4
000032f6: DUP6
000032f7: SUB
000032f8: SLT
000032f9: ISZERO
000032fa: PUSH2 0x3302
000032fd: JUMPI
000032fe: PUSH1 0x00
00003300: DUP1
00003301: REVERT
00003302: JUMPDEST
00003303: DUP3
00003304: CALLDATALOAD
00003305: PUSH2 0x2ec9
00003308: DUP2
00003309: PUSH2 0x2d78
0000330c: JUMP
0000330d: JUMPDEST
0000330e: PUSH1 0x00
00003310: PUSH1 0x20
00003312: DUP3
00003313: DUP5
00003314: SUB
00003315: SLT
00003316: ISZERO
00003317: PUSH2 0x331f
0000331a: JUMPI
0000331b: PUSH1 0x00
0000331d: DUP1
0000331e: REVERT
0000331f: JUMPDEST
00003320: POP
00003321: MLOAD
00003322: SWAP2
00003323: SWAP1
00003324: POP
00003325: JUMP
00003326: JUMPDEST
00003327: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00003348: PUSH1 0x00
0000334a: MSTORE
0000334b: PUSH1 0x32
0000334d: PUSH1 0x04
0000334f: MSTORE
00003350: PUSH1 0x24
00003352: PUSH1 0x00
00003354: REVERT
00003355: JUMPDEST
00003356: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00003377: PUSH1 0x00
00003379: MSTORE
0000337a: PUSH1 0x11
0000337c: PUSH1 0x04
0000337e: MSTORE
0000337f: PUSH1 0x24
00003381: PUSH1 0x00
00003383: REVERT
00003384: JUMPDEST
00003385: DUP1
00003386: DUP3
00003387: ADD
00003388: DUP1
00003389: DUP3
0000338a: GT
0000338b: ISZERO
0000338c: PUSH2 0x09f3
0000338f: JUMPI
00003390: PUSH2 0x09f3
00003393: PUSH2 0x3355
00003396: JUMP
00003397: JUMPDEST
00003398: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000033b9: PUSH1 0x00
000033bb: MSTORE
000033bc: PUSH1 0x41
000033be: PUSH1 0x04
000033c0: MSTORE
000033c1: PUSH1 0x24
000033c3: PUSH1 0x00
000033c5: REVERT
000033c6: JUMPDEST
000033c7: PUSH32 0x4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a2000
000033e8: DUP2
000033e9: MSTORE
000033ea: PUSH1 0x00
000033ec: DUP3
000033ed: MLOAD
000033ee: PUSH2 0x33fe
000033f1: DUP2
000033f2: PUSH1 0x1f
000033f4: DUP6
000033f5: ADD
000033f6: PUSH1 0x20
000033f8: DUP8
000033f9: ADD
000033fa: PUSH2 0x3159
000033fd: JUMP
000033fe: JUMPDEST
000033ff: SWAP2
00003400: SWAP1
00003401: SWAP2
00003402: ADD
00003403: PUSH1 0x1f
00003405: ADD
00003406: SWAP3
00003407: SWAP2
00003408: POP
00003409: POP
0000340a: JUMP
0000340b: JUMPDEST
0000340c: DUP2
0000340d: DUP2
0000340e: SUB
0000340f: DUP2
00003410: DUP2
00003411: GT
00003412: ISZERO
00003413: PUSH2 0x09f3
00003416: JUMPI
00003417: PUSH2 0x09f3
0000341a: PUSH2 0x3355
0000341d: JUMP
0000341e: JUMPDEST
0000341f: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00003440: PUSH1 0x00
00003442: MSTORE
00003443: PUSH1 0x31
00003445: PUSH1 0x04
00003447: MSTORE
00003448: PUSH1 0x24
0000344a: PUSH1 0x00
0000344c: REVERT
0000344d: JUMPDEST
0000344e: DUP1
0000344f: DUP3
00003450: MUL
00003451: DUP2
00003452: ISZERO
00003453: DUP3
00003454: DUP3
00003455: DIV
00003456: DUP5
00003457: EQ
00003458: OR
00003459: PUSH2 0x09f3
0000345c: JUMPI
0000345d: PUSH2 0x09f3
00003460: PUSH2 0x3355
00003463: JUMP
00003464: JUMPDEST
00003465: DUP4
00003466: DUP2
00003467: MSTORE
00003468: DUP3
00003469: PUSH1 0x20
0000346b: DUP3
0000346c: ADD
0000346d: MSTORE
0000346e: PUSH1 0x00
00003470: DUP3
00003471: MLOAD
00003472: PUSH2 0x3482
00003475: DUP2
00003476: PUSH1 0x40
00003478: DUP6
00003479: ADD
0000347a: PUSH1 0x20
0000347c: DUP8
0000347d: ADD
0000347e: PUSH2 0x3159
00003481: JUMP
00003482: JUMPDEST
00003483: SWAP2
00003484: SWAP1
00003485: SWAP2
00003486: ADD
00003487: PUSH1 0x40
00003489: ADD
0000348a: SWAP5
0000348b: SWAP4
0000348c: POP
0000348d: POP
0000348e: POP
0000348f: POP
00003490: JUMP
00003491: JUMPDEST
00003492: PUSH4 0xffffffff
00003497: DUP7
00003498: AND
00003499: DUP2
0000349a: MSTORE
0000349b: DUP5
0000349c: PUSH1 0x20
0000349e: DUP3
0000349f: ADD
000034a0: MSTORE
000034a1: PUSH1 0xa0
000034a3: PUSH1 0x40
000034a5: DUP3
000034a6: ADD
000034a7: MSTORE
000034a8: PUSH1 0x00
000034aa: PUSH2 0x34b6
000034ad: PUSH1 0xa0
000034af: DUP4
000034b0: ADD
000034b1: DUP7
000034b2: PUSH2 0x317d
000034b5: JUMP
000034b6: JUMPDEST
000034b7: DUP3
000034b8: DUP2
000034b9: SUB
000034ba: PUSH1 0x60
000034bc: DUP5
000034bd: ADD
000034be: MSTORE
000034bf: PUSH2 0x34c8
000034c2: DUP2
000034c3: DUP7
000034c4: PUSH2 0x317d
000034c7: JUMP
000034c8: JUMPDEST
000034c9: SWAP2
000034ca: POP
000034cb: POP
000034cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000034e1: DUP4
000034e2: AND
000034e3: PUSH1 0x80
000034e5: DUP4
000034e6: ADD
000034e7: MSTORE
000034e8: SWAP7
000034e9: SWAP6
000034ea: POP
000034eb: POP
000034ec: POP
000034ed: POP
000034ee: POP
000034ef: POP
000034f0: JUMP
000034f1: JUMPDEST
000034f2: PUSH1 0xff
000034f4: DUP2
000034f5: DUP2
000034f6: AND
000034f7: DUP4
000034f8: DUP3
000034f9: AND
000034fa: ADD
000034fb: SWAP1
000034fc: DUP2
000034fd: GT
000034fe: ISZERO
000034ff: PUSH2 0x09f3
00003502: JUMPI
00003503: PUSH2 0x09f3
00003506: PUSH2 0x3355
00003509: JUMP
0000350a: JUMPDEST
0000350b: PUSH1 0x00
0000350d: DUP1
0000350e: DUP6
0000350f: DUP6
00003510: GT
00003511: ISZERO
00003512: PUSH2 0x351a
00003515: JUMPI
00003516: PUSH1 0x00
00003518: DUP1
00003519: REVERT
0000351a: JUMPDEST
0000351b: DUP4
0000351c: DUP7
0000351d: GT
0000351e: ISZERO
0000351f: PUSH2 0x3527
00003522: JUMPI
00003523: PUSH1 0x00
00003525: DUP1
00003526: REVERT
00003527: JUMPDEST
00003528: POP
00003529: POP
0000352a: DUP3
0000352b: ADD
0000352c: SWAP4
0000352d: SWAP2
0000352e: SWAP1
0000352f: SWAP3
00003530: SUB
00003531: SWAP2
00003532: POP
00003533: JUMP
00003534: JUMPDEST
00003535: DUP1
00003536: CALLDATALOAD
00003537: PUSH1 0x20
00003539: DUP4
0000353a: LT
0000353b: ISZERO
0000353c: PUSH2 0x09f3
0000353f: JUMPI
00003540: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00003561: PUSH1 0x20
00003563: DUP5
00003564: SWAP1
00003565: SUB
00003566: PUSH1 0x03
00003568: SHL
00003569: SHL
0000356a: AND
0000356b: SWAP3
0000356c: SWAP2
0000356d: POP
0000356e: POP
0000356f: JUMP
00003570: JUMPDEST
00003571: PUSH1 0x00
00003573: DUP3
00003574: PUSH2 0x35a6
00003577: JUMPI
00003578: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00003599: PUSH1 0x00
0000359b: MSTORE
0000359c: PUSH1 0x12
0000359e: PUSH1 0x04
000035a0: MSTORE
000035a1: PUSH1 0x24
000035a3: PUSH1 0x00
000035a5: REVERT
000035a6: JUMPDEST
000035a7: POP
000035a8: DIV
000035a9: SWAP1
000035aa: JUMP
000035ab: JUMPDEST
000035ac: PUSH1 0x00
000035ae: PUSH1 0x20
000035b0: DUP3
000035b1: DUP5
000035b2: SUB
000035b3: SLT
000035b4: ISZERO
000035b5: PUSH2 0x35bd
000035b8: JUMPI
000035b9: PUSH1 0x00
000035bb: DUP1
000035bc: REVERT
000035bd: JUMPDEST
000035be: DUP2
000035bf: MLOAD
000035c0: DUP1
000035c1: ISZERO
000035c2: ISZERO
000035c3: DUP2
000035c4: EQ
000035c5: PUSH2 0x16b6
000035c8: JUMPI
000035c9: PUSH1 0x00
000035cb: DUP1
000035cc: REVERT
000035cd: JUMPDEST
000035ce: PUSH32 0xffff000000000000000000000000000000000000000000000000000000000000
000035ef: DUP7
000035f0: PUSH1 0xf0
000035f2: SHL
000035f3: AND
000035f4: DUP2
000035f5: MSTORE
000035f6: DUP5
000035f7: PUSH1 0x02
000035f9: DUP3
000035fa: ADD
000035fb: MSTORE
000035fc: DUP4
000035fd: PUSH1 0x22
000035ff: DUP3
00003600: ADD
00003601: MSTORE
00003602: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
00003623: DUP4
00003624: PUSH1 0x60
00003626: SHL
00003627: AND
00003628: PUSH1 0x42
0000362a: DUP3
0000362b: ADD
0000362c: MSTORE
0000362d: PUSH1 0x00
0000362f: DUP3
00003630: MLOAD
00003631: PUSH2 0x3641
00003634: DUP2
00003635: PUSH1 0x56
00003637: DUP6
00003638: ADD
00003639: PUSH1 0x20
0000363b: DUP8
0000363c: ADD
0000363d: PUSH2 0x3159
00003640: JUMP
00003641: JUMPDEST
00003642: SWAP2
00003643: SWAP1
00003644: SWAP2
00003645: ADD
00003646: PUSH1 0x56
00003648: ADD
00003649: SWAP7
0000364a: SWAP6
0000364b: POP
0000364c: POP
0000364d: POP
0000364e: POP
0000364f: POP
00003650: POP
00003651: JUMP
00003652: JUMPDEST
00003653: PUSH1 0x00
00003655: DUP3
00003656: MLOAD
00003657: PUSH2 0x3664
0000365a: DUP2
0000365b: DUP5
0000365c: PUSH1 0x20
0000365e: DUP8
0000365f: ADD
00003660: PUSH2 0x3159
00003663: JUMP
00003664: JUMPDEST
00003665: SWAP2
00003666: SWAP1
00003667: SWAP2
00003668: ADD
00003669: SWAP3
0000366a: SWAP2
0000366b: POP
0000366c: POP
0000366d: JUMP
0000366e: INVALID
0000366f: LOG2
00003670: PUSH5 0x6970667358
00003676: UNKNOWN(0x22)
00003677: SLT
00003678: KECCAK256
00003679: PUSH20 0x57756c68e918a3fa13fb415ad67e3812ae810d16
0000368e: DUP14
0000368f: UNKNOWN(0xBA)
00003690: PUSH5 0x1a6c546d14
00003696: PUSH13 0x556564736f6c63430008160033

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high upgradeability codex Unprotected initializer enables ownership takeover on uninitialized deployments 85 no
view
evidence_json
{
    "evidence": "`initialize` is a public `initializer` that calls `_MailboxClient_initialize`, which initializes ownership and critical settings, but the constructor does not disable initializers.",
    "locations": [
        "contracts/contracts/token/HypERC20Collateral.sol:53",
        "contracts/contracts/client/MailboxClient.sol:109"
    ],
    "recommendation": "Lock the implementation by calling `_disableInitializers()` in the constructor and ensure proxies are initialized at deployment. If this contract is meant to be used directly (non-proxy), either call `_MailboxClient_initialize` during construction and remove the external initializer, or restrict initialization to an authorized deployer flow.",
    "exploit_scenario": "If the deployer does not call `initialize` in the deployment transaction, any external account can call `initialize`, set themselves as `_owner`, and then add themselves as rebalancer/bridge to move all collateral via `rebalance` using a malicious bridge implementation."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x54ebb3b7eb9798d9e25d4d31bd1a7021d3de93a8367a667fc7daee79ae18a86f
call_targets: 0xd928d07d9c2629ecd3f3b81685b27bd50383f028
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x54ebb3b7eb9798d9e25d4d31bd1a7021d3de93a8367a667fc7daee79ae18a86f",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xd928d07d9c2629ecd3f3b81685b27bd50383f028"
    ],
    "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": "0xf51e181a",
            "selector": "0xf51e181a",
            "calldata_variants": [
                "0xf51e181a",
                "0xf51e181a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa57f157",
            "selector": "0xfa57f157",
            "calldata_variants": [
                "0xfa57f157",
                "0xfa57f1570000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfbaca44c",
            "selector": "0xfbaca44c",
            "calldata_variants": [
                "0xfbaca44c",
                "0xfbaca44c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2ed8c53",
            "selector": "0xf2ed8c53",
            "calldata_variants": [
                "0xf2ed8c53",
                "0xf2ed8c530000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xde523cf3",
            "selector": "0xde523cf3",
            "calldata_variants": [
                "0xde523cf3",
                "0xde523cf30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9198bf9",
            "selector": "0xe9198bf9",
            "calldata_variants": [
                "0xe9198bf9",
                "0xe9198bf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xefae508a",
            "selector": "0xefae508a",
            "calldata_variants": [
                "0xefae508a",
                "0xefae508a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 8635,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 9152,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 11335,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [
        {
            "pc": 3132,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 3
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x54ebb3b7eb9798d9e25d4d31bd1a7021d3de93a8367a667fc7daee79ae18a86f
call_targets: 0xd928d07d9c2629ecd3f3b81685b27bd50383f028
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x54ebb3b7eb9798d9e25d4d31bd1a7021d3de93a8367a667fc7daee79ae18a86f",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xd928d07d9c2629ecd3f3b81685b27bd50383f028"
    ],
    "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": "0xf51e181a",
            "selector": "0xf51e181a",
            "calldata_variants": [
                "0xf51e181a",
                "0xf51e181a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa57f157",
            "selector": "0xfa57f157",
            "calldata_variants": [
                "0xfa57f157",
                "0xfa57f1570000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfbaca44c",
            "selector": "0xfbaca44c",
            "calldata_variants": [
                "0xfbaca44c",
                "0xfbaca44c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2ed8c53",
            "selector": "0xf2ed8c53",
            "calldata_variants": [
                "0xf2ed8c53",
                "0xf2ed8c530000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xde523cf3",
            "selector": "0xde523cf3",
            "calldata_variants": [
                "0xde523cf3",
                "0xde523cf30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9198bf9",
            "selector": "0xe9198bf9",
            "calldata_variants": [
                "0xe9198bf9",
                "0xe9198bf90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xefae508a",
            "selector": "0xefae508a",
            "calldata_variants": [
                "0xefae508a",
                "0xefae508a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 8635,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 9152,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 11335,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": [
        {
            "pc": 3132,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}