CmpInitializeValueNameString

VOID __fastcall CmpInitializeValueNameString(_CM_KEY_VALUE *Cell, _UNICODE_STRING *ValueName, _WCHAR *NameBuffer){
  unsigned __int16 NameLength; 
  unsigned __int16 v4; 
  __int64 v5; 
  __int64 v6; 

  NameLength = Cell->NameLength;
  if( (Cell->Flags & 1) != 0 )
  {
    v4 = 2 * NameLength;
    ValueName->Length = v4;
    if( v4 > 0x7FFFu )
      CmSiBugCheck((PVOID)0x31, (PVOID)1, Cell, (PVOID)v4);
    CmpCopyCompressedName(NameBuffer, 0x7FFFui64, Cell->Name, Cell->NameLength);
    *(_QWORD *)(v5 + 8) = v6;
    *(_WORD *)(v5 + 2) = 0x7FFF;
  }
  else
  {
    ValueName->Length = NameLength;
    ValueName->Buffer = Cell->Name;
    ValueName->MaximumLength = NameLength;
  }
}

Referenced by:

CmpCommitDeleteValueKeyUoW
CmpCommitSetValueKeyUoW
CmpLightWeightPrepareDeleteValueKeyUoW
CmpLightWeightPrepareSetValueKeyUoW
CmpMergeKeyValues