def get_interesting_calls(c, user_defined=[]):
    """Not all functions are created equal.
    We are interested in functions with certain names or substrings in it.

    :param c: a :class:`controlFlowinator` object
    :type c: :class:`controlFlowinator`
    :param user_defined: a list of names (or substrings), if not supplied a \
    hard-coded default list will be used.
    :type user_defined: list, optional
    :return: a list of :class:`callObj`
    :rtype: list
    """

    default_list = ['check', 'log', 'assert', 'cpy',
                    'copy', 'alloc', 'move', 'memset']

    interesting_calls = user_defined or default_list

    result = []

    for co in c.calls:
        # Check against a number of interesting function names
        for f_name in interesting_calls:
            if f_name in co.name.lower():
                result.append(co)

    return result