MmQuerySessionWorkingSetInformation

VOID __fastcall MmQuerySessionWorkingSetInformation(_SYSTEM_WORKINGSET_ENTRY *SessionWsEntry, UINT64 *SessionCount){
  int v4; 
  _SYSTEM_WORKINGSET_ENTRY *v5; 
  __int64 *v6; 
  unsigned int *p_WorkingSetPageCount; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  _KLOCK_QUEUE_HANDLE LockHandle; 

  memset(&LockHandle, 0, sizeof(LockHandle));
  v4 = 0;
  v5 = &SessionWsEntry[2 * *(unsigned int *)SessionCount];
  KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 522, &LockHandle);
  v6 = (__int64 *)*(&stru_140C4DB30 + 546);
  if( (_UNKNOWN *)*(&stru_140C4DB30 + 546) != (_UNKNOWN *)((char *)&stru_140C4DB30 + 4368) )
  {
    p_WorkingSetPageCount = &SessionWsEntry[1].WorkingSetPageCount;
    do
    {
      if( p_WorkingSetPageCount - 6 != (unsigned int *)v5 )
      {
        *(p_WorkingSetPageCount - 6) = *((_DWORD *)v6 - 30);
        v8 = v6[32];
        *((_QWORD *)p_WorkingSetPageCount + 1) = v8;
        v9 = v6[31];
        *((_QWORD *)p_WorkingSetPageCount - 2) = v9;
        v10 = v6[7];
        *(_QWORD *)p_WorkingSetPageCount = v10;
        v11 = *(v6 - 10);
        *((_QWORD *)p_WorkingSetPageCount - 1) = v11;
        v12 = v11;
        if( v10 < v11 )
          v12 = v10;
        *(_QWORD *)p_WorkingSetPageCount = v12;
        if( v8 >= v9 )
          v8 = v9;
        if( v8 < v11 )
          v11 = v8;
        *((_QWORD *)p_WorkingSetPageCount + 1) = v11;
        p_WorkingSetPageCount += 10;
      }
      v6 = (__int64 *)*v6;
      ++v4;
    }
    while( v6 != (__int64 *)((char *)&stru_140C4DB30 + 4368) );
  }
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
  *(_DWORD *)SessionCount = v4;
}

Referenced by:

EtwpLogSessionWorkingSetInfo