; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/arith/mult/mult.ll (ZN4mult5entryEv)

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

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

39:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #5
  invoke void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %40 unwind label %65

40:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #5
  invoke void @_ZN5sc_dt10sc_biguintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %41 unwind label %69

41:                                               ; preds = %40
  %42 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 2
  %43 = load ptr, ptr %42, align 8, !tbaa !9
  %44 = load ptr, ptr %43, align 8, !tbaa !41
  %45 = getelementptr inbounds ptr, ptr %44, i64 7
  %46 = load ptr, ptr %45, align 8
  %47 = invoke noundef nonnull align 1 dereferenceable(1) ptr %46(ptr noundef nonnull align 8 dereferenceable(224) %43)
          to label %48 unwind label %73

48:                                               ; preds = %41
  %49 = load i8, ptr %47, align 1, !tbaa !43, !range !44, !noundef !45
  %50 = trunc i8 %49 to i1
  %51 = zext i1 %50 to i32
  %52 = icmp eq i32 %51, 1
  br i1 %52, label %53, label %81

53:                                               ; preds = %48
  %54 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 14
  %55 = load ptr, ptr %54, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #5
  store i8 0, ptr %10, align 1, !tbaa !43
  %56 = load ptr, ptr %55, align 8, !tbaa !41
  %57 = getelementptr inbounds ptr, ptr %56, i64 14
  %58 = load ptr, ptr %57, align 8
  invoke void %58(ptr noundef nonnull align 8 dereferenceable(224) %55, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %59 unwind label %77

59:                                               ; preds = %53
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %60 unwind label %73

60:                                               ; preds = %59
  br label %83

61:                                               ; preds = %1
  %62 = landingpad { ptr, i32 }
          cleanup
  %63 = extractvalue { ptr, i32 } %62, 0
  store ptr %63, ptr %6, align 8
  %64 = extractvalue { ptr, i32 } %62, 1
  store i32 %64, ptr %7, align 4
  br label %548

65:                                               ; preds = %39
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %6, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %7, align 4
  br label %547

69:                                               ; preds = %40
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %6, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %7, align 4
  br label %546

73:                                               ; preds = %330, %323, %283, %282, %266, %259, %219, %218, %216, %214, %212, %208, %207, %200, %160, %159, %143, %136, %134, %127, %125, %118, %116, %108, %101, %100, %98, %86, %81, %59, %41
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %6, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %7, align 4
  br label %545

77:                                               ; preds = %53
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %6, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  br label %545

81:                                               ; preds = %48
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %82 unwind label %73

82:                                               ; preds = %81
  br label %83

83:                                               ; preds = %82, %60
  br label %84

84:                                               ; preds = %331, %83
  br label %85

85:                                               ; preds = %84
  br label %86

86:                                               ; preds = %99, %85
  %87 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 8
  %88 = load ptr, ptr %87, align 8, !tbaa !47
  %89 = load ptr, ptr %88, align 8, !tbaa !41
  %90 = getelementptr inbounds ptr, ptr %89, i64 7
  %91 = load ptr, ptr %90, align 8
  %92 = invoke noundef nonnull align 1 dereferenceable(1) ptr %91(ptr noundef nonnull align 8 dereferenceable(224) %88)
          to label %93 unwind label %73

93:                                               ; preds = %86
  %94 = load i8, ptr %92, align 1, !tbaa !43, !range !44, !noundef !45
  %95 = trunc i8 %94 to i1
  %96 = zext i1 %95 to i32
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %100

98:                                               ; preds = %93
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %99 unwind label %73

99:                                               ; preds = %98
  br label %86, !llvm.loop !48

100:                                              ; preds = %93
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %101 unwind label %73

101:                                              ; preds = %100
  %102 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 3
  %103 = load ptr, ptr %102, align 8, !tbaa !50
  %104 = load ptr, ptr %103, align 8, !tbaa !41
  %105 = getelementptr inbounds ptr, ptr %104, i64 5
  %106 = load ptr, ptr %105, align 8
  %107 = invoke noundef nonnull align 4 dereferenceable(4) ptr %106(ptr noundef nonnull align 8 dereferenceable(196) %103)
          to label %108 unwind label %73

108:                                              ; preds = %101
  %109 = load i32, ptr %107, align 4, !tbaa !51
  store i32 %109, ptr %3, align 4, !tbaa !51
  %110 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 4
  %111 = load ptr, ptr %110, align 8, !tbaa !52
  %112 = load ptr, ptr %111, align 8, !tbaa !41
  %113 = getelementptr inbounds ptr, ptr %112, i64 5
  %114 = load ptr, ptr %113, align 8
  %115 = invoke noundef nonnull align 8 dereferenceable(24) ptr %114(ptr noundef nonnull align 8 dereferenceable(232) %111)
          to label %116 unwind label %73

116:                                              ; preds = %108
  %117 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %115)
          to label %118 unwind label %73

118:                                              ; preds = %116
  %119 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 5
  %120 = load ptr, ptr %119, align 8, !tbaa !53
  %121 = load ptr, ptr %120, align 8, !tbaa !41
  %122 = getelementptr inbounds ptr, ptr %121, i64 5
  %123 = load ptr, ptr %122, align 8
  %124 = invoke noundef nonnull align 8 dereferenceable(24) ptr %123(ptr noundef nonnull align 8 dereferenceable(232) %120)
          to label %125 unwind label %73

125:                                              ; preds = %118
  %126 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(24) %124)
          to label %127 unwind label %73

127:                                              ; preds = %125
  %128 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 6
  %129 = load ptr, ptr %128, align 8, !tbaa !54
  %130 = load ptr, ptr %129, align 8, !tbaa !41
  %131 = getelementptr inbounds ptr, ptr %130, i64 5
  %132 = load ptr, ptr %131, align 8
  %133 = invoke noundef nonnull align 8 dereferenceable(24) ptr %132(ptr noundef nonnull align 8 dereferenceable(232) %129)
          to label %134 unwind label %73

134:                                              ; preds = %127
  %135 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(24) %133)
          to label %136 unwind label %73

136:                                              ; preds = %134
  %137 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 7
  %138 = load ptr, ptr %137, align 8, !tbaa !55
  %139 = load ptr, ptr %138, align 8, !tbaa !41
  %140 = getelementptr inbounds ptr, ptr %139, i64 5
  %141 = load ptr, ptr %140, align 8
  %142 = invoke noundef nonnull align 8 dereferenceable(24) ptr %141(ptr noundef nonnull align 8 dereferenceable(232) %138)
          to label %143 unwind label %73

143:                                              ; preds = %136
  %144 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(24) %142)
          to label %145 unwind label %73

145:                                              ; preds = %143
  %146 = load i32, ptr %3, align 4, !tbaa !51
  %147 = mul nsw i32 %146, 2
  store i32 %147, ptr %3, align 4, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #5
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedEi(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 2)
          to label %148 unwind label %332

148:                                              ; preds = %145
  %149 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %150 unwind label %336

150:                                              ; preds = %148
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #5
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedEi(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 2)
          to label %151 unwind label %341

151:                                              ; preds = %150
  %152 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %153 unwind label %345

153:                                              ; preds = %151
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #5
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedEi(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 2)
          to label %154 unwind label %350

154:                                              ; preds = %153
  %155 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %156 unwind label %354

156:                                              ; preds = %154
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #5
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedEi(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 2)
          to label %157 unwind label %359

157:                                              ; preds = %156
  %158 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %159 unwind label %363

159:                                              ; preds = %157
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %160 unwind label %73

160:                                              ; preds = %159
  %161 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 9
  %162 = load ptr, ptr %161, align 8, !tbaa !56
  %163 = load ptr, ptr %162, align 8, !tbaa !41
  %164 = getelementptr inbounds ptr, ptr %163, i64 9
  %165 = load ptr, ptr %164, align 8
  invoke void %165(ptr noundef nonnull align 8 dereferenceable(196) %162, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %166 unwind label %73

166:                                              ; preds = %160
  %167 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 10
  %168 = load ptr, ptr %167, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %169 unwind label %368

169:                                              ; preds = %166
  %170 = load ptr, ptr %168, align 8, !tbaa !41
  %171 = getelementptr inbounds ptr, ptr %170, i64 9
  %172 = load ptr, ptr %171, align 8
  invoke void %172(ptr noundef nonnull align 8 dereferenceable(232) %168, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %173 unwind label %372

173:                                              ; preds = %169
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #5
  %174 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 11
  %175 = load ptr, ptr %174, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %176 unwind label %377

176:                                              ; preds = %173
  %177 = load ptr, ptr %175, align 8, !tbaa !41
  %178 = getelementptr inbounds ptr, ptr %177, i64 9
  %179 = load ptr, ptr %178, align 8
  invoke void %179(ptr noundef nonnull align 8 dereferenceable(232) %175, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %180 unwind label %381

180:                                              ; preds = %176
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #5
  %181 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 12
  %182 = load ptr, ptr %181, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %183 unwind label %386

183:                                              ; preds = %180
  %184 = load ptr, ptr %182, align 8, !tbaa !41
  %185 = getelementptr inbounds ptr, ptr %184, i64 9
  %186 = load ptr, ptr %185, align 8
  invoke void %186(ptr noundef nonnull align 8 dereferenceable(232) %182, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %187 unwind label %390

187:                                              ; preds = %183
  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
  %188 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 13
  %189 = load ptr, ptr %188, align 8, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %190 unwind label %395

190:                                              ; preds = %187
  %191 = load ptr, ptr %189, align 8, !tbaa !41
  %192 = getelementptr inbounds ptr, ptr %191, i64 9
  %193 = load ptr, ptr %192, align 8
  invoke void %193(ptr noundef nonnull align 8 dereferenceable(232) %189, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %194 unwind label %399

194:                                              ; preds = %190
  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
  %195 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 14
  %196 = load ptr, ptr %195, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #5
  store i8 1, ptr %19, align 1, !tbaa !43
  %197 = load ptr, ptr %196, align 8, !tbaa !41
  %198 = getelementptr inbounds ptr, ptr %197, i64 14
  %199 = load ptr, ptr %198, align 8
  invoke void %199(ptr noundef nonnull align 8 dereferenceable(224) %196, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %200 unwind label %404

200:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %201 unwind label %73

201:                                              ; preds = %200
  %202 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 14
  %203 = load ptr, ptr %202, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #5
  store i8 0, ptr %20, align 1, !tbaa !43
  %204 = load ptr, ptr %203, align 8, !tbaa !41
  %205 = getelementptr inbounds ptr, ptr %204, i64 14
  %206 = load ptr, ptr %205, align 8
  invoke void %206(ptr noundef nonnull align 8 dereferenceable(224) %203, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %207 unwind label %408

207:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %208 unwind label %73

208:                                              ; preds = %207
  %209 = load i32, ptr %3, align 4, !tbaa !51
  %210 = mul nsw i32 %209, 2
  store i32 %210, ptr %3, align 4, !tbaa !51
  %211 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_signedmLEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 2)
          to label %212 unwind label %73

212:                                              ; preds = %208
  %213 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedmLEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 2)
          to label %214 unwind label %73

214:                                              ; preds = %212
  %215 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_signedmLEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 2)
          to label %216 unwind label %73

216:                                              ; preds = %214
  %217 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedmLEi(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 2)
          to label %218 unwind label %73

218:                                              ; preds = %216
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %219 unwind label %73

219:                                              ; preds = %218
  %220 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 9
  %221 = load ptr, ptr %220, align 8, !tbaa !56
  %222 = load ptr, ptr %221, align 8, !tbaa !41
  %223 = getelementptr inbounds ptr, ptr %222, i64 9
  %224 = load ptr, ptr %223, align 8
  invoke void %224(ptr noundef nonnull align 8 dereferenceable(196) %221, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %225 unwind label %73

225:                                              ; preds = %219
  %226 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 10
  %227 = load ptr, ptr %226, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %228 unwind label %412

228:                                              ; preds = %225
  %229 = load ptr, ptr %227, align 8, !tbaa !41
  %230 = getelementptr inbounds ptr, ptr %229, i64 9
  %231 = load ptr, ptr %230, align 8
  invoke void %231(ptr noundef nonnull align 8 dereferenceable(232) %227, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %232 unwind label %416

232:                                              ; preds = %228
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #5
  %233 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 11
  %234 = load ptr, ptr %233, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %235 unwind label %421

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

239:                                              ; preds = %235
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #5
  %240 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 12
  %241 = load ptr, ptr %240, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %242 unwind label %430

242:                                              ; preds = %239
  %243 = load ptr, ptr %241, align 8, !tbaa !41
  %244 = getelementptr inbounds ptr, ptr %243, i64 9
  %245 = load ptr, ptr %244, align 8
  invoke void %245(ptr noundef nonnull align 8 dereferenceable(232) %241, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %246 unwind label %434

246:                                              ; preds = %242
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #5
  %247 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 13
  %248 = load ptr, ptr %247, align 8, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %249 unwind label %439

249:                                              ; preds = %246
  %250 = load ptr, ptr %248, align 8, !tbaa !41
  %251 = getelementptr inbounds ptr, ptr %250, i64 9
  %252 = load ptr, ptr %251, align 8
  invoke void %252(ptr noundef nonnull align 8 dereferenceable(232) %248, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %253 unwind label %443

253:                                              ; preds = %249
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #5
  %254 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 14
  %255 = load ptr, ptr %254, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #5
  store i8 1, ptr %25, align 1, !tbaa !43
  %256 = load ptr, ptr %255, align 8, !tbaa !41
  %257 = getelementptr inbounds ptr, ptr %256, i64 14
  %258 = load ptr, ptr %257, align 8
  invoke void %258(ptr noundef nonnull align 8 dereferenceable(224) %255, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %259 unwind label %448

259:                                              ; preds = %253
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %260 unwind label %73

260:                                              ; preds = %259
  %261 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 14
  %262 = load ptr, ptr %261, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #5
  store i8 0, ptr %26, align 1, !tbaa !43
  %263 = load ptr, ptr %262, align 8, !tbaa !41
  %264 = getelementptr inbounds ptr, ptr %263, i64 14
  %265 = load ptr, ptr %264, align 8
  invoke void %265(ptr noundef nonnull align 8 dereferenceable(224) %262, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %266 unwind label %452

266:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %267 unwind label %73

267:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #5
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %268 unwind label %456

268:                                              ; preds = %267
  %269 = invoke noundef i32 @_ZNK5sc_dt9sc_signed6to_intEv(ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %270 unwind label %460

270:                                              ; preds = %268
  store i32 %269, ptr %3, align 4, !tbaa !51
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #5
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %271 unwind label %465

271:                                              ; preds = %270
  %272 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %273 unwind label %469

273:                                              ; preds = %271
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #5
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %274 unwind label %474

274:                                              ; preds = %273
  %275 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %276 unwind label %478

276:                                              ; preds = %274
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #5
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %277 unwind label %483

277:                                              ; preds = %276
  %278 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %279 unwind label %487

279:                                              ; preds = %277
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #5
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %280 unwind label %492

280:                                              ; preds = %279
  %281 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %282 unwind label %496

282:                                              ; preds = %280
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %283 unwind label %73

283:                                              ; preds = %282
  %284 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 9
  %285 = load ptr, ptr %284, align 8, !tbaa !56
  %286 = load ptr, ptr %285, align 8, !tbaa !41
  %287 = getelementptr inbounds ptr, ptr %286, i64 9
  %288 = load ptr, ptr %287, align 8
  invoke void %288(ptr noundef nonnull align 8 dereferenceable(196) %285, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %289 unwind label %73

289:                                              ; preds = %283
  %290 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 10
  %291 = load ptr, ptr %290, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %292 unwind label %501

292:                                              ; preds = %289
  %293 = load ptr, ptr %291, align 8, !tbaa !41
  %294 = getelementptr inbounds ptr, ptr %293, i64 9
  %295 = load ptr, ptr %294, align 8
  invoke void %295(ptr noundef nonnull align 8 dereferenceable(232) %291, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %296 unwind label %505

296:                                              ; preds = %292
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #5
  %297 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 11
  %298 = load ptr, ptr %297, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %299 unwind label %510

299:                                              ; preds = %296
  %300 = load ptr, ptr %298, align 8, !tbaa !41
  %301 = getelementptr inbounds ptr, ptr %300, i64 9
  %302 = load ptr, ptr %301, align 8
  invoke void %302(ptr noundef nonnull align 8 dereferenceable(232) %298, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %303 unwind label %514

303:                                              ; preds = %299
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #5
  %304 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 12
  %305 = load ptr, ptr %304, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %306 unwind label %519

306:                                              ; preds = %303
  %307 = load ptr, ptr %305, align 8, !tbaa !41
  %308 = getelementptr inbounds ptr, ptr %307, i64 9
  %309 = load ptr, ptr %308, align 8
  invoke void %309(ptr noundef nonnull align 8 dereferenceable(232) %305, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %310 unwind label %523

310:                                              ; preds = %306
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #5
  %311 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 13
  %312 = load ptr, ptr %311, align 8, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %313 unwind label %528

313:                                              ; preds = %310
  %314 = load ptr, ptr %312, align 8, !tbaa !41
  %315 = getelementptr inbounds ptr, ptr %314, i64 9
  %316 = load ptr, ptr %315, align 8
  invoke void %316(ptr noundef nonnull align 8 dereferenceable(232) %312, ptr noundef nonnull align 8 dereferenceable(24) %35)
          to label %317 unwind label %532

317:                                              ; preds = %313
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #5
  %318 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 14
  %319 = load ptr, ptr %318, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #5
  store i8 1, ptr %36, align 1, !tbaa !43
  %320 = load ptr, ptr %319, align 8, !tbaa !41
  %321 = getelementptr inbounds ptr, ptr %320, i64 14
  %322 = load ptr, ptr %321, align 8
  invoke void %322(ptr noundef nonnull align 8 dereferenceable(224) %319, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %323 unwind label %537

323:                                              ; preds = %317
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %324 unwind label %73

324:                                              ; preds = %323
  %325 = getelementptr inbounds %struct.mult, ptr %38, i32 0, i32 14
  %326 = load ptr, ptr %325, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #5
  store i8 0, ptr %37, align 1, !tbaa !43
  %327 = load ptr, ptr %326, align 8, !tbaa !41
  %328 = getelementptr inbounds ptr, ptr %327, i64 14
  %329 = load ptr, ptr %328, align 8
  invoke void %329(ptr noundef nonnull align 8 dereferenceable(224) %326, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %330 unwind label %541

330:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %38)
          to label %331 unwind label %73

331:                                              ; preds = %330
  br label %84, !llvm.loop !61

332:                                              ; preds = %145
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %6, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %7, align 4
  br label %340

336:                                              ; preds = %148
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %6, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #5
  br label %340

340:                                              ; preds = %336, %332
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #5
  br label %545

341:                                              ; preds = %150
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %6, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %7, align 4
  br label %349

345:                                              ; preds = %151
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %6, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  br label %349

349:                                              ; preds = %345, %341
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #5
  br label %545

350:                                              ; preds = %153
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %6, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %7, align 4
  br label %358

354:                                              ; preds = %154
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %6, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  br label %358

358:                                              ; preds = %354, %350
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #5
  br label %545

359:                                              ; preds = %156
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %6, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %7, align 4
  br label %367

363:                                              ; preds = %157
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %6, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  br label %367

367:                                              ; preds = %363, %359
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #5
  br label %545

368:                                              ; preds = %166
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %6, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %7, align 4
  br label %376

372:                                              ; preds = %169
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %6, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #5
  br label %376

376:                                              ; preds = %372, %368
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #5
  br label %545

377:                                              ; preds = %173
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %6, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %7, align 4
  br label %385

381:                                              ; preds = %176
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %6, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #5
  br label %385

385:                                              ; preds = %381, %377
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #5
  br label %545

386:                                              ; preds = %180
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %6, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %7, align 4
  br label %394

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

394:                                              ; preds = %390, %386
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #5
  br label %545

395:                                              ; preds = %187
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %6, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %7, align 4
  br label %403

399:                                              ; preds = %190
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %6, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  br label %403

403:                                              ; preds = %399, %395
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #5
  br label %545

404:                                              ; preds = %194
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %6, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #5
  br label %545

408:                                              ; preds = %201
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %6, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #5
  br label %545

412:                                              ; preds = %225
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %6, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %7, align 4
  br label %420

416:                                              ; preds = %228
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %6, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #5
  br label %420

420:                                              ; preds = %416, %412
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #5
  br label %545

421:                                              ; preds = %232
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %6, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %7, align 4
  br label %429

425:                                              ; preds = %235
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %6, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #5
  br label %429

429:                                              ; preds = %425, %421
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #5
  br label %545

430:                                              ; preds = %239
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %6, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %7, align 4
  br label %438

434:                                              ; preds = %242
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %6, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #5
  br label %438

438:                                              ; preds = %434, %430
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #5
  br label %545

439:                                              ; preds = %246
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %6, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %7, align 4
  br label %447

443:                                              ; preds = %249
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %6, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  br label %447

447:                                              ; preds = %443, %439
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #5
  br label %545

448:                                              ; preds = %253
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %6, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #5
  br label %545

452:                                              ; preds = %260
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %6, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  br label %545

456:                                              ; preds = %267
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %6, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %7, align 4
  br label %464

460:                                              ; preds = %268
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %6, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  br label %464

464:                                              ; preds = %460, %456
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  br label %545

465:                                              ; preds = %270
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %6, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %7, align 4
  br label %473

469:                                              ; preds = %271
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %6, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #5
  br label %473

473:                                              ; preds = %469, %465
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #5
  br label %545

474:                                              ; preds = %273
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %6, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %7, align 4
  br label %482

478:                                              ; preds = %274
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %6, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %7, align 4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  br label %482

482:                                              ; preds = %478, %474
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  br label %545

483:                                              ; preds = %276
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %6, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %7, align 4
  br label %491

487:                                              ; preds = %277
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %6, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  br label %491

491:                                              ; preds = %487, %483
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  br label %545

492:                                              ; preds = %279
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %6, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %7, align 4
  br label %500

496:                                              ; preds = %280
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %6, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #5
  br label %500

500:                                              ; preds = %496, %492
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #5
  br label %545

501:                                              ; preds = %289
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %6, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %7, align 4
  br label %509

505:                                              ; preds = %292
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %6, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #5
  br label %509

509:                                              ; preds = %505, %501
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #5
  br label %545

510:                                              ; preds = %296
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %6, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %7, align 4
  br label %518

514:                                              ; preds = %299
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %6, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #5
  br label %518

518:                                              ; preds = %514, %510
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #5
  br label %545

519:                                              ; preds = %303
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %6, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %7, align 4
  br label %527

523:                                              ; preds = %306
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %6, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #5
  br label %527

527:                                              ; preds = %523, %519
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #5
  br label %545

528:                                              ; preds = %310
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %6, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %7, align 4
  br label %536

532:                                              ; preds = %313
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %6, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #5
  br label %536

536:                                              ; preds = %532, %528
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #5
  br label %545

537:                                              ; preds = %317
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %6, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  br label %545

541:                                              ; preds = %324
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %6, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #5
  br label %545

545:                                              ; preds = %541, %537, %536, %527, %518, %509, %500, %491, %482, %473, %464, %452, %448, %447, %438, %429, %420, %408, %404, %403, %394, %385, %376, %367, %358, %349, %340, %77, %73
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  br label %546

546:                                              ; preds = %545, %69
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #5
  br label %547

547:                                              ; preds = %546, %65
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  br label %548

548:                                              ; preds = %547, %61
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #5
  br label %549

549:                                              ; preds = %548
  %550 = load ptr, ptr %6, align 8
  %551 = load i32, ptr %7, align 4
  %552 = insertvalue { ptr, i32 } poison, ptr %550, 0
  %553 = insertvalue { ptr, i32 } %552, i32 %551, 1
  resume { ptr, i32 } %553
}

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

; 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(...)

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_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 void @_ZN5sc_dtmlERKNS_9sc_signedEi(ptr dead_on_unwind noalias writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5sc_dtmlERKNS_11sc_unsignedEi(ptr dead_on_unwind noalias writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #2

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

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

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

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

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

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

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

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

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

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

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

declare noundef i32 @_ZNK5sc_dt9sc_signed6to_intEv(ptr noundef nonnull align 8 dereferenceable(32)) #4

declare void @_ZN5sc_dtmlERKNS_9sc_signedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #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)) #4

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = !{!"_ZTS4mult", !11, i64 0, !33, i64 232, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512}
!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 512}
!47 = !{!10, !6, i64 464}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!10, !6, i64 424}
!51 = !{!32, !32, i64 0}
!52 = !{!10, !6, i64 432}
!53 = !{!10, !6, i64 440}
!54 = !{!10, !6, i64 448}
!55 = !{!10, !6, i64 456}
!56 = !{!10, !6, i64 472}
!57 = !{!10, !6, i64 480}
!58 = !{!10, !6, i64 488}
!59 = !{!10, !6, i64 496}
!60 = !{!10, !6, i64 504}
!61 = distinct !{!61, !49}


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

%"class.sc_dt::sc_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"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_bigint.0" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_biguint.1" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_bv.27" = type { %"class.sc_dt::sc_bv_base" }

; Function Attrs: mustprogress noreturn uwtable
define dso_local void @_ZN4mult5entryEv(ptr noundef nonnull align 8 dereferenceable(520) %0) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca i32, align 4
  %3 = alloca %"class.sc_dt::sc_bigint", align 8
  %4 = alloca %"class.sc_dt::sc_biguint", align 8
  %5 = alloca %"class.sc_dt::sc_bigint.0", align 8
  %6 = alloca %"class.sc_dt::sc_biguint.1", align 8
  %7 = alloca i8, align 1
  %8 = alloca %"class.sc_dt::sc_signed", align 8
  %9 = alloca %"class.sc_dt::sc_signed", align 8
  %10 = alloca %"class.sc_dt::sc_signed", align 8
  %11 = alloca %"class.sc_dt::sc_signed", align 8
  %12 = alloca %"class.sc_dt::sc_bv", align 8
  %13 = alloca %"class.sc_dt::sc_bv", align 8
  %14 = alloca %"class.sc_dt::sc_bv.27", align 8
  %15 = alloca %"class.sc_dt::sc_bv.27", align 8
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca %"class.sc_dt::sc_bv", align 8
  %19 = alloca %"class.sc_dt::sc_bv", align 8
  %20 = alloca %"class.sc_dt::sc_bv.27", align 8
  %21 = alloca %"class.sc_dt::sc_bv.27", align 8
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca %"class.sc_dt::sc_signed", align 8
  %25 = alloca %"class.sc_dt::sc_signed", align 8
  %26 = alloca %"class.sc_dt::sc_unsigned", align 8
  %27 = alloca %"class.sc_dt::sc_signed", align 8
  %28 = alloca %"class.sc_dt::sc_signed", align 8
  %29 = alloca %"class.sc_dt::sc_bv", align 8
  %30 = alloca %"class.sc_dt::sc_bv", align 8
  %31 = alloca %"class.sc_dt::sc_bv.27", align 8
  %32 = alloca %"class.sc_dt::sc_bv.27", align 8
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @_ZN5sc_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  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 %35 unwind label %54

35:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  invoke void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %36 unwind label %56

36:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  invoke void @_ZN5sc_dt10sc_biguintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %37 unwind label %58

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

44:                                               ; preds = %37
  %45 = load i8, ptr %43, align 1, !tbaa !42, !range !43, !noundef !44
  %46 = trunc nuw i8 %45 to i1
  br i1 %46, label %47, label %.invoke

47:                                               ; preds = %44
  %48 = getelementptr inbounds i8, ptr %0, i64 512
  %49 = load ptr, ptr %48, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  store i8 0, ptr %7, align 1, !tbaa !42
  %50 = load ptr, ptr %49, align 8, !tbaa !40
  %51 = getelementptr inbounds i8, ptr %50, i64 112
  %52 = load ptr, ptr %51, align 8
  invoke void %52(ptr noundef nonnull align 8 dereferenceable(224) %49, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %53 unwind label %60

53:                                               ; preds = %47
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  br label %.invoke

54:                                               ; preds = %1
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %409

56:                                               ; preds = %35
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %408

58:                                               ; preds = %36
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %407

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

.loopexit.split-lp.loopexit:                      ; preds = %289, %283, %249, %248, %232, %226, %192, %191, %189, %187, %185, %181, %180, %174, %140, %139, %123, %117, %115, %109, %107, %101, %99, %92, %86, %85
  %lpad.loopexit80 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

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

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

62:                                               ; preds = %.invoke
  %63 = getelementptr inbounds i8, ptr %0, i64 464
  %64 = getelementptr inbounds i8, ptr %0, i64 424
  %65 = getelementptr inbounds i8, ptr %0, i64 432
  %66 = getelementptr inbounds i8, ptr %0, i64 440
  %67 = getelementptr inbounds i8, ptr %0, i64 448
  %68 = getelementptr inbounds i8, ptr %0, i64 456
  %69 = getelementptr inbounds i8, ptr %0, i64 472
  %70 = getelementptr inbounds i8, ptr %0, i64 480
  %71 = getelementptr inbounds i8, ptr %0, i64 488
  %72 = getelementptr inbounds i8, ptr %0, i64 496
  %73 = getelementptr inbounds i8, ptr %0, i64 504
  %74 = getelementptr inbounds i8, ptr %0, i64 512
  br label %75

75:                                               ; preds = %.backedge, %62
  %76 = load ptr, ptr %63, align 8, !tbaa !46
  %77 = load ptr, ptr %76, align 8, !tbaa !40
  %78 = getelementptr inbounds i8, ptr %77, i64 56
  %79 = load ptr, ptr %78, align 8
  %80 = invoke noundef nonnull align 1 dereferenceable(1) ptr %79(ptr noundef nonnull align 8 dereferenceable(224) %76)
          to label %81 unwind label %.loopexit

81:                                               ; preds = %75
  %82 = load i8, ptr %80, align 1, !tbaa !42, !range !43, !noundef !44
  %83 = icmp eq i8 %82, 0
  br i1 %83, label %84, label %85

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

.backedge:                                        ; preds = %84, %289
  br label %75, !llvm.loop !47

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

86:                                               ; preds = %85
  %87 = load ptr, ptr %64, align 8, !tbaa !49
  %88 = load ptr, ptr %87, align 8, !tbaa !40
  %89 = getelementptr inbounds i8, ptr %88, i64 40
  %90 = load ptr, ptr %89, align 8
  %91 = invoke noundef nonnull align 4 dereferenceable(4) ptr %90(ptr noundef nonnull align 8 dereferenceable(196) %87)
          to label %92 unwind label %.loopexit.split-lp.loopexit

92:                                               ; preds = %86
  %93 = load i32, ptr %91, align 4, !tbaa !50
  store i32 %93, ptr %2, align 4, !tbaa !50
  %94 = load ptr, ptr %65, align 8, !tbaa !51
  %95 = load ptr, ptr %94, align 8, !tbaa !40
  %96 = getelementptr inbounds i8, ptr %95, i64 40
  %97 = load ptr, ptr %96, align 8
  %98 = invoke noundef nonnull align 8 dereferenceable(24) ptr %97(ptr noundef nonnull align 8 dereferenceable(232) %94)
          to label %99 unwind label %.loopexit.split-lp.loopexit

99:                                               ; preds = %92
  %100 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(24) %98)
          to label %101 unwind label %.loopexit.split-lp.loopexit

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

107:                                              ; preds = %101
  %108 = 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) %106)
          to label %109 unwind label %.loopexit.split-lp.loopexit

109:                                              ; preds = %107
  %110 = load ptr, ptr %67, align 8, !tbaa !53
  %111 = load ptr, ptr %110, align 8, !tbaa !40
  %112 = getelementptr inbounds i8, ptr %111, i64 40
  %113 = load ptr, ptr %112, align 8
  %114 = invoke noundef nonnull align 8 dereferenceable(24) ptr %113(ptr noundef nonnull align 8 dereferenceable(232) %110)
          to label %115 unwind label %.loopexit.split-lp.loopexit

115:                                              ; preds = %109
  %116 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(24) %114)
          to label %117 unwind label %.loopexit.split-lp.loopexit

117:                                              ; preds = %115
  %118 = load ptr, ptr %68, align 8, !tbaa !54
  %119 = load ptr, ptr %118, align 8, !tbaa !40
  %120 = getelementptr inbounds i8, ptr %119, i64 40
  %121 = load ptr, ptr %120, align 8
  %122 = invoke noundef nonnull align 8 dereferenceable(24) ptr %121(ptr noundef nonnull align 8 dereferenceable(232) %118)
          to label %123 unwind label %.loopexit.split-lp.loopexit

123:                                              ; preds = %117
  %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(24) %122)
          to label %125 unwind label %.loopexit.split-lp.loopexit

125:                                              ; preds = %123
  %126 = load i32, ptr %2, align 4, !tbaa !50
  %127 = shl nsw i32 %126, 1
  store i32 %127, ptr %2, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedEi(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 2)
          to label %128 unwind label %290

128:                                              ; preds = %125
  %129 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %130 unwind label %292

130:                                              ; preds = %128
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedEi(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 2)
          to label %131 unwind label %295

131:                                              ; preds = %130
  %132 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %133 unwind label %297

133:                                              ; preds = %131
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedEi(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 2)
          to label %134 unwind label %300

134:                                              ; preds = %133
  %135 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %136 unwind label %302

136:                                              ; preds = %134
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedEi(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 2)
          to label %137 unwind label %305

137:                                              ; preds = %136
  %138 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %139 unwind label %307

139:                                              ; preds = %137
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %140 unwind label %.loopexit.split-lp.loopexit

140:                                              ; preds = %139
  %141 = load ptr, ptr %69, align 8, !tbaa !55
  %142 = load ptr, ptr %141, align 8, !tbaa !40
  %143 = getelementptr inbounds i8, ptr %142, i64 72
  %144 = load ptr, ptr %143, align 8
  invoke void %144(ptr noundef nonnull align 8 dereferenceable(196) %141, ptr noundef nonnull align 4 dereferenceable(4) %2)
          to label %145 unwind label %.loopexit.split-lp.loopexit

145:                                              ; preds = %140
  %146 = load ptr, ptr %70, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %147 unwind label %310

147:                                              ; preds = %145
  %148 = load ptr, ptr %146, align 8, !tbaa !40
  %149 = getelementptr inbounds i8, ptr %148, i64 72
  %150 = load ptr, ptr %149, align 8
  invoke void %150(ptr noundef nonnull align 8 dereferenceable(232) %146, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %151 unwind label %312

151:                                              ; preds = %147
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  %152 = load ptr, ptr %71, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %153 unwind label %315

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

157:                                              ; preds = %153
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #6
  %158 = load ptr, ptr %72, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %159 unwind label %320

159:                                              ; preds = %157
  %160 = load ptr, ptr %158, align 8, !tbaa !40
  %161 = getelementptr inbounds i8, ptr %160, i64 72
  %162 = load ptr, ptr %161, align 8
  invoke void %162(ptr noundef nonnull align 8 dereferenceable(232) %158, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %163 unwind label %322

163:                                              ; preds = %159
  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
  %164 = load ptr, ptr %73, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %165 unwind label %325

165:                                              ; preds = %163
  %166 = load ptr, ptr %164, align 8, !tbaa !40
  %167 = getelementptr inbounds i8, ptr %166, i64 72
  %168 = load ptr, ptr %167, align 8
  invoke void %168(ptr noundef nonnull align 8 dereferenceable(232) %164, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %169 unwind label %327

169:                                              ; preds = %165
  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
  %170 = load ptr, ptr %74, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #6
  store i8 1, ptr %16, align 1, !tbaa !42
  %171 = load ptr, ptr %170, align 8, !tbaa !40
  %172 = getelementptr inbounds i8, ptr %171, i64 112
  %173 = load ptr, ptr %172, align 8
  invoke void %173(ptr noundef nonnull align 8 dereferenceable(224) %170, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %174 unwind label %330

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

175:                                              ; preds = %174
  %176 = load ptr, ptr %74, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #6
  store i8 0, ptr %17, align 1, !tbaa !42
  %177 = load ptr, ptr %176, align 8, !tbaa !40
  %178 = getelementptr inbounds i8, ptr %177, i64 112
  %179 = load ptr, ptr %178, align 8
  invoke void %179(ptr noundef nonnull align 8 dereferenceable(224) %176, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %180 unwind label %332

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

181:                                              ; preds = %180
  %182 = load i32, ptr %2, align 4, !tbaa !50
  %183 = shl nsw i32 %182, 1
  store i32 %183, ptr %2, align 4, !tbaa !50
  %184 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_signedmLEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 2)
          to label %185 unwind label %.loopexit.split-lp.loopexit

185:                                              ; preds = %181
  %186 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedmLEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 2)
          to label %187 unwind label %.loopexit.split-lp.loopexit

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_signedmLEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 2)
          to label %189 unwind label %.loopexit.split-lp.loopexit

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedmLEi(ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 2)
          to label %191 unwind label %.loopexit.split-lp.loopexit

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

192:                                              ; preds = %191
  %193 = load ptr, ptr %69, align 8, !tbaa !55
  %194 = load ptr, ptr %193, align 8, !tbaa !40
  %195 = getelementptr inbounds i8, ptr %194, i64 72
  %196 = load ptr, ptr %195, align 8
  invoke void %196(ptr noundef nonnull align 8 dereferenceable(196) %193, ptr noundef nonnull align 4 dereferenceable(4) %2)
          to label %197 unwind label %.loopexit.split-lp.loopexit

197:                                              ; preds = %192
  %198 = load ptr, ptr %70, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %199 unwind label %334

199:                                              ; preds = %197
  %200 = load ptr, ptr %198, align 8, !tbaa !40
  %201 = getelementptr inbounds i8, ptr %200, i64 72
  %202 = load ptr, ptr %201, align 8
  invoke void %202(ptr noundef nonnull align 8 dereferenceable(232) %198, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %203 unwind label %336

203:                                              ; preds = %199
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  %204 = load ptr, ptr %71, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %205 unwind label %339

205:                                              ; preds = %203
  %206 = load ptr, ptr %204, align 8, !tbaa !40
  %207 = getelementptr inbounds i8, ptr %206, i64 72
  %208 = load ptr, ptr %207, align 8
  invoke void %208(ptr noundef nonnull align 8 dereferenceable(232) %204, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %209 unwind label %341

209:                                              ; preds = %205
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  %210 = load ptr, ptr %72, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %211 unwind label %344

211:                                              ; preds = %209
  %212 = load ptr, ptr %210, align 8, !tbaa !40
  %213 = getelementptr inbounds i8, ptr %212, i64 72
  %214 = load ptr, ptr %213, align 8
  invoke void %214(ptr noundef nonnull align 8 dereferenceable(232) %210, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %215 unwind label %346

215:                                              ; preds = %211
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  %216 = load ptr, ptr %73, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %217 unwind label %349

217:                                              ; preds = %215
  %218 = load ptr, ptr %216, align 8, !tbaa !40
  %219 = getelementptr inbounds i8, ptr %218, i64 72
  %220 = load ptr, ptr %219, align 8
  invoke void %220(ptr noundef nonnull align 8 dereferenceable(232) %216, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %221 unwind label %351

221:                                              ; preds = %217
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  %222 = load ptr, ptr %74, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  store i8 1, ptr %22, align 1, !tbaa !42
  %223 = load ptr, ptr %222, align 8, !tbaa !40
  %224 = getelementptr inbounds i8, ptr %223, i64 112
  %225 = load ptr, ptr %224, align 8
  invoke void %225(ptr noundef nonnull align 8 dereferenceable(224) %222, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %226 unwind label %354

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

227:                                              ; preds = %226
  %228 = load ptr, ptr %74, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #6
  store i8 0, ptr %23, align 1, !tbaa !42
  %229 = load ptr, ptr %228, align 8, !tbaa !40
  %230 = getelementptr inbounds i8, ptr %229, i64 112
  %231 = load ptr, ptr %230, align 8
  invoke void %231(ptr noundef nonnull align 8 dereferenceable(224) %228, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %232 unwind label %356

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

233:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #6
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %234 unwind label %358

234:                                              ; preds = %233
  %235 = invoke noundef i32 @_ZNK5sc_dt9sc_signed6to_intEv(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %236 unwind label %360

236:                                              ; preds = %234
  store i32 %235, ptr %2, align 4, !tbaa !50
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #6
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %237 unwind label %363

237:                                              ; preds = %236
  %238 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %239 unwind label %365

239:                                              ; preds = %237
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #6
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %240 unwind label %368

240:                                              ; preds = %239
  %241 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %242 unwind label %370

242:                                              ; preds = %240
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #6
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %243 unwind label %373

243:                                              ; preds = %242
  %244 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %245 unwind label %375

245:                                              ; preds = %243
  call void @_ZN5sc_dt9sc_signedD2Ev(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.start.p0(i64 32, ptr nonnull %28) #6
  invoke void @_ZN5sc_dtmlERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %246 unwind label %378

246:                                              ; preds = %245
  %247 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %248 unwind label %380

248:                                              ; preds = %246
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %249 unwind label %.loopexit.split-lp.loopexit

249:                                              ; preds = %248
  %250 = load ptr, ptr %69, align 8, !tbaa !55
  %251 = load ptr, ptr %250, align 8, !tbaa !40
  %252 = getelementptr inbounds i8, ptr %251, i64 72
  %253 = load ptr, ptr %252, align 8
  invoke void %253(ptr noundef nonnull align 8 dereferenceable(196) %250, ptr noundef nonnull align 4 dereferenceable(4) %2)
          to label %254 unwind label %.loopexit.split-lp.loopexit

254:                                              ; preds = %249
  %255 = load ptr, ptr %70, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %256 unwind label %383

256:                                              ; preds = %254
  %257 = load ptr, ptr %255, align 8, !tbaa !40
  %258 = getelementptr inbounds i8, ptr %257, i64 72
  %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) %29)
          to label %260 unwind label %385

260:                                              ; preds = %256
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #6
  %261 = load ptr, ptr %71, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %262 unwind label %388

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

266:                                              ; preds = %262
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #6
  %267 = load ptr, ptr %72, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %268 unwind label %393

268:                                              ; preds = %266
  %269 = load ptr, ptr %267, align 8, !tbaa !40
  %270 = getelementptr inbounds i8, ptr %269, i64 72
  %271 = load ptr, ptr %270, align 8
  invoke void %271(ptr noundef nonnull align 8 dereferenceable(232) %267, ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %272 unwind label %395

272:                                              ; preds = %268
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  %273 = load ptr, ptr %73, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %274 unwind label %398

274:                                              ; preds = %272
  %275 = load ptr, ptr %273, align 8, !tbaa !40
  %276 = getelementptr inbounds i8, ptr %275, i64 72
  %277 = load ptr, ptr %276, align 8
  invoke void %277(ptr noundef nonnull align 8 dereferenceable(232) %273, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %278 unwind label %400

278:                                              ; preds = %274
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #6
  %279 = load ptr, ptr %74, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #6
  store i8 1, ptr %33, 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) %33)
          to label %283 unwind label %403

283:                                              ; preds = %278
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #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 = load ptr, ptr %74, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #6
  store i8 0, ptr %34, align 1, !tbaa !42
  %286 = load ptr, ptr %285, align 8, !tbaa !40
  %287 = getelementptr inbounds i8, ptr %286, i64 112
  %288 = load ptr, ptr %287, align 8
  invoke void %288(ptr noundef nonnull align 8 dereferenceable(224) %285, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %289 unwind label %405

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

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

292:                                              ; preds = %128
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %294

294:                                              ; preds = %292, %290
  %.pn = phi { ptr, i32 } [ %293, %292 ], [ %291, %290 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  br label %.loopexit.split-lp

295:                                              ; preds = %130
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %299

297:                                              ; preds = %131
  %298 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %299

299:                                              ; preds = %297, %295
  %.pn35 = phi { ptr, i32 } [ %298, %297 ], [ %296, %295 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %.loopexit.split-lp

300:                                              ; preds = %133
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %304

302:                                              ; preds = %134
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %304

304:                                              ; preds = %302, %300
  %.pn37 = phi { ptr, i32 } [ %303, %302 ], [ %301, %300 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %.loopexit.split-lp

305:                                              ; preds = %136
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %309

307:                                              ; preds = %137
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %309

309:                                              ; preds = %307, %305
  %.pn39 = phi { ptr, i32 } [ %308, %307 ], [ %306, %305 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %.loopexit.split-lp

310:                                              ; preds = %145
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %314

312:                                              ; preds = %147
  %313 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  br label %314

314:                                              ; preds = %312, %310
  %.pn41 = phi { ptr, i32 } [ %313, %312 ], [ %311, %310 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  br label %.loopexit.split-lp

315:                                              ; preds = %151
  %316 = landingpad { ptr, i32 }
          cleanup
  br label %319

317:                                              ; preds = %153
  %318 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  br label %319

319:                                              ; preds = %317, %315
  %.pn43 = phi { ptr, i32 } [ %318, %317 ], [ %316, %315 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #6
  br label %.loopexit.split-lp

320:                                              ; preds = %157
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %324

322:                                              ; preds = %159
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  br label %324

324:                                              ; preds = %322, %320
  %.pn45 = phi { ptr, i32 } [ %323, %322 ], [ %321, %320 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  br label %.loopexit.split-lp

325:                                              ; preds = %163
  %326 = landingpad { ptr, i32 }
          cleanup
  br label %329

327:                                              ; preds = %165
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  br label %329

329:                                              ; preds = %327, %325
  %.pn47 = phi { ptr, i32 } [ %328, %327 ], [ %326, %325 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  br label %.loopexit.split-lp

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

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

334:                                              ; preds = %197
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %338

336:                                              ; preds = %199
  %337 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  br label %338

338:                                              ; preds = %336, %334
  %.pn49 = phi { ptr, i32 } [ %337, %336 ], [ %335, %334 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  br label %.loopexit.split-lp

339:                                              ; preds = %203
  %340 = landingpad { ptr, i32 }
          cleanup
  br label %343

341:                                              ; preds = %205
  %342 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  br label %343

343:                                              ; preds = %341, %339
  %.pn51 = phi { ptr, i32 } [ %342, %341 ], [ %340, %339 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br label %.loopexit.split-lp

344:                                              ; preds = %209
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %348

346:                                              ; preds = %211
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  br label %348

348:                                              ; preds = %346, %344
  %.pn53 = phi { ptr, i32 } [ %347, %346 ], [ %345, %344 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  br label %.loopexit.split-lp

349:                                              ; preds = %215
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %353

351:                                              ; preds = %217
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  br label %353

353:                                              ; preds = %351, %349
  %.pn55 = phi { ptr, i32 } [ %352, %351 ], [ %350, %349 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %.loopexit.split-lp

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

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

358:                                              ; preds = %233
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %362

360:                                              ; preds = %234
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  br label %362

362:                                              ; preds = %360, %358
  %.pn57 = phi { ptr, i32 } [ %361, %360 ], [ %359, %358 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #6
  br label %.loopexit.split-lp

363:                                              ; preds = %236
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %367

365:                                              ; preds = %237
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  br label %367

367:                                              ; preds = %365, %363
  %.pn59 = phi { ptr, i32 } [ %366, %365 ], [ %364, %363 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  br label %.loopexit.split-lp

368:                                              ; preds = %239
  %369 = landingpad { ptr, i32 }
          cleanup
  br label %372

370:                                              ; preds = %240
  %371 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %372

372:                                              ; preds = %370, %368
  %.pn61 = phi { ptr, i32 } [ %371, %370 ], [ %369, %368 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %.loopexit.split-lp

373:                                              ; preds = %242
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %377

375:                                              ; preds = %243
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %377

377:                                              ; preds = %375, %373
  %.pn63 = phi { ptr, i32 } [ %376, %375 ], [ %374, %373 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  br label %.loopexit.split-lp

378:                                              ; preds = %245
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %382

380:                                              ; preds = %246
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  br label %382

382:                                              ; preds = %380, %378
  %.pn65 = phi { ptr, i32 } [ %381, %380 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  br label %.loopexit.split-lp

383:                                              ; preds = %254
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %387

385:                                              ; preds = %256
  %386 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #6
  br label %387

387:                                              ; preds = %385, %383
  %.pn67 = phi { ptr, i32 } [ %386, %385 ], [ %384, %383 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #6
  br label %.loopexit.split-lp

388:                                              ; preds = %260
  %389 = landingpad { ptr, i32 }
          cleanup
  br label %392

390:                                              ; preds = %262
  %391 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #6
  br label %392

392:                                              ; preds = %390, %388
  %.pn69 = phi { ptr, i32 } [ %391, %390 ], [ %389, %388 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #6
  br label %.loopexit.split-lp

393:                                              ; preds = %266
  %394 = landingpad { ptr, i32 }
          cleanup
  br label %397

395:                                              ; preds = %268
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  br label %397

397:                                              ; preds = %395, %393
  %.pn71 = phi { ptr, i32 } [ %396, %395 ], [ %394, %393 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  br label %.loopexit.split-lp

398:                                              ; preds = %272
  %399 = landingpad { ptr, i32 }
          cleanup
  br label %402

400:                                              ; preds = %274
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #6
  br label %402

402:                                              ; preds = %400, %398
  %.pn73 = phi { ptr, i32 } [ %401, %400 ], [ %399, %398 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #6
  br label %.loopexit.split-lp

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

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %405, %403, %402, %397, %392, %387, %382, %377, %372, %367, %362, %356, %354, %353, %348, %343, %338, %332, %330, %329, %324, %319, %314, %309, %304, %299, %294, %60
  %.pn75 = phi { ptr, i32 } [ %406, %405 ], [ %404, %403 ], [ %.pn73, %402 ], [ %.pn71, %397 ], [ %.pn69, %392 ], [ %.pn67, %387 ], [ %.pn65, %382 ], [ %.pn63, %377 ], [ %.pn61, %372 ], [ %.pn59, %367 ], [ %.pn57, %362 ], [ %357, %356 ], [ %355, %354 ], [ %.pn55, %353 ], [ %.pn53, %348 ], [ %.pn51, %343 ], [ %.pn49, %338 ], [ %333, %332 ], [ %331, %330 ], [ %.pn47, %329 ], [ %.pn45, %324 ], [ %.pn43, %319 ], [ %.pn41, %314 ], [ %.pn39, %309 ], [ %.pn37, %304 ], [ %.pn35, %299 ], [ %.pn, %294 ], [ %61, %60 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit80, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp81, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %407

407:                                              ; preds = %.loopexit.split-lp, %58
  %.pn75.pn = phi { ptr, i32 } [ %.pn75, %.loopexit.split-lp ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %408

408:                                              ; preds = %407, %56
  %.pn75.pn.pn = phi { ptr, i32 } [ %.pn75.pn, %407 ], [ %57, %56 ]
  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 %409

409:                                              ; preds = %408, %54
  %.pn75.pn.pn.pn = phi { ptr, i32 } [ %.pn75.pn.pn, %408 ], [ %55, %54 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #6
  resume { ptr, i32 } %.pn75.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_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; 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(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_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: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_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 void @_ZN5sc_dtmlERKNS_9sc_signedEi(ptr dead_on_unwind noalias writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5sc_dtmlERKNS_11sc_unsignedEi(ptr dead_on_unwind noalias writable sret(%"class.sc_dt::sc_signed") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

declare noundef i32 @_ZNK5sc_dt9sc_signed6to_intEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

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

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 #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_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 #4 align 2

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

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 = { 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 = { "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 = !{!"_ZTS4mult", !7, i64 0, !32, i64 232, !9, i64 416, !9, i64 424, !9, i64 432, !9, i64 440, !9, i64 448, !9, i64 456, !9, i64 464, !9, i64 472, !9, i64 480, !9, i64 488, !9, i64 496, !9, i64 504, !9, i64 512}
!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 512}
!46 = !{!6, !9, i64 464}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = !{!6, !9, i64 424}
!50 = !{!31, !31, i64 0}
!51 = !{!6, !9, i64 432}
!52 = !{!6, !9, i64 440}
!53 = !{!6, !9, i64 448}
!54 = !{!6, !9, i64 456}
!55 = !{!6, !9, i64 472}
!56 = !{!6, !9, i64 480}
!57 = !{!6, !9, i64 488}
!58 = !{!6, !9, i64 496}
!59 = !{!6, !9, i64 504}


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