KseShimDatabaseBootRelease

VOID __stdcall KseShimDatabaseBootRelease(){
  _ETHREAD *CurrentThread; 
  int v1; 
  char v2; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)&KsepShimDbLock, 0i64);
  if( KsepShimDbDuringBoot )
  {
    v1 = KsepShimDbRefCount;
    if( !KsepShimDbRefCount || (--KsepShimDbRefCount, v1 == 1) )
    {
      KsepSdbBootRelease((INT64)&KsepShimDb);
      KsepSdbBootRelease((INT64)&qword_140C2ACD8);
      KsepShimDbHandle = 0i64;
      KsepShimDbDuringBoot = 0;
    }
  }
  v2 = _InterlockedExchangeAdd64((volatile signed __int64 *)&KsepShimDbLock, 0xFFFFFFFFFFFFFFFFui64);
  if( (v2 & 2) != 0 && (v2 & 4) == 0 )
    ExfTryToWakePushLock((volatile INT64 *)&KsepShimDbLock);
  KeAbPostRelease(&KsepShimDbLock);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}

Referenced by:

KseShimDatabaseClose
PnpCompleteSystemStartProcess