HalpDmaStartWcb

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

Referenced by:

HalpAllocateAdapterChannel