/// Probe: `shr(256, x)` — LLVM `lshr i256 x, 256` is UB; EVM defines SHR with
/// count >= 256 as 0.
object "ShrOverflowProbe" {
code {
let size := datasize("ShrOverflowProbe_deployed")
codecopy(0, dataoffset("ShrOverflowProbe_deployed"), size)
return(0, size)
}
object "ShrOverflowProbe_deployed" {
code {
let tag := calldataload(0)
let value := calldataload(32)
let count := shl(8, 1)
mstore(0, xor(shr(count, value), tag))
return(0, 32)
}
}
}