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 * 3 * X25519Field.Size; for (int i = 0; i < PrecompPoints; ++i) { int cond = ((i ^ index) - 1) >> 31; X25519Field.CMov(cond, precompBase, off, p.ypx_h, 0); off += X25519Field.Size; X25519Field.CMov(cond, precompBase, off, p.ymx_h, 0); off += X25519Field.Size; X25519Field.CMov(cond, precompBase, off, p.xyd, 0); off += X25519Field.Size; } }