HalpInitializeInterruptRemappingBspLate
VOID __stdcall HalpInitializeInterruptRemappingBspLate(
_RTL_SPLAY_LINKS *Tree,
_LARGE_INTEGER *StartingByte,
_LARGE_INTEGER *EndingByte,
_RTL_SPLAY_LINKS **LastEdgeNode,
UINT8 *GreaterThan){
unsigned int v5;
struct _KPRCB *CurrentPrcb;
char v7;
bool v8;
unsigned int v9;
NTSTATUS v10;
*(&CmpDummyThreadEvent + 973) = 0i64;
*(&CmpDummyThreadEvent + 1948) = 0;
v5 = 1;
*(&CmpDummyThreadEvent + 1944) = 1;
KeInitializeEvent((INT64)&CmpDummyThreadEvent + 7800, 1, 0);
CurrentPrcb = KeGetCurrentPrcb();
v7 = 0;
*(&CmpDummyThreadEvent + 1928) = 0;
*(&CmpDummyThreadEvent + 1940) = 1;
if( CurrentPrcb->CpuVendor == 1 )
{
v7 = 15;
v5 = 32;
*(&CmpDummyThreadEvent + 1928) = 15;
*(&CmpDummyThreadEvent + 1940) = 32;
}
v8 = (v7 & 4) == 0;
v9 = 512;
*(&CmpDummyThreadEvent + 1937) = *(&CmpDummyThreadEvent + 1958) / v5;
if( v8 )
v9 = *(&CmpDummyThreadEvent + 1958);
*(&CmpDummyThreadEvent + 1938) = v9;
*(&CmpDummyThreadEvent + 1796) = *(&CmpDummyThreadEvent + 1958) / v5 / v9;
*(&CmpDummyThreadEvent + 1936) = *(&CmpDummyThreadEvent + 1958) / v9;
v10 = HalpIrtExtendRemappingRange(0i64);
if( v10 < 0 )
goto LABEL_9;
RtlSetBits((_RTL_BITMAP *)&CmpDummyThreadEvent + 450, 0i64, 8ui64);
if( (*(&CmpDummyThreadEvent + 7712) & 4) != 0 )
v10 = HalpIrtInitializeDeviceApertures();
if( v10 < 0 )
{
LABEL_9:
if( *(&CmpDummyThreadEvent + 901) )
{
ExFreePoolWithTag(*(&CmpDummyThreadEvent + 901), 0);
*(&CmpDummyThreadEvent + 901) = 0i64;
}
}
}Referenced by:
HalpInitializeInterruptsBspLate