MmUpdateOldWorkingSetPages
NTSTATUS __stdcall MmUpdateOldWorkingSetPages(_EPROCESS *Process, UINT64 Priority, UINT64 Flags){
char v3;
int v4;
NTSTATUS v6;
int v7;
int v8;
int v9;
bool v10;
UINT8 v11;
INT64 result;
int v15;
__int16 v16;
__int64 v17;
__int64 v18;
__int64 v19;
INT64 *v20;
_WORD v21[2];
char v22;
UINT8 v23;
__int64 v24;
__int64 v25;
INT64(__fastcall *v26)(INT64, UINT64, INT64);
UINT64(__stdcall *v27)(UINT64);
INT64 *p_result;
_KAPC_STATE ApcState;
_DWORD v30[68];
v3 = Flags;
v4 = Priority;
memset(&ApcState, 0, sizeof(ApcState));
memset((INT64)&result, 0i64);
memset((INT64)v21, 0i64);
memset((INT64)v30, 0i64);
v6 = 0;
if( *((_EPROCESS **)KeGetCurrentThread() + 23) == Process )
{
v7 = 0;
}
else
{
v7 = 1;
KiStackAttachProcess((_KPROCESS *)Process, 0i64, &ApcState);
}
v8 = result;
if( (v3 & 2) != 0 )
{
v8 = result | 1;
LODWORD(result) = result | 1;
}
if( (v3 & 1) != 0 )
LODWORD(result) = v8 | 2;
HIDWORD(result) = v4;
v17 = 20i64;
v9 = MiTbFlushType((INT64)Process + 1664);
v10 = (*((_BYTE *)Process + 1848) & 7) == 0;
v15 = v9;
v16 = 4;
v18 = 0i64;
v19 = 0i64;
if( v10 && *((_QWORD *)Process + 286) )
{
v30[1] = 32;
v20 = (INT64 *)v30;
}
v25 = -1i64;
p_result = &result;
v21[0] = 6;
v26 = MiUpdateOldPte;
v22 = 6;
v27 = MiUpdateOldWorkingSetPagesTail;
v24 = (__int64)Process + 1664;
v11 = MiLockWorkingSetShared((INT64)Process + 1664);
v23 = v11;
if( (*((_DWORD *)Process + 281) & 0x20) != 0 )
{
v6 = -1073741558;
}
else if( *((_QWORD *)Process + 219) )
{
MiWalkPageTables((INT64)v21);
v11 = v23;
}
MiUnlockWorkingSetShared((INT64)Process + 1664, v11);
if( v7 == 1 )
KiUnstackDetachProcess(&ApcState, 0i64);
return v6;
}Referenced by:
PfpDeprioritizeOldPagesInWs