private static int GetInstructionType(string input) { // Find start of instruction name after equal sign var instructionIndex = input.IndexOf("=") + 1; while (input[instructionIndex] == ' ') { instructionIndex++; } var instructionPart = input.Substring(instructionIndex, input.Length - instructionIndex); int endIndex; if (instructionPart.StartsWith("sub")) { // Parse sub number endIndex = instructionPart.IndexOf('('); return(int.Parse(instructionPart.Substring(3, endIndex - 3))); } endIndex = instructionPart.IndexOf('('); var instructionName = instructionPart.Substring(0, endIndex); if (RoutineMap.Values.Contains(instructionName)) { return(RoutineMap.First(x => x.Value == instructionName).Key); } return(-1); }