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