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