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, (UINT64)&v6);
v4 = v5;
if( (v5 & 0x20) != 0 )
*(_BYTE *)(a1 + 249) |= 4u;
if( *(_DWORD *)(a1 + 36) )
{
if( *(_WORD *)((char *)&Mm64BitPhysicalAddress + 3) != v4 )
KeBugCheckEx(0x5Du, 0x53524249ui64, *(unsigned __int16 *)((char *)&Mm64BitPhysicalAddress + 3), v4, 0i64);
}
else
{
LOWORD(KiSpeculationFeatures) = 0;
KiSpeculationFeatures |= v4;
result = (_OWORD *)*((_QWORD *)&v5 + 1);
*((_QWORD *)&KiSpeculationFeatures + 1) = *((_QWORD *)&v5 + 1);
KiSsbdBit = *((_QWORD *)&v5 + 1);
*(_WORD *)((char *)&Mm64BitPhysicalAddress + 3) = v4;
*(&KiSpeculationFeatures + 1) = DWORD1(v5);
KiSsbdMsr = DWORD1(v5);
}
if( v6 )
KiMicrocodeTrackerEnabled = 1;
return result;
}Referenced by:
KiInitializeKernel