CmpUnlockHashEntryByKcb
INT64 __fastcall CmpUnlockHashEntryByKcb(INT64 a1){
__int64 v1;
unsigned int v2;
__int64 v3;
unsigned int 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 = 101027 * (*(_DWORD *)(a1 + 16) ^ (*(_DWORD *)(a1 + 16) >> 9));
ExReleasePushLockEx(*(_DWORD *)(v3 + 1640) + 24 * ((*(_DWORD *)(v3 + 1648) - 1) & (v4 ^ (v4 >> 9))), 0);
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