TryLockShutdownShared

UINT8 __stdcall TryLockShutdownShared(){
  _ETHREAD *CurrentThread; 
  _BYTE *v1; 
  UINT8 v2; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  v1 = KeAbPreAcquire((char *)&CmpDummyThreadEvent + 2712, 0i64, 1ui64);
  v2 = 0;
  if( !_InterlockedCompareExchange64((_QWORD *)&CmpDummyThreadEvent + 339, 17i64, 0i64)
    || ExfTryAcquirePushLockShared((_EX_PUSH_LOCK *)&CmpDummyThreadEvent + 339) )
  {
    if( v1 )
      v1[26] |= 1u;
    return 1;
  }
  else
  {
    if( v1 )
      KeAbPostReleaseEx((char *)&CmpDummyThreadEvent + 2712, v1);
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
  }
  return v2;
}

Referenced by:

CmpSyncNextBackupHive