PopHaltDeviceIdle

INT64 __stdcall PopHaltDeviceIdle(){
  UINT64 v0; 
  __int128 *v1; 
  unsigned __int8 v2; 
  unsigned __int64 v3; 
  INT64 result; 
  __int128 v5; 
  __int64 v6; 
  v1 = 0i64;
  v5 = 0i64;
  v6 = 0i64;
  KeAcquireSpinLockRaiseToDpc(&PopDopeGlobalLock, v0);
  v3 = v2;
  byte_140C502F4 = 1;
  if( dword_140C502F0 )
  {
    DWORD1(v5) = 0;
    v6 = (__int64)&v5 + 8;
    v1 = &v5;
    LOWORD(v5) = 1;
    *((_QWORD *)&v5 + 1) = (char *)&v5 + 8;
    PopDeviceIdleSync = (PRKEVENT)&v5;
    BYTE2(v5) = 6;
  }
  KxReleaseSpinLock(&PopDopeGlobalLock);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(v3);
  if( v1 )
    LODWORD(result) = KeWaitForSingleObject(v1, Executive, 0, 0, 0i64);
  return result;
}

Referenced by:

PoInitializeBroadcast