PiPnpRtlGetFilteredDeviceInterfaceList

INT64 __fastcall PiPnpRtlGetFilteredDeviceInterfaceList(INT64 a1){
  bool v2; 
  WCHAR *v3; 
  char v4; 
  __int64 v5; 
  WCHAR *v6; 
  _WORD *v7; 
  INT64 result; 
  UINT64 v9; 
  INT64 r8_0[2]; 
  __int128 v11; 
  __int64 v12; 
  struct _UNICODE_STRING DestinationString; 
  GUID Guid; 
  v2 = (*(_BYTE *)(a1 + 32) & 1) == 0;
  v11 = 0i64;
  v3 = *(WCHAR **)(a1 + 16);
  v4 = _mm_cvtsi128_si32((__m128i)0i64);
  v5 = *(_QWORD *)(a1 + 40);
  if( !v2 )
    v4 = 1;
  LOBYTE(v11) = v4;
  v6 = *(WCHAR **)(a1 + 24);
  *((_QWORD *)&v11 + 1) = v5;
  v12 = *(_QWORD *)(a1 + 48);
  Guid = 0i64;
  *(_OWORD *)r8_0 = 0i64;
  DestinationString = 0i64;
  if( !v6 )
  {
    v7 = *(_WORD **)(a1 + 56);
    if( !v3 )
      return PiDmGetCmObjectListFromCache(
               3i64,
               (__int64)PiPnpRtlInterfaceFilterCallback,
               (__int64)r8_0,
               (__int64)v7,
               *(_DWORD *)(a1 + 64),
               *(_QWORD *)(a1 + 72));
    LODWORD(v9) = *(_DWORD *)(a1 + 64);
    return PiDmGetCmObjectConstraintListFromCache(
             0i64,
             v3,
             (INT64)PiPnpRtlInterfaceFilterCallback,
             (INT64)r8_0,
             v7,
             v9,
             *(UINT64 **)(a1 + 72));
  }
  if( !v3 )
  {
LABEL_11:
    LODWORD(v9) = *(_DWORD *)(a1 + 64);
    return PiDmGetCmObjectConstraintListFromCache(
             1i64,
             v6,
             (INT64)PiPnpRtlInterfaceFilterCallback,
             (INT64)r8_0,
             *(_WORD **)(a1 + 56),
             v9,
             *(UINT64 **)(a1 + 72));
  }
  result = RtlInitUnicodeStringEx(&DestinationString, v3);
  if( (int)result >= 0 )
  {
    LODWORD(result) = RtlGUIDFromString(&DestinationString, &Guid);
    if( (int)result >= 0 )
    {
      v6 = *(WCHAR **)(a1 + 24);
      r8_0[0] = (INT64)&Guid;
      goto LABEL_11;
    }
  }
  return result;
}

Referenced by:

PiPnpRtlCmActionCallback