PfSnPreallocatePrefetchHeader
INT64 __fastcall PfSnPreallocatePrefetchHeader(INT64 *a1){
VOID *PoolWithTag;
INT64 v3;
unsigned int v4;
__int64 v5;
INT64 v6;
INT64 v7;
int v8;
VOID *v9;
VOID *v10;
VOID *v11;
PoolWithTag = ExAllocatePoolWithTag(PagedPool, (unsigned int)(68 * *(_DWORD *)(*a1 + 88)), 0x68506343ui64);
if( !PoolWithTag )
return 3221225626i64;
v3 = *a1;
v4 = 0;
a1[7] = (INT64)PoolWithTag;
if( *(_DWORD *)(v3 + 88) )
{
do
{
v5 = 56i64 * v4++;
v6 = a1[7] + v5;
*(_OWORD *)v6 = 0i64;
*(_OWORD *)(v6 + 16) = 0i64;
*(_QWORD *)(v6 + 24) |= 0x200000000ui64;
v3 = *a1;
}
while( v4 < *(_DWORD *)(*a1 + 88) );
}
v7 = (INT64)PoolWithTag + 56 * *(unsigned int *)(v3 + 88);
a1[8] = v7;
a1[9] = v7 + 8i64 * *(unsigned int *)(v3 + 88);
memset((INT64)PoolWithTag, 0i64);
v8 = *(_DWORD *)(*a1 + 88) + *(_DWORD *)(*a1 + 120);
v9 = ExAllocatePoolWithTag(PagedPool, (unsigned int)(24 * v8), 0x68506343ui64);
a1[14] = (INT64)v9;
if( !v9 )
return 3221225626i64;
memset((INT64)v9, 0i64);
*((_DWORD *)a1 + 31) = v8;
v10 = ExAllocatePoolWithTag(PagedPool, 0x1810ui64, 0x4D506343ui64);
a1[10] = (INT64)v10;
if( !v10 )
return 3221225626i64;
v11 = ExAllocatePoolWithTag(NonPagedPoolNx, 0x600ui64, 0x57506343ui64);
a1[11] = (INT64)v11;
return v11 != 0i64 ? 0 : 0xC000009A;
}Referenced by:
PfSnAsyncPrefetchWorker