MiComputePagedPoolSegmentBytes
NTSTATUS __stdcall MiComputePagedPoolSegmentBytes(INT64 a1){
__int64 v2;
INT64 i;
__int64 v4;
unsigned __int64 v5;
int v6;
unsigned int v7;
if( (*(_DWORD *)(a1 + 56) & 0x20) == 0 )
return 64;
v2 = 0i64;
for( i = a1 + 128; i; v2 += v4 )
{
v4 = *(unsigned int *)(i + 44);
i = *(_QWORD *)(i + 16);
}
v5 = 8 * v2;
if( (unsigned __int64)(8 * v2) > 0xFE0 )
{
if( v5 >= 0x10000 || ((8 * (_WORD)v2) & 0xFFFu) > 0xFC0 )
{
v7 = (v5 + 4095) & 0xFFFFF000;
return v7 + 176;
}
v6 = v5 + 15;
}
else
{
v6 = v5 + 31;
}
v7 = v6 & 0xFFFFFFF0;
return v7 + 176;
}Referenced by:
MiInsertUnusedSegment
MiUnlinkUnusedControlArea