HalpIrtFreeIndex

VOID __stdcall HalpIrtFreeIndex(UINT64 IrtIndex, UINT64 Count){
  int v2; 
  int v3; 
  UINT32 v4; 
  unsigned int v5; 
  unsigned int v6; 
  unsigned int v7; 

  v3 = v2;
  v4 = Count;
  v5 = IrtIndex;
  if( *(&CmpDummyThreadEvent + 1958) )
  {
    v6 = (unsigned int)IrtIndex % *(&CmpDummyThreadEvent + 1937);
    v7 = (unsigned int)IrtIndex / *(&CmpDummyThreadEvent + 1937);
    ExAcquireFastMutex((PFAST_MUTEX)((char *)&CmpDummyThreadEvent + 7776));
    RtlClearBits((PRTL_BITMAP)&CmpDummyThreadEvent + v7 + 450, v6, v4);
    KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&CmpDummyThreadEvent + 7776));
    if( v3 == 3 && (*(&CmpDummyThreadEvent + 7712) & 2) != 0 )
      HalpIommuFreeRemappingTableEntry(v5, v4);
    if( (*(&CmpDummyThreadEvent + 7712) & 4) != 0 )
      HalpIrtReleaseDeviceAperture(v5 / *(&CmpDummyThreadEvent + 1938), v4);
  }
}

Referenced by:

HalpInterruptRemap
HalpInterruptUnmap