HalpDmaStartWcb

char __fastcall HalpDmaStartWcb(__int64 a1, _QWORD *a2, char a3){
  UINT64 *v3; 
  unsigned __int64 v7; 
  char v8; 
  _QWORD *v9; 

  v3 = (UINT64 *)(a1 + 176);
  v7 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)(a1 + 176));
  if( *(_BYTE *)(a1 + 216) )
  {
    v8 = 0;
    if( !a3 )
    {
      v9 = *(_QWORD **)(a1 + 192);
      if( *v9 != a1 + 184 )
        __fastfail(3u);
      *a2 = a1 + 184;
      a2[1] = v9;
      *v9 = a2;
      *(_QWORD *)(a1 + 192) = a2;
    }
  }
  else
  {
    v8 = 1;
    *(_BYTE *)(a1 + 216) = 1;
  }
  KxReleaseSpinLock(v3);
  __writecr8(v7);
  return v8;
}

Referenced by:

HalpAllocateAdapterChannel