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

Analysis Run

2b469a7a-958a-44b3-abe1-8a54018295c1

failed
Chain ID
1
Address
Block Number
Created
Thu, Jan 1, 2026 12:35 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable value-extraction paths found in the provided contracts.
View stderr
[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":[]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
4
EXT*/BALANCE
2
Total opcodes
1141
Flags
No heuristic flags raised.
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_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
view
trace_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"
        }
    ]
}