CmpInitGlobalQuotaAllowed
INT64 __stdcall CmpInitGlobalQuotaAllowed(){
char v0;
unsigned __int64 v1;
UINT64 v2;
INT64 result;
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;
}
*(_QWORD *)CmpGlobalQuotaWarning = 95 * (v1 / 0x64);
if( CmSystemHiveLimitSize )
{
result = (unsigned int)(CmSystemHiveLimitSize << 20);
}
else
{
if( (MmGetNumberOfPhysicalPages(0i64) & 0xFFFFFFFFFFFFFFFEui64) < 0xC0000 )
v2 = MmGetNumberOfPhysicalPages(0i64) >> 1;
else
LODWORD(v2) = 393216;
result = (unsigned int)((_DWORD)v2 << 12);
}
CmSystemHiveLimitSize = result;
return result;
}Referenced by:
CmInitSystem1