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