MmLogSystemShareablePfnInfo

VOID __stdcall MmLogSystemShareablePfnInfo(UINT64 LoggerId, PVOID a2){
  __int64 v3; 
  _QWORD *v4; 
  unsigned __int64 v5; 
  UINT64 v6; 
  _MMSUPPORT_INSTANCE *AnyMultiplexedVm; 
  CHAR *v8; 
  UINT64 AggregateWorkingSetSize; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  INT64 v12; 
  _QWORD *v13; 
  int WorkingSetInfo; 
  __int64 v15; 
  int v16; 
  int v17[4]; 
  v16 = (int)a2;
  v17[0] = 2;
  v17[1] = 3;
  v3 = 0i64;
  v17[2] = 4;
  v4 = 0i64;
  v5 = 0i64;
  v6 = 0i64;
  AnyMultiplexedVm = (_MMSUPPORT_INSTANCE *)MiGetAnyMultiplexedVm(0i64);
  v8 = (CHAR *)AnyMultiplexedVm;
  AggregateWorkingSetSize = MiGetAggregateWorkingSetSize(AnyMultiplexedVm);
  if( AggregateWorkingSetSize <= v10 )
    v11 = 64i64;
  else
    v11 = AggregateWorkingSetSize - v10 + 64;
  do
  {
    if( v17[v3] == 2 )
    {
      v8 = (CHAR *)AnyMultiplexedVm;
    }
    else
    {
      if( v17[v3] == 3 )
      {
        v12 = 2i64;
      }
      else
      {
        if( v17[v3] != 4 )
          goto LABEL_11;
        v12 = 1i64;
      }
      v8 = MiGetAnyMultiplexedVm(v12);
    }
LABEL_11:
    if( v5 >= v11 )
    {
      memset((INT64)v4, 0i64);
    }
    else
    {
      if( v4 )
        ExFreePoolWithTag(v4, 0);
      v6 = 32 * v11 + 16;
      LODWORD(v13) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
      v4 = v13;
      if( !v13 )
        return;
      v5 = v11;
    }
    WorkingSetInfo = MiGetWorkingSetInfoEx((INT64)v8, 0i64, v4, v6);
    v15 = v4[1];
    if( WorkingSetInfo >= 0 )
    {
      if( v15 )
        EtwLogPfnInfoRundown(0i64, LoggerId, v16, v4);
      v3 = (unsigned int)(v3 + 1);
    }
    else
    {
      v11 = v15 + 64;
    }
  }
  while( (unsigned int)v3 < 3 );
  if( v4 )
    ExFreePoolWithTag(v4, 0);
}

Referenced by:

EtwpKernelTraceRundown