HalpDmaReturnToContiguousPool

void __fastcall HalpDmaReturnToContiguousPool(__int64 a1, unsigned __int64 a2, char a3){
  unsigned int v5; 
  unsigned __int8 CurrentIrql; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  __int64 v8; 
  v8 = 0i64;
  memset(&LockHandle, 0, sizeof(LockHandle));
  v5 = HalpDmaTranslationEntryToIndex(a1, a2, &v8);
  CurrentIrql = KeGetCurrentIrql();
  if( CurrentIrql != 15 )
    KeAcquireInStackQueuedSpinLock((UINT64 *)(a1 + 120), &LockHandle);
  RtlClearBits(*(RTL_BITMAP **)(a1 + 16), v5, 1ui64);
  if( a3 )
    ++*(_DWORD *)(a1 + 200);
  if( CurrentIrql != 15 )
  {
    KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
    __writecr8(LockHandle.OldIrql);
  }
}

Referenced by:

HalpDmaReturnPageToOwner
HalpDmaReturnPageToSource