public override ModuleSpecificContext GetModuleContext(ModuleDefinition module, ILanguage language) { V_0 = TypeCollisionWriterContextService.moduleContextsLocker; V_1 = false; try { Monitor.Enter(V_0, ref V_1); if (!this.cacheService.IsModuleContextInCache(module, language, this.renameInvalidMembers)) { V_2 = this.GetModuleNamespaceUsings(module); V_3 = this.GetModuleCollisionTypesData(module, language); V_4 = this.GetModuleNamespaceHierarchy(module, language); V_5 = this.GetRenamedNamespacesMap(module, language); V_6 = this.GetMemberRenamingData(module, language); V_7 = new ModuleSpecificContext(module, V_2, V_3, V_4, V_5, V_6.get_RenamedMembers(), V_6.get_RenamedMembersMap()); this.cacheService.AddModuleContextToCache(module, language, this.renameInvalidMembers, V_7); V_8 = V_7; } else { V_8 = this.cacheService.GetModuleContextFromCache(module, language, this.renameInvalidMembers); } } finally { if (V_1) { Monitor.Exit(V_0); } } return(V_8); }
public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint) { V_0 = this._serviceProvider.CreateChildContainer(this._applicationServices); dummyVar0 = ServiceCollectionServiceExtensions.AddSingleton<ShellSettings>(V_0, settings); stackVariable8 = V_0; stackVariable9 = ShellContainerFactory.u003cu003ec.u003cu003e9__7_0; if (stackVariable9 == null) { dummyVar1 = stackVariable9; stackVariable9 = new Func<IServiceProvider, IShellConfiguration>(ShellContainerFactory.u003cu003ec.u003cu003e9.u003cCreateContaineru003eb__7_0); ShellContainerFactory.u003cu003ec.u003cu003e9__7_0 = stackVariable9; } dummyVar2 = ServiceCollectionServiceExtensions.AddSingleton<IShellConfiguration>(stackVariable8, stackVariable9); dummyVar3 = ServiceCollectionServiceExtensions.AddSingleton<ShellDescriptor>(V_0, blueprint.get_Descriptor()); dummyVar4 = ServiceCollectionServiceExtensions.AddSingleton<ShellBlueprint>(V_0, blueprint); this.AddCoreServices(V_0); V_1 = this._serviceProvider.CreateChildContainer(this._applicationServices); stackVariable26 = blueprint.get_Dependencies(); stackVariable27 = ShellContainerFactory.u003cu003ec.u003cu003e9__7_3; if (stackVariable27 == null) { dummyVar5 = stackVariable27; stackVariable27 = new Func<KeyValuePair<Type, FeatureEntry>, bool>(ShellContainerFactory.u003cu003ec.u003cu003e9.u003cCreateContaineru003eb__7_3); ShellContainerFactory.u003cu003ec.u003cu003e9__7_3 = stackVariable27; } V_6 = stackVariable26.Where<KeyValuePair<Type, FeatureEntry>>(stackVariable27).GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); ServiceCollectionDescriptorExtensions.TryAddEnumerable(V_1, ServiceDescriptor.Singleton(Type.GetTypeFromHandle(//
private bool TryMakeLoop(IntervalConstruct interval, DominatorTree dominatorTree) { V_0 = DFSTBuilder.BuildTree(interval); if (V_0.get_BackEdges().get_Count() == 0) { return(false); } V_2 = this.BuildLoop(V_0, out V_1); V_4 = this.DetermineLoopType(V_1, V_2, interval, dominatorTree, out V_3); if (V_1.get_Count() > 0) { V_5 = new LoopLogicalConstruct(interval.get_Entry() as ILogicalConstruct, V_1, V_4, V_3, this.typeSystem); this.CleanUpEdges(V_5); this.UpdateDominatorTree(dominatorTree, V_5); return(true); } V_6 = V_0.get_BackEdges().GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); this.MarkAsGotoEdge(V_7.get_Start().get_Construct() as ILogicalConstruct, V_7.get_End().get_Construct() as ILogicalConstruct); } } finally { ((IDisposable)V_6).Dispose(); } return(false); }
private bool GetYieldExceptionData() { if ((int)this.theDisposeCFG.get_Blocks().Length == 1) { return(true); } V_0 = this.theDisposeCFG.get_OffsetToInstruction().get_Item(0); if (V_0.get_OpCode().get_Code() != 2) { return(false); } V_0 = this.theDisposeCFG.get_OffsetToInstruction().get_Item(1); if (V_0.get_OpCode().get_Code() != 120 || V_0.get_Operand() as FieldReference == null || !this.CheckAndSaveStateField(V_0.get_Operand() as FieldReference)) { return(false); } V_2 = this.theDisposeCFG.get_SwitchBlocksInformation().get_Values().GetEnumerator(); try { while (V_2.MoveNext()) { V_3 = V_2.get_Current(); if (this.DetermineExceptionHandlingStatesFromSwitchData(V_3)) { continue; } V_4 = false; goto Label0; } } finally { ((IDisposable)V_2).Dispose(); } this.DetermineExceptionHandlingStatesFromCFGBlocks(); V_5 = this.handlerToStatesMap.GetEnumerator(); try { while (V_5.MoveNext()) { V_6 = V_5.get_Current(); if (this.TryCreateYieldExceptionHandler(V_6.get_Value(), V_6.get_Key())) { continue; } V_4 = false; goto Label0; } goto Label1; } finally { ((IDisposable)V_5).Dispose(); } Label0: return(V_4); Label1: return(true); }
public static RepositoryResponse<string> ExportAttributeToExcel(List<JObject> lstData, string sheetName, string folderPath, string fileName, List<string> headers = null) { V_0 = new RepositoryResponse<string>(); try { if (lstData.get_Count() <= 0) { V_0.get_Errors().Add("Can not export data of empty list"); V_16 = V_0; } else { V_3 = DateTime.get_Now(); V_1 = string.Concat(fileName, "-", V_3.ToString("yyyyMMdd"), ".xlsx"); V_2 = new DataTable(); if (headers != null) { V_6 = headers.GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); dummyVar1 = V_2.get_Columns().Add(V_7, Type.GetTypeFromHandle(// // Current member / type: Mix.Domain.Core.ViewModels.RepositoryResponse`1<System.String> Mix.Cms.Lib.ViewModels.MixAttributeSetDatas.Helper::ExportAttributeToExcel(System.Collections.Generic.List`1<Newtonsoft.Json.Linq.JObject>,System.String,System.String,System.String,System.Collections.Generic.List`1<System.String>) // Exception in: Mix.Domain.Core.ViewModels.RepositoryResponse<System.String> ExportAttributeToExcel(System.Collections.Generic.List<Newtonsoft.Json.Linq.JObject>,System.String,System.String,System.String,System.Collections.Generic.List<System.String>) // Specified method is not supported. // // mailto: [email protected] public static async Task<RepositoryResponse<PaginationModel<TView>>> FilterByKeywordAsync<TView>(string culture, string attributeSetName, RequestPaging request, string keyword, Dictionary<string, StringValues> queryDictionary = null, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
private void RemoveTransitiveEdges() { V_0 = this.GenerateNodeToIndex(); V_1 = this.GeenrateAdjacencyMatrix(V_0); this.WarsawTransitiveClosure(V_1); V_2 = this.inferenceGraph.GetEnumerator(); try { while (V_2.MoveNext()) { V_3 = V_2.get_Current(); V_4 = this.inferenceGraph.GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); V_6 = this.inferenceGraph.GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); V_8 = V_0.get_Item(V_3); V_9 = V_0.get_Item(V_5); V_10 = V_0.get_Item(V_7); if (!V_1[V_8, V_9] || !V_1[V_9, V_10] || V_3.get_IsHardNode() && V_7.get_IsHardNode() || !V_3.get_SubTypes().Contains(V_7)) { continue; } this.RemoveSubtype(V_3, V_7); } } finally { if (V_6 != null) { V_6.Dispose(); } } } } finally { if (V_4 != null) { V_4.Dispose(); } } } } finally { if (V_2 != null) { V_2.Dispose(); } } return; }
private ConditionLogicalConstruct CreateComplexCondition(ConditionLogicalConstruct conditionNode) { V_0 = conditionNode.get_ConditionExpression(); V_1 = new HashSet <ILogicalConstruct>(); V_2 = conditionNode; dummyVar0 = V_1.Add(V_2); V_3 = V_2.get_TrueSuccessor(); V_4 = V_2.get_FalseSuccessor(); while (true) { if (!this.CanBePartOfComplexCondition(V_3, V_1, V_2.get_FalseCFGSuccessor())) { if (!this.CanBePartOfComplexCondition(V_4, V_1, V_2.get_TrueCFGSuccessor())) { break; } V_6 = V_4 as ConditionLogicalConstruct; if (V_6.get_TrueSuccessor() != V_3) { V_6.Negate(this.typeSystem); } V_8 = 11; } else { V_6 = V_3 as ConditionLogicalConstruct; if (V_6.get_FalseSuccessor() != V_4) { V_6.Negate(this.typeSystem); } V_8 = 12; } V_0 = new BinaryExpression(V_8, V_0, V_6.get_ConditionExpression(), this.typeSystem, null, false); V_0.set_ExpressionType(this.booleanTypeReference); V_2 = V_6; V_3 = V_2.get_TrueSuccessor(); V_4 = V_2.get_FalseSuccessor(); dummyVar1 = V_1.Add(V_2); } if (V_1.get_Count() == 1) { return(conditionNode); } V_5 = new HashSet <ConditionLogicalConstruct>(); V_9 = V_1.GetEnumerator(); try { while (V_9.MoveNext()) { V_10 = (ConditionLogicalConstruct)V_9.get_Current(); dummyVar2 = V_5.Add(V_10); } } finally { ((IDisposable)V_9).Dispose(); } return(new ConditionLogicalConstruct(conditionNode, V_2, V_5, V_0)); }
private bool TryMatchInternal(StatementCollection statements, int startIndex, out Statement result) { result = null; if (statements.get_Count() < startIndex + 2) { return(false); } if (statements.get_Item(startIndex).get_CodeNodeType() != 5 || statements.get_Item(startIndex + 1).get_CodeNodeType() != 3) { return(false); } if (!String.IsNullOrEmpty(statements.get_Item(startIndex + 1).get_Label())) { return(false); } V_3 = (statements.get_Item(startIndex) as ExpressionStatement).get_Expression() as BinaryExpression; if (!this.IsAssignToVariableExpression(V_3, out V_0)) { return(false); } V_1 = V_3.get_Right(); V_4 = statements.get_Item(startIndex + 1) as IfStatement; if (this.ContainsDummyAssignment(V_4.get_Then(), V_0)) { stackVariable50 = 1; } else { stackVariable50 = 0; } V_5 = stackVariable50; if (V_4.get_Else() != null || V_4.get_Then().get_Statements().get_Count() != 1 + V_5 || V_4.get_Then().get_Statements().get_Item(V_5).get_CodeNodeType() != 5 || !String.IsNullOrEmpty(V_4.get_Then().get_Statements().get_Item(V_5).get_Label())) { return(false); } V_6 = V_4.get_Condition() as BinaryExpression; if (V_6 == null || V_6.get_Operator() != 9 || V_6.get_Left().get_CodeNodeType() != 26 || (object)(V_6.get_Left() as VariableReferenceExpression).get_Variable() != (object)V_0 || V_6.get_Right().get_CodeNodeType() != 22 || (V_6.get_Right() as LiteralExpression).get_Value() != null) { return(false); } V_7 = (V_4.get_Then().get_Statements().get_Item(V_5) as ExpressionStatement).get_Expression() as BinaryExpression; if (V_7 == null || !this.IsAssignToVariableExpression(V_7, out V_8) || (object)V_8 != (object)V_0) { return(false); } V_2 = V_7.get_Right(); if (!V_1.get_HasType() || !V_2.get_HasType() || String.op_Inequality(V_1.get_ExpressionType().get_FullName(), V_2.get_ExpressionType().get_FullName())) { return(false); } V_9 = new BinaryExpression(27, V_1, V_2, this.typeSystem, null, false); V_10 = new BinaryExpression(26, new VariableReferenceExpression(V_0, null), V_9, this.typeSystem, null, false); stackVariable150 = new ExpressionStatement(V_10); stackVariable150.set_Parent(statements.get_Item(startIndex).get_Parent()); result = stackVariable150; this.FixContext(V_0.Resolve(), 1, V_5 + 1, result as ExpressionStatement); return(true); }
public static TypeReference ResolveParameterType(this ParameterReference param, MethodReference method) { V_0 = param.get_ParameterType(); V_1 = V_0 as GenericParameter; V_2 = false; V_3 = false; if (V_0.get_IsByReference()) { V_1 = V_0.GetElementType() as GenericParameter; V_2 = true; } if (V_0.get_IsArray()) { V_1 = V_0.GetElementType() as GenericParameter; V_3 = true; } if (V_1 == null) { return(V_0); } V_4 = V_1.get_Position(); if (V_1.get_Owner() as MethodReference == null || !method.get_IsGenericInstance()) { if (V_1.get_Owner() as TypeReference != null && method.get_DeclaringType().get_IsGenericInstance()) { V_6 = method.get_DeclaringType() as GenericInstanceType; if (V_4 >= 0 && V_4 < V_6.get_GenericArguments().get_Count()) { V_0 = V_6.get_GenericArguments().get_Item(V_4); if (V_6.get_PostionToArgument().ContainsKey(V_4)) { V_0 = V_6.get_PostionToArgument().get_Item(V_4); } } } } else { V_5 = method as GenericInstanceMethod; if (V_4 >= 0 && V_4 < V_5.get_GenericArguments().get_Count()) { V_0 = V_5.get_GenericArguments().get_Item(V_4); if (V_5.get_PostionToArgument().ContainsKey(V_4)) { V_0 = V_5.get_PostionToArgument().get_Item(V_4); } } } if (V_2) { return(new ByReferenceType(V_0)); } if (!V_3) { return(V_0); } return(new ArrayType(V_0)); }
public List <FileViewModel> GetFilesWithContent(string fullPath) { this.CreateDirectoryIfNotExist(fullPath); V_0 = new List <FileViewModel>(); V_1 = Directory.GetDirectories(fullPath, "*", 1); V_2 = 0; while (V_2 < (int)V_1.Length) { stackVariable15 = new DirectoryInfo(V_1[V_2]); V_3 = stackVariable15.get_Name(); stackVariable17 = stackVariable15.GetFiles(); stackVariable18 = FileRepository.u003cu003ec.u003cu003e9__29_0; if (stackVariable18 == null) { dummyVar0 = stackVariable18; stackVariable18 = new Func <FileInfo, DateTime>(FileRepository.u003cu003ec.u003cu003e9.u003cGetFilesWithContentu003eb__29_0); FileRepository.u003cu003ec.u003cu003e9__29_0 = stackVariable18; } V_4 = ((IEnumerable <FileInfo>)stackVariable17).OrderByDescending <FileInfo, DateTime>(stackVariable18).GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); V_6 = V_5.OpenText(); try { V_7 = new FileViewModel(); V_7.set_FolderName(V_3); stackVariable33 = new string[2]; stackVariable33[0] = fullPath; stackVariable33[1] = V_3; V_7.set_FileFolder(CommonHelper.GetFullPath(stackVariable33)); V_7.set_Filename(V_5.get_Name().Substring(0, V_5.get_Name().LastIndexOf('.'))); V_7.set_Extension(V_5.get_Extension()); V_7.set_Content(V_6.ReadToEnd()); V_0.Add(V_7); } finally { if (V_6 != null) { ((IDisposable)V_6).Dispose(); } } } } finally { if (V_4 != null) { V_4.Dispose(); } } V_2 = V_2 + 1; } return(V_0); }
public void InferTypes() { V_0 = (new GreedyTypeInferer(this.context, this.offsetToExpression)).InferTypes(); V_1 = new ClassHierarchyBuilder(this.offsetToExpression, this.context.get_MethodContext().get_ControlFlowGraph().get_OffsetToInstruction(), this.context); this.inferenceGraph = V_1.BuildHierarchy(V_0); this.MergeConnectedComponents(); this.RemoveTransitiveEdges(); this.ProcessSingleConstraints(); V_2 = null; V_4 = this.inferenceGraph.GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); if (!V_5.get_IsHardNode() || !String.op_Equality(V_5.get_NodeType().get_FullName(), "System.Object")) { continue; } V_2 = V_5; goto Label0; } } finally { if (V_4 != null) { V_4.Dispose(); } } Label0: V_3 = new List <ClassHierarchyNode>(); V_3.Add(V_2); V_4 = this.inferenceGraph.GetEnumerator(); try { while (V_4.MoveNext()) { V_6 = V_4.get_Current(); if (V_6.get_IsHardNode()) { continue; } V_3.Add(V_6); } } finally { if (V_4 != null) { V_4.Dispose(); } } this.MergeNodes(V_3); this.InferIntegerTypes(V_0); this.AddCasts(); return; }
private void AddCastIfNeeded(Expression useExpression, VariableReference variable) { V_0 = new TypeInferer.u003cu003ec__DisplayClass8_0(); V_0.variable = variable; V_4 = useExpression.get_CodeNodeType(); if (V_4 == 19) { V_1 = useExpression as MethodInvocationExpression; V_2 = V_1.get_Arguments().FirstOrDefault <Expression>(new Func <Expression, bool>(V_0.u003cAddCastIfNeededu003eb__0)); if (V_2 == null) { V_7 = V_1.get_MethodExpression().get_Target(); if (V_7.get_CodeNodeType() != 26 || (object)(V_7 as VariableReferenceExpression).get_Variable() != (object)V_0.variable) { this.AddCastIfNeeded(V_7, V_0.variable); return; } V_8 = V_1.get_MethodExpression().get_Method().get_DeclaringType(); if (!this.IsSubtype(V_8, V_0.variable.get_VariableType())) { V_1.get_MethodExpression().set_Target(new ExplicitCastExpression(V_7, V_8, null)); return; } } else { V_5 = V_1.get_Arguments().IndexOf(V_2); V_6 = V_1.get_MethodExpression().get_Method().get_Parameters().get_Item(V_5).ResolveParameterType(V_1.get_MethodExpression().get_Method()); if (!this.IsSubtype(V_6, V_0.variable.get_VariableType())) { if (V_6.get_IsPrimitive() && V_0.variable.get_VariableType().get_IsPrimitive() && String.op_Equality(ExpressionTypeInferer.GetContainingType(V_6.Resolve(), V_0.variable.get_VariableType().Resolve()).get_FullName(), V_6.get_FullName())) { return; } V_1.get_Arguments().set_Item(V_5, new ExplicitCastExpression(V_2, V_6, null)); return; } } } else { if (V_4 != 24) { return; } V_3 = useExpression as BinaryExpression; if (V_3.get_Operator() == 26 && V_3.get_Right().get_CodeNodeType() == 26 && (object)(V_3.get_Right() as VariableReferenceExpression).get_Variable() == (object)V_0.variable) { V_9 = V_3.get_Left().get_ExpressionType(); if (!this.IsSubtype(V_9, V_0.variable.get_VariableType())) { V_3.set_Right(new ExplicitCastExpression(V_3.get_Right(), V_9, null)); } } } return; }
private void CreateGraph(IEnumerable <IntervalConstruct> intervals) { V_0 = intervals.GetEnumerator(); try { while (V_0.MoveNext()) { V_1 = V_0.get_Current(); V_2 = V_1.get_Children().GetEnumerator(); try { while (V_2.MoveNext()) { V_3 = (ILogicalConstruct)V_2.get_Current(); V_4 = this.GetNodeSuccessors(V_3).GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); if (!this.nodeToInterval.ContainsKey(V_5) || this.nodeToInterval.get_Item(V_5) == V_1) { continue; } V_6 = this.nodeToInterval.get_Item(V_5); if (V_1.get_SameParentSuccessors().Contains(V_6)) { continue; } dummyVar0 = V_1.get_SameParentSuccessors().Add(V_6); dummyVar1 = V_6.get_SameParentPredecessors().Add(V_1); } } finally { if (V_4 != null) { V_4.Dispose(); } } } } finally { ((IDisposable)V_2).Dispose(); } } } finally { if (V_0 != null) { V_0.Dispose(); } } return; }
public List <FileViewModel> GetWebFiles(string folder) { stackVariable1 = new string[3]; stackVariable1[0] = "wwwroot"; stackVariable1[1] = "content"; stackVariable1[2] = folder; V_0 = CommonHelper.GetFullPath(stackVariable1); this.CreateDirectoryIfNotExist(V_0); V_1 = new List <FileViewModel>(); V_2 = Directory.GetDirectories(V_0, "*", 1); V_3 = 0; while (V_3 < (int)V_2.Length) { V_4 = new DirectoryInfo(V_2[V_3]); V_5 = V_4.ToString().Replace("\\", "/").Replace("wwwroot", string.Empty); stackVariable34 = V_4.GetFiles(); stackVariable35 = FileRepository.u003cu003ec.u003cu003e9__31_0; if (stackVariable35 == null) { dummyVar0 = stackVariable35; stackVariable35 = new Func <FileInfo, DateTime>(FileRepository.u003cu003ec.u003cu003e9.u003cGetWebFilesu003eb__31_0); FileRepository.u003cu003ec.u003cu003e9__31_0 = stackVariable35; } V_6 = ((IEnumerable <FileInfo>)stackVariable34).OrderByDescending <FileInfo, DateTime>(stackVariable35).GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); stackVariable42 = V_1; stackVariable43 = new FileViewModel(); stackVariable43.set_FolderName(V_4.get_Name()); stackVariable43.set_FileFolder(V_5); if (V_7.get_Name().LastIndexOf('.') >= 0) { stackVariable59 = V_7.get_Name().Substring(0, V_7.get_Name().LastIndexOf('.')); } else { stackVariable59 = V_7.get_Name(); } stackVariable43.set_Filename(stackVariable59); stackVariable43.set_Extension(V_7.get_Extension()); stackVariable42.Add(stackVariable43); } } finally { if (V_6 != null) { V_6.Dispose(); } } V_3 = V_3 + 1; } return(V_1); }
public static void LogException(Exception ex) { stackVariable0 = Environment.get_CurrentDirectory(); V_2 = DateTime.get_Now(); V_0 = string.Concat(stackVariable0, "/logs/", V_2.ToString("dd-MM-yyyy")); if (!string.IsNullOrEmpty(V_0) && !Directory.Exists(V_0)) { dummyVar0 = Directory.CreateDirectory(V_0); } V_1 = string.Concat(V_0, "/log_exceptions.json"); try { V_3 = new FileInfo(V_1); V_4 = "[]"; if (V_3.get_Exists()) { V_6 = V_3.OpenText(); try { V_4 = V_6.ReadToEnd(); } finally { if (V_6 != null) { ((IDisposable)V_6).Dispose(); } } File.Delete(V_1); } stackVariable18 = JArray.Parse(V_4); stackVariable19 = new JObject(); stackVariable19.Add(new JProperty("CreatedDateTime", (object)DateTime.get_UtcNow())); stackVariable19.Add(new JProperty("Details", JObject.FromObject(ex))); stackVariable18.Add(stackVariable19); V_4 = stackVariable18.ToString(); V_7 = File.CreateText(V_1); try { V_7.WriteLine(V_4); } finally { if (V_7 != null) { ((IDisposable)V_7).Dispose(); } } } catch { dummyVar1 = exception_0; Console.Write(string.Concat("Cannot write log file ", V_1)); } return; }
private bool TryMatchInternal(StatementCollection statements, int startIndex, out Statement result, out int replacedStatementsCount, out VariableDefinition xVariableDef) { result = null; replacedStatementsCount = 0; xVariableDef = null; if (statements.get_Count() < 1 || statements.get_Item(startIndex).get_CodeNodeType() != 5) { return(false); } V_2 = (statements.get_Item(startIndex) as ExpressionStatement).get_Expression() as BinaryExpression; if (!this.IsAssignToVariableExpression(V_2, out V_0) || !this.methodContext.get_StackData().get_VariableToDefineUseInfo().ContainsKey(V_0.Resolve())) { return(false); } V_1 = V_2.get_Right(); V_3 = startIndex + 1; while (V_3 < statements.get_Count()) { V_5 = statements.get_Item(V_3); if (V_5.get_CodeNodeType() != 5 || !String.IsNullOrEmpty(V_5.get_Label())) { break; } V_6 = (V_5 as ExpressionStatement).get_Expression() as BinaryExpression; if (V_6 == null || !V_6.get_IsAssignmentExpression() || V_6.get_Right().get_CodeNodeType() != 26 || (object)(V_6.get_Right() as VariableReferenceExpression).get_Variable() != (object)V_0) { break; } if (V_6.get_Left().get_CodeNodeType() == 30) { return(false); } if (V_6.get_Left().get_CodeNodeType() == 26) { V_7 = (V_6.get_Left() as VariableReferenceExpression).get_Variable().Resolve(); if (V_7 == V_0) { return(false); } dummyVar0 = this.variablesToRemove.Add(V_7); } V_1 = new BinaryExpression(26, V_6.get_Left(), V_1, this.typeSystem, null, false); V_3 = V_3 + 1; } replacedStatementsCount = V_3 - startIndex; if (replacedStatementsCount == 1) { return(false); } V_4 = new BinaryExpression(26, new VariableReferenceExpression(V_0, null), V_1, this.typeSystem, null, false); stackVariable66 = new ExpressionStatement(V_4); stackVariable66.set_Parent(statements.get_Item(startIndex).get_Parent()); result = stackVariable66; xVariableDef = V_0.Resolve(); return(true); }
protected override string ToString(string constructName, HashSet <CFGBlockLogicalConstruct> printedCFGBlocks, LogicalFlowBuilderContext context) { V_0 = new StringBuilder(this.GetType().get_Name()); dummyVar0 = V_0.AppendLine(); dummyVar1 = V_0.AppendLine("{"); this.IndentAndAppendString(V_0, (this.get_Entry() as LogicalConstructBase).ToString(context)); dummyVar2 = V_0.AppendLine(); if (this.get_DefaultCase() != null) { this.IndentAndAppendString(V_0, this.get_DefaultCase().ToString(context)); } V_1 = this.get_ConditionCases(); V_2 = 0; while (V_2 < (int)V_1.Length) { this.IndentAndAppendString(V_0, V_1[V_2].ToString(context)); V_2 = V_2 + 1; } V_4 = this.get_NonDominatedCFGSuccessors().GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); dummyVar3 = V_0.Append("\tCase"); V_6 = V_5.get_Key().GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); dummyVar4 = V_0.Append(" ").Append(V_7); } } finally { ((IDisposable)V_6).Dispose(); } dummyVar5 = V_0.Append(": ").AppendLine(this.NodeILOffset(context, V_5.get_Value())); } } finally { ((IDisposable)V_4).Dispose(); } if (this.get_DefaultCase() == null) { dummyVar6 = V_0.Append("\tDefault: ").AppendLine(this.NodeILOffset(context, this.get_DefaultCFGSuccessor())); } dummyVar7 = V_0.Append("\tFollowNode: ").AppendLine(this.NodeILOffset(context, this.get_CFGFollowNode())); dummyVar8 = V_0.AppendLine("}"); printedCFGBlocks.UnionWith(this.get_CFGBlocks()); return(V_0.ToString()); }
private void GenerateStackData() { V_0 = new StackUsageData(); V_1 = this.instructionOffsetToUsedInstructionsMap.GetEnumerator(); try { while (V_1.MoveNext()) { V_2 = V_1.get_Current(); V_3 = new List<VariableDefinition>(V_2.get_Value().Select<int, VariableDefinition>(new Func<int, VariableDefinition>(this.u003cGenerateStackDatau003eb__25_0))); V_0.get_InstructionOffsetToUsedStackVariablesMap().set_Item(V_2.get_Key(), V_3); V_4 = V_3.GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); this.GetDefineUseInfo(V_0, V_5).get_UsedAt().Add(V_2.get_Key()); } } finally { ((IDisposable)V_4).Dispose(); } } } finally { ((IDisposable)V_1).Dispose(); } V_6 = this.instructionOffsetToVariableDefinitionMap.GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); if (V_7.get_Key() >= 0) { V_0.get_InstructionOffsetToAssignedVariableMap().Add(V_7.get_Key(), V_7.get_Value()); dummyVar0 = this.GetDefineUseInfo(V_0, V_7.get_Value()).get_DefinedAt().Add(V_7.get_Key()); } else { V_0.get_ExceptionHandlerStartToExceptionVariableMap().Add(-V_7.get_Key(), V_7.get_Value()); } } } finally { ((IDisposable)V_6).Dispose(); } this.methodContext.set_StackData(V_0); return; }
private void MarkOptimizationAndCaseBlocks(InstructionBlock block, RemoveCompilerOptimizationsStep.SwitchData data) { V_0 = new Queue <InstructionBlock>(); V_1 = new HashSet <int>(); V_2 = block.get_Successors(); V_3 = 0; while (V_3 < (int)V_2.Length) { V_0.Enqueue(V_2[V_3]); V_3 = V_3 + 1; } while (V_0.get_Count() > 0) { V_5 = V_0.Dequeue(); dummyVar0 = V_1.Add(V_5.get_First().get_Offset()); if (!this.IsOptimizationBlock(this.blockExpressions.get_Item(V_5.get_First().get_Offset()), data.get_OptimizationVariable())) { if (!this.IsCaseBlock(this.blockExpressions.get_Item(V_5.get_First().get_Offset()), data.get_SwitchExpression()) && !this.IsNullCaseBlock(this.blockExpressions.get_Item(V_5.get_First().get_Offset()), data.get_SwitchExpression())) { continue; } this.switchBlocksToCasesMap.get_Item(block.get_First().get_Offset()).Add(V_5.get_First().get_Offset()); V_8 = V_5.get_Successors()[1]; if (this.IsEmptyStringCaseBlock(this.blockExpressions.get_Item(V_8.get_First().get_Offset()), data.get_SwitchExpression())) { V_5.set_Last(V_8.get_Last()); V_5.set_Successors(V_8.get_Successors()); V_9 = this.blockExpressions.get_Item(V_5.get_First().get_Offset()).get_Item(0) as BinaryExpression; V_9.set_Right(new LiteralExpression("", this.methodContext.get_Method().get_Module().get_TypeSystem(), null)); V_10 = this.blockExpressions.get_Item(V_8.get_First().get_Offset()).get_Item(0).get_UnderlyingSameMethodInstructions(); V_9 = V_9.CloneAndAttachInstructions(V_10) as BinaryExpression; this.blockExpressions.get_Item(V_5.get_First().get_Offset()).set_Item(0, new UnaryExpression(11, V_9, null)); this.blocksToBeRemoved.Add(V_8.get_First().get_Offset()); } dummyVar1 = this.MarkSecondSuccessorForRemovalIfItIsUnconditionalJump(V_5); } else { V_6 = V_5.get_Successors()[0]; if (!V_1.Contains(V_6.get_First().get_Offset())) { V_0.Enqueue(V_6); } V_7 = this.MarkSecondSuccessorForRemovalIfItIsUnconditionalJump(V_5); if (!V_1.Contains(V_7.get_First().get_Offset()) && this.IsOptimizationBlock(this.blockExpressions.get_Item(V_5.get_First().get_Offset()), data.get_OptimizationVariable())) { V_0.Enqueue(V_7); } this.blocksToBeRemoved.Add(V_5.get_First().get_Offset()); } } return; }
private void AddBlocks(List <ILBlock.InstructionPair> allBranches) { V_0 = allBranches.get_Count() - 1; while (V_0 >= 0) { V_1 = allBranches.get_Item(V_0).get_FirstInstruction().get_Offset() + allBranches.get_Item(V_0).get_FirstInstruction().GetSize(); V_2 = allBranches.get_Item(V_0).get_SecondInstruction().get_Offset(); if (V_2 < V_1) { V_3 = null; V_4 = allBranches.get_Item(V_0).get_SecondInstruction().get_Previous(); if (V_4 != null && !OpCodeInfo.IsUnconditionalBranch(V_4.get_OpCode())) { V_3 = allBranches.get_Item(V_0).get_SecondInstruction(); } V_5 = false; V_6 = allBranches.GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); if (V_7.get_FirstInstruction().get_Offset() >= V_2 && V_7.get_FirstInstruction().get_Offset() < V_1 || V_2 > V_7.get_SecondInstruction().get_Offset() || V_7.get_SecondInstruction().get_Offset() >= V_1) { continue; } if (V_3 != null) { if ((object)V_7.get_SecondInstruction() == (object)V_3) { continue; } V_5 = true; } else { V_3 = V_7.get_SecondInstruction(); } } } finally { ((IDisposable)V_6).Dispose(); } if (!V_5) { dummyVar0 = this.AddNestedBlock(new ILBlock(1, V_2, V_1, V_3)); } } V_0 = V_0 - 1; } return; }
private static ICollection<TypeReference> GetAttributeNamedArgsUsedTypes(TypeDefinition attributeType, Collection<CustomAttributeNamedArgument> namedArguments, bool fields) { V_0 = new List<TypeReference>(); V_1 = 0; while (V_1 < namedArguments.get_Count()) { if (attributeType != null) { if (fields) { stackVariable19 = attributeType.get_Fields(); } else { stackVariable19 = attributeType.get_Properties(); } V_2 = null; V_3 = stackVariable19; V_4 = attributeType; do { V_2 = Utilities.FindMemberArgumentRefersTo(V_3, namedArguments.get_Item(V_1)); if (V_4.get_BaseType() == null) { break; } V_4 = V_4.get_BaseType().Resolve(); if (V_4 == null) { break; } if (fields) { stackVariable40 = V_4.get_Fields(); } else { stackVariable40 = V_4.get_Properties(); } V_3 = stackVariable40; } while (V_2 == null); if (V_2 != null) { V_0.Add(V_2.get_DeclaringType()); } } V_6 = namedArguments.get_Item(V_1); V_0.AddRange(AttributesUtilities.GetAttributeArgumentValueUsedTypes(V_6.get_Argument())); V_1 = V_1 + 1; } return V_0; }
private void InlineAssignmentInNextExpression() { V_0 = this.methodContext.get_Expressions().get_BlockExpressions().GetEnumerator(); try { while (V_0.MoveNext()) { V_1 = V_0.get_Current(); V_2 = V_1.get_Value(); V_3 = new Boolean[V_2.get_Count()]; V_4 = V_2.get_Count() - 2; V_5 = V_4 + 1; while (V_4 >= 0) { V_6 = V_2.get_Item(V_4) as BinaryExpression; if (V_6 == null || !V_6.get_IsAssignmentExpression() || V_6.get_Left().get_CodeNodeType() != 26) { V_5 = V_4; } else { V_7 = (V_6.get_Left() as VariableReferenceExpression).get_Variable().Resolve(); if (this.variablesToInline.Contains(V_7)) { V_8 = V_6.get_Right(); if (!this.inliner.TryInlineVariable(V_7, V_8, V_2.get_Item(V_5), true, out V_9)) { V_5 = V_4; } else { this.FixContextAfterInlining(V_7); dummyVar0 = this.variablesToInline.Remove(V_7); V_2.set_Item(V_5, (Expression)V_9); V_3[V_4] = true; } } else { V_5 = V_4; } } V_4 = V_4 - 1; } this.FastRemoveExpressions(V_2, V_3); } } finally { ((IDisposable)V_0).Dispose(); } return; }
private HashSet <ILogicalConstruct> GetLogicalConstructsInRange(BlockRange blockRange, out ILogicalConstruct theCommonParent) { V_0 = new HashSet <ILogicalConstruct>(); V_1 = new HashSet <ISingleEntrySubGraph>(); V_2 = blockRange.Start.get_First().get_Offset(); V_3 = blockRange.End.get_First().get_Offset(); V_5 = 0; while (V_5 < (int)this.context.get_CFG().get_Blocks().Length) { V_6 = this.context.get_CFG().get_Blocks()[V_5]; if (V_6.get_First().get_Offset() >= V_2 && V_6.get_First().get_Offset() <= V_3) { V_7 = this.context.get_CFGBlockToLogicalConstructMap().get_Item(V_6); V_8 = 0; while (V_8 < (int)V_7.Length) { dummyVar0 = V_1.Add((ILogicalConstruct)V_7[V_8].get_Parent()); dummyVar1 = V_0.Add(V_7[V_8]); V_8 = V_8 + 1; } } V_5 = V_5 + 1; } if (V_1.get_Count() == 1) { theCommonParent = (ILogicalConstruct)V_1.ToArray <ISingleEntrySubGraph>()[0]; return(V_0); } theCommonParent = (ILogicalConstruct)LogicalFlowUtilities.FindFirstCommonParent(V_1); V_4 = new HashSet <ILogicalConstruct>(); V_9 = V_0.GetEnumerator(); try { while (V_9.MoveNext()) { dummyVar2 = LogicalFlowUtilities.TryGetParentConstructWithGivenParent(V_9.get_Current(), theCommonParent, out V_10); dummyVar3 = V_4.Add(V_10); } } finally { ((IDisposable)V_9).Dispose(); } if (theCommonParent as ExceptionHandlingLogicalConstruct != null) { V_4.Clear(); dummyVar4 = V_4.Add(theCommonParent); theCommonParent = theCommonParent.get_Parent() as ILogicalConstruct; } return(V_4); }
private Dictionary <string, List <string> > GetModuleCollisionTypesData(ModuleDefinition module, ILanguage language) { V_0 = new Dictionary <string, List <string> >(language.get_IdentifierComparer()); V_1 = new Dictionary <string, string>(language.get_IdentifierComparer()); this.UpdateCollisionTypesDataWithTypes(V_0, V_1, module.get_Types()); V_2 = this.GetModuleDependsOnAnalysis(module); if (Mono.Cecil.AssemblyResolver.Extensions.IsReferenceAssembly(module)) { stackVariable16 = 1; } else { stackVariable16 = 0; } V_3 = stackVariable16; V_4 = V_2.get_Keys().GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); V_6 = module.get_AssemblyResolver().Resolve(V_5, "", ModuleDefinitionExtensions.GetModuleArchitecture(module), V_3, true); if (V_6 == null) { this.UpdateCollisionTypesDataWithTypes(V_0, V_1, V_2.get_Item(V_5)); } else { V_7 = V_6.get_Modules().GetEnumerator(); try { while (V_7.MoveNext()) { V_8 = V_7.get_Current(); this.UpdateCollisionTypesDataWithTypes(V_0, V_1, V_8.get_Types()); } } finally { V_7.Dispose(); } } } } finally { ((IDisposable)V_4).Dispose(); } return(V_0); }
private string RemoveLeadingLineWhitespaces(string text) { V_0 = new StringBuilder(); V_1 = new List <string>(); V_2 = 0x7fffffff; V_3 = new StringReader(text); try { V_4 = V_3.ReadLine(); while (V_4 != null) { V_5 = 0; while (V_5 < V_4.get_Length()) { if (Char.IsWhiteSpace(V_4.get_Chars(V_5))) { V_5 = V_5 + 1; } else { V_2 = Math.Min(V_2, V_5); V_1.Add(V_4); break; } } V_4 = V_3.ReadLine(); } } finally { if (V_3 != null) { ((IDisposable)V_3).Dispose(); } } V_6 = V_1.GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); dummyVar0 = V_0.AppendLine(V_7.Substring(V_2)); } } finally { ((IDisposable)V_6).Dispose(); } return(V_0.ToString()); }
private bool CheckLoopBody(BlockStatement loopBody, VariableReference v0Variable, VariableReference v1Variable, string operationName) { if (loopBody.get_Statements().get_Count() != 3) { return(false); } if (!loopBody.get_Statements().get_Item(0).IsAssignmentStatement()) { return(false); } V_0 = (loopBody.get_Statements().get_Item(0) as ExpressionStatement).get_Expression() as BinaryExpression; if (V_0.get_Left().get_CodeNodeType() != 26 || V_0.get_Right().get_CodeNodeType() != 26 || (object)(V_0.get_Right() as VariableReferenceExpression).get_Variable() != (object)v0Variable) { return(false); } if ((object)(V_0.get_Left() as VariableReferenceExpression).get_Variable() != (object)v1Variable) { return(false); } if (!this.IsDelegateOperationStatement(loopBody.get_Statements().get_Item(1), operationName, out V_1, out V_2) || V_1.get_CodeNodeType() != 26 || V_2.get_CodeNodeType() != 26 || (object)(V_2 as VariableReferenceExpression).get_Variable() != (object)v1Variable) { return(false); } V_3 = (V_1 as VariableReferenceExpression).get_Variable(); if (!loopBody.get_Statements().get_Item(2).IsAssignmentStatement()) { return(false); } V_4 = (loopBody.get_Statements().get_Item(2) as ExpressionStatement).get_Expression() as BinaryExpression; if (V_4.get_Left().get_CodeNodeType() != 26 || (object)(V_4.get_Left() as VariableReferenceExpression).get_Variable() != (object)v0Variable || V_4.get_Right().get_CodeNodeType() != 19) { return(false); } V_5 = V_4.get_Right() as MethodInvocationExpression; if (String.op_Inequality(V_5.get_MethodExpression().get_Method().get_DeclaringType().get_FullName(), "System.Threading.Interlocked") || V_5.get_MethodExpression().get_Method().get_HasThis() || String.op_Inequality(V_5.get_MethodExpression().get_Method().get_Name(), "CompareExchange") || V_5.get_Arguments().get_Count() != 3 || V_5.get_Arguments().get_Item(0).get_CodeNodeType() != 23) { return(false); } V_6 = V_5.get_Arguments().get_Item(0) as UnaryExpression; if (V_6.get_Operator() != 7 || V_6.get_Operand().get_CodeNodeType() != 30 || (object)(V_6.get_Operand() as FieldReferenceExpression).get_Field().Resolve() != (object)this.eventField) { return(false); } if (V_5.get_Arguments().get_Item(1).get_CodeNodeType() == 26 && (object)(V_5.get_Arguments().get_Item(1) as VariableReferenceExpression).get_Variable() == (object)V_3 && V_5.get_Arguments().get_Item(2).get_CodeNodeType() == 26 && (object)(V_5.get_Arguments().get_Item(2) as VariableReferenceExpression).get_Variable() == (object)v1Variable) { return(true); } return(false); }
public override ICodeNode VisitMethodReferenceExpression(MethodReferenceExpression node) { V_0 = node.get_Method().Resolve(); V_1 = this.context.get_TypeContext().get_CurrentType(); if (V_0 == null || (object)V_0.get_DeclaringType() != (object)V_1 && !V_0.get_DeclaringType().IsNestedIn(V_1)) { return(this.VisitMethodReferenceExpression(node)); } if (V_0.get_IsGetter() || V_0.get_IsSetter() || !V_0.IsCompilerGenerated(true) && !this.CheckTypeForCompilerGeneratedAttribute(V_0.get_DeclaringType())) { return(this.VisitMethodReferenceExpression(node)); } V_2 = null; if (V_0.get_Body() != null) { V_5 = this.CreateDecompilationContext(V_0); V_2 = V_0.get_Body().DecompileLambda(this.context.get_Language(), V_5); if (V_2.get_Statements().get_Count() == 1 && V_2.get_Statements().get_Item(0).get_CodeNodeType() == 5 && (V_2.get_Statements().get_Item(0) as ExpressionStatement).get_Expression().get_CodeNodeType() == 57) { V_6 = (V_2.get_Statements().get_Item(0) as ExpressionStatement).get_Expression() as ReturnExpression; V_7 = new ShortFormReturnExpression(V_6.get_Value(), V_6.get_MappedInstructions()); V_2 = new BlockStatement(); V_2.get_Statements().Add(new ExpressionStatement(V_7)); } this.context.get_MethodContext().get_VariableDefinitionToNameMap().AddRange <VariableDefinition, string>(V_5.get_MethodContext().get_VariableDefinitionToNameMap()); this.context.get_MethodContext().get_VariableNamesCollection().UnionWith(V_5.get_MethodContext().get_VariableNamesCollection()); this.context.get_MethodContext().AddInnerMethodParametersToContext(V_5.get_MethodContext()); this.context.get_MethodContext().get_GotoStatements().AddRange(V_5.get_MethodContext().get_GotoStatements()); this.context.get_MethodContext().get_GotoLabels().AddRange <string, Statement>(V_5.get_MethodContext().get_GotoLabels()); } V_3 = new ExpressionCollection(); V_4 = LambdaExpressionsHelper.HasAnonymousParameter(V_0.get_Parameters()); V_8 = V_0.get_Parameters().GetEnumerator(); try { while (V_8.MoveNext()) { V_9 = V_8.get_Current(); V_3.Add(new LambdaParameterExpression(V_9, !V_4, null)); } } finally { V_8.Dispose(); } return(new LambdaExpression(V_3, V_2, V_0.IsAsync(), V_0.IsFunction(), node.get_Method().get_Parameters(), false, node.get_MappedInstructions())); }
public BlockStatement Process(DecompilationContext context, BlockStatement body) { V_0 = new HashSet <Instruction>(body.get_UnderlyingSameMethodInstructions()); if (context.get_MethodContext().get_IsMethodBodyChanged()) { context.get_MethodContext().get_Method().RefreshBody(); context.get_MethodContext().set_IsMethodBodyChanged(false); } V_1 = new List <Instruction>(); V_2 = context.get_MethodContext().get_Method().get_Body().get_Instructions().GetEnumerator(); try { while (V_2.MoveNext()) { V_3 = V_2.get_Current(); if (V_0.Contains(V_3)) { continue; } V_1.Add(V_3); } } finally { V_2.Dispose(); } if (V_1.get_Count() > 0) { V_4 = new StringBuilder("Found unmapped instructions.\n"); V_5 = V_1.GetEnumerator(); try { while (V_5.MoveNext()) { V_6 = V_5.get_Current(); dummyVar0 = V_4.AppendLine(V_6.ToString()); } } finally { ((IDisposable)V_5).Dispose(); } throw new Exception(V_4.ToString()); } return(body); }
private void RemoveUnreachableBlocks() { V_0 = new HashSet <InstructionBlock>(); V_1 = this.theCFG.get_Blocks(); V_2 = 0; while (V_2 < (int)V_1.Length) { V_3 = V_1[V_2]; if (!this.reachableBlocks.Contains(V_3)) { V_3.set_Successors(new InstructionBlock[0]); dummyVar0 = V_0.Add(V_3); } V_2 = V_2 + 1; } if (V_0.get_Count() > 0) { this.decompilationContext.get_MethodContext().set_IsMethodBodyChanged(true); } V_4 = 0; while (V_4 < this.theCFG.get_RawExceptionHandlers().get_Count()) { V_5 = this.theCFG.get_RawExceptionHandlers().get_Item(V_4); if (V_0.Contains(this.theCFG.get_InstructionToBlockMapping().get_Item(V_5.get_TryStart().get_Offset()))) { stackVariable54 = V_4; V_4 = stackVariable54 - 1; this.theCFG.get_RawExceptionHandlers().RemoveAt(stackVariable54); } V_4 = V_4 + 1; } V_6 = V_0.GetEnumerator(); try { while (V_6.MoveNext()) { V_7 = V_6.get_Current(); this.theCFG.RemoveBlockAt(V_7.get_Index()); } } finally { ((IDisposable)V_6).Dispose(); } return; }
private bool IsThreadSafeAutoImplOperation(MethodDefinition methodDef, string operationName) { if (!this.CheckMethodAndDecompile(methodDef, out V_0) || V_0.get_Statements().get_Count() != 3) { return(false); } V_1 = null; V_2 = null; if (!V_0.get_Statements().get_Item(0).IsAssignmentStatement()) { return(false); } V_3 = (V_0.get_Statements().get_Item(0) as ExpressionStatement).get_Expression() as BinaryExpression; if (V_3.get_Left().get_CodeNodeType() != 26 || V_3.get_Right().get_CodeNodeType() != 30 || (object)(V_3.get_Right() as FieldReferenceExpression).get_Field().Resolve() != (object)this.eventField) { return(false); } V_1 = (V_3.get_Left() as VariableReferenceExpression).get_Variable(); if (V_0.get_Statements().get_Item(1).get_CodeNodeType() != 8 || V_0.get_Statements().get_Item(2).get_CodeNodeType() != 5 || (V_0.get_Statements().get_Item(2) as ExpressionStatement).get_Expression().get_CodeNodeType() != 57) { return(false); } V_4 = V_0.get_Statements().get_Item(1) as DoWhileStatement; V_5 = V_4.get_Condition(); if (V_5.get_CodeNodeType() == 23 && (V_5 as UnaryExpression).get_Operator() == 11) { V_5 = (V_5 as UnaryExpression).get_Operand(); } if (V_5.get_CodeNodeType() != 24) { return(false); } stackVariable78 = V_5 as BinaryExpression; V_6 = stackVariable78.get_Left() as ExplicitCastExpression; V_7 = stackVariable78.get_Right() as ExplicitCastExpression; if (stackVariable78.get_Operator() != 10 || V_6 == null || String.op_Inequality(V_6.get_TargetType().get_Name(), "Object") || V_6.get_Expression().get_CodeNodeType() != 26 || V_7 == null || V_7.get_Expression().get_CodeNodeType() != 26 || String.op_Inequality(V_7.get_TargetType().get_Name(), "Object")) { return(false); } if ((object)(V_6.get_Expression() as VariableReferenceExpression).get_Variable() != (object)V_1) { return(false); } V_2 = (V_7.get_Expression() as VariableReferenceExpression).get_Variable(); return(this.CheckLoopBody(V_4.get_Body(), V_1, V_2, operationName)); }