; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/arith/subtract/bitwidth/bitw_d38f2f36 (ZN8bitwidth5entryEv)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_biguint.0" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_bigint.1" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_bv.23" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv.28" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv.33" = type { %"class.sc_dt::sc_bv_base" }
%struct.bitwidth = type { %"class.sc_core::sc_module", %"class.sc_core::sc_in", ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.sc_core::sc_module" = type { %"class.sc_core::sc_object", %"class.sc_core::sc_process_host", %"class.sc_core::sc_sensitive", %"class.sc_core::sc_sensitive_pos", %"class.sc_core::sc_sensitive_neg", i8, ptr, i32, ptr, ptr }
%"class.sc_core::sc_object" = type { ptr, ptr, %"class.std::vector", %"class.std::vector.2", %"class.std::__cxx11::basic_string", ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.sc_core::sc_process_host" = type { ptr }
%"class.sc_core::sc_sensitive" = type { ptr, i32, ptr }
%"class.sc_core::sc_sensitive_pos" = type { ptr, i32, ptr }
%"class.sc_core::sc_sensitive_neg" = type { ptr, i32, ptr }
%"class.sc_core::sc_in" = type { %"class.sc_core::sc_port", ptr, ptr, ptr, ptr }
%"class.sc_core::sc_port" = type { %"class.sc_core::sc_port_b" }
%"class.sc_core::sc_port_b" = type { %"class.sc_core::sc_port_base", ptr, %"class.std::vector.10" }
%"class.sc_core::sc_port_base" = type { %"class.sc_core::sc_object", ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8bitwidth5entryEv(ptr noundef nonnull align 8 dereferenceable(512) %0) #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.sc_dt::sc_biguint", align 8
  %4 = alloca %"class.sc_dt::sc_biguint", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.sc_dt::sc_bigint", align 8
  %8 = alloca %"class.sc_dt::sc_bigint", align 8
  %9 = alloca %"class.sc_dt::sc_biguint.0", align 8
  %10 = alloca %"class.sc_dt::sc_biguint.0", align 8
  %11 = alloca %"class.sc_dt::sc_bigint.1", align 8
  %12 = alloca %"class.sc_dt::sc_bigint.1", align 8
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca %"class.sc_dt::sc_signed", align 8
  %16 = alloca %"class.sc_dt::sc_signed", align 8
  %17 = alloca %"class.sc_dt::sc_signed", align 8
  %18 = alloca %"class.sc_dt::sc_signed", align 8
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca %"class.sc_dt::sc_bv", align 8
  %22 = alloca %"class.sc_dt::sc_bv.23", align 8
  %23 = alloca %"class.sc_dt::sc_bv.28", align 8
  %24 = alloca %"class.sc_dt::sc_bv.33", align 8
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %27 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %3) #4
  call void @_ZN5sc_dt10sc_biguintILi2EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #4
  invoke void @_ZN5sc_dt10sc_biguintILi2EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %28 unwind label %64

28:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #4
  invoke void @_ZN5sc_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %29 unwind label %68

29:                                               ; preds = %28
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #4
  invoke void @_ZN5sc_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %30 unwind label %72

30:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #4
  invoke void @_ZN5sc_dt10sc_biguintILi6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %31 unwind label %76

31:                                               ; preds = %30
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #4
  invoke void @_ZN5sc_dt10sc_biguintILi6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %32 unwind label %80

32:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #4
  invoke void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %33 unwind label %84

33:                                               ; preds = %32
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #4
  invoke void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %34 unwind label %88

34:                                               ; preds = %33
  %35 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 13
  %36 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #4
  store i8 0, ptr %13, align 1, !tbaa !41
  %37 = load ptr, ptr %36, align 8, !tbaa !42
  %38 = getelementptr inbounds ptr, ptr %37, i64 14
  %39 = load ptr, ptr %38, align 8
  invoke void %39(ptr noundef nonnull align 8 dereferenceable(224) %36, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %40 unwind label %92

40:                                               ; preds = %34
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #4
  %41 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 12
  %42 = load ptr, ptr %41, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #4
  store i8 0, ptr %14, align 1, !tbaa !41
  %43 = load ptr, ptr %42, align 8, !tbaa !42
  %44 = getelementptr inbounds ptr, ptr %43, i64 14
  %45 = load ptr, ptr %44, align 8
  invoke void %45(ptr noundef nonnull align 8 dereferenceable(224) %42, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %46 unwind label %96

46:                                               ; preds = %40
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %47 unwind label %100

47:                                               ; preds = %46
  br label %48

48:                                               ; preds = %207, %47
  br label %49

49:                                               ; preds = %48
  br label %50

50:                                               ; preds = %63, %49
  %51 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 7
  %52 = load ptr, ptr %51, align 8, !tbaa !45
  %53 = load ptr, ptr %52, align 8, !tbaa !42
  %54 = getelementptr inbounds ptr, ptr %53, i64 7
  %55 = load ptr, ptr %54, align 8
  %56 = invoke noundef nonnull align 1 dereferenceable(1) ptr %55(ptr noundef nonnull align 8 dereferenceable(224) %52)
          to label %57 unwind label %100

57:                                               ; preds = %50
  %58 = load i8, ptr %56, align 1, !tbaa !41, !range !46, !noundef !47
  %59 = trunc i8 %58 to i1
  %60 = zext i1 %59 to i32
  %61 = icmp eq i32 %60, 0
  br i1 %61, label %62, label %104

62:                                               ; preds = %57
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %63 unwind label %100

63:                                               ; preds = %62
  br label %50, !llvm.loop !48

64:                                               ; preds = %1
  %65 = landingpad { ptr, i32 }
          cleanup
  %66 = extractvalue { ptr, i32 } %65, 0
  store ptr %66, ptr %5, align 8
  %67 = extractvalue { ptr, i32 } %65, 1
  store i32 %67, ptr %6, align 4
  br label %303

68:                                               ; preds = %28
  %69 = landingpad { ptr, i32 }
          cleanup
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %5, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %6, align 4
  br label %302

72:                                               ; preds = %29
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %5, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %6, align 4
  br label %301

76:                                               ; preds = %30
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %5, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %6, align 4
  br label %300

80:                                               ; preds = %31
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %5, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %6, align 4
  br label %299

84:                                               ; preds = %32
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %5, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %6, align 4
  br label %298

88:                                               ; preds = %33
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %5, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %6, align 4
  br label %297

92:                                               ; preds = %34
  %93 = landingpad { ptr, i32 }
          cleanup
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %5, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #4
  br label %296

96:                                               ; preds = %40
  %97 = landingpad { ptr, i32 }
          cleanup
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %5, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #4
  br label %296

100:                                              ; preds = %206, %199, %158, %138, %131, %129, %122, %120, %113, %111, %104, %62, %50, %46
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %5, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %6, align 4
  br label %296

104:                                              ; preds = %57
  %105 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 3
  %106 = load ptr, ptr %105, align 8, !tbaa !50
  %107 = load ptr, ptr %106, align 8, !tbaa !42
  %108 = getelementptr inbounds ptr, ptr %107, i64 5
  %109 = load ptr, ptr %108, align 8
  %110 = invoke noundef nonnull align 8 dereferenceable(24) ptr %109(ptr noundef nonnull align 8 dereferenceable(232) %106)
          to label %111 unwind label %100

111:                                              ; preds = %104
  %112 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi2EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(24) %110)
          to label %113 unwind label %100

113:                                              ; preds = %111
  %114 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 4
  %115 = load ptr, ptr %114, align 8, !tbaa !51
  %116 = load ptr, ptr %115, align 8, !tbaa !42
  %117 = getelementptr inbounds ptr, ptr %116, i64 5
  %118 = load ptr, ptr %117, align 8
  %119 = invoke noundef nonnull align 8 dereferenceable(24) ptr %118(ptr noundef nonnull align 8 dereferenceable(232) %115)
          to label %120 unwind label %100

120:                                              ; preds = %113
  %121 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(24) %119)
          to label %122 unwind label %100

122:                                              ; preds = %120
  %123 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 5
  %124 = load ptr, ptr %123, align 8, !tbaa !52
  %125 = load ptr, ptr %124, align 8, !tbaa !42
  %126 = getelementptr inbounds ptr, ptr %125, i64 5
  %127 = load ptr, ptr %126, align 8
  %128 = invoke noundef nonnull align 8 dereferenceable(24) ptr %127(ptr noundef nonnull align 8 dereferenceable(232) %124)
          to label %129 unwind label %100

129:                                              ; preds = %122
  %130 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi6EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(24) %128)
          to label %131 unwind label %100

131:                                              ; preds = %129
  %132 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 6
  %133 = load ptr, ptr %132, align 8, !tbaa !53
  %134 = load ptr, ptr %133, align 8, !tbaa !42
  %135 = getelementptr inbounds ptr, ptr %134, i64 5
  %136 = load ptr, ptr %135, align 8
  %137 = invoke noundef nonnull align 8 dereferenceable(24) ptr %136(ptr noundef nonnull align 8 dereferenceable(232) %133)
          to label %138 unwind label %100

138:                                              ; preds = %131
  %139 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(24) %137)
          to label %140 unwind label %100

140:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #4
  invoke void @_ZN5sc_dtmiERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %141 unwind label %208

141:                                              ; preds = %140
  %142 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi2EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %143 unwind label %212

143:                                              ; preds = %141
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #4
  invoke void @_ZN5sc_dtmiERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %144 unwind label %217

144:                                              ; preds = %143
  %145 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %146 unwind label %221

146:                                              ; preds = %144
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #4
  invoke void @_ZN5sc_dtmiERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %147 unwind label %226

147:                                              ; preds = %146
  %148 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi6EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %149 unwind label %230

149:                                              ; preds = %147
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #4
  invoke void @_ZN5sc_dtmiERKNS_9sc_signedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %150 unwind label %235

150:                                              ; preds = %149
  %151 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %152 unwind label %239

152:                                              ; preds = %150
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #4
  %153 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 12
  %154 = load ptr, ptr %153, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #4
  store i8 1, ptr %19, align 1, !tbaa !41
  %155 = load ptr, ptr %154, align 8, !tbaa !42
  %156 = getelementptr inbounds ptr, ptr %155, i64 14
  %157 = load ptr, ptr %156, align 8
  invoke void %157(ptr noundef nonnull align 8 dereferenceable(224) %154, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %158 unwind label %244

158:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %159 unwind label %100

159:                                              ; preds = %158
  %160 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 12
  %161 = load ptr, ptr %160, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #4
  store i8 0, ptr %20, align 1, !tbaa !41
  %162 = load ptr, ptr %161, align 8, !tbaa !42
  %163 = getelementptr inbounds ptr, ptr %162, i64 14
  %164 = load ptr, ptr %163, align 8
  invoke void %164(ptr noundef nonnull align 8 dereferenceable(224) %161, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %165 unwind label %248

165:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #4
  %166 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 8
  %167 = load ptr, ptr %166, align 8, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #4
  invoke void @_ZN5sc_dt5sc_bvILi2EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %168 unwind label %252

168:                                              ; preds = %165
  %169 = load ptr, ptr %167, align 8, !tbaa !42
  %170 = getelementptr inbounds ptr, ptr %169, i64 9
  %171 = load ptr, ptr %170, align 8
  invoke void %171(ptr noundef nonnull align 8 dereferenceable(232) %167, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %172 unwind label %256

172:                                              ; preds = %168
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #4
  %173 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 9
  %174 = load ptr, ptr %173, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %175 unwind label %261

175:                                              ; preds = %172
  %176 = load ptr, ptr %174, align 8, !tbaa !42
  %177 = getelementptr inbounds ptr, ptr %176, i64 9
  %178 = load ptr, ptr %177, align 8
  invoke void %178(ptr noundef nonnull align 8 dereferenceable(232) %174, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %179 unwind label %265

179:                                              ; preds = %175
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #4
  %180 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 10
  %181 = load ptr, ptr %180, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #4
  invoke void @_ZN5sc_dt5sc_bvILi6EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %182 unwind label %270

182:                                              ; preds = %179
  %183 = load ptr, ptr %181, align 8, !tbaa !42
  %184 = getelementptr inbounds ptr, ptr %183, i64 9
  %185 = load ptr, ptr %184, align 8
  invoke void %185(ptr noundef nonnull align 8 dereferenceable(232) %181, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %186 unwind label %274

186:                                              ; preds = %182
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #4
  %187 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 11
  %188 = load ptr, ptr %187, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #4
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %189 unwind label %279

189:                                              ; preds = %186
  %190 = load ptr, ptr %188, align 8, !tbaa !42
  %191 = getelementptr inbounds ptr, ptr %190, i64 9
  %192 = load ptr, ptr %191, align 8
  invoke void %192(ptr noundef nonnull align 8 dereferenceable(232) %188, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %193 unwind label %283

193:                                              ; preds = %189
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #4
  %194 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 13
  %195 = load ptr, ptr %194, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #4
  store i8 1, ptr %25, align 1, !tbaa !41
  %196 = load ptr, ptr %195, align 8, !tbaa !42
  %197 = getelementptr inbounds ptr, ptr %196, i64 14
  %198 = load ptr, ptr %197, align 8
  invoke void %198(ptr noundef nonnull align 8 dereferenceable(224) %195, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %199 unwind label %288

199:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %200 unwind label %100

200:                                              ; preds = %199
  %201 = getelementptr inbounds %struct.bitwidth, ptr %27, i32 0, i32 13
  %202 = load ptr, ptr %201, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #4
  store i8 0, ptr %26, align 1, !tbaa !41
  %203 = load ptr, ptr %202, align 8, !tbaa !42
  %204 = getelementptr inbounds ptr, ptr %203, i64 14
  %205 = load ptr, ptr %204, align 8
  invoke void %205(ptr noundef nonnull align 8 dereferenceable(224) %202, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %206 unwind label %292

206:                                              ; preds = %200
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %207 unwind label %100

207:                                              ; preds = %206
  br label %48, !llvm.loop !58

208:                                              ; preds = %140
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %5, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %6, align 4
  br label %216

212:                                              ; preds = %141
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %5, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %6, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #4
  br label %216

216:                                              ; preds = %212, %208
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #4
  br label %296

217:                                              ; preds = %143
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %5, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %6, align 4
  br label %225

221:                                              ; preds = %144
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %5, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %6, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #4
  br label %225

225:                                              ; preds = %221, %217
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #4
  br label %296

226:                                              ; preds = %146
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %5, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %6, align 4
  br label %234

230:                                              ; preds = %147
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %5, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %6, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #4
  br label %234

234:                                              ; preds = %230, %226
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #4
  br label %296

235:                                              ; preds = %149
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %5, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %6, align 4
  br label %243

239:                                              ; preds = %150
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %5, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %6, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #4
  br label %243

243:                                              ; preds = %239, %235
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #4
  br label %296

244:                                              ; preds = %152
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %5, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #4
  br label %296

248:                                              ; preds = %159
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %5, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #4
  br label %296

252:                                              ; preds = %165
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %5, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %6, align 4
  br label %260

256:                                              ; preds = %168
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %5, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #4
  br label %260

260:                                              ; preds = %256, %252
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #4
  br label %296

261:                                              ; preds = %172
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %5, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %6, align 4
  br label %269

265:                                              ; preds = %175
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %5, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #4
  br label %269

269:                                              ; preds = %265, %261
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #4
  br label %296

270:                                              ; preds = %179
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %5, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %6, align 4
  br label %278

274:                                              ; preds = %182
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %5, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #4
  br label %278

278:                                              ; preds = %274, %270
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #4
  br label %296

279:                                              ; preds = %186
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %5, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %6, align 4
  br label %287

283:                                              ; preds = %189
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %5, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #4
  br label %287

287:                                              ; preds = %283, %279
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #4
  br label %296

288:                                              ; preds = %193
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %5, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  br label %296

292:                                              ; preds = %200
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %5, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #4
  br label %296

296:                                              ; preds = %292, %288, %287, %278, %269, %260, %248, %244, %243, %234, %225, %216, %100, %96, %92
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #4
  br label %297

297:                                              ; preds = %296, %88
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #4
  br label %298

298:                                              ; preds = %297, %84
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #4
  br label %299

299:                                              ; preds = %298, %80
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #4
  br label %300

300:                                              ; preds = %299, %76
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #4
  br label %301

301:                                              ; preds = %300, %72
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #4
  br label %302

302:                                              ; preds = %301, %68
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #4
  br label %303

303:                                              ; preds = %302, %64
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #4
  br label %304

304:                                              ; preds = %303
  %305 = load ptr, ptr %5, align 8
  %306 = load i32, ptr %6, align 4
  %307 = insertvalue { ptr, i32 } poison, ptr %305, 0
  %308 = insertvalue { ptr, i32 } %307, i32 %306, 1
  resume { ptr, i32 } %308
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt10sc_biguintILi2EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt10sc_biguintILi6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi2EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi6EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

declare void @_ZN5sc_dtmiERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi2EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

declare void @_ZN5sc_dtmiERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi6EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

declare void @_ZN5sc_dtmiERKNS_9sc_signedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi2EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi6EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 504}
!10 = !{!"_ZTS8bitwidth", !11, i64 0, !33, i64 232, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496, !6, i64 504}
!11 = !{!"_ZTSN7sc_core9sc_moduleE", !12, i64 0, !24, i64 112, !25, i64 120, !27, i64 144, !29, i64 168, !31, i64 192, !6, i64 200, !32, i64 208, !6, i64 216, !6, i64 224}
!12 = !{!"_ZTSN7sc_core9sc_objectE", !6, i64 8, !13, i64 16, !17, i64 40, !21, i64 64, !6, i64 96, !6, i64 104}
!13 = !{!"_ZTSSt6vectorIPN7sc_core8sc_eventESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"_ZTSSt6vectorIPN7sc_core9sc_objectESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !22, i64 0, !23, i64 8, !7, i64 16}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSN7sc_core15sc_process_hostE"}
!25 = !{!"_ZTSN7sc_core12sc_sensitiveE", !6, i64 0, !26, i64 8, !6, i64 16}
!26 = !{!"_ZTSN7sc_core12sc_sensitiveUt_E", !7, i64 0}
!27 = !{!"_ZTSN7sc_core16sc_sensitive_posE", !6, i64 0, !28, i64 8, !6, i64 16}
!28 = !{!"_ZTSN7sc_core16sc_sensitive_posUt_E", !7, i64 0}
!29 = !{!"_ZTSN7sc_core16sc_sensitive_negE", !6, i64 0, !30, i64 8, !6, i64 16}
!30 = !{!"_ZTSN7sc_core16sc_sensitive_negUt_E", !7, i64 0}
!31 = !{!"bool", !7, i64 0}
!32 = !{!"int", !7, i64 0}
!33 = !{!"_ZTSN7sc_core5sc_inIbEE", !34, i64 0, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176}
!34 = !{!"_ZTSN7sc_core7sc_portINS_15sc_signal_in_ifIbEELi1ELNS_14sc_port_policyE0EEE", !35, i64 0}
!35 = !{!"_ZTSN7sc_core9sc_port_bINS_15sc_signal_in_ifIbEEEE", !36, i64 0, !6, i64 120, !37, i64 128}
!36 = !{!"_ZTSN7sc_core12sc_port_baseE", !12, i64 0, !6, i64 112}
!37 = !{!"_ZTSSt6vectorIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!31, !31, i64 0}
!42 = !{!43, !43, i64 0}
!43 = !{!"vtable pointer", !8, i64 0}
!44 = !{!10, !6, i64 496}
!45 = !{!10, !6, i64 456}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!10, !6, i64 424}
!51 = !{!10, !6, i64 432}
!52 = !{!10, !6, i64 440}
!53 = !{!10, !6, i64 448}
!54 = !{!10, !6, i64 464}
!55 = !{!10, !6, i64 472}
!56 = !{!10, !6, i64 480}
!57 = !{!10, !6, i64 488}
!58 = distinct !{!58, !49}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_biguint.0" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_bigint.1" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_bv.23" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv.28" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv.33" = type { %"class.sc_dt::sc_bv_base" }

; Function Attrs: mustprogress noreturn uwtable
define dso_local void @_ZN8bitwidth5entryEv(ptr noundef nonnull align 8 dereferenceable(512) %0) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.sc_dt::sc_biguint", align 8
  %3 = alloca %"class.sc_dt::sc_biguint", align 8
  %4 = alloca %"class.sc_dt::sc_bigint", align 8
  %5 = alloca %"class.sc_dt::sc_bigint", align 8
  %6 = alloca %"class.sc_dt::sc_biguint.0", align 8
  %7 = alloca %"class.sc_dt::sc_biguint.0", align 8
  %8 = alloca %"class.sc_dt::sc_bigint.1", align 8
  %9 = alloca %"class.sc_dt::sc_bigint.1", align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca %"class.sc_dt::sc_signed", align 8
  %13 = alloca %"class.sc_dt::sc_signed", align 8
  %14 = alloca %"class.sc_dt::sc_signed", align 8
  %15 = alloca %"class.sc_dt::sc_signed", align 8
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca %"class.sc_dt::sc_bv", align 8
  %19 = alloca %"class.sc_dt::sc_bv.23", align 8
  %20 = alloca %"class.sc_dt::sc_bv.28", align 8
  %21 = alloca %"class.sc_dt::sc_bv.33", align 8
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #5
  call void @_ZN5sc_dt10sc_biguintILi2EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #5
  invoke void @_ZN5sc_dt10sc_biguintILi2EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %24 unwind label %62

24:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #5
  invoke void @_ZN5sc_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %25 unwind label %64

25:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #5
  invoke void @_ZN5sc_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %26 unwind label %66

26:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #5
  invoke void @_ZN5sc_dt10sc_biguintILi6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %27 unwind label %68

27:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #5
  invoke void @_ZN5sc_dt10sc_biguintILi6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %28 unwind label %70

28:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #5
  invoke void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %29 unwind label %72

29:                                               ; preds = %28
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #5
  invoke void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %30 unwind label %74

30:                                               ; preds = %29
  %31 = getelementptr inbounds i8, ptr %0, i64 504
  %32 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #5
  store i8 0, ptr %10, align 1, !tbaa !40
  %33 = load ptr, ptr %32, align 8, !tbaa !41
  %34 = getelementptr inbounds i8, ptr %33, i64 112
  %35 = load ptr, ptr %34, align 8
  invoke void %35(ptr noundef nonnull align 8 dereferenceable(224) %32, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %36 unwind label %76

36:                                               ; preds = %30
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #5
  %37 = getelementptr inbounds i8, ptr %0, i64 496
  %38 = load ptr, ptr %37, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #5
  store i8 0, ptr %11, align 1, !tbaa !40
  %39 = load ptr, ptr %38, align 8, !tbaa !41
  %40 = getelementptr inbounds i8, ptr %39, i64 112
  %41 = load ptr, ptr %40, align 8
  invoke void %41(ptr noundef nonnull align 8 dereferenceable(224) %38, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %42 unwind label %78

42:                                               ; preds = %36
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %.preheader unwind label %.loopexit.split-lp.loopexit.split-lp

.preheader:                                       ; preds = %42
  %43 = getelementptr inbounds i8, ptr %0, i64 456
  %44 = getelementptr inbounds i8, ptr %0, i64 424
  %45 = getelementptr inbounds i8, ptr %0, i64 432
  %46 = getelementptr inbounds i8, ptr %0, i64 440
  %47 = getelementptr inbounds i8, ptr %0, i64 448
  %48 = getelementptr inbounds i8, ptr %0, i64 464
  %49 = getelementptr inbounds i8, ptr %0, i64 472
  %50 = getelementptr inbounds i8, ptr %0, i64 480
  %51 = getelementptr inbounds i8, ptr %0, i64 488
  br label %52

52:                                               ; preds = %.backedge, %.preheader
  %53 = load ptr, ptr %43, align 8, !tbaa !44
  %54 = load ptr, ptr %53, align 8, !tbaa !41
  %55 = getelementptr inbounds i8, ptr %54, i64 56
  %56 = load ptr, ptr %55, align 8
  %57 = invoke noundef nonnull align 1 dereferenceable(1) ptr %56(ptr noundef nonnull align 8 dereferenceable(224) %53)
          to label %58 unwind label %.loopexit

58:                                               ; preds = %52
  %59 = load i8, ptr %57, align 1, !tbaa !40, !range !45, !noundef !46
  %60 = icmp eq i8 %59, 0
  br i1 %60, label %61, label %80

61:                                               ; preds = %58
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %.backedge unwind label %.loopexit

.backedge:                                        ; preds = %61, %170
  br label %52, !llvm.loop !47

62:                                               ; preds = %1
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %225

64:                                               ; preds = %24
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %224

66:                                               ; preds = %25
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %223

68:                                               ; preds = %26
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %222

70:                                               ; preds = %27
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %221

72:                                               ; preds = %28
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %220

74:                                               ; preds = %29
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %219

76:                                               ; preds = %30
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #5
  br label %.loopexit.split-lp

78:                                               ; preds = %36
  %79 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #5
  br label %.loopexit.split-lp

.loopexit:                                        ; preds = %52, %61
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %170, %164, %129, %110, %104, %102, %96, %94, %88, %86, %80
  %lpad.loopexit45 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp:             ; preds = %42
  %lpad.loopexit.split-lp46 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

80:                                               ; preds = %58
  %81 = load ptr, ptr %44, align 8, !tbaa !49
  %82 = load ptr, ptr %81, align 8, !tbaa !41
  %83 = getelementptr inbounds i8, ptr %82, i64 40
  %84 = load ptr, ptr %83, align 8
  %85 = invoke noundef nonnull align 8 dereferenceable(24) ptr %84(ptr noundef nonnull align 8 dereferenceable(232) %81)
          to label %86 unwind label %.loopexit.split-lp.loopexit

86:                                               ; preds = %80
  %87 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi2EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(24) %85)
          to label %88 unwind label %.loopexit.split-lp.loopexit

88:                                               ; preds = %86
  %89 = load ptr, ptr %45, align 8, !tbaa !50
  %90 = load ptr, ptr %89, align 8, !tbaa !41
  %91 = getelementptr inbounds i8, ptr %90, i64 40
  %92 = load ptr, ptr %91, align 8
  %93 = invoke noundef nonnull align 8 dereferenceable(24) ptr %92(ptr noundef nonnull align 8 dereferenceable(232) %89)
          to label %94 unwind label %.loopexit.split-lp.loopexit

94:                                               ; preds = %88
  %95 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %93)
          to label %96 unwind label %.loopexit.split-lp.loopexit

96:                                               ; preds = %94
  %97 = load ptr, ptr %46, align 8, !tbaa !51
  %98 = load ptr, ptr %97, align 8, !tbaa !41
  %99 = getelementptr inbounds i8, ptr %98, i64 40
  %100 = load ptr, ptr %99, align 8
  %101 = invoke noundef nonnull align 8 dereferenceable(24) ptr %100(ptr noundef nonnull align 8 dereferenceable(232) %97)
          to label %102 unwind label %.loopexit.split-lp.loopexit

102:                                              ; preds = %96
  %103 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi6EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(24) %101)
          to label %104 unwind label %.loopexit.split-lp.loopexit

104:                                              ; preds = %102
  %105 = load ptr, ptr %47, align 8, !tbaa !52
  %106 = load ptr, ptr %105, align 8, !tbaa !41
  %107 = getelementptr inbounds i8, ptr %106, i64 40
  %108 = load ptr, ptr %107, align 8
  %109 = invoke noundef nonnull align 8 dereferenceable(24) ptr %108(ptr noundef nonnull align 8 dereferenceable(232) %105)
          to label %110 unwind label %.loopexit.split-lp.loopexit

110:                                              ; preds = %104
  %111 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(24) %109)
          to label %112 unwind label %.loopexit.split-lp.loopexit

112:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #5
  invoke void @_ZN5sc_dtmiERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %113 unwind label %171

113:                                              ; preds = %112
  %114 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi2EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %115 unwind label %173

115:                                              ; preds = %113
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #5
  invoke void @_ZN5sc_dtmiERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %116 unwind label %176

116:                                              ; preds = %115
  %117 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %118 unwind label %178

118:                                              ; preds = %116
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #5
  invoke void @_ZN5sc_dtmiERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %119 unwind label %181

119:                                              ; preds = %118
  %120 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi6EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %121 unwind label %183

121:                                              ; preds = %119
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #5
  invoke void @_ZN5sc_dtmiERKNS_9sc_signedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %122 unwind label %186

122:                                              ; preds = %121
  %123 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %124 unwind label %188

124:                                              ; preds = %122
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #5
  %125 = load ptr, ptr %37, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #5
  store i8 1, ptr %16, align 1, !tbaa !40
  %126 = load ptr, ptr %125, align 8, !tbaa !41
  %127 = getelementptr inbounds i8, ptr %126, i64 112
  %128 = load ptr, ptr %127, align 8
  invoke void %128(ptr noundef nonnull align 8 dereferenceable(224) %125, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %129 unwind label %191

129:                                              ; preds = %124
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %130 unwind label %.loopexit.split-lp.loopexit

130:                                              ; preds = %129
  %131 = load ptr, ptr %37, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #5
  store i8 0, ptr %17, align 1, !tbaa !40
  %132 = load ptr, ptr %131, align 8, !tbaa !41
  %133 = getelementptr inbounds i8, ptr %132, i64 112
  %134 = load ptr, ptr %133, align 8
  invoke void %134(ptr noundef nonnull align 8 dereferenceable(224) %131, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %135 unwind label %193

135:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #5
  %136 = load ptr, ptr %48, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #5
  invoke void @_ZN5sc_dt5sc_bvILi2EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %137 unwind label %195

137:                                              ; preds = %135
  %138 = load ptr, ptr %136, align 8, !tbaa !41
  %139 = getelementptr inbounds i8, ptr %138, i64 72
  %140 = load ptr, ptr %139, align 8
  invoke void %140(ptr noundef nonnull align 8 dereferenceable(232) %136, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %141 unwind label %197

141:                                              ; preds = %137
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #5
  %142 = load ptr, ptr %49, align 8, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %143 unwind label %200

143:                                              ; preds = %141
  %144 = load ptr, ptr %142, align 8, !tbaa !41
  %145 = getelementptr inbounds i8, ptr %144, i64 72
  %146 = load ptr, ptr %145, align 8
  invoke void %146(ptr noundef nonnull align 8 dereferenceable(232) %142, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %147 unwind label %202

147:                                              ; preds = %143
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #5
  %148 = load ptr, ptr %50, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #5
  invoke void @_ZN5sc_dt5sc_bvILi6EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %149 unwind label %205

149:                                              ; preds = %147
  %150 = load ptr, ptr %148, align 8, !tbaa !41
  %151 = getelementptr inbounds i8, ptr %150, i64 72
  %152 = load ptr, ptr %151, align 8
  invoke void %152(ptr noundef nonnull align 8 dereferenceable(232) %148, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %153 unwind label %207

153:                                              ; preds = %149
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #5
  %154 = load ptr, ptr %51, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %155 unwind label %210

155:                                              ; preds = %153
  %156 = load ptr, ptr %154, align 8, !tbaa !41
  %157 = getelementptr inbounds i8, ptr %156, i64 72
  %158 = load ptr, ptr %157, align 8
  invoke void %158(ptr noundef nonnull align 8 dereferenceable(232) %154, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %159 unwind label %212

159:                                              ; preds = %155
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #5
  %160 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #5
  store i8 1, ptr %22, align 1, !tbaa !40
  %161 = load ptr, ptr %160, align 8, !tbaa !41
  %162 = getelementptr inbounds i8, ptr %161, i64 112
  %163 = load ptr, ptr %162, align 8
  invoke void %163(ptr noundef nonnull align 8 dereferenceable(224) %160, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %164 unwind label %215

164:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %165 unwind label %.loopexit.split-lp.loopexit

165:                                              ; preds = %164
  %166 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #5
  store i8 0, ptr %23, align 1, !tbaa !40
  %167 = load ptr, ptr %166, align 8, !tbaa !41
  %168 = getelementptr inbounds i8, ptr %167, i64 112
  %169 = load ptr, ptr %168, align 8
  invoke void %169(ptr noundef nonnull align 8 dereferenceable(224) %166, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %170 unwind label %217

170:                                              ; preds = %165
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %.backedge unwind label %.loopexit.split-lp.loopexit

171:                                              ; preds = %112
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %175

173:                                              ; preds = %113
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  br label %175

175:                                              ; preds = %173, %171
  %.pn = phi { ptr, i32 } [ %174, %173 ], [ %172, %171 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  br label %.loopexit.split-lp

176:                                              ; preds = %115
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %180

178:                                              ; preds = %116
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  br label %180

180:                                              ; preds = %178, %176
  %.pn22 = phi { ptr, i32 } [ %179, %178 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  br label %.loopexit.split-lp

181:                                              ; preds = %118
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %185

183:                                              ; preds = %119
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  br label %185

185:                                              ; preds = %183, %181
  %.pn24 = phi { ptr, i32 } [ %184, %183 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #5
  br label %.loopexit.split-lp

186:                                              ; preds = %121
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %190

188:                                              ; preds = %122
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  br label %190

190:                                              ; preds = %188, %186
  %.pn26 = phi { ptr, i32 } [ %189, %188 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #5
  br label %.loopexit.split-lp

191:                                              ; preds = %124
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #5
  br label %.loopexit.split-lp

193:                                              ; preds = %130
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #5
  br label %.loopexit.split-lp

195:                                              ; preds = %135
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %199

197:                                              ; preds = %137
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  br label %199

199:                                              ; preds = %197, %195
  %.pn28 = phi { ptr, i32 } [ %198, %197 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #5
  br label %.loopexit.split-lp

200:                                              ; preds = %141
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %143
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  br label %204

204:                                              ; preds = %202, %200
  %.pn30 = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #5
  br label %.loopexit.split-lp

205:                                              ; preds = %147
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %209

207:                                              ; preds = %149
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  br label %209

209:                                              ; preds = %207, %205
  %.pn32 = phi { ptr, i32 } [ %208, %207 ], [ %206, %205 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #5
  br label %.loopexit.split-lp

210:                                              ; preds = %153
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %214

212:                                              ; preds = %155
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #5
  br label %214

214:                                              ; preds = %212, %210
  %.pn34 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #5
  br label %.loopexit.split-lp

215:                                              ; preds = %159
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #5
  br label %.loopexit.split-lp

217:                                              ; preds = %165
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #5
  br label %.loopexit.split-lp

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %217, %215, %214, %209, %204, %199, %193, %191, %190, %185, %180, %175, %78, %76
  %.pn36 = phi { ptr, i32 } [ %218, %217 ], [ %216, %215 ], [ %.pn34, %214 ], [ %.pn32, %209 ], [ %.pn30, %204 ], [ %.pn28, %199 ], [ %194, %193 ], [ %192, %191 ], [ %.pn26, %190 ], [ %.pn24, %185 ], [ %.pn22, %180 ], [ %.pn, %175 ], [ %79, %78 ], [ %77, %76 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit45, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp46, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  br label %219

219:                                              ; preds = %.loopexit.split-lp, %74
  %.pn36.pn = phi { ptr, i32 } [ %.pn36, %.loopexit.split-lp ], [ %75, %74 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #5
  br label %220

220:                                              ; preds = %219, %72
  %.pn36.pn.pn = phi { ptr, i32 } [ %.pn36.pn, %219 ], [ %73, %72 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #5
  br label %221

221:                                              ; preds = %220, %70
  %.pn36.pn.pn.pn = phi { ptr, i32 } [ %.pn36.pn.pn, %220 ], [ %71, %70 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #5
  br label %222

222:                                              ; preds = %221, %68
  %.pn36.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn36.pn.pn.pn, %221 ], [ %69, %68 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  br label %223

223:                                              ; preds = %222, %66
  %.pn36.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn36.pn.pn.pn.pn, %222 ], [ %67, %66 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  br label %224

224:                                              ; preds = %223, %64
  %.pn36.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn36.pn.pn.pn.pn.pn, %223 ], [ %65, %64 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  br label %225

225:                                              ; preds = %224, %62
  %.pn36.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn36.pn.pn.pn.pn.pn.pn, %224 ], [ %63, %62 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #5
  resume { ptr, i32 } %.pn36.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt10sc_biguintILi2EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt10sc_biguintILi6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi2EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi6EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

declare void @_ZN5sc_dtmiERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi2EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare void @_ZN5sc_dtmiERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi6EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

declare void @_ZN5sc_dtmiERKNS_9sc_signedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi2EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi6EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4 align 2

attributes #0 = { mustprogress noreturn uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !9, i64 504}
!6 = !{!"_ZTS8bitwidth", !7, i64 0, !32, i64 232, !9, i64 416, !9, i64 424, !9, i64 432, !9, i64 440, !9, i64 448, !9, i64 456, !9, i64 464, !9, i64 472, !9, i64 480, !9, i64 488, !9, i64 496, !9, i64 504}
!7 = !{!"_ZTSN7sc_core9sc_moduleE", !8, i64 0, !23, i64 112, !24, i64 120, !26, i64 144, !28, i64 168, !30, i64 192, !9, i64 200, !31, i64 208, !9, i64 216, !9, i64 224}
!8 = !{!"_ZTSN7sc_core9sc_objectE", !9, i64 8, !12, i64 16, !16, i64 40, !20, i64 64, !9, i64 96, !9, i64 104}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSSt6vectorIPN7sc_core8sc_eventESaIS2_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!16 = !{!"_ZTSSt6vectorIPN7sc_core9sc_objectESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !22, i64 8, !10, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!22 = !{!"long", !10, i64 0}
!23 = !{!"_ZTSN7sc_core15sc_process_hostE"}
!24 = !{!"_ZTSN7sc_core12sc_sensitiveE", !9, i64 0, !25, i64 8, !9, i64 16}
!25 = !{!"_ZTSN7sc_core12sc_sensitiveUt_E", !10, i64 0}
!26 = !{!"_ZTSN7sc_core16sc_sensitive_posE", !9, i64 0, !27, i64 8, !9, i64 16}
!27 = !{!"_ZTSN7sc_core16sc_sensitive_posUt_E", !10, i64 0}
!28 = !{!"_ZTSN7sc_core16sc_sensitive_negE", !9, i64 0, !29, i64 8, !9, i64 16}
!29 = !{!"_ZTSN7sc_core16sc_sensitive_negUt_E", !10, i64 0}
!30 = !{!"bool", !10, i64 0}
!31 = !{!"int", !10, i64 0}
!32 = !{!"_ZTSN7sc_core5sc_inIbEE", !33, i64 0, !9, i64 152, !9, i64 160, !9, i64 168, !9, i64 176}
!33 = !{!"_ZTSN7sc_core7sc_portINS_15sc_signal_in_ifIbEELi1ELNS_14sc_port_policyE0EEE", !34, i64 0}
!34 = !{!"_ZTSN7sc_core9sc_port_bINS_15sc_signal_in_ifIbEEEE", !35, i64 0, !9, i64 120, !36, i64 128}
!35 = !{!"_ZTSN7sc_core12sc_port_baseE", !8, i64 0, !9, i64 112}
!36 = !{!"_ZTSSt6vectorIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!40 = !{!30, !30, i64 0}
!41 = !{!42, !42, i64 0}
!42 = !{!"vtable pointer", !11, i64 0}
!43 = !{!6, !9, i64 496}
!44 = !{!6, !9, i64 456}
!45 = !{i8 0, i8 2}
!46 = !{}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = !{!6, !9, i64 424}
!50 = !{!6, !9, i64 432}
!51 = !{!6, !9, i64 440}
!52 = !{!6, !9, i64 448}
!53 = !{!6, !9, i64 464}
!54 = !{!6, !9, i64 472}
!55 = !{!6, !9, i64 480}
!56 = !{!6, !9, i64 488}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass