CmpDiscardKcb
INT64 __fastcall CmpDiscardKcb(UINT64 a1, INT64 a2){
_QWORD *v2;
__int64 v5;
__int64 v6;
__int64 v7;
unsigned __int64 v8;
__int64 v10;
__int64 v11;
void *v12;
_QWORD *v13;
v2 = *(_QWORD **)(a1 + 192);
if( v2 )
{
v10 = v2[3];
if( v10 )
{
v11 = *v2;
v12 = *(void **)(v10 + 16);
if( *(_QWORD **)(*v2 + 8i64) != v2 || (v13 = (_QWORD *)v2[1], (_QWORD *)*v13 != v2) )
__fastfail(3u);
*v13 = v11;
*(_QWORD *)(v11 + 8) = v13;
*(_QWORD *)(*(_QWORD *)(a1 + 192) + 24i64) = 0i64;
CmpDelayDerefKeyControlBlock(v12, a2);
}
}
v5 = *(_QWORD *)(a1 + 32);
++*(_QWORD *)(a1 + 304);
*(_DWORD *)(a1 + 8) |= 0x20000u;
*(_WORD *)(a1 + 66) = 0;
CmpRemoveKeyHash(v5, (_DWORD *)(a1 + 16));
CmpLockDeletedHashEntryExclusiveByKcb(a1);
v6 = *(_QWORD *)(a1 + 32);
v7 = *(_QWORD *)(v6 + 1656);
v8 = 3
* ((unsigned int)(*(_DWORD *)(v6 + 1664) - 1) & ((unsigned int)(101027
* (*(_DWORD *)(a1 + 16) ^ (*(_DWORD *)(a1 + 16) >> 9))) ^ ((unsigned __int64)(unsigned int)(101027 * (*(_DWORD *)(a1 + 16) ^ (*(_DWORD *)(a1 + 16) >> 9))) >> 9)));
*(_QWORD *)(a1 + 24) = *(_QWORD *)(v7
+ 24
* ((unsigned int)(*(_DWORD *)(v6 + 1664) - 1) & ((unsigned int)(101027
* (*(_DWORD *)(a1 + 16) ^ (*(_DWORD *)(a1 + 16) >> 9))) ^ ((unsigned __int64)(unsigned int)(101027 * (*(_DWORD *)(a1 + 16) ^ (*(_DWORD *)(a1 + 16) >> 9))) >> 9)))
+ 16);
*(_QWORD *)(v7 + 8 * v8 + 16) = a1 + 16;
return CmpUnlockDeletedHashEntryByKcb(a1);
}Referenced by:
CmDeleteLayeredKey
CmRenameKey
CmpCommitDeleteKeyUoW
CmpCommitDiscardReplacePost
CmpCommitRenameKeyUoW
CmpCompleteUnloadKey
CmpInvalidateAllHigherLayerKcbsPostCallback
CmpInvalidateSubtreeWorker
CmpLightWeightCommitDeleteKeyUoW
CmpLightWeightCommitRenameKeyUoW
CmpRefreshWorkerRoutine
CmpRemoveHiveFromNamespace
CmpTransMgrFreeVolatileData