MiOutSwapWorkingSet
VOID __fastcall MiOutSwapWorkingSet(INT64 a1, INT64 a2, INT64 a3, INT64 a4, INT64 a5){
bool v9;
INT64 *SharedVm;
KIRQL v11;
int v12;
UINT8 v13;
_WORD result[3];
char result_6;
INT64 v16;
INT64 v17;
INT64 v18;
INT64(__fastcall *v19)(INT64, UINT64, INT64);
INT64 v20;
memset((INT64)result, 0i64);
v9 = (*(_BYTE *)(a1 + 184) & 7) == 0;
v19 = MiOutSwapWorkingSetPte;
result[0] = 129;
v16 = a1;
v20 = a5;
if( v9 )
{
v17 = a3;
result[0] = 131;
v18 = a4;
SharedVm = MiGetSharedVm(a1);
v11 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)SharedVm);
*((_DWORD *)SharedVm + 1) = 0;
v12 = *(_DWORD *)(a2 + 48);
result_6 = v11;
if( (v12 & 4) != 0 )
{
v13 = v11;
goto LABEL_5;
}
}
else
{
result_6 = 17;
}
MiWalkPageTables((INT64)result);
if( (*(_BYTE *)(a1 + 184) & 7) != 0 )
return;
v13 = result_6;
LABEL_5:
MiUnlockWorkingSetExclusive(a1, v13);
}Referenced by:
MiOutSwapKernelStackPage
MmOutSwapVirtualAddresses
MmOutSwapWorkingSet