KiFlushCurrentTbOnly
VOID __fastcall KiFlushCurrentTbOnly(INT64 a1){
int v1;
unsigned __int64 v2;
unsigned __int64 v3;
unsigned __int64 v4;
if( (_BYTE)KiKvaShadow )
{
if( !(_DWORD)a1 )
goto LABEL_8;
v1 = a1 - 1;
if( v1 )
{
if( v1 == 1 )
goto LABEL_8;
}
}
else if( (_DWORD)a1 && (int)a1 <= 2 )
{
goto LABEL_8;
}
if( KiFlushPcid )
{
v2 = __readcr3();
__writecr3(v2);
if( !*(_BYTE *)(*((_QWORD *)KeGetCurrentThread() + 23) + 912i64) )
KiSetUserTbFlushPending();
}
else
{
v4 = __readcr4();
if( (v4 & 0x20080) == 0 )
{
LABEL_8:
v3 = __readcr3();
__writecr3(v3);
return;
}
__writecr4(v4 ^ 0x80);
__writecr4(v4);
}
}Referenced by:
KeFlushCurrentTbOnly
KeFlushTb