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