HaliAcpiMachineStateInit
int __fastcall HaliAcpiMachineStateInit(_BYTE *a1){
char v2;
NTSTATUS v3;
NTSTATUS *v4;
NTSTATUS(__fastcall *v5)(UINT64, INT64, INT64 *, INT64, INT64, INT64, INT32 *);
char v6;
int v7;
unsigned int v8;
__int64 v9;
__int64 v10;
int v11;
int v12;
unsigned int v13;
int v14;
int v15;
unsigned int v16;
__int64 v17;
__int64 v18;
char v19;
int v20;
unsigned int v21;
UINT64 OutputBufferLength;
__int128 InputBuffer;
__int64 v25;
v25 = 0i64;
v2 = 0;
InputBuffer = 0i64;
*(&CmpDummyThreadEvent + 2880) = 1;
v3 = HalpInterruptModel();
*v4 = v3;
if( a1[9] && !byte_140C49EF4 && !HalpIsXboxNanovisorPresent() )
v2 = 1;
v5 = HaliAcpiSleep;
if( *a1 )
{
v17 = a1[2] & 0xF;
*((_QWORD *)&InputBuffer + 1) = HaliAcpiSleep;
v18 = a1[1] & 0xF;
BYTE4(InputBuffer) = 1;
v25 = v18 | (16 * (v17 | 0x510));
LODWORD(OutputBufferLength) = 0;
ZwPowerInformation(SystemPowerStateHandler, &InputBuffer, 0x18ui64, 0i64, OutputBufferLength);
if( byte_140C4A0F9 )
HalpHvSetSleepStateProperty(1ui64, a1[1], a1[2]);
v5 = HaliAcpiSleep;
}
if( qword_140C49D38 )
{
if( a1[3] )
{
v19 = a1[4];
*((_QWORD *)&InputBuffer + 1) = HaliAcpiSleep;
v20 = a1[5] & 0xF;
LODWORD(InputBuffer) = 1;
BYTE4(InputBuffer) = 1;
v21 = v19 & 0xF | (16 * (v20 | 0x520));
if( !byte_140C4A0F9 )
v21 |= 0x12000u;
v25 = v21;
LODWORD(OutputBufferLength) = 0;
LODWORD(v5) = ZwPowerInformation(SystemPowerStateHandler, &InputBuffer, 0x18ui64, 0i64, OutputBufferLength);
if( byte_140C4A0F9 )
LODWORD(v5) = HalpHvSetSleepStateProperty(2ui64, a1[4], a1[5]);
}
if( a1[6] )
{
v6 = a1[7];
*((_QWORD *)&InputBuffer + 1) = HaliAcpiSleep;
v7 = a1[8] & 0xF;
LODWORD(InputBuffer) = 2;
BYTE4(InputBuffer) = 1;
v8 = v6 & 0xF | (16 * (v7 | 0x530));
if( !byte_140C4A0F9 )
v8 |= 0x32000u;
v25 = v8;
LODWORD(OutputBufferLength) = 0;
LODWORD(v5) = ZwPowerInformation(SystemPowerStateHandler, &InputBuffer, 0x18ui64, 0i64, OutputBufferLength);
if( byte_140C4A0F9 )
LODWORD(v5) = HalpHvSetSleepStateProperty(3ui64, a1[7], a1[8]);
if( a1[6] )
{
if( !v2 )
goto LABEL_20;
v9 = a1[8] & 0xF;
BYTE4(InputBuffer) = LOBYTE(Fadt.flags) >> 7;
*((_QWORD *)&InputBuffer + 1) = HaliAcpiSleep;
v10 = a1[7] & 0xF;
LODWORD(InputBuffer) = 6;
LODWORD(OutputBufferLength) = 0;
v25 = v10 | (16 * (v9 | 0x3740));
LODWORD(v5) = ZwPowerInformation(SystemPowerStateHandler, &InputBuffer, 0x18ui64, 0i64, OutputBufferLength);
}
}
}
if( v2 )
{
v11 = a1[10] & 0xF;
BYTE4(InputBuffer) = LOBYTE(Fadt.flags) >> 7;
v12 = a1[11] & 0xF;
LODWORD(InputBuffer) = 3;
*((_QWORD *)&InputBuffer + 1) = HaliAcpiSleep;
v13 = v11 | (16 * (v12 | 0x540));
if( !byte_140C4A0F9 )
v13 |= 0x10000u;
v25 = v13;
LODWORD(OutputBufferLength) = 0;
LODWORD(v5) = ZwPowerInformation(SystemPowerStateHandler, &InputBuffer, 0x18ui64, 0i64, OutputBufferLength);
}
LABEL_20:
if( !a1[12] )
{
if( !byte_140C49D08 )
goto LABEL_35;
goto LABEL_34;
}
if( (HalpPlatformFlags & 1) == 0 )
{
LABEL_34:
dword_140C4AD1C = 0;
v25 = 0i64;
LODWORD(OutputBufferLength) = 0;
*(_QWORD *)&InputBuffer = 4i64;
*((_QWORD *)&InputBuffer + 1) = HalpLegacyShutdown;
LODWORD(v5) = ZwPowerInformation(SystemPowerStateHandler, &InputBuffer, 0x18ui64, 0i64, OutputBufferLength);
goto LABEL_35;
}
v14 = a1[13] & 0xF;
v15 = a1[14] & 0xF;
LODWORD(InputBuffer) = 4;
BYTE4(InputBuffer) = 0;
v16 = v14 | (16 * (v15 | 0x850));
*((_QWORD *)&InputBuffer + 1) = HaliAcpiSleep;
v25 = v16;
dword_140C4AD1C = v16;
LODWORD(OutputBufferLength) = 0;
LODWORD(v5) = ZwPowerInformation(SystemPowerStateHandler, &InputBuffer, 0x18ui64, 0i64, OutputBufferLength);
if( !byte_140C4A0F9 )
return(int)v5;
LODWORD(v5) = HalpHvSetSleepStateProperty(5ui64, a1[13], a1[14]);
LABEL_35:
if( byte_140C4A0F9 )
LODWORD(v5) = HalpHvSetSleepStateProperty(6ui64, 0, 0);
return(int)v5;
}Referenced by:
No references.