; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/control/if_test/balancing/ba_385a71c3 (ZN9balancing5entryEv)

; 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_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 }
%struct.balancing = type { %"class.sc_core::sc_module", %"class.sc_core::sc_in", 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.0", %"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.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.8" }
%"class.sc_core::sc_port_base" = type { %"class.sc_core::sc_object", ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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 @_ZN9balancing5entryEv(ptr noundef nonnull align 8 dereferenceable(504) %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_biguint", align 8
  %8 = alloca %"class.sc_dt::sc_unsigned", align 8
  %9 = alloca %"class.sc_dt::sc_unsigned", align 8
  %10 = alloca %"class.sc_dt::sc_bv", align 8
  %11 = alloca %"class.sc_dt::sc_bv", align 8
  %12 = alloca %"class.sc_dt::sc_bv", align 8
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca %"class.sc_dt::sc_bv", align 8
  %18 = alloca %"class.sc_dt::sc_bv", align 8
  %19 = alloca %"class.sc_dt::sc_bv", align 8
  %20 = alloca %"class.sc_dt::sc_bv", align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca %"class.sc_dt::sc_unsigned", align 8
  %24 = alloca %"class.sc_dt::sc_unsigned", align 8
  %25 = alloca %"class.sc_dt::sc_bv", align 8
  %26 = alloca %"class.sc_dt::sc_biguint", align 8
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca %"class.sc_dt::sc_bv", align 8
  %30 = alloca %"class.sc_dt::sc_biguint", align 8
  %31 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %32 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %3) #5
  call void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %33 unwind label %89

33:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %34 unwind label %93

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

35:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #5
  invoke void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 12)
          to label %36 unwind label %101

36:                                               ; preds = %35
  %37 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 2
  %38 = load ptr, ptr %37, align 8, !tbaa !9
  %39 = load ptr, ptr %38, align 8, !tbaa !41
  %40 = getelementptr inbounds ptr, ptr %39, i64 7
  %41 = load ptr, ptr %40, align 8
  %42 = invoke noundef nonnull align 1 dereferenceable(1) ptr %41(ptr noundef nonnull align 8 dereferenceable(224) %38)
          to label %43 unwind label %105

43:                                               ; preds = %36
  %44 = load i8, ptr %42, align 1, !tbaa !43, !range !44, !noundef !45
  %45 = trunc i8 %44 to i1
  %46 = zext i1 %45 to i32
  %47 = icmp eq i32 %46, 1
  br i1 %47, label %48, label %148

48:                                               ; preds = %43
  %49 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 7
  %50 = load ptr, ptr %49, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 0)
          to label %51 unwind label %109

51:                                               ; preds = %48
  %52 = load ptr, ptr %50, align 8, !tbaa !41
  %53 = getelementptr inbounds ptr, ptr %52, i64 9
  %54 = load ptr, ptr %53, align 8
  invoke void %54(ptr noundef nonnull align 8 dereferenceable(232) %50, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %55 unwind label %113

55:                                               ; preds = %51
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #5
  %56 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 8
  %57 = load ptr, ptr %56, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef 0)
          to label %58 unwind label %118

58:                                               ; preds = %55
  %59 = load ptr, ptr %57, align 8, !tbaa !41
  %60 = getelementptr inbounds ptr, ptr %59, i64 9
  %61 = load ptr, ptr %60, align 8
  invoke void %61(ptr noundef nonnull align 8 dereferenceable(232) %57, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %62 unwind label %122

62:                                               ; preds = %58
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #5
  %63 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 9
  %64 = load ptr, ptr %63, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 0)
          to label %65 unwind label %127

65:                                               ; preds = %62
  %66 = load ptr, ptr %64, align 8, !tbaa !41
  %67 = getelementptr inbounds ptr, ptr %66, i64 9
  %68 = load ptr, ptr %67, align 8
  invoke void %68(ptr noundef nonnull align 8 dereferenceable(232) %64, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %69 unwind label %131

69:                                               ; preds = %65
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  %70 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 10
  %71 = load ptr, ptr %70, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  store i8 0, ptr %13, align 1, !tbaa !43
  %72 = load ptr, ptr %71, align 8, !tbaa !41
  %73 = getelementptr inbounds ptr, ptr %72, i64 14
  %74 = load ptr, ptr %73, align 8
  invoke void %74(ptr noundef nonnull align 8 dereferenceable(224) %71, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %75 unwind label %136

75:                                               ; preds = %69
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  %76 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 11
  %77 = load ptr, ptr %76, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  store i8 0, ptr %14, align 1, !tbaa !43
  %78 = load ptr, ptr %77, align 8, !tbaa !41
  %79 = getelementptr inbounds ptr, ptr %78, i64 14
  %80 = load ptr, ptr %79, align 8
  invoke void %80(ptr noundef nonnull align 8 dereferenceable(224) %77, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %81 unwind label %140

81:                                               ; preds = %75
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  %82 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 12
  %83 = load ptr, ptr %82, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #5
  store i8 0, ptr %15, align 1, !tbaa !43
  %84 = load ptr, ptr %83, align 8, !tbaa !41
  %85 = getelementptr inbounds ptr, ptr %84, i64 14
  %86 = load ptr, ptr %85, align 8
  invoke void %86(ptr noundef nonnull align 8 dereferenceable(224) %83, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %87 unwind label %144

87:                                               ; preds = %81
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %88 unwind label %105

88:                                               ; preds = %87
  br label %150

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

93:                                               ; preds = %33
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %5, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %6, align 4
  br label %443

97:                                               ; preds = %34
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %5, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %6, align 4
  br label %442

101:                                              ; preds = %35
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %5, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %6, align 4
  br label %441

105:                                              ; preds = %414, %382, %380, %377, %376, %368, %361, %360, %345, %341, %340, %339, %337, %334, %332, %330, %327, %303, %296, %295, %287, %280, %279, %260, %242, %241, %231, %220, %219, %218, %208, %193, %185, %184, %183, %182, %179, %171, %164, %155, %153, %148, %87, %36
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %5, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %6, align 4
  br label %440

109:                                              ; preds = %48
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %5, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %6, align 4
  br label %117

113:                                              ; preds = %51
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %5, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #5
  br label %117

117:                                              ; preds = %113, %109
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #5
  br label %440

118:                                              ; preds = %55
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %5, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %6, align 4
  br label %126

122:                                              ; preds = %58
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %5, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #5
  br label %126

126:                                              ; preds = %122, %118
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #5
  br label %440

127:                                              ; preds = %62
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %5, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %6, align 4
  br label %135

131:                                              ; preds = %65
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %5, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  br label %135

135:                                              ; preds = %131, %127
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  br label %440

136:                                              ; preds = %69
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %5, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  br label %440

140:                                              ; preds = %75
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %5, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  br label %440

144:                                              ; preds = %81
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %5, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #5
  br label %440

148:                                              ; preds = %43
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %149 unwind label %105

149:                                              ; preds = %148
  br label %150

150:                                              ; preds = %149, %88
  br label %151

151:                                              ; preds = %421, %150
  br label %152

152:                                              ; preds = %151
  br label %153

153:                                              ; preds = %159, %152
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %154 unwind label %105

154:                                              ; preds = %153
  br label %155

155:                                              ; preds = %154
  %156 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 6
  %157 = load ptr, ptr %156, align 8, !tbaa !52
  %158 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224) %157)
          to label %159 unwind label %105

159:                                              ; preds = %155
  %160 = load i8, ptr %158, align 1, !tbaa !43, !range !44, !noundef !45
  %161 = trunc i8 %160 to i1
  %162 = zext i1 %161 to i32
  %163 = icmp eq i32 %162, 0
  br i1 %163, label %153, label %164, !llvm.loop !53

164:                                              ; preds = %159
  %165 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 3
  %166 = load ptr, ptr %165, align 8, !tbaa !55
  %167 = load ptr, ptr %166, align 8, !tbaa !41
  %168 = getelementptr inbounds ptr, ptr %167, i64 5
  %169 = load ptr, ptr %168, align 8
  %170 = invoke noundef nonnull align 8 dereferenceable(24) ptr %169(ptr noundef nonnull align 8 dereferenceable(232) %166)
          to label %171 unwind label %105

171:                                              ; preds = %164
  %172 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(24) %170)
          to label %173 unwind label %105

173:                                              ; preds = %171
  %174 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 10
  %175 = load ptr, ptr %174, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #5
  store i8 1, ptr %16, align 1, !tbaa !43
  %176 = load ptr, ptr %175, align 8, !tbaa !41
  %177 = getelementptr inbounds ptr, ptr %176, i64 14
  %178 = load ptr, ptr %177, align 8
  invoke void %178(ptr noundef nonnull align 8 dereferenceable(224) %175, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %179 unwind label %195

179:                                              ; preds = %173
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  %180 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 4)
          to label %181 unwind label %105

181:                                              ; preds = %179
  br i1 %180, label %182, label %208

182:                                              ; preds = %181
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %183 unwind label %105

183:                                              ; preds = %182
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %184 unwind label %105

184:                                              ; preds = %183
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %185 unwind label %105

185:                                              ; preds = %184
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %186 unwind label %105

186:                                              ; preds = %185
  %187 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 7
  %188 = load ptr, ptr %187, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %17, i32 noundef 3)
          to label %189 unwind label %199

189:                                              ; preds = %186
  %190 = load ptr, ptr %188, align 8, !tbaa !41
  %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) %17)
          to label %193 unwind label %203

193:                                              ; preds = %189
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %194 unwind label %105

194:                                              ; preds = %193
  br label %273

195:                                              ; preds = %173
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %5, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  br label %440

199:                                              ; preds = %186
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %5, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %6, align 4
  br label %207

203:                                              ; preds = %189
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %5, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  br label %207

207:                                              ; preds = %203, %199
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #5
  br label %440

208:                                              ; preds = %181
  %209 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 3)
          to label %210 unwind label %105

210:                                              ; preds = %208
  br i1 %209, label %211, label %231

211:                                              ; preds = %210
  %212 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 7
  %213 = load ptr, ptr %212, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %18, i32 noundef 2)
          to label %214 unwind label %222

214:                                              ; preds = %211
  %215 = load ptr, ptr %213, align 8, !tbaa !41
  %216 = getelementptr inbounds ptr, ptr %215, i64 9
  %217 = load ptr, ptr %216, align 8
  invoke void %217(ptr noundef nonnull align 8 dereferenceable(232) %213, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %218 unwind label %226

218:                                              ; preds = %214
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %219 unwind label %105

219:                                              ; preds = %218
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %220 unwind label %105

220:                                              ; preds = %219
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %221 unwind label %105

221:                                              ; preds = %220
  br label %272

222:                                              ; preds = %211
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %5, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %6, align 4
  br label %230

226:                                              ; preds = %214
  %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
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  br label %230

230:                                              ; preds = %226, %222
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #5
  br label %440

231:                                              ; preds = %210
  %232 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 2)
          to label %233 unwind label %105

233:                                              ; preds = %231
  br i1 %232, label %234, label %253

234:                                              ; preds = %233
  %235 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 7
  %236 = load ptr, ptr %235, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %19, i32 noundef 1)
          to label %237 unwind label %244

237:                                              ; preds = %234
  %238 = load ptr, ptr %236, align 8, !tbaa !41
  %239 = getelementptr inbounds ptr, ptr %238, i64 9
  %240 = load ptr, ptr %239, align 8
  invoke void %240(ptr noundef nonnull align 8 dereferenceable(232) %236, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %241 unwind label %248

241:                                              ; preds = %237
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %242 unwind label %105

242:                                              ; preds = %241
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %243 unwind label %105

243:                                              ; preds = %242
  br label %271

244:                                              ; preds = %234
  %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
  br label %252

248:                                              ; preds = %237
  %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 @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  br label %252

252:                                              ; preds = %248, %244
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #5
  br label %440

253:                                              ; preds = %233
  %254 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 7
  %255 = load ptr, ptr %254, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %256 unwind label %262

256:                                              ; preds = %253
  %257 = load ptr, ptr %255, align 8, !tbaa !41
  %258 = getelementptr inbounds ptr, ptr %257, i64 9
  %259 = load ptr, ptr %258, align 8
  invoke void %259(ptr noundef nonnull align 8 dereferenceable(232) %255, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %260 unwind label %266

260:                                              ; preds = %256
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %261 unwind label %105

261:                                              ; preds = %260
  br label %271

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

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

270:                                              ; preds = %266, %262
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #5
  br label %440

271:                                              ; preds = %261, %243
  br label %272

272:                                              ; preds = %271, %221
  br label %273

273:                                              ; preds = %272, %194
  %274 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 10
  %275 = load ptr, ptr %274, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #5
  store i8 0, ptr %21, align 1, !tbaa !43
  %276 = load ptr, ptr %275, align 8, !tbaa !41
  %277 = getelementptr inbounds ptr, ptr %276, i64 14
  %278 = load ptr, ptr %277, align 8
  invoke void %278(ptr noundef nonnull align 8 dereferenceable(224) %275, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %279 unwind label %305

279:                                              ; preds = %273
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %280 unwind label %105

280:                                              ; preds = %279
  %281 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 4
  %282 = load ptr, ptr %281, align 8, !tbaa !56
  %283 = load ptr, ptr %282, align 8, !tbaa !41
  %284 = getelementptr inbounds ptr, ptr %283, i64 5
  %285 = load ptr, ptr %284, align 8
  %286 = invoke noundef nonnull align 8 dereferenceable(24) ptr %285(ptr noundef nonnull align 8 dereferenceable(232) %282)
          to label %287 unwind label %105

287:                                              ; preds = %280
  %288 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %286)
          to label %289 unwind label %105

289:                                              ; preds = %287
  %290 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 11
  %291 = load ptr, ptr %290, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #5
  store i8 1, ptr %22, align 1, !tbaa !43
  %292 = load ptr, ptr %291, align 8, !tbaa !41
  %293 = getelementptr inbounds ptr, ptr %292, i64 14
  %294 = load ptr, ptr %293, align 8
  invoke void %294(ptr noundef nonnull align 8 dereferenceable(224) %291, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %295 unwind label %309

295:                                              ; preds = %289
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %296 unwind label %105

296:                                              ; preds = %295
  %297 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 4)
          to label %298 unwind label %105

298:                                              ; preds = %296
  br i1 %297, label %299, label %327

299:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #5
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %300 unwind label %313

300:                                              ; preds = %299
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %301 unwind label %317

301:                                              ; preds = %300
  %302 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %303 unwind label %321

303:                                              ; preds = %301
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %304 unwind label %105

304:                                              ; preds = %303
  br label %345

305:                                              ; preds = %273
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %5, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #5
  br label %440

309:                                              ; preds = %289
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %5, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #5
  br label %440

313:                                              ; preds = %299
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %5, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %6, align 4
  br label %326

317:                                              ; preds = %300
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %5, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %6, align 4
  br label %325

321:                                              ; preds = %301
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %5, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %6, align 4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  br label %325

325:                                              ; preds = %321, %317
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  br label %326

326:                                              ; preds = %325, %313
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %440

327:                                              ; preds = %298
  %328 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 8)
          to label %329 unwind label %105

329:                                              ; preds = %327
  br i1 %328, label %330, label %334

330:                                              ; preds = %329
  %331 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 4)
          to label %332 unwind label %105

332:                                              ; preds = %330
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %333 unwind label %105

333:                                              ; preds = %332
  br label %344

334:                                              ; preds = %329
  %335 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 12)
          to label %336 unwind label %105

336:                                              ; preds = %334
  br i1 %335, label %337, label %343

337:                                              ; preds = %336
  %338 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 1)
          to label %339 unwind label %105

339:                                              ; preds = %337
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %340 unwind label %105

340:                                              ; preds = %339
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %341 unwind label %105

341:                                              ; preds = %340
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %342 unwind label %105

342:                                              ; preds = %341
  br label %343

343:                                              ; preds = %342, %336
  br label %344

344:                                              ; preds = %343, %333
  br label %345

345:                                              ; preds = %344, %304
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %346 unwind label %105

346:                                              ; preds = %345
  %347 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 8
  %348 = load ptr, ptr %347, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %349 unwind label %384

349:                                              ; preds = %346
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %350 unwind label %388

350:                                              ; preds = %349
  %351 = load ptr, ptr %348, align 8, !tbaa !41
  %352 = getelementptr inbounds ptr, ptr %351, i64 9
  %353 = load ptr, ptr %352, align 8
  invoke void %353(ptr noundef nonnull align 8 dereferenceable(232) %348, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %354 unwind label %392

354:                                              ; preds = %350
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #5
  %355 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 11
  %356 = load ptr, ptr %355, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #5
  store i8 0, ptr %27, align 1, !tbaa !43
  %357 = load ptr, ptr %356, align 8, !tbaa !41
  %358 = getelementptr inbounds ptr, ptr %357, i64 14
  %359 = load ptr, ptr %358, align 8
  invoke void %359(ptr noundef nonnull align 8 dereferenceable(224) %356, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %360 unwind label %398

360:                                              ; preds = %354
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %361 unwind label %105

361:                                              ; preds = %360
  %362 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 5
  %363 = load ptr, ptr %362, align 8, !tbaa !57
  %364 = load ptr, ptr %363, align 8, !tbaa !41
  %365 = getelementptr inbounds ptr, ptr %364, i64 5
  %366 = load ptr, ptr %365, align 8
  %367 = invoke noundef nonnull align 8 dereferenceable(24) ptr %366(ptr noundef nonnull align 8 dereferenceable(232) %363)
          to label %368 unwind label %105

368:                                              ; preds = %361
  %369 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(24) %367)
          to label %370 unwind label %105

370:                                              ; preds = %368
  %371 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 12
  %372 = load ptr, ptr %371, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #5
  store i8 1, ptr %28, align 1, !tbaa !43
  %373 = load ptr, ptr %372, align 8, !tbaa !41
  %374 = getelementptr inbounds ptr, ptr %373, i64 14
  %375 = load ptr, ptr %374, align 8
  invoke void %375(ptr noundef nonnull align 8 dereferenceable(224) %372, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %376 unwind label %402

376:                                              ; preds = %370
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %377 unwind label %105

377:                                              ; preds = %376
  %378 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %7, i32 noundef 8)
          to label %379 unwind label %105

379:                                              ; preds = %377
  br i1 %378, label %380, label %406

380:                                              ; preds = %379
  %381 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 4)
          to label %382 unwind label %105

382:                                              ; preds = %380
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %383 unwind label %105

383:                                              ; preds = %382
  br label %406

384:                                              ; preds = %346
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %5, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %6, align 4
  br label %397

388:                                              ; preds = %349
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %5, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %6, align 4
  br label %396

392:                                              ; preds = %350
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %5, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  br label %396

396:                                              ; preds = %392, %388
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  br label %397

397:                                              ; preds = %396, %384
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #5
  br label %440

398:                                              ; preds = %354
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %5, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  br label %440

402:                                              ; preds = %370
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %5, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  br label %440

406:                                              ; preds = %383, %379
  %407 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 9
  %408 = load ptr, ptr %407, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %409 unwind label %422

409:                                              ; preds = %406
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %410 unwind label %426

410:                                              ; preds = %409
  %411 = load ptr, ptr %408, align 8, !tbaa !41
  %412 = getelementptr inbounds ptr, ptr %411, i64 9
  %413 = load ptr, ptr %412, align 8
  invoke void %413(ptr noundef nonnull align 8 dereferenceable(232) %408, ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %414 unwind label %430

414:                                              ; preds = %410
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %415 unwind label %105

415:                                              ; preds = %414
  %416 = getelementptr inbounds %struct.balancing, ptr %32, i32 0, i32 12
  %417 = load ptr, ptr %416, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #5
  store i8 0, ptr %31, align 1, !tbaa !43
  %418 = load ptr, ptr %417, align 8, !tbaa !41
  %419 = getelementptr inbounds ptr, ptr %418, i64 14
  %420 = load ptr, ptr %419, align 8
  invoke void %420(ptr noundef nonnull align 8 dereferenceable(224) %417, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %421 unwind label %436

421:                                              ; preds = %415
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  br label %151, !llvm.loop !58

422:                                              ; preds = %406
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %5, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %6, align 4
  br label %435

426:                                              ; preds = %409
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %5, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %6, align 4
  br label %434

430:                                              ; preds = %410
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %5, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  br label %434

434:                                              ; preds = %430, %426
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  br label %435

435:                                              ; preds = %434, %422
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #5
  br label %440

436:                                              ; preds = %415
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %5, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  br label %440

440:                                              ; preds = %436, %435, %402, %398, %397, %326, %309, %305, %270, %252, %230, %207, %195, %144, %140, %136, %135, %126, %117, %105
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  br label %441

441:                                              ; preds = %440, %101
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #5
  br label %442

442:                                              ; preds = %441, %97
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #5
  br label %443

443:                                              ; preds = %442, %93
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  br label %444

444:                                              ; preds = %443, %89
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #5
  br label %445

445:                                              ; preds = %444
  %446 = load ptr, ptr %5, align 8
  %447 = load i32, ptr %6, align 4
  %448 = insertvalue { ptr, i32 } poison, ptr %446, 0
  %449 = insertvalue { ptr, i32 } %448, i32 %447, 1
  resume { ptr, i32 } %449
}

; 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_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

declare void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) 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 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224)) #0 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #3

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(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_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 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

; 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

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 = { inlinehint 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 #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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 416}
!10 = !{!"_ZTS9balancing", !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}
!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 = !{!42, !42, i64 0}
!42 = !{!"vtable pointer", !8, i64 0}
!43 = !{!31, !31, i64 0}
!44 = !{i8 0, i8 2}
!45 = !{}
!46 = !{!10, !6, i64 456}
!47 = !{!10, !6, i64 464}
!48 = !{!10, !6, i64 472}
!49 = !{!10, !6, i64 480}
!50 = !{!10, !6, i64 488}
!51 = !{!10, !6, i64 496}
!52 = !{!10, !6, i64 448}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{!10, !6, i64 424}
!56 = !{!10, !6, i64 432}
!57 = !{!10, !6, i64 440}
!58 = distinct !{!58, !54}


; 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_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 }

; Function Attrs: mustprogress noreturn uwtable
define dso_local void @_ZN9balancing5entryEv(ptr noundef nonnull align 8 dereferenceable(504) %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_biguint", align 8
  %5 = alloca %"class.sc_dt::sc_unsigned", align 8
  %6 = alloca %"class.sc_dt::sc_unsigned", align 8
  %7 = alloca %"class.sc_dt::sc_bv", align 8
  %8 = alloca %"class.sc_dt::sc_bv", align 8
  %9 = alloca %"class.sc_dt::sc_bv", align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca %"class.sc_dt::sc_bv", align 8
  %15 = alloca %"class.sc_dt::sc_bv", align 8
  %16 = alloca %"class.sc_dt::sc_bv", align 8
  %17 = alloca %"class.sc_dt::sc_bv", align 8
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca %"class.sc_dt::sc_unsigned", align 8
  %21 = alloca %"class.sc_dt::sc_unsigned", align 8
  %22 = alloca %"class.sc_dt::sc_bv", align 8
  %23 = alloca %"class.sc_dt::sc_biguint", align 8
  %24 = alloca i8, align 1
  %25 = alloca i8, align 1
  %26 = alloca %"class.sc_dt::sc_bv", align 8
  %27 = alloca %"class.sc_dt::sc_biguint", align 8
  %28 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #6
  call void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %29 unwind label %82

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

30:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  invoke void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 12)
          to label %31 unwind label %86

31:                                               ; preds = %30
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  invoke void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 12)
          to label %32 unwind label %88

32:                                               ; preds = %31
  %33 = getelementptr inbounds i8, ptr %0, i64 416
  %34 = load ptr, ptr %33, align 8, !tbaa !5
  %35 = load ptr, ptr %34, align 8, !tbaa !40
  %36 = getelementptr inbounds i8, ptr %35, i64 56
  %37 = load ptr, ptr %36, align 8
  %38 = invoke noundef nonnull align 1 dereferenceable(1) ptr %37(ptr noundef nonnull align 8 dereferenceable(224) %34)
          to label %39 unwind label %.loopexit.split-lp.loopexit.split-lp

39:                                               ; preds = %32
  %40 = load i8, ptr %38, align 1, !tbaa !42, !range !43, !noundef !44
  %41 = trunc nuw i8 %40 to i1
  br i1 %41, label %42, label %.invoke57

42:                                               ; preds = %39
  %43 = getelementptr inbounds i8, ptr %0, i64 456
  %44 = load ptr, ptr %43, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 0)
          to label %45 unwind label %90

45:                                               ; preds = %42
  %46 = load ptr, ptr %44, align 8, !tbaa !40
  %47 = getelementptr inbounds i8, ptr %46, i64 72
  %48 = load ptr, ptr %47, align 8
  invoke void %48(ptr noundef nonnull align 8 dereferenceable(232) %44, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %49 unwind label %92

49:                                               ; preds = %45
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  %50 = getelementptr inbounds i8, ptr %0, i64 464
  %51 = load ptr, ptr %50, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 0)
          to label %52 unwind label %95

52:                                               ; preds = %49
  %53 = load ptr, ptr %51, align 8, !tbaa !40
  %54 = getelementptr inbounds i8, ptr %53, i64 72
  %55 = load ptr, ptr %54, align 8
  invoke void %55(ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %56 unwind label %97

56:                                               ; preds = %52
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  %57 = getelementptr inbounds i8, ptr %0, i64 472
  %58 = load ptr, ptr %57, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %9, i32 noundef 0)
          to label %59 unwind label %100

59:                                               ; preds = %56
  %60 = load ptr, ptr %58, align 8, !tbaa !40
  %61 = getelementptr inbounds i8, ptr %60, i64 72
  %62 = load ptr, ptr %61, align 8
  invoke void %62(ptr noundef nonnull align 8 dereferenceable(232) %58, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %63 unwind label %102

63:                                               ; preds = %59
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  %64 = getelementptr inbounds i8, ptr %0, i64 480
  %65 = load ptr, ptr %64, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  store i8 0, ptr %10, align 1, !tbaa !42
  %66 = load ptr, ptr %65, align 8, !tbaa !40
  %67 = getelementptr inbounds i8, ptr %66, i64 112
  %68 = load ptr, ptr %67, align 8
  invoke void %68(ptr noundef nonnull align 8 dereferenceable(224) %65, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %69 unwind label %105

69:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  %70 = getelementptr inbounds i8, ptr %0, i64 488
  %71 = load ptr, ptr %70, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #6
  store i8 0, ptr %11, align 1, !tbaa !42
  %72 = load ptr, ptr %71, align 8, !tbaa !40
  %73 = getelementptr inbounds i8, ptr %72, i64 112
  %74 = load ptr, ptr %73, align 8
  invoke void %74(ptr noundef nonnull align 8 dereferenceable(224) %71, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %75 unwind label %107

75:                                               ; preds = %69
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  %76 = getelementptr inbounds i8, ptr %0, i64 496
  %77 = load ptr, ptr %76, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  store i8 0, ptr %12, align 1, !tbaa !42
  %78 = load ptr, ptr %77, align 8, !tbaa !40
  %79 = getelementptr inbounds i8, ptr %78, i64 112
  %80 = load ptr, ptr %79, align 8
  invoke void %80(ptr noundef nonnull align 8 dereferenceable(224) %77, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %81 unwind label %109

81:                                               ; preds = %75
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  br label %.invoke57

82:                                               ; preds = %1
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %329

84:                                               ; preds = %29
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %328

86:                                               ; preds = %30
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %327

88:                                               ; preds = %31
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %326

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

.loopexit.split-lp.loopexit:                      ; preds = %.invoke58, %.invoke56, %.invoke, %309, %289, %287, %284, %283, %276, %270, %269, %256, %255, %254, %252, %249, %247, %244, %224, %223, %216, %210, %209, %178, %172, %163, %148, %147, %146, %145, %142, %135, %129
  %lpad.loopexit53 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

90:                                               ; preds = %42
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %94

92:                                               ; preds = %45
  %93 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  br label %94

94:                                               ; preds = %92, %90
  %.pn = phi { ptr, i32 } [ %93, %92 ], [ %91, %90 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  br label %.loopexit.split-lp

95:                                               ; preds = %49
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %99

97:                                               ; preds = %52
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  br label %99

99:                                               ; preds = %97, %95
  %.pn26 = phi { ptr, i32 } [ %98, %97 ], [ %96, %95 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  br label %.loopexit.split-lp

100:                                              ; preds = %56
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %104

102:                                              ; preds = %59
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  br label %104

104:                                              ; preds = %102, %100
  %.pn28 = phi { ptr, i32 } [ %103, %102 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  br label %.loopexit.split-lp

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

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

109:                                              ; preds = %75
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  br label %.loopexit.split-lp

.invoke57:                                        ; preds = %39, %81
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %111 unwind label %.loopexit.split-lp.loopexit.split-lp

111:                                              ; preds = %.invoke57
  %112 = getelementptr inbounds i8, ptr %0, i64 448
  %113 = getelementptr inbounds i8, ptr %0, i64 424
  %114 = getelementptr inbounds i8, ptr %0, i64 480
  %115 = getelementptr inbounds i8, ptr %0, i64 456
  %116 = getelementptr inbounds i8, ptr %0, i64 432
  %117 = getelementptr inbounds i8, ptr %0, i64 488
  %118 = getelementptr inbounds i8, ptr %0, i64 464
  %119 = getelementptr inbounds i8, ptr %0, i64 440
  %120 = getelementptr inbounds i8, ptr %0, i64 496
  %121 = getelementptr inbounds i8, ptr %0, i64 472
  br label %122

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

123:                                              ; preds = %122
  %124 = load ptr, ptr %112, align 8, !tbaa !51
  %125 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224) %124)
          to label %126 unwind label %.loopexit

126:                                              ; preds = %123
  %127 = load i8, ptr %125, align 1, !tbaa !42, !range !43, !noundef !44
  %128 = icmp eq i8 %127, 0
  br i1 %128, label %.backedge, label %129

.backedge:                                        ; preds = %126, %315
  br label %122, !llvm.loop !52

129:                                              ; preds = %126
  %130 = load ptr, ptr %113, align 8, !tbaa !54
  %131 = load ptr, ptr %130, align 8, !tbaa !40
  %132 = getelementptr inbounds i8, ptr %131, i64 40
  %133 = load ptr, ptr %132, align 8
  %134 = invoke noundef nonnull align 8 dereferenceable(24) ptr %133(ptr noundef nonnull align 8 dereferenceable(232) %130)
          to label %135 unwind label %.loopexit.split-lp.loopexit

135:                                              ; preds = %129
  %136 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(24) %134)
          to label %137 unwind label %.loopexit.split-lp.loopexit

137:                                              ; preds = %135
  %138 = load ptr, ptr %114, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  store i8 1, ptr %13, align 1, !tbaa !42
  %139 = load ptr, ptr %138, align 8, !tbaa !40
  %140 = getelementptr inbounds i8, ptr %139, i64 112
  %141 = load ptr, ptr %140, align 8
  invoke void %141(ptr noundef nonnull align 8 dereferenceable(224) %138, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %142 unwind label %156

142:                                              ; preds = %137
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  %143 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 4)
          to label %144 unwind label %.loopexit.split-lp.loopexit

144:                                              ; preds = %142
  br i1 %143, label %145, label %163

145:                                              ; preds = %144
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %146 unwind label %.loopexit.split-lp.loopexit

146:                                              ; preds = %145
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %147 unwind label %.loopexit.split-lp.loopexit

147:                                              ; preds = %146
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %148 unwind label %.loopexit.split-lp.loopexit

148:                                              ; preds = %147
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %149 unwind label %.loopexit.split-lp.loopexit

149:                                              ; preds = %148
  %150 = load ptr, ptr %115, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 3)
          to label %151 unwind label %158

151:                                              ; preds = %149
  %152 = load ptr, ptr %150, align 8, !tbaa !40
  %153 = getelementptr inbounds i8, ptr %152, i64 72
  %154 = load ptr, ptr %153, align 8
  invoke void %154(ptr noundef nonnull align 8 dereferenceable(232) %150, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %155 unwind label %160

155:                                              ; preds = %151
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  br label %.invoke56

156:                                              ; preds = %137
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  br label %.loopexit.split-lp

158:                                              ; preds = %149
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %162

160:                                              ; preds = %151
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  br label %162

162:                                              ; preds = %160, %158
  %.pn36 = phi { ptr, i32 } [ %161, %160 ], [ %159, %158 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  br label %.loopexit.split-lp

163:                                              ; preds = %144
  %164 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 3)
          to label %165 unwind label %.loopexit.split-lp.loopexit

165:                                              ; preds = %163
  br i1 %164, label %166, label %178

166:                                              ; preds = %165
  %167 = load ptr, ptr %115, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 2)
          to label %168 unwind label %173

168:                                              ; preds = %166
  %169 = load ptr, ptr %167, align 8, !tbaa !40
  %170 = getelementptr inbounds i8, ptr %169, i64 72
  %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) %15)
          to label %172 unwind label %175

172:                                              ; preds = %168
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %.invoke58 unwind label %.loopexit.split-lp.loopexit

173:                                              ; preds = %166
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %168
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  br label %177

177:                                              ; preds = %175, %173
  %.pn34 = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  br label %.loopexit.split-lp

178:                                              ; preds = %165
  %179 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 2)
          to label %180 unwind label %.loopexit.split-lp.loopexit

180:                                              ; preds = %178
  %181 = load ptr, ptr %115, align 8, !tbaa !45
  br i1 %179, label %182, label %193

182:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 1)
          to label %183 unwind label %188

183:                                              ; preds = %182
  %184 = load ptr, ptr %181, align 8, !tbaa !40
  %185 = getelementptr inbounds i8, ptr %184, i64 72
  %186 = load ptr, ptr %185, align 8
  invoke void %186(ptr noundef nonnull align 8 dereferenceable(232) %181, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %187 unwind label %190

187:                                              ; preds = %183
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  br label %.invoke58

.invoke58:                                        ; preds = %172, %187
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %.invoke56 unwind label %.loopexit.split-lp.loopexit

188:                                              ; preds = %182
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %192

190:                                              ; preds = %183
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  br label %192

192:                                              ; preds = %190, %188
  %.pn32 = phi { ptr, i32 } [ %191, %190 ], [ %189, %188 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  br label %.loopexit.split-lp

193:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %194 unwind label %199

194:                                              ; preds = %193
  %195 = load ptr, ptr %181, align 8, !tbaa !40
  %196 = getelementptr inbounds i8, ptr %195, i64 72
  %197 = load ptr, ptr %196, align 8
  invoke void %197(ptr noundef nonnull align 8 dereferenceable(232) %181, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %198 unwind label %201

198:                                              ; preds = %194
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #6
  br label %.invoke56

.invoke56:                                        ; preds = %.invoke58, %155, %198
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %204 unwind label %.loopexit.split-lp.loopexit

199:                                              ; preds = %193
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %203

201:                                              ; preds = %194
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  br label %203

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

204:                                              ; preds = %.invoke56
  %205 = load ptr, ptr %114, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  store i8 0, ptr %18, align 1, !tbaa !42
  %206 = load ptr, ptr %205, align 8, !tbaa !40
  %207 = getelementptr inbounds i8, ptr %206, i64 112
  %208 = load ptr, ptr %207, align 8
  invoke void %208(ptr noundef nonnull align 8 dereferenceable(224) %205, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %209 unwind label %232

209:                                              ; preds = %204
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %210 unwind label %.loopexit.split-lp.loopexit

210:                                              ; preds = %209
  %211 = load ptr, ptr %116, align 8, !tbaa !55
  %212 = load ptr, ptr %211, align 8, !tbaa !40
  %213 = getelementptr inbounds i8, ptr %212, i64 40
  %214 = load ptr, ptr %213, align 8
  %215 = invoke noundef nonnull align 8 dereferenceable(24) ptr %214(ptr noundef nonnull align 8 dereferenceable(232) %211)
          to label %216 unwind label %.loopexit.split-lp.loopexit

216:                                              ; preds = %210
  %217 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(24) %215)
          to label %218 unwind label %.loopexit.split-lp.loopexit

218:                                              ; preds = %216
  %219 = load ptr, ptr %117, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  store i8 1, ptr %19, align 1, !tbaa !42
  %220 = load ptr, ptr %219, align 8, !tbaa !40
  %221 = getelementptr inbounds i8, ptr %220, i64 112
  %222 = load ptr, ptr %221, align 8
  invoke void %222(ptr noundef nonnull align 8 dereferenceable(224) %219, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %223 unwind label %234

223:                                              ; preds = %218
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %224 unwind label %.loopexit.split-lp.loopexit

224:                                              ; preds = %223
  %225 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 4)
          to label %226 unwind label %.loopexit.split-lp.loopexit

226:                                              ; preds = %224
  br i1 %225, label %227, label %244

227:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %228 unwind label %236

228:                                              ; preds = %227
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %229 unwind label %238

229:                                              ; preds = %228
  %230 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %231 unwind label %240

231:                                              ; preds = %229
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %.invoke

232:                                              ; preds = %204
  %233 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  br label %.loopexit.split-lp

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

236:                                              ; preds = %227
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %243

238:                                              ; preds = %228
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %242

240:                                              ; preds = %229
  %241 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %242

242:                                              ; preds = %240, %238
  %.pn38 = phi { ptr, i32 } [ %241, %240 ], [ %239, %238 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %243

243:                                              ; preds = %242, %236
  %.pn38.pn = phi { ptr, i32 } [ %.pn38, %242 ], [ %237, %236 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %.loopexit.split-lp

244:                                              ; preds = %226
  %245 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 8)
          to label %246 unwind label %.loopexit.split-lp.loopexit

246:                                              ; preds = %244
  br i1 %245, label %247, label %249

247:                                              ; preds = %246
  %248 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 4)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit

249:                                              ; preds = %246
  %250 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 12)
          to label %251 unwind label %.loopexit.split-lp.loopexit

251:                                              ; preds = %249
  br i1 %250, label %252, label %256

252:                                              ; preds = %251
  %253 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 1)
          to label %254 unwind label %.loopexit.split-lp.loopexit

254:                                              ; preds = %252
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %255 unwind label %.loopexit.split-lp.loopexit

255:                                              ; preds = %254
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit

.invoke:                                          ; preds = %255, %247, %231
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %256 unwind label %.loopexit.split-lp.loopexit

256:                                              ; preds = %.invoke, %251
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %257 unwind label %.loopexit.split-lp.loopexit

257:                                              ; preds = %256
  %258 = load ptr, ptr %118, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %259 unwind label %290

259:                                              ; preds = %257
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %260 unwind label %292

260:                                              ; preds = %259
  %261 = load ptr, ptr %258, align 8, !tbaa !40
  %262 = getelementptr inbounds i8, ptr %261, i64 72
  %263 = load ptr, ptr %262, align 8
  invoke void %263(ptr noundef nonnull align 8 dereferenceable(232) %258, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %264 unwind label %294

264:                                              ; preds = %260
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  %265 = load ptr, ptr %117, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  store i8 0, ptr %24, align 1, !tbaa !42
  %266 = load ptr, ptr %265, align 8, !tbaa !40
  %267 = getelementptr inbounds i8, ptr %266, i64 112
  %268 = load ptr, ptr %267, align 8
  invoke void %268(ptr noundef nonnull align 8 dereferenceable(224) %265, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %269 unwind label %298

269:                                              ; preds = %264
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %270 unwind label %.loopexit.split-lp.loopexit

270:                                              ; preds = %269
  %271 = load ptr, ptr %119, align 8, !tbaa !56
  %272 = load ptr, ptr %271, align 8, !tbaa !40
  %273 = getelementptr inbounds i8, ptr %272, i64 40
  %274 = load ptr, ptr %273, align 8
  %275 = invoke noundef nonnull align 8 dereferenceable(24) ptr %274(ptr noundef nonnull align 8 dereferenceable(232) %271)
          to label %276 unwind label %.loopexit.split-lp.loopexit

276:                                              ; preds = %270
  %277 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %275)
          to label %278 unwind label %.loopexit.split-lp.loopexit

278:                                              ; preds = %276
  %279 = load ptr, ptr %120, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  store i8 1, ptr %25, align 1, !tbaa !42
  %280 = load ptr, ptr %279, align 8, !tbaa !40
  %281 = getelementptr inbounds i8, ptr %280, i64 112
  %282 = load ptr, ptr %281, align 8
  invoke void %282(ptr noundef nonnull align 8 dereferenceable(224) %279, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %283 unwind label %300

283:                                              ; preds = %278
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %284 unwind label %.loopexit.split-lp.loopexit

284:                                              ; preds = %283
  %285 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 8)
          to label %286 unwind label %.loopexit.split-lp.loopexit

286:                                              ; preds = %284
  br i1 %285, label %287, label %302

287:                                              ; preds = %286
  %288 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 4)
          to label %289 unwind label %.loopexit.split-lp.loopexit

289:                                              ; preds = %287
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %302 unwind label %.loopexit.split-lp.loopexit

290:                                              ; preds = %257
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %297

292:                                              ; preds = %259
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %296

294:                                              ; preds = %260
  %295 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #6
  br label %296

296:                                              ; preds = %294, %292
  %.pn41 = phi { ptr, i32 } [ %295, %294 ], [ %293, %292 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %297

297:                                              ; preds = %296, %290
  %.pn41.pn = phi { ptr, i32 } [ %.pn41, %296 ], [ %291, %290 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  br label %.loopexit.split-lp

298:                                              ; preds = %264
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  br label %.loopexit.split-lp

300:                                              ; preds = %278
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  br label %.loopexit.split-lp

302:                                              ; preds = %289, %286
  %303 = load ptr, ptr %121, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #6
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %304 unwind label %316

304:                                              ; preds = %302
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %305 unwind label %318

305:                                              ; preds = %304
  %306 = load ptr, ptr %303, align 8, !tbaa !40
  %307 = getelementptr inbounds i8, ptr %306, i64 72
  %308 = load ptr, ptr %307, align 8
  invoke void %308(ptr noundef nonnull align 8 dereferenceable(232) %303, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %309 unwind label %320

309:                                              ; preds = %305
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %310 unwind label %.loopexit.split-lp.loopexit

310:                                              ; preds = %309
  %311 = load ptr, ptr %120, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #6
  store i8 0, ptr %28, align 1, !tbaa !42
  %312 = load ptr, ptr %311, align 8, !tbaa !40
  %313 = getelementptr inbounds i8, ptr %312, i64 112
  %314 = load ptr, ptr %313, align 8
  invoke void %314(ptr noundef nonnull align 8 dereferenceable(224) %311, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %315 unwind label %324

315:                                              ; preds = %310
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  br label %.backedge

316:                                              ; preds = %302
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %323

318:                                              ; preds = %304
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %322

320:                                              ; preds = %305
  %321 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #6
  br label %322

322:                                              ; preds = %320, %318
  %.pn44 = phi { ptr, i32 } [ %321, %320 ], [ %319, %318 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %323

323:                                              ; preds = %322, %316
  %.pn44.pn = phi { ptr, i32 } [ %.pn44, %322 ], [ %317, %316 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  br label %.loopexit.split-lp

324:                                              ; preds = %310
  %325 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  br label %.loopexit.split-lp

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %324, %323, %300, %298, %297, %243, %234, %232, %203, %192, %177, %162, %156, %109, %107, %105, %104, %99, %94
  %.pn47 = phi { ptr, i32 } [ %325, %324 ], [ %.pn44.pn, %323 ], [ %301, %300 ], [ %299, %298 ], [ %.pn41.pn, %297 ], [ %.pn38.pn, %243 ], [ %235, %234 ], [ %233, %232 ], [ %.pn36, %162 ], [ %.pn34, %177 ], [ %.pn32, %192 ], [ %.pn30, %203 ], [ %157, %156 ], [ %110, %109 ], [ %108, %107 ], [ %106, %105 ], [ %.pn28, %104 ], [ %.pn26, %99 ], [ %.pn, %94 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit53, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp54, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %326

326:                                              ; preds = %.loopexit.split-lp, %88
  %.pn47.pn = phi { ptr, i32 } [ %.pn47, %.loopexit.split-lp ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %327

327:                                              ; preds = %326, %86
  %.pn47.pn.pn = phi { ptr, i32 } [ %.pn47.pn, %326 ], [ %87, %86 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  br label %328

328:                                              ; preds = %327, %84
  %.pn47.pn.pn.pn = phi { ptr, i32 } [ %.pn47.pn.pn, %327 ], [ %85, %84 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  br label %329

329:                                              ; preds = %328, %82
  %.pn47.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn47.pn.pn.pn, %328 ], [ %83, %82 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  resume { ptr, i32 } %.pn47.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_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

declare i32 @__gxx_personality_v0(...)

declare void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) 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 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_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: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #4

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(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_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 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 = { inlinehint 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 #5 = { 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 #6 = { 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 416}
!6 = !{!"_ZTS9balancing", !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}
!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 = !{!41, !41, i64 0}
!41 = !{!"vtable pointer", !11, i64 0}
!42 = !{!30, !30, i64 0}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!6, !9, i64 456}
!46 = !{!6, !9, i64 464}
!47 = !{!6, !9, i64 472}
!48 = !{!6, !9, i64 480}
!49 = !{!6, !9, i64 488}
!50 = !{!6, !9, i64 496}
!51 = !{!6, !9, i64 448}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}
!54 = !{!6, !9, i64 424}
!55 = !{!6, !9, i64 432}
!56 = !{!6, !9, i64 440}


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