// SPDX-License-Identifier: MIT
pragma solidity ^0.8;
contract FmpRangeProofBug {
fallback() external {
assembly {
let v := calldataload(0)
mstore(0x40, v)
// Force fmp_word_escapes via a staticcall whose args cover
// memory[0..0x80] (so 0x40 is in the escape range). That
// disables FMP-native-mode storage and forces ByteSwap mode
// where the range-proof bug lives.
let _success := staticcall(gas(), origin(), 0, 0x80, 0, 0)
let r := mload(0x40)
mstore(0x100, r)
return(0x100, 32)
}
}
}