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

Analysis Run

492f3545-1f8c-4610-91c1-25415840a521

failed
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 4:58 PM
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
Authorization based on tx.origin
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
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

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 profit paths identified in AUDIT_BUNDLE.txt.
View stderr
[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":[]}
Metadata
{
    "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
}

Opcode Heuristics

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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_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
view
trace_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
view
trace_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"
        }
    ]
}