MiInitializeCacheSizes
INT64 __stdcall MiInitializeCacheSizes(){
unsigned int v0;
unsigned int v1;
unsigned int v2;
unsigned int v3;
int v5;
struct _KPRCB *CurrentPrcb;
__int64 v7;
char *v8;
INT64 result;
v0 = *((_DWORD *)KeGetPcr() + 47);
dword_140C4DC18 = v0;
v1 = *((unsigned __int8 *)KeGetPcr() + 81);
if( (_BYTE)v1 )
v0 /= v1;
if( v0 )
{
_BitScanReverse(&v2, v0);
v0 = 1 << v2;
}
if( v0 - 8 > 0xF8 )
{
if( qword_140C525D0 < 0x80000 )
v0 = qword_140C525D0 < 0x40000 ? 64 : 128;
else
v0 = 256;
}
dword_140C4DC3C = v0;
dword_140C4DC38 = v0 - 1;
v3 = v0 >> 4;
if( (v0 & 0xF) != 0 )
++v3;
if( _BitScanReverse((unsigned int *)&v5, v3) )
v3 = 1 << v5;
dword_140C4DCC8 = v3;
MiInitializeLargePageColorSizes();
CurrentPrcb = KeGetCurrentPrcb();
v7 = *((unsigned int *)CurrentPrcb + 8389);
v8 = (char *)CurrentPrcb + 33496;
if( (_DWORD)v7 )
{
do
{
if( *v8 == 1 && (*((_DWORD *)v8 + 2) & 0xFFFFFFFD) == 0 )
dword_140C4DC1C = *((_DWORD *)v8 + 1);
v8 += 12;
--v7;
}
while( v7 );
}
result = 0x4000i64;
if( (unsigned int)dword_140C4DC1C < 0x4000 )
dword_140C4DC1C = 0x4000;
dword_140C4DC4C = 256;
return result;
}Referenced by:
MiInitializeColors