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