IopTestConfiguration

NTSTATUS __stdcall IopTestConfiguration(
        _PNP_RESOURCE_REQUEST *RequestTable,
        UINT64 RequestTableCount,
        _LIST_ENTRY *ArbiterList){
  _LIST_ENTRY *Flink; 
  NTSTATUS v4; 
  unsigned int v6; 
  _LIST_ENTRY *v8; 
  char v9; 
  __int128 v11; 
  __int128 i; 

  Flink = ArbiterList->Flink;
  v4 = 0;
  v6 = RequestTableCount;
  v11 = 0i64;
  for( i = 0i64; Flink != ArbiterList; Flink = Flink->Flink )
  {
    if( BYTE1(Flink[1].Flink) )
    {
      v8 = Flink[-4].Flink;
      DWORD2(v11) = 0;
      *(_QWORD *)&i = 0i64;
      *(_QWORD *)&v11 = Flink - 3;
      PnpLookupArbitersNewResources(
        (__int64)RequestTable,
        v6,
        (__int64)Flink[-4].Blink,
        (char)Flink[-5].Blink,
        &i,
        (unsigned int *)&v11 + 2);
      v4 = ((__int64(__fastcall *)(_LIST_ENTRY *, _QWORD, __int128 *))v8[2].Flink)(v8->Blink, 0i64, &v11);
      if( v4 < 0 )
      {
        PnpLogDeviceConflictingResource((__int64)&Flink[-6].Blink, (__int64)v8->Blink);
        LOBYTE(Flink[1].Flink) |= 2u;
        return v4;
      }
      v9 = (__int64)Flink[1].Flink & 0xFD;
      BYTE1(Flink[1].Flink) = 0;
      LOBYTE(Flink[1].Flink) = v9 | 1;
    }
    else if( ((__int64)Flink[1].Flink & 2) != 0 )
    {
      return -1073741823;
    }
  }
  return v4;
}

Referenced by:

PnpFindBestConfigurationWorker