revive-integration 1.4.0

revive compiler integration test cases
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)
        }
    }
}