private CFGBlockLogicalConstruct ProcessFinallyNode(CFGBlockLogicalConstruct finallyBlockEntry, CFGBlockLogicalConstruct finallyBlockEnd) { V_1 = finallyBlockEntry.get_SameParentPredecessors().GetEnumerator(); try { while (V_1.MoveNext()) { V_2 = (ILogicalConstruct)V_1.get_Current(); if (this.newTryBody.Contains(V_2)) { continue; } throw new Exception("Invalid entry to the finally block"); } } finally { ((IDisposable)V_1).Dispose(); } V_3 = finallyBlockEnd.get_CFGSuccessors().GetEnumerator(); try { dummyVar0 = V_3.MoveNext(); V_0 = V_3.get_Current(); if (V_3.MoveNext()) { throw new Exception("Invalid count of successors"); } } finally { if (V_3 != null) { V_3.Dispose(); } } V_4 = (new HashSet <CFGBlockLogicalConstruct>(finallyBlockEntry.get_CFGPredecessors())).GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); if (InstructionBlock.op_Inequality(V_5.get_TheBlock(), finallyBlockEntry.get_TheBlock()) && (int)V_5.get_TheBlock().get_Successors().Length > 1) { this.ProcessMultiWayCFGPredecessor(finallyBlockEntry, V_5.get_TheBlock(), V_0.get_TheBlock()); } V_6 = V_5; while (V_6 != finallyBlockEntry.get_Parent()) { dummyVar1 = V_6.RemoveFromSuccessors(finallyBlockEntry); V_6.AddToSuccessors(V_0); V_6 = V_6.get_Parent() as LogicalConstructBase; } V_0.AddToPredecessors(V_5); dummyVar2 = finallyBlockEntry.RemoveFromPredecessors(V_5); } } finally { ((IDisposable)V_4).Dispose(); } dummyVar3 = V_0.RemoveFromPredecessors(finallyBlockEnd); dummyVar4 = finallyBlockEnd.RemoveFromSuccessors(V_0); return(V_0); }