protected bool RemoveControllerChain() { V_0 = this.InitializeTheTraversalQueue(); while (V_0.get_Count() > 0) { V_1 = V_0.Dequeue(); V_2 = V_1; while (this.IsStateMachineControllerBlock(ref V_2, out V_4, out V_3)) { switch (V_4 - 1) { case 0: { V_6 = this.theCFG.get_SwitchBlocksInformation().get_Item(V_2); V_7 = V_6.get_OrderedCasesArray(); V_8 = 0; while (V_8 < (int)V_7.Length) { if (!this.toBeRemoved.Contains(V_7[V_8])) { V_9 = this.TryGetStateEntry(V_7[V_8], out V_5); switch (V_9) { case 0: { return(false); } case 1: { this.stateToStartBlock[V_8 + V_3] = V_5; break; } case 2: { this.stateToStartBlock[V_8 + V_3] = V_5; V_0.Enqueue(V_5); break; } } } V_8 = V_8 + 1; } V_0.Enqueue(this.SkipBranchChain(V_6.get_DefaultCase())); break; } case 1: { V_9 = this.TryGetStateEntry(V_2.get_Successors()[0], out V_10); switch (V_9) { case 0: { return(false); } case 1: { this.stateToStartBlock[V_3] = V_10; break; } case 2: { this.stateToStartBlock[V_3] = V_10; V_0.Enqueue(V_10); break; } } break; } case 2: { V_12 = 1; if (V_3 == -1) { V_3 = 0; V_12 = 0; } V_9 = this.TryGetStateEntry(V_2.get_Successors()[V_12], out V_11); if (V_9 == StateControllerRemover.ControllerTraversalSearchResult.PatternFailed) { return(false); } if (V_9 - 1 > 1) { break; } this.stateToStartBlock[V_3] = V_11; break; } } dummyVar0 = this.toBeRemoved.Add(V_2); if (V_4 != 3) { V_2 = V_2.get_Successors()[(int)V_2.get_Successors().Length - 1]; } else { V_2 = V_2.get_Successors()[0]; } V_2 = this.SkipBranchChain(V_2); } if (InstructionBlock.op_Equality(this.defaultStateEntry, null)) { this.defaultStateEntry = V_2; } this.ReattachDefaultSuccessor(V_1, V_2); while (V_0.get_Count() > 0 && this.toBeRemoved.Contains(V_0.Peek())) { dummyVar1 = V_0.Dequeue(); } } if (this.toBeRemoved.get_Count() == 0) { return(false); } this.CreateControllerSwitchData(); return(true); }