``` c (PSX) void CD_ExecuteReading(int param_1) { // Проверка статуса чтения CD if ((DAT_CD_READ_STATUS < 3) && (DAT_CD_READ_STATUS >= 0)) { return; } // Проверка глобального состояния системы if ((DWORD_80083938 == 6) || (DWORD_80083938 == 3)) { return; } // Проверка изменения состояния if (DWORD_800838b8 != DWORD_80083718) { DWORD_800838b8 = DWORD_80083718; FUN_EMPTY(); // Какая-то инициализация/сброс // Основная логика обработки состояний switch (DAT_CD_READ_STATUS) { case 3: case 5: case 8: case 10: // Проверка статуса привода byte driveStatus = DsStatus(); // Условие для смены статуса if ((driveStatus & 0x60) == 0 && (DWORD_80083718 - DWORD_800838b4) >= 0xB5) { DAT_CD_READ_STATUS = 2; FUN_8004a19c(); // Какая-то функция обработки // Дополнительные проверки статуса if (DAT_CD_READ_STATUS != 5) { if (DAT_CD_READ_STATUS < 6) { if (DAT_CD_READ_STATUS == 3) { FUN_80026d58(); // Обработка состояния 3 } } else { if (DAT_CD_READ_STATUS == 10) { DsSectorSeek(); // Поиск сектора } else if (DAT_CD_READ_STATUS == 12) { readCD_XA(); // Чтение XA-аудио } } } } break; case 5: // Специальная обработка для состояния 5 if (DsSystemStatus() == 1) { FUN_80026eec(); // Функция завершения } break; default: // Ничего не делаем для других состояний break; } } // Чтение сектора, если статус в диапазоне 0xC-0xF if ((DAT_CD_READ_STATUS >= 0xC) && (DAT_CD_READ_STATUS < 0x10)) { CD_SectorRead(param_1); } } ```