HalpIrtExtendRemappingRange
NTSTATUS __stdcall HalpIrtExtendRemappingRange(UINT64 a1){
NTSTATUS v1;
__int64 v2;
char v3;
unsigned int *PoolWithTag;
_RTL_BITMAP BitMapHeader;
v1 = 0;
v2 = (unsigned int)a1;
*(&BitMapHeader.SizeOfBitMap + 1) = 0;
if( (unsigned int)a1 >= 0x20 || (_DWORD)a1 && (*(&CmpDummyThreadEvent + 7712) & 8) == 0 )
return -1073741637;
v3 = 1;
PoolWithTag = (unsigned int *)ExAllocatePoolWithTag(
1ui64,
4 * ((unsigned int)(*(&CmpDummyThreadEvent + 1937) + 31) >> 5),
543973704i64);
if( !PoolWithTag )
return -1073741670;
BitMapHeader.SizeOfBitMap = *(&CmpDummyThreadEvent + 1937);
BitMapHeader.Buffer = PoolWithTag;
RtlClearAllBits(&BitMapHeader);
ExAcquireFastMutex((PFAST_MUTEX)((char *)&CmpDummyThreadEvent + 7776));
if( !*((_QWORD *)&CmpDummyThreadEvent + 2 * v2 + 901) )
{
++*(&CmpDummyThreadEvent + 1939);
v3 = 0;
*((_RTL_BITMAP *)&CmpDummyThreadEvent + v2 + 450) = BitMapHeader;
}
KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&CmpDummyThreadEvent + 7776));
if( v3 )
ExFreePoolWithTag(PoolWithTag, 0);
return v1;
}Referenced by:
HalpInitializeInterruptRemappingBspLate
HalpIrtAllocateIndex