DmrFindDrhdForDeviceScope

VOID __stdcall DmrFindDrhdForDeviceScope(
        INT64 a1,
        INT64 a2,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        INT64 a7,
        INT64 a8,
        INT64 a9,
        INT64 a10,
        INT64 a11){
  __int16 v12; 
  INT64 v13; 
  INT64 v14; 
  UINT64 i; 
  char v16; 
  INT64 NextDrhdDeviceScope; 
  INT64 v18; 
  INT64 v19; 
  UINT64 NextRemappingStructure; 
  UINT64 v21; 

  v12 = a2;
  v13 = a1;
  if( *(_BYTE *)a3 == 1 )
  {
    v14 = 0i64;
    while( 1 )
    {
      NextRemappingStructure = DmrGetNextRemappingStructure(a1, v14);
      v21 = NextRemappingStructure;
      if( !NextRemappingStructure )
        break;
      if( !*(_WORD *)NextRemappingStructure && *(_WORD *)(NextRemappingStructure + 6) == v12 )
      {
        if( (*(_BYTE *)(NextRemappingStructure + 4) & 1) != 0 )
          return;
        for( i = 0i64; ; i = v19 )
        {
          NextDrhdDeviceScope = DmrGetNextDrhdDeviceScope(v21, i);
          v19 = NextDrhdDeviceScope;
          if( !NextDrhdDeviceScope )
            break;
          DmrCheckPathMatch(NextDrhdDeviceScope, a3, v18);
          if( v16 )
            return;
        }
      }
      v14 = v21;
      a1 = v13;
    }
  }
}

Referenced by:

DmrEnumerateRmrrDomains