felem_mul
void (*felem_mul)(void *out,
felem_mul(tmp, ftmp, ftmp5);
felem_mul(tmp, ftmp, ftmp5);
felem_mul(tmp, ftmp2, ftmp);
felem_mul(tmp, ftmp4, ftmp5);
felem_mul(tmp2, ftmp3, ftmp2);
felem_mul(tmp, x_in, z1);
felem_mul(tmp, z1, z2);
felem_mul(tmp, y_in, z1);
felem_mul(tmp, in1, in2);
felem_mul(tmp, in, ftmp);
felem_mul(tmp, in, ftmp);
felem_mul(tmp, ftmp2, ftmp);
felem_mul(tmp, ftmp2, ftmp);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp4);
felem_mul(tmp, ftmp2, ftmp4);
felem_mul(tmp, ftmp2, ftmp);
felem_mul(tmp, ftmp, in);
felem_mul(tmp, ftmp, ftmp3);
felem_mul(tmp, x_in, gamma);
felem_mul(tmp, ftmp, ftmp2);
felem_mul(tmp, alpha, beta);
felem_mul(tmp, ftmp2, z2);
felem_mul(tmp2, ftmp4, y1);
felem_mul(tmp2, ftmp2, x1);
felem_mul(tmp, ftmp, z1);
felem_mul(tmp, ftmp3, y2);
felem_mul(tmp, ftmp, x2);
felem_mul(tmp, z1, z2);
felem_mul(tmp, ftmp, e4);
felem_mul(tmp, ftmp, e8);
felem_mul(tmp, ftmp, e16);
felem_mul(tmp, ftmp, in);
felem_mul(tmp, e64, e32);
felem_mul(tmp, ftmp2, e16);
felem_mul(tmp, ftmp2, e8);
felem_mul(tmp, ftmp2, e4);
felem_mul(tmp, ftmp2, e2);
felem_mul(tmp, ftmp2, in);
felem_mul(tmp, ftmp2, ftmp);
felem_mul(tmp, ftmp, ftmp2);
felem_mul(tmp, y1, ftmp2);
felem_mul(tmp, ftmp4, ftmp);
felem_mul(tmp, ftmp3, ftmp);
felem_mul(tmp2, ftmp6, ftmp2);
felem_mul(tmp, x_in, z1);
felem_mul(tmp, z1, z2);
felem_mul(tmp, y_in, z1);
felem_mul(tmp, in, ftmp);
felem_mul(tmp, ftmp, e2);
felem_mul(tmp, alpha, beta); /* tmp[i] < 2^119 */
felem_mul(tmp, x2, ftmp); /* tmp[i] < 2^115 */
felem_mul(tmp, y2, ftmp); /* tmp[i] < 2^115 */
felem_mul(tmp, ftmp5, ftmp3); /* tmp[i] < 2^116 */
felem_mul(tmp2, ftmp6, ftmp2); /* tmp2[i] < 2^115 */
felem_mul(tmp, x_in, z1);
felem_mul(tmp, z1, z2);
felem_mul(tmp, y_in, z1);
felem_mul(tmp, x_in, gamma);
felem_mul(tmp, ftmp, ftmp2);
felem_mul(tmp, alpha, beta);
felem_mul(tmp, x1, ftmp2);
felem_mul(tmp, ftmp2, z2);
felem_mul(tmp, y1, ftmp2);
felem_mul(tmp, x2, ftmp);
felem_mul(tmp, ftmp5, ftmp4);
felem_mul(tmp, ftmp, z1);
felem_mul(tmp, y2, ftmp);
felem_mul(tmp, ftmp4, ftmp);
felem_mul(tmp, ftmp3, ftmp);
felem_mul(tmp, ftmp5, ftmp3);
felem_mul(tmp2, ftmp6, ftmp2);
felem_mul(tmp, x_in, z1);
felem_mul(tmp, z1, z2);
felem_mul(tmp, y_in, z1);
felem_mul(tmp, in1, in2);
felem_mul(tmp, in, ftmp);
felem_mul(tmp, in, ftmp);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp2);
felem_mul(tmp, ftmp3, ftmp4);
felem_mul(tmp, ftmp3, in);
felem_mul(tmp_felem(num), tmp_felem(i - 1), tmp_felem(i));
felem_mul(tmp_felem(i - 1), tmp_felem(i), Z(i));
felem_mul(X(i), X(i), Z(i)); /* X/(Z^2) */
felem_mul(Z(i), Z(i), tmp_felem(num)); /* 1/(Z^3) */
felem_mul(Y(i), Y(i), Z(i)); /* Y/(Z^3) */
void (*felem_mul)(void *out,
felem_mul(tmp_felem(i), tmp_felem(i - 1), Z(i));