void EvaluateInstruction(Instruction instruction, MetaMidRepresentationOperationFactory operationFactory, HashSet <int> labelList, ClosureEntities closureEntities) { var opcodeStr = instruction.OpCode.ToString(); var offset = 0; if (instruction.Operand is Instruction) { offset = ((Instruction)(instruction.Operand)).Offset; } if (labelList.Contains(instruction.Offset)) { operationFactory.SetLabel(instruction.Offset); } if (operationFactory.SkipInstruction(instruction.Offset)) { return; } var opcodeValue = instruction.OpCode.Value; operationFactory.AddCommentInstruction(instruction.ToString()); if (HandleCalls(instruction, operationFactory, opcodeValue)) { return; } if (HandleStores(opcodeStr, instruction, operationFactory)) { return; } if (HandleLoads(opcodeStr, instruction, operationFactory, closureEntities)) { return; } if (HandleOperators(opcodeStr, operationFactory, instruction)) { return; } if (HandleBranching(opcodeStr, offset, operationFactory, instruction)) { return; } if (HandleBoxing(opcodeStr, offset, operationFactory, instruction)) { return; } if (HandleClassCast(operationFactory, instruction)) { return; } if (HandleIsInst(operationFactory, instruction)) { return; } if (HandleException(operationFactory, instruction)) { return; } if (HandleExtraInstructions(instruction, operationFactory, opcodeStr, closureEntities)) { return; } throw new InvalidOperationException($"Unknown instruction: {instruction}"); }