MiGetWorkingSetInfoEx

INT64 __fastcall MiGetWorkingSetInfoEx(INT64 a1, INT64 a2, UINT64 *a3, UINT64 a4){
  int v5; 
  unsigned int v8; 
  INT64 v9; 
  int v10; 
  int v11; 
  UINT64 v13; 
  UINT64 v14; 
  __int64 v15; 
  UINT64 v16; 
  UINT64 v17; 
  __int128 v18; 
  __int128 v19; 
  INT64 v20; 
  _WORD result[3]; 
  UINT8 result_6; 
  INT64 v23; 
  __int64 v24; 
  __int64(__fastcall *v25)(__int64, __int64, int); 
  __int128 *v26; 
  _KAPC_STATE ApcState; 
  v5 = a2;
  v20 = 0i64;
  memset(&ApcState, 0, sizeof(ApcState));
  v18 = 0i64;
  v19 = 0i64;
  memset((INT64)result, 0i64);
  v8 = 0;
  v9 = 0i64;
  v10 = 0;
  v11 = 1;
  if( v5 < 0 )
  {
    if( (v5 & 0x40000000) != 0 )
      v11 = 3;
    LODWORD(v18) = v11;
  }
  if( (*(_BYTE *)(a1 + 184) & 7) == 0 )
  {
    v9 = a1 - 1664;
    if( (PVOID)(a1 - 1664) == PsIdleProcess )
    {
      if( v5 >= 0 )
        a3[1] = 0i64;
      else
        *a3 = 0i64;
      return 0i64;
    }
    if( *((_QWORD *)KeGetCurrentThread() + 23) != v9 )
    {
      KiStackAttachProcess((_KPROCESS *)(a1 - 1664), 0i64, &ApcState);
      v10 = 1;
    }
  }
  v24 = -1i64;
  v25 = MiQueryLeafPte;
  result[0] = -32762;
  v26 = &v18;
  result_6 = MiLockWorkingSetShared(a1);
  if( !v9 || (*(_DWORD *)(v9 + 1124) & 0x20) == 0 )
  {
    v13 = *(_QWORD *)(a1 + 120);
    v14 = v13;
    if( v5 >= 0 )
    {
      v14 = v13 - *(_QWORD *)(a1 + 128);
      if( !v14 )
        goto LABEL_31;
      if( a4 < 0x30 )
      {
LABEL_28:
        v8 = -1073741820;
        if( v5 < 0 )
        {
LABEL_29:
          *a3 = v13;
          goto LABEL_33;
        }
        v13 -= *(_QWORD *)(a1 + 128);
LABEL_32:
        a3[1] = v13;
        goto LABEL_33;
      }
      v15 = 2i64;
      v16 = (a4 - 48) >> 5;
    }
    else
    {
      if( !v13 )
        goto LABEL_31;
      if( a4 < 0x10 )
        goto LABEL_28;
      v15 = 1i64;
      v16 = (a4 - 16) >> 3;
    }
    v17 = v16 + 1;
    if( v14 <= v17 )
    {
      if( (*(_BYTE *)(a1 + 184) & 7) == 2 )
        result[0] |= 1u;
      *((_QWORD *)&v19 + 1) = v17;
      v23 = a1;
      *((_QWORD *)&v18 + 1) = &a3[v15];
      v20 = v9;
      if( (unsigned int)MiWalkPageTables((INT64)result) == 4 )
      {
        v13 = *(_QWORD *)(a1 + 120);
        goto LABEL_28;
      }
LABEL_31:
      v13 = v19;
      if( v5 < 0 )
        goto LABEL_29;
      goto LABEL_32;
    }
    goto LABEL_28;
  }
  v8 = -1073741558;
LABEL_33:
  MiUnlockWorkingSetShared(a1, result_6);
  if( v10 == 1 )
    KiUnstackDetachProcess(&ApcState, 0i64);
  return v8;
}

Referenced by:

EtwpEnumerateWorkingSet
MiGetWorkingSetInfo
MmLogSystemShareablePfnInfo