HalpBlkApicInitializeLocalUnit
EXCEPTION_REGISTRATION_RECORD *__stdcall HalpBlkApicInitializeLocalUnit(){
unsigned __int64 v0;
unsigned int v1;
unsigned int v2;
char v3;
int v4;
char v5;
UINT64 v6;
int v7;
unsigned int v8;
unsigned int v9;
unsigned int v10;
int v11;
unsigned int v12;
unsigned int v13;
__int64 v14;
char v15;
if( *(_BYTE *)(*(_QWORD *)KeGetPcr() + 41i64) )
{
v0 = __readmsr(0x1Bu);
if( (v0 & 0x400) == 0 )
__writemsr(0x1Bu, v0 | 0x400);
}
HalpBlkApicWrite(128i64, 0xF0ui64);
HalpBlkApicRead(v1);
if( *(_BYTE *)(*(_QWORD *)KeGetPcr() + 41i64) == v3 )
{
HalpBlkApicWrite(v2 - 32, 0i64);
if( *(_BYTE *)(*(_QWORD *)KeGetPcr() + 42i64) == v5 )
v6 = 0xFFFFFFFFi64;
else
v6 = 0xFFFFFFFi64;
HalpBlkApicWrite((unsigned int)(v4 - 16), v6);
}
HalpBlkApicWrite(v2, 0x1DFui64);
HalpBlkApicWrite(800i64, 0x300D8ui64);
HalpBlkApicWrite(992i64, 0xBui64);
HalpBlkApicWrite(880i64, 0xE2ui64);
HalpBlkApicWrite(832i64, 0x100D8ui64);
v7 = HalpBlkApicRead(848i64);
HalpBlkApicWrite(v8, v7 | 0x10000u);
HalpBlkApicWrite(v10, v9);
HalpBlkApicWrite((unsigned int)(v11 + 16), 0x184D8ui64);
v12 = HalpBlkApicRead(32i64);
if( *(_BYTE *)(v14 + 41) == v15 )
v12 >>= 24;
*(_DWORD *)(*(_QWORD *)KeGetPcr() + 20i64) = v12;
return HalpBlkApicWrite(v13, 0i64);
}Referenced by:
HalpBlkProcessorStartup