019be3d7-52ed-7231-975b-72409c137e98
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 |
|---|---|---|---|---|
| 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 |
{
"status": "not_proxy"
}
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.
{"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"]}]}
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
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_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 | — |
viewevidence_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 5
}
|