CmAddDeviceToContainer

__int64 __fastcall CmAddDeviceToContainer(__int64 a1, const WCHAR *a2, const WCHAR *a3, const WCHAR *a4, _BYTE *a5){
  __int64(__fastcall *v9)(__int64, const WCHAR *, __int64); 
  int v10; 
  int v11; 
  int v12; 
  int v13; 
  INT64 result[2]; 
  int v16[2]; 
  int v17[2]; 
  ULONG v18[16]; 
  memset((INT64)result, 0i64);
  v9 = *(__int64(__fastcall **)(__int64, const WCHAR *, __int64))(a1 + 504);
  *(_QWORD *)v17 = a4;
  *(_QWORD *)v16 = a3;
  if( v9 )
  {
    v10 = v9(a1, a2, 5i64);
    if( v10 == -1073741822 )
    {
      v9 = 0i64;
    }
    else
    {
      if( v10 == -1073741536 )
        goto LABEL_15;
      if( v10 )
        return(unsigned int)-1073741595;
    }
  }
  v11 = CmAddDeviceToContainerWorker(a1, a2, *(const WCHAR **)v16, *(const WCHAR **)v17, v18);
  v12 = v11;
  if( !v9 || (LODWORD(result[0]) = v11, v13 = v9(a1, a2, 5i64), v13 == -1073741822) )
  {
LABEL_9:
    if( !LOBYTE(v18[0]) )
      PnpObjectRaiseDevicesChangeEvent(a1, (__int64)a2, 5i64);
    goto LABEL_11;
  }
  if( v13 != -1073741536 )
  {
    if( !v13 )
      goto LABEL_9;
    return(unsigned int)-1073741595;
  }
LABEL_15:
  v12 = result[0];
LABEL_11:
  if( v12 >= 0 && a5 )
    *a5 = v18[0];
  return(unsigned int)v12;
}

Referenced by:

CmMoveBaseContainer
IopInitializePlugPlayServices
PiDcUpdateDeviceContainerMembership