MiPageFileLargestBitmapsRun
__int64 __fastcall MiPageFileLargestBitmapsRun(__int64 a1){
volatile LONG *v1;
unsigned int v3;
unsigned __int64 v4;
unsigned __int64 v5;
unsigned __int64 v6;
unsigned __int64 v7;
unsigned __int64 v8;
__int64 i;
unsigned int v10;
v1 = (volatile LONG *)(a1 + 232);
v3 = 0;
v4 = ExAcquireSpinLockShared((PEX_SPIN_LOCK)(a1 + 232));
v5 = *(_QWORD *)(a1 + 144);
if( (*(_BYTE *)(a1 + 152) & 1) != 0 && v5 )
v5 ^= a1 + 144;
v6 = 0i64;
while( v5 )
{
if( *(_DWORD *)(v5 + 52) == -1 )
{
if( !*(_DWORD *)(v5 + 48) )
goto LABEL_13;
v7 = *(_QWORD *)v5;
v6 = v5;
}
else
{
v7 = *(_QWORD *)(v5 + 8);
}
if( (*(_BYTE *)(a1 + 152) & 1) != 0 && v7 )
v5 ^= v7;
else
v5 = v7;
}
v5 = v6;
LABEL_13:
v8 = *(_QWORD *)v5;
if( *(_QWORD *)v5 )
{
for( ; *(_QWORD *)(v8 + 8); v8 = *(_QWORD *)(v8 + 8) )
;
}
else
{
for( i = *(_QWORD *)(v5 + 16); ; i = *(_QWORD *)(v8 + 16) )
{
v8 = i & 0xFFFFFFFFFFFFFFFCui64;
if( !v8 || *(_QWORD *)(v8 + 8) == v5 )
break;
v5 = v8;
}
}
if( v8 )
v3 = *(_DWORD *)(v8 + 52);
v10 = *(_DWORD *)(a1 + 140);
if( v3 > v10 )
v10 = v3;
ExReleaseSpinLockSharedFromDpcLevel(v1);
__writecr8(v4);
return v10;
}Referenced by:
MiFindBestOutswapPagefile
MiFindFreePageFileSpace
MiGatherPagefilePages
MiGetKernelStackSwapSupport
MiTrimUnusedPageFileRegionsWorker