PopFxCreateDeviceCommon
__int64 __fastcall PopFxCreateDeviceCommon(const void **a1, __int64 a2, __int64 a3, int a4, _QWORD *a5){
NTSTATUS v6;
char *PoolWithTag;
char *v8;
UNICODE_STRING v10;
UNICODE_STRING v11;
v11 = 0i64;
v6 = PopFxDuplicateUniqueId((UNICODE_STRING *)a1, &v11);
if( v6 >= 0 )
{
PoolWithTag = (char *)ExAllocatePoolWithTag(NonPagedPoolNx, 0x4B8ui64, 0x4D584650ui64);
v8 = PoolWithTag;
if( PoolWithTag )
{
memset((INT64)PoolWithTag, 0i64);
v10 = v11;
*((_QWORD *)v8 + 45) = 0i64;
*((_QWORD *)v8 + 140) = v8 + 920;
*(UNICODE_STRING *)(v8 + 216) = v10;
*((_QWORD *)v8 + 26) = v8 + 200;
*((_QWORD *)v8 + 25) = v8 + 200;
*((_QWORD *)v8 + 118) = v8;
*((_QWORD *)v8 + 73) = v8 + 576;
*((_QWORD *)v8 + 72) = v8 + 576;
*((_QWORD *)v8 + 48) = v8 + 376;
*((_QWORD *)v8 + 47) = v8 + 376;
*((_QWORD *)v8 + 57) = PopFxIdleTimeoutDpcRoutine;
*((_QWORD *)v8 + 40) = PopFxDeviceWork;
*((_QWORD *)v8 + 117) = PopFxDirectedPowerTransitionWorker;
*((_QWORD *)v8 + 126) = v8 + 1000;
*((_QWORD *)v8 + 125) = v8 + 1000;
*((_QWORD *)v8 + 135) = PopFxDirectedWorkOrderWatchdog;
*((_QWORD *)v8 + 115) = 0i64;
*((_QWORD *)v8 + 46) = 0i64;
*((_QWORD *)v8 + 124) = 0i64;
*((_QWORD *)v8 + 136) = v8 + 976;
*((_QWORD *)v8 + 121) = v8 + 976;
*((_QWORD *)v8 + 1) = v8;
*(_QWORD *)v8 = v8;
*((_WORD *)v8 + 284) = 0;
v8[570] = 6;
*((_DWORD *)v8 + 143) = 1;
v8[368] = 9;
*((_QWORD *)v8 + 49) = 0i64;
*((_DWORD *)v8 + 107) = 0;
*((_WORD *)v8 + 212) = 0;
*((_DWORD *)v8 + 108) = 275;
*((_QWORD *)v8 + 58) = v8;
*((_QWORD *)v8 + 61) = 0i64;
*((_QWORD *)v8 + 56) = 0i64;
*((_QWORD *)v8 + 41) = v8;
*((_QWORD *)v8 + 38) = 0i64;
*((_QWORD *)v8 + 144) = 0i64;
v8[992] = 8;
*((_QWORD *)v8 + 127) = 0i64;
*((_DWORD *)v8 + 263) = 0;
*((_WORD *)v8 + 524) = 0;
*((_DWORD *)v8 + 264) = 275;
*((_QWORD *)v8 + 139) = 0i64;
*((_QWORD *)v8 + 134) = 0i64;
IoInitializeRemoveLockEx((_DWORD)v8 + 272, 0x4D584650u, 0, 0);
*((_DWORD *)v8 + 58) = ((a4 & 4) != 0) + 1;
*((_DWORD *)v8 + 206) = a4;
*a5 = v8;
return(unsigned int)v6;
}
v6 = -1073741670;
}
if( v11.Buffer )
ExFreePoolWithTag(v11.Buffer, 0x4D584650u);
return(unsigned int)v6;
}Referenced by:
PopFxAcpiRegisterDevice
PopFxRegisterDeviceWorker