HalpAcpiPreSleep
VOID __fastcall HalpAcpiPreSleep(SLEEP_STATE_CONTEXT Context){
__int16 bf_0;
INT64 v2;
INT64 v3;
INT64 v4;
UINT64 SavedPerformanceCounter;
VOID *v6;
VOID *v7;
VOID *v8;
__int16 v9;
__int16 v10;
__int16 Input;
__int16 Output;
bf_0 = Context.bits._bf_0;
stru_140C49D5C.bits._bf_0 = Context.bits._bf_0;
LOBYTE(Context.bits._bf_0) = 1;
Input = 0;
Output = 0;
HalpTimerSwitchStallSource(*(INT64 *)&Context.bits._bf_0);
HalpTimerSavePerformanceCounter();
if( (HalpPlatformFlags & 4) != 0 )
HalpSetClockBeforeSleep(v3, v2, v4);
SavedPerformanceCounter = HalpTimerGetSavedPerformanceCounter();
KeSynchronizeTimeToQpc(SavedPerformanceCounter);
byte_140C4A108 = 1;
if( (bf_0 & 0x4000) != 0 )
HalpSaveDmaControllerState(v7, v6, v8);
if( HalpAcpiPmRegisterAvailable(PM1A_EVT_REGISTER) >= 0 )
{
HalpAcpiPmRegisterRead(PM1A_EVT_REGISTER, Fadt.pm1_evt_len >> 1, &Output, 2ui64, 0i64);
v9 = Output;
Input = Output;
if( HalpAcpiPmRegisterAvailable(PM1B_EVT_REGISTER) >= 0 )
{
HalpAcpiPmRegisterRead(PM1B_EVT_REGISTER, Fadt.pm1_evt_len >> 1, &Output, 2ui64, 0i64);
v9 = Output | Input;
Input |= Output;
}
if( (Fadt.flags & 0x40) == 0 )
{
if( *(&CmpDummyThreadEvent + 5761) )
v10 = v9 | 0x400;
else
v10 = v9 & 0xFBFF;
Input = v10;
}
HalpAcpiPmRegisterWrite(PM1A_EVT_REGISTER, Fadt.pm1_evt_len >> 1, &Input, 2ui64, 0i64);
if( HalpAcpiPmRegisterAvailable(PM1B_EVT_REGISTER) >= 0 )
HalpAcpiPmRegisterWrite(PM1B_EVT_REGISTER, Fadt.pm1_evt_len >> 1, &Input, 2ui64, 0i64);
HalpAcpiPmRegisterRead(PM1A_EVT_REGISTER, 0i64, &Output, 2ui64, 0i64);
Input = Output;
if( HalpAcpiPmRegisterAvailable(PM1B_EVT_REGISTER) >= 0 )
{
HalpAcpiPmRegisterRead(PM1B_EVT_REGISTER, 0i64, &Output, 2ui64, 0i64);
Input |= Output;
}
HalpAcpiPmRegisterWrite(PM1A_EVT_REGISTER, 0i64, &Input, 2ui64, 0i64);
if( HalpAcpiPmRegisterAvailable(PM1B_EVT_REGISTER) >= 0 )
HalpAcpiPmRegisterWrite(PM1B_EVT_REGISTER, 0i64, &Input, 2ui64, 0i64);
}
if( *(&CmpDummyThreadEvent + 5760) )
(*(void(**)(void))(qword_140C507B0 + 24))();
else(*(void(__fastcall **)(_QWORD))(qword_140C507B0 + 8))(0i64);
HalpPreserveNvsArea();
dword_140C49D0C = 2;
}Referenced by:
HaliAcpiSleep