secp256k1ScalarCaddBit static method
Implementation
static void secp256k1ScalarCaddBit(Secp256k1Scalar r, int bit, int flag) {
Secp256k1Uint128 t = Secp256k1Uint128();
int vflag = flag;
secp256k1ScalarVerify(r);
_cond(bit < 256, "secp256k1ScalarCaddBit");
bit += (vflag - 1) & 0x100;
secp256k1U128FromU64(t, r[0]);
secp256k1U128AccumU64(t, (((bit >> 6) == 0)).toBigInt << (bit & 0x3F));
r[0] = secp256k1U128ToU64(t);
secp256k1U128Rshift(t, 64);
secp256k1U128AccumU64(t, r[1]);
secp256k1U128AccumU64(t, (((bit >> 6) == 1)).toBigInt << (bit & 0x3F));
r[1] = secp256k1U128ToU64(t);
secp256k1U128Rshift(t, 64);
secp256k1U128AccumU64(t, r[2]);
secp256k1U128AccumU64(t, (((bit >> 6) == 2)).toBigInt << (bit & 0x3F));
r[2] = secp256k1U128ToU64(t);
secp256k1U128Rshift(t, 64);
secp256k1U128AccumU64(t, r[3]);
secp256k1U128AccumU64(t, (((bit >> 6) == 3)).toBigInt << (bit & 0x3F));
r[3] = secp256k1U128ToU64(t);
secp256k1ScalarVerify(r);
_cond(secp256k1U128HiU64(t) == BigInt.zero, "secp256k1ScalarCaddBit");
}