ExpScanSystemLookasideList

VOID __stdcall ExpScanSystemLookasideList(){
  __int64 v0; 
  unsigned int v1; 
  __int64 v2; 
  __int64 *v3; 
  __int64 v4; 
  UINT64 v5; 
  __int64 v6; 
  __int64 v7; 
  UINT64 v8; 
  UINT64 v9; 
  UINT64 v10; 
  unsigned int i; 
  __int64 v12; 
  INT64 *v13; 
  __int64 *v14; 
  __int64 v15; 
  UINT64 v16; 
  v0 = 9i64;
  v1 = 3 * KeNumberProcessors_0;
  if( ExpPoolScanCount == (_DWORD)KeNumberProcessors_0 )
  {
    v14 = (__int64 *)((char *)KeGetCurrentPrcb() + 2056);
    do
    {
      v15 = *v14;
      if( *v14 )
      {
        v16 = (unsigned int)(*(_DWORD *)(v15 + 24) - *(_DWORD *)(v15 + 84));
        *(_DWORD *)(v15 + 84) = *(_DWORD *)(v15 + 24);
        ExpComputeLookasideDepth((GENERAL_LOOKASIDE *)v15, v16, v1);
      }
      v14 += 2;
      --v0;
    }
    while( v0 );
  }
  else
  {
    v2 = (__int64)*(&KiProcessorBlock + (unsigned int)ExpPoolScanCount);
    v3 = (__int64 *)(v2 + 2048);
    do
    {
      v4 = *v3;
      if( *v3 )
      {
        v5 = (unsigned int)(*(_DWORD *)(v4 + 24) - *(_DWORD *)(v4 + 84));
        *(_DWORD *)(v4 + 84) = *(_DWORD *)(v4 + 24);
        ExpComputeLookasideDepth((GENERAL_LOOKASIDE *)v4, v5, v1);
      }
      v3 += 2;
      --v0;
    }
    while( v0 );
    v6 = v2 + 2388;
    v7 = 32i64;
    do
    {
      v8 = (unsigned int)(*(_DWORD *)(v6 - 64) - *(_DWORD *)(v6 - 4) - (*(_DWORD *)(v6 - 60) - *(_DWORD *)v6));
      *(_DWORD *)v6 = *(_DWORD *)(v6 - 60);
      ExpComputeLookasideDepth((GENERAL_LOOKASIDE *)(v6 - 84), v8, v1);
      v9 = (unsigned int)(*(_DWORD *)(v6 + 3008)
                        - *(_DWORD *)(v6 + 3068)
                        - (*(_DWORD *)(v6 + 3012)
                         - *(_DWORD *)(v6 + 3072)));
      *(_DWORD *)(v6 + 3072) = *(_DWORD *)(v6 + 3012);
      ExpComputeLookasideDepth((GENERAL_LOOKASIDE *)(v6 + 2988), v9, v1);
      v10 = (unsigned int)(*(_DWORD *)(v6 + 6080)
                         - *(_DWORD *)(v6 + 6140)
                         - (*(_DWORD *)(v6 + 6084)
                          - *(_DWORD *)(v6 + 6144)));
      *(_DWORD *)(v6 + 6144) = *(_DWORD *)(v6 + 6084);
      ExpComputeLookasideDepth((GENERAL_LOOKASIDE *)(v6 + 6060), v10, v1);
      v6 += 96i64;
      --v7;
    }
    while( v7 );
  }
  for( i = 0; i < dword_140C57DD0; ++i )
  {
    v12 = 2i64;
    v13 = &qword_140C57E40[1048 * i];
    do
    {
      RtlpDynamicLookasideRebalance(v13);
      v13 += 520;
      --v12;
    }
    while( v12 );
  }
  if( ++ExpPoolScanCount > (unsigned int)KeNumberProcessors_0 )
    ExpPoolScanCount = 0;
}

Referenced by:

KeBalanceSetManager