RtlpHpVaMgrRangeCleanup

NTSTATUS __stdcall RtlpHpVaMgrRangeCleanup(INT64 a1, CHAR *a2){
  CHAR v2; 
  CHAR *v3; 
  __int64 v5; 
  __int64 v6; 
  CHAR *v7; 
  NTSTATUS result; 
  __int64 v9; 

  v2 = *a2;
  v3 = a2;
  if( (*a2 & 4) != 0 )
    v5 = *((_QWORD *)a2 + 3);
  else
    v5 = *((unsigned __int16 *)a2 + 12);
  v6 = *(_QWORD *)(a1 + 24);
  v7 = &a2[32 * v5];
  result = RtlCSparseBitmapBitsClear(
             v6 + 32,
             8 * ((unsigned __int64)&a2[-*(_QWORD *)(v6 + 40)] >> *(_DWORD *)(v6 + 24) << *(_DWORD *)(v6 + 24)),
             8 * (1i64 << *(_DWORD *)(v6 + 24)));
  if( (v2 & 4) == 0 )
  {
    while( 1 )
    {
      v3 += 32;
      if( v3 >= v7 )
        break;
      v9 = *(_QWORD *)(a1 + 24);
      result = RtlCSparseBitmapBitsClear(
                 v9 + 32,
                 8 * ((unsigned __int64)&v3[-*(_QWORD *)(v9 + 40)] >> *(_DWORD *)(v9 + 24) << *(_DWORD *)(v9 + 24)),
                 8 * (1i64 << *(_DWORD *)(v9 + 24)));
    }
  }
  return result;
}

Referenced by:

RtlpHpVaMgrRangeFree