CmpFreeValue

CHAR __fastcall CmpFreeValue(UINT64 a1, INT64 a2){
  ULONG_PTR v2; 
  __int64 v4; 
  bool v5; 
  void(__fastcall *v6)(UINT64, int *); 
  int v8; 
  int v9; 

  v8 = -1;
  v2 = a2;
  v9 = 0;
  v4 = (*(__int64(__fastcall **)(UINT64, INT64, int *))(a1 + 8))(a1, a2, &v8);
  if( v4 )
  {
    v5 = CmpFreeValueData(a1, *(unsigned int *)(v4 + 8), *(unsigned int *)(v4 + 4)) == 0;
    v6 = *(void(__fastcall **)(UINT64, int *))(a1 + 16);
    if( !v5 )
    {
      v6(a1, &v8);
      HvFreeCell(a1, v2);
      return 1;
    }
    v6(a1, &v8);
  }
  return 0;
}

Referenced by:

CmDeleteValueKey
CmSetValueKey
CmpCleanupLightWeightPrepare
CmpCommitDeleteValueKeyUoW
CmpFreeKeyByCell
CmpFreeKeyValueList
CmpFreeKeyValues
CmpLightWeightCommitDeleteValueKeyUoW
CmpLightWeightCommitSetValueKeyUoW
CmpLightWeightPrepareSetValueKeyUoW
CmpSetValueKeyNew
CmpSetValueKeyTombstone
CmpTransMgrFreeVolatileData