KiSetSpecCtrlNmi
VOID __stdcall KiSetSpecCtrlNmi(){
__int64 v0;
unsigned __int64 v1;
if( KeGetPcr()->Prcb.BpbKernelSpecCtrl )
{
v1 = __readmsr(0x48u);
*(_BYTE *)(v0 - 86) = v1;
LOBYTE(v1) = KeGetPcr()->Prcb.BpbKernelSpecCtrl;
__writemsr(0x48u, (unsigned __int8)v1);
if( (v1 & 1) != 0 )
goto LABEL_5;
}
if( (KeGetPcr()->Prcb.BpbFeatures & 2) != 0 )
{
__writemsr(0x49u, 1ui64);
LABEL_5:
__flush_rsb();
}
_mm_lfence();
*(_BYTE *)(v0 - 88) = KeGetPcr()->Prcb.BpbRetpolineState;
__writegsbyte(0x853u, KeGetPcr()->Prcb.BpbRetpolineState | 2);
}Referenced by:
KiMcheckAbort
KiNmiInterruptStart