let big_endian_merge_bits ~conflate_bottom:_ ~total_length ~length ~value ~offset acc =
    if equal acc bottom || equal value bottom
    then bottom
    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:total_length
            value
           (inject_ival (Ival.inject_singleton (Int.sub (Int.sub total_length_i offset) length))))
        acc
    in
(*    Format.printf "big_endian_merge_bits : total_length:%d length:%a value:%a offset:%a acc:%a GOT:%a@."
      total_length
      Int.pretty length
      pretty value
      Int.pretty offset
      pretty acc
      pretty result; *)

    result