long[] t1 = Nat256.create64();
square(x, t0);
multiply(t0, x, t0);
square(t0, t0);
multiply(t0, x, t0);
squareN(t0, 3, t1);
multiply(t1, t0, t1);
square(t1, t1);
multiply(t1, x, t1);
squareN(t1, 7, t0);
squareN(t0, 14, t1);
multiply(t1, t0, t1);
square(t1, t1);
multiply(t1, x, t1);
squareN(t1, 29, t0);
multiply(t0, t1, t0);
square(t0, t0);
multiply(t0, x, t0);
squareN(t0, 59, t1);
multiply(t1, t0, t1);
square(t1, t1);
multiply(t1, x, t1);
squareN(t1, 119, t0);
multiply(t0, t1, t0);
square(t0, z);