public static void CNegate(int negate, uint[] z) { Debug.Assert(negate >> 1 == 0); uint[] t = Create(); Sub(t, z, t); Nat.CMov(Size, negate, t, 0, z, 0); }
private static void PointLookup(int block, int index, PointPrecomp p) { Debug.Assert(0 <= block && block < PrecompBlocks); Debug.Assert(0 <= index && index < PrecompPoints); int off = block * PrecompPoints * 2 * X448Field.Size; for (int i = 0; i < PrecompPoints; ++i) { int mask = ((i ^ index) - 1) >> 31; Nat.CMov(X448Field.Size, mask, precompBase, off, p.x, 0); off += X448Field.Size; Nat.CMov(X448Field.Size, mask, precompBase, off, p.y, 0); off += X448Field.Size; } }