fn __abs_limb64(out_ptr: [*]u64, a_ptr: [*]const u64, bits: u16) callconv(.c) void
fn __abs_limb64(out_ptr: [*]u64, a_ptr: [*]const u64, bits: u16) callconv(.c) void { const limb_cnt = limbCount(bits); const out = out_ptr[0..limb_cnt]; const a = a_ptr[0..limb_cnt]; const ms = limbGet(a, limb_cnt - 1); if ((ms >> 63) == 0) { @memcpy(out, a); return; } var carry: u1 = 1; var i: usize = 0; while (i < limb_cnt) : (i += 1) { const s = @addWithOverflow(~limbGet(a, i), carry); limbSet(out, i, s[0]); carry = s[1]; } }