geSub function Null safety

void geSub(
  1. CompletedGroupElement r,
  2. ExtendedGroupElement p,
  3. CachedGroupElement q
)

Implementation

void geSub(
    CompletedGroupElement r, ExtendedGroupElement p, CachedGroupElement q) {
  var t0 = FieldElement();

  FeAdd(r.X, p.Y, p.X);
  FeSub(r.Y, p.Y, p.X);
  FeMul(r.Z, r.X, q.yMinusX);
  FeMul(r.Y, r.Y, q.yPlusX);
  FeMul(r.T, q.T2d, p.T);
  FeMul(r.X, p.Z, q.Z);
  FeAdd(t0, r.X, r.X);
  FeSub(r.X, r.Z, r.Y);
  FeAdd(r.Y, r.Z, r.Y);
  FeSub(r.Z, t0, r.T);
  FeAdd(r.T, t0, r.T);
}