PsResumeProcess

__int64 __fastcall PsResumeProcess(__int64 a1){
  _ETHREAD *CurrentThread; 
  struct _EX_RUNDOWN_REF *v3; 
  _QWORD *NextProcessThread; 
  unsigned int v5; 
  _QWORD *v6; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  v3 = (struct _EX_RUNDOWN_REF *)(a1 + 1112);
  if( ExAcquireRundownProtection((PEX_RUNDOWN_REF)(a1 + 1112)) )
  {
    NextProcessThread = PsGetNextProcessThread(a1, 0i64);
    v5 = 0;
    while( 1 )
    {
      v6 = NextProcessThread;
      if( !NextProcessThread )
        break;
      if( (*((_DWORD *)NextProcessThread + 29) & 0x200000) == 0 )
        KeResumeThread((_KTHREAD *)NextProcessThread);
      NextProcessThread = PsGetNextProcessThread(a1, v6);
    }
    ExReleaseRundownProtection(v3);
  }
  else
  {
    v5 = -1073741558;
  }
  KeLeaveCriticalRegionThread((__int64)CurrentThread);
  if( (*(_DWORD *)(a1 + 2172) & 0x80000) != 0 )
    EtwTiLogSuspendResumeProcess(v5, (INT64)CurrentThread, a1, 1i64);
  return v5;
}

Referenced by:

NtResumeProcess