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