MiPageFileNoFreeSpace
__int64 __fastcall MiPageFileNoFreeSpace(__int64 a1, _QWORD *a2){
__int64 v2;
UINT64 v4;
unsigned __int64 v6;
int v7;
unsigned __int64 v8;
unsigned __int128 v9;
unsigned __int64 v10;
unsigned __int64 v11;
unsigned int v12;
unsigned int v13;
__int64 v14;
unsigned __int64 v15;
v2 = *(_QWORD *)(a1 + 248);
v4 = 1i64;
MiFreeModifiedReservations((_MMPAGING_FILE *)a1, 1ui64);
v6 = 0i64;
v7 = 0;
v8 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(a1 + 232));
if( *(_QWORD *)(a1 + 24) )
{
MiMakePagefileWriterEntryAvailable(a2);
}
else
{
*(_BYTE *)(a1 + 206) |= 1u;
v7 = 1;
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(a1 + 232));
*(_QWORD *)&v9 = (unsigned int)KiIrqlFlags;
__writecr8(v8);
if( v7 == 1 )
{
*(_QWORD *)&v9 = 2575857425i64;
*a2 = 2575857425i64;
v10 = *(_QWORD *)(v2 + 7592);
v11 = *(_QWORD *)(v2 + 7464);
if( v11 > v10 )
v11 = *(_QWORD *)(v2 + 7592);
if( (*(_BYTE *)(a1 + 204) & 0x10) == 0 )
{
v9 = v10 * (unsigned __int128)0xCCCCCCCCCCCCCCCDui64;
if( v11 > (*((_QWORD *)&v9 + 1) & 0xFFFFFFFFFFFFFFF8ui64) && v10 < *(_QWORD *)(v2 + 6216) )
{
MiCauseOverCommitPopup((_MI_PARTITION *)v2);
LABEL_20:
*(_QWORD *)&v9 = *(_QWORD *)(v2 + 7592);
if( (unsigned __int64)v9 < *(_QWORD *)(v2 + 6216) )
*(_QWORD *)&v9 = MiIssuePageExtendRequest((_MI_PARTITION *)v2, v4, 6ui64, 0i64);
return v9;
}
if( *(_QWORD *)(v2 + 7600) >= 0x1000ui64 )
{
v12 = *(_DWORD *)(v2 + 6936);
v13 = 0;
if( v12 )
{
v14 = v2 + 6944;
do
{
if( (*(_BYTE *)(*(_QWORD *)v14 + 204i64) & 0x50) == 0 )
{
if( v6 + *(_QWORD *)(*(_QWORD *)v14 + 24i64) < v6 )
break;
v6 += *(_QWORD *)(*(_QWORD *)v14 + 24i64);
}
++v13;
v14 += 8i64;
}
while( v13 < v12 );
}
v15 = *(_QWORD *)(v2 + 7600);
if( v15 > v6 )
{
v4 = v15 - v6;
if( v4 )
goto LABEL_20;
}
}
}
}
return v9;
}Referenced by:
MiGatherPagefilePages