HalpDmaControllerQueryMaxFragments

NTSTATUS __stdcall HalpDmaControllerQueryMaxFragments(INT64 a1, INT64 a2, UINT64 a3){
  unsigned int v3; 
  char v6; 
  unsigned __int8 CurrentIrql; 
  UINT64 *v8; 
  NTSTATUS v9; 

  v3 = a3;
  v6 = 0;
  CurrentIrql = KeGetCurrentIrql();
  if( CurrentIrql == 15 )
  {
    v8 = (UINT64 *)(a1 + 168);
  }
  else
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(*(unsigned __int8 *)(a1 + 176));
    v8 = (UINT64 *)(a1 + 168);
    KxAcquireSpinLock((UINT64 *)(a1 + 168));
    v6 = 1;
  }
  v9 = (*(__int64(__fastcall **)(_QWORD, _QWORD, _QWORD))(a1 + 96))(
         *(_QWORD *)(a1 + 64),
         *(unsigned int *)(a2 + 372),
         v3);
  if( v6 )
  {
    KxReleaseSpinLock(v8);
    __writecr8(CurrentIrql);
  }
  return v9;
}

Referenced by:

HalMapTransferEx