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

Analysis Run

478c78f6-b81e-47bf-86e8-3a178cfe290f

complete
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 2:39 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30310 report.consolidate complete 1 / 1 3 months ago
74044 artifact.fetch complete 1 / 3 1 week ago
74045 tool.cast_disasm complete 1 / 3 1 week ago
74046 analysis.bundle complete 1 / 3 1 week ago
74047 capability.graph complete 1 / 3 1 week ago
74048 detector.run complete 1 / 3 1 week ago
74049 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
2
No findings?
no
Summary
Found two auth-related issues: inbound messages lack replay protection, and plugs do not validate source chain/plug beyond trusting the bridge.
View stderr
[codex:1384433] OpenAI Codex v0.77.0 (research preview)
[codex:1384433] --------
[codex:1384433] workdir: /tmp/codex-multi-ay5ftir0
[codex:1384433] model: gpt-5.2-codex
[codex:1384433] provider: openai
[codex:1384433] approval: never
[codex:1384433] sandbox: read-only
[codex:1384433] reasoning effort: xhigh
[codex:1384433] reasoning summaries: auto
[codex:1384433] session id: 019b655f-488c-7623-836c-46076aaf9bdc
[codex:1384433] --------
[codex:1384433] user
[codex:1384433] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1384433] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1384433] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1384433] 
[codex:1384433] Scope rules:
[codex:1384433] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1384433] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1384433] 
[codex:1384433] Output MUST be valid JSON matching the provided schema.
[codex:1384433] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1384433] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1384433] 
[codex:1384433] Output constraints (IMPORTANT):
[codex:1384433] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1384433] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1384433] mcp startup: no servers
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Preparing to read security audit file**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc ls in /tmp/codex-multi-ay5ftir0 succeeded in 5ms:
[codex:1384433] AUDIT_BUNDLE.txt
[codex:1384433] codex-output-schema.json
[codex:1384433] contracts
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Reading AUDIT_BUNDLE.txt**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-ay5ftir0 succeeded in 6ms:
[codex:1384433] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1384433] 
[codex:1384433] ================================================================================
[codex:1384433] FILE: contracts/contracts/common/AccessControl.sol
[codex:1384433] ================================================================================
[codex:1384433] // SPDX-License-Identifier: GPL-3.0-only
[codex:1384433] pragma solidity 0.8.13;
[codex:1384433] 
[codex:1384433] import "./Ownable.sol";
[codex:1384433] 
[codex:1384433] /**
[codex:1384433]  * @title AccessControl
[codex:1384433]  * @dev This abstract contract implements access control mechanism based on roles.
[codex:1384433]  * Each role can have one or more addresses associated with it, which are granted
[codex:1384433]  * permission to execute functions with the onlyRole modifier.
[codex:1384433]  */
[codex:1384433] abstract contract AccessControl is Ownable {
[codex:1384433]     /**
[codex:1384433]      * @dev A mapping of roles to a mapping of addresses to boolean values indicating whether or not they have the role.
[codex:1384433]      */
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Handling large file reading**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc 'wc -l AUDIT_BUNDLE.txt' in /tmp/codex-multi-ay5ftir0 succeeded in 6ms:
[codex:1384433] 3601 AUDIT_BUNDLE.txt
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Planning sequential file reading**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '1,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 5ms:
[codex:1384433] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1384433] 
[codex:1384433] ================================================================================
[codex:1384433] FILE: contracts/contracts/common/AccessControl.sol
[codex:1384433] ================================================================================
[codex:1384433] // SPDX-License-Identifier: GPL-3.0-only
[codex:1384433] pragma solidity 0.8.13;
[codex:1384433] 
[codex:1384433] import "./Ownable.sol";
[codex:1384433] 
[codex:1384433] /**
[codex:1384433]  * @title AccessControl
[codex:1384433]  * @dev This abstract contract implements access control mechanism based on roles.
[codex:1384433]  * Each role can have one or more addresses associated with it, which are granted
[codex:1384433]  * permission to execute functions with the onlyRole modifier.
[codex:1384433]  */
[codex:1384433] abstract contract AccessControl is Ownable {
[codex:1384433]     /**
[codex:1384433]      * @dev A mapping of roles to a mapping of addresses to boolean values indicating whether or not they have the role.
[codex:1384433]      */
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Continuing analysis**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 6ms:
[codex:1384433]         address plug,
[codex:1384433]         uint32 siblingChainSlug,
[codex:1384433]         address siblingPlug,
[codex:1384433]         address inboundSwitchboard,
[codex:1384433]         address outboundSwitchboard,
[codex:1384433]         address capacitor,
[codex:1384433]         address decapacitor
[codex:1384433]     );
[codex:1384433] 
[codex:1384433]     /**
[codex:1384433]      * @notice registers a message
[codex:1384433]      * @dev Packs the message and includes it in a packet with capacitor
[codex:1384433]      * @param remoteChainSlug_ the remote chain slug
[codex:1384433]      * @param minMsgGasLimit_ the gas limit needed to execute the payload on remote
[codex:1384433]      * @param payload_ the data which is needed by plug at inbound call on remote
[codex:1384433]      */
[codex:1384433]     function outbound(
[codex:1384433]         uint32 remoteChainSlug_,
[codex:1384433]         uint256 minMsgGasLimit_,
[codex:1384433]         bytes32 executionParams_,
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '800,1200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 6ms:
[codex:1384433]      * @param amount_ The amount of tokens to be rescued.
[codex:1384433]      */
[codex:1384433]     function rescueFunds(
[codex:1384433]         address token_,
[codex:1384433]         address rescueTo_,
[codex:1384433]         uint256 amount_
[codex:1384433]     ) external onlyOwner {
[codex:1384433]         RescueFundsLib.rescueFunds(token_, rescueTo_, amount_);
[codex:1384433]     }
[codex:1384433] }
[codex:1384433] 
[codex:1384433] ================================================================================
[codex:1384433] FILE: contracts/contracts/superbridge/Controller.sol
[codex:1384433] ================================================================================
[codex:1384433] pragma solidity 0.8.13;
[codex:1384433] 
[codex:1384433] import {IExchangeRate} from "./ExchangeRate.sol";
[codex:1384433] import {Ownable} from "../common/Ownable.sol";
[codex:1384433] import {Gauge} from "../common/Gauge.sol";
[codex:1384433] import {IConnector, IHub} from "./ConnectorPlug.sol";
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Continuing process**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '1200,1600p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 5ms:
[codex:1384433] ================================================================================
[codex:1384433] FILE: contracts/contracts/superbridge/Vault.sol
[codex:1384433] ================================================================================
[codex:1384433] pragma solidity 0.8.13;
[codex:1384433] 
[codex:1384433] import "lib/solmate/src/utils/SafeTransferLib.sol";
[codex:1384433] import "../common/Ownable.sol";
[codex:1384433] import {Gauge} from "../common/Gauge.sol";
[codex:1384433] import {IConnector, IHub} from "./ConnectorPlug.sol";
[codex:1384433] import {RescueFundsLib} from "../libraries/RescueFundsLib.sol";
[codex:1384433] 
[codex:1384433] // @todo: separate our connecter plugs
[codex:1384433] contract Vault is Gauge, IHub, Ownable(msg.sender) {
[codex:1384433]     using SafeTransferLib for ERC20;
[codex:1384433]     ERC20 public immutable token__;
[codex:1384433] 
[codex:1384433]     struct UpdateLimitParams {
[codex:1384433]         bool isLock;
[codex:1384433]         address connector;
[codex:1384433]         uint256 maxLimit;
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Continuing exploration**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '1600,2000p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 6ms:
[codex:1384433]         bridge__ = IMessageBridge(bridge_);
[codex:1384433]         emit MessageBridgeUpdated(bridge_);
[codex:1384433]     }
[codex:1384433] 
[codex:1384433]     /**
[codex:1384433]      * @notice this function is used to set bridge limits
[codex:1384433]      * @dev it can only be updated by owner
[codex:1384433]      * @param updates_ can be used to set mint and burn limits for all siblings in one call.
[codex:1384433]      */
[codex:1384433]     function updateLimitParams(
[codex:1384433]         UpdateLimitParams[] calldata updates_
[codex:1384433]     ) external onlyRole(LIMIT_UPDATER_ROLE) {
[codex:1384433]         for (uint256 i; i < updates_.length; i++) {
[codex:1384433]             if (updates_[i].isMint) {
[codex:1384433]                 _consumePartLimit(
[codex:1384433]                     0,
[codex:1384433]                     _receivingLimitParams[updates_[i].siblingChainSlug]
[codex:1384433]                 ); // to keep current limit in sync
[codex:1384433]                 _receivingLimitParams[updates_[i].siblingChainSlug]
[codex:1384433]                     .maxLimit = updates_[i].maxLimit;
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Continuing process**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '2000,2400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 5ms:
[codex:1384433]         bytes32 identifier_
[codex:1384433]     ) external nonReentrant {
[codex:1384433]         if (_unlockLimitParams[siblingChainSlug_].maxLimit == 0)
[codex:1384433]             revert SiblingChainSlugUnavailable();
[codex:1384433] 
[codex:1384433]         uint256 pendingUnlock = pendingUnlocks[siblingChainSlug_][receiver_][
[codex:1384433]             identifier_
[codex:1384433]         ];
[codex:1384433]         (uint256 consumedAmount, uint256 pendingAmount) = _consumePartLimit(
[codex:1384433]             pendingUnlock,
[codex:1384433]             _unlockLimitParams[siblingChainSlug_]
[codex:1384433]         );
[codex:1384433] 
[codex:1384433]         pendingUnlocks[siblingChainSlug_][receiver_][
[codex:1384433]             identifier_
[codex:1384433]         ] = pendingAmount;
[codex:1384433]         siblingPendingUnlocks[siblingChainSlug_] -= consumedAmount;
[codex:1384433] 
[codex:1384433]         token__.safeTransfer(receiver_, consumedAmount);
[codex:1384433] 
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Continuing processing**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '2400,2800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 5ms:
[codex:1384433]                 _cachePayload(
[codex:1384433]                     identifier,
[codex:1384433]                     true,
[codex:1384433]                     siblingChainSlug_,
[codex:1384433]                     receiver,
[codex:1384433]                     execPayload
[codex:1384433]                 );
[codex:1384433] 
[codex:1384433]             emit TokensPending(
[codex:1384433]                 siblingChainSlug_,
[codex:1384433]                 receiver,
[codex:1384433]                 pendingAmount,
[codex:1384433]                 pendingUnlocks[siblingChainSlug_][receiver][identifier],
[codex:1384433]                 identifier
[codex:1384433]             );
[codex:1384433]         } else if (execPayload.length > 0) {
[codex:1384433]             // execute
[codex:1384433]             bool success = executionHelper__.execute(receiver, execPayload);
[codex:1384433] 
[codex:1384433]             if (!success)
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Proceeding with continuation**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '2800,3200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 5ms:
[codex:1384433]         );
[codex:1384433]     }
[codex:1384433] 
[codex:1384433]     function getCurrentReceivingLimit(
[codex:1384433]         uint32 siblingChainSlug_
[codex:1384433]     ) external view returns (uint256) {
[codex:1384433]         return _getCurrentLimit(_receivingLimitParams[siblingChainSlug_]);
[codex:1384433]     }
[codex:1384433] 
[codex:1384433]     function getCurrentSendingLimit(
[codex:1384433]         uint32 siblingChainSlug_
[codex:1384433]     ) external view returns (uint256) {
[codex:1384433]         return _getCurrentLimit(_sendingLimitParams[siblingChainSlug_]);
[codex:1384433]     }
[codex:1384433] 
[codex:1384433]     function getReceivingLimitParams(
[codex:1384433]         uint32 siblingChainSlug_
[codex:1384433]     ) external view returns (LimitParams memory) {
[codex:1384433]         return _receivingLimitParams[siblingChainSlug_];
[codex:1384433]     }
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Continuing process**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc "sed -n '3200,3601p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-ay5ftir0 succeeded in 5ms:
[codex:1384433]             outboundSwitchboard
[codex:1384433]         );
[codex:1384433] 
[codex:1384433]         emit SocketPlugDisconnected(siblingChainSlug_);
[codex:1384433]     }
[codex:1384433] 
[codex:1384433]     /**
[codex:1384433]      * @notice this function is used to calculate message id before sending outbound().
[codex:1384433]      * @param siblingChainSlug_ The unique identifier of the sibling chain.
[codex:1384433]      * @return message id
[codex:1384433]      */
[codex:1384433]     function getMessageId(
[codex:1384433]         uint32 siblingChainSlug_
[codex:1384433]     ) public view returns (bytes32) {
[codex:1384433]         return
[codex:1384433]             bytes32(
[codex:1384433]                 (uint256(chainSlug) << 224) |
[codex:1384433]                     (uint256(uint160(siblingPlugs[siblingChainSlug_])) << 64) |
[codex:1384433]                     (ISocket(socket__).globalMessageCount())
[codex:1384433]             );
[codex:1384433] 
[codex:1384433] 
[codex:1384433] 
[codex:1384433] 
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Performing detailed security audit**
[codex:1384433] 
[codex:1384433] I’m carefully analyzing key contract interactions, focusing on reentrancy, access control, and accounting correctness. I’m reviewing how external calls and state updates are ordered, role-based permissions work, and checking for potential misuse of message IDs, mint limits, and reentrancy guards in systems like SuperToken, Controller, and Vault. Some patterns seem safe by design, though there are nuances around external calls and permission assumptions worth noting.
[codex:1384433] thinking
[codex:1384433] **Analyzing replay risks and external call patterns**
[codex:1384433] 
[codex:1384433] I’m exploring the lack of on-chain replay protection in inbound message handling, which relies heavily on the external message bridge to avoid duplicates. This could allow repeated token minting or unlocking if the bridge is compromised or misconfigured. I’m also examining external call returns, delegatecall usage, and subtle race or reentrancy scenarios in bridging and execution helper functions to understand if there are any unsafe practices or possible exploit paths.
[codex:1384433] thinking
[codex:1384433] **Examining reentrancy and message ID consistency**
[codex:1384433] 
[codex:1384433] I’m looking into reentrancy risks around token transfers in Vault and Controller, checking if state updates before external calls keep things safe. I’m also reviewing message ID computation and sync between plugs and socket, spotting potential denial-of-service if mappings go out of sync or configurations mismatch. Finally, I’m considering missing checks on chain slug validation in inbound calls that could allow misrouted messages if the bridge is compromised.
[codex:1384433] thinking
[codex:1384433] **Analyzing payload execution and replay risks**
[codex:1384433] 
[codex:1384433] I'm reviewing the interplay of inbound calls and execution payloads, focusing on missing replay protection and potential payload overwrites via reused identifiers. I’m also considering the impact of token and connector permissions, the trust placed on external message bridges for source validation, and subtle risks if owners misconfigure key contract addresses, which might lead to unexpected behavior or stalled bridging.
[codex:1384433] thinking
[codex:1384433] **Highlighting replay and external call risks**
[codex:1384433] 
[codex:1384433] I'm focused on missing replay protection across inbound functions and how unguarded external calls—like forwarding all gas in ExecutionHelper or calling unverified contracts—could affect execution. These gaps rely heavily on external message bridge integrity and careful contract integration, which I'll flag as notable security considerations.
[codex:1384433] exec
[codex:1384433] /bin/bash -lc 'rg -n "function inbound" contracts/contracts/supertoken' in /tmp/codex-multi-ay5ftir0 succeeded in 11ms:
[codex:1384433] contracts/contracts/supertoken/SuperTokenVault.sol:236:    function inbound(
[codex:1384433] contracts/contracts/supertoken/SuperToken.sol:244:    function inbound(
[codex:1384433] contracts/contracts/supertoken/interfaces/ISuperTokenOrVault.sol:15:    function inbound(
[codex:1384433] contracts/contracts/supertoken/SuperTokenVaultWithExecutionPayload.sol:259:    function inbound(
[codex:1384433] contracts/contracts/supertoken/SuperTokenWithExecutionPayload.sol:267:    function inbound(
[codex:1384433] contracts/contracts/supertoken/plugs/SocketPlug.sol:95:    function inbound(
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Checking line numbers for inbound handling**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc 'rg -n "receiveInbound" contracts/contracts' in /tmp/codex-multi-ay5ftir0 succeeded in 9ms:
[codex:1384433] contracts/contracts/superbridge/Vault.sol:157:    function receiveInbound(bytes memory payload_) external override {
[codex:1384433] contracts/contracts/superbridge/ConnectorPlug.sol:9:    function receiveInbound(bytes memory payload_) external;
[codex:1384433] contracts/contracts/superbridge/ConnectorPlug.sol:65:        hub__.receiveInbound(payload_);
[codex:1384433] contracts/contracts/superbridge/Controller.sol:198:    function receiveInbound(bytes memory payload_) external override {
[codex:1384433] 
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Summarizing replay protection and validation issues**
[codex:1384433] 
[codex:1384433] I’m gathering detailed findings about missing replay protection in inbound message handlers across several contracts, focusing on how messages can be replayed to mint or unlock tokens multiple times. I’m also looking at how ConnectorPlug and SocketPlug fail to validate chain slugs or sibling plugs, which could allow unauthorized messages if the socket is compromised. I plan to document the relevant contract files and line numbers, categorize the severity mainly as medium, and create precise JSON-formatted findings with evidence and recommendations.
[codex:1384433] thinking
[codex:1384433] **Assessing low-severity chain slug validation issue**
[codex:1384433] exec
[codex:1384433] /bin/bash -lc 'rg -n "function inbound" contracts/contracts/superbridge/ConnectorPlug.sol' in /tmp/codex-multi-ay5ftir0 succeeded in 7ms:
[codex:1384433] 60:    function inbound(
[codex:1384433] 
[codex:1384433] thinking
[codex:1384433] **Summarizing security findings and crafting JSON**
[codex:1384433] 
[codex:1384433] I’m consolidating two main issues: lack of replay protection causing potential double mints, and inbound plugs not validating message source chains properly. I’m carefully choosing severities and detailing exploit scenarios with line references to produce a clear, schema-compliant JSON report.
[codex:1384433] codex
[codex:1384433] {"no_findings":false,"summary":"Found two auth-related issues: inbound messages lack replay protection, and plugs do not validate source chain/plug beyond trusting the bridge.","findings":[{"severity":"medium","category":"auth","title":"Inbound handlers lack replay protection for cross-chain messages","exploit_scenario":"If a relayer or compromised/misconfigured bridge submits the same inbound message twice, the destination contracts will mint/unlock the same amount again because no processed message ID tracking exists. In the execution-payload variants, a replay can also overwrite cached payloads and trigger duplicate execution.","recommendation":"Persist and check a `processedMessages[msgId]` mapping (or hash of payload) in each inbound handler and revert on repeats. Ensure Controller/Vault payloads include a unique message ID from the bridge so they can enforce single execution.","evidence":"Inbound functions decode payload and mint/unlock immediately without any stored processed-message check; message identifiers are only used for pending accounting (or not present at all).","locations":["contracts/contracts/supertoken/SuperToken.sol:244","contracts/contracts/supertoken/SuperTokenWithExecutionPayload.sol:267","contracts/contracts/supertoken/SuperTokenVault.sol:236","contracts/contracts/supertoken/SuperTokenVaultWithExecutionPayload.sol:259","contracts/contracts/superbridge/Controller.sol:198","contracts/contracts/superbridge/Vault.sol:157"]},{"severity":"low","category":"auth","title":"Plugs accept inbound messages without validating expected source chain/plug","exploit_scenario":"If the Socket/connector layer is misconfigured or compromised to route messages from an unexpected chain or plug, the inbound handlers will accept them and forward to the hub/token/vault, enabling unauthorized mint/unlock/execution.","recommendation":"Add explicit validation of `siblingChainSlug_` (and optionally remote plug address) against locally configured values before forwarding/processing inbound messages.","evidence":"ConnectorPlug.inbound ignores the `siblingChainSlug_` parameter and SocketPlug.inbound only checks `msg.sender == socket__` before forwarding payloads.","locations":["contracts/contracts/superbridge/ConnectorPlug.sol:60","contracts/contracts/supertoken/plugs/SocketPlug.sol:95"]}]}
[codex:1384433] tokens used
[codex:1384433] 66,839
[codex:1384433] {"no_findings":false,"summary":"Found two auth-related issues: inbound messages lack replay protection, and plugs do not validate source chain/plug beyond trusting the bridge.","findings":[{"severity":"medium","category":"auth","title":"Inbound handlers lack replay protection for cross-chain messages","exploit_scenario":"If a relayer or compromised/misconfigured bridge submits the same inbound message twice, the destination contracts will mint/unlock the same amount again because no processed message ID tracking exists. In the execution-payload variants, a replay can also overwrite cached payloads and trigger duplicate execution.","recommendation":"Persist and check a `processedMessages[msgId]` mapping (or hash of payload) in each inbound handler and revert on repeats. Ensure Controller/Vault payloads include a unique message ID from the bridge so they can enforce single execution.","evidence":"Inbound functions decode payload and mint/unlock immediately without any stored processed-message check; message identifiers are only used for pending accounting (or not present at all).","locations":["contracts/contracts/supertoken/SuperToken.sol:244","contracts/contracts/supertoken/SuperTokenWithExecutionPayload.sol:267","contracts/contracts/supertoken/SuperTokenVault.sol:236","contracts/contracts/supertoken/SuperTokenVaultWithExecutionPayload.sol:259","contracts/contracts/superbridge/Controller.sol:198","contracts/contracts/superbridge/Vault.sol:157"]},{"severity":"low","category":"auth","title":"Plugs accept inbound messages without validating expected source chain/plug","exploit_scenario":"If the Socket/connector layer is misconfigured or compromised to route messages from an unexpected chain or plug, the inbound handlers will accept them and forward to the hub/token/vault, enabling unauthorized mint/unlock/execution.","recommendation":"Add explicit validation of `siblingChainSlug_` (and optionally remote plug address) against locally configured values before forwarding/processing inbound messages.","evidence":"ConnectorPlug.inbound ignores the `siblingChainSlug_` parameter and SocketPlug.inbound only checks `msg.sender == socket__` before forwarding payloads.","locations":["contracts/contracts/superbridge/ConnectorPlug.sol:60","contracts/contracts/supertoken/plugs/SocketPlug.sol:95"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-28T14:39:33.124204+00:00",
        "returncode": 0
    },
    "summary": "Found two auth-related issues: inbound messages lack replay protection, and plugs do not validate source chain/plug beyond trusting the bridge.",
    "raw_final": {
        "summary": "Found two auth-related issues: inbound messages lack replay protection, and plugs do not validate source chain/plug beyond trusting the bridge.",
        "findings": [
            {
                "title": "Inbound handlers lack replay protection for cross-chain messages",
                "category": "auth",
                "evidence": "Inbound functions decode payload and mint/unlock immediately without any stored processed-message check; message identifiers are only used for pending accounting (or not present at all).",
                "severity": "medium",
                "locations": [
                    "contracts/contracts/supertoken/SuperToken.sol:244",
                    "contracts/contracts/supertoken/SuperTokenWithExecutionPayload.sol:267",
                    "contracts/contracts/supertoken/SuperTokenVault.sol:236",
                    "contracts/contracts/supertoken/SuperTokenVaultWithExecutionPayload.sol:259",
                    "contracts/contracts/superbridge/Controller.sol:198",
                    "contracts/contracts/superbridge/Vault.sol:157"
                ],
                "recommendation": "Persist and check a `processedMessages[msgId]` mapping (or hash of payload) in each inbound handler and revert on repeats. Ensure Controller/Vault payloads include a unique message ID from the bridge so they can enforce single execution.",
                "exploit_scenario": "If a relayer or compromised/misconfigured bridge submits the same inbound message twice, the destination contracts will mint/unlock the same amount again because no processed message ID tracking exists. In the execution-payload variants, a replay can also overwrite cached payloads and trigger duplicate execution."
            },
            {
                "title": "Plugs accept inbound messages without validating expected source chain/plug",
                "category": "auth",
                "evidence": "ConnectorPlug.inbound ignores the `siblingChainSlug_` parameter and SocketPlug.inbound only checks `msg.sender == socket__` before forwarding payloads.",
                "severity": "low",
                "locations": [
                    "contracts/contracts/superbridge/ConnectorPlug.sol:60",
                    "contracts/contracts/supertoken/plugs/SocketPlug.sol:95"
                ],
                "recommendation": "Add explicit validation of `siblingChainSlug_` (and optionally remote plug address) against locally configured values before forwarding/processing inbound messages.",
                "exploit_scenario": "If the Socket/connector layer is misconfigured or compromised to route messages from an unexpected chain or plug, the inbound handlers will accept them and forward to the hub/token/vault, enabling unauthorized mint/unlock/execution."
            }
        ],
        "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
2
Total opcodes
3966
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 0x016a
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x5b94db27
00000019: GT
0000001a: PUSH2 0x00cb
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x84f289cc
00000024: GT
00000025: PUSH2 0x007f
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x9b4cd940
0000002f: GT
00000030: PUSH2 0x0059
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0x9b4cd940
0000003a: EQ
0000003b: PUSH2 0x046f
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xad0f6694
00000045: EQ
00000046: PUSH2 0x048f
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf2b7c5cd
00000050: EQ
00000051: PUSH2 0x04a9
00000054: JUMPI
00000055: PUSH1 0x00
00000057: DUP1
00000058: REVERT
00000059: JUMPDEST
0000005a: DUP1
0000005b: PUSH4 0x84f289cc
00000060: EQ
00000061: PUSH2 0x0411
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0x864f6a7a
0000006b: EQ
0000006c: PUSH2 0x0431
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x8da5cb5b
00000076: EQ
00000077: PUSH2 0x0444
0000007a: JUMPI
0000007b: PUSH1 0x00
0000007d: DUP1
0000007e: REVERT
0000007f: JUMPDEST
00000080: DUP1
00000081: PUSH4 0x6ccae054
00000086: GT
00000087: PUSH2 0x00b0
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0x6ccae054
00000091: EQ
00000092: PUSH2 0x037e
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0x755e1e24
0000009c: EQ
0000009d: PUSH2 0x039e
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x8367080f
000000a7: EQ
000000a8: PUSH2 0x03f1
000000ab: JUMPI
000000ac: PUSH1 0x00
000000ae: DUP1
000000af: REVERT
000000b0: JUMPDEST
000000b1: DUP1
000000b2: PUSH4 0x5b94db27
000000b7: EQ
000000b8: PUSH2 0x033e
000000bb: JUMPI
000000bc: DUP1
000000bd: PUSH4 0x636ad081
000000c2: EQ
000000c3: PUSH2 0x035e
000000c6: JUMPI
000000c7: PUSH1 0x00
000000c9: DUP1
000000ca: REVERT
000000cb: JUMPDEST
000000cc: DUP1
000000cd: PUSH4 0x3bd1adec
000000d2: GT
000000d3: PUSH2 0x0122
000000d6: JUMPI
000000d7: DUP1
000000d8: PUSH4 0x41b2bf86
000000dd: GT
000000de: PUSH2 0x0107
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0x41b2bf86
000000e8: EQ
000000e9: PUSH2 0x02ca
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0x4603f9f4
000000f3: EQ
000000f4: PUSH2 0x02ea
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0x49eec51e
000000fe: EQ
000000ff: PUSH2 0x030a
00000102: JUMPI
00000103: PUSH1 0x00
00000105: DUP1
00000106: REVERT
00000107: JUMPDEST
00000108: DUP1
00000109: PUSH4 0x3bd1adec
0000010e: EQ
0000010f: PUSH2 0x0275
00000112: JUMPI
00000113: DUP1
00000114: PUSH4 0x3fd8cc4e
00000119: EQ
0000011a: PUSH2 0x028a
0000011d: JUMPI
0000011e: PUSH1 0x00
00000120: DUP1
00000121: REVERT
00000122: JUMPDEST
00000123: DUP1
00000124: PUSH4 0x20f99c0a
00000129: GT
0000012a: PUSH2 0x0153
0000012d: JUMPI
0000012e: DUP1
0000012f: PUSH4 0x20f99c0a
00000134: EQ
00000135: PUSH2 0x01dc
00000138: JUMPI
00000139: DUP1
0000013a: PUSH4 0x2bc9c08a
0000013f: EQ
00000140: PUSH2 0x0228
00000143: JUMPI
00000144: DUP1
00000145: PUSH4 0x2fef4a8b
0000014a: EQ
0000014b: PUSH2 0x0248
0000014e: JUMPI
0000014f: PUSH1 0x00
00000151: DUP1
00000152: REVERT
00000153: JUMPDEST
00000154: DUP1
00000155: PUSH4 0x10c56ed9
0000015a: EQ
0000015b: PUSH2 0x016f
0000015e: JUMPI
0000015f: DUP1
00000160: PUSH4 0x186669e8
00000165: EQ
00000166: PUSH2 0x0191
00000169: JUMPI
0000016a: JUMPDEST
0000016b: PUSH1 0x00
0000016d: DUP1
0000016e: REVERT
0000016f: JUMPDEST
00000170: CALLVALUE
00000171: DUP1
00000172: ISZERO
00000173: PUSH2 0x017b
00000176: JUMPI
00000177: PUSH1 0x00
00000179: DUP1
0000017a: REVERT
0000017b: JUMPDEST
0000017c: POP
0000017d: PUSH2 0x018f
00000180: PUSH2 0x018a
00000183: CALLDATASIZE
00000184: PUSH1 0x04
00000186: PUSH2 0x189e
00000189: JUMP
0000018a: JUMPDEST
0000018b: PUSH2 0x04c9
0000018e: JUMP
0000018f: JUMPDEST
00000190: STOP
00000191: JUMPDEST
00000192: CALLVALUE
00000193: DUP1
00000194: ISZERO
00000195: PUSH2 0x019d
00000198: JUMPI
00000199: PUSH1 0x00
0000019b: DUP1
0000019c: REVERT
0000019d: JUMPDEST
0000019e: POP
0000019f: PUSH2 0x01c9
000001a2: PUSH2 0x01ac
000001a5: CALLDATASIZE
000001a6: PUSH1 0x04
000001a8: PUSH2 0x1992
000001ab: JUMP
000001ac: JUMPDEST
000001ad: PUSH1 0x02
000001af: PUSH1 0x20
000001b1: SWAP1
000001b2: DUP2
000001b3: MSTORE
000001b4: PUSH1 0x00
000001b6: SWAP3
000001b7: DUP4
000001b8: MSTORE
000001b9: PUSH1 0x40
000001bb: DUP1
000001bc: DUP5
000001bd: KECCAK256
000001be: SWAP1
000001bf: SWAP2
000001c0: MSTORE
000001c1: SWAP1
000001c2: DUP3
000001c3: MSTORE
000001c4: SWAP1
000001c5: KECCAK256
000001c6: SLOAD
000001c7: DUP2
000001c8: JUMP
000001c9: JUMPDEST
000001ca: PUSH1 0x40
000001cc: MLOAD
000001cd: SWAP1
000001ce: DUP2
000001cf: MSTORE
000001d0: PUSH1 0x20
000001d2: ADD
000001d3: JUMPDEST
000001d4: PUSH1 0x40
000001d6: MLOAD
000001d7: DUP1
000001d8: SWAP2
000001d9: SUB
000001da: SWAP1
000001db: RETURN
000001dc: JUMPDEST
000001dd: CALLVALUE
000001de: DUP1
000001df: ISZERO
000001e0: PUSH2 0x01e8
000001e3: JUMPI
000001e4: PUSH1 0x00
000001e6: DUP1
000001e7: REVERT
000001e8: JUMPDEST
000001e9: POP
000001ea: PUSH1 0x01
000001ec: SLOAD
000001ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000202: AND
00000203: JUMPDEST
00000204: PUSH1 0x40
00000206: MLOAD
00000207: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000021c: SWAP1
0000021d: SWAP2
0000021e: AND
0000021f: DUP2
00000220: MSTORE
00000221: PUSH1 0x20
00000223: ADD
00000224: PUSH2 0x01d3
00000227: JUMP
00000228: JUMPDEST
00000229: CALLVALUE
0000022a: DUP1
0000022b: ISZERO
0000022c: PUSH2 0x0234
0000022f: JUMPI
00000230: PUSH1 0x00
00000232: DUP1
00000233: REVERT
00000234: JUMPDEST
00000235: POP
00000236: PUSH2 0x018f
00000239: PUSH2 0x0243
0000023c: CALLDATASIZE
0000023d: PUSH1 0x04
0000023f: PUSH2 0x19cb
00000242: JUMP
00000243: JUMPDEST
00000244: PUSH2 0x06d8
00000247: JUMP
00000248: JUMPDEST
00000249: CALLVALUE
0000024a: DUP1
0000024b: ISZERO
0000024c: PUSH2 0x0254
0000024f: JUMPI
00000250: PUSH1 0x00
00000252: DUP1
00000253: REVERT
00000254: JUMPDEST
00000255: POP
00000256: PUSH2 0x01c9
00000259: PUSH2 0x0263
0000025c: CALLDATASIZE
0000025d: PUSH1 0x04
0000025f: PUSH2 0x1a40
00000262: JUMP
00000263: JUMPDEST
00000264: PUSH1 0x03
00000266: PUSH1 0x20
00000268: MSTORE
00000269: PUSH1 0x00
0000026b: SWAP1
0000026c: DUP2
0000026d: MSTORE
0000026e: PUSH1 0x40
00000270: SWAP1
00000271: KECCAK256
00000272: SLOAD
00000273: DUP2
00000274: JUMP
00000275: JUMPDEST
00000276: CALLVALUE
00000277: DUP1
00000278: ISZERO
00000279: PUSH2 0x0281
0000027c: JUMPI
0000027d: PUSH1 0x00
0000027f: DUP1
00000280: REVERT
00000281: JUMPDEST
00000282: POP
00000283: PUSH2 0x018f
00000286: PUSH2 0x0a18
00000289: JUMP
0000028a: JUMPDEST
0000028b: CALLVALUE
0000028c: DUP1
0000028d: ISZERO
0000028e: PUSH2 0x0296
00000291: JUMPI
00000292: PUSH1 0x00
00000294: DUP1
00000295: REVERT
00000296: JUMPDEST
00000297: POP
00000298: PUSH2 0x02ba
0000029b: PUSH2 0x02a5
0000029e: CALLDATASIZE
0000029f: PUSH1 0x04
000002a1: PUSH2 0x1a40
000002a4: JUMP
000002a5: JUMPDEST
000002a6: PUSH1 0x07
000002a8: PUSH1 0x20
000002aa: MSTORE
000002ab: PUSH1 0x00
000002ad: SWAP1
000002ae: DUP2
000002af: MSTORE
000002b0: PUSH1 0x40
000002b2: SWAP1
000002b3: KECCAK256
000002b4: SLOAD
000002b5: PUSH1 0xff
000002b7: AND
000002b8: DUP2
000002b9: JUMP
000002ba: JUMPDEST
000002bb: PUSH1 0x40
000002bd: MLOAD
000002be: SWAP1
000002bf: ISZERO
000002c0: ISZERO
000002c1: DUP2
000002c2: MSTORE
000002c3: PUSH1 0x20
000002c5: ADD
000002c6: PUSH2 0x01d3
000002c9: JUMP
000002ca: JUMPDEST
000002cb: CALLVALUE
000002cc: DUP1
000002cd: ISZERO
000002ce: PUSH2 0x02d6
000002d1: JUMPI
000002d2: PUSH1 0x00
000002d4: DUP1
000002d5: REVERT
000002d6: JUMPDEST
000002d7: POP
000002d8: PUSH2 0x018f
000002db: PUSH2 0x02e5
000002de: CALLDATASIZE
000002df: PUSH1 0x04
000002e1: PUSH2 0x1a72
000002e4: JUMP
000002e5: JUMPDEST
000002e6: PUSH2 0x0a74
000002e9: JUMP
000002ea: JUMPDEST
000002eb: CALLVALUE
000002ec: DUP1
000002ed: ISZERO
000002ee: PUSH2 0x02f6
000002f1: JUMPI
000002f2: PUSH1 0x00
000002f4: DUP1
000002f5: REVERT
000002f6: JUMPDEST
000002f7: POP
000002f8: PUSH2 0x01c9
000002fb: PUSH2 0x0305
000002fe: CALLDATASIZE
000002ff: PUSH1 0x04
00000301: PUSH2 0x1a40
00000304: JUMP
00000305: JUMPDEST
00000306: PUSH2 0x0ba2
00000309: JUMP
0000030a: JUMPDEST
0000030b: CALLVALUE
0000030c: DUP1
0000030d: ISZERO
0000030e: PUSH2 0x0316
00000311: JUMPI
00000312: PUSH1 0x00
00000314: DUP1
00000315: REVERT
00000316: JUMPDEST
00000317: POP
00000318: PUSH2 0x0203
0000031b: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
0000033c: DUP2
0000033d: JUMP
0000033e: JUMPDEST
0000033f: CALLVALUE
00000340: DUP1
00000341: ISZERO
00000342: PUSH2 0x034a
00000345: JUMPI
00000346: PUSH1 0x00
00000348: DUP1
00000349: REVERT
0000034a: JUMPDEST
0000034b: POP
0000034c: PUSH2 0x018f
0000034f: PUSH2 0x0359
00000352: CALLDATASIZE
00000353: PUSH1 0x04
00000355: PUSH2 0x1a40
00000358: JUMP
00000359: JUMPDEST
0000035a: PUSH2 0x0bd6
0000035d: JUMP
0000035e: JUMPDEST
0000035f: CALLVALUE
00000360: DUP1
00000361: ISZERO
00000362: PUSH2 0x036a
00000365: JUMPI
00000366: PUSH1 0x00
00000368: DUP1
00000369: REVERT
0000036a: JUMPDEST
0000036b: POP
0000036c: PUSH2 0x018f
0000036f: PUSH2 0x0379
00000372: CALLDATASIZE
00000373: PUSH1 0x04
00000375: PUSH2 0x1af6
00000378: JUMP
00000379: JUMPDEST
0000037a: PUSH2 0x0c96
0000037d: JUMP
0000037e: JUMPDEST
0000037f: CALLVALUE
00000380: DUP1
00000381: ISZERO
00000382: PUSH2 0x038a
00000385: JUMPI
00000386: PUSH1 0x00
00000388: DUP1
00000389: REVERT
0000038a: JUMPDEST
0000038b: POP
0000038c: PUSH2 0x018f
0000038f: PUSH2 0x0399
00000392: CALLDATASIZE
00000393: PUSH1 0x04
00000395: PUSH2 0x1b11
00000398: JUMP
00000399: JUMPDEST
0000039a: PUSH2 0x0d4c
0000039d: JUMP
0000039e: JUMPDEST
0000039f: CALLVALUE
000003a0: DUP1
000003a1: ISZERO
000003a2: PUSH2 0x03aa
000003a5: JUMPI
000003a6: PUSH1 0x00
000003a8: DUP1
000003a9: REVERT
000003aa: JUMPDEST
000003ab: POP
000003ac: PUSH2 0x03be
000003af: PUSH2 0x03b9
000003b2: CALLDATASIZE
000003b3: PUSH1 0x04
000003b5: PUSH2 0x1a40
000003b8: JUMP
000003b9: JUMPDEST
000003ba: PUSH2 0x0dad
000003bd: JUMP
000003be: JUMPDEST
000003bf: PUSH1 0x40
000003c1: MLOAD
000003c2: PUSH2 0x01d3
000003c5: SWAP2
000003c6: SWAP1
000003c7: DUP2
000003c8: MLOAD
000003c9: DUP2
000003ca: MSTORE
000003cb: PUSH1 0x20
000003cd: DUP1
000003ce: DUP4
000003cf: ADD
000003d0: MLOAD
000003d1: SWAP1
000003d2: DUP3
000003d3: ADD
000003d4: MSTORE
000003d5: PUSH1 0x40
000003d7: DUP1
000003d8: DUP4
000003d9: ADD
000003da: MLOAD
000003db: SWAP1
000003dc: DUP3
000003dd: ADD
000003de: MSTORE
000003df: PUSH1 0x60
000003e1: SWAP2
000003e2: DUP3
000003e3: ADD
000003e4: MLOAD
000003e5: SWAP2
000003e6: DUP2
000003e7: ADD
000003e8: SWAP2
000003e9: SWAP1
000003ea: SWAP2
000003eb: MSTORE
000003ec: PUSH1 0x80
000003ee: ADD
000003ef: SWAP1
000003f0: JUMP
000003f1: JUMPDEST
000003f2: CALLVALUE
000003f3: DUP1
000003f4: ISZERO
000003f5: PUSH2 0x03fd
000003f8: JUMPI
000003f9: PUSH1 0x00
000003fb: DUP1
000003fc: REVERT
000003fd: JUMPDEST
000003fe: POP
000003ff: PUSH2 0x01c9
00000402: PUSH2 0x040c
00000405: CALLDATASIZE
00000406: PUSH1 0x04
00000408: PUSH2 0x1b52
0000040b: JUMP
0000040c: JUMPDEST
0000040d: PUSH2 0x0e33
00000410: JUMP
00000411: JUMPDEST
00000412: CALLVALUE
00000413: DUP1
00000414: ISZERO
00000415: PUSH2 0x041d
00000418: JUMPI
00000419: PUSH1 0x00
0000041b: DUP1
0000041c: REVERT
0000041d: JUMPDEST
0000041e: POP
0000041f: PUSH2 0x01c9
00000422: PUSH2 0x042c
00000425: CALLDATASIZE
00000426: PUSH1 0x04
00000428: PUSH2 0x1a40
0000042b: JUMP
0000042c: JUMPDEST
0000042d: PUSH2 0x0ecc
00000430: JUMP
00000431: JUMPDEST
00000432: PUSH2 0x018f
00000435: PUSH2 0x043f
00000438: CALLDATASIZE
00000439: PUSH1 0x04
0000043b: PUSH2 0x1b7e
0000043e: JUMP
0000043f: JUMPDEST
00000440: PUSH2 0x0efa
00000443: JUMP
00000444: JUMPDEST
00000445: CALLVALUE
00000446: DUP1
00000447: ISZERO
00000448: PUSH2 0x0450
0000044b: JUMPI
0000044c: PUSH1 0x00
0000044e: DUP1
0000044f: REVERT
00000450: JUMPDEST
00000451: POP
00000452: PUSH1 0x00
00000454: SLOAD
00000455: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000046a: AND
0000046b: PUSH2 0x0203
0000046e: JUMP
0000046f: JUMPDEST
00000470: CALLVALUE
00000471: DUP1
00000472: ISZERO
00000473: PUSH2 0x047b
00000476: JUMPI
00000477: PUSH1 0x00
00000479: DUP1
0000047a: REVERT
0000047b: JUMPDEST
0000047c: POP
0000047d: PUSH2 0x03be
00000480: PUSH2 0x048a
00000483: CALLDATASIZE
00000484: PUSH1 0x04
00000486: PUSH2 0x1a40
00000489: JUMP
0000048a: JUMPDEST
0000048b: PUSH2 0x117e
0000048e: JUMP
0000048f: JUMPDEST
00000490: CALLVALUE
00000491: DUP1
00000492: ISZERO
00000493: PUSH2 0x049b
00000496: JUMPI
00000497: PUSH1 0x00
00000499: DUP1
0000049a: REVERT
0000049b: JUMPDEST
0000049c: POP
0000049d: PUSH1 0x06
0000049f: SLOAD
000004a0: PUSH2 0x02ba
000004a3: SWAP1
000004a4: PUSH1 0xff
000004a6: AND
000004a7: DUP2
000004a8: JUMP
000004a9: JUMPDEST
000004aa: CALLVALUE
000004ab: DUP1
000004ac: ISZERO
000004ad: PUSH2 0x04b5
000004b0: JUMPI
000004b1: PUSH1 0x00
000004b3: DUP1
000004b4: REVERT
000004b5: JUMPDEST
000004b6: POP
000004b7: PUSH2 0x018f
000004ba: PUSH2 0x04c4
000004bd: CALLDATASIZE
000004be: PUSH1 0x04
000004c0: PUSH2 0x1992
000004c3: JUMP
000004c4: JUMPDEST
000004c5: PUSH2 0x1204
000004c8: JUMP
000004c9: JUMPDEST
000004ca: CALLER
000004cb: PUSH1 0x00
000004cd: SWAP1
000004ce: DUP2
000004cf: MSTORE
000004d0: PUSH1 0x05
000004d2: PUSH1 0x20
000004d4: MSTORE
000004d5: PUSH1 0x40
000004d7: DUP2
000004d8: KECCAK256
000004d9: PUSH1 0x02
000004db: ADD
000004dc: SLOAD
000004dd: SWAP1
000004de: SUB
000004df: PUSH2 0x0514
000004e2: JUMPI
000004e3: PUSH1 0x40
000004e5: MLOAD
000004e6: PUSH32 0xb1efb84a00000000000000000000000000000000000000000000000000000000
00000507: DUP2
00000508: MSTORE
00000509: PUSH1 0x04
0000050b: ADD
0000050c: PUSH1 0x40
0000050e: MLOAD
0000050f: DUP1
00000510: SWAP2
00000511: SUB
00000512: SWAP1
00000513: REVERT
00000514: JUMPDEST
00000515: PUSH1 0x00
00000517: DUP1
00000518: DUP3
00000519: DUP1
0000051a: PUSH1 0x20
0000051c: ADD
0000051d: SWAP1
0000051e: MLOAD
0000051f: DUP2
00000520: ADD
00000521: SWAP1
00000522: PUSH2 0x052b
00000525: SWAP2
00000526: SWAP1
00000527: PUSH2 0x1bc8
0000052a: JUMP
0000052b: JUMPDEST
0000052c: CALLER
0000052d: PUSH1 0x00
0000052f: SWAP1
00000530: DUP2
00000531: MSTORE
00000532: PUSH1 0x05
00000534: PUSH1 0x20
00000536: MSTORE
00000537: PUSH1 0x40
00000539: DUP2
0000053a: KECCAK256
0000053b: SWAP3
0000053c: SWAP5
0000053d: POP
0000053e: SWAP1
0000053f: SWAP3
00000540: POP
00000541: SWAP1
00000542: DUP2
00000543: SWAP1
00000544: PUSH2 0x054e
00000547: SWAP1
00000548: DUP5
00000549: SWAP1
0000054a: PUSH2 0x13ae
0000054d: JUMP
0000054e: JUMPDEST
0000054f: SWAP1
00000550: SWAP3
00000551: POP
00000552: SWAP1
00000553: POP
00000554: DUP1
00000555: ISZERO
00000556: PUSH2 0x0639
00000559: JUMPI
0000055a: CALLER
0000055b: PUSH1 0x00
0000055d: SWAP1
0000055e: DUP2
0000055f: MSTORE
00000560: PUSH1 0x02
00000562: PUSH1 0x20
00000564: SWAP1
00000565: DUP2
00000566: MSTORE
00000567: PUSH1 0x40
00000569: DUP1
0000056a: DUP4
0000056b: KECCAK256
0000056c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000581: DUP9
00000582: AND
00000583: DUP5
00000584: MSTORE
00000585: SWAP1
00000586: SWAP2
00000587: MSTORE
00000588: DUP2
00000589: KECCAK256
0000058a: DUP1
0000058b: SLOAD
0000058c: DUP4
0000058d: SWAP3
0000058e: SWAP1
0000058f: PUSH2 0x0599
00000592: SWAP1
00000593: DUP5
00000594: SWAP1
00000595: PUSH2 0x1c25
00000598: JUMP
00000599: JUMPDEST
0000059a: SWAP1
0000059b: SWAP2
0000059c: SSTORE
0000059d: POP
0000059e: POP
0000059f: CALLER
000005a0: PUSH1 0x00
000005a2: SWAP1
000005a3: DUP2
000005a4: MSTORE
000005a5: PUSH1 0x03
000005a7: PUSH1 0x20
000005a9: MSTORE
000005aa: PUSH1 0x40
000005ac: DUP2
000005ad: KECCAK256
000005ae: DUP1
000005af: SLOAD
000005b0: DUP4
000005b1: SWAP3
000005b2: SWAP1
000005b3: PUSH2 0x05bd
000005b6: SWAP1
000005b7: DUP5
000005b8: SWAP1
000005b9: PUSH2 0x1c25
000005bc: JUMP
000005bd: JUMPDEST
000005be: SWAP1
000005bf: SWAP2
000005c0: SSTORE
000005c1: POP
000005c2: POP
000005c3: CALLER
000005c4: PUSH1 0x00
000005c6: DUP2
000005c7: DUP2
000005c8: MSTORE
000005c9: PUSH1 0x02
000005cb: PUSH1 0x20
000005cd: SWAP1
000005ce: DUP2
000005cf: MSTORE
000005d0: PUSH1 0x40
000005d2: DUP1
000005d3: DUP4
000005d4: KECCAK256
000005d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005ea: DUP10
000005eb: AND
000005ec: DUP1
000005ed: DUP6
000005ee: MSTORE
000005ef: SWAP1
000005f0: DUP4
000005f1: MSTORE
000005f2: SWAP3
000005f3: DUP2
000005f4: SWAP1
000005f5: KECCAK256
000005f6: SLOAD
000005f7: DUP2
000005f8: MLOAD
000005f9: SWAP5
000005fa: DUP6
000005fb: MSTORE
000005fc: SWAP2
000005fd: DUP5
000005fe: ADD
000005ff: SWAP3
00000600: SWAP1
00000601: SWAP3
00000602: MSTORE
00000603: DUP3
00000604: DUP3
00000605: ADD
00000606: DUP5
00000607: SWAP1
00000608: MSTORE
00000609: PUSH1 0x60
0000060b: DUP4
0000060c: ADD
0000060d: MSTORE
0000060e: MLOAD
0000060f: PUSH32 0xfef75efa635291b302f2c3dfcc6ec92874e699d186cee8bd68c36c86ad35232c
00000630: SWAP2
00000631: DUP2
00000632: SWAP1
00000633: SUB
00000634: PUSH1 0x80
00000636: ADD
00000637: SWAP1
00000638: LOG1
00000639: JUMPDEST
0000063a: PUSH2 0x067a
0000063d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000652: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000673: AND
00000674: DUP6
00000675: DUP5
00000676: PUSH2 0x1402
00000679: JUMP
0000067a: JUMPDEST
0000067b: PUSH1 0x40
0000067d: DUP1
0000067e: MLOAD
0000067f: CALLER
00000680: DUP2
00000681: MSTORE
00000682: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000697: DUP7
00000698: AND
00000699: PUSH1 0x20
0000069b: DUP3
0000069c: ADD
0000069d: MSTORE
0000069e: SWAP1
0000069f: DUP2
000006a0: ADD
000006a1: DUP4
000006a2: SWAP1
000006a3: MSTORE
000006a4: PUSH32 0xece684e11f49f06d351439e63189ad1703238b8040d90cf994901ca2b3da8d44
000006c5: SWAP1
000006c6: PUSH1 0x60
000006c8: ADD
000006c9: JUMPDEST
000006ca: PUSH1 0x40
000006cc: MLOAD
000006cd: DUP1
000006ce: SWAP2
000006cf: SUB
000006d0: SWAP1
000006d1: LOG1
000006d2: POP
000006d3: POP
000006d4: POP
000006d5: POP
000006d6: POP
000006d7: JUMP
000006d8: JUMPDEST
000006d9: PUSH1 0x00
000006db: SLOAD
000006dc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006f1: AND
000006f2: CALLER
000006f3: EQ
000006f4: PUSH2 0x0729
000006f7: JUMPI
000006f8: PUSH1 0x40
000006fa: MLOAD
000006fb: PUSH32 0x5fc483c500000000000000000000000000000000000000000000000000000000
0000071c: DUP2
0000071d: MSTORE
0000071e: PUSH1 0x04
00000720: ADD
00000721: PUSH1 0x40
00000723: MLOAD
00000724: DUP1
00000725: SWAP2
00000726: SUB
00000727: SWAP1
00000728: REVERT
00000729: JUMPDEST
0000072a: PUSH1 0x00
0000072c: JUMPDEST
0000072d: DUP2
0000072e: DUP2
0000072f: LT
00000730: ISZERO
00000731: PUSH2 0x09da
00000734: JUMPI
00000735: DUP3
00000736: DUP3
00000737: DUP3
00000738: DUP2
00000739: DUP2
0000073a: LT
0000073b: PUSH2 0x0746
0000073e: JUMPI
0000073f: PUSH2 0x0746
00000742: PUSH2 0x1c3d
00000745: JUMP
00000746: JUMPDEST
00000747: PUSH2 0x075c
0000074a: SWAP3
0000074b: PUSH1 0x20
0000074d: PUSH1 0x80
0000074f: SWAP1
00000750: SWAP3
00000751: MUL
00000752: ADD
00000753: SWAP1
00000754: DUP2
00000755: ADD
00000756: SWAP2
00000757: POP
00000758: PUSH2 0x1af6
0000075b: JUMP
0000075c: JUMPDEST
0000075d: ISZERO
0000075e: PUSH2 0x08c2
00000761: JUMPI
00000762: PUSH2 0x07d3
00000765: PUSH1 0x00
00000767: PUSH1 0x04
00000769: PUSH1 0x00
0000076b: DUP7
0000076c: DUP7
0000076d: DUP7
0000076e: DUP2
0000076f: DUP2
00000770: LT
00000771: PUSH2 0x077c
00000774: JUMPI
00000775: PUSH2 0x077c
00000778: PUSH2 0x1c3d
0000077b: JUMP
0000077c: JUMPDEST
0000077d: SWAP1
0000077e: POP
0000077f: PUSH1 0x80
00000781: MUL
00000782: ADD
00000783: PUSH1 0x20
00000785: ADD
00000786: PUSH1 0x20
00000788: DUP2
00000789: ADD
0000078a: SWAP1
0000078b: PUSH2 0x0794
0000078e: SWAP2
0000078f: SWAP1
00000790: PUSH2 0x1a40
00000793: JUMP
00000794: JUMPDEST
00000795: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007aa: AND
000007ab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007c0: AND
000007c1: DUP2
000007c2: MSTORE
000007c3: PUSH1 0x20
000007c5: ADD
000007c6: SWAP1
000007c7: DUP2
000007c8: MSTORE
000007c9: PUSH1 0x20
000007cb: ADD
000007cc: PUSH1 0x00
000007ce: KECCAK256
000007cf: PUSH2 0x13ae
000007d2: JUMP
000007d3: JUMPDEST
000007d4: POP
000007d5: POP
000007d6: DUP3
000007d7: DUP3
000007d8: DUP3
000007d9: DUP2
000007da: DUP2
000007db: LT
000007dc: PUSH2 0x07e7
000007df: JUMPI
000007e0: PUSH2 0x07e7
000007e3: PUSH2 0x1c3d
000007e6: JUMP
000007e7: JUMPDEST
000007e8: SWAP1
000007e9: POP
000007ea: PUSH1 0x80
000007ec: MUL
000007ed: ADD
000007ee: PUSH1 0x40
000007f0: ADD
000007f1: CALLDATALOAD
000007f2: PUSH1 0x04
000007f4: PUSH1 0x00
000007f6: DUP6
000007f7: DUP6
000007f8: DUP6
000007f9: DUP2
000007fa: DUP2
000007fb: LT
000007fc: PUSH2 0x0807
000007ff: JUMPI
00000800: PUSH2 0x0807
00000803: PUSH2 0x1c3d
00000806: JUMP
00000807: JUMPDEST
00000808: SWAP1
00000809: POP
0000080a: PUSH1 0x80
0000080c: MUL
0000080d: ADD
0000080e: PUSH1 0x20
00000810: ADD
00000811: PUSH1 0x20
00000813: DUP2
00000814: ADD
00000815: SWAP1
00000816: PUSH2 0x081f
00000819: SWAP2
0000081a: SWAP1
0000081b: PUSH2 0x1a40
0000081e: JUMP
0000081f: JUMPDEST
00000820: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000835: AND
00000836: DUP2
00000837: MSTORE
00000838: PUSH1 0x20
0000083a: DUP2
0000083b: ADD
0000083c: SWAP2
0000083d: SWAP1
0000083e: SWAP2
0000083f: MSTORE
00000840: PUSH1 0x40
00000842: ADD
00000843: PUSH1 0x00
00000845: KECCAK256
00000846: PUSH1 0x02
00000848: ADD
00000849: SSTORE
0000084a: DUP3
0000084b: DUP3
0000084c: DUP3
0000084d: DUP2
0000084e: DUP2
0000084f: LT
00000850: PUSH2 0x085b
00000853: JUMPI
00000854: PUSH2 0x085b
00000857: PUSH2 0x1c3d
0000085a: JUMP
0000085b: JUMPDEST
0000085c: SWAP1
0000085d: POP
0000085e: PUSH1 0x80
00000860: MUL
00000861: ADD
00000862: PUSH1 0x60
00000864: ADD
00000865: CALLDATALOAD
00000866: PUSH1 0x04
00000868: PUSH1 0x00
0000086a: DUP6
0000086b: DUP6
0000086c: DUP6
0000086d: DUP2
0000086e: DUP2
0000086f: LT
00000870: PUSH2 0x087b
00000873: JUMPI
00000874: PUSH2 0x087b
00000877: PUSH2 0x1c3d
0000087a: JUMP
0000087b: JUMPDEST
0000087c: SWAP1
0000087d: POP
0000087e: PUSH1 0x80
00000880: MUL
00000881: ADD
00000882: PUSH1 0x20
00000884: ADD
00000885: PUSH1 0x20
00000887: DUP2
00000888: ADD
00000889: SWAP1
0000088a: PUSH2 0x0893
0000088d: SWAP2
0000088e: SWAP1
0000088f: PUSH2 0x1a40
00000892: JUMP
00000893: JUMPDEST
00000894: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008a9: AND
000008aa: DUP2
000008ab: MSTORE
000008ac: PUSH1 0x20
000008ae: DUP2
000008af: ADD
000008b0: SWAP2
000008b1: SWAP1
000008b2: SWAP2
000008b3: MSTORE
000008b4: PUSH1 0x40
000008b6: ADD
000008b7: PUSH1 0x00
000008b9: KECCAK256
000008ba: PUSH1 0x01
000008bc: ADD
000008bd: SSTORE
000008be: PUSH2 0x09c8
000008c1: JUMP
000008c2: JUMPDEST
000008c3: PUSH2 0x08dd
000008c6: PUSH1 0x00
000008c8: PUSH1 0x05
000008ca: PUSH1 0x00
000008cc: DUP7
000008cd: DUP7
000008ce: DUP7
000008cf: DUP2
000008d0: DUP2
000008d1: LT
000008d2: PUSH2 0x077c
000008d5: JUMPI
000008d6: PUSH2 0x077c
000008d9: PUSH2 0x1c3d
000008dc: JUMP
000008dd: JUMPDEST
000008de: POP
000008df: POP
000008e0: DUP3
000008e1: DUP3
000008e2: DUP3
000008e3: DUP2
000008e4: DUP2
000008e5: LT
000008e6: PUSH2 0x08f1
000008e9: JUMPI
000008ea: PUSH2 0x08f1
000008ed: PUSH2 0x1c3d
000008f0: JUMP
000008f1: JUMPDEST
000008f2: SWAP1
000008f3: POP
000008f4: PUSH1 0x80
000008f6: MUL
000008f7: ADD
000008f8: PUSH1 0x40
000008fa: ADD
000008fb: CALLDATALOAD
000008fc: PUSH1 0x05
000008fe: PUSH1 0x00
00000900: DUP6
00000901: DUP6
00000902: DUP6
00000903: DUP2
00000904: DUP2
00000905: LT
00000906: PUSH2 0x0911
00000909: JUMPI
0000090a: PUSH2 0x0911
0000090d: PUSH2 0x1c3d
00000910: JUMP
00000911: JUMPDEST
00000912: SWAP1
00000913: POP
00000914: PUSH1 0x80
00000916: MUL
00000917: ADD
00000918: PUSH1 0x20
0000091a: ADD
0000091b: PUSH1 0x20
0000091d: DUP2
0000091e: ADD
0000091f: SWAP1
00000920: PUSH2 0x0929
00000923: SWAP2
00000924: SWAP1
00000925: PUSH2 0x1a40
00000928: JUMP
00000929: JUMPDEST
0000092a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000093f: AND
00000940: DUP2
00000941: MSTORE
00000942: PUSH1 0x20
00000944: DUP2
00000945: ADD
00000946: SWAP2
00000947: SWAP1
00000948: SWAP2
00000949: MSTORE
0000094a: PUSH1 0x40
0000094c: ADD
0000094d: PUSH1 0x00
0000094f: KECCAK256
00000950: PUSH1 0x02
00000952: ADD
00000953: SSTORE
00000954: DUP3
00000955: DUP3
00000956: DUP3
00000957: DUP2
00000958: DUP2
00000959: LT
0000095a: PUSH2 0x0965
0000095d: JUMPI
0000095e: PUSH2 0x0965
00000961: PUSH2 0x1c3d
00000964: JUMP
00000965: JUMPDEST
00000966: SWAP1
00000967: POP
00000968: PUSH1 0x80
0000096a: MUL
0000096b: ADD
0000096c: PUSH1 0x60
0000096e: ADD
0000096f: CALLDATALOAD
00000970: PUSH1 0x05
00000972: PUSH1 0x00
00000974: DUP6
00000975: DUP6
00000976: DUP6
00000977: DUP2
00000978: DUP2
00000979: LT
0000097a: PUSH2 0x0985
0000097d: JUMPI
0000097e: PUSH2 0x0985
00000981: PUSH2 0x1c3d
00000984: JUMP
00000985: JUMPDEST
00000986: SWAP1
00000987: POP
00000988: PUSH1 0x80
0000098a: MUL
0000098b: ADD
0000098c: PUSH1 0x20
0000098e: ADD
0000098f: PUSH1 0x20
00000991: DUP2
00000992: ADD
00000993: SWAP1
00000994: PUSH2 0x099d
00000997: SWAP2
00000998: SWAP1
00000999: PUSH2 0x1a40
0000099c: JUMP
0000099d: JUMPDEST
0000099e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009b3: AND
000009b4: DUP2
000009b5: MSTORE
000009b6: PUSH1 0x20
000009b8: DUP2
000009b9: ADD
000009ba: SWAP2
000009bb: SWAP1
000009bc: SWAP2
000009bd: MSTORE
000009be: PUSH1 0x40
000009c0: ADD
000009c1: PUSH1 0x00
000009c3: KECCAK256
000009c4: PUSH1 0x01
000009c6: ADD
000009c7: SSTORE
000009c8: JUMPDEST
000009c9: DUP1
000009ca: PUSH2 0x09d2
000009cd: DUP2
000009ce: PUSH2 0x1c6c
000009d1: JUMP
000009d2: JUMPDEST
000009d3: SWAP2
000009d4: POP
000009d5: POP
000009d6: PUSH2 0x072c
000009d9: JUMP
000009da: JUMPDEST
000009db: POP
000009dc: PUSH32 0x19863caed14ed012a54f927e56250018b7ac3c04fd197e0edf23369f75a6ccd4
000009fd: DUP3
000009fe: DUP3
000009ff: PUSH1 0x40
00000a01: MLOAD
00000a02: PUSH2 0x0a0c
00000a05: SWAP3
00000a06: SWAP2
00000a07: SWAP1
00000a08: PUSH2 0x1ca4
00000a0b: JUMP
00000a0c: JUMPDEST
00000a0d: PUSH1 0x40
00000a0f: MLOAD
00000a10: DUP1
00000a11: SWAP2
00000a12: SUB
00000a13: SWAP1
00000a14: LOG1
00000a15: POP
00000a16: POP
00000a17: JUMP
00000a18: JUMPDEST
00000a19: PUSH1 0x01
00000a1b: SLOAD
00000a1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a31: AND
00000a32: CALLER
00000a33: EQ
00000a34: PUSH2 0x0a69
00000a37: JUMPI
00000a38: PUSH1 0x40
00000a3a: MLOAD
00000a3b: PUSH32 0x7c91ccdd00000000000000000000000000000000000000000000000000000000
00000a5c: DUP2
00000a5d: MSTORE
00000a5e: PUSH1 0x04
00000a60: ADD
00000a61: PUSH1 0x40
00000a63: MLOAD
00000a64: DUP1
00000a65: SWAP2
00000a66: SUB
00000a67: SWAP1
00000a68: REVERT
00000a69: JUMPDEST
00000a6a: PUSH2 0x0a72
00000a6d: CALLER
00000a6e: PUSH2 0x14dc
00000a71: JUMP
00000a72: JUMPDEST
00000a73: JUMP
00000a74: JUMPDEST
00000a75: PUSH1 0x00
00000a77: SLOAD
00000a78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a8d: AND
00000a8e: CALLER
00000a8f: EQ
00000a90: PUSH2 0x0ac5
00000a93: JUMPI
00000a94: PUSH1 0x40
00000a96: MLOAD
00000a97: PUSH32 0x5fc483c500000000000000000000000000000000000000000000000000000000
00000ab8: DUP2
00000ab9: MSTORE
00000aba: PUSH1 0x04
00000abc: ADD
00000abd: PUSH1 0x40
00000abf: MLOAD
00000ac0: DUP1
00000ac1: SWAP2
00000ac2: SUB
00000ac3: SWAP1
00000ac4: REVERT
00000ac5: JUMPDEST
00000ac6: PUSH1 0x00
00000ac8: JUMPDEST
00000ac9: DUP3
00000aca: DUP2
00000acb: LT
00000acc: ISZERO
00000acd: PUSH2 0x0b61
00000ad0: JUMPI
00000ad1: DUP2
00000ad2: PUSH1 0x07
00000ad4: PUSH1 0x00
00000ad6: DUP7
00000ad7: DUP7
00000ad8: DUP6
00000ad9: DUP2
00000ada: DUP2
00000adb: LT
00000adc: PUSH2 0x0ae7
00000adf: JUMPI
00000ae0: PUSH2 0x0ae7
00000ae3: PUSH2 0x1c3d
00000ae6: JUMP
00000ae7: JUMPDEST
00000ae8: SWAP1
00000ae9: POP
00000aea: PUSH1 0x20
00000aec: MUL
00000aed: ADD
00000aee: PUSH1 0x20
00000af0: DUP2
00000af1: ADD
00000af2: SWAP1
00000af3: PUSH2 0x0afc
00000af6: SWAP2
00000af7: SWAP1
00000af8: PUSH2 0x1a40
00000afb: JUMP
00000afc: JUMPDEST
00000afd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b12: AND
00000b13: DUP2
00000b14: MSTORE
00000b15: PUSH1 0x20
00000b17: DUP2
00000b18: ADD
00000b19: SWAP2
00000b1a: SWAP1
00000b1b: SWAP2
00000b1c: MSTORE
00000b1d: PUSH1 0x40
00000b1f: ADD
00000b20: PUSH1 0x00
00000b22: KECCAK256
00000b23: DUP1
00000b24: SLOAD
00000b25: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000b46: AND
00000b47: SWAP2
00000b48: ISZERO
00000b49: ISZERO
00000b4a: SWAP2
00000b4b: SWAP1
00000b4c: SWAP2
00000b4d: OR
00000b4e: SWAP1
00000b4f: SSTORE
00000b50: DUP1
00000b51: PUSH2 0x0b59
00000b54: DUP2
00000b55: PUSH2 0x1c6c
00000b58: JUMP
00000b59: JUMPDEST
00000b5a: SWAP2
00000b5b: POP
00000b5c: POP
00000b5d: PUSH2 0x0ac8
00000b60: JUMP
00000b61: JUMPDEST
00000b62: POP
00000b63: PUSH32 0xcb5b335e0174ef57b9a8fd87a033e135ab60b4bbd8119f877a7297f228e8409e
00000b84: DUP4
00000b85: DUP4
00000b86: DUP4
00000b87: PUSH1 0x40
00000b89: MLOAD
00000b8a: PUSH2 0x0b95
00000b8d: SWAP4
00000b8e: SWAP3
00000b8f: SWAP2
00000b90: SWAP1
00000b91: PUSH2 0x1d27
00000b94: JUMP
00000b95: JUMPDEST
00000b96: PUSH1 0x40
00000b98: MLOAD
00000b99: DUP1
00000b9a: SWAP2
00000b9b: SUB
00000b9c: SWAP1
00000b9d: LOG1
00000b9e: POP
00000b9f: POP
00000ba0: POP
00000ba1: JUMP
00000ba2: JUMPDEST
00000ba3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bb8: DUP2
00000bb9: AND
00000bba: PUSH1 0x00
00000bbc: SWAP1
00000bbd: DUP2
00000bbe: MSTORE
00000bbf: PUSH1 0x04
00000bc1: PUSH1 0x20
00000bc3: MSTORE
00000bc4: PUSH1 0x40
00000bc6: DUP2
00000bc7: KECCAK256
00000bc8: PUSH2 0x0bd0
00000bcb: SWAP1
00000bcc: PUSH2 0x1554
00000bcf: JUMP
00000bd0: JUMPDEST
00000bd1: SWAP3
00000bd2: SWAP2
00000bd3: POP
00000bd4: POP
00000bd5: JUMP
00000bd6: JUMPDEST
00000bd7: PUSH1 0x00
00000bd9: SLOAD
00000bda: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bef: AND
00000bf0: CALLER
00000bf1: EQ
00000bf2: PUSH2 0x0c27
00000bf5: JUMPI
00000bf6: PUSH1 0x40
00000bf8: MLOAD
00000bf9: PUSH32 0x5fc483c500000000000000000000000000000000000000000000000000000000
00000c1a: DUP2
00000c1b: MSTORE
00000c1c: PUSH1 0x04
00000c1e: ADD
00000c1f: PUSH1 0x40
00000c21: MLOAD
00000c22: DUP1
00000c23: SWAP2
00000c24: SUB
00000c25: SWAP1
00000c26: REVERT
00000c27: JUMPDEST
00000c28: PUSH1 0x01
00000c2a: DUP1
00000c2b: SLOAD
00000c2c: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000c4d: AND
00000c4e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c63: DUP4
00000c64: AND
00000c65: SWAP1
00000c66: DUP2
00000c67: OR
00000c68: SWAP1
00000c69: SWAP2
00000c6a: SSTORE
00000c6b: PUSH1 0x40
00000c6d: MLOAD
00000c6e: PUSH32 0x906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22
00000c8f: SWAP1
00000c90: PUSH1 0x00
00000c92: SWAP1
00000c93: LOG2
00000c94: POP
00000c95: JUMP
00000c96: JUMPDEST
00000c97: PUSH1 0x00
00000c99: SLOAD
00000c9a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000caf: AND
00000cb0: CALLER
00000cb1: EQ
00000cb2: PUSH2 0x0ce7
00000cb5: JUMPI
00000cb6: PUSH1 0x40
00000cb8: MLOAD
00000cb9: PUSH32 0x5fc483c500000000000000000000000000000000000000000000000000000000
00000cda: DUP2
00000cdb: MSTORE
00000cdc: PUSH1 0x04
00000cde: ADD
00000cdf: PUSH1 0x40
00000ce1: MLOAD
00000ce2: DUP1
00000ce3: SWAP2
00000ce4: SUB
00000ce5: SWAP1
00000ce6: REVERT
00000ce7: JUMPDEST
00000ce8: PUSH1 0x06
00000cea: DUP1
00000ceb: SLOAD
00000cec: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000d0d: AND
00000d0e: DUP3
00000d0f: ISZERO
00000d10: ISZERO
00000d11: SWAP1
00000d12: DUP2
00000d13: OR
00000d14: SWAP1
00000d15: SWAP2
00000d16: SSTORE
00000d17: PUSH1 0x40
00000d19: MLOAD
00000d1a: SWAP1
00000d1b: DUP2
00000d1c: MSTORE
00000d1d: PUSH32 0xff45a227927e6940d23f41f29349e50d3d67ef33e3285ad6ba04d7f77ce2315c
00000d3e: SWAP1
00000d3f: PUSH1 0x20
00000d41: ADD
00000d42: PUSH1 0x40
00000d44: MLOAD
00000d45: DUP1
00000d46: SWAP2
00000d47: SUB
00000d48: SWAP1
00000d49: LOG1
00000d4a: POP
00000d4b: JUMP
00000d4c: JUMPDEST
00000d4d: PUSH1 0x00
00000d4f: SLOAD
00000d50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d65: AND
00000d66: CALLER
00000d67: EQ
00000d68: PUSH2 0x0d9d
00000d6b: JUMPI
00000d6c: PUSH1 0x40
00000d6e: MLOAD
00000d6f: PUSH32 0x5fc483c500000000000000000000000000000000000000000000000000000000
00000d90: DUP2
00000d91: MSTORE
00000d92: PUSH1 0x04
00000d94: ADD
00000d95: PUSH1 0x40
00000d97: MLOAD
00000d98: DUP1
00000d99: SWAP2
00000d9a: SUB
00000d9b: SWAP1
00000d9c: REVERT
00000d9d: JUMPDEST
00000d9e: PUSH2 0x0da8
00000da1: DUP4
00000da2: DUP4
00000da3: DUP4
00000da4: PUSH2 0x15bb
00000da7: JUMP
00000da8: JUMPDEST
00000da9: POP
00000daa: POP
00000dab: POP
00000dac: JUMP
00000dad: JUMPDEST
00000dae: PUSH2 0x0dd8
00000db1: PUSH1 0x40
00000db3: MLOAD
00000db4: DUP1
00000db5: PUSH1 0x80
00000db7: ADD
00000db8: PUSH1 0x40
00000dba: MSTORE
00000dbb: DUP1
00000dbc: PUSH1 0x00
00000dbe: DUP2
00000dbf: MSTORE
00000dc0: PUSH1 0x20
00000dc2: ADD
00000dc3: PUSH1 0x00
00000dc5: DUP2
00000dc6: MSTORE
00000dc7: PUSH1 0x20
00000dc9: ADD
00000dca: PUSH1 0x00
00000dcc: DUP2
00000dcd: MSTORE
00000dce: PUSH1 0x20
00000dd0: ADD
00000dd1: PUSH1 0x00
00000dd3: DUP2
00000dd4: MSTORE
00000dd5: POP
00000dd6: SWAP1
00000dd7: JUMP
00000dd8: JUMPDEST
00000dd9: POP
00000dda: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000def: AND
00000df0: PUSH1 0x00
00000df2: SWAP1
00000df3: DUP2
00000df4: MSTORE
00000df5: PUSH1 0x04
00000df7: PUSH1 0x20
00000df9: SWAP1
00000dfa: DUP2
00000dfb: MSTORE
00000dfc: PUSH1 0x40
00000dfe: SWAP2
00000dff: DUP3
00000e00: SWAP1
00000e01: KECCAK256
00000e02: DUP3
00000e03: MLOAD
00000e04: PUSH1 0x80
00000e06: DUP2
00000e07: ADD
00000e08: DUP5
00000e09: MSTORE
00000e0a: DUP2
00000e0b: SLOAD
00000e0c: DUP2
00000e0d: MSTORE
00000e0e: PUSH1 0x01
00000e10: DUP3
00000e11: ADD
00000e12: SLOAD
00000e13: SWAP3
00000e14: DUP2
00000e15: ADD
00000e16: SWAP3
00000e17: SWAP1
00000e18: SWAP3
00000e19: MSTORE
00000e1a: PUSH1 0x02
00000e1c: DUP2
00000e1d: ADD
00000e1e: SLOAD
00000e1f: SWAP3
00000e20: DUP3
00000e21: ADD
00000e22: SWAP3
00000e23: SWAP1
00000e24: SWAP3
00000e25: MSTORE
00000e26: PUSH1 0x03
00000e28: SWAP1
00000e29: SWAP2
00000e2a: ADD
00000e2b: SLOAD
00000e2c: PUSH1 0x60
00000e2e: DUP3
00000e2f: ADD
00000e30: MSTORE
00000e31: SWAP1
00000e32: JUMP
00000e33: JUMPDEST
00000e34: PUSH1 0x40
00000e36: MLOAD
00000e37: PUSH32 0x89c1cf9a00000000000000000000000000000000000000000000000000000000
00000e58: DUP2
00000e59: MSTORE
00000e5a: PUSH1 0x04
00000e5c: DUP2
00000e5d: ADD
00000e5e: DUP3
00000e5f: SWAP1
00000e60: MSTORE
00000e61: PUSH1 0x00
00000e63: SWAP1
00000e64: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e79: DUP5
00000e7a: AND
00000e7b: SWAP1
00000e7c: PUSH4 0x89c1cf9a
00000e81: SWAP1
00000e82: PUSH1 0x24
00000e84: ADD
00000e85: PUSH1 0x20
00000e87: PUSH1 0x40
00000e89: MLOAD
00000e8a: DUP1
00000e8b: DUP4
00000e8c: SUB
00000e8d: DUP2
00000e8e: DUP7
00000e8f: GAS
00000e90: STATICCALL
00000e91: ISZERO
00000e92: DUP1
00000e93: ISZERO
00000e94: PUSH2 0x0ea1
00000e97: JUMPI
00000e98: RETURNDATASIZE
00000e99: PUSH1 0x00
00000e9b: DUP1
00000e9c: RETURNDATACOPY
00000e9d: RETURNDATASIZE
00000e9e: PUSH1 0x00
00000ea0: REVERT
00000ea1: JUMPDEST
00000ea2: POP
00000ea3: POP
00000ea4: POP
00000ea5: POP
00000ea6: PUSH1 0x40
00000ea8: MLOAD
00000ea9: RETURNDATASIZE
00000eaa: PUSH1 0x1f
00000eac: NOT
00000ead: PUSH1 0x1f
00000eaf: DUP3
00000eb0: ADD
00000eb1: AND
00000eb2: DUP3
00000eb3: ADD
00000eb4: DUP1
00000eb5: PUSH1 0x40
00000eb7: MSTORE
00000eb8: POP
00000eb9: DUP2
00000eba: ADD
00000ebb: SWAP1
00000ebc: PUSH2 0x0ec5
00000ebf: SWAP2
00000ec0: SWAP1
00000ec1: PUSH2 0x1d8d
00000ec4: JUMP
00000ec5: JUMPDEST
00000ec6: SWAP4
00000ec7: SWAP3
00000ec8: POP
00000ec9: POP
00000eca: POP
00000ecb: JUMP
00000ecc: JUMPDEST
00000ecd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ee2: DUP2
00000ee3: AND
00000ee4: PUSH1 0x00
00000ee6: SWAP1
00000ee7: DUP2
00000ee8: MSTORE
00000ee9: PUSH1 0x05
00000eeb: PUSH1 0x20
00000eed: MSTORE
00000eee: PUSH1 0x40
00000ef0: DUP2
00000ef1: KECCAK256
00000ef2: PUSH2 0x0bd0
00000ef5: SWAP1
00000ef6: PUSH2 0x1554
00000ef9: JUMP
00000efa: JUMPDEST
00000efb: PUSH1 0x06
00000efd: SLOAD
00000efe: PUSH1 0xff
00000f00: AND
00000f01: DUP1
00000f02: ISZERO
00000f03: PUSH2 0x0f1c
00000f06: JUMPI
00000f07: POP
00000f08: CALLER
00000f09: PUSH1 0x00
00000f0b: SWAP1
00000f0c: DUP2
00000f0d: MSTORE
00000f0e: PUSH1 0x07
00000f10: PUSH1 0x20
00000f12: MSTORE
00000f13: PUSH1 0x40
00000f15: SWAP1
00000f16: KECCAK256
00000f17: SLOAD
00000f18: PUSH1 0xff
00000f1a: AND
00000f1b: ISZERO
00000f1c: JUMPDEST
00000f1d: ISZERO
00000f1e: PUSH2 0x0f53
00000f21: JUMPI
00000f22: PUSH1 0x40
00000f24: MLOAD
00000f25: PUSH32 0x39218f3b00000000000000000000000000000000000000000000000000000000
00000f46: DUP2
00000f47: MSTORE
00000f48: PUSH1 0x04
00000f4a: ADD
00000f4b: PUSH1 0x40
00000f4d: MLOAD
00000f4e: DUP1
00000f4f: SWAP2
00000f50: SUB
00000f51: SWAP1
00000f52: REVERT
00000f53: JUMPDEST
00000f54: DUP3
00000f55: PUSH1 0x00
00000f57: SUB
00000f58: PUSH2 0x0f8d
00000f5b: JUMPI
00000f5c: PUSH1 0x40
00000f5e: MLOAD
00000f5f: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000
00000f80: DUP2
00000f81: MSTORE
00000f82: PUSH1 0x04
00000f84: ADD
00000f85: PUSH1 0x40
00000f87: MLOAD
00000f88: DUP1
00000f89: SWAP2
00000f8a: SUB
00000f8b: SWAP1
00000f8c: REVERT
00000f8d: JUMPDEST
00000f8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fa3: DUP2
00000fa4: AND
00000fa5: PUSH1 0x00
00000fa7: SWAP1
00000fa8: DUP2
00000fa9: MSTORE
00000faa: PUSH1 0x04
00000fac: PUSH1 0x20
00000fae: MSTORE
00000faf: PUSH1 0x40
00000fb1: DUP2
00000fb2: KECCAK256
00000fb3: PUSH1 0x02
00000fb5: ADD
00000fb6: SLOAD
00000fb7: SWAP1
00000fb8: SUB
00000fb9: PUSH2 0x0fee
00000fbc: JUMPI
00000fbd: PUSH1 0x40
00000fbf: MLOAD
00000fc0: PUSH32 0xb1efb84a00000000000000000000000000000000000000000000000000000000
00000fe1: DUP2
00000fe2: MSTORE
00000fe3: PUSH1 0x04
00000fe5: ADD
00000fe6: PUSH1 0x40
00000fe8: MLOAD
00000fe9: DUP1
00000fea: SWAP2
00000feb: SUB
00000fec: SWAP1
00000fed: REVERT
00000fee: JUMPDEST
00000fef: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001004: DUP2
00001005: AND
00001006: PUSH1 0x00
00001008: SWAP1
00001009: DUP2
0000100a: MSTORE
0000100b: PUSH1 0x04
0000100d: PUSH1 0x20
0000100f: MSTORE
00001010: PUSH1 0x40
00001012: SWAP1
00001013: KECCAK256
00001014: PUSH2 0x101e
00001017: SWAP1
00001018: DUP5
00001019: SWAP1
0000101a: PUSH2 0x16ab
0000101d: JUMP
0000101e: JUMPDEST
0000101f: PUSH2 0x1060
00001022: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001037: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00001058: AND
00001059: CALLER
0000105a: ADDRESS
0000105b: DUP7
0000105c: PUSH2 0x1708
0000105f: JUMP
00001060: JUMPDEST
00001061: DUP1
00001062: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001077: AND
00001078: PUSH4 0x1cbdf12b
0000107d: CALLVALUE
0000107e: DUP5
0000107f: DUP8
00001080: DUP8
00001081: PUSH1 0x40
00001083: MLOAD
00001084: PUSH1 0x20
00001086: ADD
00001087: PUSH2 0x10b2
0000108a: SWAP3
0000108b: SWAP2
0000108c: SWAP1
0000108d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010a2: SWAP3
000010a3: SWAP1
000010a4: SWAP3
000010a5: AND
000010a6: DUP3
000010a7: MSTORE
000010a8: PUSH1 0x20
000010aa: DUP3
000010ab: ADD
000010ac: MSTORE
000010ad: PUSH1 0x40
000010af: ADD
000010b0: SWAP1
000010b1: JUMP
000010b2: JUMPDEST
000010b3: PUSH1 0x40
000010b5: MLOAD
000010b6: PUSH1 0x20
000010b8: DUP2
000010b9: DUP4
000010ba: SUB
000010bb: SUB
000010bc: DUP2
000010bd: MSTORE
000010be: SWAP1
000010bf: PUSH1 0x40
000010c1: MSTORE
000010c2: PUSH1 0x40
000010c4: MLOAD
000010c5: DUP5
000010c6: PUSH4 0xffffffff
000010cb: AND
000010cc: PUSH1 0xe0
000010ce: SHL
000010cf: DUP2
000010d0: MSTORE
000010d1: PUSH1 0x04
000010d3: ADD
000010d4: PUSH2 0x10de
000010d7: SWAP3
000010d8: SWAP2
000010d9: SWAP1
000010da: PUSH2 0x1da6
000010dd: JUMP
000010de: JUMPDEST
000010df: PUSH1 0x00
000010e1: PUSH1 0x40
000010e3: MLOAD
000010e4: DUP1
000010e5: DUP4
000010e6: SUB
000010e7: DUP2
000010e8: DUP6
000010e9: DUP9
000010ea: DUP1
000010eb: EXTCODESIZE
000010ec: ISZERO
000010ed: DUP1
000010ee: ISZERO
000010ef: PUSH2 0x10f7
000010f2: JUMPI
000010f3: PUSH1 0x00
000010f5: DUP1
000010f6: REVERT
000010f7: JUMPDEST
000010f8: POP
000010f9: GAS
000010fa: CALL
000010fb: ISZERO
000010fc: DUP1
000010fd: ISZERO
000010fe: PUSH2 0x110b
00001101: JUMPI
00001102: RETURNDATASIZE
00001103: PUSH1 0x00
00001105: DUP1
00001106: RETURNDATACOPY
00001107: RETURNDATASIZE
00001108: PUSH1 0x00
0000110a: REVERT
0000110b: JUMPDEST
0000110c: POP
0000110d: POP
0000110e: PUSH1 0x40
00001110: DUP1
00001111: MLOAD
00001112: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001127: DUP1
00001128: DUP8
00001129: AND
0000112a: DUP3
0000112b: MSTORE
0000112c: CALLER
0000112d: PUSH1 0x20
0000112f: DUP4
00001130: ADD
00001131: MSTORE
00001132: DUP10
00001133: AND
00001134: SWAP2
00001135: DUP2
00001136: ADD
00001137: SWAP2
00001138: SWAP1
00001139: SWAP2
0000113a: MSTORE
0000113b: PUSH1 0x60
0000113d: DUP2
0000113e: ADD
0000113f: DUP8
00001140: SWAP1
00001141: MSTORE
00001142: PUSH32 0x9474e087d8a0e83962ac44e292b4aba027426203ea66adfb1dd9f65795ff599a
00001163: SWAP4
00001164: POP
00001165: PUSH1 0x80
00001167: ADD
00001168: SWAP2
00001169: POP
0000116a: PUSH2 0x1170
0000116d: SWAP1
0000116e: POP
0000116f: JUMP
00001170: JUMPDEST
00001171: PUSH1 0x40
00001173: MLOAD
00001174: DUP1
00001175: SWAP2
00001176: SUB
00001177: SWAP1
00001178: LOG1
00001179: POP
0000117a: POP
0000117b: POP
0000117c: POP
0000117d: JUMP
0000117e: JUMPDEST
0000117f: PUSH2 0x11a9
00001182: PUSH1 0x40
00001184: MLOAD
00001185: DUP1
00001186: PUSH1 0x80
00001188: ADD
00001189: PUSH1 0x40
0000118b: MSTORE
0000118c: DUP1
0000118d: PUSH1 0x00
0000118f: DUP2
00001190: MSTORE
00001191: PUSH1 0x20
00001193: ADD
00001194: PUSH1 0x00
00001196: DUP2
00001197: MSTORE
00001198: PUSH1 0x20
0000119a: ADD
0000119b: PUSH1 0x00
0000119d: DUP2
0000119e: MSTORE
0000119f: PUSH1 0x20
000011a1: ADD
000011a2: PUSH1 0x00
000011a4: DUP2
000011a5: MSTORE
000011a6: POP
000011a7: SWAP1
000011a8: JUMP
000011a9: JUMPDEST
000011aa: POP
000011ab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011c0: AND
000011c1: PUSH1 0x00
000011c3: SWAP1
000011c4: DUP2
000011c5: MSTORE
000011c6: PUSH1 0x05
000011c8: PUSH1 0x20
000011ca: SWAP1
000011cb: DUP2
000011cc: MSTORE
000011cd: PUSH1 0x40
000011cf: SWAP2
000011d0: DUP3
000011d1: SWAP1
000011d2: KECCAK256
000011d3: DUP3
000011d4: MLOAD
000011d5: PUSH1 0x80
000011d7: DUP2
000011d8: ADD
000011d9: DUP5
000011da: MSTORE
000011db: DUP2
000011dc: SLOAD
000011dd: DUP2
000011de: MSTORE
000011df: PUSH1 0x01
000011e1: DUP3
000011e2: ADD
000011e3: SLOAD
000011e4: SWAP3
000011e5: DUP2
000011e6: ADD
000011e7: SWAP3
000011e8: SWAP1
000011e9: SWAP3
000011ea: MSTORE
000011eb: PUSH1 0x02
000011ed: DUP2
000011ee: ADD
000011ef: SLOAD
000011f0: SWAP3
000011f1: DUP3
000011f2: ADD
000011f3: SWAP3
000011f4: SWAP1
000011f5: SWAP3
000011f6: MSTORE
000011f7: PUSH1 0x03
000011f9: SWAP1
000011fa: SWAP2
000011fb: ADD
000011fc: SLOAD
000011fd: PUSH1 0x60
000011ff: DUP3
00001200: ADD
00001201: MSTORE
00001202: SWAP1
00001203: JUMP
00001204: JUMPDEST
00001205: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000121a: DUP2
0000121b: AND
0000121c: PUSH1 0x00
0000121e: SWAP1
0000121f: DUP2
00001220: MSTORE
00001221: PUSH1 0x05
00001223: PUSH1 0x20
00001225: MSTORE
00001226: PUSH1 0x40
00001228: DUP2
00001229: KECCAK256
0000122a: PUSH1 0x02
0000122c: ADD
0000122d: SLOAD
0000122e: SWAP1
0000122f: SUB
00001230: PUSH2 0x1265
00001233: JUMPI
00001234: PUSH1 0x40
00001236: MLOAD
00001237: PUSH32 0xb1efb84a00000000000000000000000000000000000000000000000000000000
00001258: DUP2
00001259: MSTORE
0000125a: PUSH1 0x04
0000125c: ADD
0000125d: PUSH1 0x40
0000125f: MLOAD
00001260: DUP1
00001261: SWAP2
00001262: SUB
00001263: SWAP1
00001264: REVERT
00001265: JUMPDEST
00001266: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000127b: DUP1
0000127c: DUP3
0000127d: AND
0000127e: PUSH1 0x00
00001280: DUP2
00001281: DUP2
00001282: MSTORE
00001283: PUSH1 0x02
00001285: PUSH1 0x20
00001287: SWAP1
00001288: DUP2
00001289: MSTORE
0000128a: PUSH1 0x40
0000128c: DUP1
0000128d: DUP4
0000128e: KECCAK256
0000128f: SWAP5
00001290: DUP8
00001291: AND
00001292: DUP4
00001293: MSTORE
00001294: SWAP4
00001295: DUP2
00001296: MSTORE
00001297: DUP4
00001298: DUP3
00001299: KECCAK256
0000129a: SLOAD
0000129b: SWAP3
0000129c: DUP3
0000129d: MSTORE
0000129e: PUSH1 0x05
000012a0: SWAP1
000012a1: MSTORE
000012a2: SWAP2
000012a3: DUP3
000012a4: KECCAK256
000012a5: SWAP1
000012a6: SWAP2
000012a7: SWAP1
000012a8: DUP2
000012a9: SWAP1
000012aa: PUSH2 0x12b4
000012ad: SWAP1
000012ae: DUP5
000012af: SWAP1
000012b0: PUSH2 0x13ae
000012b3: JUMP
000012b4: JUMPDEST
000012b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012ca: DUP1
000012cb: DUP8
000012cc: AND
000012cd: PUSH1 0x00
000012cf: DUP2
000012d0: DUP2
000012d1: MSTORE
000012d2: PUSH1 0x02
000012d4: PUSH1 0x20
000012d6: SWAP1
000012d7: DUP2
000012d8: MSTORE
000012d9: PUSH1 0x40
000012db: DUP1
000012dc: DUP4
000012dd: KECCAK256
000012de: SWAP5
000012df: DUP13
000012e0: AND
000012e1: DUP4
000012e2: MSTORE
000012e3: SWAP4
000012e4: DUP2
000012e5: MSTORE
000012e6: DUP4
000012e7: DUP3
000012e8: KECCAK256
000012e9: DUP6
000012ea: SWAP1
000012eb: SSTORE
000012ec: SWAP2
000012ed: DUP2
000012ee: MSTORE
000012ef: PUSH1 0x03
000012f1: SWAP1
000012f2: SWAP2
000012f3: MSTORE
000012f4: SWAP1
000012f5: DUP2
000012f6: KECCAK256
000012f7: DUP1
000012f8: SLOAD
000012f9: SWAP4
000012fa: SWAP6
000012fb: POP
000012fc: SWAP2
000012fd: SWAP4
000012fe: POP
000012ff: DUP5
00001300: SWAP3
00001301: PUSH2 0x130b
00001304: SWAP1
00001305: DUP5
00001306: SWAP1
00001307: PUSH2 0x1e21
0000130a: JUMP
0000130b: JUMPDEST
0000130c: SWAP1
0000130d: SWAP2
0000130e: SSTORE
0000130f: POP
00001310: PUSH2 0x1352
00001313: SWAP1
00001314: POP
00001315: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000132a: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
0000134b: AND
0000134c: DUP7
0000134d: DUP5
0000134e: PUSH2 0x1402
00001351: JUMP
00001352: JUMPDEST
00001353: PUSH1 0x40
00001355: DUP1
00001356: MLOAD
00001357: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000136c: DUP1
0000136d: DUP8
0000136e: AND
0000136f: DUP3
00001370: MSTORE
00001371: DUP8
00001372: AND
00001373: PUSH1 0x20
00001375: DUP3
00001376: ADD
00001377: MSTORE
00001378: SWAP1
00001379: DUP2
0000137a: ADD
0000137b: DUP4
0000137c: SWAP1
0000137d: MSTORE
0000137e: PUSH1 0x60
00001380: DUP2
00001381: ADD
00001382: DUP3
00001383: SWAP1
00001384: MSTORE
00001385: PUSH32 0xc77b48bb4899bc689b5733d1b7b8bfc0f70e7660295ad5f94841902db16ddae2
000013a6: SWAP1
000013a7: PUSH1 0x80
000013a9: ADD
000013aa: PUSH2 0x06c9
000013ad: JUMP
000013ae: JUMPDEST
000013af: PUSH1 0x00
000013b1: DUP1
000013b2: PUSH1 0x00
000013b4: PUSH2 0x13bc
000013b7: DUP5
000013b8: PUSH2 0x1554
000013bb: JUMP
000013bc: JUMPDEST
000013bd: TIMESTAMP
000013be: DUP6
000013bf: SSTORE
000013c0: SWAP1
000013c1: POP
000013c2: DUP5
000013c3: DUP2
000013c4: LT
000013c5: PUSH2 0x13e3
000013c8: JUMPI
000013c9: PUSH2 0x13d2
000013cc: DUP6
000013cd: DUP3
000013ce: PUSH2 0x1e21
000013d1: JUMP
000013d2: JUMPDEST
000013d3: PUSH1 0x03
000013d5: DUP6
000013d6: ADD
000013d7: SSTORE
000013d8: DUP5
000013d9: SWAP3
000013da: POP
000013db: PUSH1 0x00
000013dd: SWAP2
000013de: POP
000013df: PUSH2 0x13fa
000013e2: JUMP
000013e3: JUMPDEST
000013e4: PUSH1 0x00
000013e6: PUSH1 0x03
000013e8: DUP6
000013e9: ADD
000013ea: SSTORE
000013eb: SWAP2
000013ec: POP
000013ed: DUP2
000013ee: PUSH2 0x13f7
000013f1: DUP2
000013f2: DUP7
000013f3: PUSH2 0x1e21
000013f6: JUMP
000013f7: JUMPDEST
000013f8: SWAP2
000013f9: POP
000013fa: JUMPDEST
000013fb: POP
000013fc: SWAP3
000013fd: POP
000013fe: SWAP3
000013ff: SWAP1
00001400: POP
00001401: JUMP
00001402: JUMPDEST
00001403: PUSH1 0x00
00001405: PUSH1 0x40
00001407: MLOAD
00001408: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00001429: DUP2
0000142a: MSTORE
0000142b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001440: DUP5
00001441: AND
00001442: PUSH1 0x04
00001444: DUP3
00001445: ADD
00001446: MSTORE
00001447: DUP3
00001448: PUSH1 0x24
0000144a: DUP3
0000144b: ADD
0000144c: MSTORE
0000144d: PUSH1 0x20
0000144f: PUSH1 0x00
00001451: PUSH1 0x44
00001453: DUP4
00001454: PUSH1 0x00
00001456: DUP10
00001457: GAS
00001458: CALL
00001459: RETURNDATASIZE
0000145a: ISZERO
0000145b: PUSH1 0x1f
0000145d: RETURNDATASIZE
0000145e: GT
0000145f: PUSH1 0x01
00001461: PUSH1 0x00
00001463: MLOAD
00001464: EQ
00001465: AND
00001466: OR
00001467: AND
00001468: SWAP2
00001469: POP
0000146a: POP
0000146b: DUP1
0000146c: PUSH2 0x14d6
0000146f: JUMPI
00001470: PUSH1 0x40
00001472: MLOAD
00001473: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001494: DUP2
00001495: MSTORE
00001496: PUSH1 0x20
00001498: PUSH1 0x04
0000149a: DUP3
0000149b: ADD
0000149c: MSTORE
0000149d: PUSH1 0x0f
0000149f: PUSH1 0x24
000014a1: DUP3
000014a2: ADD
000014a3: MSTORE
000014a4: PUSH32 0x5452414e534645525f4641494c45440000000000000000000000000000000000
000014c5: PUSH1 0x44
000014c7: DUP3
000014c8: ADD
000014c9: MSTORE
000014ca: PUSH1 0x64
000014cc: ADD
000014cd: JUMPDEST
000014ce: PUSH1 0x40
000014d0: MLOAD
000014d1: DUP1
000014d2: SWAP2
000014d3: SUB
000014d4: SWAP1
000014d5: REVERT
000014d6: JUMPDEST
000014d7: POP
000014d8: POP
000014d9: POP
000014da: POP
000014db: JUMP
000014dc: JUMPDEST
000014dd: PUSH1 0x00
000014df: DUP1
000014e0: SLOAD
000014e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014f6: DUP4
000014f7: AND
000014f8: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001519: SWAP2
0000151a: DUP3
0000151b: AND
0000151c: DUP2
0000151d: OR
0000151e: DUP4
0000151f: SSTORE
00001520: PUSH1 0x01
00001522: DUP1
00001523: SLOAD
00001524: SWAP1
00001525: SWAP3
00001526: AND
00001527: SWAP1
00001528: SWAP2
00001529: SSTORE
0000152a: PUSH1 0x40
0000152c: MLOAD
0000152d: SWAP1
0000152e: SWAP2
0000152f: PUSH32 0xfbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f87
00001550: SWAP2
00001551: LOG2
00001552: POP
00001553: JUMP
00001554: JUMPDEST
00001555: DUP1
00001556: SLOAD
00001557: PUSH1 0x00
00001559: SWAP1
0000155a: DUP2
0000155b: SWAP1
0000155c: PUSH2 0x1565
0000155f: SWAP1
00001560: TIMESTAMP
00001561: PUSH2 0x1e21
00001564: JUMP
00001565: JUMPDEST
00001566: SWAP1
00001567: POP
00001568: PUSH1 0x00
0000156a: DUP4
0000156b: PUSH1 0x01
0000156d: ADD
0000156e: SLOAD
0000156f: DUP3
00001570: PUSH2 0x1579
00001573: SWAP2
00001574: SWAP1
00001575: PUSH2 0x1e38
00001578: JUMP
00001579: JUMPDEST
0000157a: SWAP1
0000157b: POP
0000157c: DUP4
0000157d: PUSH1 0x02
0000157f: ADD
00001580: SLOAD
00001581: DUP5
00001582: PUSH1 0x03
00001584: ADD
00001585: SLOAD
00001586: DUP3
00001587: PUSH2 0x1590
0000158a: SWAP2
0000158b: SWAP1
0000158c: PUSH2 0x1c25
0000158f: JUMP
00001590: JUMPDEST
00001591: GT
00001592: ISZERO
00001593: PUSH2 0x15a2
00001596: JUMPI
00001597: DUP4
00001598: PUSH1 0x02
0000159a: ADD
0000159b: SLOAD
0000159c: SWAP3
0000159d: POP
0000159e: PUSH2 0x15b4
000015a1: JUMP
000015a2: JUMPDEST
000015a3: PUSH1 0x03
000015a5: DUP5
000015a6: ADD
000015a7: SLOAD
000015a8: PUSH2 0x15b1
000015ab: SWAP1
000015ac: DUP3
000015ad: PUSH2 0x1c25
000015b0: JUMP
000015b1: JUMPDEST
000015b2: SWAP3
000015b3: POP
000015b4: JUMPDEST
000015b5: POP
000015b6: POP
000015b7: SWAP2
000015b8: SWAP1
000015b9: POP
000015ba: JUMP
000015bb: JUMPDEST
000015bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015d1: DUP3
000015d2: AND
000015d3: PUSH2 0x1608
000015d6: JUMPI
000015d7: PUSH1 0x40
000015d9: MLOAD
000015da: PUSH32 0xd92e233d00000000000000000000000000000000000000000000000000000000
000015fb: DUP2
000015fc: MSTORE
000015fd: PUSH1 0x04
000015ff: ADD
00001600: PUSH1 0x40
00001602: MLOAD
00001603: DUP1
00001604: SWAP2
00001605: SUB
00001606: SWAP1
00001607: REVERT
00001608: JUMPDEST
00001609: PUSH32 0xffffffffffffffffffffffff1111111111111111111111111111111111111112
0000162a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000163f: DUP5
00001640: AND
00001641: ADD
00001642: PUSH2 0x164f
00001645: JUMPI
00001646: PUSH2 0x0da8
00001649: DUP3
0000164a: DUP3
0000164b: PUSH2 0x17fa
0000164e: JUMP
0000164f: JUMPDEST
00001650: DUP3
00001651: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001666: AND
00001667: EXTCODESIZE
00001668: PUSH1 0x00
0000166a: SUB
0000166b: PUSH2 0x16a0
0000166e: JUMPI
0000166f: PUSH1 0x40
00001671: MLOAD
00001672: PUSH32 0x1eb00b0600000000000000000000000000000000000000000000000000000000
00001693: DUP2
00001694: MSTORE
00001695: PUSH1 0x04
00001697: ADD
00001698: PUSH1 0x40
0000169a: MLOAD
0000169b: DUP1
0000169c: SWAP2
0000169d: SUB
0000169e: SWAP1
0000169f: REVERT
000016a0: JUMPDEST
000016a1: PUSH2 0x0da8
000016a4: DUP4
000016a5: DUP4
000016a6: DUP4
000016a7: PUSH2 0x1402
000016aa: JUMP
000016ab: JUMPDEST
000016ac: PUSH1 0x00
000016ae: PUSH2 0x16b6
000016b1: DUP3
000016b2: PUSH2 0x1554
000016b5: JUMP
000016b6: JUMPDEST
000016b7: SWAP1
000016b8: POP
000016b9: DUP3
000016ba: DUP2
000016bb: LT
000016bc: PUSH2 0x16d6
000016bf: JUMPI
000016c0: TIMESTAMP
000016c1: DUP3
000016c2: SSTORE
000016c3: PUSH2 0x16cc
000016c6: DUP4
000016c7: DUP3
000016c8: PUSH2 0x1e21
000016cb: JUMP
000016cc: JUMPDEST
000016cd: PUSH1 0x03
000016cf: DUP4
000016d0: ADD
000016d1: SSTORE
000016d2: POP
000016d3: POP
000016d4: POP
000016d5: JUMP
000016d6: JUMPDEST
000016d7: PUSH1 0x40
000016d9: MLOAD
000016da: PUSH32 0x47ebad2000000000000000000000000000000000000000000000000000000000
000016fb: DUP2
000016fc: MSTORE
000016fd: PUSH1 0x04
000016ff: ADD
00001700: PUSH1 0x40
00001702: MLOAD
00001703: DUP1
00001704: SWAP2
00001705: SUB
00001706: SWAP1
00001707: REVERT
00001708: JUMPDEST
00001709: PUSH1 0x00
0000170b: PUSH1 0x40
0000170d: MLOAD
0000170e: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
0000172f: DUP2
00001730: MSTORE
00001731: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001746: DUP6
00001747: AND
00001748: PUSH1 0x04
0000174a: DUP3
0000174b: ADD
0000174c: MSTORE
0000174d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001762: DUP5
00001763: AND
00001764: PUSH1 0x24
00001766: DUP3
00001767: ADD
00001768: MSTORE
00001769: DUP3
0000176a: PUSH1 0x44
0000176c: DUP3
0000176d: ADD
0000176e: MSTORE
0000176f: PUSH1 0x20
00001771: PUSH1 0x00
00001773: PUSH1 0x64
00001775: DUP4
00001776: PUSH1 0x00
00001778: DUP11
00001779: GAS
0000177a: CALL
0000177b: RETURNDATASIZE
0000177c: ISZERO
0000177d: PUSH1 0x1f
0000177f: RETURNDATASIZE
00001780: GT
00001781: PUSH1 0x01
00001783: PUSH1 0x00
00001785: MLOAD
00001786: EQ
00001787: AND
00001788: OR
00001789: AND
0000178a: SWAP2
0000178b: POP
0000178c: POP
0000178d: DUP1
0000178e: PUSH2 0x17f3
00001791: JUMPI
00001792: PUSH1 0x40
00001794: MLOAD
00001795: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000017b6: DUP2
000017b7: MSTORE
000017b8: PUSH1 0x20
000017ba: PUSH1 0x04
000017bc: DUP3
000017bd: ADD
000017be: MSTORE
000017bf: PUSH1 0x14
000017c1: PUSH1 0x24
000017c3: DUP3
000017c4: ADD
000017c5: MSTORE
000017c6: PUSH32 0x5452414e534645525f46524f4d5f4641494c4544000000000000000000000000
000017e7: PUSH1 0x44
000017e9: DUP3
000017ea: ADD
000017eb: MSTORE
000017ec: PUSH1 0x64
000017ee: ADD
000017ef: PUSH2 0x14cd
000017f2: JUMP
000017f3: JUMPDEST
000017f4: POP
000017f5: POP
000017f6: POP
000017f7: POP
000017f8: POP
000017f9: JUMP
000017fa: JUMPDEST
000017fb: PUSH1 0x00
000017fd: DUP1
000017fe: PUSH1 0x00
00001800: DUP1
00001801: PUSH1 0x00
00001803: DUP6
00001804: DUP8
00001805: GAS
00001806: CALL
00001807: SWAP1
00001808: POP
00001809: DUP1
0000180a: PUSH2 0x0da8
0000180d: JUMPI
0000180e: PUSH1 0x40
00001810: MLOAD
00001811: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001832: DUP2
00001833: MSTORE
00001834: PUSH1 0x20
00001836: PUSH1 0x04
00001838: DUP3
00001839: ADD
0000183a: MSTORE
0000183b: PUSH1 0x13
0000183d: PUSH1 0x24
0000183f: DUP3
00001840: ADD
00001841: MSTORE
00001842: PUSH32 0x4554485f5452414e534645525f4641494c454400000000000000000000000000
00001863: PUSH1 0x44
00001865: DUP3
00001866: ADD
00001867: MSTORE
00001868: PUSH1 0x64
0000186a: ADD
0000186b: PUSH2 0x14cd
0000186e: JUMP
0000186f: JUMPDEST
00001870: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001891: PUSH1 0x00
00001893: MSTORE
00001894: PUSH1 0x41
00001896: PUSH1 0x04
00001898: MSTORE
00001899: PUSH1 0x24
0000189b: PUSH1 0x00
0000189d: REVERT
0000189e: JUMPDEST
0000189f: PUSH1 0x00
000018a1: PUSH1 0x20
000018a3: DUP3
000018a4: DUP5
000018a5: SUB
000018a6: SLT
000018a7: ISZERO
000018a8: PUSH2 0x18b0
000018ab: JUMPI
000018ac: PUSH1 0x00
000018ae: DUP1
000018af: REVERT
000018b0: JUMPDEST
000018b1: DUP2
000018b2: CALLDATALOAD
000018b3: PUSH8 0xffffffffffffffff
000018bc: DUP1
000018bd: DUP3
000018be: GT
000018bf: ISZERO
000018c0: PUSH2 0x18c8
000018c3: JUMPI
000018c4: PUSH1 0x00
000018c6: DUP1
000018c7: REVERT
000018c8: JUMPDEST
000018c9: DUP2
000018ca: DUP5
000018cb: ADD
000018cc: SWAP2
000018cd: POP
000018ce: DUP5
000018cf: PUSH1 0x1f
000018d1: DUP4
000018d2: ADD
000018d3: SLT
000018d4: PUSH2 0x18dc
000018d7: JUMPI
000018d8: PUSH1 0x00
000018da: DUP1
000018db: REVERT
000018dc: JUMPDEST
000018dd: DUP2
000018de: CALLDATALOAD
000018df: DUP2
000018e0: DUP2
000018e1: GT
000018e2: ISZERO
000018e3: PUSH2 0x18ee
000018e6: JUMPI
000018e7: PUSH2 0x18ee
000018ea: PUSH2 0x186f
000018ed: JUMP
000018ee: JUMPDEST
000018ef: PUSH1 0x40
000018f1: MLOAD
000018f2: PUSH1 0x1f
000018f4: DUP3
000018f5: ADD
000018f6: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001917: SWAP1
00001918: DUP2
00001919: AND
0000191a: PUSH1 0x3f
0000191c: ADD
0000191d: AND
0000191e: DUP2
0000191f: ADD
00001920: SWAP1
00001921: DUP4
00001922: DUP3
00001923: GT
00001924: DUP2
00001925: DUP4
00001926: LT
00001927: OR
00001928: ISZERO
00001929: PUSH2 0x1934
0000192c: JUMPI
0000192d: PUSH2 0x1934
00001930: PUSH2 0x186f
00001933: JUMP
00001934: JUMPDEST
00001935: DUP2
00001936: PUSH1 0x40
00001938: MSTORE
00001939: DUP3
0000193a: DUP2
0000193b: MSTORE
0000193c: DUP8
0000193d: PUSH1 0x20
0000193f: DUP5
00001940: DUP8
00001941: ADD
00001942: ADD
00001943: GT
00001944: ISZERO
00001945: PUSH2 0x194d
00001948: JUMPI
00001949: PUSH1 0x00
0000194b: DUP1
0000194c: REVERT
0000194d: JUMPDEST
0000194e: DUP3
0000194f: PUSH1 0x20
00001951: DUP7
00001952: ADD
00001953: PUSH1 0x20
00001955: DUP4
00001956: ADD
00001957: CALLDATACOPY
00001958: PUSH1 0x00
0000195a: SWAP3
0000195b: DUP2
0000195c: ADD
0000195d: PUSH1 0x20
0000195f: ADD
00001960: SWAP3
00001961: SWAP1
00001962: SWAP3
00001963: MSTORE
00001964: POP
00001965: SWAP6
00001966: SWAP5
00001967: POP
00001968: POP
00001969: POP
0000196a: POP
0000196b: POP
0000196c: JUMP
0000196d: JUMPDEST
0000196e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001983: DUP2
00001984: AND
00001985: DUP2
00001986: EQ
00001987: PUSH2 0x198f
0000198a: JUMPI
0000198b: PUSH1 0x00
0000198d: DUP1
0000198e: REVERT
0000198f: JUMPDEST
00001990: POP
00001991: JUMP
00001992: JUMPDEST
00001993: PUSH1 0x00
00001995: DUP1
00001996: PUSH1 0x40
00001998: DUP4
00001999: DUP6
0000199a: SUB
0000199b: SLT
0000199c: ISZERO
0000199d: PUSH2 0x19a5
000019a0: JUMPI
000019a1: PUSH1 0x00
000019a3: DUP1
000019a4: REVERT
000019a5: JUMPDEST
000019a6: DUP3
000019a7: CALLDATALOAD
000019a8: PUSH2 0x19b0
000019ab: DUP2
000019ac: PUSH2 0x196d
000019af: JUMP
000019b0: JUMPDEST
000019b1: SWAP2
000019b2: POP
000019b3: PUSH1 0x20
000019b5: DUP4
000019b6: ADD
000019b7: CALLDATALOAD
000019b8: PUSH2 0x19c0
000019bb: DUP2
000019bc: PUSH2 0x196d
000019bf: JUMP
000019c0: JUMPDEST
000019c1: DUP1
000019c2: SWAP2
000019c3: POP
000019c4: POP
000019c5: SWAP3
000019c6: POP
000019c7: SWAP3
000019c8: SWAP1
000019c9: POP
000019ca: JUMP
000019cb: JUMPDEST
000019cc: PUSH1 0x00
000019ce: DUP1
000019cf: PUSH1 0x20
000019d1: DUP4
000019d2: DUP6
000019d3: SUB
000019d4: SLT
000019d5: ISZERO
000019d6: PUSH2 0x19de
000019d9: JUMPI
000019da: PUSH1 0x00
000019dc: DUP1
000019dd: REVERT
000019de: JUMPDEST
000019df: DUP3
000019e0: CALLDATALOAD
000019e1: PUSH8 0xffffffffffffffff
000019ea: DUP1
000019eb: DUP3
000019ec: GT
000019ed: ISZERO
000019ee: PUSH2 0x19f6
000019f1: JUMPI
000019f2: PUSH1 0x00
000019f4: DUP1
000019f5: REVERT
000019f6: JUMPDEST
000019f7: DUP2
000019f8: DUP6
000019f9: ADD
000019fa: SWAP2
000019fb: POP
000019fc: DUP6
000019fd: PUSH1 0x1f
000019ff: DUP4
00001a00: ADD
00001a01: SLT
00001a02: PUSH2 0x1a0a
00001a05: JUMPI
00001a06: PUSH1 0x00
00001a08: DUP1
00001a09: REVERT
00001a0a: JUMPDEST
00001a0b: DUP2
00001a0c: CALLDATALOAD
00001a0d: DUP2
00001a0e: DUP2
00001a0f: GT
00001a10: ISZERO
00001a11: PUSH2 0x1a19
00001a14: JUMPI
00001a15: PUSH1 0x00
00001a17: DUP1
00001a18: REVERT
00001a19: JUMPDEST
00001a1a: DUP7
00001a1b: PUSH1 0x20
00001a1d: DUP3
00001a1e: PUSH1 0x07
00001a20: SHL
00001a21: DUP6
00001a22: ADD
00001a23: ADD
00001a24: GT
00001a25: ISZERO
00001a26: PUSH2 0x1a2e
00001a29: JUMPI
00001a2a: PUSH1 0x00
00001a2c: DUP1
00001a2d: REVERT
00001a2e: JUMPDEST
00001a2f: PUSH1 0x20
00001a31: SWAP3
00001a32: SWAP1
00001a33: SWAP3
00001a34: ADD
00001a35: SWAP7
00001a36: SWAP2
00001a37: SWAP6
00001a38: POP
00001a39: SWAP1
00001a3a: SWAP4
00001a3b: POP
00001a3c: POP
00001a3d: POP
00001a3e: POP
00001a3f: JUMP
00001a40: JUMPDEST
00001a41: PUSH1 0x00
00001a43: PUSH1 0x20
00001a45: DUP3
00001a46: DUP5
00001a47: SUB
00001a48: SLT
00001a49: ISZERO
00001a4a: PUSH2 0x1a52
00001a4d: JUMPI
00001a4e: PUSH1 0x00
00001a50: DUP1
00001a51: REVERT
00001a52: JUMPDEST
00001a53: DUP2
00001a54: CALLDATALOAD
00001a55: PUSH2 0x0ec5
00001a58: DUP2
00001a59: PUSH2 0x196d
00001a5c: JUMP
00001a5d: JUMPDEST
00001a5e: DUP1
00001a5f: CALLDATALOAD
00001a60: DUP1
00001a61: ISZERO
00001a62: ISZERO
00001a63: DUP2
00001a64: EQ
00001a65: PUSH2 0x1a6d
00001a68: JUMPI
00001a69: PUSH1 0x00
00001a6b: DUP1
00001a6c: REVERT
00001a6d: JUMPDEST
00001a6e: SWAP2
00001a6f: SWAP1
00001a70: POP
00001a71: JUMP
00001a72: JUMPDEST
00001a73: PUSH1 0x00
00001a75: DUP1
00001a76: PUSH1 0x00
00001a78: PUSH1 0x40
00001a7a: DUP5
00001a7b: DUP7
00001a7c: SUB
00001a7d: SLT
00001a7e: ISZERO
00001a7f: PUSH2 0x1a87
00001a82: JUMPI
00001a83: PUSH1 0x00
00001a85: DUP1
00001a86: REVERT
00001a87: JUMPDEST
00001a88: DUP4
00001a89: CALLDATALOAD
00001a8a: PUSH8 0xffffffffffffffff
00001a93: DUP1
00001a94: DUP3
00001a95: GT
00001a96: ISZERO
00001a97: PUSH2 0x1a9f
00001a9a: JUMPI
00001a9b: PUSH1 0x00
00001a9d: DUP1
00001a9e: REVERT
00001a9f: JUMPDEST
00001aa0: DUP2
00001aa1: DUP7
00001aa2: ADD
00001aa3: SWAP2
00001aa4: POP
00001aa5: DUP7
00001aa6: PUSH1 0x1f
00001aa8: DUP4
00001aa9: ADD
00001aaa: SLT
00001aab: PUSH2 0x1ab3
00001aae: JUMPI
00001aaf: PUSH1 0x00
00001ab1: DUP1
00001ab2: REVERT
00001ab3: JUMPDEST
00001ab4: DUP2
00001ab5: CALLDATALOAD
00001ab6: DUP2
00001ab7: DUP2
00001ab8: GT
00001ab9: ISZERO
00001aba: PUSH2 0x1ac2
00001abd: JUMPI
00001abe: PUSH1 0x00
00001ac0: DUP1
00001ac1: REVERT
00001ac2: JUMPDEST
00001ac3: DUP8
00001ac4: PUSH1 0x20
00001ac6: DUP3
00001ac7: PUSH1 0x05
00001ac9: SHL
00001aca: DUP6
00001acb: ADD
00001acc: ADD
00001acd: GT
00001ace: ISZERO
00001acf: PUSH2 0x1ad7
00001ad2: JUMPI
00001ad3: PUSH1 0x00
00001ad5: DUP1
00001ad6: REVERT
00001ad7: JUMPDEST
00001ad8: PUSH1 0x20
00001ada: SWAP3
00001adb: DUP4
00001adc: ADD
00001add: SWAP6
00001ade: POP
00001adf: SWAP4
00001ae0: POP
00001ae1: PUSH2 0x1aed
00001ae4: SWAP2
00001ae5: DUP7
00001ae6: ADD
00001ae7: SWAP1
00001ae8: POP
00001ae9: PUSH2 0x1a5d
00001aec: JUMP
00001aed: JUMPDEST
00001aee: SWAP1
00001aef: POP
00001af0: SWAP3
00001af1: POP
00001af2: SWAP3
00001af3: POP
00001af4: SWAP3
00001af5: JUMP
00001af6: JUMPDEST
00001af7: PUSH1 0x00
00001af9: PUSH1 0x20
00001afb: DUP3
00001afc: DUP5
00001afd: SUB
00001afe: SLT
00001aff: ISZERO
00001b00: PUSH2 0x1b08
00001b03: JUMPI
00001b04: PUSH1 0x00
00001b06: DUP1
00001b07: REVERT
00001b08: JUMPDEST
00001b09: PUSH2 0x0ec5
00001b0c: DUP3
00001b0d: PUSH2 0x1a5d
00001b10: JUMP
00001b11: JUMPDEST
00001b12: PUSH1 0x00
00001b14: DUP1
00001b15: PUSH1 0x00
00001b17: PUSH1 0x60
00001b19: DUP5
00001b1a: DUP7
00001b1b: SUB
00001b1c: SLT
00001b1d: ISZERO
00001b1e: PUSH2 0x1b26
00001b21: JUMPI
00001b22: PUSH1 0x00
00001b24: DUP1
00001b25: REVERT
00001b26: JUMPDEST
00001b27: DUP4
00001b28: CALLDATALOAD
00001b29: PUSH2 0x1b31
00001b2c: DUP2
00001b2d: PUSH2 0x196d
00001b30: JUMP
00001b31: JUMPDEST
00001b32: SWAP3
00001b33: POP
00001b34: PUSH1 0x20
00001b36: DUP5
00001b37: ADD
00001b38: CALLDATALOAD
00001b39: PUSH2 0x1b41
00001b3c: DUP2
00001b3d: PUSH2 0x196d
00001b40: JUMP
00001b41: JUMPDEST
00001b42: SWAP3
00001b43: SWAP6
00001b44: SWAP3
00001b45: SWAP5
00001b46: POP
00001b47: POP
00001b48: POP
00001b49: PUSH1 0x40
00001b4b: SWAP2
00001b4c: SWAP1
00001b4d: SWAP2
00001b4e: ADD
00001b4f: CALLDATALOAD
00001b50: SWAP1
00001b51: JUMP
00001b52: JUMPDEST
00001b53: PUSH1 0x00
00001b55: DUP1
00001b56: PUSH1 0x40
00001b58: DUP4
00001b59: DUP6
00001b5a: SUB
00001b5b: SLT
00001b5c: ISZERO
00001b5d: PUSH2 0x1b65
00001b60: JUMPI
00001b61: PUSH1 0x00
00001b63: DUP1
00001b64: REVERT
00001b65: JUMPDEST
00001b66: DUP3
00001b67: CALLDATALOAD
00001b68: PUSH2 0x1b70
00001b6b: DUP2
00001b6c: PUSH2 0x196d
00001b6f: JUMP
00001b70: JUMPDEST
00001b71: SWAP5
00001b72: PUSH1 0x20
00001b74: SWAP4
00001b75: SWAP1
00001b76: SWAP4
00001b77: ADD
00001b78: CALLDATALOAD
00001b79: SWAP4
00001b7a: POP
00001b7b: POP
00001b7c: POP
00001b7d: JUMP
00001b7e: JUMPDEST
00001b7f: PUSH1 0x00
00001b81: DUP1
00001b82: PUSH1 0x00
00001b84: DUP1
00001b85: PUSH1 0x80
00001b87: DUP6
00001b88: DUP8
00001b89: SUB
00001b8a: SLT
00001b8b: ISZERO
00001b8c: PUSH2 0x1b94
00001b8f: JUMPI
00001b90: PUSH1 0x00
00001b92: DUP1
00001b93: REVERT
00001b94: JUMPDEST
00001b95: DUP5
00001b96: CALLDATALOAD
00001b97: PUSH2 0x1b9f
00001b9a: DUP2
00001b9b: PUSH2 0x196d
00001b9e: JUMP
00001b9f: JUMPDEST
00001ba0: SWAP4
00001ba1: POP
00001ba2: PUSH1 0x20
00001ba4: DUP6
00001ba5: ADD
00001ba6: CALLDATALOAD
00001ba7: SWAP3
00001ba8: POP
00001ba9: PUSH1 0x40
00001bab: DUP6
00001bac: ADD
00001bad: CALLDATALOAD
00001bae: SWAP2
00001baf: POP
00001bb0: PUSH1 0x60
00001bb2: DUP6
00001bb3: ADD
00001bb4: CALLDATALOAD
00001bb5: PUSH2 0x1bbd
00001bb8: DUP2
00001bb9: PUSH2 0x196d
00001bbc: JUMP
00001bbd: JUMPDEST
00001bbe: SWAP4
00001bbf: SWAP7
00001bc0: SWAP3
00001bc1: SWAP6
00001bc2: POP
00001bc3: SWAP1
00001bc4: SWAP4
00001bc5: POP
00001bc6: POP
00001bc7: JUMP
00001bc8: JUMPDEST
00001bc9: PUSH1 0x00
00001bcb: DUP1
00001bcc: PUSH1 0x40
00001bce: DUP4
00001bcf: DUP6
00001bd0: SUB
00001bd1: SLT
00001bd2: ISZERO
00001bd3: PUSH2 0x1bdb
00001bd6: JUMPI
00001bd7: PUSH1 0x00
00001bd9: DUP1
00001bda: REVERT
00001bdb: JUMPDEST
00001bdc: DUP3
00001bdd: MLOAD
00001bde: PUSH2 0x1be6
00001be1: DUP2
00001be2: PUSH2 0x196d
00001be5: JUMP
00001be6: JUMPDEST
00001be7: PUSH1 0x20
00001be9: SWAP4
00001bea: SWAP1
00001beb: SWAP4
00001bec: ADD
00001bed: MLOAD
00001bee: SWAP3
00001bef: SWAP5
00001bf0: SWAP3
00001bf1: SWAP4
00001bf2: POP
00001bf3: POP
00001bf4: POP
00001bf5: JUMP
00001bf6: JUMPDEST
00001bf7: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001c18: PUSH1 0x00
00001c1a: MSTORE
00001c1b: PUSH1 0x11
00001c1d: PUSH1 0x04
00001c1f: MSTORE
00001c20: PUSH1 0x24
00001c22: PUSH1 0x00
00001c24: REVERT
00001c25: JUMPDEST
00001c26: PUSH1 0x00
00001c28: DUP3
00001c29: NOT
00001c2a: DUP3
00001c2b: GT
00001c2c: ISZERO
00001c2d: PUSH2 0x1c38
00001c30: JUMPI
00001c31: PUSH2 0x1c38
00001c34: PUSH2 0x1bf6
00001c37: JUMP
00001c38: JUMPDEST
00001c39: POP
00001c3a: ADD
00001c3b: SWAP1
00001c3c: JUMP
00001c3d: JUMPDEST
00001c3e: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001c5f: PUSH1 0x00
00001c61: MSTORE
00001c62: PUSH1 0x32
00001c64: PUSH1 0x04
00001c66: MSTORE
00001c67: PUSH1 0x24
00001c69: PUSH1 0x00
00001c6b: REVERT
00001c6c: JUMPDEST
00001c6d: PUSH1 0x00
00001c6f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001c90: DUP3
00001c91: SUB
00001c92: PUSH2 0x1c9d
00001c95: JUMPI
00001c96: PUSH2 0x1c9d
00001c99: PUSH2 0x1bf6
00001c9c: JUMP
00001c9d: JUMPDEST
00001c9e: POP
00001c9f: PUSH1 0x01
00001ca1: ADD
00001ca2: SWAP1
00001ca3: JUMP
00001ca4: JUMPDEST
00001ca5: PUSH1 0x20
00001ca7: DUP1
00001ca8: DUP3
00001ca9: MSTORE
00001caa: DUP2
00001cab: DUP2
00001cac: ADD
00001cad: DUP4
00001cae: SWAP1
00001caf: MSTORE
00001cb0: PUSH1 0x00
00001cb2: SWAP1
00001cb3: PUSH1 0x40
00001cb5: DUP1
00001cb6: DUP5
00001cb7: ADD
00001cb8: DUP7
00001cb9: DUP5
00001cba: JUMPDEST
00001cbb: DUP8
00001cbc: DUP2
00001cbd: LT
00001cbe: ISZERO
00001cbf: PUSH2 0x1d1a
00001cc2: JUMPI
00001cc3: PUSH2 0x1ccb
00001cc6: DUP3
00001cc7: PUSH2 0x1a5d
00001cca: JUMP
00001ccb: JUMPDEST
00001ccc: ISZERO
00001ccd: ISZERO
00001cce: DUP4
00001ccf: MSTORE
00001cd0: DUP5
00001cd1: DUP3
00001cd2: ADD
00001cd3: CALLDATALOAD
00001cd4: PUSH2 0x1cdc
00001cd7: DUP2
00001cd8: PUSH2 0x196d
00001cdb: JUMP
00001cdc: JUMPDEST
00001cdd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001cf2: AND
00001cf3: DUP4
00001cf4: DUP7
00001cf5: ADD
00001cf6: MSTORE
00001cf7: DUP2
00001cf8: DUP5
00001cf9: ADD
00001cfa: CALLDATALOAD
00001cfb: DUP5
00001cfc: DUP5
00001cfd: ADD
00001cfe: MSTORE
00001cff: PUSH1 0x60
00001d01: DUP1
00001d02: DUP4
00001d03: ADD
00001d04: CALLDATALOAD
00001d05: SWAP1
00001d06: DUP5
00001d07: ADD
00001d08: MSTORE
00001d09: PUSH1 0x80
00001d0b: SWAP3
00001d0c: DUP4
00001d0d: ADD
00001d0e: SWAP3
00001d0f: SWAP1
00001d10: SWAP2
00001d11: ADD
00001d12: SWAP1
00001d13: PUSH1 0x01
00001d15: ADD
00001d16: PUSH2 0x1cba
00001d19: JUMP
00001d1a: JUMPDEST
00001d1b: POP
00001d1c: SWAP1
00001d1d: SWAP8
00001d1e: SWAP7
00001d1f: POP
00001d20: POP
00001d21: POP
00001d22: POP
00001d23: POP
00001d24: POP
00001d25: POP
00001d26: JUMP
00001d27: JUMPDEST
00001d28: PUSH1 0x40
00001d2a: DUP1
00001d2b: DUP3
00001d2c: MSTORE
00001d2d: DUP2
00001d2e: ADD
00001d2f: DUP4
00001d30: SWAP1
00001d31: MSTORE
00001d32: PUSH1 0x00
00001d34: DUP5
00001d35: PUSH1 0x60
00001d37: DUP4
00001d38: ADD
00001d39: DUP3
00001d3a: JUMPDEST
00001d3b: DUP7
00001d3c: DUP2
00001d3d: LT
00001d3e: ISZERO
00001d3f: PUSH2 0x1d77
00001d42: JUMPI
00001d43: DUP3
00001d44: CALLDATALOAD
00001d45: PUSH2 0x1d4d
00001d48: DUP2
00001d49: PUSH2 0x196d
00001d4c: JUMP
00001d4d: JUMPDEST
00001d4e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d63: AND
00001d64: DUP3
00001d65: MSTORE
00001d66: PUSH1 0x20
00001d68: SWAP3
00001d69: DUP4
00001d6a: ADD
00001d6b: SWAP3
00001d6c: SWAP1
00001d6d: SWAP2
00001d6e: ADD
00001d6f: SWAP1
00001d70: PUSH1 0x01
00001d72: ADD
00001d73: PUSH2 0x1d3a
00001d76: JUMP
00001d77: JUMPDEST
00001d78: POP
00001d79: DUP1
00001d7a: SWAP3
00001d7b: POP
00001d7c: POP
00001d7d: POP
00001d7e: DUP3
00001d7f: ISZERO
00001d80: ISZERO
00001d81: PUSH1 0x20
00001d83: DUP4
00001d84: ADD
00001d85: MSTORE
00001d86: SWAP5
00001d87: SWAP4
00001d88: POP
00001d89: POP
00001d8a: POP
00001d8b: POP
00001d8c: JUMP
00001d8d: JUMPDEST
00001d8e: PUSH1 0x00
00001d90: PUSH1 0x20
00001d92: DUP3
00001d93: DUP5
00001d94: SUB
00001d95: SLT
00001d96: ISZERO
00001d97: PUSH2 0x1d9f
00001d9a: JUMPI
00001d9b: PUSH1 0x00
00001d9d: DUP1
00001d9e: REVERT
00001d9f: JUMPDEST
00001da0: POP
00001da1: MLOAD
00001da2: SWAP2
00001da3: SWAP1
00001da4: POP
00001da5: JUMP
00001da6: JUMPDEST
00001da7: DUP3
00001da8: DUP2
00001da9: MSTORE
00001daa: PUSH1 0x00
00001dac: PUSH1 0x20
00001dae: PUSH1 0x40
00001db0: DUP2
00001db1: DUP5
00001db2: ADD
00001db3: MSTORE
00001db4: DUP4
00001db5: MLOAD
00001db6: DUP1
00001db7: PUSH1 0x40
00001db9: DUP6
00001dba: ADD
00001dbb: MSTORE
00001dbc: PUSH1 0x00
00001dbe: JUMPDEST
00001dbf: DUP2
00001dc0: DUP2
00001dc1: LT
00001dc2: ISZERO
00001dc3: PUSH2 0x1dda
00001dc6: JUMPI
00001dc7: DUP6
00001dc8: DUP2
00001dc9: ADD
00001dca: DUP4
00001dcb: ADD
00001dcc: MLOAD
00001dcd: DUP6
00001dce: DUP3
00001dcf: ADD
00001dd0: PUSH1 0x60
00001dd2: ADD
00001dd3: MSTORE
00001dd4: DUP3
00001dd5: ADD
00001dd6: PUSH2 0x1dbe
00001dd9: JUMP
00001dda: JUMPDEST
00001ddb: DUP2
00001ddc: DUP2
00001ddd: GT
00001dde: ISZERO
00001ddf: PUSH2 0x1dec
00001de2: JUMPI
00001de3: PUSH1 0x00
00001de5: PUSH1 0x60
00001de7: DUP4
00001de8: DUP8
00001de9: ADD
00001dea: ADD
00001deb: MSTORE
00001dec: JUMPDEST
00001ded: POP
00001dee: PUSH1 0x1f
00001df0: ADD
00001df1: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001e12: AND
00001e13: SWAP3
00001e14: SWAP1
00001e15: SWAP3
00001e16: ADD
00001e17: PUSH1 0x60
00001e19: ADD
00001e1a: SWAP5
00001e1b: SWAP4
00001e1c: POP
00001e1d: POP
00001e1e: POP
00001e1f: POP
00001e20: JUMP
00001e21: JUMPDEST
00001e22: PUSH1 0x00
00001e24: DUP3
00001e25: DUP3
00001e26: LT
00001e27: ISZERO
00001e28: PUSH2 0x1e33
00001e2b: JUMPI
00001e2c: PUSH2 0x1e33
00001e2f: PUSH2 0x1bf6
00001e32: JUMP
00001e33: JUMPDEST
00001e34: POP
00001e35: SUB
00001e36: SWAP1
00001e37: JUMP
00001e38: JUMPDEST
00001e39: PUSH1 0x00
00001e3b: DUP2
00001e3c: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001e5d: DIV
00001e5e: DUP4
00001e5f: GT
00001e60: DUP3
00001e61: ISZERO
00001e62: ISZERO
00001e63: AND
00001e64: ISZERO
00001e65: PUSH2 0x1e70
00001e68: JUMPI
00001e69: PUSH2 0x1e70
00001e6c: PUSH2 0x1bf6
00001e6f: JUMP
00001e70: JUMPDEST
00001e71: POP
00001e72: MUL
00001e73: SWAP1
00001e74: JUMP
00001e75: INVALID
00001e76: LOG2
00001e77: PUSH5 0x6970667358
00001e7d: UNKNOWN(0x22)
00001e7e: SLT
00001e7f: KECCAK256
00001e80: STATICCALL
00001e81: PUSH14 0x2f23a6fe0e0141a7ee7f9d69765c
00001e90: COINBASE
00001e91: CALLER
00001e92: LT
00001e93: EQ
00001e94: SHL
00001e95: UNKNOWN(0xD1)
00001e96: UNKNOWN(0x4F)
00001e97: PUSH6 0xf1421acdc52e
00001e9e: LOG1
00001e9f: UNKNOWN(0xAB)
00001ea0: PUSH5 0x736f6c6343
00001ea6: STOP
00001ea7: ADDMOD
00001ea8: UNKNOWN(0x0D)
00001ea9: STOP
00001eaa: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x9296382e4c17f9db68c8060adaa8d1a426ed4f43dfadc803d1551f4e919e770d
call_targets: 0x9371352ccef6f5b36efdfe90942ffe622ab77f1d
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x9296382e4c17f9db68c8060adaa8d1a426ed4f43dfadc803d1551f4e919e770d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9371352ccef6f5b36efdfe90942ffe622ab77f1d"
    ],
    "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": "0x9b4cd940",
            "selector": "0x9b4cd940",
            "calldata_variants": [
                "0x9b4cd940",
                "0x9b4cd9400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xad0f6694",
            "selector": "0xad0f6694",
            "calldata_variants": [
                "0xad0f6694",
                "0xad0f66940000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2b7c5cd",
            "selector": "0xf2b7c5cd",
            "calldata_variants": [
                "0xf2b7c5cd",
                "0xf2b7c5cd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x84f289cc",
            "selector": "0x84f289cc",
            "calldata_variants": [
                "0x84f289cc",
                "0x84f289cc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x864f6a7a",
            "selector": "0x864f6a7a",
            "calldata_variants": [
                "0x864f6a7a",
                "0x864f6a7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6ccae054",
            "selector": "0x6ccae054",
            "calldata_variants": [
                "0x6ccae054",
                "0x6ccae0540000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x755e1e24",
            "selector": "0x755e1e24",
            "calldata_variants": [
                "0x755e1e24",
                "0x755e1e240000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4346,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5208,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 6010,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [],
    "untrusted_call_count": 4
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x9296382e4c17f9db68c8060adaa8d1a426ed4f43dfadc803d1551f4e919e770d
call_targets: 0x9371352ccef6f5b36efdfe90942ffe622ab77f1d
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x9296382e4c17f9db68c8060adaa8d1a426ed4f43dfadc803d1551f4e919e770d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9371352ccef6f5b36efdfe90942ffe622ab77f1d"
    ],
    "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": "0x9b4cd940",
            "selector": "0x9b4cd940",
            "calldata_variants": [
                "0x9b4cd940",
                "0x9b4cd9400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xad0f6694",
            "selector": "0xad0f6694",
            "calldata_variants": [
                "0xad0f6694",
                "0xad0f66940000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2b7c5cd",
            "selector": "0xf2b7c5cd",
            "calldata_variants": [
                "0xf2b7c5cd",
                "0xf2b7c5cd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x84f289cc",
            "selector": "0x84f289cc",
            "calldata_variants": [
                "0x84f289cc",
                "0x84f289cc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x864f6a7a",
            "selector": "0x864f6a7a",
            "calldata_variants": [
                "0x864f6a7a",
                "0x864f6a7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6ccae054",
            "selector": "0x6ccae054",
            "calldata_variants": [
                "0x6ccae054",
                "0x6ccae0540000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x755e1e24",
            "selector": "0x755e1e24",
            "calldata_variants": [
                "0x755e1e24",
                "0x755e1e240000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4346,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5208,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 6010,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": []
}
medium auth codex Inbound handlers lack replay protection for cross-chain messages 75 no
view
evidence_json
{
    "evidence": "Inbound functions decode payload and mint/unlock immediately without any stored processed-message check; message identifiers are only used for pending accounting (or not present at all).",
    "locations": [
        "contracts/contracts/supertoken/SuperToken.sol:244",
        "contracts/contracts/supertoken/SuperTokenWithExecutionPayload.sol:267",
        "contracts/contracts/supertoken/SuperTokenVault.sol:236",
        "contracts/contracts/supertoken/SuperTokenVaultWithExecutionPayload.sol:259",
        "contracts/contracts/superbridge/Controller.sol:198",
        "contracts/contracts/superbridge/Vault.sol:157"
    ],
    "recommendation": "Persist and check a `processedMessages[msgId]` mapping (or hash of payload) in each inbound handler and revert on repeats. Ensure Controller/Vault payloads include a unique message ID from the bridge so they can enforce single execution.",
    "exploit_scenario": "If a relayer or compromised/misconfigured bridge submits the same inbound message twice, the destination contracts will mint/unlock the same amount again because no processed message ID tracking exists. In the execution-payload variants, a replay can also overwrite cached payloads and trigger duplicate execution."
}
low auth codex Plugs accept inbound messages without validating expected source chain/plug 65 no
view
evidence_json
{
    "evidence": "ConnectorPlug.inbound ignores the `siblingChainSlug_` parameter and SocketPlug.inbound only checks `msg.sender == socket__` before forwarding payloads.",
    "locations": [
        "contracts/contracts/superbridge/ConnectorPlug.sol:60",
        "contracts/contracts/supertoken/plugs/SocketPlug.sol:95"
    ],
    "recommendation": "Add explicit validation of `siblingChainSlug_` (and optionally remote plug address) against locally configured values before forwarding/processing inbound messages.",
    "exploit_scenario": "If the Socket/connector layer is misconfigured or compromised to route messages from an unexpected chain or plug, the inbound handlers will accept them and forward to the hub/token/vault, enabling unauthorized mint/unlock/execution."
}