// SPDX-License-Identifier: MIT
pragma solidity ^0.8;
contract ArrayProbe {
uint256[8] fixedArr;
uint256[] dynArr;
mapping(uint256 => uint256) m;
function run(uint256 a, uint256 b, uint256 c) public returns (uint256) {
for (uint256 i = 0; i < 8; i++) { fixedArr[i] = i * a + 1; }
// attacker-controlled index: out-of-bounds must revert (panic 0x32) identically
uint256 r = fixedArr[a & 7];
r = r + fixedArr[b & 7];
// dynamic array push/index
uint256 n = c & 15;
for (uint256 i = 0; i < n; i++) { dynArr.push(i + a); }
if (dynArr.length > 0) { r = r ^ dynArr[b % dynArr.length]; }
// mapping
m[a] = b;
m[b] = c;
r = r + m[a] + m[b];
// explicit bounds hit (reverts when a >= 8)
r = r + fixedArr[a];
return r;
}
}