fe_mul
fe_mul(v3, v3, v); /* v3 = v^3 */
fe_mul(h->X, h->X, v);
fe_mul(h->X, h->X, u); /* x = uv^7 */
fe_mul(h->X, h->X, v3);
fe_mul(h->X, h->X, u); /* x = uv^3(uv^7)^((q-5)/8) */
fe_mul(vxx, vxx, v);
fe_mul(h->X, h->X, sqrtm1);
fe_mul(h->T, h->X, h->Y);
fe_mul(r->T2d, p->T, d2);
fe_mul(r->X, p->X, p->T);
fe_mul(r->Y, p->Y, p->Z);
fe_mul(r->Z, p->Z, p->T);
fe_mul(r->X, p->X, p->T);
fe_mul(r->Y, p->Y, p->Z);
fe_mul(r->Z, p->Z, p->T);
fe_mul(r->T, p->X, p->Y);
fe_mul(r->Z, r->X, q->yplusx);
fe_mul(r->Y, r->Y, q->yminusx);
fe_mul(r->T, q->xy2d, p->T);
fe_mul(r->Z, r->X, q->yminusx);
fe_mul(r->Y, r->Y, q->yplusx);
fe_mul(r->T, q->xy2d, p->T);
fe_mul(r->Z, r->X, q->YplusX);
fe_mul(r->Y, r->Y, q->YminusX);
fe_mul(r->T, q->T2d, p->T);
fe_mul(r->X, p->Z, q->Z);
fe_mul(r->Z, r->X, q->YminusX);
fe_mul(r->Y, r->Y, q->YplusX);
fe_mul(r->T, q->T2d, p->T);
fe_mul(r->X, p->Z, q->Z);
fe_mul(out->xy2d, x, y);
fe_mul(out->xy2d, out->xy2d, d2);
fe_mul(z3, tmp0, x2);
fe_mul(z2, z2, tmp1);
fe_mul(x2, tmp1, tmp0);
fe_mul(z3, x1, z2);
fe_mul(z2, tmp1, tmp0);
fe_mul(x2, x2, z2);
fe_mul(zplusy, zplusy, zminusy_inv);
fe_mul(t1, z, t1);
fe_mul(t0, t0, t1);
fe_mul(t1, t1, t2);
fe_mul(t1, t2, t1);
fe_mul(t2, t2, t1);
fe_mul(t2, t3, t2);
fe_mul(t1, t2, t1);
fe_mul(t2, t2, t1);
fe_mul(t2, t3, t2);
fe_mul(t1, t2, t1);
fe_mul(out, t1, t0);
fe_mul(t1, z, t1);
fe_mul(t0, t0, t1);
fe_mul(t0, t1, t0);
fe_mul(t0, t1, t0);
fe_mul(t1, t1, t0);
fe_mul(t1, t2, t1);
fe_mul(t0, t1, t0);
fe_mul(t1, t1, t0);
fe_mul(t1, t2, t1);
fe_mul(t0, t1, t0);
fe_mul(out, t0, z);
fe_mul(x, h->X, recip);
fe_mul(y, h->Y, recip);
fe_mul(x, h->X, recip);
fe_mul(y, h->Y, recip);
fe_mul(v, u, d);