y1z1 = y1.multiply(this.z);
                var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q);
                var a = this.curve.a.toBigInteger();

                var w = x1.square().multiply(THREE);
                if (!BigInteger.ZERO.equals(a)) {
                    w = w.add(this.z.square().multiply(a));
                }
                w = w.mod(this.curve.q);
                var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q);
                