code: func symEncrypt(rand io.Reader, params *ECIESParams, key, m []byte) (ct []byte, err error) {
  	c, err := params.Cipher(key)
  	if err != nil {
  		return
  	}
  
  	iv, err := generateIV(params, rand)
  	if err != nil {
  		return
  	}
  	ctr := cipher.NewCTR(c, iv)
  
  	ct = make([]byte, len(m)+params.BlockSize)
  	copy(ct, iv)
  	ctr.XORKeyStream(ct[params.BlockSize:], m)
  	return
  }
docs: // symEncrypt carries out CTR encryption using the block cipher specified in the
  // parameters.