2b469a7a-958a-44b3-abe1-8a54018295c1
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 |
|---|---|---|---|---|
| 30995 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 94981 | artifact.fetch | failed | 1 / 3 | 2 weeks ago |
| 94982 | tool.cast_disasm | complete | 1 / 3 | 2 weeks ago |
| 94983 | analysis.bundle | complete | 1 / 3 | 2 weeks ago |
| 94984 | capability.graph | complete | 1 / 3 | 2 weeks ago |
| 94985 | detector.run | complete | 1 / 3 | 2 weeks ago |
| 94986 | validation.fork | complete | 1 / 3 | 2 weeks ago |
No slither job recorded yet.
[codex:1340934] OpenAI Codex v0.77.0 (research preview)
[codex:1340934] --------
[codex:1340934] workdir: /tmp/codex-multi-ukbfqht1
[codex:1340934] model: gpt-5.2-codex
[codex:1340934] provider: openai
[codex:1340934] approval: never
[codex:1340934] sandbox: read-only
[codex:1340934] reasoning effort: xhigh
[codex:1340934] reasoning summaries: auto
[codex:1340934] session id: 019b76f9-2f0e-7c33-8211-d9ee1e07a671
[codex:1340934] --------
[codex:1340934] user
[codex:1340934] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1340934]
[codex:1340934] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:1340934]
[codex:1340934] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1340934] - Gas inefficiency, code quality, naming, or best practices
[codex:1340934] - Theoretical vulnerabilities without a clear extraction path
[codex:1340934] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:1340934] - Front-running unless it enables theft beyond MEV
[codex:1340934] - DoS, griefing, or issues that don't result in attacker profit
[codex:1340934] - Missing events, view function issues, or informational findings
[codex:1340934]
[codex:1340934] HIGH-VALUE PATTERNS TO HUNT:
[codex:1340934] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:1340934] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:1340934] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:1340934] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:1340934] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:1340934] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:1340934] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:1340934] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:1340934] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:1340934]
[codex:1340934] For each finding, you MUST provide:
[codex:1340934] 1. Exact file and line numbers of vulnerable code
[codex:1340934] 2. Step-by-step exploit transaction sequence
[codex:1340934] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:1340934]
[codex:1340934] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:1340934]
[codex:1340934] Output MUST be valid JSON matching the provided schema.
[codex:1340934] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1340934] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1340934] mcp startup: no servers
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Preparing to read instructions**
[codex:1340934] exec
[codex:1340934] /bin/bash -lc ls in /tmp/codex-multi-ukbfqht1 succeeded in 5ms:
[codex:1340934] AUDIT_BUNDLE.txt
[codex:1340934] codex-output-schema.json
[codex:1340934] contracts
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Reading AUDIT_BUNDLE.txt**
[codex:1340934] exec
[codex:1340934] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-ukbfqht1 succeeded in 6ms:
[codex:1340934] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:1340934]
[codex:1340934] ================================================================================
[codex:1340934] FILE: contracts/src/Constants/Constants.sol
[codex:1340934] ================================================================================
[codex:1340934] // SPDX-License-Identifier: MIT
[codex:1340934] pragma solidity ^0.8.19;
[codex:1340934]
[codex:1340934] uint256 constant _BUCKET_DURATION = uint256(7 days);
[codex:1340934] uint256 constant _GENESIS_TIMESTAMP = 1700352000;
[codex:1340934]
[codex:1340934] ================================================================================
[codex:1340934] FILE: contracts/src/GLOW.sol
[codex:1340934] ================================================================================
[codex:1340934] // SPDX-License-Identifier: MIT
[codex:1340934] pragma solidity ^0.8.19;
[codex:1340934]
[codex:1340934] import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:1340934] import {IGlow} from "./interfaces/IGlow.sol";
[codex:1340934] import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Searching for contract vulnerabilities**
[codex:1340934] exec
[codex:1340934] /bin/bash -lc 'rg --files contracts/src' in /tmp/codex-multi-ukbfqht1 succeeded in 10ms:
[codex:1340934] contracts/src/USDG.sol
[codex:1340934] contracts/src/GLOW.sol
[codex:1340934] contracts/src/USDGRedemption.sol
[codex:1340934] contracts/src/interfaces/IGlow.sol
[codex:1340934] contracts/src/interfaces/IUniswapV2Pair.sol
[codex:1340934] contracts/src/interfaces/IVetoCouncil.sol
[codex:1340934] contracts/src/Constants/Constants.sol
[codex:1340934] contracts/src/libraries/UniswapV2Library.sol
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Inspecting USDG modules**
[codex:1340934] exec
[codex:1340934] /bin/bash -lc "sed -n '1,240p' contracts/src/USDG.sol" in /tmp/codex-multi-ukbfqht1 succeeded in 5ms:
[codex:1340934] // SPDX-License-Identifier: UNLICENSED
[codex:1340934] pragma solidity ^0.8.17;
[codex:1340934]
[codex:1340934] import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
[codex:1340934] import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:1340934] import {UniswapV2Library} from "@glow/libraries/UniswapV2Library.sol";
[codex:1340934] import {IVetoCouncil} from "@glow/interfaces/IVetoCouncil.sol";
[codex:1340934] import {Glow} from "@glow/GLOW.sol";
[codex:1340934] /**
[codex:1340934] * @title USDG
[codex:1340934] * @notice A contract for swapping USDC for USDG
[codex:1340934] * - the contract takes in USDC and mints USDG
[codex:1340934] * - the contract can only be used EOA's and by allowlisted contracts
[codex:1340934] * - Allow listed contracts include Core Glow Contracts and a GCC/USDG Pair
[codex:1340934] * - USDG is part of the Glow Protocol's Guarded Launch program.
[codex:1340934] * - After the Glow Protocol's Guarded Launch program, USDG will be replaced with USDC
[codex:1340934] */
[codex:1340934]
[codex:1340934] contract USDG is ERC20Permit, Ownable {
[codex:1340934] error ErrIsContract();
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Analyzing USDG minting restrictions**
[codex:1340934] exec
[codex:1340934] /bin/bash -lc "sed -n '1,260p' contracts/src/USDGRedemption.sol" in /tmp/codex-multi-ukbfqht1 succeeded in 5ms:
[codex:1340934] // SPDX-License-Identifier: UNLICENSED
[codex:1340934] pragma solidity ^0.8.17;
[codex:1340934]
[codex:1340934] import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
[codex:1340934] import {USDG} from "./USDG.sol";
[codex:1340934] import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1340934] import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1340934]
[codex:1340934] /**
[codex:1340934] * @title USDGRedemption
[codex:1340934] * @notice Enables users to redeem USDG for USDC on a 1:1 basis and allows a designated
[codex:1340934] * withdraw guardian to manage USDC reserves.
[codex:1340934] * @dev Relies on OpenZeppelin's ReentrancyGuard and SafeERC20 utilities for safe
[codex:1340934] * external calls and token transfers.
[codex:1340934] */
[codex:1340934] contract USDGRedemption is ReentrancyGuard {
[codex:1340934] using SafeERC20 for IERC20;
[codex:1340934]
[codex:1340934] /// @notice Zero amount or zero address supplied where a positive, non-zero value is required.
[codex:1340934] error ZeroNotAllowed();
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Analyzing potential exploits in GLOW and USDG**
[codex:1340934] exec
[codex:1340934] /bin/bash -lc "sed -n '1,240p' contracts/src/GLOW.sol" in /tmp/codex-multi-ukbfqht1 succeeded in 6ms:
[codex:1340934] // SPDX-License-Identifier: MIT
[codex:1340934] pragma solidity ^0.8.19;
[codex:1340934]
[codex:1340934] import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:1340934] import {IGlow} from "./interfaces/IGlow.sol";
[codex:1340934] import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
[codex:1340934] import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";
[codex:1340934] import {_GENESIS_TIMESTAMP} from "@glow/Constants/Constants.sol";
[codex:1340934] /**
[codex:1340934] * @title Glow
[codex:1340934] * @author DavidVorick
[codex:1340934] * @author 0xSimon(twitter) - OxSimbo(github)
[codex:1340934] * @notice The Glow token is the backbone of the protocol
[codex:1340934] * - Solar farms are rewarded with glow tokens as they produce solar
[codex:1340934] * - GCA's (Glow Certification Agents) and Veto Council Members are rewarded in GLOW
[codex:1340934] * - for their contributions
[codex:1340934] * - The Grants Treasury is rewarded in GLOW for their contributions
[codex:1340934] * - Holders can anchor (stake) glow to earn voting power in governance
[codex:1340934] * - anchoring lasts 5 years from the point of unstaking
[codex:1340934] */
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Continuing to review remaining content**
[codex:1340934] exec
[codex:1340934] /bin/bash -lc "sed -n '240,480p' contracts/src/GLOW.sol" in /tmp/codex-multi-ukbfqht1 succeeded in 6ms:
[codex:1340934] if (pointers.head == pointers.tail) {
[codex:1340934] if (_unstakedPositions[msg.sender][pointers.head].amount == 0) {
[codex:1340934] adjustedLenBefore = 0;
[codex:1340934] indexInMappingToPushTo = pointers.head;
[codex:1340934] }
[codex:1340934] }
[codex:1340934]
[codex:1340934] //if adjustlenBefore >= 99
[codex:1340934] // we + 2 to proactively set emergencyLastUpdate when length will be 99 so the 100th unstake will trigger cooldown
[codex:1340934] if (adjustedLenBefore + 2 > MAX_UNSTAKES_BEFORE_EMERGENCY_COOLDOWN) {
[codex:1340934] uint256 lastUnstakedTimestamp = emergencyLastUnstakeTimestamp[msg.sender];
[codex:1340934]
[codex:1340934] //Handle the zero case
[codex:1340934] if (lastUnstakedTimestamp == 0) {
[codex:1340934] emergencyLastUnstakeTimestamp[msg.sender] = block.timestamp;
[codex:1340934] // if the user has unstaked before, we need to check if they are in cooldown
[codex:1340934] } else if (block.timestamp - lastUnstakedTimestamp < EMERGENCY_COOLDOWN_PERIOD) {
[codex:1340934] _revert(IGlow.UnstakingOnEmergencyCooldown.selector);
[codex:1340934] // if the user is not in cooldown, we need to update the timestamp
[codex:1340934] } else {
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Continuing processing**
[codex:1340934] exec
[codex:1340934] /bin/bash -lc "sed -n '480,960p' contracts/src/GLOW.sol" in /tmp/codex-multi-ukbfqht1 succeeded in 5ms:
[codex:1340934] //And if the amount is empty that means that there has been a claim on that position
[codex:1340934] //And the tail would not be zero
[codex:1340934] if (i == 0) {
[codex:1340934] if (position.amount == 0) {
[codex:1340934] // solhint-disable-next-line no-inline-assembly
[codex:1340934] assembly {
[codex:1340934] //set the length to 0 in memory
[codex:1340934] mstore(positions, 0)
[codex:1340934] }
[codex:1340934] break;
[codex:1340934] }
[codex:1340934] }
[codex:1340934] //No addition, therefore no risk of overflow
[codex:1340934] //i always >= start so no risk of underflow
[codex:1340934] positions[i - start] = position;
[codex:1340934] }
[codex:1340934] return positions;
[codex:1340934] }
[codex:1340934] }
[codex:1340934]
[codex:1340934]
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Analyzing smart contract exploit potential**
[codex:1340934]
[codex:1340934] I'm carefully reviewing the staking, claiming, swap, and redemption logic across three contracts to identify any vulnerabilities enabling profit extraction. I’m checking arithmetic safety, allowance bypasses, token minting and burning details, and pointer updates, making sure no loopholes allow unauthorized token transfers or unintended minting despite complex staking and cooldown mechanisms.
[codex:1340934] thinking
[codex:1340934] **Verifying loop safety and finalizing report**
[codex:1340934]
[codex:1340934] I'm confirming all loop boundary conditions to ensure no underflows or overflows occur and verifying token behavior assumptions like USDC's standard status. After thorough checks, I see no exploitable paths and am preparing the final JSON report with no findings, ensuring full coverage by reviewing all relevant files and data.
[codex:1340934] exec
[codex:1340934] /bin/bash -lc 'tail -n 40 AUDIT_BUNDLE.txt' in /tmp/codex-multi-ukbfqht1 succeeded in 7ms:
[codex:1340934] returns (uint256 amountIn)
[codex:1340934] {
[codex:1340934] require(amountOut > 0, "UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT");
[codex:1340934] require(reserveIn > 0 && reserveOut > 0, "UniswapV2Library: INSUFFICIENT_LIQUIDITY");
[codex:1340934] uint256 numerator = reserveIn * (amountOut) * (1000);
[codex:1340934] uint256 denominator = reserveOut - (amountOut) * (997);
[codex:1340934] amountIn = (numerator / denominator) + (1);
[codex:1340934] }
[codex:1340934]
[codex:1340934] // // performs chained getAmountOut calculations on any number of pairs
[codex:1340934] // function getAmountsOut(address factory, uint256 amountIn, address[] memory path)
[codex:1340934] // internal
[codex:1340934] // view
[codex:1340934] // returns (uint256[] memory amounts)
[codex:1340934] // {
[codex:1340934] // require(path.length >= 2, "UniswapV2Library: INVALID_PATH");
[codex:1340934] // amounts = new uint[](path.length);
[codex:1340934] // amounts[0] = amountIn;
[codex:1340934] // for (uint256 i; i < path.length - 1; i++) {
[codex:1340934] // (uint256 reserveIn, uint256 reserveOut) = getReserves(factory, path[i], path[i + 1]);
[codex:1340934]
[codex:1340934] thinking
[codex:1340934] **Preparing final JSON output**
[codex:1340934] codex
[codex:1340934] {"no_findings":true,"summary":"No concrete, exploitable value-extraction paths found in the provided contracts.","findings":[]}
[codex:1340934] tokens used
[codex:1340934] 47,724
[codex:1340934] {"no_findings":true,"summary":"No concrete, exploitable value-extraction paths found in the provided contracts.","findings":[]}
{
"codex": {
"ran_at": "2026-01-01T00:35:24.427347+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction paths found in the provided contracts.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction paths found in the provided contracts.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x0072 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x5b8ed5c6 00000026: GT 00000027: PUSH2 0x0050 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0x5b8ed5c6 00000031: EQ 00000032: PUSH2 0x00fd 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xbf089358 0000003c: EQ 0000003d: PUSH2 0x0105 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xdb81f99b 00000047: EQ 00000048: PUSH2 0x012b 0000004b: JUMPI 0000004c: PUSH1 0x00 0000004e: DUP1 0000004f: REVERT 00000050: JUMPDEST 00000051: DUP1 00000052: PUSH4 0x11eac855 00000057: EQ 00000058: PUSH2 0x0077 0000005b: JUMPI 0000005c: DUP1 0000005d: PUSH4 0x48e5d364 00000062: EQ 00000063: PUSH2 0x00c2 00000066: JUMPI 00000067: DUP1 00000068: PUSH4 0x53556559 0000006d: EQ 0000006e: PUSH2 0x00e8 00000071: JUMPI 00000072: JUMPDEST 00000073: PUSH1 0x00 00000075: DUP1 00000076: REVERT 00000077: JUMPDEST 00000078: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000099: JUMPDEST 0000009a: PUSH1 0x40 0000009c: MLOAD 0000009d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000000b2: SWAP1 000000b3: SWAP2 000000b4: AND 000000b5: DUP2 000000b6: MSTORE 000000b7: PUSH1 0x20 000000b9: ADD 000000ba: PUSH1 0x40 000000bc: MLOAD 000000bd: DUP1 000000be: SWAP2 000000bf: SUB 000000c0: SWAP1 000000c1: RETURN 000000c2: JUMPDEST 000000c3: PUSH32 0x000000000000000000000000c5174bbf649a92f9941e981af68aaa14dd814f85 000000e4: PUSH2 0x0099 000000e7: JUMP 000000e8: JUMPDEST 000000e9: PUSH2 0x00fb 000000ec: PUSH2 0x00f6 000000ef: CALLDATASIZE 000000f0: PUSH1 0x04 000000f2: PUSH2 0x0ac4 000000f5: JUMP 000000f6: JUMPDEST 000000f7: PUSH2 0x013e 000000fa: JUMP 000000fb: JUMPDEST 000000fc: STOP 000000fd: JUMPDEST 000000fe: PUSH2 0x00fb 00000101: PUSH2 0x0247 00000104: JUMP 00000105: JUMPDEST 00000106: PUSH32 0x000000000000000000000000e010ec500720be9ef3f82129e7ed2ee1fb7955f2 00000127: PUSH2 0x0099 0000012a: JUMP 0000012b: JUMPDEST 0000012c: PUSH2 0x00fb 0000012f: PUSH2 0x0139 00000132: CALLDATASIZE 00000133: PUSH1 0x04 00000135: PUSH2 0x0ac4 00000138: JUMP 00000139: JUMPDEST 0000013a: PUSH2 0x04e5 0000013d: JUMP 0000013e: JUMPDEST 0000013f: PUSH2 0x0146 00000142: PUSH2 0x076b 00000145: JUMP 00000146: JUMPDEST 00000147: DUP1 00000148: PUSH1 0x00 0000014a: SUB 0000014b: PUSH2 0x0180 0000014e: JUMPI 0000014f: PUSH1 0x40 00000151: MLOAD 00000152: PUSH32 0xcf4b4e2e00000000000000000000000000000000000000000000000000000000 00000173: DUP2 00000174: MSTORE 00000175: PUSH1 0x04 00000177: ADD 00000178: PUSH1 0x40 0000017a: MLOAD 0000017b: DUP1 0000017c: SWAP2 0000017d: SUB 0000017e: SWAP1 0000017f: REVERT 00000180: JUMPDEST 00000181: PUSH2 0x01c4 00000184: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000199: PUSH32 0x000000000000000000000000e010ec500720be9ef3f82129e7ed2ee1fb7955f2 000001ba: DUP2 000001bb: AND 000001bc: SWAP1 000001bd: CALLER 000001be: SWAP1 000001bf: DUP5 000001c0: PUSH2 0x07ae 000001c3: JUMP 000001c4: JUMPDEST 000001c5: PUSH2 0x0205 000001c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001dd: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000001fe: AND 000001ff: CALLER 00000200: DUP4 00000201: PUSH2 0x083d 00000204: JUMP 00000205: JUMPDEST 00000206: PUSH1 0x40 00000208: MLOAD 00000209: DUP2 0000020a: DUP2 0000020b: MSTORE 0000020c: CALLER 0000020d: SWAP1 0000020e: PUSH32 0x6ea412b125ed242bc34c304877264761547306c2429c03d7fd1b477aa61a3f5d 0000022f: SWAP1 00000230: PUSH1 0x20 00000232: ADD 00000233: PUSH1 0x40 00000235: MLOAD 00000236: DUP1 00000237: SWAP2 00000238: SUB 00000239: SWAP1 0000023a: LOG2 0000023b: PUSH2 0x0244 0000023e: PUSH1 0x01 00000240: PUSH1 0x00 00000242: SSTORE 00000243: JUMP 00000244: JUMPDEST 00000245: POP 00000246: JUMP 00000247: JUMPDEST 00000248: PUSH2 0x024f 0000024b: PUSH2 0x076b 0000024e: JUMP 0000024f: JUMPDEST 00000250: PUSH1 0x00 00000252: PUSH32 0x000000000000000000000000e010ec500720be9ef3f82129e7ed2ee1fb7955f2 00000273: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000288: AND 00000289: PUSH4 0xa46ba7f9 0000028e: PUSH1 0x40 00000290: MLOAD 00000291: DUP2 00000292: PUSH4 0xffffffff 00000297: AND 00000298: PUSH1 0xe0 0000029a: SHL 0000029b: DUP2 0000029c: MSTORE 0000029d: PUSH1 0x04 0000029f: ADD 000002a0: PUSH1 0x20 000002a2: PUSH1 0x40 000002a4: MLOAD 000002a5: DUP1 000002a6: DUP4 000002a7: SUB 000002a8: DUP2 000002a9: DUP7 000002aa: GAS 000002ab: STATICCALL 000002ac: ISZERO 000002ad: DUP1 000002ae: ISZERO 000002af: PUSH2 0x02bc 000002b2: JUMPI 000002b3: RETURNDATASIZE 000002b4: PUSH1 0x00 000002b6: DUP1 000002b7: RETURNDATACOPY 000002b8: RETURNDATASIZE 000002b9: PUSH1 0x00 000002bb: REVERT 000002bc: JUMPDEST 000002bd: POP 000002be: POP 000002bf: POP 000002c0: POP 000002c1: PUSH1 0x40 000002c3: MLOAD 000002c4: RETURNDATASIZE 000002c5: PUSH1 0x1f 000002c7: NOT 000002c8: PUSH1 0x1f 000002ca: DUP3 000002cb: ADD 000002cc: AND 000002cd: DUP3 000002ce: ADD 000002cf: DUP1 000002d0: PUSH1 0x40 000002d2: MSTORE 000002d3: POP 000002d4: DUP2 000002d5: ADD 000002d6: SWAP1 000002d7: PUSH2 0x02e0 000002da: SWAP2 000002db: SWAP1 000002dc: PUSH2 0x0add 000002df: JUMP 000002e0: JUMPDEST 000002e1: SWAP1 000002e2: POP 000002e3: DUP1 000002e4: PUSH2 0x0319 000002e7: JUMPI 000002e8: PUSH1 0x40 000002ea: MLOAD 000002eb: PUSH32 0x2c6230d000000000000000000000000000000000000000000000000000000000 0000030c: DUP2 0000030d: MSTORE 0000030e: PUSH1 0x04 00000310: ADD 00000311: PUSH1 0x40 00000313: MLOAD 00000314: DUP1 00000315: SWAP2 00000316: SUB 00000317: SWAP1 00000318: REVERT 00000319: JUMPDEST 0000031a: PUSH1 0x40 0000031c: MLOAD 0000031d: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000 0000033e: DUP2 0000033f: MSTORE 00000340: ADDRESS 00000341: PUSH1 0x04 00000343: DUP3 00000344: ADD 00000345: MSTORE 00000346: PUSH1 0x00 00000348: SWAP1 00000349: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000036a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000037f: AND 00000380: SWAP1 00000381: PUSH4 0x70a08231 00000386: SWAP1 00000387: PUSH1 0x24 00000389: ADD 0000038a: PUSH1 0x20 0000038c: PUSH1 0x40 0000038e: MLOAD 0000038f: DUP1 00000390: DUP4 00000391: SUB 00000392: DUP2 00000393: DUP7 00000394: GAS 00000395: STATICCALL 00000396: ISZERO 00000397: DUP1 00000398: ISZERO 00000399: PUSH2 0x03a6 0000039c: JUMPI 0000039d: RETURNDATASIZE 0000039e: PUSH1 0x00 000003a0: DUP1 000003a1: RETURNDATACOPY 000003a2: RETURNDATASIZE 000003a3: PUSH1 0x00 000003a5: REVERT 000003a6: JUMPDEST 000003a7: POP 000003a8: POP 000003a9: POP 000003aa: POP 000003ab: PUSH1 0x40 000003ad: MLOAD 000003ae: RETURNDATASIZE 000003af: PUSH1 0x1f 000003b1: NOT 000003b2: PUSH1 0x1f 000003b4: DUP3 000003b5: ADD 000003b6: AND 000003b7: DUP3 000003b8: ADD 000003b9: DUP1 000003ba: PUSH1 0x40 000003bc: MSTORE 000003bd: POP 000003be: DUP2 000003bf: ADD 000003c0: SWAP1 000003c1: PUSH2 0x03ca 000003c4: SWAP2 000003c5: SWAP1 000003c6: PUSH2 0x0aff 000003c9: JUMP 000003ca: JUMPDEST 000003cb: SWAP1 000003cc: POP 000003cd: DUP1 000003ce: PUSH1 0x00 000003d0: SUB 000003d1: PUSH2 0x0406 000003d4: JUMPI 000003d5: PUSH1 0x40 000003d7: MLOAD 000003d8: PUSH32 0x688692b000000000000000000000000000000000000000000000000000000000 000003f9: DUP2 000003fa: MSTORE 000003fb: PUSH1 0x04 000003fd: ADD 000003fe: PUSH1 0x40 00000400: MLOAD 00000401: DUP1 00000402: SWAP2 00000403: SUB 00000404: SWAP1 00000405: REVERT 00000406: JUMPDEST 00000407: PUSH2 0x0467 0000040a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000041f: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000440: AND 00000441: PUSH32 0x000000000000000000000000c5174bbf649a92f9941e981af68aaa14dd814f85 00000462: DUP4 00000463: PUSH2 0x083d 00000466: JUMP 00000467: JUMPDEST 00000468: PUSH32 0x000000000000000000000000c5174bbf649a92f9941e981af68aaa14dd814f85 00000489: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000049e: AND 0000049f: PUSH32 0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5 000004c0: DUP3 000004c1: PUSH1 0x40 000004c3: MLOAD 000004c4: PUSH2 0x04cf 000004c7: SWAP2 000004c8: DUP2 000004c9: MSTORE 000004ca: PUSH1 0x20 000004cc: ADD 000004cd: SWAP1 000004ce: JUMP 000004cf: JUMPDEST 000004d0: PUSH1 0x40 000004d2: MLOAD 000004d3: DUP1 000004d4: SWAP2 000004d5: SUB 000004d6: SWAP1 000004d7: LOG2 000004d8: POP 000004d9: POP 000004da: PUSH2 0x04e3 000004dd: PUSH1 0x01 000004df: PUSH1 0x00 000004e1: SSTORE 000004e2: JUMP 000004e3: JUMPDEST 000004e4: JUMP 000004e5: JUMPDEST 000004e6: PUSH2 0x04ed 000004e9: PUSH2 0x076b 000004ec: JUMP 000004ed: JUMPDEST 000004ee: DUP1 000004ef: PUSH1 0x00 000004f1: SUB 000004f2: PUSH2 0x0527 000004f5: JUMPI 000004f6: PUSH1 0x40 000004f8: MLOAD 000004f9: PUSH32 0x89b4971e00000000000000000000000000000000000000000000000000000000 0000051a: DUP2 0000051b: MSTORE 0000051c: PUSH1 0x04 0000051e: ADD 0000051f: PUSH1 0x40 00000521: MLOAD 00000522: DUP1 00000523: SWAP2 00000524: SUB 00000525: SWAP1 00000526: REVERT 00000527: JUMPDEST 00000528: CALLER 00000529: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000053e: PUSH32 0x000000000000000000000000c5174bbf649a92f9941e981af68aaa14dd814f85 0000055f: AND 00000560: EQ 00000561: PUSH2 0x0596 00000564: JUMPI 00000565: PUSH1 0x40 00000567: MLOAD 00000568: PUSH32 0xbaa1faeb00000000000000000000000000000000000000000000000000000000 00000589: DUP2 0000058a: MSTORE 0000058b: PUSH1 0x04 0000058d: ADD 0000058e: PUSH1 0x40 00000590: MLOAD 00000591: DUP1 00000592: SWAP2 00000593: SUB 00000594: SWAP1 00000595: REVERT 00000596: JUMPDEST 00000597: PUSH1 0x40 00000599: MLOAD 0000059a: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000 000005bb: DUP2 000005bc: MSTORE 000005bd: ADDRESS 000005be: PUSH1 0x04 000005c0: DUP3 000005c1: ADD 000005c2: MSTORE 000005c3: PUSH1 0x00 000005c5: SWAP1 000005c6: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000005e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005fc: AND 000005fd: SWAP1 000005fe: PUSH4 0x70a08231 00000603: SWAP1 00000604: PUSH1 0x24 00000606: ADD 00000607: PUSH1 0x20 00000609: PUSH1 0x40 0000060b: MLOAD 0000060c: DUP1 0000060d: DUP4 0000060e: SUB 0000060f: DUP2 00000610: DUP7 00000611: GAS 00000612: STATICCALL 00000613: ISZERO 00000614: DUP1 00000615: ISZERO 00000616: PUSH2 0x0623 00000619: JUMPI 0000061a: RETURNDATASIZE 0000061b: PUSH1 0x00 0000061d: DUP1 0000061e: RETURNDATACOPY 0000061f: RETURNDATASIZE 00000620: PUSH1 0x00 00000622: REVERT 00000623: JUMPDEST 00000624: POP 00000625: POP 00000626: POP 00000627: POP 00000628: PUSH1 0x40 0000062a: MLOAD 0000062b: RETURNDATASIZE 0000062c: PUSH1 0x1f 0000062e: NOT 0000062f: PUSH1 0x1f 00000631: DUP3 00000632: ADD 00000633: AND 00000634: DUP3 00000635: ADD 00000636: DUP1 00000637: PUSH1 0x40 00000639: MSTORE 0000063a: POP 0000063b: DUP2 0000063c: ADD 0000063d: SWAP1 0000063e: PUSH2 0x0647 00000641: SWAP2 00000642: SWAP1 00000643: PUSH2 0x0aff 00000646: JUMP 00000647: JUMPDEST 00000648: SWAP1 00000649: POP 0000064a: DUP1 0000064b: PUSH1 0x00 0000064d: SUB 0000064e: PUSH2 0x0683 00000651: JUMPI 00000652: PUSH1 0x40 00000654: MLOAD 00000655: PUSH32 0x688692b000000000000000000000000000000000000000000000000000000000 00000676: DUP2 00000677: MSTORE 00000678: PUSH1 0x04 0000067a: ADD 0000067b: PUSH1 0x40 0000067d: MLOAD 0000067e: DUP1 0000067f: SWAP2 00000680: SUB 00000681: SWAP1 00000682: REVERT 00000683: JUMPDEST 00000684: DUP1 00000685: DUP3 00000686: GT 00000687: ISZERO 00000688: PUSH2 0x068f 0000068b: JUMPI 0000068c: DUP1 0000068d: SWAP2 0000068e: POP 0000068f: JUMPDEST 00000690: PUSH2 0x06f0 00000693: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006a8: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000006c9: AND 000006ca: PUSH32 0x000000000000000000000000c5174bbf649a92f9941e981af68aaa14dd814f85 000006eb: DUP5 000006ec: PUSH2 0x083d 000006ef: JUMP 000006f0: JUMPDEST 000006f1: PUSH32 0x000000000000000000000000c5174bbf649a92f9941e981af68aaa14dd814f85 00000712: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000727: AND 00000728: PUSH32 0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5 00000749: DUP4 0000074a: PUSH1 0x40 0000074c: MLOAD 0000074d: PUSH2 0x0758 00000750: SWAP2 00000751: DUP2 00000752: MSTORE 00000753: PUSH1 0x20 00000755: ADD 00000756: SWAP1 00000757: JUMP 00000758: JUMPDEST 00000759: PUSH1 0x40 0000075b: MLOAD 0000075c: DUP1 0000075d: SWAP2 0000075e: SUB 0000075f: SWAP1 00000760: LOG2 00000761: POP 00000762: PUSH2 0x0244 00000765: PUSH1 0x01 00000767: PUSH1 0x00 00000769: SSTORE 0000076a: JUMP 0000076b: JUMPDEST 0000076c: PUSH1 0x02 0000076e: PUSH1 0x00 00000770: SLOAD 00000771: SUB 00000772: PUSH2 0x07a7 00000775: JUMPI 00000776: PUSH1 0x40 00000778: MLOAD 00000779: PUSH32 0x3ee5aeb500000000000000000000000000000000000000000000000000000000 0000079a: DUP2 0000079b: MSTORE 0000079c: PUSH1 0x04 0000079e: ADD 0000079f: PUSH1 0x40 000007a1: MLOAD 000007a2: DUP1 000007a3: SWAP2 000007a4: SUB 000007a5: SWAP1 000007a6: REVERT 000007a7: JUMPDEST 000007a8: PUSH1 0x02 000007aa: PUSH1 0x00 000007ac: SSTORE 000007ad: JUMP 000007ae: JUMPDEST 000007af: PUSH1 0x40 000007b1: MLOAD 000007b2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007c7: DUP5 000007c8: DUP2 000007c9: AND 000007ca: PUSH1 0x24 000007cc: DUP4 000007cd: ADD 000007ce: MSTORE 000007cf: DUP4 000007d0: DUP2 000007d1: AND 000007d2: PUSH1 0x44 000007d4: DUP4 000007d5: ADD 000007d6: MSTORE 000007d7: PUSH1 0x64 000007d9: DUP3 000007da: ADD 000007db: DUP4 000007dc: SWAP1 000007dd: MSTORE 000007de: PUSH2 0x0837 000007e1: SWAP2 000007e2: DUP7 000007e3: SWAP2 000007e4: DUP3 000007e5: AND 000007e6: SWAP1 000007e7: PUSH4 0x23b872dd 000007ec: SWAP1 000007ed: PUSH1 0x84 000007ef: ADD 000007f0: JUMPDEST 000007f1: PUSH1 0x40 000007f3: MLOAD 000007f4: PUSH1 0x20 000007f6: DUP2 000007f7: DUP4 000007f8: SUB 000007f9: SUB 000007fa: DUP2 000007fb: MSTORE 000007fc: SWAP1 000007fd: PUSH1 0x40 000007ff: MSTORE 00000800: SWAP2 00000801: POP 00000802: PUSH1 0xe0 00000804: SHL 00000805: PUSH1 0x20 00000807: DUP3 00000808: ADD 00000809: DUP1 0000080a: MLOAD 0000080b: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000828: DUP4 00000829: DUP2 0000082a: DUP4 0000082b: AND 0000082c: OR 0000082d: DUP4 0000082e: MSTORE 0000082f: POP 00000830: POP 00000831: POP 00000832: POP 00000833: PUSH2 0x0880 00000836: JUMP 00000837: JUMPDEST 00000838: POP 00000839: POP 0000083a: POP 0000083b: POP 0000083c: JUMP 0000083d: JUMPDEST 0000083e: PUSH1 0x40 00000840: MLOAD 00000841: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000856: DUP4 00000857: DUP2 00000858: AND 00000859: PUSH1 0x24 0000085b: DUP4 0000085c: ADD 0000085d: MSTORE 0000085e: PUSH1 0x44 00000860: DUP3 00000861: ADD 00000862: DUP4 00000863: SWAP1 00000864: MSTORE 00000865: PUSH2 0x087b 00000868: SWAP2 00000869: DUP6 0000086a: SWAP2 0000086b: DUP3 0000086c: AND 0000086d: SWAP1 0000086e: PUSH4 0xa9059cbb 00000873: SWAP1 00000874: PUSH1 0x64 00000876: ADD 00000877: PUSH2 0x07f0 0000087a: JUMP 0000087b: JUMPDEST 0000087c: POP 0000087d: POP 0000087e: POP 0000087f: JUMP 00000880: JUMPDEST 00000881: PUSH1 0x00 00000883: PUSH2 0x08a2 00000886: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000089b: DUP5 0000089c: AND 0000089d: DUP4 0000089e: PUSH2 0x091b 000008a1: JUMP 000008a2: JUMPDEST 000008a3: SWAP1 000008a4: POP 000008a5: DUP1 000008a6: MLOAD 000008a7: PUSH1 0x00 000008a9: EQ 000008aa: ISZERO 000008ab: DUP1 000008ac: ISZERO 000008ad: PUSH2 0x08c7 000008b0: JUMPI 000008b1: POP 000008b2: DUP1 000008b3: DUP1 000008b4: PUSH1 0x20 000008b6: ADD 000008b7: SWAP1 000008b8: MLOAD 000008b9: DUP2 000008ba: ADD 000008bb: SWAP1 000008bc: PUSH2 0x08c5 000008bf: SWAP2 000008c0: SWAP1 000008c1: PUSH2 0x0add 000008c4: JUMP 000008c5: JUMPDEST 000008c6: ISZERO 000008c7: JUMPDEST 000008c8: ISZERO 000008c9: PUSH2 0x087b 000008cc: JUMPI 000008cd: PUSH1 0x40 000008cf: MLOAD 000008d0: PUSH32 0x5274afe700000000000000000000000000000000000000000000000000000000 000008f1: DUP2 000008f2: MSTORE 000008f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000908: DUP5 00000909: AND 0000090a: PUSH1 0x04 0000090c: DUP3 0000090d: ADD 0000090e: MSTORE 0000090f: PUSH1 0x24 00000911: ADD 00000912: JUMPDEST 00000913: PUSH1 0x40 00000915: MLOAD 00000916: DUP1 00000917: SWAP2 00000918: SUB 00000919: SWAP1 0000091a: REVERT 0000091b: JUMPDEST 0000091c: PUSH1 0x60 0000091e: PUSH2 0x0929 00000921: DUP4 00000922: DUP4 00000923: PUSH1 0x00 00000925: PUSH2 0x0930 00000928: JUMP 00000929: JUMPDEST 0000092a: SWAP4 0000092b: SWAP3 0000092c: POP 0000092d: POP 0000092e: POP 0000092f: JUMP 00000930: JUMPDEST 00000931: PUSH1 0x60 00000933: DUP2 00000934: SELFBALANCE 00000935: LT 00000936: ISZERO 00000937: PUSH2 0x096e 0000093a: JUMPI 0000093b: PUSH1 0x40 0000093d: MLOAD 0000093e: PUSH32 0xcd78605900000000000000000000000000000000000000000000000000000000 0000095f: DUP2 00000960: MSTORE 00000961: ADDRESS 00000962: PUSH1 0x04 00000964: DUP3 00000965: ADD 00000966: MSTORE 00000967: PUSH1 0x24 00000969: ADD 0000096a: PUSH2 0x0912 0000096d: JUMP 0000096e: JUMPDEST 0000096f: PUSH1 0x00 00000971: DUP1 00000972: DUP6 00000973: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000988: AND 00000989: DUP5 0000098a: DUP7 0000098b: PUSH1 0x40 0000098d: MLOAD 0000098e: PUSH2 0x0997 00000991: SWAP2 00000992: SWAP1 00000993: PUSH2 0x0b18 00000996: JUMP 00000997: JUMPDEST 00000998: PUSH1 0x00 0000099a: PUSH1 0x40 0000099c: MLOAD 0000099d: DUP1 0000099e: DUP4 0000099f: SUB 000009a0: DUP2 000009a1: DUP6 000009a2: DUP8 000009a3: GAS 000009a4: CALL 000009a5: SWAP3 000009a6: POP 000009a7: POP 000009a8: POP 000009a9: RETURNDATASIZE 000009aa: DUP1 000009ab: PUSH1 0x00 000009ad: DUP2 000009ae: EQ 000009af: PUSH2 0x09d4 000009b2: JUMPI 000009b3: PUSH1 0x40 000009b5: MLOAD 000009b6: SWAP2 000009b7: POP 000009b8: PUSH1 0x1f 000009ba: NOT 000009bb: PUSH1 0x3f 000009bd: RETURNDATASIZE 000009be: ADD 000009bf: AND 000009c0: DUP3 000009c1: ADD 000009c2: PUSH1 0x40 000009c4: MSTORE 000009c5: RETURNDATASIZE 000009c6: DUP3 000009c7: MSTORE 000009c8: RETURNDATASIZE 000009c9: PUSH1 0x00 000009cb: PUSH1 0x20 000009cd: DUP5 000009ce: ADD 000009cf: RETURNDATACOPY 000009d0: PUSH2 0x09d9 000009d3: JUMP 000009d4: JUMPDEST 000009d5: PUSH1 0x60 000009d7: SWAP2 000009d8: POP 000009d9: JUMPDEST 000009da: POP 000009db: SWAP2 000009dc: POP 000009dd: SWAP2 000009de: POP 000009df: PUSH2 0x09e9 000009e2: DUP7 000009e3: DUP4 000009e4: DUP4 000009e5: PUSH2 0x09f3 000009e8: JUMP 000009e9: JUMPDEST 000009ea: SWAP7 000009eb: SWAP6 000009ec: POP 000009ed: POP 000009ee: POP 000009ef: POP 000009f0: POP 000009f1: POP 000009f2: JUMP 000009f3: JUMPDEST 000009f4: PUSH1 0x60 000009f6: DUP3 000009f7: PUSH2 0x0a08 000009fa: JUMPI 000009fb: PUSH2 0x0a03 000009fe: DUP3 000009ff: PUSH2 0x0a82 00000a02: JUMP 00000a03: JUMPDEST 00000a04: PUSH2 0x0929 00000a07: JUMP 00000a08: JUMPDEST 00000a09: DUP2 00000a0a: MLOAD 00000a0b: ISZERO 00000a0c: DUP1 00000a0d: ISZERO 00000a0e: PUSH2 0x0a2c 00000a11: JUMPI 00000a12: POP 00000a13: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a28: DUP5 00000a29: AND 00000a2a: EXTCODESIZE 00000a2b: ISZERO 00000a2c: JUMPDEST 00000a2d: ISZERO 00000a2e: PUSH2 0x0a7b 00000a31: JUMPI 00000a32: PUSH1 0x40 00000a34: MLOAD 00000a35: PUSH32 0x9996b31500000000000000000000000000000000000000000000000000000000 00000a56: DUP2 00000a57: MSTORE 00000a58: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a6d: DUP6 00000a6e: AND 00000a6f: PUSH1 0x04 00000a71: DUP3 00000a72: ADD 00000a73: MSTORE 00000a74: PUSH1 0x24 00000a76: ADD 00000a77: PUSH2 0x0912 00000a7a: JUMP 00000a7b: JUMPDEST 00000a7c: POP 00000a7d: DUP1 00000a7e: PUSH2 0x0929 00000a81: JUMP 00000a82: JUMPDEST 00000a83: DUP1 00000a84: MLOAD 00000a85: ISZERO 00000a86: PUSH2 0x0a92 00000a89: JUMPI 00000a8a: DUP1 00000a8b: MLOAD 00000a8c: DUP1 00000a8d: DUP3 00000a8e: PUSH1 0x20 00000a90: ADD 00000a91: REVERT 00000a92: JUMPDEST 00000a93: PUSH1 0x40 00000a95: MLOAD 00000a96: PUSH32 0x1425ea4200000000000000000000000000000000000000000000000000000000 00000ab7: DUP2 00000ab8: MSTORE 00000ab9: PUSH1 0x04 00000abb: ADD 00000abc: PUSH1 0x40 00000abe: MLOAD 00000abf: DUP1 00000ac0: SWAP2 00000ac1: SUB 00000ac2: SWAP1 00000ac3: REVERT 00000ac4: JUMPDEST 00000ac5: PUSH1 0x00 00000ac7: PUSH1 0x20 00000ac9: DUP3 00000aca: DUP5 00000acb: SUB 00000acc: SLT 00000acd: ISZERO 00000ace: PUSH2 0x0ad6 00000ad1: JUMPI 00000ad2: PUSH1 0x00 00000ad4: DUP1 00000ad5: REVERT 00000ad6: JUMPDEST 00000ad7: POP 00000ad8: CALLDATALOAD 00000ad9: SWAP2 00000ada: SWAP1 00000adb: POP 00000adc: JUMP 00000add: JUMPDEST 00000ade: PUSH1 0x00 00000ae0: PUSH1 0x20 00000ae2: DUP3 00000ae3: DUP5 00000ae4: SUB 00000ae5: SLT 00000ae6: ISZERO 00000ae7: PUSH2 0x0aef 00000aea: JUMPI 00000aeb: PUSH1 0x00 00000aed: DUP1 00000aee: REVERT 00000aef: JUMPDEST 00000af0: DUP2 00000af1: MLOAD 00000af2: DUP1 00000af3: ISZERO 00000af4: ISZERO 00000af5: DUP2 00000af6: EQ 00000af7: PUSH2 0x0929 00000afa: JUMPI 00000afb: PUSH1 0x00 00000afd: DUP1 00000afe: REVERT 00000aff: JUMPDEST 00000b00: PUSH1 0x00 00000b02: PUSH1 0x20 00000b04: DUP3 00000b05: DUP5 00000b06: SUB 00000b07: SLT 00000b08: ISZERO 00000b09: PUSH2 0x0b11 00000b0c: JUMPI 00000b0d: PUSH1 0x00 00000b0f: DUP1 00000b10: REVERT 00000b11: JUMPDEST 00000b12: POP 00000b13: MLOAD 00000b14: SWAP2 00000b15: SWAP1 00000b16: POP 00000b17: JUMP 00000b18: JUMPDEST 00000b19: PUSH1 0x00 00000b1b: DUP3 00000b1c: MLOAD 00000b1d: PUSH1 0x00 00000b1f: JUMPDEST 00000b20: DUP2 00000b21: DUP2 00000b22: LT 00000b23: ISZERO 00000b24: PUSH2 0x0b39 00000b27: JUMPI 00000b28: PUSH1 0x20 00000b2a: DUP2 00000b2b: DUP7 00000b2c: ADD 00000b2d: DUP2 00000b2e: ADD 00000b2f: MLOAD 00000b30: DUP6 00000b31: DUP4 00000b32: ADD 00000b33: MSTORE 00000b34: ADD 00000b35: PUSH2 0x0b1f 00000b38: JUMP 00000b39: JUMPDEST 00000b3a: POP 00000b3b: PUSH1 0x00 00000b3d: SWAP3 00000b3e: ADD 00000b3f: SWAP2 00000b40: DUP3 00000b41: MSTORE 00000b42: POP 00000b43: SWAP2 00000b44: SWAP1 00000b45: POP 00000b46: JUMP 00000b47: INVALID 00000b48: LOG2 00000b49: PUSH5 0x6970667358 00000b4f: UNKNOWN(0x22) 00000b50: SLT 00000b51: KECCAK256 00000b52: UNKNOWN(0xD8) 00000b53: UNKNOWN(0xAF) 00000b54: UNKNOWN(0xD0) 00000b55: RETURNDATACOPY 00000b56: UNKNOWN(0xCD) 00000b57: UNKNOWN(0xDC) 00000b58: SWAP8 00000b59: EXTCODESIZE 00000b5a: JUMPDEST 00000b5b: SSTORE 00000b5c: UNKNOWN(0xC5) 00000b5d: EQ 00000b5e: UNKNOWN(0xD5) 00000b5f: PUSH25 0xde9768ddbf5d99ce62dfee4598a58403ec5364736f6c634300 00000b79: ADDMOD 00000b7a: ISZERO 00000b7b: STOP 00000b7c: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x6114a723966426727e863708b30ca942f2d4e911853e3dad79a67e779f8b9021
call_targets:
0x1c2ca537757e1823400f857edbe72b55bbae0f08
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x6114a723966426727e863708b30ca942f2d4e911853e3dad79a67e779f8b9021",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x1c2ca537757e1823400f857edbe72b55bbae0f08"
],
"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": "0x5b8ed5c6",
"selector": "0x5b8ed5c6",
"calldata_variants": [
"0x5b8ed5c6",
"0x5b8ed5c60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf089358",
"selector": "0xbf089358",
"calldata_variants": [
"0xbf089358",
"0xbf0893580000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdb81f99b",
"selector": "0xdb81f99b",
"calldata_variants": [
"0xdb81f99b",
"0xdb81f99b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x11eac855",
"selector": "0x11eac855",
"calldata_variants": [
"0x11eac855",
"0x11eac8550000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x48e5d364",
"selector": "0x48e5d364",
"calldata_variants": [
"0x48e5d364",
"0x48e5d3640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53556559",
"selector": "0x53556559",
"calldata_variants": [
"0x53556559",
"0x535565590000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2468,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [
{
"pc": 1320,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x6114a723966426727e863708b30ca942f2d4e911853e3dad79a67e779f8b9021
call_targets:
0x1c2ca537757e1823400f857edbe72b55bbae0f08
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x6114a723966426727e863708b30ca942f2d4e911853e3dad79a67e779f8b9021",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x1c2ca537757e1823400f857edbe72b55bbae0f08"
],
"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": "0x5b8ed5c6",
"selector": "0x5b8ed5c6",
"calldata_variants": [
"0x5b8ed5c6",
"0x5b8ed5c60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf089358",
"selector": "0xbf089358",
"calldata_variants": [
"0xbf089358",
"0xbf0893580000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdb81f99b",
"selector": "0xdb81f99b",
"calldata_variants": [
"0xdb81f99b",
"0xdb81f99b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x11eac855",
"selector": "0x11eac855",
"calldata_variants": [
"0x11eac855",
"0x11eac8550000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x48e5d364",
"selector": "0x48e5d364",
"calldata_variants": [
"0x48e5d364",
"0x48e5d3640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x53556559",
"selector": "0x53556559",
"calldata_variants": [
"0x53556559",
"0x535565590000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2468,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": [
{
"pc": 1320,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|