CmpFinishBeingActiveFlusherAndReconciler
void __fastcall CmpFinishBeingActiveFlusherAndReconciler(_EX_PUSH_LOCK *a1){
_KEVENT *bf_0;
_KEVENT *v3;
char v4;
CmpLockRegistry();
ExAcquirePushLockExclusiveEx(a1 + 9, 0i64);
bf_0 = (_KEVENT *)a1[532]._bf_0;
v3 = (_KEVENT *)a1[530]._bf_0;
a1[530]._bf_0 = 0i64;
a1[529]._bf_0 = 0i64;
a1[532]._bf_0 = 0i64;
a1[531]._bf_0 = 0i64;
v4 = _InterlockedExchangeAdd64(&a1[9]._bf_0, 0xFFFFFFFFFFFFFFFFui64);
if( (v4 & 2) != 0 && (v4 & 4) == 0 )
ExfTryToWakePushLock(a1 + 9);
KeAbPostRelease(&a1[9]);
CmpUnlockRegistry();
CmpWakeWriteQueueWaiters(&a1[529], v3);
CmpWakeWriteQueueWaiters(&a1[531], bf_0);
}Referenced by:
CmReplaceKey
CmpLoadHiveThread
CmpRefreshHive
CmpSaveKeyByFileCopy