PsWaitForAllProcesses

UINT8 __stdcall PsWaitForAllProcesses(){
  unsigned int v0; 
  _LARGE_INTEGER v1; 
  _EPROCESS *i; 
  VOID *v3; 
  _EPROCESS *NextProcess; 
  _ETHREAD *v5; 
  NTSTATUS v7; 
  _LARGE_INTEGER v8; 

  v8.QuadPart = -100000i64;
  v0 = 0;
  v1.QuadPart = -100000i64;
  while( 1 )
  {
    for( i = 0i64; ; i = (_EPROCESS *)v5 )
    {
      NextProcess = (_EPROCESS *)PsGetNextProcess(i);
      v5 = (_ETHREAD *)NextProcess;
      if( !NextProcess )
        return 1;
      if( (NextProcess->Flags3 & 0x1000) == 0
        && NextProcess != *(_EPROCESS **)&PsIdleProcess
        && (NextProcess->Flags & 4) != 0
        && !(unsigned int)SmIsCompressionProcess(NextProcess)
        && v5->DeboostList.Flink )
      {
        break;
      }
    }
    ObfReferenceObjectWithTag(v3, 0x65547350ui64);
    PsQuitNextProcessThread(v5);
    v7 = KeWaitForSingleObject((UINT64)v5, 0, 0, 0, (INT64)&v8);
    ObfDereferenceObjectWithTag(v5, 0x65547350ui64);
    if( v7 == 258 )
    {
      v1.QuadPart *= 2i64;
      ++v0;
      v8 = v1;
      if( v0 > 0xD )
        break;
    }
  }
  return 0;
}

Referenced by:

PopGracefulShutdown