/// Probe: `signextend(32, x)` — byte index 32 is out of range. EVM returns
/// the value unchanged (no extension). stdlib `__signextend` guards via
/// `icmp uge 31`. Tests that the guard survives O3.
object "SignExtendOobProbe" {
code {
let size := datasize("SignExtendOobProbe_deployed")
codecopy(0, dataoffset("SignExtendOobProbe_deployed"), size)
return(0, size)
}
object "SignExtendOobProbe_deployed" {
code {
let tag := calldataload(0)
let value := calldataload(32)
let numbyte := shl(5, 1) // = 32, obfuscated
mstore(0, xor(signextend(numbyte, value), tag))
return(0, 32)
}
}
}