PnpGetObjectPropertyKeys

NTSTATUS __fastcall PnpGetObjectPropertyKeys(
        INT64 a1,
        INT64 a2,
        UINT64 a3,
        INT64 a4,
        INT64 a5,
        CHAR a6,
        INT64 a7,
        INT64 a8,
        INT64 a9){
  unsigned int v10; 
  __int64(__fastcall *v13)(INT64, INT64, _QWORD, __int64, int, INT64 *); 
  int v14; 
  NTSTATUS ObjectPropertyKeysWorker; 
  NTSTATUS v16; 
  int v17; 
  int v18; 
  NTSTATUS v19; 
  INT64 v21; 
  UINT64 Flags; 
  INT64 PropertyCount[10]; 

  v10 = a3;
  memset(PropertyCount, 0i64, sizeof(PropertyCount));
  v13 = *(__int64(__fastcall **)(INT64, INT64, _QWORD, __int64, int, INT64 *))(a1 + 488);
  PropertyCount[3] = 0i64;
  LODWORD(PropertyCount[8]) = 0;
  LOBYTE(PropertyCount[4]) = a6;
  PropertyCount[5] = a7;
  LODWORD(PropertyCount[6]) = a8;
  PropertyCount[7] = a9;
  PropertyCount[2] = a4;
  if( v13 )
  {
    v14 = v13(a1, a2, v10, 6i64, 1, PropertyCount);
    if( v14 == -1073741822 )
    {
      v13 = 0i64;
    }
    else
    {
      if( v14 == -1073741536 )
        return PropertyCount[0];
      if( v14 )
        return -1073741595;
    }
  }
  LODWORD(Flags) = PropertyCount[8];
  LODWORD(v21) = PropertyCount[6];
  ObjectPropertyKeysWorker = PnpGetObjectPropertyKeysWorker(
                               (HPNPCTX *)a1,
                               (WCHAR *)a2,
                               v10,
                               (VOID *)PropertyCount[2],
                               (WCHAR *)PropertyCount[3],
                               PropertyCount[4],
                               (_DEVPROPKEY *)PropertyCount[5],
                               v21,
                               (UINT64 *)PropertyCount[7],
                               Flags);
  v16 = ObjectPropertyKeysWorker;
  if( !v13 )
    return v16;
  LODWORD(PropertyCount[0]) = ObjectPropertyKeysWorker;
  v17 = v13(a1, a2, v10, 6i64, 2, PropertyCount);
  v18 = v17;
  if( v17 == -1073741822 )
    return v16;
  if( v17 == -1073741536 )
    return PropertyCount[0];
  v19 = v16;
  if( v18 )
    return -1073741595;
  return v19;
}

Referenced by:

PiCMGetObjectPropertyKeys
PiDevCfgCopyObjectProperties
PiDqPnPGetObjectPropertyKeys