for (int i = 0; i != m; i++)
for (int i = 0; i < m - 1; i++)
        private ECPoint decompressPoint(            byte[] xEnc,             int ypBit)        {            ECFieldElement xp = new ECFieldElement.F2m(                    this.m, this.k1, this.k2, this.k3, new BigInteger(1, xEnc));            ECFieldElement yp = null;            if (xp.x.equals(BigInteger.ZERO))            {                yp = (ECFieldElement.F2m)b;                for (int i = 0; i != m; i++)                {                    yp = yp.square();                }            }            else            {                ECFieldElement beta = xp.add(a).add(                        b.multiply(xp.square().invert()));                ECFieldElement z = solveQuadradicEquation(beta);                if (z == null)                {                    throw new RuntimeException("Invalid point compression");                }                int zBit = 0;                if (z.x.testBit(0))                {                    zBit = 1;                }                if (zBit != ypBit)                {                    z.add(new ECFieldElement.F2m(this.m, this.k1, this.k2,                            this.k3, BigInteger.ONE));                }                yp = xp.multiply(z);            }                        return new ECPoint.F2m(this, xp, yp);        }