PopFxAcpiRegisterDevice

__int64 __fastcall PopFxAcpiRegisterDevice(const void **a1, ULONG_PTR a2, __int64 a3, _QWORD *a4, _QWORD *a5){
  int v8; 
  _QWORD *v9; 
  int v10; 
  __int128 v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14; 
  PVOID P; 
  ULONG_PTR BugCheckParameter4[2]; 
  __int128 v18; 
  __int64 v19; 
  P = 0i64;
  v19 = 0i64;
  *(_OWORD *)BugCheckParameter4 = 0i64;
  v18 = 0i64;
  v8 = PopFxCreateDeviceCommon(a1, a2, a3, 4, &P);
  v9 = P;
  v10 = v8;
  if( v8 < 0 )
    goto LABEL_7;
  v11 = *(_OWORD *)(a3 + 16);
  *(_OWORD *)BugCheckParameter4 = *(_OWORD *)a3;
  v12 = *(_QWORD *)(a3 + 32);
  *((_QWORD *)&v18 + 1) = *((_QWORD *)&v11 + 1);
  *(_QWORD *)&v18 = P;
  v19 = v12;
  PopPluginAcpiNotificationStrict(a2, 3ui64, (ULONG_PTR)BugCheckParameter4);
  if( !*((_QWORD *)&v18 + 1) )
    goto LABEL_5;
  PopFxInsertAcpiDevice(v14, v13, (__int64)v9);
  if( *((_QWORD *)&v18 + 1) )
  {
    v9[10] = a2;
    v9[11] = *((_QWORD *)&v18 + 1);
    *a5 = *((_QWORD *)&v18 + 1);
    *a4 = v9;
  }
  else
  {
LABEL_5:
    v10 = -1073741823;
    *a4 = 0i64;
    *a5 = 0i64;
  }
  if( v10 < 0 )
  {
LABEL_7:
    if( v9 )
    {
      v9[10] = 0i64;
      v9[11] = 0i64;
      PopFxDestroyDeviceCommon(v9, 2);
    }
  }
  return(unsigned int)v10;
}

Referenced by:

PopFxAcpiDispatchNotification