MiAdjustCachedStacks
VOID __stdcall MiAdjustCachedStacks(){
unsigned int i;
__int64 v1;
unsigned int v2;
unsigned int v3;
__int64 v4;
__int64 v5;
unsigned __int16 *v6;
unsigned int v7;
int v8;
unsigned int v9;
int v10;
int v11;
int v12;
INT64 v13;
int v14;
__int64 v15;
int v16;
int v17;
PSLIST_ENTRY v18;
for( i = 0; i < (unsigned int)KeNumberProcessors_0; ++i )
{
KeGetPrcb(i);
if( *(_QWORD *)(v1 + 32520) )
{
v13 = _InterlockedExchange64((volatile __int64 *)(v1 + 32520), 0i64);
if( v13 )
MiDeleteCachedKernelStack(v13);
}
}
v2 = (unsigned __int16)KeNumberNodes;
v3 = 0;
do
{
v4 = 0i64;
v5 = 176i64 * v3;
do
{
v6 = (unsigned __int16 *)((char *)SListHead + v5);
v7 = *(_DWORD *)((char *)SListHead + v5 + 20) - *(_DWORD *)((char *)SListHead + v5 + 24);
if( v7 )
{
v8 = *((_DWORD *)v6 + 4);
if( v8 < 16 || v7 >= 0x10 )
{
v17 = 4;
v9 = *((_DWORD *)v6 + 4);
v10 = v8 >> 31;
}
else
{
v9 = *((_DWORD *)v6 + 4);
v10 = v8 >> 31;
if( v8 >= 64 )
{
v11 = v8 / 16;
LABEL_11:
*((_DWORD *)v6 + 6) = *(_DWORD *)((char *)SListHead + v5 + 20);
if( !v11 )
v11 = 1;
v12 = v11 + v8;
if( v12 > 256 )
v12 = 256;
*((_DWORD *)v6 + 4) = v12;
goto LABEL_16;
}
v17 = 8;
}
v11 = __SPAIR64__(v10, v9) / v17;
goto LABEL_11;
}
if( !*((_DWORD *)v6 + 7) )
{
v14 = *((_DWORD *)v6 + 4);
LODWORD(v15) = v14 / 20;
if( !(v14 / 20) )
v15 = v14 != 0;
v16 = v14 - v15;
if( v4 != 1 && v16 < 5 )
v16 = 5;
*((_DWORD *)v6 + 4) = v16;
while( *v6 > v16 )
{
v18 = RtlpInterlockedPopEntrySList((PSLIST_HEADER)v6);
if( v18 )
MiDeleteCachedKernelStack((INT64)v18);
}
}
LABEL_16:
*((_DWORD *)v6 + 7) = 0;
++v4;
v5 += 32i64;
}
while( v4 <= 1 );
++v3;
}
while( v3 < v2 );
}Referenced by:
MiWorkingSetManager