PopFxCreateDeviceCommon

NTSTATUS __stdcall PopFxCreateDeviceCommon(
        const VOID **Id,
        POP_FX_PLUGIN *Flags,
        POP_FX_PLUGIN *OutputFxDevice,
        UINT64 a4,
        __m128 **OutputFxDevicea){
  int v5; 
  int v6; 
  VOID **PoolWithTag; 
  VOID **v8; 
  _UNICODE_STRING v10; 
  _UNICODE_STRING v11; 

  v11 = 0i64;
  v5 = a4;
  v6 = PopFxDuplicateUniqueId(Id, &v11);
  if( v6 >= 0 )
  {
    PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x4B8ui64, 1297630800i64);
    v8 = PoolWithTag;
    if( PoolWithTag )
    {
      memset(PoolWithTag, 0i64, 0x4B8u);
      v10 = v11;
      v8[45] = 0i64;
      v8[140] = v8 + 115;
      *(_UNICODE_STRING *)(v8 + 27) = v10;
      v8[26] = v8 + 25;
      v8[25] = v8 + 25;
      v8[118] = v8;
      v8[73] = v8 + 72;
      v8[72] = v8 + 72;
      v8[48] = v8 + 47;
      v8[47] = v8 + 47;
      v8[57] = PopFxIdleTimeoutDpcRoutine;
      v8[40] = PopFxDeviceWork;
      v8[117] = PopFxDirectedPowerTransitionWorker;
      v8[126] = v8 + 125;
      v8[125] = v8 + 125;
      v8[135] = PopFxDirectedWorkOrderWatchdog;
      v8[115] = 0i64;
      v8[46] = 0i64;
      v8[124] = 0i64;
      v8[136] = v8 + 122;
      v8[121] = v8 + 122;
      v8[1] = v8;
      *v8 = v8;
      *((_WORD *)v8 + 284) = 0;
      *((_BYTE *)v8 + 570) = 6;
      *((_DWORD *)v8 + 143) = 1;
      *((_BYTE *)v8 + 368) = 9;
      v8[49] = 0i64;
      *((_DWORD *)v8 + 107) = 0;
      *((_WORD *)v8 + 212) = 0;
      *((_DWORD *)v8 + 108) = 275;
      v8[58] = v8;
      v8[61] = 0i64;
      v8[56] = 0i64;
      v8[41] = v8;
      v8[38] = 0i64;
      v8[144] = 0i64;
      *((_BYTE *)v8 + 992) = 8;
      v8[127] = 0i64;
      *((_DWORD *)v8 + 263) = 0;
      *((_WORD *)v8 + 524) = 0;
      *((_DWORD *)v8 + 264) = 275;
      v8[139] = 0i64;
      v8[134] = 0i64;
      IoInitializeRemoveLockEx((PIO_REMOVE_LOCK)(v8 + 34), 0x4D584650u, 0, 0, 0x20u);
      *((_DWORD *)v8 + 58) = ((v5 & 4) != 0) + 1;
      *((_DWORD *)v8 + 206) = v5;
      *OutputFxDevicea = (__m128 *)v8;
      return v6;
    }
    v6 = -1073741670;
  }
  if( v11.Buffer )
    ExFreePoolWithTag(v11.Buffer, 0x4D584650u);
  return v6;
}

Referenced by:

PopFxAcpiRegisterDevice
PopFxRegisterDeviceWorker