def largest_remaining_processing_time(evs, iface):
    """ Sort EVs in decreasing order by the time taken to finish charging them at the EVSE's maximum rate.

    Args:
        evs (List[EV]): List of EVs to be sorted.
        iface (Interface): Interface object.

    Returns:
        List[EV]: List of EVs sorted by remaining processing time in decreasing order.
    """

    def remaining_processing_time(ev):
        """ Calculate minimum time needed to fully charge the EV based its remaining energy request and the EVSE's max
            charging rate.

        Args:
            ev (EV): An EV object.

        Returns:
            float: The minimum remaining processing time of the EV.
        """
        rpt = (iface.remaining_amp_periods(ev) / iface.max_pilot_signal(ev.station_id))
        return rpt

    return sorted(evs, key=lambda x: remaining_processing_time(x), reverse=True)