def __mul__( self, other ):

    def leftmost_bit( x ):
      assert x > 0
      result = 1
      while result <= x: result = 2 * result
      return result // 2

    e = other
    if self.__order: e = e % self.__order
    if e == 0: return INFINITY
    if self == INFINITY: return INFINITY
    assert e > 0

    # From X9.62 D.3.2:

    if NATIVE_LIBRARY:
        return NATIVE_LIBRARY.fast_mul(self, other)

    e3 = 3 * e
    negative_self = Point( self.__curve, self.__x, -self.__y, self.__order )
    i = leftmost_bit( e3 ) // 2
    result = self
    # print "Multiplying %s by %d (e3 = %d):" % ( self, other, e3 )
    while i > 1:
      result = result.double()
      if ( e3 & i ) != 0 and ( e & i ) == 0: result = result + self
      if ( e3 & i ) == 0 and ( e & i ) != 0: result = result + negative_self
      # print ". . . i = %d, result = %s" % ( i, result )
      i = i // 2

    return result
Deliver an input symbol to the wrapped L{IFiniteStateMachine} from the
dataset/ETHPy150Open richardkiss/pycoin/pycoin/ecdsa/ellipticcurve.py/Point.__mul__--crossover with--dataset/ETHPy150Open ClusterHQ/machinist/machinist/_fsm.py/_FiniteStateInterpreter.receive