IopMemQueryConflict
__int64 __fastcall IopMemQueryConflict(__int64 a1, __int64 a2){
__int64 result;
int IsPciRootBus;
unsigned int *v5;
__int64 v6;
unsigned int v7;
__int64 v8;
unsigned __int64 v9;
unsigned __int64 i;
unsigned __int64 v11;
bool v12;
UINT8 IsRootBus;
IsRootBus = 0;
result = ArbQueryConflict(a1, a2);
if( (int)result < 0 )
return result;
IsPciRootBus = IopIsPciRootBus(*(DEVICE_OBJECT **)a2, &IsRootBus);
if( IsPciRootBus < 0 || !IsRootBus )
return 0i64;
v5 = *(unsigned int **)(a2 + 16);
v6 = 0i64;
v7 = *v5;
v8 = **(_QWORD **)(a2 + 24);
if( !*v5 )
goto LABEL_18;
do
{
v9 = *(_QWORD *)(v8 + 24 * v6 + 8);
if( ArbMmConfigRange )
{
for( i = ArbMmConfigRange + 8;
i < 32 * (unsigned __int64)*(unsigned int *)(ArbMmConfigRange + 4) + ArbMmConfigRange + 8;
i += 32i64 )
{
if( ((*(_BYTE *)(i + 1) - 3) & 0xFB) == 0 )
{
v11 = *(_QWORD *)(i + 16);
v12 = v9 < v11;
if( v9 > v11 )
{
if( *(_QWORD *)(i + 24) < v9 )
continue;
v12 = v9 < v11;
}
if( !v12 || *(_QWORD *)(v8 + 24 * v6 + 16) >= v11 )
{
*(_OWORD *)(v8 + 24 * v6) = *(_OWORD *)(v8 + 24i64 * --v7);
*(_QWORD *)(v8 + 24 * v6 + 16) = *(_QWORD *)(v8 + 24i64 * v7 + 16);
goto LABEL_16;
}
}
}
}
v6 = (unsigned int)(v6 + 1);
LABEL_16:
;
}
while( (unsigned int)v6 < v7 );
v5 = *(unsigned int **)(a2 + 16);
LABEL_18:
*v5 = v7;
return(unsigned int)IsPciRootBus;
}Referenced by:
No references.