EmPowerPagingEnabled

VOID __stdcall EmPowerPagingEnabled(UINT8 PagingEnabled){
  char v2; 
  char v3; 
  __int128 Object; 
  __int64 v5; 

  v5 = 0i64;
  v2 = 0;
  Object = 0i64;
  ExAcquirePushLockExclusiveEx(&EmpPagingLock, 0i64);
  if( PagingEnabled )
  {
    dword_140C47698 |= 0x80000000;
  }
  else
  {
    dword_140C47698 &= ~0x80000000;
    if( dword_140C47698 )
    {
      v2 = 1;
      KeInitializeEvent((INT64)&Object, 1, 0);
      EmpPagingStatus = (PRKEVENT)&Object;
    }
  }
  v3 = _InterlockedExchangeAdd64(&EmpPagingLock._bf_0, 0xFFFFFFFFFFFFFFFFui64);
  if( (v3 & 2) != 0 && (v3 & 4) == 0 )
    ExfTryToWakePushLock(&EmpPagingLock);
  KeAbPostRelease(&EmpPagingLock);
  if( v2 )
  {
    KeWaitForSingleObject((UINT64)&Object, 0, 0, 0, 0i64);
    ExAcquirePushLockExclusiveEx(&EmpPagingLock, 0i64);
    EmpPagingStatus = 0i64;
    if( (_InterlockedExchangeAdd64(&EmpPagingLock._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock(&EmpPagingLock);
    KeAbPostRelease(&EmpPagingLock);
  }
}

Referenced by:

PoBroadcastSystemState