def get_function_start(function_name: str, assembly_code: list) -> int:
    """Detects the line number of the first instruction of a function.

    Searches for a function which is named with the parameter `function_name` in 
    the assembly code. After finding the function returns the line number of the 
    first instruciton of the function.
    
    The presence of "<function_name>:" expression in a line indicates the start 
    of the function. The next line is the first instruction line of that 
    function.

    Parameters
    ----------
    function_name : str
        The name of the function which will be searched in the assembly code.
    assembly_code : list of str
        Assembly code in which the main function will be searched.
    
    Returns
    -------
    integer
        The line number of the of the first instruction of the funtion in the
        assembly code if successful.
    
    Raises
    ------
    Exception
        If the function is not found in the assembly code.
    """

    line_no: int = -1
    function_declaration:str = '<' + function_name + '>:'

    for index, line in enumerate(assembly_code):
        if function_declaration in line:
            line_no = index
            break

    if line_no == -1:
        raise Exception("The function" + function_name + "could not be found "
                        "in the current assembly code.")
    else:
        return line_no + 1