PfSnArrayGrow
UINT64 __stdcall PfSnArrayGrow(UINT64 DesiredIndex, UINT64 *EntryCountMax, PVOID *Array){
unsigned int *v3;
unsigned int *v4;
unsigned int v5;
unsigned __int64 v6;
unsigned int v7;
UINT8 *PoolWithTag;
unsigned int v9;
UINT8 **v11;
v4 = v3;
if( (unsigned int)DesiredIndex < *v3 )
return 1;
v5 = (3 * *v3) >> 1;
if( v5 < 4 )
v5 = 4;
if( (unsigned int)DesiredIndex >= v5 )
{
v5 = DesiredIndex + 4;
if( (int)DesiredIndex + 4 < (unsigned int)DesiredIndex )
return 0;
}
v6 = 8i64 * v5;
if( v6 > 0xFFFFFFFF )
return 0;
v7 = 0;
PoolWithTag = (UINT8 *)ExAllocatePoolWithTag(PagedPool, (unsigned int)v6, 0x56506343ui64);
if( PoolWithTag )
{
v9 = 8 * *v4;
if( v9 )
memmove(PoolWithTag, *v11, v9);
if( *v11 )
ExFreePoolWithTag(*v11, 0);
*v11 = PoolWithTag;
*v4 = v5;
return 1;
}
return v7;
}Referenced by:
PfSnVolumeKeyQuery