PfpSourceBuildVaArray

__int64 __fastcall PfpSourceBuildVaArray(__int64 a1, __int64 a2){
  __int64 v2; 
  unsigned int v3; 
  void *v6; 
  VOID **PoolWithTag; 
  _QWORD *v8; 
  unsigned int i; 
  __int64 v10; 
  __int64 v11; 

  v2 = *(unsigned int *)(a1 + 24);
  v3 = 0;
  if( !(_DWORD)v2 )
    return(unsigned int)-1073741275;
  if( *(_DWORD *)(a2 + 4) < (unsigned int)v2 )
  {
    v6 = *(void **)(a2 + 8);
    if( v6 )
    {
      ExFreePoolWithTag(v6, 0);
      *(_QWORD *)(a2 + 8) = 0i64;
      *(_DWORD *)(a2 + 4) = 0;
    }
    if( (unsigned __int64)(16 * v2) > 0xFFFFFFFF )
      return(unsigned int)-1073741675;
    PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (unsigned int)(16 * v2), 1096181328i64);
    *(_QWORD *)(a2 + 8) = PoolWithTag;
    if( !PoolWithTag )
      return(unsigned int)-1073741670;
    *(_DWORD *)(a2 + 4) = v2;
    LODWORD(v2) = *(_DWORD *)(a1 + 24);
  }
  v8 = *(_QWORD **)(a2 + 8);
  for( i = 0; i < (unsigned int)v2; LODWORD(v2) = *(_DWORD *)(a1 + 24) )
  {
    v10 = i++;
    v11 = *(_QWORD *)(a1 + 32) + 16 * v10;
    *v8 = *(_QWORD *)v11;
    v8 += 2;
    *(v8 - 1) = *(unsigned int *)(v11 + 8);
  }
  *(_DWORD *)a2 = v2;
  return v3;
}

Referenced by:

PfpPrefetchPrivatePages