CmpQueueLazyCommitWorker
void __fastcall CmpQueueLazyCommitWorker(__int64 a1){
_ETHREAD *CurrentThread;
char v2;
_QWORD *v4;
_QWORD *v5;
bool v6;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v2 = 0;
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireFastMutexUnsafe((PFAST_MUTEX)((char *)&CmpDummyThreadEvent + 64));
*(_DWORD *)(a1 + 48) &= ~0x40u;
v4 = (_QWORD *)*(&CmpDummyThreadEvent + 33);
v5 = (_QWORD *)(a1 + 32);
if( (_UNKNOWN *)**(&CmpDummyThreadEvent + 33) != (_UNKNOWN *)((char *)&CmpDummyThreadEvent + 256) )
__fastfail(3u);
v6 = *(_BYTE *)CmpLazyCommitWorkItemActive == 0;
*v5 = (char *)&CmpDummyThreadEvent + 256;
v5[1] = v4;
*v4 = v5;
*(&CmpDummyThreadEvent + 33) = v5;
if( v6 )
{
v2 = 1;
*(_BYTE *)CmpLazyCommitWorkItemActive = 1;
}
ExReleaseFastMutexUnsafe((PFAST_MUTEX)((char *)&CmpDummyThreadEvent + 64));
KeLeaveCriticalRegionThread(KeGetCurrentThread());
if( v2 )
KiSetTimerEx(
(_KTIMER *)&CmpDummyThreadEvent + 3,
(_LARGE_INTEGER)-300000000i64,
0i64,
0,
(_KDPC *)((char *)&CmpDummyThreadEvent + 288));
}Referenced by:
CmKtmNotification