private bool MatchCompare(int index, OpCode cmp1, OpCode cmp2, Type type)
{
return code[index].opcode == OpCodes.Stloc && code[index].Local.LocalType == type
&& code[index + 1].opcode == OpCodes.Stloc && code[index + 1].Local.LocalType == type
&& code[index + 2].opcode == OpCodes.Ldloc && code[index + 2].MatchLocal(code[index + 1])
&& code[index + 3].opcode == OpCodes.Ldloc && code[index + 3].MatchLocal(code[index])
&& code[index + 4].opcode == cmp1
&& code[index + 5].opcode == OpCodes.Ldloc && code[index + 5].MatchLocal(code[index + 1])
&& code[index + 6].opcode == OpCodes.Ldloc && code[index + 6].MatchLocal(code[index])
&& code[index + 7].opcode == cmp2
&& code[index + 8].opcode == OpCodes.Sub
&& code[index + 9].pseudo == CodeType.ReleaseTempLocal && code[index + 9].Local == code[index].Local
&& code[index + 10].pseudo == CodeType.ReleaseTempLocal && code[index + 10].Local == code[index + 1].Local
&& ((code[index + 11].opcode.FlowControl == FlowControl.Cond_Branch && code[index + 11].HasLabel) ||
(code[index + 11].opcode == OpCodes.Ldc_I4_0
&& (code[index + 12].opcode.FlowControl == FlowControl.Cond_Branch && code[index + 12].HasLabel)));
}