ViInitPickRandomTargets
UINT64 __fastcall ViInitPickRandomTargets(){
UINT64 result;
int v1;
unsigned int v2;
bool v3;
unsigned int i;
unsigned int Number;
unsigned int v6;
result = (unsigned int)VfRandomVerifiedDrivers;
v1 = 0;
if( VfRandomVerifiedDrivers )
{
if( (unsigned int)VfRandomVerifiedDrivers > 0x200 )
{
LODWORD(result) = 512;
VfRandomVerifiedDrivers = 512;
}
VfRandomTargetsBitMapHeader = 512;
v2 = ViExpectedDriversCount + 2;
if( (unsigned int)(ViExpectedDriversCount + 2) > 0x200 )
v2 = 512;
qword_140D491F8 = (__int64)&VfRandomTargetsBitMap;
v3 = 2 * (int)result > (unsigned int)ViExpectedDriversCount;
memset((INT64)&VfRandomTargetsBitMap, 0i64);
for( i = 0; i < VfRandomVerifiedDrivers; ++i )
{
Number = VfRandomGetNumber(1ui64, v2 - 1);
if( _bittest((const signed __int32 *)qword_140D491F8, Number) )
{
if( v3 )
{
++v1;
}
else
{
v6 = Number;
while( 1 )
{
v6 = (v6 + 1) % v2;
if( !v6 )
v6 = 1;
if( !_bittest((const signed __int32 *)qword_140D491F8, v6) )
break;
if( v6 == Number )
goto LABEL_20;
}
_bittestandset((signed __int32 *)qword_140D491F8, v6);
if( v6 == Number )
break;
}
}
else
{
_bittestandset((signed __int32 *)qword_140D491F8, Number);
}
}
LABEL_20:
VfRandomVerifiedDrivers -= v1;
return 1i64;
}
return result;
}Referenced by:
ViInitSystemPhase0