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

Analysis Run

019be3d7-52ed-7231-975b-72409c137e98

failed
Chain ID
1
Address
Block Number
Created
Thu, Jan 22, 2026 3:54 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
41271 artifact.fetch complete 1 / 3 2 months ago
41272 proxy.resolve complete 1 / 3 2 months ago
41273 tool.cast_disasm complete 1 / 3 2 months ago
41274 analysis.bundle complete 1 / 3 2 months ago
41275 capability.graph complete 1 / 3 2 months ago
41276 detector.run complete 1 / 3 2 months ago
41277 validation.fork complete 1 / 3 2 months ago
41460 report.consolidate complete 1 / 6 2 months ago
41461 tool.slither failed 2 / 2 2 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither
Status
failed slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-9n74fdm5) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-9n74fdm5) 'forge' returned non-zero exit code 1 Compiling 21 files with Solc 0.8.26 stdout: Solc 0.8.26 finished in 170.21ms Error: Compiler run failed: stderr: Error: Unimplemented feature (/solidity/libsolidity/codegen/ExpressionCompiler.cpp:1266):Require with a custom error is only available using the via-ir pipeline. Traceback (most recent call last): File "/var/www/tripwire/.venv/bin/slither", line 10, in <module> sys.exit(main()) ~~~~^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main main_impl(all_detector_classes=detectors, all_printer_classes=printers) ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl ) = process_all(filename, args, detector_classes, printer_classes) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all compilations = compile_all(target, **vars(args)) File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all compilations.append(CryticCompile(target, **kwargs)) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__ self._compile(**kwargs) ~~~~~~~~~~~~~^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile self._platform.compile(self, **kwargs) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile hardhat_like_parsing( ~~~~~~~~~~~~~~~~~~~~^ crytic_compile, str(self._target), build_directory, str(self._project_root) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing raise InvalidCompilation(txt) crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command? /tmp/slither-9n74fdm5/out/build-info is not a directory.
Attempts
2 / 2
Findings
0
Solc
View stderr
Traceback (most recent call last):
  File "/var/www/tripwire/worker/worker.py", line 198, in main
    payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
  File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
    return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
    stdout_text, stderr_text, result_json = _run_slither(
                                            ~~~~~~~~~~~~^
        workspace,
        ^^^^^^^^^^
    ...<4 lines>...
        target_path=target_path,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
    raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-9n74fdm5)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-9n74fdm5)
'forge' returned non-zero exit code 1
Compiling 21 files with Solc 0.8.26
stdout: Solc 0.8.26 finished in 170.21ms
Error: Compiler run failed:
stderr: Error: Unimplemented feature (/solidity/libsolidity/codegen/ExpressionCompiler.cpp:1266):Require with a custom error is only available using the via-ir pipeline.
Traceback (most recent call last):
  File "/var/www/tripwire/.venv/bin/slither", line 10, in <module>
    sys.exit(main())
             ~~~~^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main
    main_impl(all_detector_classes=detectors, all_printer_classes=printers)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all
    compilations = compile_all(target, **vars(args))
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all
    compilations.append(CryticCompile(target, **kwargs))
                        ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__
    self._compile(**kwargs)
    ~~~~~~~~~~~~~^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile
    self._platform.compile(self, **kwargs)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile
    hardhat_like_parsing(
    ~~~~~~~~~~~~~~~~~~~~^
        crytic_compile, str(self._target), build_directory, str(self._project_root)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing
    raise InvalidCompilation(txt)
crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command?
/tmp/slither-9n74fdm5/out/build-info is not a directory.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
1
No findings?
no
Summary
Relayer-controlled finalization has no on-chain validation of transfer data or fee, so a compromised relayer can drain escrowed ETH or misroute funds.
View stdout
{"no_findings":false,"summary":"Relayer-controlled finalization has no on-chain validation of transfer data or fee, so a compromised relayer can drain escrowed ETH or misroute funds.","findings":[{"severity":"high","category":"access_control","title":"Relayer can finalize arbitrary transfers without on-chain validation","exploit_scenario":"If the relayer key is compromised or malicious, it can call finalizeTransfer with recipient set to itself and _amount set up to the contract balance. Because no transfer data is stored and the function only checks sequential index and _amount >= _finalizationFee, the relayer can set _finalizationFee = _amount and drain all escrowed ETH in a single call.","recommendation":"Store transfer details (amount/recipient/fee hash) on initiateTransfer and require a matching proof on finalizeTransfer (e.g., merkle proof or threshold validator signatures). At minimum, enforce that _finalizationFee equals the stored counterpartyFinalizationFee and that the finalized transfer matches a recorded initiation.","evidence":"finalizeTransfer accepts arbitrary _recipient/_amount/_finalizationFee from the relayer and only checks _amount >= _finalizationFee and _counterpartyIdx == transferFinalizedIdx; initiateTransfer only emits an event and does not store transfer data for later validation.","locations":["contracts/standard-bridge/Gateway.sol:28","contracts/standard-bridge/Gateway.sol:45"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-2ykhsis5
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be4c6-f9d1-7962-9232-87b90150fed3
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers

thinking
**Preparing to read audit bundle**

I'm planning to read the AUDIT_BUNDLE file directly using a shell command to check available skills since the skill isn't named or clearly provided.
exec
/bin/bash -lc ls in /tmp/codex-2ykhsis5 succeeded in 8ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
lib

thinking
**Reading audit bundle file**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-2ykhsis5 succeeded in 6ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/interfaces/IGateway.sol
================================================================================
// SPDX-License-Identifier: BSL 1.1
pragma solidity 0.8.26;

/**
 * @title IGateway
 * @dev Interface for the Gateway contract in the standard bridge.
 */
interface IGateway {
    /**
     * @dev Emitted when a cross-chain transfer is initiated.
     * @param sender Address initiating the transfer.
     * @param recipient Address receiving the tokens.
     * @param amount Ether being transferred in wei.
     * @param transferIdx Current index of this gateway.



thinking
**Identifying potential validation inconsistencies**

Noted that initialization allows setting counterpartyFinalizationFee to zero without validation, which could be intentional but differs from setter requirements; also clarified that Solidity 0.8.26 supports require with custom errors, confirming usage of onlyRelayer modifier is valid.
thinking
**Confirming require with custom errors and assessing centralized trust risks**

Solidified that `require` with custom errors is allowed since Solidity 0.8.26, explaining the code’s pattern; highlighted that finalizeTransfer’s reliance on a trusted relayer without on-chain verification creates a centralization risk where a compromised relayer can arbitrarily drain funds, making this a key security consideration rather than a direct vulnerability.
thinking
**Flagging relayer trust issues and initializer validation gaps**

Key findings include the relayer’s full control to finalize arbitrary transfers and fees without on-chain validation, enabling fund diversion if compromised, plus missing checks in initializer allowing zero relayer or fee values that could cause misconfiguration; all external calls use safe patterns with proper reentrancy guards.
exec
/bin/bash -lc 'nl -ba contracts/standard-bridge/Gateway.sol' in /tmp/codex-2ykhsis5 succeeded in 9ms:
     1	// SPDX-License-Identifier: BSL 1.1
     2	pragma solidity 0.8.26;
     3	
     4	import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
     5	import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
     6	import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol";
     7	import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
     8	import {IGateway} from "../interfaces/IGateway.sol";
     9	import {GatewayStorage} from "./GatewayStorage.sol";
    10	
    11	abstract contract Gateway is IGateway, GatewayStorage,
    12	    Ownable2StepUpgradeable, UUPSUpgradeable, PausableUpgradeable, ReentrancyGuardUpgradeable {   
    13	
    14	    modifier onlyRelayer() {
    15	        require(msg.sender == relayer, SenderNotRelayer(msg.sender, relayer));
    16	        _;
    17	    }
    18	
    19	    /// @dev Initiates a transfer from the source chain gateway to its counterparty gateway on another chain.
    20	    /// @notice The _recipient is transferred eth on the destination chain via solidity's send function (with built-in gas limit).

thinking
**Locating initialize method in L1Gateway**
exec
/bin/bash -lc 'nl -ba contracts/standard-bridge/L1Gateway.sol' in /tmp/codex-2ykhsis5 succeeded in 10ms:
     1	// SPDX-License-Identifier: BSL 1.1
     2	pragma solidity 0.8.26;
     3	
     4	import {Gateway} from "./Gateway.sol";
     5	import {L1GatewayStorage} from "./L1GatewayStorage.sol";
     6	import {Errors} from "../utils/Errors.sol";
     7	
     8	/// @title L1Gateway
     9	/// @notice Gateway contract deployed on L1 enabling the mev-commit standard bridge.
    10	/// @dev This contract will escrow locked ETH, while a corresponding amount is minted from the SettlementGateway on the mev-commit chain.
    11	contract L1Gateway is L1GatewayStorage, Gateway {
    12	
    13	    /// @dev Emitted when a transfer needs withdrawal.
    14	    event TransferNeedsWithdrawal(address indexed recipient, uint256 amount);
    15	
    16	    /// @dev Emitted when a transfer is successful.
    17	    event TransferSuccess(address indexed recipient, uint256 amount);
    18	
    19	    error IncorrectEtherValueSent(uint256 msgValue, uint256 amountExpected);
    20	    error InsufficientContractBalance(uint256 thisContractBalance, uint256 amountRequested);


thinking
**Summarizing critical findings with locations and severity**

I'm detailing two main findings: first, the relayer-controlled finalizeTransfer lacks crucial validation, enabling arbitrary recipient/amount/fee manipulation without linkage to initiated transfers, located in Gateway.sol lines 45-53, categorized as high-severity access control risk due to centralization and compromise potential. Second, the initialize function lacks relayer and fee validation, allowing zero values and potential unauthorized initialization if the proxy isn't initialized immediately, posing a denial-of-service risk.
thinking
**Drafting detailed high-severity finding and JSON summary**

I'm preparing a JSON output with one high-severity access control finding about the relayer's ability to finalize arbitrary transfers without on-chain validation, risking full fund drain if compromised. Initialization issues are noted but classified as configuration risks and omitted from findings. The JSON will include summary, clear exploit scenario, recommendation, evidence, and precise code locations from Gateway.sol lines 28-53.
codex
{"no_findings":false,"summary":"Relayer-controlled finalization has no on-chain validation of transfer data or fee, so a compromised relayer can drain escrowed ETH or misroute funds.","findings":[{"severity":"high","category":"access_control","title":"Relayer can finalize arbitrary transfers without on-chain validation","exploit_scenario":"If the relayer key is compromised or malicious, it can call finalizeTransfer with recipient set to itself and _amount set up to the contract balance. Because no transfer data is stored and the function only checks sequential index and _amount >= _finalizationFee, the relayer can set _finalizationFee = _amount and drain all escrowed ETH in a single call.","recommendation":"Store transfer details (amount/recipient/fee hash) on initiateTransfer and require a matching proof on finalizeTransfer (e.g., merkle proof or threshold validator signatures). At minimum, enforce that _finalizationFee equals the stored counterpartyFinalizationFee and that the finalized transfer matches a recorded initiation.","evidence":"finalizeTransfer accepts arbitrary _recipient/_amount/_finalizationFee from the relayer and only checks _amount >= _finalizationFee and _counterpartyIdx == transferFinalizedIdx; initiateTransfer only emits an event and does not store transfer data for later validation.","locations":["contracts/standard-bridge/Gateway.sol:28","contracts/standard-bridge/Gateway.sol:45"]}]}
tokens used
19,243
Metadata
{
    "codex": {
        "ran_at": "2026-01-22T08:19:53.158424+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 18,
        "import_count": 18,
        "first_party_contracts_count": 6
    },
    "summary": "Relayer-controlled finalization has no on-chain validation of transfer data or fee, so a compromised relayer can drain escrowed ETH or misroute funds.",
    "raw_final": {
        "summary": "Relayer-controlled finalization has no on-chain validation of transfer data or fee, so a compromised relayer can drain escrowed ETH or misroute funds.",
        "findings": [
            {
                "title": "Relayer can finalize arbitrary transfers without on-chain validation",
                "category": "access_control",
                "evidence": "finalizeTransfer accepts arbitrary _recipient/_amount/_finalizationFee from the relayer and only checks _amount >= _finalizationFee and _counterpartyIdx == transferFinalizedIdx; initiateTransfer only emits an event and does not store transfer data for later validation.",
                "severity": "high",
                "locations": [
                    "contracts/standard-bridge/Gateway.sol:28",
                    "contracts/standard-bridge/Gateway.sol:45"
                ],
                "recommendation": "Store transfer details (amount/recipient/fee hash) on initiateTransfer and require a matching proof on finalizeTransfer (e.g., merkle proof or threshold validator signatures). At minimum, enforce that _finalizationFee equals the stored counterpartyFinalizationFee and that the finalized transfer matches a recorded initiation.",
                "exploit_scenario": "If the relayer key is compromised or malicious, it can call finalizeTransfer with recipient set to itself and _amount set up to the contract balance. Because no transfer data is stored and the function only checks sequential index and _amount >= _finalizationFee, the relayer can set _finalizationFee = _amount and drain all escrowed ETH in a single call."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
5
EXT*/BALANCE
5
Total opcodes
2529
Flags
delegatecall_present create_opcodes_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: ISZERO
0000000a: PUSH2 0x0025
0000000d: JUMPI
0000000e: JUMPDEST
0000000f: CALLDATASIZE
00000010: ISZERO
00000011: PUSH2 0x0023
00000014: JUMPI
00000015: PUSH4 0x5a93724d
0000001a: PUSH1 0xe0
0000001c: SHL
0000001d: PUSH0
0000001e: MSTORE
0000001f: PUSH1 0x04
00000021: PUSH0
00000022: REVERT
00000023: JUMPDEST
00000024: STOP
00000025: JUMPDEST
00000026: PUSH0
00000027: CALLDATALOAD
00000028: PUSH1 0xe0
0000002a: SHR
0000002b: DUP1
0000002c: PUSH4 0x169235ed
00000031: EQ
00000032: PUSH2 0x0bdf
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0x1794bb3c
0000003c: EQ
0000003d: PUSH2 0x09df
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0x22396f1d
00000047: EQ
00000048: PUSH2 0x09a8
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0x3f4ba83a
00000052: EQ
00000053: PUSH2 0x092a
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0x4f1ef286
0000005d: EQ
0000005e: PUSH2 0x0720
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0x51cff8d9
00000068: EQ
00000069: PUSH2 0x0650
0000006c: JUMPI
0000006d: DUP1
0000006e: PUSH4 0x52d1902d
00000073: EQ
00000074: PUSH2 0x05ea
00000077: JUMPI
00000078: DUP1
00000079: PUSH4 0x55f4bdfc
0000007e: EQ
0000007f: PUSH2 0x0585
00000082: JUMPI
00000083: DUP1
00000084: PUSH4 0x5c975abb
00000089: EQ
0000008a: PUSH2 0x0557
0000008d: JUMPI
0000008e: DUP1
0000008f: PUSH4 0x6548e9bc
00000094: EQ
00000095: PUSH2 0x04e0
00000098: JUMPI
00000099: DUP1
0000009a: PUSH4 0x715018a6
0000009f: EQ
000000a0: PUSH2 0x0463
000000a3: JUMPI
000000a4: DUP1
000000a5: PUSH4 0x79ba5097
000000aa: EQ
000000ab: PUSH2 0x0417
000000ae: JUMPI
000000af: DUP1
000000b0: PUSH4 0x8406c079
000000b5: EQ
000000b6: PUSH2 0x03ef
000000b9: JUMPI
000000ba: DUP1
000000bb: PUSH4 0x8456cb59
000000c0: EQ
000000c1: PUSH2 0x037e
000000c4: JUMPI
000000c5: DUP1
000000c6: PUSH4 0x8da5cb5b
000000cb: EQ
000000cc: PUSH2 0x034a
000000cf: JUMPI
000000d0: DUP1
000000d1: PUSH4 0xa2ff158d
000000d6: EQ
000000d7: PUSH2 0x032d
000000da: JUMPI
000000db: DUP1
000000dc: PUSH4 0xad3cb1cc
000000e1: EQ
000000e2: PUSH2 0x02cf
000000e5: JUMPI
000000e6: DUP1
000000e7: PUSH4 0xb504cd1e
000000ec: EQ
000000ed: PUSH2 0x0211
000000f0: JUMPI
000000f1: DUP1
000000f2: PUSH4 0xce4ab0ad
000000f7: EQ
000000f8: PUSH2 0x01f4
000000fb: JUMPI
000000fc: DUP1
000000fd: PUSH4 0xe30c3978
00000102: EQ
00000103: PUSH2 0x01c0
00000106: JUMPI
00000107: DUP1
00000108: PUSH4 0xe557b142
0000010d: EQ
0000010e: PUSH2 0x01a3
00000111: JUMPI
00000112: PUSH4 0xf2fde38b
00000117: SUB
00000118: PUSH2 0x000e
0000011b: JUMPI
0000011c: CALLVALUE
0000011d: PUSH2 0x019f
00000120: JUMPI
00000121: PUSH1 0x20
00000123: CALLDATASIZE
00000124: PUSH1 0x03
00000126: NOT
00000127: ADD
00000128: SLT
00000129: PUSH2 0x019f
0000012c: JUMPI
0000012d: PUSH2 0x0134
00000130: PUSH2 0x0d02
00000133: JUMP
00000134: JUMPDEST
00000135: PUSH2 0x013c
00000138: PUSH2 0x0ee5
0000013b: JUMP
0000013c: JUMPDEST
0000013d: PUSH0
0000013e: DUP1
0000013f: MLOAD
00000140: PUSH1 0x20
00000142: PUSH2 0x109a
00000145: DUP4
00000146: CODECOPY
00000147: DUP2
00000148: MLOAD
00000149: SWAP2
0000014a: MSTORE
0000014b: DUP1
0000014c: SLOAD
0000014d: PUSH1 0x01
0000014f: PUSH1 0x01
00000151: PUSH1 0xa0
00000153: SHL
00000154: SUB
00000155: NOT
00000156: AND
00000157: PUSH1 0x01
00000159: PUSH1 0x01
0000015b: PUSH1 0xa0
0000015d: SHL
0000015e: SUB
0000015f: SWAP3
00000160: DUP4
00000161: AND
00000162: SWAP1
00000163: DUP2
00000164: OR
00000165: SWAP1
00000166: SWAP2
00000167: SSTORE
00000168: PUSH0
00000169: DUP1
0000016a: MLOAD
0000016b: PUSH1 0x20
0000016d: PUSH2 0x0ffa
00000170: DUP4
00000171: CODECOPY
00000172: DUP2
00000173: MLOAD
00000174: SWAP2
00000175: MSTORE
00000176: SLOAD
00000177: SWAP1
00000178: SWAP2
00000179: AND
0000017a: PUSH32 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
0000019b: PUSH0
0000019c: DUP1
0000019d: LOG3
0000019e: STOP
0000019f: JUMPDEST
000001a0: PUSH0
000001a1: DUP1
000001a2: REVERT
000001a3: JUMPDEST
000001a4: CALLVALUE
000001a5: PUSH2 0x019f
000001a8: JUMPI
000001a9: PUSH0
000001aa: CALLDATASIZE
000001ab: PUSH1 0x03
000001ad: NOT
000001ae: ADD
000001af: SLT
000001b0: PUSH2 0x019f
000001b3: JUMPI
000001b4: PUSH1 0x20
000001b6: PUSH1 0x31
000001b8: SLOAD
000001b9: PUSH1 0x40
000001bb: MLOAD
000001bc: SWAP1
000001bd: DUP2
000001be: MSTORE
000001bf: RETURN
000001c0: JUMPDEST
000001c1: CALLVALUE
000001c2: PUSH2 0x019f
000001c5: JUMPI
000001c6: PUSH0
000001c7: CALLDATASIZE
000001c8: PUSH1 0x03
000001ca: NOT
000001cb: ADD
000001cc: SLT
000001cd: PUSH2 0x019f
000001d0: JUMPI
000001d1: PUSH0
000001d2: DUP1
000001d3: MLOAD
000001d4: PUSH1 0x20
000001d6: PUSH2 0x109a
000001d9: DUP4
000001da: CODECOPY
000001db: DUP2
000001dc: MLOAD
000001dd: SWAP2
000001de: MSTORE
000001df: SLOAD
000001e0: PUSH1 0x40
000001e2: MLOAD
000001e3: PUSH1 0x01
000001e5: PUSH1 0x01
000001e7: PUSH1 0xa0
000001e9: SHL
000001ea: SUB
000001eb: SWAP1
000001ec: SWAP2
000001ed: AND
000001ee: DUP2
000001ef: MSTORE
000001f0: PUSH1 0x20
000001f2: SWAP1
000001f3: RETURN
000001f4: JUMPDEST
000001f5: CALLVALUE
000001f6: PUSH2 0x019f
000001f9: JUMPI
000001fa: PUSH0
000001fb: CALLDATASIZE
000001fc: PUSH1 0x03
000001fe: NOT
000001ff: ADD
00000200: SLT
00000201: PUSH2 0x019f
00000204: JUMPI
00000205: PUSH1 0x20
00000207: PUSH1 0x34
00000209: SLOAD
0000020a: PUSH1 0x40
0000020c: MLOAD
0000020d: SWAP1
0000020e: DUP2
0000020f: MSTORE
00000210: RETURN
00000211: JUMPDEST
00000212: PUSH1 0x40
00000214: CALLDATASIZE
00000215: PUSH1 0x03
00000217: NOT
00000218: ADD
00000219: SLT
0000021a: PUSH2 0x019f
0000021d: JUMPI
0000021e: PUSH2 0x0225
00000221: PUSH2 0x0d02
00000224: JUMP
00000225: JUMPDEST
00000226: PUSH1 0x24
00000228: CALLDATALOAD
00000229: SWAP1
0000022a: PUSH2 0x0231
0000022d: PUSH2 0x0dc4
00000230: JUMP
00000231: JUMPDEST
00000232: PUSH2 0x0239
00000235: PUSH2 0x0deb
00000238: JUMP
00000239: JUMPDEST
0000023a: PUSH1 0x34
0000023c: SLOAD
0000023d: PUSH2 0x024a
00000240: DUP2
00000241: DUP5
00000242: DUP2
00000243: DUP2
00000244: LT
00000245: ISZERO
00000246: PUSH2 0x0d6a
00000249: JUMP
0000024a: JUMPDEST
0000024b: DUP3
0000024c: CALLVALUE
0000024d: SUB
0000024e: PUSH2 0x02b8
00000251: JUMPI
00000252: PUSH1 0x20
00000254: SWAP3
00000255: PUSH2 0x025f
00000258: PUSH1 0x31
0000025a: SLOAD
0000025b: PUSH2 0x0d87
0000025e: JUMP
0000025f: JUMPDEST
00000260: SWAP3
00000261: DUP4
00000262: SWAP3
00000263: DUP4
00000264: PUSH1 0x31
00000266: SSTORE
00000267: PUSH1 0x40
00000269: MLOAD
0000026a: SWAP3
0000026b: DUP4
0000026c: MSTORE
0000026d: DUP6
0000026e: DUP4
0000026f: ADD
00000270: MSTORE
00000271: PUSH1 0x01
00000273: DUP1
00000274: PUSH1 0xa0
00000276: SHL
00000277: SUB
00000278: AND
00000279: SWAP1
0000027a: PUSH32 0xb6167f4688b09f3299421570723fc91f0bd78d6f55e8d51fbfca3bfbda7a2664
0000029b: PUSH1 0x40
0000029d: CALLER
0000029e: SWAP3
0000029f: LOG4
000002a0: PUSH1 0x01
000002a2: PUSH0
000002a3: DUP1
000002a4: MLOAD
000002a5: PUSH1 0x20
000002a7: PUSH2 0x105a
000002aa: DUP4
000002ab: CODECOPY
000002ac: DUP2
000002ad: MLOAD
000002ae: SWAP2
000002af: MSTORE
000002b0: SSTORE
000002b1: PUSH1 0x40
000002b3: MLOAD
000002b4: SWAP1
000002b5: DUP2
000002b6: MSTORE
000002b7: RETURN
000002b8: JUMPDEST
000002b9: DUP3
000002ba: PUSH4 0x1adb52ef
000002bf: PUSH1 0xe2
000002c1: SHL
000002c2: PUSH0
000002c3: MSTORE
000002c4: CALLVALUE
000002c5: PUSH1 0x04
000002c7: MSTORE
000002c8: PUSH1 0x24
000002ca: MSTORE
000002cb: PUSH1 0x44
000002cd: PUSH0
000002ce: REVERT
000002cf: JUMPDEST
000002d0: CALLVALUE
000002d1: PUSH2 0x019f
000002d4: JUMPI
000002d5: PUSH0
000002d6: CALLDATASIZE
000002d7: PUSH1 0x03
000002d9: NOT
000002da: ADD
000002db: SLT
000002dc: PUSH2 0x019f
000002df: JUMPI
000002e0: PUSH1 0x40
000002e2: DUP1
000002e3: MLOAD
000002e4: SWAP1
000002e5: PUSH2 0x02ee
000002e8: DUP2
000002e9: DUP4
000002ea: PUSH2 0x0d18
000002ed: JUMP
000002ee: JUMPDEST
000002ef: PUSH1 0x05
000002f1: DUP3
000002f2: MSTORE
000002f3: PUSH1 0x20
000002f5: DUP3
000002f6: ADD
000002f7: SWAP2
000002f8: PUSH5 0x0352e302e3
000002fe: PUSH1 0xdc
00000300: SHL
00000301: DUP4
00000302: MSTORE
00000303: DUP2
00000304: MLOAD
00000305: SWAP3
00000306: DUP4
00000307: SWAP2
00000308: PUSH1 0x20
0000030a: DUP4
0000030b: MSTORE
0000030c: MLOAD
0000030d: DUP1
0000030e: SWAP2
0000030f: DUP2
00000310: PUSH1 0x20
00000312: DUP6
00000313: ADD
00000314: MSTORE
00000315: DUP5
00000316: DUP5
00000317: ADD
00000318: MCOPY
00000319: PUSH0
0000031a: DUP3
0000031b: DUP3
0000031c: ADD
0000031d: DUP5
0000031e: ADD
0000031f: MSTORE
00000320: PUSH1 0x1f
00000322: ADD
00000323: PUSH1 0x1f
00000325: NOT
00000326: AND
00000327: DUP2
00000328: ADD
00000329: SUB
0000032a: ADD
0000032b: SWAP1
0000032c: RETURN
0000032d: JUMPDEST
0000032e: CALLVALUE
0000032f: PUSH2 0x019f
00000332: JUMPI
00000333: PUSH0
00000334: CALLDATASIZE
00000335: PUSH1 0x03
00000337: NOT
00000338: ADD
00000339: SLT
0000033a: PUSH2 0x019f
0000033d: JUMPI
0000033e: PUSH1 0x20
00000340: PUSH1 0x32
00000342: SLOAD
00000343: PUSH1 0x40
00000345: MLOAD
00000346: SWAP1
00000347: DUP2
00000348: MSTORE
00000349: RETURN
0000034a: JUMPDEST
0000034b: CALLVALUE
0000034c: PUSH2 0x019f
0000034f: JUMPI
00000350: PUSH0
00000351: CALLDATASIZE
00000352: PUSH1 0x03
00000354: NOT
00000355: ADD
00000356: SLT
00000357: PUSH2 0x019f
0000035a: JUMPI
0000035b: PUSH0
0000035c: DUP1
0000035d: MLOAD
0000035e: PUSH1 0x20
00000360: PUSH2 0x0ffa
00000363: DUP4
00000364: CODECOPY
00000365: DUP2
00000366: MLOAD
00000367: SWAP2
00000368: MSTORE
00000369: SLOAD
0000036a: PUSH1 0x40
0000036c: MLOAD
0000036d: PUSH1 0x01
0000036f: PUSH1 0x01
00000371: PUSH1 0xa0
00000373: SHL
00000374: SUB
00000375: SWAP1
00000376: SWAP2
00000377: AND
00000378: DUP2
00000379: MSTORE
0000037a: PUSH1 0x20
0000037c: SWAP1
0000037d: RETURN
0000037e: JUMPDEST
0000037f: CALLVALUE
00000380: PUSH2 0x019f
00000383: JUMPI
00000384: PUSH0
00000385: CALLDATASIZE
00000386: PUSH1 0x03
00000388: NOT
00000389: ADD
0000038a: SLT
0000038b: PUSH2 0x019f
0000038e: JUMPI
0000038f: PUSH2 0x0396
00000392: PUSH2 0x0ee5
00000395: JUMP
00000396: JUMPDEST
00000397: PUSH2 0x039e
0000039a: PUSH2 0x0dc4
0000039d: JUMP
0000039e: JUMPDEST
0000039f: PUSH1 0x01
000003a1: PUSH1 0xff
000003a3: NOT
000003a4: PUSH0
000003a5: DUP1
000003a6: MLOAD
000003a7: PUSH1 0x20
000003a9: PUSH2 0x103a
000003ac: DUP4
000003ad: CODECOPY
000003ae: DUP2
000003af: MLOAD
000003b0: SWAP2
000003b1: MSTORE
000003b2: SLOAD
000003b3: AND
000003b4: OR
000003b5: PUSH0
000003b6: DUP1
000003b7: MLOAD
000003b8: PUSH1 0x20
000003ba: PUSH2 0x103a
000003bd: DUP4
000003be: CODECOPY
000003bf: DUP2
000003c0: MLOAD
000003c1: SWAP2
000003c2: MSTORE
000003c3: SSTORE
000003c4: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
000003e5: PUSH1 0x20
000003e7: PUSH1 0x40
000003e9: MLOAD
000003ea: CALLER
000003eb: DUP2
000003ec: MSTORE
000003ed: LOG1
000003ee: STOP
000003ef: JUMPDEST
000003f0: CALLVALUE
000003f1: PUSH2 0x019f
000003f4: JUMPI
000003f5: PUSH0
000003f6: CALLDATASIZE
000003f7: PUSH1 0x03
000003f9: NOT
000003fa: ADD
000003fb: SLT
000003fc: PUSH2 0x019f
000003ff: JUMPI
00000400: PUSH1 0x33
00000402: SLOAD
00000403: PUSH1 0x40
00000405: MLOAD
00000406: PUSH1 0x01
00000408: PUSH1 0x01
0000040a: PUSH1 0xa0
0000040c: SHL
0000040d: SUB
0000040e: SWAP1
0000040f: SWAP2
00000410: AND
00000411: DUP2
00000412: MSTORE
00000413: PUSH1 0x20
00000415: SWAP1
00000416: RETURN
00000417: JUMPDEST
00000418: CALLVALUE
00000419: PUSH2 0x019f
0000041c: JUMPI
0000041d: PUSH0
0000041e: CALLDATASIZE
0000041f: PUSH1 0x03
00000421: NOT
00000422: ADD
00000423: SLT
00000424: PUSH2 0x019f
00000427: JUMPI
00000428: PUSH0
00000429: DUP1
0000042a: MLOAD
0000042b: PUSH1 0x20
0000042d: PUSH2 0x109a
00000430: DUP4
00000431: CODECOPY
00000432: DUP2
00000433: MLOAD
00000434: SWAP2
00000435: MSTORE
00000436: SLOAD
00000437: CALLER
00000438: PUSH1 0x01
0000043a: PUSH1 0x01
0000043c: PUSH1 0xa0
0000043e: SHL
0000043f: SUB
00000440: SWAP1
00000441: SWAP2
00000442: AND
00000443: SUB
00000444: PUSH2 0x0450
00000447: JUMPI
00000448: PUSH2 0x0023
0000044b: CALLER
0000044c: PUSH2 0x0f05
0000044f: JUMP
00000450: JUMPDEST
00000451: PUSH4 0x118cdaa7
00000456: PUSH1 0xe0
00000458: SHL
00000459: PUSH0
0000045a: MSTORE
0000045b: CALLER
0000045c: PUSH1 0x04
0000045e: MSTORE
0000045f: PUSH1 0x24
00000461: PUSH0
00000462: REVERT
00000463: JUMPDEST
00000464: CALLVALUE
00000465: PUSH2 0x019f
00000468: JUMPI
00000469: PUSH0
0000046a: CALLDATASIZE
0000046b: PUSH1 0x03
0000046d: NOT
0000046e: ADD
0000046f: SLT
00000470: PUSH2 0x019f
00000473: JUMPI
00000474: PUSH2 0x047b
00000477: PUSH2 0x0ee5
0000047a: JUMP
0000047b: JUMPDEST
0000047c: PUSH0
0000047d: DUP1
0000047e: MLOAD
0000047f: PUSH1 0x20
00000481: PUSH2 0x109a
00000484: DUP4
00000485: CODECOPY
00000486: DUP2
00000487: MLOAD
00000488: SWAP2
00000489: MSTORE
0000048a: DUP1
0000048b: SLOAD
0000048c: PUSH1 0x01
0000048e: PUSH1 0x01
00000490: PUSH1 0xa0
00000492: SHL
00000493: SUB
00000494: NOT
00000495: SWAP1
00000496: DUP2
00000497: AND
00000498: SWAP1
00000499: SWAP2
0000049a: SSTORE
0000049b: PUSH0
0000049c: DUP1
0000049d: MLOAD
0000049e: PUSH1 0x20
000004a0: PUSH2 0x0ffa
000004a3: DUP4
000004a4: CODECOPY
000004a5: DUP2
000004a6: MLOAD
000004a7: SWAP2
000004a8: MSTORE
000004a9: DUP1
000004aa: SLOAD
000004ab: SWAP2
000004ac: DUP3
000004ad: AND
000004ae: SWAP1
000004af: SSTORE
000004b0: PUSH0
000004b1: SWAP1
000004b2: PUSH1 0x01
000004b4: PUSH1 0x01
000004b6: PUSH1 0xa0
000004b8: SHL
000004b9: SUB
000004ba: AND
000004bb: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000004dc: DUP3
000004dd: DUP1
000004de: LOG3
000004df: STOP
000004e0: JUMPDEST
000004e1: CALLVALUE
000004e2: PUSH2 0x019f
000004e5: JUMPI
000004e6: PUSH1 0x20
000004e8: CALLDATASIZE
000004e9: PUSH1 0x03
000004eb: NOT
000004ec: ADD
000004ed: SLT
000004ee: PUSH2 0x019f
000004f1: JUMPI
000004f2: PUSH2 0x04f9
000004f5: PUSH2 0x0d02
000004f8: JUMP
000004f9: JUMPDEST
000004fa: PUSH2 0x0501
000004fd: PUSH2 0x0ee5
00000500: JUMP
00000501: JUMPDEST
00000502: PUSH1 0x01
00000504: PUSH1 0x01
00000506: PUSH1 0xa0
00000508: SHL
00000509: SUB
0000050a: AND
0000050b: DUP1
0000050c: ISZERO
0000050d: PUSH2 0x0548
00000510: JUMPI
00000511: PUSH1 0x33
00000513: DUP1
00000514: SLOAD
00000515: PUSH1 0x01
00000517: PUSH1 0x01
00000519: PUSH1 0xa0
0000051b: SHL
0000051c: SUB
0000051d: NOT
0000051e: AND
0000051f: DUP3
00000520: OR
00000521: SWAP1
00000522: SSTORE
00000523: PUSH32 0xb7041340e0c2a075059bf0488a71c767724be15dae8e737f8460007325e8d857
00000544: PUSH0
00000545: DUP1
00000546: LOG2
00000547: STOP
00000548: JUMPDEST
00000549: PUSH4 0x956358c1
0000054e: PUSH1 0xe0
00000550: SHL
00000551: PUSH0
00000552: MSTORE
00000553: PUSH1 0x04
00000555: PUSH0
00000556: REVERT
00000557: JUMPDEST
00000558: CALLVALUE
00000559: PUSH2 0x019f
0000055c: JUMPI
0000055d: PUSH0
0000055e: CALLDATASIZE
0000055f: PUSH1 0x03
00000561: NOT
00000562: ADD
00000563: SLT
00000564: PUSH2 0x019f
00000567: JUMPI
00000568: PUSH1 0x20
0000056a: PUSH1 0xff
0000056c: PUSH0
0000056d: DUP1
0000056e: MLOAD
0000056f: PUSH1 0x20
00000571: PUSH2 0x103a
00000574: DUP4
00000575: CODECOPY
00000576: DUP2
00000577: MLOAD
00000578: SWAP2
00000579: MSTORE
0000057a: SLOAD
0000057b: AND
0000057c: PUSH1 0x40
0000057e: MLOAD
0000057f: SWAP1
00000580: ISZERO
00000581: ISZERO
00000582: DUP2
00000583: MSTORE
00000584: RETURN
00000585: JUMPDEST
00000586: CALLVALUE
00000587: PUSH2 0x019f
0000058a: JUMPI
0000058b: PUSH1 0x20
0000058d: CALLDATASIZE
0000058e: PUSH1 0x03
00000590: NOT
00000591: ADD
00000592: SLT
00000593: PUSH2 0x019f
00000596: JUMPI
00000597: PUSH1 0x04
00000599: CALLDATALOAD
0000059a: PUSH2 0x05a1
0000059d: PUSH2 0x0ee5
000005a0: JUMP
000005a1: JUMPDEST
000005a2: DUP1
000005a3: ISZERO
000005a4: PUSH2 0x05d8
000005a7: JUMPI
000005a8: PUSH1 0x20
000005aa: DUP2
000005ab: PUSH32 0xfd0467d48910fb6e6de1f4e0b9eedc9e04a7c227bad40d827a84a2b650ec0b7f
000005cc: SWAP3
000005cd: PUSH1 0x34
000005cf: SSTORE
000005d0: PUSH1 0x40
000005d2: MLOAD
000005d3: SWAP1
000005d4: DUP2
000005d5: MSTORE
000005d6: LOG1
000005d7: STOP
000005d8: JUMPDEST
000005d9: PUSH4 0x7856cc13
000005de: PUSH1 0xe0
000005e0: SHL
000005e1: PUSH0
000005e2: MSTORE
000005e3: PUSH1 0x04
000005e5: MSTORE
000005e6: PUSH1 0x24
000005e8: PUSH0
000005e9: REVERT
000005ea: JUMPDEST
000005eb: CALLVALUE
000005ec: PUSH2 0x019f
000005ef: JUMPI
000005f0: PUSH0
000005f1: CALLDATASIZE
000005f2: PUSH1 0x03
000005f4: NOT
000005f5: ADD
000005f6: SLT
000005f7: PUSH2 0x019f
000005fa: JUMPI
000005fb: PUSH32 0x000000000000000000000000c973d09e51a20c9ab0214c439e4b34dbac52ad67
0000061c: PUSH1 0x01
0000061e: PUSH1 0x01
00000620: PUSH1 0xa0
00000622: SHL
00000623: SUB
00000624: AND
00000625: ADDRESS
00000626: SUB
00000627: PUSH2 0x0641
0000062a: JUMPI
0000062b: PUSH1 0x20
0000062d: PUSH1 0x40
0000062f: MLOAD
00000630: PUSH0
00000631: DUP1
00000632: MLOAD
00000633: PUSH1 0x20
00000635: PUSH2 0x101a
00000638: DUP4
00000639: CODECOPY
0000063a: DUP2
0000063b: MLOAD
0000063c: SWAP2
0000063d: MSTORE
0000063e: DUP2
0000063f: MSTORE
00000640: RETURN
00000641: JUMPDEST
00000642: PUSH4 0x703e46dd
00000647: PUSH1 0xe1
00000649: SHL
0000064a: PUSH0
0000064b: MSTORE
0000064c: PUSH1 0x04
0000064e: PUSH0
0000064f: REVERT
00000650: JUMPDEST
00000651: CALLVALUE
00000652: PUSH2 0x019f
00000655: JUMPI
00000656: PUSH1 0x20
00000658: CALLDATASIZE
00000659: PUSH1 0x03
0000065b: NOT
0000065c: ADD
0000065d: SLT
0000065e: PUSH2 0x019f
00000661: JUMPI
00000662: PUSH2 0x0669
00000665: PUSH2 0x0d02
00000668: JUMP
00000669: JUMPDEST
0000066a: PUSH2 0x0671
0000066d: PUSH2 0x0dc4
00000670: JUMP
00000671: JUMPDEST
00000672: PUSH2 0x0679
00000675: PUSH2 0x0deb
00000678: JUMP
00000679: JUMPDEST
0000067a: PUSH1 0x01
0000067c: PUSH1 0x01
0000067e: PUSH1 0xa0
00000680: SHL
00000681: SUB
00000682: DUP2
00000683: AND
00000684: PUSH0
00000685: DUP2
00000686: DUP2
00000687: MSTORE
00000688: PUSH1 0x20
0000068a: DUP2
0000068b: SWAP1
0000068c: MSTORE
0000068d: PUSH1 0x40
0000068f: SWAP1
00000690: KECCAK256
00000691: SLOAD
00000692: SWAP1
00000693: SWAP2
00000694: DUP2
00000695: ISZERO
00000696: PUSH2 0x070d
00000699: JUMPI
0000069a: PUSH0
0000069b: DUP1
0000069c: DUP1
0000069d: DUP5
0000069e: DUP2
0000069f: SWAP5
000006a0: DUP8
000006a1: DUP4
000006a2: MSTORE
000006a3: DUP3
000006a4: PUSH1 0x20
000006a6: MSTORE
000006a7: DUP3
000006a8: PUSH1 0x40
000006aa: DUP2
000006ab: KECCAK256
000006ac: SSTORE
000006ad: GAS
000006ae: CALL
000006af: PUSH2 0x06b6
000006b2: PUSH2 0x0d95
000006b5: JUMP
000006b6: JUMPDEST
000006b7: POP
000006b8: ISZERO
000006b9: PUSH2 0x06fa
000006bc: JUMPI
000006bd: PUSH1 0x20
000006bf: PUSH32 0x2e1ece5fb4a04cb9407bb825ceb4c6d6d402c18ba1cbe2054241fb1a86fd58da
000006e0: SWAP2
000006e1: PUSH1 0x40
000006e3: MLOAD
000006e4: SWAP1
000006e5: DUP2
000006e6: MSTORE
000006e7: LOG2
000006e8: PUSH1 0x01
000006ea: PUSH0
000006eb: DUP1
000006ec: MLOAD
000006ed: PUSH1 0x20
000006ef: PUSH2 0x105a
000006f2: DUP4
000006f3: CODECOPY
000006f4: DUP2
000006f5: MLOAD
000006f6: SWAP2
000006f7: MSTORE
000006f8: SSTORE
000006f9: STOP
000006fa: JUMPDEST
000006fb: POP
000006fc: PUSH4 0x39f1c8d9
00000701: PUSH1 0xe0
00000703: SHL
00000704: PUSH0
00000705: MSTORE
00000706: PUSH1 0x04
00000708: MSTORE
00000709: PUSH1 0x24
0000070b: PUSH0
0000070c: REVERT
0000070d: JUMPDEST
0000070e: DUP3
0000070f: PUSH4 0x25215d4f
00000714: PUSH1 0xe1
00000716: SHL
00000717: PUSH0
00000718: MSTORE
00000719: PUSH1 0x04
0000071b: MSTORE
0000071c: PUSH1 0x24
0000071e: PUSH0
0000071f: REVERT
00000720: JUMPDEST
00000721: PUSH1 0x40
00000723: CALLDATASIZE
00000724: PUSH1 0x03
00000726: NOT
00000727: ADD
00000728: SLT
00000729: PUSH2 0x019f
0000072c: JUMPI
0000072d: PUSH2 0x0734
00000730: PUSH2 0x0d02
00000733: JUMP
00000734: JUMPDEST
00000735: PUSH1 0x24
00000737: CALLDATALOAD
00000738: SWAP1
00000739: PUSH8 0xffffffffffffffff
00000742: DUP3
00000743: GT
00000744: PUSH2 0x019f
00000747: JUMPI
00000748: CALLDATASIZE
00000749: PUSH1 0x23
0000074b: DUP4
0000074c: ADD
0000074d: SLT
0000074e: ISZERO
0000074f: PUSH2 0x019f
00000752: JUMPI
00000753: DUP2
00000754: PUSH1 0x04
00000756: ADD
00000757: CALLDATALOAD
00000758: SWAP1
00000759: PUSH2 0x0761
0000075c: DUP3
0000075d: PUSH2 0x0d4e
00000760: JUMP
00000761: JUMPDEST
00000762: SWAP2
00000763: PUSH2 0x076f
00000766: PUSH1 0x40
00000768: MLOAD
00000769: SWAP4
0000076a: DUP5
0000076b: PUSH2 0x0d18
0000076e: JUMP
0000076f: JUMPDEST
00000770: DUP1
00000771: DUP4
00000772: MSTORE
00000773: PUSH1 0x20
00000775: DUP4
00000776: ADD
00000777: SWAP4
00000778: CALLDATASIZE
00000779: PUSH1 0x24
0000077b: DUP4
0000077c: DUP4
0000077d: ADD
0000077e: ADD
0000077f: GT
00000780: PUSH2 0x019f
00000783: JUMPI
00000784: DUP2
00000785: PUSH0
00000786: SWAP3
00000787: PUSH1 0x24
00000789: PUSH1 0x20
0000078b: SWAP4
0000078c: ADD
0000078d: DUP8
0000078e: CALLDATACOPY
0000078f: DUP5
00000790: ADD
00000791: ADD
00000792: MSTORE
00000793: PUSH1 0x01
00000795: PUSH1 0x01
00000797: PUSH1 0xa0
00000799: SHL
0000079a: SUB
0000079b: PUSH32 0x000000000000000000000000c973d09e51a20c9ab0214c439e4b34dbac52ad67
000007bc: AND
000007bd: ADDRESS
000007be: DUP2
000007bf: EQ
000007c0: SWAP1
000007c1: DUP2
000007c2: ISZERO
000007c3: PUSH2 0x0908
000007c6: JUMPI
000007c7: JUMPDEST
000007c8: POP
000007c9: PUSH2 0x0641
000007cc: JUMPI
000007cd: PUSH2 0x07d4
000007d0: PUSH2 0x0ee5
000007d3: JUMP
000007d4: JUMPDEST
000007d5: PUSH1 0x40
000007d7: MLOAD
000007d8: PUSH4 0x52d1902d
000007dd: PUSH1 0xe0
000007df: SHL
000007e0: DUP2
000007e1: MSTORE
000007e2: PUSH1 0x01
000007e4: PUSH1 0x01
000007e6: PUSH1 0xa0
000007e8: SHL
000007e9: SUB
000007ea: DUP3
000007eb: AND
000007ec: SWAP4
000007ed: SWAP1
000007ee: PUSH1 0x20
000007f0: DUP2
000007f1: PUSH1 0x04
000007f3: DUP2
000007f4: DUP9
000007f5: GAS
000007f6: STATICCALL
000007f7: PUSH0
000007f8: SWAP2
000007f9: DUP2
000007fa: PUSH2 0x08d4
000007fd: JUMPI
000007fe: JUMPDEST
000007ff: POP
00000800: PUSH2 0x0816
00000803: JUMPI
00000804: DUP5
00000805: PUSH4 0x4c9c8ce3
0000080a: PUSH1 0xe0
0000080c: SHL
0000080d: PUSH0
0000080e: MSTORE
0000080f: PUSH1 0x04
00000811: MSTORE
00000812: PUSH1 0x24
00000814: PUSH0
00000815: REVERT
00000816: JUMPDEST
00000817: DUP1
00000818: PUSH0
00000819: DUP1
0000081a: MLOAD
0000081b: PUSH1 0x20
0000081d: PUSH2 0x101a
00000820: DUP4
00000821: CODECOPY
00000822: DUP2
00000823: MLOAD
00000824: SWAP2
00000825: MSTORE
00000826: DUP7
00000827: SWAP3
00000828: SUB
00000829: PUSH2 0x08c2
0000082c: JUMPI
0000082d: POP
0000082e: DUP3
0000082f: EXTCODESIZE
00000830: ISZERO
00000831: PUSH2 0x08b0
00000834: JUMPI
00000835: PUSH0
00000836: DUP1
00000837: MLOAD
00000838: PUSH1 0x20
0000083a: PUSH2 0x101a
0000083d: DUP4
0000083e: CODECOPY
0000083f: DUP2
00000840: MLOAD
00000841: SWAP2
00000842: MSTORE
00000843: DUP1
00000844: SLOAD
00000845: PUSH1 0x01
00000847: PUSH1 0x01
00000849: PUSH1 0xa0
0000084b: SHL
0000084c: SUB
0000084d: NOT
0000084e: AND
0000084f: DUP3
00000850: OR
00000851: SWAP1
00000852: SSTORE
00000853: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b
00000874: PUSH0
00000875: DUP1
00000876: LOG2
00000877: DUP3
00000878: MLOAD
00000879: ISZERO
0000087a: PUSH2 0x0897
0000087d: JUMPI
0000087e: PUSH0
0000087f: DUP1
00000880: SWAP2
00000881: PUSH2 0x0023
00000884: SWAP5
00000885: MLOAD
00000886: SWAP1
00000887: DUP5
00000888: GAS
00000889: DELEGATECALL
0000088a: PUSH2 0x0891
0000088d: PUSH2 0x0d95
00000890: JUMP
00000891: JUMPDEST
00000892: SWAP2
00000893: PUSH2 0x0f9b
00000896: JUMP
00000897: JUMPDEST
00000898: POP
00000899: POP
0000089a: POP
0000089b: CALLVALUE
0000089c: PUSH2 0x08a1
0000089f: JUMPI
000008a0: STOP
000008a1: JUMPDEST
000008a2: PUSH4 0xb398979f
000008a7: PUSH1 0xe0
000008a9: SHL
000008aa: PUSH0
000008ab: MSTORE
000008ac: PUSH1 0x04
000008ae: PUSH0
000008af: REVERT
000008b0: JUMPDEST
000008b1: PUSH4 0x4c9c8ce3
000008b6: PUSH1 0xe0
000008b8: SHL
000008b9: PUSH0
000008ba: MSTORE
000008bb: PUSH1 0x04
000008bd: MSTORE
000008be: PUSH1 0x24
000008c0: PUSH0
000008c1: REVERT
000008c2: JUMPDEST
000008c3: PUSH4 0x2a875269
000008c8: PUSH1 0xe2
000008ca: SHL
000008cb: PUSH0
000008cc: MSTORE
000008cd: PUSH1 0x04
000008cf: MSTORE
000008d0: PUSH1 0x24
000008d2: PUSH0
000008d3: REVERT
000008d4: JUMPDEST
000008d5: SWAP1
000008d6: SWAP2
000008d7: POP
000008d8: PUSH1 0x20
000008da: DUP2
000008db: RETURNDATASIZE
000008dc: PUSH1 0x20
000008de: GT
000008df: PUSH2 0x0900
000008e2: JUMPI
000008e3: JUMPDEST
000008e4: DUP2
000008e5: PUSH2 0x08f0
000008e8: PUSH1 0x20
000008ea: SWAP4
000008eb: DUP4
000008ec: PUSH2 0x0d18
000008ef: JUMP
000008f0: JUMPDEST
000008f1: DUP2
000008f2: ADD
000008f3: SUB
000008f4: SLT
000008f5: PUSH2 0x019f
000008f8: JUMPI
000008f9: MLOAD
000008fa: SWAP1
000008fb: DUP7
000008fc: PUSH2 0x07fe
000008ff: JUMP
00000900: JUMPDEST
00000901: RETURNDATASIZE
00000902: SWAP2
00000903: POP
00000904: PUSH2 0x08e3
00000907: JUMP
00000908: JUMPDEST
00000909: PUSH0
0000090a: DUP1
0000090b: MLOAD
0000090c: PUSH1 0x20
0000090e: PUSH2 0x101a
00000911: DUP4
00000912: CODECOPY
00000913: DUP2
00000914: MLOAD
00000915: SWAP2
00000916: MSTORE
00000917: SLOAD
00000918: PUSH1 0x01
0000091a: PUSH1 0x01
0000091c: PUSH1 0xa0
0000091e: SHL
0000091f: SUB
00000920: AND
00000921: EQ
00000922: ISZERO
00000923: SWAP1
00000924: POP
00000925: DUP5
00000926: PUSH2 0x07c7
00000929: JUMP
0000092a: JUMPDEST
0000092b: CALLVALUE
0000092c: PUSH2 0x019f
0000092f: JUMPI
00000930: PUSH0
00000931: CALLDATASIZE
00000932: PUSH1 0x03
00000934: NOT
00000935: ADD
00000936: SLT
00000937: PUSH2 0x019f
0000093a: JUMPI
0000093b: PUSH2 0x0942
0000093e: PUSH2 0x0ee5
00000941: JUMP
00000942: JUMPDEST
00000943: PUSH0
00000944: DUP1
00000945: MLOAD
00000946: PUSH1 0x20
00000948: PUSH2 0x103a
0000094b: DUP4
0000094c: CODECOPY
0000094d: DUP2
0000094e: MLOAD
0000094f: SWAP2
00000950: MSTORE
00000951: SLOAD
00000952: PUSH1 0xff
00000954: DUP2
00000955: AND
00000956: ISZERO
00000957: PUSH2 0x0999
0000095a: JUMPI
0000095b: PUSH1 0xff
0000095d: NOT
0000095e: AND
0000095f: PUSH0
00000960: DUP1
00000961: MLOAD
00000962: PUSH1 0x20
00000964: PUSH2 0x103a
00000967: DUP4
00000968: CODECOPY
00000969: DUP2
0000096a: MLOAD
0000096b: SWAP2
0000096c: MSTORE
0000096d: SSTORE
0000096e: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa
0000098f: PUSH1 0x20
00000991: PUSH1 0x40
00000993: MLOAD
00000994: CALLER
00000995: DUP2
00000996: MSTORE
00000997: LOG1
00000998: STOP
00000999: JUMPDEST
0000099a: PUSH4 0x8dfc202b
0000099f: PUSH1 0xe0
000009a1: SHL
000009a2: PUSH0
000009a3: MSTORE
000009a4: PUSH1 0x04
000009a6: PUSH0
000009a7: REVERT
000009a8: JUMPDEST
000009a9: CALLVALUE
000009aa: PUSH2 0x019f
000009ad: JUMPI
000009ae: PUSH1 0x20
000009b0: CALLDATASIZE
000009b1: PUSH1 0x03
000009b3: NOT
000009b4: ADD
000009b5: SLT
000009b6: PUSH2 0x019f
000009b9: JUMPI
000009ba: PUSH1 0x01
000009bc: PUSH1 0x01
000009be: PUSH1 0xa0
000009c0: SHL
000009c1: SUB
000009c2: PUSH2 0x09c9
000009c5: PUSH2 0x0d02
000009c8: JUMP
000009c9: JUMPDEST
000009ca: AND
000009cb: PUSH0
000009cc: MSTORE
000009cd: PUSH0
000009ce: PUSH1 0x20
000009d0: MSTORE
000009d1: PUSH1 0x20
000009d3: PUSH1 0x40
000009d5: PUSH0
000009d6: KECCAK256
000009d7: SLOAD
000009d8: PUSH1 0x40
000009da: MLOAD
000009db: SWAP1
000009dc: DUP2
000009dd: MSTORE
000009de: RETURN
000009df: JUMPDEST
000009e0: CALLVALUE
000009e1: PUSH2 0x019f
000009e4: JUMPI
000009e5: PUSH1 0x60
000009e7: CALLDATASIZE
000009e8: PUSH1 0x03
000009ea: NOT
000009eb: ADD
000009ec: SLT
000009ed: PUSH2 0x019f
000009f0: JUMPI
000009f1: PUSH2 0x09f8
000009f4: PUSH2 0x0d02
000009f7: JUMP
000009f8: JUMPDEST
000009f9: PUSH1 0x24
000009fb: CALLDATALOAD
000009fc: PUSH1 0x01
000009fe: PUSH1 0x01
00000a00: PUSH1 0xa0
00000a02: SHL
00000a03: SUB
00000a04: DUP2
00000a05: AND
00000a06: SWAP2
00000a07: SWAP1
00000a08: DUP3
00000a09: SWAP1
00000a0a: SUB
00000a0b: PUSH2 0x019f
00000a0e: JUMPI
00000a0f: PUSH0
00000a10: DUP1
00000a11: MLOAD
00000a12: PUSH1 0x20
00000a14: PUSH2 0x107a
00000a17: DUP4
00000a18: CODECOPY
00000a19: DUP2
00000a1a: MLOAD
00000a1b: SWAP2
00000a1c: MSTORE
00000a1d: SLOAD
00000a1e: SWAP2
00000a1f: PUSH1 0xff
00000a21: DUP4
00000a22: PUSH1 0x40
00000a24: SHR
00000a25: AND
00000a26: ISZERO
00000a27: SWAP3
00000a28: PUSH8 0xffffffffffffffff
00000a31: DUP2
00000a32: AND
00000a33: DUP1
00000a34: ISZERO
00000a35: SWAP1
00000a36: DUP2
00000a37: PUSH2 0x0bd7
00000a3a: JUMPI
00000a3b: JUMPDEST
00000a3c: PUSH1 0x01
00000a3e: EQ
00000a3f: SWAP1
00000a40: DUP2
00000a41: PUSH2 0x0bcd
00000a44: JUMPI
00000a45: JUMPDEST
00000a46: ISZERO
00000a47: SWAP1
00000a48: DUP2
00000a49: PUSH2 0x0bc4
00000a4c: JUMPI
00000a4d: JUMPDEST
00000a4e: POP
00000a4f: PUSH2 0x0bb5
00000a52: JUMPI
00000a53: PUSH8 0xffffffffffffffff
00000a5c: NOT
00000a5d: DUP2
00000a5e: AND
00000a5f: PUSH1 0x01
00000a61: OR
00000a62: PUSH0
00000a63: DUP1
00000a64: MLOAD
00000a65: PUSH1 0x20
00000a67: PUSH2 0x107a
00000a6a: DUP4
00000a6b: CODECOPY
00000a6c: DUP2
00000a6d: MLOAD
00000a6e: SWAP2
00000a6f: MSTORE
00000a70: SSTORE
00000a71: DUP4
00000a72: PUSH2 0x0b89
00000a75: JUMPI
00000a76: JUMPDEST
00000a77: POP
00000a78: PUSH12 0xffffffffffffffffffffffff
00000a85: PUSH1 0xa0
00000a87: SHL
00000a88: PUSH1 0x33
00000a8a: SLOAD
00000a8b: AND
00000a8c: OR
00000a8d: PUSH1 0x33
00000a8f: SSTORE
00000a90: PUSH1 0x44
00000a92: CALLDATALOAD
00000a93: PUSH1 0x34
00000a95: SSTORE
00000a96: PUSH0
00000a97: PUSH1 0x31
00000a99: SSTORE
00000a9a: PUSH1 0x01
00000a9c: PUSH1 0x32
00000a9e: SSTORE
00000a9f: PUSH2 0x0aa6
00000aa2: PUSH2 0x0f70
00000aa5: JUMP
00000aa6: JUMPDEST
00000aa7: PUSH2 0x0aae
00000aaa: PUSH2 0x0f70
00000aad: JUMP
00000aae: JUMPDEST
00000aaf: PUSH1 0x01
00000ab1: PUSH1 0x01
00000ab3: PUSH1 0xa0
00000ab5: SHL
00000ab6: SUB
00000ab7: DUP2
00000ab8: AND
00000ab9: ISZERO
00000aba: PUSH2 0x0b76
00000abd: JUMPI
00000abe: PUSH2 0x0ac6
00000ac1: SWAP1
00000ac2: PUSH2 0x0f05
00000ac5: JUMP
00000ac6: JUMPDEST
00000ac7: PUSH2 0x0ace
00000aca: PUSH2 0x0f70
00000acd: JUMP
00000ace: JUMPDEST
00000acf: PUSH2 0x0ad6
00000ad2: PUSH2 0x0f70
00000ad5: JUMP
00000ad6: JUMPDEST
00000ad7: PUSH1 0xff
00000ad9: NOT
00000ada: PUSH0
00000adb: DUP1
00000adc: MLOAD
00000add: PUSH1 0x20
00000adf: PUSH2 0x103a
00000ae2: DUP4
00000ae3: CODECOPY
00000ae4: DUP2
00000ae5: MLOAD
00000ae6: SWAP2
00000ae7: MSTORE
00000ae8: SLOAD
00000ae9: AND
00000aea: PUSH0
00000aeb: DUP1
00000aec: MLOAD
00000aed: PUSH1 0x20
00000aef: PUSH2 0x103a
00000af2: DUP4
00000af3: CODECOPY
00000af4: DUP2
00000af5: MLOAD
00000af6: SWAP2
00000af7: MSTORE
00000af8: SSTORE
00000af9: PUSH2 0x0b00
00000afc: PUSH2 0x0f70
00000aff: JUMP
00000b00: JUMPDEST
00000b01: PUSH2 0x0b08
00000b04: PUSH2 0x0f70
00000b07: JUMP
00000b08: JUMPDEST
00000b09: PUSH1 0x01
00000b0b: PUSH0
00000b0c: DUP1
00000b0d: MLOAD
00000b0e: PUSH1 0x20
00000b10: PUSH2 0x105a
00000b13: DUP4
00000b14: CODECOPY
00000b15: DUP2
00000b16: MLOAD
00000b17: SWAP2
00000b18: MSTORE
00000b19: SSTORE
00000b1a: PUSH2 0x0b1f
00000b1d: JUMPI
00000b1e: STOP
00000b1f: JUMPDEST
00000b20: PUSH9 0xff0000000000000000
00000b2a: NOT
00000b2b: PUSH0
00000b2c: DUP1
00000b2d: MLOAD
00000b2e: PUSH1 0x20
00000b30: PUSH2 0x107a
00000b33: DUP4
00000b34: CODECOPY
00000b35: DUP2
00000b36: MLOAD
00000b37: SWAP2
00000b38: MSTORE
00000b39: SLOAD
00000b3a: AND
00000b3b: PUSH0
00000b3c: DUP1
00000b3d: MLOAD
00000b3e: PUSH1 0x20
00000b40: PUSH2 0x107a
00000b43: DUP4
00000b44: CODECOPY
00000b45: DUP2
00000b46: MLOAD
00000b47: SWAP2
00000b48: MSTORE
00000b49: SSTORE
00000b4a: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2
00000b6b: PUSH1 0x20
00000b6d: PUSH1 0x40
00000b6f: MLOAD
00000b70: PUSH1 0x01
00000b72: DUP2
00000b73: MSTORE
00000b74: LOG1
00000b75: STOP
00000b76: JUMPDEST
00000b77: PUSH4 0x1e4fbdf7
00000b7c: PUSH1 0xe0
00000b7e: SHL
00000b7f: PUSH0
00000b80: MSTORE
00000b81: PUSH0
00000b82: PUSH1 0x04
00000b84: MSTORE
00000b85: PUSH1 0x24
00000b87: PUSH0
00000b88: REVERT
00000b89: JUMPDEST
00000b8a: PUSH9 0xffffffffffffffffff
00000b94: NOT
00000b95: AND
00000b96: PUSH9 0x010000000000000001
00000ba0: OR
00000ba1: PUSH0
00000ba2: DUP1
00000ba3: MLOAD
00000ba4: PUSH1 0x20
00000ba6: PUSH2 0x107a
00000ba9: DUP4
00000baa: CODECOPY
00000bab: DUP2
00000bac: MLOAD
00000bad: SWAP2
00000bae: MSTORE
00000baf: SSTORE
00000bb0: DUP4
00000bb1: PUSH2 0x0a76
00000bb4: JUMP
00000bb5: JUMPDEST
00000bb6: PUSH4 0xf92ee8a9
00000bbb: PUSH1 0xe0
00000bbd: SHL
00000bbe: PUSH0
00000bbf: MSTORE
00000bc0: PUSH1 0x04
00000bc2: PUSH0
00000bc3: REVERT
00000bc4: JUMPDEST
00000bc5: SWAP1
00000bc6: POP
00000bc7: ISZERO
00000bc8: DUP6
00000bc9: PUSH2 0x0a4d
00000bcc: JUMP
00000bcd: JUMPDEST
00000bce: ADDRESS
00000bcf: EXTCODESIZE
00000bd0: ISZERO
00000bd1: SWAP2
00000bd2: POP
00000bd3: PUSH2 0x0a45
00000bd6: JUMP
00000bd7: JUMPDEST
00000bd8: DUP6
00000bd9: SWAP2
00000bda: POP
00000bdb: PUSH2 0x0a3b
00000bde: JUMP
00000bdf: JUMPDEST
00000be0: CALLVALUE
00000be1: PUSH2 0x019f
00000be4: JUMPI
00000be5: PUSH1 0x80
00000be7: CALLDATASIZE
00000be8: PUSH1 0x03
00000bea: NOT
00000beb: ADD
00000bec: SLT
00000bed: PUSH2 0x019f
00000bf0: JUMPI
00000bf1: PUSH2 0x0bf8
00000bf4: PUSH2 0x0d02
00000bf7: JUMP
00000bf8: JUMPDEST
00000bf9: PUSH1 0x33
00000bfb: SLOAD
00000bfc: PUSH1 0x44
00000bfe: CALLDATALOAD
00000bff: SWAP2
00000c00: PUSH1 0x24
00000c02: CALLDATALOAD
00000c03: SWAP2
00000c04: PUSH1 0x64
00000c06: CALLDATALOAD
00000c07: SWAP1
00000c08: PUSH1 0x01
00000c0a: PUSH1 0x01
00000c0c: PUSH1 0xa0
00000c0e: SHL
00000c0f: SUB
00000c10: AND
00000c11: CALLER
00000c12: DUP2
00000c13: SWAP1
00000c14: SUB
00000c15: PUSH2 0x0cec
00000c18: JUMPI
00000c19: POP
00000c1a: PUSH2 0x0c21
00000c1d: PUSH2 0x0dc4
00000c20: JUMP
00000c21: JUMPDEST
00000c22: PUSH2 0x0c29
00000c25: PUSH2 0x0deb
00000c28: JUMP
00000c29: JUMPDEST
00000c2a: PUSH2 0x0c37
00000c2d: DUP2
00000c2e: DUP5
00000c2f: DUP2
00000c30: DUP2
00000c31: LT
00000c32: ISZERO
00000c33: PUSH2 0x0d6a
00000c36: JUMP
00000c37: JUMPDEST
00000c38: PUSH1 0x32
00000c3a: SLOAD
00000c3b: DUP1
00000c3c: DUP6
00000c3d: SUB
00000c3e: PUSH2 0x0cd6
00000c41: JUMPI
00000c42: POP
00000c43: DUP1
00000c44: DUP4
00000c45: SUB
00000c46: SWAP2
00000c47: DUP4
00000c48: DUP4
00000c49: GT
00000c4a: PUSH2 0x0cc2
00000c4d: JUMPI
00000c4e: PUSH2 0x0c90
00000c51: PUSH1 0x20
00000c53: SWAP3
00000c54: PUSH2 0x0c7e
00000c57: DUP4
00000c58: PUSH32 0x8c1419715bf9fd4efa8c0fd1833ba527cbdd86f6018aa79102af32103bbfdefd
00000c79: SWAP7
00000c7a: PUSH2 0x0e23
00000c7d: JUMP
00000c7e: JUMPDEST
00000c7f: PUSH1 0x33
00000c81: SLOAD
00000c82: PUSH1 0x01
00000c84: PUSH1 0x01
00000c86: PUSH1 0xa0
00000c88: SHL
00000c89: SUB
00000c8a: AND
00000c8b: SWAP1
00000c8c: PUSH2 0x0e23
00000c8f: JUMP
00000c90: JUMPDEST
00000c91: PUSH2 0x0c9b
00000c94: PUSH1 0x32
00000c96: SLOAD
00000c97: PUSH2 0x0d87
00000c9a: JUMP
00000c9b: JUMPDEST
00000c9c: PUSH1 0x32
00000c9e: SSTORE
00000c9f: PUSH1 0x40
00000ca1: MLOAD
00000ca2: SWAP4
00000ca3: DUP5
00000ca4: MSTORE
00000ca5: PUSH1 0x01
00000ca7: PUSH1 0x01
00000ca9: PUSH1 0xa0
00000cab: SHL
00000cac: SUB
00000cad: AND
00000cae: SWAP3
00000caf: LOG3
00000cb0: PUSH1 0x01
00000cb2: PUSH0
00000cb3: DUP1
00000cb4: MLOAD
00000cb5: PUSH1 0x20
00000cb7: PUSH2 0x105a
00000cba: DUP4
00000cbb: CODECOPY
00000cbc: DUP2
00000cbd: MLOAD
00000cbe: SWAP2
00000cbf: MSTORE
00000cc0: SSTORE
00000cc1: STOP
00000cc2: JUMPDEST
00000cc3: PUSH4 0x4e487b71
00000cc8: PUSH1 0xe0
00000cca: SHL
00000ccb: PUSH0
00000ccc: MSTORE
00000ccd: PUSH1 0x11
00000ccf: PUSH1 0x04
00000cd1: MSTORE
00000cd2: PUSH1 0x24
00000cd4: PUSH0
00000cd5: REVERT
00000cd6: JUMPDEST
00000cd7: DUP5
00000cd8: PUSH4 0x341a8705
00000cdd: PUSH1 0xe1
00000cdf: SHL
00000ce0: PUSH0
00000ce1: MSTORE
00000ce2: PUSH1 0x04
00000ce4: MSTORE
00000ce5: PUSH1 0x24
00000ce7: MSTORE
00000ce8: PUSH1 0x44
00000cea: PUSH0
00000ceb: REVERT
00000cec: JUMPDEST
00000ced: PUSH4 0x0658916b
00000cf2: PUSH1 0xe1
00000cf4: SHL
00000cf5: PUSH0
00000cf6: MSTORE
00000cf7: CALLER
00000cf8: PUSH1 0x04
00000cfa: MSTORE
00000cfb: PUSH1 0x24
00000cfd: MSTORE
00000cfe: PUSH1 0x44
00000d00: PUSH0
00000d01: REVERT
00000d02: JUMPDEST
00000d03: PUSH1 0x04
00000d05: CALLDATALOAD
00000d06: SWAP1
00000d07: PUSH1 0x01
00000d09: PUSH1 0x01
00000d0b: PUSH1 0xa0
00000d0d: SHL
00000d0e: SUB
00000d0f: DUP3
00000d10: AND
00000d11: DUP3
00000d12: SUB
00000d13: PUSH2 0x019f
00000d16: JUMPI
00000d17: JUMP
00000d18: JUMPDEST
00000d19: SWAP1
00000d1a: PUSH1 0x1f
00000d1c: DUP1
00000d1d: NOT
00000d1e: SWAP2
00000d1f: ADD
00000d20: AND
00000d21: DUP2
00000d22: ADD
00000d23: SWAP1
00000d24: DUP2
00000d25: LT
00000d26: PUSH8 0xffffffffffffffff
00000d2f: DUP3
00000d30: GT
00000d31: OR
00000d32: PUSH2 0x0d3a
00000d35: JUMPI
00000d36: PUSH1 0x40
00000d38: MSTORE
00000d39: JUMP
00000d3a: JUMPDEST
00000d3b: PUSH4 0x4e487b71
00000d40: PUSH1 0xe0
00000d42: SHL
00000d43: PUSH0
00000d44: MSTORE
00000d45: PUSH1 0x41
00000d47: PUSH1 0x04
00000d49: MSTORE
00000d4a: PUSH1 0x24
00000d4c: PUSH0
00000d4d: REVERT
00000d4e: JUMPDEST
00000d4f: PUSH8 0xffffffffffffffff
00000d58: DUP2
00000d59: GT
00000d5a: PUSH2 0x0d3a
00000d5d: JUMPI
00000d5e: PUSH1 0x1f
00000d60: ADD
00000d61: PUSH1 0x1f
00000d63: NOT
00000d64: AND
00000d65: PUSH1 0x20
00000d67: ADD
00000d68: SWAP1
00000d69: JUMP
00000d6a: JUMPDEST
00000d6b: ISZERO
00000d6c: PUSH2 0x0d73
00000d6f: JUMPI
00000d70: POP
00000d71: POP
00000d72: JUMP
00000d73: JUMPDEST
00000d74: PUSH3 0x5a5b27
00000d78: PUSH1 0xe3
00000d7a: SHL
00000d7b: PUSH0
00000d7c: MSTORE
00000d7d: PUSH1 0x04
00000d7f: MSTORE
00000d80: PUSH1 0x24
00000d82: MSTORE
00000d83: PUSH1 0x44
00000d85: PUSH0
00000d86: REVERT
00000d87: JUMPDEST
00000d88: PUSH0
00000d89: NOT
00000d8a: DUP2
00000d8b: EQ
00000d8c: PUSH2 0x0cc2
00000d8f: JUMPI
00000d90: PUSH1 0x01
00000d92: ADD
00000d93: SWAP1
00000d94: JUMP
00000d95: JUMPDEST
00000d96: RETURNDATASIZE
00000d97: ISZERO
00000d98: PUSH2 0x0dbf
00000d9b: JUMPI
00000d9c: RETURNDATASIZE
00000d9d: SWAP1
00000d9e: PUSH2 0x0da6
00000da1: DUP3
00000da2: PUSH2 0x0d4e
00000da5: JUMP
00000da6: JUMPDEST
00000da7: SWAP2
00000da8: PUSH2 0x0db4
00000dab: PUSH1 0x40
00000dad: MLOAD
00000dae: SWAP4
00000daf: DUP5
00000db0: PUSH2 0x0d18
00000db3: JUMP
00000db4: JUMPDEST
00000db5: DUP3
00000db6: MSTORE
00000db7: RETURNDATASIZE
00000db8: PUSH0
00000db9: PUSH1 0x20
00000dbb: DUP5
00000dbc: ADD
00000dbd: RETURNDATACOPY
00000dbe: JUMP
00000dbf: JUMPDEST
00000dc0: PUSH1 0x60
00000dc2: SWAP1
00000dc3: JUMP
00000dc4: JUMPDEST
00000dc5: PUSH1 0xff
00000dc7: PUSH0
00000dc8: DUP1
00000dc9: MLOAD
00000dca: PUSH1 0x20
00000dcc: PUSH2 0x103a
00000dcf: DUP4
00000dd0: CODECOPY
00000dd1: DUP2
00000dd2: MLOAD
00000dd3: SWAP2
00000dd4: MSTORE
00000dd5: SLOAD
00000dd6: AND
00000dd7: PUSH2 0x0ddc
00000dda: JUMPI
00000ddb: JUMP
00000ddc: JUMPDEST
00000ddd: PUSH4 0xd93c0665
00000de2: PUSH1 0xe0
00000de4: SHL
00000de5: PUSH0
00000de6: MSTORE
00000de7: PUSH1 0x04
00000de9: PUSH0
00000dea: REVERT
00000deb: JUMPDEST
00000dec: PUSH1 0x02
00000dee: PUSH0
00000def: DUP1
00000df0: MLOAD
00000df1: PUSH1 0x20
00000df3: PUSH2 0x105a
00000df6: DUP4
00000df7: CODECOPY
00000df8: DUP2
00000df9: MLOAD
00000dfa: SWAP2
00000dfb: MSTORE
00000dfc: SLOAD
00000dfd: EQ
00000dfe: PUSH2 0x0e14
00000e01: JUMPI
00000e02: PUSH1 0x02
00000e04: PUSH0
00000e05: DUP1
00000e06: MLOAD
00000e07: PUSH1 0x20
00000e09: PUSH2 0x105a
00000e0c: DUP4
00000e0d: CODECOPY
00000e0e: DUP2
00000e0f: MLOAD
00000e10: SWAP2
00000e11: MSTORE
00000e12: SSTORE
00000e13: JUMP
00000e14: JUMPDEST
00000e15: PUSH4 0x3ee5aeb5
00000e1a: PUSH1 0xe0
00000e1c: SHL
00000e1d: PUSH0
00000e1e: MSTORE
00000e1f: PUSH1 0x04
00000e21: PUSH0
00000e22: REVERT
00000e23: JUMPDEST
00000e24: SWAP1
00000e25: DUP2
00000e26: SELFBALANCE
00000e27: LT
00000e28: SELFBALANCE
00000e29: SWAP1
00000e2a: PUSH2 0x0ece
00000e2d: JUMPI
00000e2e: POP
00000e2f: PUSH1 0x01
00000e31: PUSH1 0x01
00000e33: PUSH1 0xa0
00000e35: SHL
00000e36: SUB
00000e37: AND
00000e38: SWAP1
00000e39: PUSH0
00000e3a: DUP2
00000e3b: DUP4
00000e3c: DUP2
00000e3d: ISZERO
00000e3e: PUSH2 0x0ec4
00000e41: JUMPI
00000e42: JUMPDEST
00000e43: PUSH0
00000e44: SWAP3
00000e45: DUP4
00000e46: SWAP3
00000e47: DUP4
00000e48: SWAP3
00000e49: DUP4
00000e4a: SWAP3
00000e4b: CALL
00000e4c: ISZERO
00000e4d: PUSH2 0x0e7d
00000e50: JUMPI
00000e51: PUSH1 0x20
00000e53: PUSH32 0x2e1ece5fb4a04cb9407bb825ceb4c6d6d402c18ba1cbe2054241fb1a86fd58da
00000e74: SWAP2
00000e75: PUSH1 0x40
00000e77: MLOAD
00000e78: SWAP1
00000e79: DUP2
00000e7a: MSTORE
00000e7b: LOG2
00000e7c: JUMP
00000e7d: JUMPDEST
00000e7e: DUP2
00000e7f: PUSH0
00000e80: MSTORE
00000e81: PUSH0
00000e82: PUSH1 0x20
00000e84: MSTORE
00000e85: PUSH1 0x40
00000e87: PUSH0
00000e88: KECCAK256
00000e89: DUP1
00000e8a: SLOAD
00000e8b: SWAP2
00000e8c: DUP1
00000e8d: DUP4
00000e8e: ADD
00000e8f: DUP1
00000e90: SWAP4
00000e91: GT
00000e92: PUSH2 0x0cc2
00000e95: JUMPI
00000e96: PUSH32 0xdb8894f6f59b9443ce412bc397f0e4a129eae066a787972c7c5e077deccf1db0
00000eb7: SWAP3
00000eb8: PUSH1 0x20
00000eba: SWAP3
00000ebb: SSTORE
00000ebc: PUSH1 0x40
00000ebe: MLOAD
00000ebf: SWAP1
00000ec0: DUP2
00000ec1: MSTORE
00000ec2: LOG2
00000ec3: JUMP
00000ec4: JUMPDEST
00000ec5: PUSH2 0x08fc
00000ec8: SWAP3
00000ec9: POP
00000eca: PUSH2 0x0e42
00000ecd: JUMP
00000ece: JUMPDEST
00000ecf: SWAP1
00000ed0: POP
00000ed1: PUSH4 0xb7ddd88b
00000ed6: PUSH1 0xe0
00000ed8: SHL
00000ed9: PUSH0
00000eda: MSTORE
00000edb: PUSH1 0x04
00000edd: MSTORE
00000ede: PUSH1 0x24
00000ee0: MSTORE
00000ee1: PUSH1 0x44
00000ee3: PUSH0
00000ee4: REVERT
00000ee5: JUMPDEST
00000ee6: PUSH0
00000ee7: DUP1
00000ee8: MLOAD
00000ee9: PUSH1 0x20
00000eeb: PUSH2 0x0ffa
00000eee: DUP4
00000eef: CODECOPY
00000ef0: DUP2
00000ef1: MLOAD
00000ef2: SWAP2
00000ef3: MSTORE
00000ef4: SLOAD
00000ef5: PUSH1 0x01
00000ef7: PUSH1 0x01
00000ef9: PUSH1 0xa0
00000efb: SHL
00000efc: SUB
00000efd: AND
00000efe: CALLER
00000eff: SUB
00000f00: PUSH2 0x0450
00000f03: JUMPI
00000f04: JUMP
00000f05: JUMPDEST
00000f06: PUSH0
00000f07: DUP1
00000f08: MLOAD
00000f09: PUSH1 0x20
00000f0b: PUSH2 0x109a
00000f0e: DUP4
00000f0f: CODECOPY
00000f10: DUP2
00000f11: MLOAD
00000f12: SWAP2
00000f13: MSTORE
00000f14: DUP1
00000f15: SLOAD
00000f16: PUSH1 0x01
00000f18: PUSH1 0x01
00000f1a: PUSH1 0xa0
00000f1c: SHL
00000f1d: SUB
00000f1e: NOT
00000f1f: SWAP1
00000f20: DUP2
00000f21: AND
00000f22: SWAP1
00000f23: SWAP2
00000f24: SSTORE
00000f25: PUSH0
00000f26: DUP1
00000f27: MLOAD
00000f28: PUSH1 0x20
00000f2a: PUSH2 0x0ffa
00000f2d: DUP4
00000f2e: CODECOPY
00000f2f: DUP2
00000f30: MLOAD
00000f31: SWAP2
00000f32: MSTORE
00000f33: DUP1
00000f34: SLOAD
00000f35: SWAP2
00000f36: DUP3
00000f37: AND
00000f38: PUSH1 0x01
00000f3a: PUSH1 0x01
00000f3c: PUSH1 0xa0
00000f3e: SHL
00000f3f: SUB
00000f40: SWAP4
00000f41: DUP5
00000f42: AND
00000f43: SWAP1
00000f44: DUP2
00000f45: OR
00000f46: SWAP1
00000f47: SWAP2
00000f48: SSTORE
00000f49: SWAP2
00000f4a: AND
00000f4b: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000f6c: PUSH0
00000f6d: DUP1
00000f6e: LOG3
00000f6f: JUMP
00000f70: JUMPDEST
00000f71: PUSH1 0xff
00000f73: PUSH0
00000f74: DUP1
00000f75: MLOAD
00000f76: PUSH1 0x20
00000f78: PUSH2 0x107a
00000f7b: DUP4
00000f7c: CODECOPY
00000f7d: DUP2
00000f7e: MLOAD
00000f7f: SWAP2
00000f80: MSTORE
00000f81: SLOAD
00000f82: PUSH1 0x40
00000f84: SHR
00000f85: AND
00000f86: ISZERO
00000f87: PUSH2 0x0f8c
00000f8a: JUMPI
00000f8b: JUMP
00000f8c: JUMPDEST
00000f8d: PUSH4 0x1afcd79f
00000f92: PUSH1 0xe3
00000f94: SHL
00000f95: PUSH0
00000f96: MSTORE
00000f97: PUSH1 0x04
00000f99: PUSH0
00000f9a: REVERT
00000f9b: JUMPDEST
00000f9c: SWAP1
00000f9d: PUSH2 0x0fbf
00000fa0: JUMPI
00000fa1: POP
00000fa2: DUP1
00000fa3: MLOAD
00000fa4: ISZERO
00000fa5: PUSH2 0x0fb0
00000fa8: JUMPI
00000fa9: DUP1
00000faa: MLOAD
00000fab: SWAP1
00000fac: PUSH1 0x20
00000fae: ADD
00000faf: REVERT
00000fb0: JUMPDEST
00000fb1: PUSH4 0x0a12f521
00000fb6: PUSH1 0xe1
00000fb8: SHL
00000fb9: PUSH0
00000fba: MSTORE
00000fbb: PUSH1 0x04
00000fbd: PUSH0
00000fbe: REVERT
00000fbf: JUMPDEST
00000fc0: DUP2
00000fc1: MLOAD
00000fc2: ISZERO
00000fc3: DUP1
00000fc4: PUSH2 0x0ff0
00000fc7: JUMPI
00000fc8: JUMPDEST
00000fc9: PUSH2 0x0fd0
00000fcc: JUMPI
00000fcd: POP
00000fce: SWAP1
00000fcf: JUMP
00000fd0: JUMPDEST
00000fd1: PUSH4 0x9996b315
00000fd6: PUSH1 0xe0
00000fd8: SHL
00000fd9: PUSH0
00000fda: SWAP1
00000fdb: DUP2
00000fdc: MSTORE
00000fdd: PUSH1 0x01
00000fdf: PUSH1 0x01
00000fe1: PUSH1 0xa0
00000fe3: SHL
00000fe4: SUB
00000fe5: SWAP2
00000fe6: SWAP1
00000fe7: SWAP2
00000fe8: AND
00000fe9: PUSH1 0x04
00000feb: MSTORE
00000fec: PUSH1 0x24
00000fee: SWAP1
00000fef: REVERT
00000ff0: JUMPDEST
00000ff1: POP
00000ff2: DUP1
00000ff3: EXTCODESIZE
00000ff4: ISZERO
00000ff5: PUSH2 0x0fc8
00000ff8: JUMP
00000ff9: INVALID
00000ffa: SWAP1
00000ffb: AND
00000ffc: UNKNOWN(0xD0)
00000ffd: SWAP14
00000ffe: PUSH19 0xd40fdae2fd8ceac6b6234c7706214fd39c1cd1
00001012: UNKNOWN(0xE6)
00001013: MULMOD
00001014: LOG0
00001015: MSTORE
00001016: DUP13
00001017: NOT
00001018: SWAP4
00001019: STOP
0000101a: CALLDATASIZE
0000101b: ADDMOD
0000101c: SWAP5
0000101d: LOG1
0000101e: EXTCODESIZE
0000101f: LOG1
00001020: LOG3
00001021: UNKNOWN(0x21)
00001022: MOD
00001023: PUSH8 0xc828492db98dca3e
0000102c: KECCAK256
0000102d: PUSH23 0xcc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee8
00001045: DUP2
00001046: DUP5
00001047: UNKNOWN(0xC2)
00001048: UNKNOWN(0x1F)
00001049: UNKNOWN(0x4F)
0000104a: UNKNOWN(0x21)
0000104b: DUP3
0000104c: UNKNOWN(0xAB)
0000104d: PC
0000104e: UNKNOWN(0x27)
0000104f: UNKNOWN(0xCB)
00001050: EXTCODESIZE
00001051: PUSH31 0x07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817
00001071: UNKNOWN(0xE2)
00001072: BASEFEE
00001073: PUSH14 0x003becc55f00f0c57e16840df040
00001082: CALL
00001083: POP
00001084: DUP9
00001085: UNKNOWN(0xDC)
00001086: UNKNOWN(0x2F)
00001087: DUP2
00001088: INVALID
00001089: CODECOPY
0000108a: SHR
0000108b: CODECOPY
0000108c: UNKNOWN(0x23)
0000108d: UNKNOWN(0xBE)
0000108e: UNKNOWN(0xC7)
0000108f: RETURNDATACOPY
00001090: UNKNOWN(0x23)
00001091: UNKNOWN(0xA9)
00001092: PUSH7 0x2efc9c229c6a00
0000109a: UNKNOWN(0x23)
0000109b: PUSH31 0x158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00a2
000010bb: PUSH5 0x6970667358
000010c1: UNKNOWN(0x22)
000010c2: SLT
000010c3: KECCAK256
000010c4: UNKNOWN(0x29)
000010c5: UNKNOWN(0x4C)
000010c6: UNKNOWN(0xEC)
000010c7: CREATE
000010c8: STATICCALL
000010c9: PUSH14 0xb71cc7cce00a533d480f5882abd5
000010d8: SHL
000010d9: UNKNOWN(0x4D)
000010da: SWAP6
000010db: STOP
000010dc: UNKNOWN(0x4F)
000010dd: UNKNOWN(0xCB)
000010de: MSIZE
000010df: UNKNOWN(0xE2)
000010e0: UNKNOWN(0xB4)
000010e1: ADD
000010e2: UNKNOWN(0xC3)
000010e3: UNKNOWN(0xFC)
000010e4: PUSH5 0x736f6c6343
000010ea: STOP
000010eb: ADDMOD
000010ec: BYTE
000010ed: STOP
000010ee: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0x2d737eaa0a0a7e5e5487aed597356f4420cade3f3466d0ede1bd18135b094c2e
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0x2d737eaa0a0a7e5e5487aed597356f4420cade3f3466d0ede1bd18135b094c2e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x169235ed",
            "selector": "0x169235ed",
            "calldata_variants": [
                "0x169235ed",
                "0x169235ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1794bb3c",
            "selector": "0x1794bb3c",
            "calldata_variants": [
                "0x1794bb3c",
                "0x1794bb3c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22396f1d",
            "selector": "0x22396f1d",
            "calldata_variants": [
                "0x22396f1d",
                "0x22396f1d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3f4ba83a",
            "selector": "0x3f4ba83a",
            "calldata_variants": [
                "0x3f4ba83a",
                "0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4f1ef286",
            "selector": "0x4f1ef286",
            "calldata_variants": [
                "0x4f1ef286",
                "0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x51cff8d9",
            "selector": "0x51cff8d9",
            "calldata_variants": [
                "0x51cff8d9",
                "0x51cff8d90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x52d1902d",
            "selector": "0x52d1902d",
            "calldata_variants": [
                "0x52d1902d",
                "0x52d1902d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x55f4bdfc",
            "selector": "0x55f4bdfc",
            "calldata_variants": [
                "0x55f4bdfc",
                "0x55f4bdfc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2185,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
high access_control codex Relayer can finalize arbitrary transfers without on-chain validation 85 no
view
evidence_json
{
    "evidence": "finalizeTransfer accepts arbitrary _recipient/_amount/_finalizationFee from the relayer and only checks _amount >= _finalizationFee and _counterpartyIdx == transferFinalizedIdx; initiateTransfer only emits an event and does not store transfer data for later validation.",
    "locations": [
        "contracts/standard-bridge/Gateway.sol:28",
        "contracts/standard-bridge/Gateway.sol:45"
    ],
    "recommendation": "Store transfer details (amount/recipient/fee hash) on initiateTransfer and require a matching proof on finalizeTransfer (e.g., merkle proof or threshold validator signatures). At minimum, enforce that _finalizationFee equals the stored counterpartyFinalizationFee and that the finalized transfer matches a recorded initiation.",
    "exploit_scenario": "If the relayer key is compromised or malicious, it can call finalizeTransfer with recipient set to itself and _amount set up to the contract balance. Because no transfer data is stored and the function only checks sequential index and _amount >= _finalizationFee, the relayer can set _finalizationFee = _amount and drain all escrowed ETH in a single call."
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x847fe616c2214cdd79a76d9a0d40b3eca93c835d627c4d355667c8e6f53e3f76
call_targets: 0xc973d09e51a20c9ab0214c439e4b34dbac52ad67
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x847fe616c2214cdd79a76d9a0d40b3eca93c835d627c4d355667c8e6f53e3f76",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc973d09e51a20c9ab0214c439e4b34dbac52ad67"
    ],
    "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": "0x169235ed",
            "selector": "0x169235ed",
            "calldata_variants": [
                "0x169235ed",
                "0x169235ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1794bb3c",
            "selector": "0x1794bb3c",
            "calldata_variants": [
                "0x1794bb3c",
                "0x1794bb3c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22396f1d",
            "selector": "0x22396f1d",
            "calldata_variants": [
                "0x22396f1d",
                "0x22396f1d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3f4ba83a",
            "selector": "0x3f4ba83a",
            "calldata_variants": [
                "0x3f4ba83a",
                "0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4f1ef286",
            "selector": "0x4f1ef286",
            "calldata_variants": [
                "0x4f1ef286",
                "0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x51cff8d9",
            "selector": "0x51cff8d9",
            "calldata_variants": [
                "0x51cff8d9",
                "0x51cff8d90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x52d1902d",
            "selector": "0x52d1902d",
            "calldata_variants": [
                "0x52d1902d",
                "0x52d1902d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x55f4bdfc",
            "selector": "0x55f4bdfc",
            "calldata_variants": [
                "0x55f4bdfc",
                "0x55f4bdfc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1710,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3659,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4226,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x847fe616c2214cdd79a76d9a0d40b3eca93c835d627c4d355667c8e6f53e3f76
call_targets: 0xc973d09e51a20c9ab0214c439e4b34dbac52ad67
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x847fe616c2214cdd79a76d9a0d40b3eca93c835d627c4d355667c8e6f53e3f76",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc973d09e51a20c9ab0214c439e4b34dbac52ad67"
    ],
    "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": "0x169235ed",
            "selector": "0x169235ed",
            "calldata_variants": [
                "0x169235ed",
                "0x169235ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1794bb3c",
            "selector": "0x1794bb3c",
            "calldata_variants": [
                "0x1794bb3c",
                "0x1794bb3c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22396f1d",
            "selector": "0x22396f1d",
            "calldata_variants": [
                "0x22396f1d",
                "0x22396f1d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3f4ba83a",
            "selector": "0x3f4ba83a",
            "calldata_variants": [
                "0x3f4ba83a",
                "0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4f1ef286",
            "selector": "0x4f1ef286",
            "calldata_variants": [
                "0x4f1ef286",
                "0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x51cff8d9",
            "selector": "0x51cff8d9",
            "calldata_variants": [
                "0x51cff8d9",
                "0x51cff8d90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x52d1902d",
            "selector": "0x52d1902d",
            "calldata_variants": [
                "0x52d1902d",
                "0x52d1902d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x55f4bdfc",
            "selector": "0x55f4bdfc",
            "calldata_variants": [
                "0x55f4bdfc",
                "0x55f4bdfc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1710,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3659,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4226,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0xe78bb2f9be7823bf160af03ed0d47ef3368ab37ebd31c347b45371204a9e273a
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0xe78bb2f9be7823bf160af03ed0d47ef3368ab37ebd31c347b45371204a9e273a",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x169235ed",
            "selector": "0x169235ed",
            "calldata_variants": [
                "0x169235ed",
                "0x169235ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1794bb3c",
            "selector": "0x1794bb3c",
            "calldata_variants": [
                "0x1794bb3c",
                "0x1794bb3c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22396f1d",
            "selector": "0x22396f1d",
            "calldata_variants": [
                "0x22396f1d",
                "0x22396f1d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3f4ba83a",
            "selector": "0x3f4ba83a",
            "calldata_variants": [
                "0x3f4ba83a",
                "0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4f1ef286",
            "selector": "0x4f1ef286",
            "calldata_variants": [
                "0x4f1ef286",
                "0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x51cff8d9",
            "selector": "0x51cff8d9",
            "calldata_variants": [
                "0x51cff8d9",
                "0x51cff8d90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x52d1902d",
            "selector": "0x52d1902d",
            "calldata_variants": [
                "0x52d1902d",
                "0x52d1902d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x55f4bdfc",
            "selector": "0x55f4bdfc",
            "calldata_variants": [
                "0x55f4bdfc",
                "0x55f4bdfc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 1,
    "create2_count": 0
}
low other cast Contract creation opcode present 60 no
view
evidence_json
{
    "notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
    "create_count": 1,
    "create2_count": 0
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 5
}