PfpDeprioritizeOldPagesInWs

NTSTATUS __stdcall PfpDeprioritizeOldPagesInWs(_SUPERFETCH_INFORMATION *Info, INT8 PreviousMode){
  size_t v3; 
  int v4; 
  unsigned __int64 v5; 
  unsigned int v6; 
  unsigned int v7; 
  UINT64 v8; 
  int v9; 
  UINT64 Tag; 
  _HANDLE Handle[4]; 
  __int64 v13; 
  PVOID Object; 

  *(_OWORD *)Handle = 0i64;
  v13 = 0i64;
  Object = 0i64;
  v3 = 24;
  if( Info[6] == 24 )
  {
    if( PreviousMode )
    {
      v5 = *((_QWORD *)Info + 2);
      if( (v5 & 7) != 0 )
        ExRaiseDatatypeMisalignment();
      if( v5 + 24 > 0x7FFFFFFF0000i64 || v5 + 24 < v5 )
      {
        MEMORY[0x7FFFFFFF0000] = 0;
        v3 = Info[6];
      }
    }
    memmove(Handle, *((const VOID **)Info + 2), v3);
    if( Handle[0] != 3
      || (v13 & 0xFFFFFFC0) != 0
      || (v6 = v13 & 0xF, v6 > 8)
      || (v7 = ((unsigned int)v13 >> 4) & 3, v7 == 3)
      || v6 == 8 && !v7 )
    {
      v4 = -1073741811;
    }
    else
    {
      LODWORD(Tag) = 1935107664;
      v4 = ObReferenceObjectByHandleWithTag(
             *(VOID **)&Handle[2],
             0x2000ui64,
             (_OBJECT_TYPE *)PsProcessType,
             PreviousMode,
             Tag,
             &Object,
             0i64);
      if( v4 >= 0 )
      {
        v8 = 0i64;
        if( v7 )
        {
          v8 = 1i64;
          if( v7 == 1 )
            v8 = 3i64;
        }
        MmUpdateOldWorkingSetPages((_EPROCESS *)Object, v6, v8);
        v4 = v9;
      }
    }
  }
  else
  {
    v4 = -1073741306;
  }
  if( Object )
    ObfDereferenceObjectWithTag(Object, 0x73576650ui64);
  return v4;
}

Referenced by:

PfSetSuperfetchInformation