let big_endian_merge_bits ~conflate_bottom ~total_length ~length ~value ~offset acc =
if is_bottom acc || is_bottom value
then begin
if conflate_bottom
then
bottom
else
join
(topify_misaligned_read_origin acc)
(topify_misaligned_read_origin value)
end
else
let total_length_i = Int.of_int total_length in
assert (Int.le (Int.add length offset) total_length_i);
let result =
bitwise_or
~topify_arith_origin:topify_misaligned_read_origin
~size:total_length
(shift_left
~topify_arith_origin:topify_misaligned_read_origin
~with_alarms:warn_none_mode
~size:(Some total_length)
value
(inject_ival (Ival.inject_singleton (Int.sub (Int.sub total_length_i offset) length))))
acc
in
result