KiSetHardwareSpeculationControlFeatures
_OWORD *__fastcall KiSetHardwareSpeculationControlFeatures(__int64 a1, char a2){
_OWORD *result;
unsigned __int16 v4;
__int128 v5;
char v6;
v6 = 0;
v5 = 0i64;
result = KiDetectHardwareSpecControlFeatures(a1, a2, &v5, (unsigned __int64)&v6);
v4 = v5;
if( (v5 & 0x20) != 0 )
*(_BYTE *)(a1 + 249) |= 4u;
if( *(_DWORD *)(a1 + 36) )
{
if( *(_WORD *)((char *)&Mm64BitPhysicalAddress + 3) != v4 )
KeBugCheckEx(
0x5Du,
(PVOID)0x53524249,
(PVOID)*(unsigned __int16 *)((char *)&Mm64BitPhysicalAddress + 3),
(PVOID)v4,
0i64);
}
else
{
LOWORD(KiSpeculationFeatures) = 0;
LODWORD(KiSpeculationFeatures) = v4 | (unsigned int)KiSpeculationFeatures;
result = (_OWORD *)*((_QWORD *)&v5 + 1);
*((_QWORD *)&KiSpeculationFeatures + 1) = *((_QWORD *)&v5 + 1);
KiSsbdBit = *((_QWORD *)&v5 + 1);
*(_WORD *)((char *)&Mm64BitPhysicalAddress + 3) = v4;
DWORD1(KiSpeculationFeatures) = DWORD1(v5);
KiSsbdMsr = DWORD1(v5);
}
if( v6 )
KiMicrocodeTrackerEnabled = 1;
return result;
}Referenced by:
KiInitializeKernel