HalpDmaQueueAdapter

__int64 __fastcall HalpDmaQueueAdapter(__int64 a1){
  __int64 v1; 
  _QWORD *v3; 
  __int64 v4; 
  _QWORD *v5; 
  __int64 result; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  v1 = *(_QWORD *)(a1 + 152);
  memset(&LockHandle, 0, sizeof(LockHandle));
  KeAcquireInStackQueuedSpinLock((UINT64 *)(v1 + 120), &LockHandle);
  v3 = (_QWORD *)(a1 + 160);
  if( *(_BYTE *)(a1 + 434) )
    v4 = v1 + 168;
  else
    v4 = v1 + 152;
  v5 = *(_QWORD **)(v4 + 8);
  if( *v5 != v4 )
    __fastfail(3u);
  *v3 = v4;
  *(_QWORD *)(a1 + 168) = v5;
  *v5 = v3;
  *(_QWORD *)(v4 + 8) = v3;
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(LockHandle.OldIrql);
  return result;
}

Referenced by:

HalAllocateAdapterChannelV2
HalpAllocateDmaResourcesInternal
HalpDmaProcessMapRegisterQueueV2
IoFreeAdapterChannelV2