CmpUnlockHashEntryByKcb

INT64 __fastcall CmpUnlockHashEntryByKcb(INT64 a1){
  __int64 v1; 
  unsigned int v2; 
  __int64 v3; 
  __int64 v4; 
  INT64 result; 
  v1 = *(_QWORD *)(a1 + 32);
  v2 = 101027 * (*(_DWORD *)(a1 + 16) ^ (*(_DWORD *)(a1 + 16) >> 9));
  *(_QWORD *)(*(_QWORD *)(v1 + 1640)
            + 24 * ((unsigned int)(*(_DWORD *)(v1 + 1648) - 1) & (v2 ^ ((unsigned __int64)v2 >> 9)))
            + 8) = 0i64;
  v3 = *(_QWORD *)(a1 + 32);
  v4 = (unsigned int)(101027 * (*(_DWORD *)(a1 + 16) ^ (*(_DWORD *)(a1 + 16) >> 9)));
  ExReleasePushLockEx(
    *(_QWORD *)(v3 + 1640)
  + 24 * ((unsigned int)(*(_DWORD *)(v3 + 1648) - 1) & (v4 ^ ((unsigned __int64)(unsigned int)v4 >> 9))),
    0i64);
  result = (unsigned int)_InterlockedExchangeAdd((volatile signed __int32 *)(v1 + 4272), 0xFFFFFFFF);
  if( (_DWORD)result == 1 )
    return CmpDeleteHive((PVOID)v1);
  return result;
}

Referenced by:

CmDeleteLayeredKey
CmpDoBuildVirtualStack
CmpDoParseKey
CmpGetSymbolicLinkTarget
CmpPerformCompleteKcbCacheLookup
CmpRemoveHiveFromNamespace
CmpTransMgrFreeVolatileData