MiDeleteStaleCacheMaps

VOID __stdcall MiDeleteStaleCacheMaps(){
  int v0; 
  unsigned __int64 v1; 
  INT64 *v2; 
  int v3; 
  _QWORD *v4; 
  __int64 v5; 
  _QWORD *v6; 
  __int64 v7; 
  void *v8; 
  __int64 v9; 
  _QWORD *v10; 
  int v11[8]; 
  __int64 v12[3]; 

  if( (_UNKNOWN *)*(&stru_140C4DB30 + 462) != (_UNKNOWN *)((char *)&stru_140C4DB30 + 3696) )
  {
    _InterlockedOr(v11, 0);
    v0 = KiCacheFlushTimeStamp;
    if( (unsigned int)(KiCacheFlushTimeStamp - *(&stru_140C4DB30 + 928)) > 2
      || (*(&stru_140C4DB30 + 3712) & 1) == 0 && (unsigned int)(KiCacheFlushTimeStamp - *(&stru_140C4DB30 + 928)) >= 2 )
    {
      v12[1] = (__int64)v12;
      v12[0] = (__int64)v12;
      v1 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)&stru_140C4DB30 + 458);
      while( (_UNKNOWN *)*(&stru_140C4DB30 + 462) != (_UNKNOWN *)((char *)&stru_140C4DB30 + 3696) )
      {
        v2 = (INT64 *)(*(&stru_140C4DB30 + 462) - 24i64);
        v3 = *(_DWORD *)(*(&stru_140C4DB30 + 462) - 24i64 + 56);
        if( (unsigned int)(v0 - v3) <= 2 && ((v3 & 1) != 0 || (unsigned int)(v0 - v3) < 2) )
          break;
        v4 = (_QWORD *)*(&stru_140C4DB30 + 462);
        v5 = **(&stru_140C4DB30 + 462);
        v6 = (_QWORD *)v2[4];
        if( *(_QWORD *)(**(&stru_140C4DB30 + 462) + 8i64) != *(&stru_140C4DB30 + 462)
          || *v6 != *(&stru_140C4DB30 + 462)
          || (*v6 = v5,
              *(_QWORD *)(v5 + 8) = v6,
              RtlAvlRemoveNode((UINT64 *)&stru_140C4DB30 + 461, v2),
              v7 = v12[0],
              --*(&stru_140C4DB30 + 465),
              *(__int64 **)(v12[0] + 8) != v12) )
        {
LABEL_20:
          __fastfail(3u);
        }
        *v4 = v12[0];
        v4[1] = v12;
        *(_QWORD *)(v7 + 8) = v4;
        v12[0] = (__int64)v4;
      }
      ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&stru_140C4DB30 + 458);
      __writecr8(v1);
      while( (__int64 *)v12[0] != v12 )
      {
        v8 = (void *)(v12[0] - 24);
        v9 = *(_QWORD *)v12[0];
        v10 = *(_QWORD **)(v12[0] + 8);
        if( *(_QWORD *)(*(_QWORD *)v12[0] + 8i64) != v12[0] || *v10 != v12[0] )
          goto LABEL_20;
        *v10 = v9;
        *(_QWORD *)(v9 + 8) = v10;
        ExFreePoolWithTag(v8, 0);
      }
    }
  }
}

Referenced by:

MiWorkingSetManager