SmBinaryArrayGrow
CHAR *__fastcall SmBinaryArrayGrow(INT64 a1, UINT64 a2){
CHAR *v2;
INT64 v3;
unsigned int v4;
int v5;
char *v6;
__int64 v7;
char *PoolWithTag;
v2 = 0i64;
v3 = a1;
_BitScanReverse((unsigned int *)&a1, a2);
v5 = a2 ^ (1 << v4);
if( v4 < 0x20 )
{
v6 = *(char **)(v3 + 8 * a1);
v7 = (unsigned int)a1;
if( !v6 )
{
PoolWithTag = (char *)ExAllocatePoolWithTag(NonPagedPoolNx, (unsigned int)(16 * (1 << a1)), 0x41426D73ui64);
v6 = PoolWithTag;
if( !PoolWithTag )
return v2;
memset((INT64)PoolWithTag, 0i64);
*(_QWORD *)(v3 + 8 * v7) = v6;
}
return &v6[16 * v5];
}
return v2;
}Referenced by:
SmHpBufferAlloc