HalpIrtFreeIndex
VOID __stdcall HalpIrtFreeIndex(UINT64 IrtIndex, UINT64 a2){
int v2;
int v3;
unsigned int v4;
unsigned int v5;
unsigned int v6;
unsigned int v7;
v3 = v2;
v4 = a2;
v5 = IrtIndex;
if( HalpIrtTotalEntries )
{
v6 = (unsigned int)IrtIndex % HalpIrtEntriesPerRange;
v7 = (unsigned int)IrtIndex / HalpIrtEntriesPerRange;
ExAcquireFastMutex(&HalpIrtLock);
RtlClearBits(&HalpIrtRanges + v7, v6, v4);
KeReleaseGuardedMutex(&HalpIrtLock);
if( v3 == 3 && (HalpIrtAllocationFlags & 2) != 0 )
HalpIommuFreeRemappingTableEntry(v5, v4);
if( (HalpIrtAllocationFlags & 4) != 0 )
HalpIrtReleaseDeviceAperture(v5 / HalpIrtEntriesPerDeviceAperture, v4);
}
}Referenced by:
HalpInterruptRemap
HalpInterruptUnmap