ViGrowPoolAllocation
PSLIST_ENTRY __fastcall ViGrowPoolAllocation(union SLIST_HEADER *a1){
struct _SLIST_ENTRY *PoolWithTagPriority;
union _SLIST_HEADER *v3;
struct _SLIST_ENTRY *v4;
__int64 v6;
PoolWithTagPriority = (struct _SLIST_ENTRY *)ExAllocatePoolWithTagPriority(
(POOL_TYPE)640,
0x1000ui64,
0x70706556ui64,
HighPoolPriority);
v3 = (union SLIST_HEADER *)((char *)a1 + 80);
v4 = PoolWithTagPriority;
if( !PoolWithTagPriority )
return RtlpInterlockedPopEntrySList((union SLIST_HEADER *)((char *)a1 + 80));
KeZeroSinglePage(PoolWithTagPriority);
*((_QWORD *)&v4->Next + 1) = a1;
v4[1].Next = (_SLIST_ENTRY *)556929861;
RtlpInterlockedPushEntrySList((union SLIST_HEADER *)((char *)a1 + 64), v4);
v6 = 126i64;
do
{
v4 += 2;
v4[1].Next = (_SLIST_ENTRY *)1;
RtlpInterlockedPushEntrySList(v3, v4);
--v6;
}
while( v6 );
v4[3].Next = (_SLIST_ENTRY *)1;
return v4 + 2;
}Referenced by:
VeAllocatePoolWithTagPriority