public void ReadProgram() { int fctId = 0; while (!Reader.IsOver()) { int idx = Reader.GetCounter(); int checkIndex = Reader.GetCounter() - (Defines.SIZE_INT * (FuncsIdx.Count + 1)); if (FuncsIdx.Contains(checkIndex)) { Output.OutputFunctionStart(idx - Defines.SIZE_INT * (FuncsIdx.Count + 1), fctId++, Reader.NextInt()); } else { OPCodes.Codes code = (OPCodes.Codes)Reader.NextInt(); List <string> args = ExtractArgs(code); Output.OutputInstruction(idx - Defines.SIZE_INT * (FuncsIdx.Count + 1), code, args); } } }