HalpDmaControllerReadDmaCounter

__int64 __fastcall HalpDmaControllerReadDmaCounter(__int64 a1, unsigned int a2){
  __int64 v2; 
  unsigned __int8 CurrentIrql; 
  char v5; 
  UINT64 *v6; 
  unsigned int v7; 
  v2 = a2;
  CurrentIrql = KeGetCurrentIrql();
  v5 = 0;
  if( CurrentIrql == 15 )
  {
    v6 = (UINT64 *)(a1 + 168);
  }
  else
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(*(unsigned __int8 *)(a1 + 176));
    v6 = (UINT64 *)(a1 + 168);
    KxAcquireSpinLock((UINT64 *)(a1 + 168));
    v5 = 1;
  }
  v7 = (*(__int64(__fastcall **)(_QWORD, _QWORD))(a1 + 136))(*(_QWORD *)(a1 + 64), (unsigned int)v2);
  if( !v7 )
    *(_BYTE *)(160 * v2 + *(_QWORD *)(a1 + 56) + 6) = 1;
  if( v5 )
  {
    KxReleaseSpinLock(v6);
    __writecr8(CurrentIrql);
  }
  return v7;
}

Referenced by:

HalReadDmaCounterV3