code: func (e *gfP2) Mul(a, b *gfP2) *gfP2 {
  	tx, t := &gfP{}, &gfP{}
  	gfpMul(tx, &a.x, &b.y)
  	gfpMul(t, &b.x, &a.y)
  	gfpAdd(tx, tx, t)
  
  	ty := &gfP{}
  	gfpMul(ty, &a.y, &b.y)
  	gfpMul(t, &a.x, &b.x)
  	gfpSub(ty, ty, t)
  
  	e.x.Set(tx)
  	e.y.Set(ty)
  	return e
  }
docs: // See "Multiplication and Squaring in Pairing-Friendly Fields",
  // http://eprint.iacr.org/2006/471.pdf