MiEmptyWorkingSetInitiate
INT64 __fastcall MiEmptyWorkingSetInitiate(INT64 a1, CHAR a2, INT64 a3, INT64 a4){
int v8;
INT64 v9;
int v10;
UINT8 v11;
bool v12;
unsigned int v13;
_WORD v15[3];
UINT8 v16;
INT64 v17;
INT64 v18;
INT64 v19;
INT64(__fastcall *v20)(INT64, UINT64, INT64);
INT64(__fastcall *v21)(INT64);
INT64 *p_result;
INT64 result;
int v24;
__int16 v25;
int v26;
__int64 v27;
__int64 v28;
memset((INT64)&result, 0i64);
memset((INT64)v15, 0i64);
v8 = 0;
v24 = MiTbFlushType(a1);
p_result = &result;
v15[0] = 6;
v20 = MiEmptyPte;
v21 = MiEmptyWorkingSetTail;
v10 = result;
v25 = 4;
v27 = 0i64;
v26 = 20;
v28 = 0i64;
v17 = a1;
if( (a2 & 1) != 0 )
{
v10 = result | 1;
}
else
{
if( (a2 & 2) == 0 )
goto LABEL_5;
v10 = result | 2;
}
LODWORD(result) = v10;
LABEL_5:
if( (a2 & 4) != 0 )
LODWORD(result) = v10 | 4;
v18 = a3;
v19 = a4;
v11 = MiLockWorkingSetShared(v9);
v12 = (*(_BYTE *)(a1 + 184) & 7) == 0;
v16 = v11;
if( v12 && (*(_DWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1124i64) & 0x20) != 0 )
{
v13 = -1073741558;
}
else
{
if( (unsigned int)MiWalkPageTables((INT64)v15) == 4 )
v8 = -1073741558;
v13 = v8;
}
MiUnlockWorkingSetShared(a1, v16);
return v13;
}Referenced by:
MiEmptyTargetedWorkingSet
MiEmptyWorkingSet
MiEmptyWorkingSetPrivatePagesByVa
MiTrimOrAgeWorkingSet
MmAdjustWorkingSetSizeEx