PsWaitForAllProcesses

INT64 __fastcall PsWaitForAllProcesses(){
  unsigned int v0; 
  union _LARGE_INTEGER v1; 
  void *i; 
  void *v3; 
  _DWORD *NextProcess; 
  _QWORD *v5; 
  INT64 result; 
  NTSTATUS v7; 
  union _LARGE_INTEGER Timeout; 
  Timeout.QuadPart = -100000i64;
  v0 = 0;
  v1.QuadPart = -100000i64;
  while( 1 )
  {
    for( i = 0i64; ; i = v5 )
    {
      NextProcess = (_DWORD *)PsGetNextProcess(i);
      v5 = NextProcess;
      if( !NextProcess )
        return 1i64;
      if( (NextProcess[543] & 0x1000) == 0
        && NextProcess != PsIdleProcess
        && (NextProcess[281] & 4) != 0
        && !SmIsCompressionProcess(NextProcess)
        && v5[174] )
      {
        break;
      }
    }
    ObfReferenceObjectWithTag(v3, 0x65547350u);
    PsQuitNextProcessThread(v5);
    v7 = KeWaitForSingleObject(v5, Executive, 0, 0, &Timeout);
    LODWORD(result) = ObfDereferenceObjectWithTag(v5, 0x65547350ui64);
    if( v7 == 258 )
    {
      v1.QuadPart *= 2i64;
      ++v0;
      Timeout = v1;
      if( v0 > 0xD )
        break;
    }
  }
  LOBYTE(result) = 0;
  return result;
}

Referenced by:

PopGracefulShutdown