478c78f6-b81e-47bf-86e8-3a178cfe290f
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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"]}]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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."
}
|