KeFlushMultipleRangeCurrentTb

VOID __fastcall KeFlushMultipleRangeCurrentTb(UINT64 a1, UINT64 *a2, INT64 a3){
  unsigned int v3; 
  __int64 v5; 
  UINT64 v6; 
  bool IsSecureProcessFlush; 
  UINT64 *v8; 
  __int64 v9; 
  __int64 v10; 
  unsigned __int8 CurrentIrql; 
  char v12[8]; 
  UINT64 v13; 
  INT64 result[22]; 
  v13 = 0i64;
  v3 = a3;
  v5 = (unsigned int)a1;
  memset((INT64)result, 0i64);
  v6 = *a2;
  v12[0] = 0;
  IsSecureProcessFlush = KiIsSecureProcessFlush(v6, v3);
  if( !IsSecureProcessFlush
    || (KiPrepareFlushParameters(v3, &v13, v12),
        KiPrepareFlushCurrentAffinity(result),
        LOBYTE(v10) = IsSecureProcessFlush,
        !HvlFlushRangeListTb(v13, (__int64)result, v12[0], v10, 0, v5, a2)) )
  {
    if( (_DWORD)v5 )
    {
      v8 = a2;
      v9 = v5;
      do
      {
        KiFlushRangeTb(*v8++, v3);
        --v9;
      }
      while( v9 );
    }
  }
  if( VmTbFlushEnabled )
    VmFlushTb(v5, a2, v3);
  if( ExTbFlushActive )
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(0xFui64);
    ExFlushTb(v5, (__int64)a2, v3);
    __writecr8(CurrentIrql);
  }
}

Referenced by:

MiAgeWorkingSetTail
MiFlushTbList