KeFlushMultipleRangeCurrentTb

VOID __stdcall KeFlushMultipleRangeCurrentTb(UINT64 Number, _KTB_FLUSH_VA *Virtual, _KTBFLUSH_TYPE FlushType){
  __int64 v5; 
  union {$35D744587036AE522A5F9ADC4D2A64A6 __s0;void *Va;unsigned __int64 VaLong;} v6; 
  BOOL IsSecureProcessFlush; 
  _KTB_FLUSH_VA *v8; 
  __int64 v9; 
  UINT64 v10; 
  char v11; 
  unsigned __int8 CurrentIrql; 
  VOID **VaList; 
  char Global[8]; 
  UINT64 AddressSpace; 
  _KAFFINITY_EX ProcessorSet; 

  AddressSpace = 0i64;
  v5 = (unsigned int)Number;
  memset(&ProcessorSet, 0i64, sizeof(ProcessorSet));
  v6.0 = ($35D744587036AE522A5F9ADC4D2A64A6)Virtual->u1;
  Global[0] = 0;
  IsSecureProcessFlush = KiIsSecureProcessFlush(v6.VaLong, (unsigned int)FlushType);
  if( !IsSecureProcessFlush
    || (KiPrepareFlushParameters(FlushType, &AddressSpace, (UINT8 *)Global),
        KiPrepareFlushCurrentAffinity(&ProcessorSet),
        LOBYTE(v10) = IsSecureProcessFlush,
        LOBYTE(VaList) = 0,
        HvlFlushRangeListTb(AddressSpace, &ProcessorSet, Global[0], v10, VaList),
        !v11) )
  {
    if( (_DWORD)v5 )
    {
      v8 = Virtual;
      v9 = v5;
      do
      {
        KiFlushRangeTb((_KTB_FLUSH_VA)v8->u1.0);
        ++v8;
        --v9;
      }
      while( v9 );
    }
  }
  if( VmTbFlushEnabled )
    VmFlushTb((_MEMORY_CACHING_TYPE_ORIG)v5, (UINT64 *)Virtual, (unsigned int)FlushType);
  if( *(&stru_140CF2E80 + 1830) )
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(0xFui64);
    ExFlushTb((unsigned int)v5, Virtual, FlushType);
    __writecr8(CurrentIrql);
  }
}

Referenced by:

MiAgeWorkingSetTail
MiFlushTbList