CcShouldSpinAsyncReadWorkerThread

UINT8 __stdcall CcShouldSpinAsyncReadWorkerThread(_LIST_ENTRY **AsyncWorkerThreadEntry, UINT64 NestingLevel){
  unsigned int v2; 
  __int64 v3; 
  _DWORD *v6; 
  unsigned int v7; 
  UINT8 v8; 
  _LIST_ENTRY *v9; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v12; 

  v3 = v2;
  v6 = (_DWORD *)AsyncWorkerThreadEntry[111] + 101 * v2;
  v7 = 0;
  v8 = 1;
  v9 = &AsyncWorkerThreadEntry[105][v2];
  if( *(&CmpDummyThreadEvent + 724) )
  {
    while( *v6 >= 0x3Fu )
    {
      ++v7;
      ++v6;
      if( v7 >= *(&CmpDummyThreadEvent + 724) )
        goto LABEL_6;
    }
    return 0;
  }
  else
  {
LABEL_6:
    if( NestingLevel )
    {
      *(_QWORD *)NestingLevel = 0i64;
      ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)AsyncWorkerThreadEntry + 112, 0i64);
      Flink = v9->Flink;
      if( v9->Flink != v9 )
      {
        if( Flink->Blink != v9 || (v12 = Flink->Flink, Flink->Flink->Blink != Flink) )
          __fastfail(3u);
        v9->Flink = v12;
        v12->Blink = v9;
        *(_QWORD *)NestingLevel = Flink;
        ++*((_DWORD *)&AsyncWorkerThreadEntry[106]->Flink + v3);
        if( _InterlockedIncrement64((volatile signed __int64 *)AsyncWorkerThreadEntry + 121) <= 1 )
          __fastfail(0xEu);
      }
      ExReleasePushLockEx((_DWORD)AsyncWorkerThreadEntry + 896, 0);
      if( !*(_QWORD *)NestingLevel )
        _InterlockedAdd(&CcDbgFoundAsyncReadThreadListEmpty, 1u);
    }
  }
  return v8;
}

Referenced by:

CcAsyncReadWorker
CcPostWorkQueueAsyncRead