pub(super) fn add(a: &mut [u128], b: &[u128], c: u128) -> u128
a += b + c where c is zero or one. Returns the carry flag.
a += b + c
c