PnpCopyDevProperty

__int64 __fastcall PnpCopyDevProperty(__int64 a1, __int64 a2, __int64 a3){
  int PWSTR; 
  WCHAR *v6; 
  unsigned int v7; 
  VOID **PoolWithTag; 

  PWSTR = 0;
  *(_OWORD *)a3 = *(_OWORD *)a1;
  *(_OWORD *)(a3 + 16) = *(_OWORD *)(a1 + 16);
  *(_OWORD *)(a3 + 32) = *(_OWORD *)(a1 + 32);
  *(_QWORD *)(a3 + 24) = 0i64;
  *(_QWORD *)(a3 + 40) = 0i64;
  v6 = *(WCHAR **)(a1 + 24);
  if( v6 )
  {
    PWSTR = PnpAllocatePWSTR(v6, 0x7FFFFFFFui64, 0x57706E50u, (PVOID *)(a3 + 24));
    if( PWSTR < 0 )
      goto LABEL_9;
  }
  v7 = *(_DWORD *)(a3 + 36);
  if( v7 )
  {
    PoolWithTag = ExAllocatePoolWithTag(1ui64, v7, 1466986064i64);
    *(_QWORD *)(a3 + 40) = PoolWithTag;
    if( !PoolWithTag )
    {
      PWSTR = -1073741670;
LABEL_9:
      PnpFreeDevProperty(a3, 0x57706E50u);
      *(_OWORD *)a3 = 0i64;
      *(_OWORD *)(a3 + 16) = 0i64;
      *(_OWORD *)(a3 + 32) = 0i64;
      return(unsigned int)PWSTR;
    }
  }
  memmove(*(VOID **)(a3 + 40), *(const VOID **)(a1 + 40), *(_DWORD *)(a3 + 36));
  return(unsigned int)PWSTR;
}

Referenced by:

PnpCopyDevPropertyArray