ExpScanGeneralLookasideList

VOID __stdcall ExpScanGeneralLookasideList(_LIST_ENTRY *ListHead, UINT64 *SpinLock){
  unsigned __int8 v4; 
  _LIST_ENTRY *Flink; 
  unsigned __int64 v6; 
  int v7; 
  unsigned int v8; 
  int v9; 
  int Flink_low; 
  int v11; 
  unsigned int v12; 
  unsigned int v13; 

  v4 = KeAcquireSpinLockRaiseToDpc(SpinLock);
  Flink = ListHead->Flink;
  v6 = v4;
  if( ListHead->Flink != ListHead )
  {
    while( 1 )
    {
      v7 = LODWORD(Flink[-3].Blink) - HIDWORD(Flink[1].Flink);
      HIDWORD(Flink[1].Flink) = Flink[-3].Blink;
      v8 = HIDWORD(Flink[-3].Flink) - LODWORD(Flink[1].Flink);
      v9 = WORD1(Flink[-3].Flink);
      LODWORD(Flink[1].Flink) = HIDWORD(Flink[-3].Flink);
      if( (_WORD)v9 != 0xFFFF )
        break;
LABEL_8:
      Flink = Flink->Flink;
      if( Flink == ListHead )
        goto LABEL_9;
    }
    Flink_low = LOWORD(Flink[-3].Flink);
    if( v8 >= 0x4B )
    {
      v12 = 1000 * v7 / v8;
      if( v12 >= 5 )
      {
        v13 = v12 * (v9 - Flink_low) / 0x7D0 + 5;
        if( v13 > 0x1E )
          v13 = 30;
        v11 = v13 + Flink_low;
        if( v11 > v9 )
          LOWORD(v11) = v9;
        goto LABEL_7;
      }
      v11 = Flink_low - 1;
    }
    else
    {
      v11 = Flink_low - 10;
    }
    if( v11 < 4 )
      LOWORD(v11) = 4;
LABEL_7:
    LOWORD(Flink[-3].Flink) = v11;
    goto LABEL_8;
  }
LABEL_9:
  KxReleaseSpinLock(SpinLock);
  __writecr8(v6);
}

Referenced by:

KeBalanceSetManager