- if (MP_CMP(ar, >=, dp->q))
- ar = mp_sub(ar, ar, dp->q);
- rrr = mpmont_mul(&qm, rrr, ar, qm.r2);
- ar = mpmont_mul(&qm, ar, rrr, k1);
+ ar = mpbarrett_reduce(&qb, ar, ar);
+ ar = mp_mul(ar, ar, k1);
+ ar = mpbarrett_reduce(&qb, ar, ar);
+ mpbarrett_destroy(&qb);
+ MP_DROP(k1);
+ if (*rr) MP_DROP(*rr);
+ if (*ss) MP_DROP(*ss);
+ *rr = r;