ExReleaseFastMutexUnsafeAndLeaveCriticalRegion

VOID __stdcall ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(_FAST_MUTEX *FastMutex){
  unsigned __int32 v2; 
  _ETHREAD *CurrentThread; 
  bool v4; 

  FastMutex->Owner = 0i64;
  v2 = _InterlockedCompareExchange(&FastMutex->Count, 1, 0);
  if( v2 )
    ExpReleaseFastMutexContended(FastMutex, v2);
  KeAbPostRelease(FastMutex);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v4 = CurrentThread->Tcb.KernelApcDisable++ == -1;
  if( v4
    && ($F25F8C4BA33AF922A5F1AF68CD89DDDF *)CurrentThread->Tcb.ApcState.ApcListHead[0].Flink != &CurrentThread->Tcb.152
    && !CurrentThread->Tcb.SpecialApcDisable )
  {
    KiCheckForKernelApcDelivery();
  }
}

Referenced by:

No references.