static void copyConditional(long[] a, long[] b, int icopy) {
    int copy = -icopy;
    for (int i = 0; i < Field25519.LIMB_CNT; i++) {
      int x = copy & (((int) a[i]) ^ ((int) b[i]));
      a[i] = ((int) a[i]) ^ x;
    }
  }
Conditionally copies a reduced-form limb arrays {@code b} into {@code a} if {@code icopy} is 1,
but leave {@code a} unchanged if 'iswap' is 0. Runs in data-invariant time to avoid
side-channel attacks.

<p>NOTE that this function requires that {@code icopy} be 1 or 0; other values give wrong
results. Also, the two limb arrays must be in reduced-coefficient, reduced-degree form: the
values in a[10..19] or b[10..19] aren't swapped, and all all values in a[0..9],b[0..9] must
have magnitude less than Integer.MAX_VALUE.
java_src/src/main/java/com/google/crypto/tink/internal/Curve25519.java