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.