492f3545-1f8c-4610-91c1-25415840a521
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 |
|---|---|---|---|---|
| 31298 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 110786 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 110787 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 110788 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 110789 | capability.graph | complete | 1 / 3 | 1 week ago |
| 110790 | detector.run | complete | 1 / 3 | 1 week ago |
| 110791 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:512114] OpenAI Codex v0.77.0 (research preview)
[codex:512114] --------
[codex:512114] workdir: /tmp/codex-multi-fre35e76
[codex:512114] model: gpt-5.2-codex
[codex:512114] provider: openai
[codex:512114] approval: never
[codex:512114] sandbox: read-only
[codex:512114] reasoning effort: xhigh
[codex:512114] reasoning summaries: auto
[codex:512114] session id: 019b7fa0-65a8-7ef3-927c-1fea9d5cc3db
[codex:512114] --------
[codex:512114] user
[codex:512114] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:512114]
[codex:512114] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:512114]
[codex:512114] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:512114] - Gas inefficiency, code quality, naming, or best practices
[codex:512114] - Theoretical vulnerabilities without a clear extraction path
[codex:512114] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:512114] - Front-running unless it enables theft beyond MEV
[codex:512114] - DoS, griefing, or issues that don't result in attacker profit
[codex:512114] - Missing events, view function issues, or informational findings
[codex:512114]
[codex:512114] HIGH-VALUE PATTERNS TO HUNT:
[codex:512114] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:512114] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:512114] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:512114] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:512114] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:512114] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:512114] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:512114] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:512114] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:512114]
[codex:512114] For each finding, you MUST provide:
[codex:512114] 1. Exact file and line numbers of vulnerable code
[codex:512114] 2. Step-by-step exploit transaction sequence
[codex:512114] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:512114]
[codex:512114] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:512114]
[codex:512114] Output MUST be valid JSON matching the provided schema.
[codex:512114] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:512114] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:512114] mcp startup: no servers
[codex:512114]
[codex:512114] thinking
[codex:512114] **Preparing to read bundle file**
[codex:512114] exec
[codex:512114] /bin/bash -lc ls in /tmp/codex-multi-fre35e76 succeeded in 6ms:
[codex:512114] AUDIT_BUNDLE.txt
[codex:512114] codex-output-schema.json
[codex:512114] contracts
[codex:512114] exec
[codex:512114] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-fre35e76 succeeded in 5ms:
[codex:512114] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:512114]
[codex:512114] ================================================================================
[codex:512114] FILE: contracts/contracts/Distributor.sol
[codex:512114] ================================================================================
[codex:512114] //SPDX-License-Identifier: MIT
[codex:512114]
[codex:512114] pragma solidity 0.6.12;
[codex:512114]
[codex:512114] import "./libraries/math/SafeMath.sol";
[codex:512114] import "./libraries/token/IERC20.sol";
[codex:512114] import "./libraries/utils/ReentrancyGuard.sol";
[codex:512114]
[codex:512114] import "./interfaces/ILGEToken.sol";
[codex:512114] import "./interfaces/IWETH.sol";
[codex:512114] import "./interfaces/IXVIX.sol";
[codex:512114] import "./interfaces/IFloor.sol";
[codex:512114] import "./interfaces/IMinter.sol";
[codex:512114] import "./interfaces/IUniswapV2Router.sol";
[codex:512114] import "./interfaces/IUniswapV2Factory.sol";
[codex:512114] exec
[codex:512114] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-fre35e76 succeeded in 6ms:
[codex:512114]
[codex:512114] // burn after calculating liquidity because _getLiquidityAmount uses
[codex:512114] // lgeToken.totalSupply to calculate liquidity
[codex:512114] ILGEToken(_lgeToken).burn(msg.sender, _amountLGEToken);
[codex:512114]
[codex:512114] if (liquidity == 0) { return 0; }
[codex:512114]
[codex:512114] address pair = _getPair(_lgeToken);
[codex:512114] IERC20(pair).approve(router, liquidity);
[codex:512114]
[codex:512114] IUniswapV2Router(router).removeLiquidity(
[codex:512114] xvix,
[codex:512114] ILGEToken(_lgeToken).token(),
[codex:512114] liquidity,
[codex:512114] _amountXVIXMin,
[codex:512114] _amountTokenMin,
[codex:512114] address(this),
[codex:512114] _deadline
[codex:512114] );
[codex:512114]
[codex:512114] exec
[codex:512114] /bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-fre35e76 succeeded in 5ms:
[codex:512114]
[codex:512114] IXVIX(xvix).burn(msg.sender, _burnAmount);
[codex:512114]
[codex:512114] (bool success,) = _receiver.call{value: refundAmount}("");
[codex:512114] require(success, "Floor: transfer to reciever failed");
[codex:512114]
[codex:512114] emit Refund(_receiver, refundAmount, _burnAmount);
[codex:512114] emit FloorPrice(capital, IERC20(xvix).totalSupply());
[codex:512114]
[codex:512114] return refundAmount;
[codex:512114] }
[codex:512114]
[codex:512114] // if the total supply of XVIX is 1000 and the capital is 200 ETH
[codex:512114] // then this would return 5 for an input of 1
[codex:512114] // for every 1 ETH, the minter should allow a maximum of 5 XVIX to be minted
[codex:512114] // if the minter allows more than 5 XVIX to be minted for 1 ETH, e.g. 10 XVIX,
[codex:512114] // then this would result in the floor price decreasing
[codex:512114] function getMaxMintAmount(uint256 _ethAmount) public override view returns (uint256) {
[codex:512114] if (capital == 0) { return 0; }
[codex:512114] uint256 totalSupply = IERC20(xvix).totalSupply();
[codex:512114] exec
[codex:512114] /bin/bash -lc "sed -n '800,1200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-fre35e76 succeeded in 6ms:
[codex:512114]
[codex:512114] uint256 public constant MIN_REBASE_INTERVAL = 30 minutes;
[codex:512114] uint256 public constant MAX_REBASE_INTERVAL = 1 weeks;
[codex:512114] // cap the max intervals per rebase to avoid uint overflow errors
[codex:512114] uint256 public constant MAX_INTERVALS_PER_REBASE = 10;
[codex:512114] uint256 public constant MAX_REBASE_BASIS_POINTS = 500; // 5%
[codex:512114]
[codex:512114] // cap the normalDivisor to avoid uint overflow errors
[codex:512114] // the normalDivisor will be reached about 20 years after the first rebase
[codex:512114] uint256 public constant MAX_NORMAL_DIVISOR = 10**23;
[codex:512114] uint256 public constant SAFE_DIVISOR = 10**8;
[codex:512114]
[codex:512114] string public constant name = "XVIX";
[codex:512114] string public constant symbol = "XVIX";
[codex:512114] uint8 public constant decimals = 18;
[codex:512114]
[codex:512114] string public website = "https://xvix.finance/";
[codex:512114]
[codex:512114] address public gov;
[codex:512114] address public minter;
[codex:512114] exec
[codex:512114] /bin/bash -lc "sed -n '1200,1600p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-fre35e76 succeeded in 6ms:
[codex:512114] }
[codex:512114]
[codex:512114] function _getTransferConfig() private view returns (uint256, uint256, uint256, uint256) {
[codex:512114] uint256 senderBurn = defaultSenderBurnBasisPoints;
[codex:512114] uint256 senderFund = defaultSenderFundBasisPoints;
[codex:512114] uint256 receiverBurn = defaultReceiverBurnBasisPoints;
[codex:512114] uint256 receiverFund = defaultReceiverFundBasisPoints;
[codex:512114]
[codex:512114] TransferConfig memory config = transferConfigs[msg.sender];
[codex:512114] if (config.active) {
[codex:512114] senderBurn = config.senderBurnBasisPoints;
[codex:512114] senderFund = config.senderFundBasisPoints;
[codex:512114] receiverBurn = config.receiverBurnBasisPoints;
[codex:512114] receiverFund = config.receiverFundBasisPoints;
[codex:512114] }
[codex:512114]
[codex:512114] return (senderBurn, senderFund, receiverBurn, receiverFund);
[codex:512114] }
[codex:512114]
[codex:512114] function _approve(address _owner, address _spender, uint256 _amount) private {
[codex:512114]
[codex:512114]
[codex:512114]
[codex:512114]
[codex:512114]
[codex:512114] thinking
[codex:512114] **Analyzing contract for vulnerabilities**
[codex:512114] thinking
[codex:512114] **Evaluating capital and minting logic**
[codex:512114]
[codex:512114] I'm looking closely at how capital affects minting limits and refunds, checking for rounding or timing issues that might allow profit by minting and refunding tokens at favorable rates. I’m also examining liquidity and leftover ETH handling to see if any stuck balances or miscalculations could be exploited for gain. Overall, I’m verifying access controls and contract state dependencies to identify any subtle flaws that might let someone extract value improperly.
[codex:512114] thinking
[codex:512114] **Identifying leftover token impact on refunds**
[codex:512114]
[codex:512114] I'm exploring how leftover XVIX tokens from uneven liquidity additions might inflate refund amounts during liquidity removals, potentially letting users redeem more ETH than their proportional share. I'm considering scenarios where manipulated pool reserves cause leftover tokens in Distributor, affecting refund calculations and possibly enabling value extraction for some LGEToken holders.
[codex:512114] thinking
[codex:512114] **Analyzing refund limits and price manipulation risks**
[codex:512114]
[codex:512114] I’m examining how the refund mechanism caps payouts by Floor’s available capital and how pre-existing leftover XVIX interacts with refunds. I’m also exploring how an attacker might manipulate pool prices to maximize refunds by skewing liquidity ratios and using flash swaps, potentially extracting more ETH from the Floor through burning XVIX at advantageous times.
[codex:512114] thinking
[codex:512114] **Evaluating flash swap and token manipulation scenarios**
[codex:512114]
[codex:512114] I’m working through how an attacker might manipulate pool reserves using flash swaps and XVIX transfers to boost refund amounts during liquidity removal. I’m also considering the implications of Floor’s capital tracking and how sending ETH via selfdestruct could impact minting costs, but overall I’m seeing no concrete exploit path for profit.
[codex:512114] codex
[codex:512114] {"no_findings":true,"summary":"No concrete, exploitable profit paths identified in AUDIT_BUNDLE.txt.","findings":[]}
[codex:512114] tokens used
[codex:512114] 36,527
[codex:512114] {"no_findings":true,"summary":"No concrete, exploitable profit paths identified in AUDIT_BUNDLE.txt.","findings":[]}
{
"codex": {
"ran_at": "2026-01-02T16:58:39.480888+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit paths identified in AUDIT_BUNDLE.txt.",
"raw_final": {
"summary": "No concrete, exploitable profit paths identified in AUDIT_BUNDLE.txt.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0074 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x918e5cf0 00000019: GT 0000001a: PUSH2 0x004e 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x918e5cf0 00000024: EQ 00000025: PUSH2 0x017c 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd211fd18 0000002f: EQ 00000030: PUSH2 0x01ad 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xddbc360d 0000003a: EQ 0000003b: PUSH2 0x01c2 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xfac44f6b 00000045: EQ 00000046: PUSH2 0x01ec 00000049: JUMPI 0000004a: PUSH2 0x00ed 0000004d: JUMP 0000004e: JUMPDEST 0000004f: DUP1 00000050: PUSH4 0x04cd5294 00000055: EQ 00000056: PUSH2 0x00f2 00000059: JUMPI 0000005a: DUP1 0000005b: PUSH4 0x126082cf 00000060: EQ 00000061: PUSH2 0x012e 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0x410085df 0000006b: EQ 0000006c: PUSH2 0x0143 0000006f: JUMPI 00000070: PUSH2 0x00ed 00000073: JUMP 00000074: JUMPDEST 00000075: CALLDATASIZE 00000076: PUSH2 0x00ed 00000079: JUMPI 0000007a: PUSH1 0x02 0000007c: PUSH1 0x00 0000007e: SLOAD 0000007f: EQ 00000080: ISZERO 00000081: PUSH2 0x00d1 00000084: JUMPI 00000085: PUSH1 0x40 00000087: DUP1 00000088: MLOAD 00000089: PUSH3 0x461bcd 0000008d: PUSH1 0xe5 0000008f: SHL 00000090: DUP2 00000091: MSTORE 00000092: PUSH1 0x20 00000094: PUSH1 0x04 00000096: DUP3 00000097: ADD 00000098: MSTORE 00000099: PUSH1 0x1f 0000009b: PUSH1 0x24 0000009d: DUP3 0000009e: ADD 0000009f: MSTORE 000000a0: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 000000c1: PUSH1 0x44 000000c3: DUP3 000000c4: ADD 000000c5: MSTORE 000000c6: SWAP1 000000c7: MLOAD 000000c8: SWAP1 000000c9: DUP2 000000ca: SWAP1 000000cb: SUB 000000cc: PUSH1 0x64 000000ce: ADD 000000cf: SWAP1 000000d0: REVERT 000000d1: JUMPDEST 000000d2: PUSH1 0x02 000000d4: PUSH1 0x00 000000d6: SSTORE 000000d7: PUSH1 0x01 000000d9: SLOAD 000000da: PUSH2 0x00e3 000000dd: SWAP1 000000de: CALLVALUE 000000df: PUSH2 0x0201 000000e2: JUMP 000000e3: JUMPDEST 000000e4: PUSH1 0x01 000000e6: SWAP1 000000e7: DUP2 000000e8: SSTORE 000000e9: PUSH1 0x00 000000eb: SSTORE 000000ec: STOP 000000ed: JUMPDEST 000000ee: PUSH1 0x00 000000f0: DUP1 000000f1: REVERT 000000f2: JUMPDEST 000000f3: CALLVALUE 000000f4: DUP1 000000f5: ISZERO 000000f6: PUSH2 0x00fe 000000f9: JUMPI 000000fa: PUSH1 0x00 000000fc: DUP1 000000fd: REVERT 000000fe: JUMPDEST 000000ff: POP 00000100: PUSH2 0x011c 00000103: PUSH1 0x04 00000105: DUP1 00000106: CALLDATASIZE 00000107: SUB 00000108: PUSH1 0x20 0000010a: DUP2 0000010b: LT 0000010c: ISZERO 0000010d: PUSH2 0x0115 00000110: JUMPI 00000111: PUSH1 0x00 00000113: DUP1 00000114: REVERT 00000115: JUMPDEST 00000116: POP 00000117: CALLDATALOAD 00000118: PUSH2 0x0264 0000011b: JUMP 0000011c: JUMPDEST 0000011d: PUSH1 0x40 0000011f: DUP1 00000120: MLOAD 00000121: SWAP2 00000122: DUP3 00000123: MSTORE 00000124: MLOAD 00000125: SWAP1 00000126: DUP2 00000127: SWAP1 00000128: SUB 00000129: PUSH1 0x20 0000012b: ADD 0000012c: SWAP1 0000012d: RETURN 0000012e: JUMPDEST 0000012f: CALLVALUE 00000130: DUP1 00000131: ISZERO 00000132: PUSH2 0x013a 00000135: JUMPI 00000136: PUSH1 0x00 00000138: DUP1 00000139: REVERT 0000013a: JUMPDEST 0000013b: POP 0000013c: PUSH2 0x011c 0000013f: PUSH2 0x0329 00000142: JUMP 00000143: JUMPDEST 00000144: CALLVALUE 00000145: DUP1 00000146: ISZERO 00000147: PUSH2 0x014f 0000014a: JUMPI 0000014b: PUSH1 0x00 0000014d: DUP1 0000014e: REVERT 0000014f: JUMPDEST 00000150: POP 00000151: PUSH2 0x011c 00000154: PUSH1 0x04 00000156: DUP1 00000157: CALLDATASIZE 00000158: SUB 00000159: PUSH1 0x40 0000015b: DUP2 0000015c: LT 0000015d: ISZERO 0000015e: PUSH2 0x0166 00000161: JUMPI 00000162: PUSH1 0x00 00000164: DUP1 00000165: REVERT 00000166: JUMPDEST 00000167: POP 00000168: PUSH1 0x01 0000016a: PUSH1 0x01 0000016c: PUSH1 0xa0 0000016e: SHL 0000016f: SUB 00000170: DUP2 00000171: CALLDATALOAD 00000172: AND 00000173: SWAP1 00000174: PUSH1 0x20 00000176: ADD 00000177: CALLDATALOAD 00000178: PUSH2 0x032f 0000017b: JUMP 0000017c: JUMPDEST 0000017d: CALLVALUE 0000017e: DUP1 0000017f: ISZERO 00000180: PUSH2 0x0188 00000183: JUMPI 00000184: PUSH1 0x00 00000186: DUP1 00000187: REVERT 00000188: JUMPDEST 00000189: POP 0000018a: PUSH2 0x0191 0000018d: PUSH2 0x063c 00000190: JUMP 00000191: JUMPDEST 00000192: PUSH1 0x40 00000194: DUP1 00000195: MLOAD 00000196: PUSH1 0x01 00000198: PUSH1 0x01 0000019a: PUSH1 0xa0 0000019c: SHL 0000019d: SUB 0000019e: SWAP1 0000019f: SWAP3 000001a0: AND 000001a1: DUP3 000001a2: MSTORE 000001a3: MLOAD 000001a4: SWAP1 000001a5: DUP2 000001a6: SWAP1 000001a7: SUB 000001a8: PUSH1 0x20 000001aa: ADD 000001ab: SWAP1 000001ac: RETURN 000001ad: JUMPDEST 000001ae: CALLVALUE 000001af: DUP1 000001b0: ISZERO 000001b1: PUSH2 0x01b9 000001b4: JUMPI 000001b5: PUSH1 0x00 000001b7: DUP1 000001b8: REVERT 000001b9: JUMPDEST 000001ba: POP 000001bb: PUSH2 0x011c 000001be: PUSH2 0x0660 000001c1: JUMP 000001c2: JUMPDEST 000001c3: CALLVALUE 000001c4: DUP1 000001c5: ISZERO 000001c6: PUSH2 0x01ce 000001c9: JUMPI 000001ca: PUSH1 0x00 000001cc: DUP1 000001cd: REVERT 000001ce: JUMPDEST 000001cf: POP 000001d0: PUSH2 0x011c 000001d3: PUSH1 0x04 000001d5: DUP1 000001d6: CALLDATASIZE 000001d7: SUB 000001d8: PUSH1 0x20 000001da: DUP2 000001db: LT 000001dc: ISZERO 000001dd: PUSH2 0x01e5 000001e0: JUMPI 000001e1: PUSH1 0x00 000001e3: DUP1 000001e4: REVERT 000001e5: JUMPDEST 000001e6: POP 000001e7: CALLDATALOAD 000001e8: PUSH2 0x0666 000001eb: JUMP 000001ec: JUMPDEST 000001ed: CALLVALUE 000001ee: DUP1 000001ef: ISZERO 000001f0: PUSH2 0x01f8 000001f3: JUMPI 000001f4: PUSH1 0x00 000001f6: DUP1 000001f7: REVERT 000001f8: JUMPDEST 000001f9: POP 000001fa: PUSH2 0x011c 000001fd: PUSH2 0x071d 00000200: JUMP 00000201: JUMPDEST 00000202: PUSH1 0x00 00000204: DUP3 00000205: DUP3 00000206: ADD 00000207: DUP4 00000208: DUP2 00000209: LT 0000020a: ISZERO 0000020b: PUSH2 0x025b 0000020e: JUMPI 0000020f: PUSH1 0x40 00000211: DUP1 00000212: MLOAD 00000213: PUSH3 0x461bcd 00000217: PUSH1 0xe5 00000219: SHL 0000021a: DUP2 0000021b: MSTORE 0000021c: PUSH1 0x20 0000021e: PUSH1 0x04 00000220: DUP3 00000221: ADD 00000222: MSTORE 00000223: PUSH1 0x1b 00000225: PUSH1 0x24 00000227: DUP3 00000228: ADD 00000229: MSTORE 0000022a: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 0000024b: PUSH1 0x44 0000024d: DUP3 0000024e: ADD 0000024f: MSTORE 00000250: SWAP1 00000251: MLOAD 00000252: SWAP1 00000253: DUP2 00000254: SWAP1 00000255: SUB 00000256: PUSH1 0x64 00000258: ADD 00000259: SWAP1 0000025a: REVERT 0000025b: JUMPDEST 0000025c: SWAP1 0000025d: POP 0000025e: JUMPDEST 0000025f: SWAP3 00000260: SWAP2 00000261: POP 00000262: POP 00000263: JUMP 00000264: JUMPDEST 00000265: PUSH1 0x00 00000267: DUP1 00000268: PUSH32 0x0000000000000000000000004bae380b5d762d543d426331b8437926443ae9ec 00000289: PUSH1 0x01 0000028b: PUSH1 0x01 0000028d: PUSH1 0xa0 0000028f: SHL 00000290: SUB 00000291: AND 00000292: PUSH4 0x18160ddd 00000297: PUSH1 0x40 00000299: MLOAD 0000029a: DUP2 0000029b: PUSH4 0xffffffff 000002a0: AND 000002a1: PUSH1 0xe0 000002a3: SHL 000002a4: DUP2 000002a5: MSTORE 000002a6: PUSH1 0x04 000002a8: ADD 000002a9: PUSH1 0x20 000002ab: PUSH1 0x40 000002ad: MLOAD 000002ae: DUP1 000002af: DUP4 000002b0: SUB 000002b1: DUP2 000002b2: DUP7 000002b3: DUP1 000002b4: EXTCODESIZE 000002b5: ISZERO 000002b6: DUP1 000002b7: ISZERO 000002b8: PUSH2 0x02c0 000002bb: JUMPI 000002bc: PUSH1 0x00 000002be: DUP1 000002bf: REVERT 000002c0: JUMPDEST 000002c1: POP 000002c2: GAS 000002c3: STATICCALL 000002c4: ISZERO 000002c5: DUP1 000002c6: ISZERO 000002c7: PUSH2 0x02d4 000002ca: JUMPI 000002cb: RETURNDATASIZE 000002cc: PUSH1 0x00 000002ce: DUP1 000002cf: RETURNDATACOPY 000002d0: RETURNDATASIZE 000002d1: PUSH1 0x00 000002d3: REVERT 000002d4: JUMPDEST 000002d5: POP 000002d6: POP 000002d7: POP 000002d8: POP 000002d9: PUSH1 0x40 000002db: MLOAD 000002dc: RETURNDATASIZE 000002dd: PUSH1 0x20 000002df: DUP2 000002e0: LT 000002e1: ISZERO 000002e2: PUSH2 0x02ea 000002e5: JUMPI 000002e6: PUSH1 0x00 000002e8: DUP1 000002e9: REVERT 000002ea: JUMPDEST 000002eb: POP 000002ec: MLOAD 000002ed: PUSH1 0x01 000002ef: SLOAD 000002f0: SWAP1 000002f1: SWAP2 000002f2: POP 000002f3: PUSH1 0x00 000002f5: SWAP1 000002f6: PUSH2 0x030b 000002f9: SWAP1 000002fa: DUP4 000002fb: SWAP1 000002fc: PUSH2 0x0305 000002ff: SWAP1 00000300: DUP8 00000301: PUSH2 0x0723 00000304: JUMP 00000305: JUMPDEST 00000306: SWAP1 00000307: PUSH2 0x077c 0000030a: JUMP 0000030b: JUMPDEST 0000030c: SWAP1 0000030d: POP 0000030e: PUSH2 0x031f 00000311: PUSH2 0x2710 00000314: PUSH2 0x0305 00000317: DUP4 00000318: PUSH2 0x2328 0000031b: PUSH2 0x0723 0000031e: JUMP 0000031f: JUMPDEST 00000320: SWAP3 00000321: POP 00000322: POP 00000323: POP 00000324: JUMPDEST 00000325: SWAP2 00000326: SWAP1 00000327: POP 00000328: JUMP 00000329: JUMPDEST 0000032a: PUSH2 0x2710 0000032d: DUP2 0000032e: JUMP 0000032f: JUMPDEST 00000330: PUSH1 0x00 00000332: PUSH1 0x02 00000334: PUSH1 0x00 00000336: SLOAD 00000337: EQ 00000338: ISZERO 00000339: PUSH2 0x0389 0000033c: JUMPI 0000033d: PUSH1 0x40 0000033f: DUP1 00000340: MLOAD 00000341: PUSH3 0x461bcd 00000345: PUSH1 0xe5 00000347: SHL 00000348: DUP2 00000349: MSTORE 0000034a: PUSH1 0x20 0000034c: PUSH1 0x04 0000034e: DUP3 0000034f: ADD 00000350: MSTORE 00000351: PUSH1 0x1f 00000353: PUSH1 0x24 00000355: DUP3 00000356: ADD 00000357: MSTORE 00000358: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00000379: PUSH1 0x44 0000037b: DUP3 0000037c: ADD 0000037d: MSTORE 0000037e: SWAP1 0000037f: MLOAD 00000380: SWAP1 00000381: DUP2 00000382: SWAP1 00000383: SUB 00000384: PUSH1 0x64 00000386: ADD 00000387: SWAP1 00000388: REVERT 00000389: JUMPDEST 0000038a: PUSH1 0x02 0000038c: PUSH1 0x00 0000038e: SWAP1 0000038f: DUP2 00000390: SSTORE 00000391: PUSH2 0x0399 00000394: DUP4 00000395: PUSH2 0x0264 00000398: JUMP 00000399: JUMPDEST 0000039a: SWAP1 0000039b: POP 0000039c: PUSH1 0x00 0000039e: DUP2 0000039f: GT 000003a0: PUSH2 0x03f0 000003a3: JUMPI 000003a4: PUSH1 0x40 000003a6: DUP1 000003a7: MLOAD 000003a8: PUSH3 0x461bcd 000003ac: PUSH1 0xe5 000003ae: SHL 000003af: DUP2 000003b0: MSTORE 000003b1: PUSH1 0x20 000003b3: PUSH1 0x04 000003b5: DUP3 000003b6: ADD 000003b7: MSTORE 000003b8: PUSH1 0x1c 000003ba: PUSH1 0x24 000003bc: DUP3 000003bd: ADD 000003be: MSTORE 000003bf: PUSH32 0x466c6f6f723a20726566756e6420616d6f756e74206973207a65726f00000000 000003e0: PUSH1 0x44 000003e2: DUP3 000003e3: ADD 000003e4: MSTORE 000003e5: SWAP1 000003e6: MLOAD 000003e7: SWAP1 000003e8: DUP2 000003e9: SWAP1 000003ea: SUB 000003eb: PUSH1 0x64 000003ed: ADD 000003ee: SWAP1 000003ef: REVERT 000003f0: JUMPDEST 000003f1: PUSH1 0x01 000003f3: SLOAD 000003f4: PUSH2 0x03fd 000003f7: SWAP1 000003f8: DUP3 000003f9: PUSH2 0x07be 000003fc: JUMP 000003fd: JUMPDEST 000003fe: PUSH1 0x01 00000400: SSTORE 00000401: PUSH1 0x40 00000403: DUP1 00000404: MLOAD 00000405: PUSH4 0x2770a7eb 0000040a: PUSH1 0xe2 0000040c: SHL 0000040d: DUP2 0000040e: MSTORE 0000040f: CALLER 00000410: PUSH1 0x04 00000412: DUP3 00000413: ADD 00000414: MSTORE 00000415: PUSH1 0x24 00000417: DUP2 00000418: ADD 00000419: DUP6 0000041a: SWAP1 0000041b: MSTORE 0000041c: SWAP1 0000041d: MLOAD 0000041e: PUSH1 0x01 00000420: PUSH1 0x01 00000422: PUSH1 0xa0 00000424: SHL 00000425: SUB 00000426: PUSH32 0x0000000000000000000000004bae380b5d762d543d426331b8437926443ae9ec 00000447: AND 00000448: SWAP2 00000449: PUSH4 0x9dc29fac 0000044e: SWAP2 0000044f: PUSH1 0x44 00000451: DUP1 00000452: DUP4 00000453: ADD 00000454: SWAP3 00000455: PUSH1 0x20 00000457: SWAP3 00000458: SWAP2 00000459: SWAP1 0000045a: DUP3 0000045b: SWAP1 0000045c: SUB 0000045d: ADD 0000045e: DUP2 0000045f: PUSH1 0x00 00000461: DUP8 00000462: DUP1 00000463: EXTCODESIZE 00000464: ISZERO 00000465: DUP1 00000466: ISZERO 00000467: PUSH2 0x046f 0000046a: JUMPI 0000046b: PUSH1 0x00 0000046d: DUP1 0000046e: REVERT 0000046f: JUMPDEST 00000470: POP 00000471: GAS 00000472: CALL 00000473: ISZERO 00000474: DUP1 00000475: ISZERO 00000476: PUSH2 0x0483 00000479: JUMPI 0000047a: RETURNDATASIZE 0000047b: PUSH1 0x00 0000047d: DUP1 0000047e: RETURNDATACOPY 0000047f: RETURNDATASIZE 00000480: PUSH1 0x00 00000482: REVERT 00000483: JUMPDEST 00000484: POP 00000485: POP 00000486: POP 00000487: POP 00000488: PUSH1 0x40 0000048a: MLOAD 0000048b: RETURNDATASIZE 0000048c: PUSH1 0x20 0000048e: DUP2 0000048f: LT 00000490: ISZERO 00000491: PUSH2 0x0499 00000494: JUMPI 00000495: PUSH1 0x00 00000497: DUP1 00000498: REVERT 00000499: JUMPDEST 0000049a: POP 0000049b: POP 0000049c: PUSH1 0x40 0000049e: MLOAD 0000049f: PUSH1 0x00 000004a1: SWAP1 000004a2: PUSH1 0x01 000004a4: PUSH1 0x01 000004a6: PUSH1 0xa0 000004a8: SHL 000004a9: SUB 000004aa: DUP7 000004ab: AND 000004ac: SWAP1 000004ad: DUP4 000004ae: SWAP1 000004af: DUP4 000004b0: DUP2 000004b1: DUP2 000004b2: DUP2 000004b3: DUP6 000004b4: DUP8 000004b5: GAS 000004b6: CALL 000004b7: SWAP3 000004b8: POP 000004b9: POP 000004ba: POP 000004bb: RETURNDATASIZE 000004bc: DUP1 000004bd: PUSH1 0x00 000004bf: DUP2 000004c0: EQ 000004c1: PUSH2 0x04e6 000004c4: JUMPI 000004c5: PUSH1 0x40 000004c7: MLOAD 000004c8: SWAP2 000004c9: POP 000004ca: PUSH1 0x1f 000004cc: NOT 000004cd: PUSH1 0x3f 000004cf: RETURNDATASIZE 000004d0: ADD 000004d1: AND 000004d2: DUP3 000004d3: ADD 000004d4: PUSH1 0x40 000004d6: MSTORE 000004d7: RETURNDATASIZE 000004d8: DUP3 000004d9: MSTORE 000004da: RETURNDATASIZE 000004db: PUSH1 0x00 000004dd: PUSH1 0x20 000004df: DUP5 000004e0: ADD 000004e1: RETURNDATACOPY 000004e2: PUSH2 0x04eb 000004e5: JUMP 000004e6: JUMPDEST 000004e7: PUSH1 0x60 000004e9: SWAP2 000004ea: POP 000004eb: JUMPDEST 000004ec: POP 000004ed: POP 000004ee: SWAP1 000004ef: POP 000004f0: DUP1 000004f1: PUSH2 0x052b 000004f4: JUMPI 000004f5: PUSH1 0x40 000004f7: MLOAD 000004f8: PUSH3 0x461bcd 000004fc: PUSH1 0xe5 000004fe: SHL 000004ff: DUP2 00000500: MSTORE 00000501: PUSH1 0x04 00000503: ADD 00000504: DUP1 00000505: DUP1 00000506: PUSH1 0x20 00000508: ADD 00000509: DUP3 0000050a: DUP2 0000050b: SUB 0000050c: DUP3 0000050d: MSTORE 0000050e: PUSH1 0x22 00000510: DUP2 00000511: MSTORE 00000512: PUSH1 0x20 00000514: ADD 00000515: DUP1 00000516: PUSH2 0x091e 00000519: PUSH1 0x22 0000051b: SWAP2 0000051c: CODECOPY 0000051d: PUSH1 0x40 0000051f: ADD 00000520: SWAP2 00000521: POP 00000522: POP 00000523: PUSH1 0x40 00000525: MLOAD 00000526: DUP1 00000527: SWAP2 00000528: SUB 00000529: SWAP1 0000052a: REVERT 0000052b: JUMPDEST 0000052c: PUSH1 0x40 0000052e: DUP1 0000052f: MLOAD 00000530: DUP4 00000531: DUP2 00000532: MSTORE 00000533: PUSH1 0x20 00000535: DUP2 00000536: ADD 00000537: DUP7 00000538: SWAP1 00000539: MSTORE 0000053a: DUP2 0000053b: MLOAD 0000053c: PUSH1 0x01 0000053e: PUSH1 0x01 00000540: PUSH1 0xa0 00000542: SHL 00000543: SUB 00000544: DUP9 00000545: AND 00000546: SWAP3 00000547: PUSH32 0x73f04af9dcc582a923ec15d3eea990fe34adabfff2879e28d44572e01a54abb6 00000568: SWAP3 00000569: DUP3 0000056a: SWAP1 0000056b: SUB 0000056c: ADD 0000056d: SWAP1 0000056e: LOG2 0000056f: PUSH32 0x29cc6e043f6a8ee5c6495fc77b357c6291691b06b85c30e4b48a3fcebb3e3a7f 00000590: PUSH1 0x01 00000592: SLOAD 00000593: PUSH32 0x0000000000000000000000004bae380b5d762d543d426331b8437926443ae9ec 000005b4: PUSH1 0x01 000005b6: PUSH1 0x01 000005b8: PUSH1 0xa0 000005ba: SHL 000005bb: SUB 000005bc: AND 000005bd: PUSH4 0x18160ddd 000005c2: PUSH1 0x40 000005c4: MLOAD 000005c5: DUP2 000005c6: PUSH4 0xffffffff 000005cb: AND 000005cc: PUSH1 0xe0 000005ce: SHL 000005cf: DUP2 000005d0: MSTORE 000005d1: PUSH1 0x04 000005d3: ADD 000005d4: PUSH1 0x20 000005d6: PUSH1 0x40 000005d8: MLOAD 000005d9: DUP1 000005da: DUP4 000005db: SUB 000005dc: DUP2 000005dd: DUP7 000005de: DUP1 000005df: EXTCODESIZE 000005e0: ISZERO 000005e1: DUP1 000005e2: ISZERO 000005e3: PUSH2 0x05eb 000005e6: JUMPI 000005e7: PUSH1 0x00 000005e9: DUP1 000005ea: REVERT 000005eb: JUMPDEST 000005ec: POP 000005ed: GAS 000005ee: STATICCALL 000005ef: ISZERO 000005f0: DUP1 000005f1: ISZERO 000005f2: PUSH2 0x05ff 000005f5: JUMPI 000005f6: RETURNDATASIZE 000005f7: PUSH1 0x00 000005f9: DUP1 000005fa: RETURNDATACOPY 000005fb: RETURNDATASIZE 000005fc: PUSH1 0x00 000005fe: REVERT 000005ff: JUMPDEST 00000600: POP 00000601: POP 00000602: POP 00000603: POP 00000604: PUSH1 0x40 00000606: MLOAD 00000607: RETURNDATASIZE 00000608: PUSH1 0x20 0000060a: DUP2 0000060b: LT 0000060c: ISZERO 0000060d: PUSH2 0x0615 00000610: JUMPI 00000611: PUSH1 0x00 00000613: DUP1 00000614: REVERT 00000615: JUMPDEST 00000616: POP 00000617: MLOAD 00000618: PUSH1 0x40 0000061a: DUP1 0000061b: MLOAD 0000061c: SWAP3 0000061d: DUP4 0000061e: MSTORE 0000061f: PUSH1 0x20 00000621: DUP4 00000622: ADD 00000623: SWAP2 00000624: SWAP1 00000625: SWAP2 00000626: MSTORE 00000627: DUP1 00000628: MLOAD 00000629: SWAP2 0000062a: DUP3 0000062b: SWAP1 0000062c: SUB 0000062d: ADD 0000062e: SWAP1 0000062f: LOG1 00000630: POP 00000631: PUSH1 0x01 00000633: PUSH1 0x00 00000635: SSTORE 00000636: SWAP4 00000637: SWAP3 00000638: POP 00000639: POP 0000063a: POP 0000063b: JUMP 0000063c: JUMPDEST 0000063d: PUSH32 0x0000000000000000000000004bae380b5d762d543d426331b8437926443ae9ec 0000065e: DUP2 0000065f: JUMP 00000660: JUMPDEST 00000661: PUSH1 0x01 00000663: SLOAD 00000664: DUP2 00000665: JUMP 00000666: JUMPDEST 00000667: PUSH1 0x00 00000669: PUSH1 0x01 0000066b: SLOAD 0000066c: PUSH1 0x00 0000066e: EQ 0000066f: ISZERO 00000670: PUSH2 0x067b 00000673: JUMPI 00000674: POP 00000675: PUSH1 0x00 00000677: PUSH2 0x0324 0000067a: JUMP 0000067b: JUMPDEST 0000067c: PUSH1 0x00 0000067e: PUSH32 0x0000000000000000000000004bae380b5d762d543d426331b8437926443ae9ec 0000069f: PUSH1 0x01 000006a1: PUSH1 0x01 000006a3: PUSH1 0xa0 000006a5: SHL 000006a6: SUB 000006a7: AND 000006a8: PUSH4 0x18160ddd 000006ad: PUSH1 0x40 000006af: MLOAD 000006b0: DUP2 000006b1: PUSH4 0xffffffff 000006b6: AND 000006b7: PUSH1 0xe0 000006b9: SHL 000006ba: DUP2 000006bb: MSTORE 000006bc: PUSH1 0x04 000006be: ADD 000006bf: PUSH1 0x20 000006c1: PUSH1 0x40 000006c3: MLOAD 000006c4: DUP1 000006c5: DUP4 000006c6: SUB 000006c7: DUP2 000006c8: DUP7 000006c9: DUP1 000006ca: EXTCODESIZE 000006cb: ISZERO 000006cc: DUP1 000006cd: ISZERO 000006ce: PUSH2 0x06d6 000006d1: JUMPI 000006d2: PUSH1 0x00 000006d4: DUP1 000006d5: REVERT 000006d6: JUMPDEST 000006d7: POP 000006d8: GAS 000006d9: STATICCALL 000006da: ISZERO 000006db: DUP1 000006dc: ISZERO 000006dd: PUSH2 0x06ea 000006e0: JUMPI 000006e1: RETURNDATASIZE 000006e2: PUSH1 0x00 000006e4: DUP1 000006e5: RETURNDATACOPY 000006e6: RETURNDATASIZE 000006e7: PUSH1 0x00 000006e9: REVERT 000006ea: JUMPDEST 000006eb: POP 000006ec: POP 000006ed: POP 000006ee: POP 000006ef: PUSH1 0x40 000006f1: MLOAD 000006f2: RETURNDATASIZE 000006f3: PUSH1 0x20 000006f5: DUP2 000006f6: LT 000006f7: ISZERO 000006f8: PUSH2 0x0700 000006fb: JUMPI 000006fc: PUSH1 0x00 000006fe: DUP1 000006ff: REVERT 00000700: JUMPDEST 00000701: POP 00000702: MLOAD 00000703: PUSH1 0x01 00000705: SLOAD 00000706: SWAP1 00000707: SWAP2 00000708: POP 00000709: PUSH2 0x0716 0000070c: SWAP1 0000070d: PUSH2 0x0305 00000710: DUP6 00000711: DUP5 00000712: PUSH2 0x0723 00000715: JUMP 00000716: JUMPDEST 00000717: SWAP4 00000718: SWAP3 00000719: POP 0000071a: POP 0000071b: POP 0000071c: JUMP 0000071d: JUMPDEST 0000071e: PUSH2 0x2328 00000721: DUP2 00000722: JUMP 00000723: JUMPDEST 00000724: PUSH1 0x00 00000726: DUP3 00000727: PUSH2 0x0732 0000072a: JUMPI 0000072b: POP 0000072c: PUSH1 0x00 0000072e: PUSH2 0x025e 00000731: JUMP 00000732: JUMPDEST 00000733: DUP3 00000734: DUP3 00000735: MUL 00000736: DUP3 00000737: DUP5 00000738: DUP3 00000739: DUP2 0000073a: PUSH2 0x073f 0000073d: JUMPI 0000073e: INVALID 0000073f: JUMPDEST 00000740: DIV 00000741: EQ 00000742: PUSH2 0x025b 00000745: JUMPI 00000746: PUSH1 0x40 00000748: MLOAD 00000749: PUSH3 0x461bcd 0000074d: PUSH1 0xe5 0000074f: SHL 00000750: DUP2 00000751: MSTORE 00000752: PUSH1 0x04 00000754: ADD 00000755: DUP1 00000756: DUP1 00000757: PUSH1 0x20 00000759: ADD 0000075a: DUP3 0000075b: DUP2 0000075c: SUB 0000075d: DUP3 0000075e: MSTORE 0000075f: PUSH1 0x21 00000761: DUP2 00000762: MSTORE 00000763: PUSH1 0x20 00000765: ADD 00000766: DUP1 00000767: PUSH2 0x08fd 0000076a: PUSH1 0x21 0000076c: SWAP2 0000076d: CODECOPY 0000076e: PUSH1 0x40 00000770: ADD 00000771: SWAP2 00000772: POP 00000773: POP 00000774: PUSH1 0x40 00000776: MLOAD 00000777: DUP1 00000778: SWAP2 00000779: SUB 0000077a: SWAP1 0000077b: REVERT 0000077c: JUMPDEST 0000077d: PUSH1 0x00 0000077f: PUSH2 0x025b 00000782: DUP4 00000783: DUP4 00000784: PUSH1 0x40 00000786: MLOAD 00000787: DUP1 00000788: PUSH1 0x40 0000078a: ADD 0000078b: PUSH1 0x40 0000078d: MSTORE 0000078e: DUP1 0000078f: PUSH1 0x1a 00000791: DUP2 00000792: MSTORE 00000793: PUSH1 0x20 00000795: ADD 00000796: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 000007b7: DUP2 000007b8: MSTORE 000007b9: POP 000007ba: PUSH2 0x0800 000007bd: JUMP 000007be: JUMPDEST 000007bf: PUSH1 0x00 000007c1: PUSH2 0x025b 000007c4: DUP4 000007c5: DUP4 000007c6: PUSH1 0x40 000007c8: MLOAD 000007c9: DUP1 000007ca: PUSH1 0x40 000007cc: ADD 000007cd: PUSH1 0x40 000007cf: MSTORE 000007d0: DUP1 000007d1: PUSH1 0x1e 000007d3: DUP2 000007d4: MSTORE 000007d5: PUSH1 0x20 000007d7: ADD 000007d8: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 000007f9: DUP2 000007fa: MSTORE 000007fb: POP 000007fc: PUSH2 0x08a2 000007ff: JUMP 00000800: JUMPDEST 00000801: PUSH1 0x00 00000803: DUP2 00000804: DUP4 00000805: PUSH2 0x088c 00000808: JUMPI 00000809: PUSH1 0x40 0000080b: MLOAD 0000080c: PUSH3 0x461bcd 00000810: PUSH1 0xe5 00000812: SHL 00000813: DUP2 00000814: MSTORE 00000815: PUSH1 0x04 00000817: ADD 00000818: DUP1 00000819: DUP1 0000081a: PUSH1 0x20 0000081c: ADD 0000081d: DUP3 0000081e: DUP2 0000081f: SUB 00000820: DUP3 00000821: MSTORE 00000822: DUP4 00000823: DUP2 00000824: DUP2 00000825: MLOAD 00000826: DUP2 00000827: MSTORE 00000828: PUSH1 0x20 0000082a: ADD 0000082b: SWAP2 0000082c: POP 0000082d: DUP1 0000082e: MLOAD 0000082f: SWAP1 00000830: PUSH1 0x20 00000832: ADD 00000833: SWAP1 00000834: DUP1 00000835: DUP4 00000836: DUP4 00000837: PUSH1 0x00 00000839: JUMPDEST 0000083a: DUP4 0000083b: DUP2 0000083c: LT 0000083d: ISZERO 0000083e: PUSH2 0x0851 00000841: JUMPI 00000842: DUP2 00000843: DUP2 00000844: ADD 00000845: MLOAD 00000846: DUP4 00000847: DUP3 00000848: ADD 00000849: MSTORE 0000084a: PUSH1 0x20 0000084c: ADD 0000084d: PUSH2 0x0839 00000850: JUMP 00000851: JUMPDEST 00000852: POP 00000853: POP 00000854: POP 00000855: POP 00000856: SWAP1 00000857: POP 00000858: SWAP1 00000859: DUP2 0000085a: ADD 0000085b: SWAP1 0000085c: PUSH1 0x1f 0000085e: AND 0000085f: DUP1 00000860: ISZERO 00000861: PUSH2 0x087e 00000864: JUMPI 00000865: DUP1 00000866: DUP3 00000867: SUB 00000868: DUP1 00000869: MLOAD 0000086a: PUSH1 0x01 0000086c: DUP4 0000086d: PUSH1 0x20 0000086f: SUB 00000870: PUSH2 0x0100 00000873: EXP 00000874: SUB 00000875: NOT 00000876: AND 00000877: DUP2 00000878: MSTORE 00000879: PUSH1 0x20 0000087b: ADD 0000087c: SWAP2 0000087d: POP 0000087e: JUMPDEST 0000087f: POP 00000880: SWAP3 00000881: POP 00000882: POP 00000883: POP 00000884: PUSH1 0x40 00000886: MLOAD 00000887: DUP1 00000888: SWAP2 00000889: SUB 0000088a: SWAP1 0000088b: REVERT 0000088c: JUMPDEST 0000088d: POP 0000088e: PUSH1 0x00 00000890: DUP4 00000891: DUP6 00000892: DUP2 00000893: PUSH2 0x0898 00000896: JUMPI 00000897: INVALID 00000898: JUMPDEST 00000899: DIV 0000089a: SWAP6 0000089b: SWAP5 0000089c: POP 0000089d: POP 0000089e: POP 0000089f: POP 000008a0: POP 000008a1: JUMP 000008a2: JUMPDEST 000008a3: PUSH1 0x00 000008a5: DUP2 000008a6: DUP5 000008a7: DUP5 000008a8: GT 000008a9: ISZERO 000008aa: PUSH2 0x08f4 000008ad: JUMPI 000008ae: PUSH1 0x40 000008b0: MLOAD 000008b1: PUSH3 0x461bcd 000008b5: PUSH1 0xe5 000008b7: SHL 000008b8: DUP2 000008b9: MSTORE 000008ba: PUSH1 0x20 000008bc: PUSH1 0x04 000008be: DUP3 000008bf: ADD 000008c0: DUP2 000008c1: DUP2 000008c2: MSTORE 000008c3: DUP4 000008c4: MLOAD 000008c5: PUSH1 0x24 000008c7: DUP5 000008c8: ADD 000008c9: MSTORE 000008ca: DUP4 000008cb: MLOAD 000008cc: SWAP1 000008cd: SWAP3 000008ce: DUP4 000008cf: SWAP3 000008d0: PUSH1 0x44 000008d2: SWAP1 000008d3: SWAP2 000008d4: ADD 000008d5: SWAP2 000008d6: SWAP1 000008d7: DUP6 000008d8: ADD 000008d9: SWAP1 000008da: DUP1 000008db: DUP4 000008dc: DUP4 000008dd: PUSH1 0x00 000008df: DUP4 000008e0: ISZERO 000008e1: PUSH2 0x0851 000008e4: JUMPI 000008e5: DUP2 000008e6: DUP2 000008e7: ADD 000008e8: MLOAD 000008e9: DUP4 000008ea: DUP3 000008eb: ADD 000008ec: MSTORE 000008ed: PUSH1 0x20 000008ef: ADD 000008f0: PUSH2 0x0839 000008f3: JUMP 000008f4: JUMPDEST 000008f5: POP 000008f6: POP 000008f7: POP 000008f8: SWAP1 000008f9: SUB 000008fa: SWAP1 000008fb: JUMP 000008fc: INVALID 000008fd: MSTORE8 000008fe: PUSH2 0x6665 00000901: UNKNOWN(0x4D) 00000902: PUSH2 0x7468 00000905: GASPRICE 00000906: KECCAK256 00000907: PUSH14 0x756c7469706c69636174696f6e20 00000916: PUSH16 0x766572666c6f77466c6f6f723a207472 00000927: PUSH2 0x6e73 0000092a: PUSH7 0x657220746f2072 00000932: PUSH6 0x636965766572 00000939: KECCAK256 0000093a: PUSH7 0x61696c6564a264 00000942: PUSH10 0x70667358221220efa062 0000094d: ORIGIN 0000094e: UNKNOWN(0x23) 0000094f: UNKNOWN(0xBC) 00000950: SSTORE 00000951: UNKNOWN(0xB8) 00000952: CALLDATASIZE 00000953: UNKNOWN(0xD4) 00000954: PC 00000955: SWAP16 00000956: DIFFICULTY 00000957: UNKNOWN(0xE9) 00000958: UNKNOWN(0xC8) 00000959: UNKNOWN(0xB0) 0000095a: UNKNOWN(0x0E) 0000095b: UNKNOWN(0xBF) 0000095c: PUSH14 0x9529cdd75105301568fc90e40364 0000096b: PUSH20
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x918e5cf0",
"selector": "0x918e5cf0",
"calldata_variants": [
"0x918e5cf0",
"0x918e5cf00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd211fd18",
"selector": "0xd211fd18",
"calldata_variants": [
"0xd211fd18",
"0xd211fd180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xddbc360d",
"selector": "0xddbc360d",
"calldata_variants": [
"0xddbc360d",
"0xddbc360d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfac44f6b",
"selector": "0xfac44f6b",
"calldata_variants": [
"0xfac44f6b",
"0xfac44f6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x04cd5294",
"selector": "0x04cd5294",
"calldata_variants": [
"0x04cd5294",
"0x04cd52940000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x126082cf",
"selector": "0x126082cf",
"calldata_variants": [
"0x126082cf",
"0x126082cf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x410085df",
"selector": "0x410085df",
"calldata_variants": [
"0x410085df",
"0x410085df0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 2381,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x18a9ba9718bbf061aaf8cc11e2c27506e2dfdfd2e6111bbff91cf1011f70946d
call_targets:
0x40ed3699c2ffe43939ecf2f3d11f633b522820ad
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x18a9ba9718bbf061aaf8cc11e2c27506e2dfdfd2e6111bbff91cf1011f70946d",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x40ed3699c2ffe43939ecf2f3d11f633b522820ad"
],
"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": "0x918e5cf0",
"selector": "0x918e5cf0",
"calldata_variants": [
"0x918e5cf0",
"0x918e5cf00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd211fd18",
"selector": "0xd211fd18",
"calldata_variants": [
"0xd211fd18",
"0xd211fd180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xddbc360d",
"selector": "0xddbc360d",
"calldata_variants": [
"0xddbc360d",
"0xddbc360d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfac44f6b",
"selector": "0xfac44f6b",
"calldata_variants": [
"0xfac44f6b",
"0xfac44f6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x04cd5294",
"selector": "0x04cd5294",
"calldata_variants": [
"0x04cd5294",
"0x04cd52940000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x126082cf",
"selector": "0x126082cf",
"calldata_variants": [
"0x126082cf",
"0x126082cf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x410085df",
"selector": "0x410085df",
"calldata_variants": [
"0x410085df",
"0x410085df0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1138,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1206,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [
{
"pc": 2381,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 2
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x18a9ba9718bbf061aaf8cc11e2c27506e2dfdfd2e6111bbff91cf1011f70946d
call_targets:
0x40ed3699c2ffe43939ecf2f3d11f633b522820ad
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x18a9ba9718bbf061aaf8cc11e2c27506e2dfdfd2e6111bbff91cf1011f70946d",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x40ed3699c2ffe43939ecf2f3d11f633b522820ad"
],
"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": "0x918e5cf0",
"selector": "0x918e5cf0",
"calldata_variants": [
"0x918e5cf0",
"0x918e5cf00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd211fd18",
"selector": "0xd211fd18",
"calldata_variants": [
"0xd211fd18",
"0xd211fd180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xddbc360d",
"selector": "0xddbc360d",
"calldata_variants": [
"0xddbc360d",
"0xddbc360d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfac44f6b",
"selector": "0xfac44f6b",
"calldata_variants": [
"0xfac44f6b",
"0xfac44f6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x04cd5294",
"selector": "0x04cd5294",
"calldata_variants": [
"0x04cd5294",
"0x04cd52940000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x126082cf",
"selector": "0x126082cf",
"calldata_variants": [
"0x126082cf",
"0x126082cf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x410085df",
"selector": "0x410085df",
"calldata_variants": [
"0x410085df",
"0x410085df0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1138,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1206,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": [
{
"pc": 2381,
"type": "tx_origin_used"
}
]
}
|