https://github.com/ethereum/EIPs/pull/198

def modexp(computation: BaseComputation) -> BaseComputation:
    """
    https://github.com/ethereum/EIPs/pull/198
    """
    data = computation.msg.data_as_bytes

    gas_fee = _compute_modexp_gas_fee(data)
    computation.consume_gas(gas_fee, reason='MODEXP Precompile')

    result = _modexp(data)

    _, _, modulus_length = _extract_lengths(data)

    # Modulo 0 is undefined, return zero
    # https://math.stackexchange.com/questions/516251/why-is-n-mod-0-undefined
    result_bytes = b'' if modulus_length == 0 else zpad_left(
        int_to_big_endian(result),
        to_size=modulus_length
    )

    computation.output = result_bytes
    return computation