CmpInitGlobalQuotaAllowed
INT64 __stdcall CmpInitGlobalQuotaAllowed(){
char v0;
unsigned __int64 v1;
__int64 v2;
unsigned __int64 v3;
INT64 result;
unsigned __int64 v5;
CmpSizeOfPagedPoolInBytes = MmSizeOfPagedPoolInBytes;
if( CmRegistrySizeLimitLength == 4 && CmRegistrySizeLimitType == 4 && CmRegistrySizeLimit
|| (v0 = 0, CmRegistrySizeLimitLength == 8) && CmRegistrySizeLimitType == 11 && CmRegistrySizeLimit )
{
v0 = 1;
}
if( v0 )
{
v1 = CmRegistrySizeLimit;
CmpQuotaExplicitlySet = 1;
if( CmRegistrySizeLimit >= ((((unsigned __int64)MmSizeOfPagedPoolInBytes * (unsigned __int128)0xCCCCCCCCCCCCCCCDui64) >> 64) & 0xFFFFFFFFFFFFFFF8ui64) )
v1 = (((unsigned __int64)MmSizeOfPagedPoolInBytes * (unsigned __int128)0xCCCCCCCCCCCCCCCDui64) >> 64) & 0xFFFFFFFFFFFFFFF8ui64;
}
else
{
v1 = MmSizeOfPagedPoolInBytes / 3ui64;
}
CmpGlobalQuota = v1;
if( v1 > 0xFFFFFFFF )
{
v1 = 0xFFFFFFFFi64;
CmpGlobalQuota = 0xFFFFFFFFi64;
}
if( v1 < 0x1000000 )
{
v1 = 0x1000000i64;
CmpGlobalQuota = 0x1000000i64;
}
CmpGlobalQuotaWarning = 95 * (v1 / 0x64);
if( dword_140C50860 )
{
result = (unsigned int)(dword_140C50860 << 20);
}
else
{
LODWORD(v2) = MmGetNumberOfPhysicalPages(0i64);
if( (v2 & 0xFFFFFFFFFFFFFFFEui64) < 0xC0000 )
{
LODWORD(v5) = MmGetNumberOfPhysicalPages(0i64);
v3 = v5 >> 1;
}
else
{
LODWORD(v3) = 393216;
}
result = (unsigned int)((_DWORD)v3 << 12);
}
dword_140C50860 = result;
return result;
}Referenced by:
CmInitSystem1