CmpSetValueKeyNew

INT64 __fastcall CmpSetValueKeyNew(
        _HHIVE *Hive,
        _CM_KEY_NODE *Parent,
        _UNICODE_STRING *ValueName,
        UINT64 Index,
        UINT64 Type,
        VOID *Data,
        UINT64 DataSize,
        UINT64 StorageType){
  _HHIVE **p_KeyHive; 
  unsigned int v9; 
  unsigned int v12; 
  unsigned int v13; 
  UINT64 v15; 
  UINT64 v16; 
  p_KeyHive = &Parent->ChildHiveReference.KeyHive;
  v9 = Index;
  if( Parent->ValueList.Count && !HvMarkCellDirty((UINT64)Hive, Parent->ValueList.List, 0) )
    return 3221225853i64;
  LODWORD(v16) = StorageType;
  LODWORD(v15) = DataSize;
  v12 = CmpAddValueKeyNew(Hive, ValueName, (unsigned int)Type, Data, v15, v16);
  v13 = v12;
  if( v12 != -1 )
  {
    if( (int)CmpAddValueToList((UINT64)Hive, v12, v9, (unsigned int)StorageType, (UINT64 *)p_KeyHive) >= 0 )
      return 0i64;
    CmpFreeValue((UINT64)Hive, v13);
  }
  return 3221225626i64;
}

Referenced by:

CmSetValueKey
CmpCommitSetValueKeyUoW