KxFlushNonGlobalTb
INT64 __fastcall KxFlushNonGlobalTb(INT64 a1){
unsigned __int8 CurrentIrql;
struct _KPRCB *CurrentPrcb;
INT64 result;
int v4[8];
__int64 v5;
UINT64(__stdcall *v6)();
__int64 v7;
CurrentIrql = KeGetCurrentIrql();
__writecr8(0xCui64);
CurrentPrcb = KeGetCurrentPrcb();
if( !(_DWORD)a1 )
{
_InterlockedOr(v4, 0);
KeCopyAffinityEx(
(__int64)CurrentPrcb + 11704,
(unsigned __int16 *)(*(_QWORD *)(*((_QWORD *)CurrentPrcb + 1) + 184i64) + 368i64));
KeRemoveProcessorAffinityEx((unsigned __int16 *)CurrentPrcb + 5852, *((_DWORD *)CurrentPrcb + 9));
goto LABEL_7;
}
if( !(_BYTE)KiKvaShadow )
{
LABEL_7:
v7 = 0i64;
v6 = KiFlushProcessTbWorker;
v5 = 1i64;
KiIpiSendRequestEx((CHAR)CurrentPrcb);
goto LABEL_5;
}
if( KxSetTimeStampBusy((INT64 *)&KiTbFlushTimeStamp) )
{
v7 = 0i64;
v6 = KiFlushProcessTbWorker;
v5 = 1i64;
KiIpiSendRequestEx((CHAR)CurrentPrcb);
_InterlockedAdd((volatile signed __int32 *)&KiTbFlushTimeStamp, 1u);
}
LABEL_5:
result = CurrentIrql;
__writecr8(CurrentIrql);
return result;
}Referenced by:
KeFlushTb