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