MiSetVadBits

void __fastcall MiSetVadBits(__int64 a1){
  unsigned int v1; 
  unsigned __int64 v2; 
  unsigned __int64 v3; 
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 
  _QWORD *v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  int v10; 
  __int64 v11; 
  unsigned __int64 v12; 
  v1 = 0;
  v2 = ((unsigned __int64)*(unsigned int *)(a1 + 24) >> 4) | ((unsigned __int64)*(unsigned __int8 *)(a1 + 32) << 28);
  v3 = ((unsigned __int64)*(unsigned int *)(a1 + 28) >> 4) | ((unsigned __int64)*(unsigned __int8 *)(a1 + 33) << 28);
  v4 = *((_QWORD *)KeGetCurrentThread() + 23);
  v5 = *(_QWORD *)(v4 + 1680) + 48i64;
  if( *(_QWORD *)(*(_QWORD *)(v4 + 1680) + 264i64) )
  {
    v6 = 0i64;
    do
    {
      v7 = (_QWORD *)(v5 + 72 * v6);
      v8 = 8 * (v7[1] - qword_140C4E0A0);
      if( v3 >= v8 )
      {
        v9 = v8 + *v7;
        if( v2 < v9 )
        {
          v10 = 0;
          v11 = v2;
          if( v2 < v8 )
          {
            v11 = 8 * (v7[1] - qword_140C4E0A0);
            v10 = 1;
          }
          if( v3 >= v9 )
            v10 = 1;
          v12 = v9 - 1;
          if( v3 < v9 )
            v12 = v3;
          RtlSetBitsEx((INT64)v7, v11 - v8, v12 - v11 + 1);
          if( !v10 )
            break;
        }
      }
      v6 = ++v1;
    }
    while( (unsigned __int64)v1 < *(_QWORD *)(v5 + 216) );
  }
}

Referenced by:

MiInsertVadCharges
MiUpdateVadBits