RtlLengthCurrentClearRunBackwardEx

UINT64 __fastcall RtlLengthCurrentClearRunBackwardEx(INT64 a1, UINT64 a2, UINT64 a3){
  _DWORD *v3; 
  UINT64 v4; 
  UINT64 v5; 
  unsigned int v7; 
  UINT64 v8; 
  _DWORD *v9; 
  char v10; 
  UINT64 v12; 
  v3 = *(_DWORD **)(a1 + 8);
  v4 = a2 >> 5;
  v5 = a2 & 0x1F;
  v7 = 31 - v5;
  v8 = 0i64;
  v9 = &v3[v4];
  LODWORD(a1) = *((_DWORD *)qword_140011CE0 + v5) & *v9;
  if( (_DWORD)a1 )
  {
LABEL_6:
    v10 = -1;
    if( _BitScanReverse64((unsigned __int64 *)&a1, (unsigned int)a1) )
      v10 = a1;
    v8 += (unsigned int)(31 - v10);
  }
  else
  {
    while( 1 )
    {
      v8 += 32i64;
      if( v8 >= a3 && v8 - v7 >= a3 )
        break;
      if( v9 == v3 )
        break;
      LODWORD(a1) = *--v9;
      if( *v9 )
        goto LABEL_6;
    }
  }
  v12 = v8 - v7;
  if( v12 > a3 )
    return a3;
  return v12;
}

Referenced by:

RtlCSparseBitmapFindBitSetCapped