def reverse_dhivehi_string(input_str):
    """
    Reverses a Dhivehi string while preserving character composition.

    Args:
        input_str (str): The Dhivehi string to be reversed

    Returns:
        str: The reversed Dhivehi string
    """
    # Reverse the string and then normalize the character order
    reversed_str = input_str[::-1]

    # List to store the corrected characters
    corrected_chars = []

    # Iterate through the reversed string
    i = 0
    while i < len(reversed_str):
        # Check if current character is a combining character
        if i + 1 < len(reversed_str) and "\u0300" <= reversed_str[i + 1] <= "\u036F":
            # If next character is a combining mark, add it before the base character
            corrected_chars.append(reversed_str[i + 1] + reversed_str[i])
            i += 2
        else:
            corrected_chars.append(reversed_str[i])
            i += 1

    return "".join(corrected_chars)