public static Boolean Is_Shl(this VirtualOpCode ins) { return(ins.MatchesIndirect( new Code[] { Code.Ldloc_S, Code.Ldloc_S, Code.Ldc_I4_S, Code.And, Code.Shl, Code.Stloc_S, Code.Newobj, Code.Stloc_0, Code.Ldloc_0, Code.Ldloc_S, Code.Callvirt, Code.Ldloc_0, Code.Ret } )); }
public static Boolean Is_Bge(this VirtualOpCode ins) { return(ins.Matches(new Code[] { Code.Call, Code.Brtrue_S, Code.Ldarg_1, Code.Castclass }) && ins.MatchesIndirect(new Code[] { Code.Ldarg_0, Code.Castclass, Code.Callvirt, Code.Ldarg_1, Code.Castclass, Code.Callvirt, Code.Clt, Code.Stloc_0, Code.Ldloc_0, Code.Ret })); }
public static Boolean Is_Bgt_Un(this VirtualOpCode ins) { return(ins.Matches(new Code[] { Code.Call, Code.Brfalse_S, Code.Ldarg_1, Code.Castclass }) && ins.MatchesIndirect(new Code[] { Code.Ldloc_2, Code.Ldloc_3, Code.Bgt_S, Code.Ldloc_2, Code.Call, Code.Brtrue_S, Code.Ldloc_3, Code.Call, Code.Br_S })); }
public static Boolean Is_Or(this VirtualOpCode ins) { return(ins.MatchesIndirect(new Code[] { Code.Ldloc_S, Code.Ldloc_S, Code.Or, Code.Callvirt, Code.Ldloc_0, Code.Ret })); }
public static Boolean Is_Bge_Un(this VirtualOpCode ins) { return(ins.Matches(new Code[] { Code.Call, Code.Brtrue_S, Code.Ldarg_1, Code.Castclass }) && ins.MatchesIndirect(Pattern_Clt_Un)); }
public static Boolean Is_Ble(this VirtualOpCode ins) { return(ins.Matches(new Code[] { Code.Call, Code.Ldc_I4_0, Code.Ceq, Code.Stloc_2 }) && ins.MatchesIndirect(Pattern_Ble_Un)); }
public static Boolean Is_Bgt(this VirtualOpCode ins) { return(ins.Matches(Pattern_Br_True) && ins.MatchesIndirect(Pattern_GreaterThan)); }