KseShimDatabaseBootRelease

VOID __stdcall KseShimDatabaseBootRelease(){
  _ETHREAD *CurrentThread; 
  int v1; 
  char v2; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx(&KsepShimDbLock, 0i64);
  if( KsepShimDbDuringBoot )
  {
    v1 = KsepShimDbRefCount;
    if( !KsepShimDbRefCount || (--KsepShimDbRefCount, v1 == 1) )
    {
      KsepSdbBootRelease((INT64)&KsepShimDb);
      KsepSdbBootRelease((INT64)&qword_140C2ACD8);
      KsepShimDbHandle = 0i64;
      KsepShimDbDuringBoot = 0;
    }
  }
  v2 = _InterlockedExchangeAdd64(&KsepShimDbLock._bf_0, 0xFFFFFFFFFFFFFFFFui64);
  if( (v2 & 2) != 0 && (v2 & 4) == 0 )
    ExfTryToWakePushLock(&KsepShimDbLock);
  KeAbPostRelease(&KsepShimDbLock);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
}

Referenced by:

KseShimDatabaseClose
PnpCompleteSystemStartProcess