private static int[] PointPrecompute(PointAffine p, int count)
        {
            Debug.Assert(count > 0);

            PointExt q = PointCopy(p);
            PointExt d = PointCopy(q);

            PointAdd(q, d);

            int[] table = X25519Field.CreateTable(count * 4);
            int   off   = 0;

            int i = 0;

            for (;;)
            {
                X25519Field.Copy(q.x, 0, table, off); off += X25519Field.Size;
                X25519Field.Copy(q.y, 0, table, off); off += X25519Field.Size;
                X25519Field.Copy(q.z, 0, table, off); off += X25519Field.Size;
                X25519Field.Copy(q.t, 0, table, off); off += X25519Field.Size;

                if (++i == count)
                {
                    break;
                }

                PointAdd(d, q);
            }

            return(table);
        }