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.