PiSwPnPInfoInit

INT64 __fastcall PiSwPnPInfoInit(INT64 a1, INT64 a2, WCHAR **a3){
  int MultiSZ; 
  WCHAR **v6; 
  _OWORD *PoolWithTag; 
  *(_DWORD *)(a1 + 40) = *(_DWORD *)(a2 + 64);
  MultiSZ = PnpAllocateMultiSZ(*(WCHAR **)(a2 + 32), *(unsigned int *)(a2 + 24), a3);
  if( MultiSZ >= 0 )
  {
    MultiSZ = PnpAllocateMultiSZ(*(WCHAR **)(a2 + 48), *(unsigned int *)(a2 + 40), v6);
    if( MultiSZ >= 0 )
    {
      if( *(_QWORD *)(a2 + 56) )
      {
        PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x10ui64, 0x57706E50ui64);
        *(_QWORD *)(a1 + 16) = PoolWithTag;
        if( PoolWithTag )
          *PoolWithTag = *(_OWORD *)*(_QWORD *)(a2 + 56);
        else
          MultiSZ = -1073741670;
      }
      if( MultiSZ >= 0 )
      {
        MultiSZ = PnpAllocatePWSTR(*(WCHAR **)(a2 + 72), 0x7FFFui64, 0x57706E50ui64, (WCHAR **)(a1 + 24));
        if( MultiSZ >= 0 )
          return(unsigned int)PnpAllocatePWSTR(*(WCHAR **)(a2 + 80), 0x7FFFui64, 0x57706E50ui64, (WCHAR **)(a1 + 32));
      }
    }
  }
  return(unsigned int)MultiSZ;
}

Referenced by:

PiSwIrpStartCreateWorker
PiSwQueuedCreateInfoCreate