RtlAreBitsClearEx

BOOL __fastcall RtlAreBitsClearEx(INT64 a1, UINT64 a2, UINT64 a3){
  const signed __int64 *v3; 
  __int64 v4; 
  UINT64 v5; 
  __int64 v6; 
  _QWORD *v7; 
  _QWORD *v8; 
  bool v9; 
  _QWORD *v10; 
  v3 = *(const signed __int64 **)a1;
  if( a2 >= *(_QWORD *)a1 )
    goto LABEL_7;
  if( a3 <= 1 )
  {
    if( a3 == 1 )
    {
      v3 = *(const signed __int64 **)(a1 + 8);
      LOBYTE(v3) = !_bittest64(v3, a2);
      return(int)v3;
    }
    goto LABEL_7;
  }
  v3 = (const signed __int64 *)((char *)v3 - a2);
  if( (unsigned __int64)v3 < a3 )
  {
LABEL_7:
    LOBYTE(v3) = 0;
    return(int)v3;
  }
  v4 = *(_QWORD *)(a1 + 8);
  v5 = a2 + a3 - 1;
  v6 = *(_QWORD *)(v4 + 8 * (a2 >> 6));
  v7 = (_QWORD *)(v4 + 8 * (a2 >> 6));
  v3 = (const signed __int64 *)(v5 >> 6);
  v8 = (_QWORD *)(v4 + 8 * (v5 >> 6));
  if( v7 != v8 )
  {
    v3 = (const signed __int64 *)(-1i64 << a2);
    if( (v6 & (-1i64 << a2)) == 0 )
    {
      v10 = v7 + 1;
      if( v10 == v8 )
      {
LABEL_14:
        v9 = ((0xFFFFFFFFFFFFFFFFui64 >> ~(_BYTE)v5) & *v10) == 0;
        goto LABEL_6;
      }
      while( !*v10 )
      {
        if( ++v10 == v8 )
          goto LABEL_14;
      }
    }
    LOBYTE(v3) = 0;
    return(int)v3;
  }
  v9 = (v6 & (0xFFFFFFFFFFFFFFFFui64 >> (64 - (unsigned __int8)a3) << a2)) == 0;
LABEL_6:
  LOBYTE(v3) = v9;
  return(int)v3;
}

Referenced by:

MiCheckHotPatchApplicable
MiCommitPageTablesForVad
MiHotAddPartitionMemory
MiMarkHugePfnGood
MiMarkRetpolineBits
MiReturnPageTablePageCommitment