object "OpProbe" {
code {
datacopy(0, dataoffset("OpProbe_deployed"), datasize("OpProbe_deployed"))
return(0, datasize("OpProbe_deployed"))
}
object "OpProbe_deployed" {
code {
let op := calldataload(0)
let a := calldataload(32)
let b := calldataload(64)
let c := calldataload(96)
let r := 0
switch op
case 0 { r := shl(a, b) }
case 1 { r := shr(a, b) }
case 2 { r := sar(a, b) }
case 3 { r := byte(a, b) }
case 4 { r := signextend(a, b) }
case 5 { r := sdiv(a, b) }
case 6 { r := smod(a, b) }
case 7 { r := exp(a, b) }
case 8 { r := addmod(a, b, c) }
case 9 { r := mulmod(a, b, c) }
case 10 { r := div(a, b) }
case 11 { r := mod(a, b) }
case 12 { r := slt(a, b) }
case 13 { r := sgt(a, b) }
case 14 { r := lt(a, b) }
case 15 { r := gt(a, b) }
case 16 { r := not(a) }
case 17 { r := addmod(mul(a, b), c, a) }
mstore(0, r)
return(0, 32)
}
}
}