Builds from a plain Dart int. Must be non-negative and representable
exactly as a double (i.e. <= 2^53, which covers every case where the
value didn't already come from hi/lo limbs). For values above 2^53 use
fromBigInt or parseHex/parseDecimal.
Builds from a plain Dart int, accepting negative values by taking
their two's-complement bit pattern (masked to 64 bits) instead of
throwing like Uint64.new does — e.g. Uint64.from(-1) == Uint64.max.
value must itself be a normal double-safe Dart int (|value| <= 2^53); mirrors the negation trick Int64.new already uses.
Add-with-carry: a + b + carry. Returns (result, carryOut) where
carryOut is the numeric carry (0, 1, or 2 — matches Rust's adc,
which accepts a full-width carry-in from a preceding mac).
XOR-accumulate equality check across two same-length limb lists —
avoids short-circuiting on the first differing limb, matching the
intent of typical constant-time field-element comparisons.
Branchless select: returns b if choice else a. Built from a
bitmask blend, matching the shape of typical constant-time field code
(this is a helper, not a hardened constant-time guarantee — Dart's
runtime doesn't guarantee branchless codegen).
Multiply-accumulate: a + b*c + carry as a full 128-bit value.
Returns (result, carryOut) — the standard building block of Comba
multiplication / Montgomery reduction inner loops.
Subtract-with-borrow: a - b - borrowBit, where the borrow bit is
derived from borrowIn (zero = no borrow; any nonzero = borrow —
matches the all-ones-mask convention constant-time field code uses).
Returns (result, borrowOutMask), where borrowOutMask is
Uint64.zero or Uint64.max — ready to & directly against a
modulus limb for a conditional add-back.