MiWaitForAvailablePages

NTSTATUS __fastcall MiWaitForAvailablePages(UINT64 *a1, LARGE_INTEGER *a2){
  UINT64 v4; 
  UINT8 v5; 
  UINT8 v6; 
  NTSTATUS result; 
  IRP *Timeout; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  memset(&LockHandle, 0, sizeof(LockHandle));
  KeAcquireInStackQueuedSpinLock(a1 + 616, &LockHandle);
  if( a1[888] < 0x420 )
  {
    KeResetEvent(a1 + 625, v4, v5, v6, Timeout);
    KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
    __writecr8(LockHandle.OldIrql);
    return KeWaitForSingleObject(a1 + 625, WrFreePage, 0, 0, a2);
  }
  else
  {
    KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
    result = KiIrqlFlags;
    __writecr8(LockHandle.OldIrql);
  }
  return result;
}

Referenced by:

MiDelayFaultingThread