CmpCleanupDiscardReplaceContext

VOID __stdcall CmpCleanupDiscardReplaceContext(_CMP_DISCARD_AND_REPLACE_KCB_CONTEXT *Context){
  __int64 v1; 
  VOID *v3; 
  _CM_KEY_CONTROL_BLOCK *BaseKcb; 
  _LIST_ENTRY *p_ClonedKcbListHead; 

  v3 = (VOID *)v1;
  BaseKcb = Context->BaseKcb;
  if( BaseKcb )
  {
    p_ClonedKcbListHead = &Context->ClonedKcbListHead;
    if( p_ClonedKcbListHead->Flink != p_ClonedKcbListHead )
    {
      CmpEnumerateAllHigherLayerKcbs(
        (__int64)BaseKcb,
        (unsigned int(__fastcall *)(void *, __int64))CmpCleanupDiscardReplacePre,
        (unsigned int(__fastcall *)(void *, __int64, __int64))CmpCleanupDiscardReplacePost,
        v1,
        (__int64)Context,
        1,
        0);
      if( p_ClonedKcbListHead->Flink != p_ClonedKcbListHead )
        CmpCleanupDiscardReplacePost(Context->BaseKcb, v3);
    }
  }
}

Referenced by:

CmDeleteLayeredKey
CmpCleanupLightWeightPrepare
CmpCommitDeleteKeyUoW
CmpLightWeightCommitDeleteKeyUoW
CmpLightWeightPrepareDeleteKeyUoW