; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/arith/modulo (modulo)

; 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.modulo = 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 @_ZN6modulo5entryEv(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_bv", align 8
  %32 = alloca %"class.sc_dt::sc_bv", align 8
  %33 = alloca %"class.sc_dt::sc_bv.27", align 8
  %34 = alloca %"class.sc_dt::sc_bv.27", align 8
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %37 = 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 %38 unwind label %60

38:                                               ; 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 %39 unwind label %64

39:                                               ; preds = %38
  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 %40 unwind label %68

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

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

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

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

59:                                               ; preds = %58
  br label %82

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

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

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

72:                                               ; preds = %502, %495, %455, %454, %438, %422, %406, %266, %265, %258, %218, %217, %215, %213, %211, %207, %206, %199, %159, %158, %142, %135, %133, %126, %124, %117, %115, %107, %100, %99, %97, %85, %80, %58, %40
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %6, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %7, align 4
  br label %548

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

80:                                               ; preds = %47
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %81 unwind label %72

81:                                               ; preds = %80
  br label %82

82:                                               ; preds = %81, %59
  br label %83

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

84:                                               ; preds = %83
  br label %85

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

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

97:                                               ; preds = %92
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %98 unwind label %72

98:                                               ; preds = %97
  br label %85, !llvm.loop !48

99:                                               ; preds = %92
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %100 unwind label %72

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

107:                                              ; preds = %100
  %108 = load i32, ptr %106, align 4, !tbaa !51
  store i32 %108, ptr %3, align 4, !tbaa !51
  %109 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 4
  %110 = load ptr, ptr %109, align 8, !tbaa !52
  %111 = load ptr, ptr %110, align 8, !tbaa !41
  %112 = getelementptr inbounds ptr, ptr %111, i64 5
  %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 %72

115:                                              ; preds = %107
  %116 = 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) %114)
          to label %117 unwind label %72

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

124:                                              ; preds = %117
  %125 = 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) %123)
          to label %126 unwind label %72

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

133:                                              ; preds = %126
  %134 = 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) %132)
          to label %135 unwind label %72

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

142:                                              ; preds = %135
  %143 = 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) %141)
          to label %144 unwind label %72

144:                                              ; preds = %142
  %145 = load i32, ptr %3, align 4, !tbaa !51
  %146 = srem i32 %145, 5
  store i32 %146, ptr %3, align 4, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #5
  invoke void @_ZN5sc_dtrmERKNS_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 5)
          to label %147 unwind label %273

147:                                              ; preds = %144
  %148 = 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 %149 unwind label %277

149:                                              ; preds = %147
  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_dtrmERKNS_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 5)
          to label %150 unwind label %282

150:                                              ; preds = %149
  %151 = 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 %152 unwind label %286

152:                                              ; preds = %150
  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_dtrmERKNS_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 5)
          to label %153 unwind label %291

153:                                              ; preds = %152
  %154 = 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 %155 unwind label %295

155:                                              ; preds = %153
  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_dtrmERKNS_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 5)
          to label %156 unwind label %300

156:                                              ; preds = %155
  %157 = 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 %158 unwind label %304

158:                                              ; preds = %156
  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) %37)
          to label %159 unwind label %72

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

165:                                              ; preds = %159
  %166 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 10
  %167 = load ptr, ptr %166, 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 %168 unwind label %309

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

172:                                              ; preds = %168
  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
  %173 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 11
  %174 = load ptr, ptr %173, 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 %175 unwind label %318

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

179:                                              ; preds = %175
  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
  %180 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 12
  %181 = load ptr, ptr %180, 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 %182 unwind label %327

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

186:                                              ; preds = %182
  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
  %187 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 13
  %188 = load ptr, ptr %187, 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 %189 unwind label %336

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

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

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

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

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

207:                                              ; preds = %206
  %208 = load i32, ptr %3, align 4, !tbaa !51
  %209 = srem i32 %208, 3
  store i32 %209, ptr %3, align 4, !tbaa !51
  %210 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_signedrMEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 3)
          to label %211 unwind label %72

211:                                              ; preds = %207
  %212 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedrMEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 3)
          to label %213 unwind label %72

213:                                              ; preds = %211
  %214 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_signedrMEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 3)
          to label %215 unwind label %72

215:                                              ; preds = %213
  %216 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedrMEi(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 3)
          to label %217 unwind label %72

217:                                              ; preds = %215
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %218 unwind label %72

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

224:                                              ; preds = %218
  %225 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 10
  %226 = load ptr, ptr %225, 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 %227 unwind label %353

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

231:                                              ; preds = %227
  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
  %232 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 11
  %233 = load ptr, ptr %232, 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 %234 unwind label %362

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

238:                                              ; preds = %234
  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
  %239 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 12
  %240 = load ptr, ptr %239, 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 %241 unwind label %371

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

245:                                              ; preds = %241
  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
  %246 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 13
  %247 = load ptr, ptr %246, 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 %248 unwind label %380

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

252:                                              ; preds = %248
  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
  %253 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 14
  %254 = load ptr, ptr %253, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #5
  store i8 1, ptr %25, align 1, !tbaa !43
  %255 = load ptr, ptr %254, align 8, !tbaa !41
  %256 = getelementptr inbounds ptr, ptr %255, i64 14
  %257 = load ptr, ptr %256, align 8
  invoke void %257(ptr noundef nonnull align 8 dereferenceable(224) %254, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %258 unwind label %389

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

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

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

266:                                              ; preds = %265
  %267 = invoke noundef zeroext i1 @_ZN5sc_dtneERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 0)
          to label %268 unwind label %72

268:                                              ; preds = %266
  br i1 %267, label %269, label %406

269:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #5
  invoke void @_ZN5sc_dtrmERKNS_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 %270 unwind label %397

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

272:                                              ; preds = %270
  store i32 %271, 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
  br label %406

273:                                              ; preds = %144
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %6, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %7, align 4
  br label %281

277:                                              ; preds = %147
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %6, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #5
  br label %281

281:                                              ; preds = %277, %273
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #5
  br label %548

282:                                              ; preds = %149
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %6, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %7, align 4
  br label %290

286:                                              ; preds = %150
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %6, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  br label %290

290:                                              ; preds = %286, %282
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #5
  br label %548

291:                                              ; preds = %152
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %6, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %7, align 4
  br label %299

295:                                              ; preds = %153
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %6, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  br label %299

299:                                              ; preds = %295, %291
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #5
  br label %548

300:                                              ; preds = %155
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %6, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %7, align 4
  br label %308

304:                                              ; preds = %156
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %6, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  br label %308

308:                                              ; preds = %304, %300
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #5
  br label %548

309:                                              ; preds = %165
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %6, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %7, align 4
  br label %317

313:                                              ; preds = %168
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %6, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #5
  br label %317

317:                                              ; preds = %313, %309
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #5
  br label %548

318:                                              ; preds = %172
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %6, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %7, align 4
  br label %326

322:                                              ; preds = %175
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %6, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #5
  br label %326

326:                                              ; preds = %322, %318
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #5
  br label %548

327:                                              ; preds = %179
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %6, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %7, align 4
  br label %335

331:                                              ; preds = %182
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %6, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  br label %335

335:                                              ; preds = %331, %327
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #5
  br label %548

336:                                              ; preds = %186
  %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
  br label %344

340:                                              ; preds = %189
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %6, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  br label %344

344:                                              ; preds = %340, %336
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #5
  br label %548

345:                                              ; preds = %193
  %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 @llvm.lifetime.end.p0(i64 1, ptr %19) #5
  br label %548

349:                                              ; preds = %200
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %6, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #5
  br label %548

353:                                              ; preds = %224
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %6, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %7, align 4
  br label %361

357:                                              ; preds = %227
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %6, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #5
  br label %361

361:                                              ; preds = %357, %353
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #5
  br label %548

362:                                              ; preds = %231
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %6, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %7, align 4
  br label %370

366:                                              ; preds = %234
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %6, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #5
  br label %370

370:                                              ; preds = %366, %362
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #5
  br label %548

371:                                              ; preds = %238
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %6, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %7, align 4
  br label %379

375:                                              ; preds = %241
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %6, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #5
  br label %379

379:                                              ; preds = %375, %371
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #5
  br label %548

380:                                              ; preds = %245
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %6, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %7, align 4
  br label %388

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

388:                                              ; preds = %384, %380
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #5
  br label %548

389:                                              ; preds = %252
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %6, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #5
  br label %548

393:                                              ; preds = %259
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %6, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  br label %548

397:                                              ; preds = %269
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %6, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %7, align 4
  br label %405

401:                                              ; preds = %270
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %6, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  br label %405

405:                                              ; preds = %401, %397
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  br label %548

406:                                              ; preds = %272, %268
  %407 = invoke noundef zeroext i1 @_ZN5sc_dtneERKNS_9sc_signedEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 0)
          to label %408 unwind label %72

408:                                              ; preds = %406
  br i1 %407, label %409, label %422

409:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #5
  invoke void @_ZN5sc_dtrmERKNS_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 %410 unwind label %413

410:                                              ; preds = %409
  %411 = 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 %412 unwind label %417

412:                                              ; preds = %410
  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
  br label %422

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

417:                                              ; preds = %410
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %6, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #5
  br label %421

421:                                              ; preds = %417, %413
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #5
  br label %548

422:                                              ; preds = %412, %408
  %423 = invoke noundef zeroext i1 @_ZN5sc_dtneERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 0)
          to label %424 unwind label %72

424:                                              ; preds = %422
  br i1 %423, label %425, label %438

425:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #5
  invoke void @_ZN5sc_dtrmERKNS_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 %426 unwind label %429

426:                                              ; preds = %425
  %427 = 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 %428 unwind label %433

428:                                              ; preds = %426
  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
  br label %438

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

433:                                              ; preds = %426
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %6, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %7, align 4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  br label %437

437:                                              ; preds = %433, %429
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  br label %548

438:                                              ; preds = %428, %424
  %439 = invoke noundef zeroext i1 @_ZN5sc_dtneERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 0)
          to label %440 unwind label %72

440:                                              ; preds = %438
  br i1 %439, label %441, label %454

441:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #5
  invoke void @_ZN5sc_dtrmERKNS_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 %442 unwind label %445

442:                                              ; preds = %441
  %443 = 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 %444 unwind label %449

444:                                              ; preds = %442
  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
  br label %454

445:                                              ; preds = %441
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %6, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %7, align 4
  br label %453

449:                                              ; preds = %442
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %6, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %7, align 4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  br label %453

453:                                              ; preds = %449, %445
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  br label %548

454:                                              ; preds = %444, %440
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %455 unwind label %72

455:                                              ; preds = %454
  %456 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 9
  %457 = load ptr, ptr %456, align 8, !tbaa !56
  %458 = load ptr, ptr %457, align 8, !tbaa !41
  %459 = getelementptr inbounds ptr, ptr %458, i64 9
  %460 = load ptr, ptr %459, align 8
  invoke void %460(ptr noundef nonnull align 8 dereferenceable(196) %457, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %461 unwind label %72

461:                                              ; preds = %455
  %462 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 10
  %463 = load ptr, ptr %462, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %464 unwind label %504

464:                                              ; preds = %461
  %465 = load ptr, ptr %463, align 8, !tbaa !41
  %466 = getelementptr inbounds ptr, ptr %465, i64 9
  %467 = load ptr, ptr %466, align 8
  invoke void %467(ptr noundef nonnull align 8 dereferenceable(232) %463, ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %468 unwind label %508

468:                                              ; preds = %464
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #5
  %469 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 11
  %470 = load ptr, ptr %469, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %471 unwind label %513

471:                                              ; preds = %468
  %472 = load ptr, ptr %470, align 8, !tbaa !41
  %473 = getelementptr inbounds ptr, ptr %472, i64 9
  %474 = load ptr, ptr %473, align 8
  invoke void %474(ptr noundef nonnull align 8 dereferenceable(232) %470, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %475 unwind label %517

475:                                              ; preds = %471
  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
  %476 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 12
  %477 = load ptr, ptr %476, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %478 unwind label %522

478:                                              ; preds = %475
  %479 = load ptr, ptr %477, align 8, !tbaa !41
  %480 = getelementptr inbounds ptr, ptr %479, i64 9
  %481 = load ptr, ptr %480, align 8
  invoke void %481(ptr noundef nonnull align 8 dereferenceable(232) %477, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %482 unwind label %526

482:                                              ; preds = %478
  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
  %483 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 13
  %484 = load ptr, ptr %483, align 8, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %485 unwind label %531

485:                                              ; preds = %482
  %486 = load ptr, ptr %484, align 8, !tbaa !41
  %487 = getelementptr inbounds ptr, ptr %486, i64 9
  %488 = load ptr, ptr %487, align 8
  invoke void %488(ptr noundef nonnull align 8 dereferenceable(232) %484, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %489 unwind label %535

489:                                              ; preds = %485
  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
  %490 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 14
  %491 = load ptr, ptr %490, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #5
  store i8 1, ptr %35, align 1, !tbaa !43
  %492 = load ptr, ptr %491, align 8, !tbaa !41
  %493 = getelementptr inbounds ptr, ptr %492, i64 14
  %494 = load ptr, ptr %493, align 8
  invoke void %494(ptr noundef nonnull align 8 dereferenceable(224) %491, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %495 unwind label %540

495:                                              ; preds = %489
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %496 unwind label %72

496:                                              ; preds = %495
  %497 = getelementptr inbounds %struct.modulo, ptr %37, i32 0, i32 14
  %498 = load ptr, ptr %497, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #5
  store i8 0, ptr %36, align 1, !tbaa !43
  %499 = load ptr, ptr %498, align 8, !tbaa !41
  %500 = getelementptr inbounds ptr, ptr %499, i64 14
  %501 = load ptr, ptr %500, align 8
  invoke void %501(ptr noundef nonnull align 8 dereferenceable(224) %498, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %502 unwind label %544

502:                                              ; preds = %496
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %503 unwind label %72

503:                                              ; preds = %502
  br label %83, !llvm.loop !61

504:                                              ; preds = %461
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %6, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %7, align 4
  br label %512

508:                                              ; preds = %464
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %6, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #5
  br label %512

512:                                              ; preds = %508, %504
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #5
  br label %548

513:                                              ; preds = %468
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %6, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %7, align 4
  br label %521

517:                                              ; preds = %471
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %6, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #5
  br label %521

521:                                              ; preds = %517, %513
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #5
  br label %548

522:                                              ; preds = %475
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %6, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %7, align 4
  br label %530

526:                                              ; preds = %478
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %6, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #5
  br label %530

530:                                              ; preds = %526, %522
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #5
  br label %548

531:                                              ; preds = %482
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %6, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %7, align 4
  br label %539

535:                                              ; preds = %485
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %6, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %7, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #5
  br label %539

539:                                              ; preds = %535, %531
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #5
  br label %548

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

544:                                              ; preds = %496
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %6, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  br label %548

548:                                              ; preds = %544, %540, %539, %530, %521, %512, %453, %437, %421, %405, %393, %389, %388, %379, %370, %361, %349, %345, %344, %335, %326, %317, %308, %299, %290, %281, %76, %72
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  br label %549

549:                                              ; preds = %548, %68
  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 %550

550:                                              ; preds = %549, %64
  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 %551

551:                                              ; preds = %550, %60
  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 %552

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

; 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_dtrmERKNS_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_dtrmERKNS_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_signedrMEi(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_unsignedrMEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #0 align 2

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

declare void @_ZN5sc_dtrmERKNS_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

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

declare void @_ZN5sc_dtrmERKNS_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_dtrmERKNS_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 = !{!"_ZTS6modulo", !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 @_ZN6modulo5entryEv(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_bv", align 8
  %29 = alloca %"class.sc_dt::sc_bv", align 8
  %30 = alloca %"class.sc_dt::sc_bv.27", align 8
  %31 = alloca %"class.sc_dt::sc_bv.27", align 8
  %32 = alloca i8, align 1
  %33 = 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 %34 unwind label %53

34:                                               ; 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 %35 unwind label %55

35:                                               ; preds = %34
  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 %36 unwind label %57

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

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

46:                                               ; preds = %43
  %47 = getelementptr inbounds i8, ptr %0, i64 512
  %48 = load ptr, ptr %47, 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
  %49 = load ptr, ptr %48, align 8, !tbaa !40
  %50 = getelementptr inbounds i8, ptr %49, i64 112
  %51 = load ptr, ptr %50, align 8
  invoke void %51(ptr noundef nonnull align 8 dereferenceable(224) %48, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %52 unwind label %59

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

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

55:                                               ; preds = %34
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %415

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

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

.loopexit.split-lp.loopexit:                      ; preds = %389, %383, %349, %348, %336, %324, %312, %232, %231, %225, %191, %190, %188, %186, %184, %180, %179, %173, %139, %138, %122, %116, %114, %108, %106, %100, %98, %91, %85, %84
  %lpad.loopexit77 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

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

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

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

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

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

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

.backedge:                                        ; preds = %83, %389
  br label %74, !llvm.loop !47

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

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

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

98:                                               ; preds = %91
  %99 = 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) %97)
          to label %100 unwind label %.loopexit.split-lp.loopexit

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

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

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

114:                                              ; preds = %108
  %115 = 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) %113)
          to label %116 unwind label %.loopexit.split-lp.loopexit

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

122:                                              ; preds = %116
  %123 = 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) %121)
          to label %124 unwind label %.loopexit.split-lp.loopexit

124:                                              ; preds = %122
  %125 = load i32, ptr %2, align 4, !tbaa !50
  %126 = srem i32 %125, 5
  store i32 %126, ptr %2, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  invoke void @_ZN5sc_dtrmERKNS_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 5)
          to label %127 unwind label %239

127:                                              ; preds = %124
  %128 = 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 %129 unwind label %241

129:                                              ; preds = %127
  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_dtrmERKNS_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 5)
          to label %130 unwind label %244

130:                                              ; preds = %129
  %131 = 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 %132 unwind label %246

132:                                              ; preds = %130
  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_dtrmERKNS_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 5)
          to label %133 unwind label %249

133:                                              ; preds = %132
  %134 = 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 %135 unwind label %251

135:                                              ; preds = %133
  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_dtrmERKNS_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 5)
          to label %136 unwind label %254

136:                                              ; preds = %135
  %137 = 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 %138 unwind label %256

138:                                              ; preds = %136
  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 %139 unwind label %.loopexit.split-lp.loopexit

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

144:                                              ; preds = %139
  %145 = load ptr, ptr %69, 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 %146 unwind label %259

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

150:                                              ; preds = %146
  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
  %151 = load ptr, ptr %70, 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 %152 unwind label %264

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

156:                                              ; preds = %152
  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
  %157 = load ptr, ptr %71, 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 %158 unwind label %269

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

162:                                              ; preds = %158
  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
  %163 = load ptr, ptr %72, 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 %164 unwind label %274

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

168:                                              ; preds = %164
  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
  %169 = load ptr, ptr %73, 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
  %170 = load ptr, ptr %169, align 8, !tbaa !40
  %171 = getelementptr inbounds i8, ptr %170, i64 112
  %172 = load ptr, ptr %171, align 8
  invoke void %172(ptr noundef nonnull align 8 dereferenceable(224) %169, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %173 unwind label %279

173:                                              ; preds = %168
  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 %174 unwind label %.loopexit.split-lp.loopexit

174:                                              ; preds = %173
  %175 = load ptr, ptr %73, 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
  %176 = load ptr, ptr %175, align 8, !tbaa !40
  %177 = getelementptr inbounds i8, ptr %176, i64 112
  %178 = load ptr, ptr %177, align 8
  invoke void %178(ptr noundef nonnull align 8 dereferenceable(224) %175, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %179 unwind label %281

179:                                              ; preds = %174
  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 %180 unwind label %.loopexit.split-lp.loopexit

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

184:                                              ; preds = %180
  %185 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedrMEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 3)
          to label %186 unwind label %.loopexit.split-lp.loopexit

186:                                              ; preds = %184
  %187 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_signedrMEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 3)
          to label %188 unwind label %.loopexit.split-lp.loopexit

188:                                              ; preds = %186
  %189 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedrMEi(ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 3)
          to label %190 unwind label %.loopexit.split-lp.loopexit

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

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

196:                                              ; preds = %191
  %197 = load ptr, ptr %69, 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 %198 unwind label %283

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

202:                                              ; preds = %198
  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
  %203 = load ptr, ptr %70, 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 %204 unwind label %288

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

208:                                              ; preds = %204
  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
  %209 = load ptr, ptr %71, 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 %210 unwind label %293

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

214:                                              ; preds = %210
  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
  %215 = load ptr, ptr %72, 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 %216 unwind label %298

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

220:                                              ; preds = %216
  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
  %221 = load ptr, ptr %73, 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
  %222 = load ptr, ptr %221, align 8, !tbaa !40
  %223 = getelementptr inbounds i8, ptr %222, i64 112
  %224 = load ptr, ptr %223, align 8
  invoke void %224(ptr noundef nonnull align 8 dereferenceable(224) %221, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %225 unwind label %303

225:                                              ; preds = %220
  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 %226 unwind label %.loopexit.split-lp.loopexit

226:                                              ; preds = %225
  %227 = load ptr, ptr %73, 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
  %228 = load ptr, ptr %227, align 8, !tbaa !40
  %229 = getelementptr inbounds i8, ptr %228, i64 112
  %230 = load ptr, ptr %229, align 8
  invoke void %230(ptr noundef nonnull align 8 dereferenceable(224) %227, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %231 unwind label %305

231:                                              ; preds = %226
  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 %232 unwind label %.loopexit.split-lp.loopexit

232:                                              ; preds = %231
  %233 = invoke noundef zeroext i1 @_ZN5sc_dtneERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 0)
          to label %234 unwind label %.loopexit.split-lp.loopexit

234:                                              ; preds = %232
  br i1 %233, label %235, label %312

235:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #6
  invoke void @_ZN5sc_dtrmERKNS_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 %236 unwind label %307

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

238:                                              ; preds = %236
  store i32 %237, 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
  br label %312

239:                                              ; preds = %124
  %240 = landingpad { ptr, i32 }
          cleanup
  br label %243

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

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

244:                                              ; preds = %129
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %248

246:                                              ; preds = %130
  %247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %248

248:                                              ; preds = %246, %244
  %.pn34 = phi { ptr, i32 } [ %247, %246 ], [ %245, %244 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %.loopexit.split-lp

249:                                              ; preds = %132
  %250 = landingpad { ptr, i32 }
          cleanup
  br label %253

251:                                              ; preds = %133
  %252 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %253

253:                                              ; preds = %251, %249
  %.pn36 = phi { ptr, i32 } [ %252, %251 ], [ %250, %249 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %.loopexit.split-lp

254:                                              ; preds = %135
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %258

256:                                              ; preds = %136
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %258

258:                                              ; preds = %256, %254
  %.pn38 = phi { ptr, i32 } [ %257, %256 ], [ %255, %254 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %.loopexit.split-lp

259:                                              ; preds = %144
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %263

261:                                              ; preds = %146
  %262 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  br label %263

263:                                              ; preds = %261, %259
  %.pn40 = phi { ptr, i32 } [ %262, %261 ], [ %260, %259 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  br label %.loopexit.split-lp

264:                                              ; preds = %150
  %265 = landingpad { ptr, i32 }
          cleanup
  br label %268

266:                                              ; preds = %152
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  br label %268

268:                                              ; preds = %266, %264
  %.pn42 = phi { ptr, i32 } [ %267, %266 ], [ %265, %264 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #6
  br label %.loopexit.split-lp

269:                                              ; preds = %156
  %270 = landingpad { ptr, i32 }
          cleanup
  br label %273

271:                                              ; preds = %158
  %272 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  br label %273

273:                                              ; preds = %271, %269
  %.pn44 = phi { ptr, i32 } [ %272, %271 ], [ %270, %269 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  br label %.loopexit.split-lp

274:                                              ; preds = %162
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %278

276:                                              ; preds = %164
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  br label %278

278:                                              ; preds = %276, %274
  %.pn46 = phi { ptr, i32 } [ %277, %276 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  br label %.loopexit.split-lp

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

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

283:                                              ; preds = %196
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %287

285:                                              ; preds = %198
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  br label %287

287:                                              ; preds = %285, %283
  %.pn48 = phi { ptr, i32 } [ %286, %285 ], [ %284, %283 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  br label %.loopexit.split-lp

288:                                              ; preds = %202
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %292

290:                                              ; preds = %204
  %291 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  br label %292

292:                                              ; preds = %290, %288
  %.pn50 = phi { ptr, i32 } [ %291, %290 ], [ %289, %288 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br label %.loopexit.split-lp

293:                                              ; preds = %208
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

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

297:                                              ; preds = %295, %293
  %.pn52 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  br label %.loopexit.split-lp

298:                                              ; preds = %214
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %302

300:                                              ; preds = %216
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  br label %302

302:                                              ; preds = %300, %298
  %.pn54 = phi { ptr, i32 } [ %301, %300 ], [ %299, %298 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %.loopexit.split-lp

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

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

307:                                              ; preds = %235
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %311

309:                                              ; preds = %236
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  br label %311

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

312:                                              ; preds = %238, %234
  %313 = invoke noundef zeroext i1 @_ZN5sc_dtneERKNS_9sc_signedEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 0)
          to label %314 unwind label %.loopexit.split-lp.loopexit

314:                                              ; preds = %312
  br i1 %313, label %315, label %324

315:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #6
  invoke void @_ZN5sc_dtrmERKNS_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 %316 unwind label %319

316:                                              ; preds = %315
  %317 = 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 %318 unwind label %321

318:                                              ; preds = %316
  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
  br label %324

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

321:                                              ; preds = %316
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  br label %323

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

324:                                              ; preds = %318, %314
  %325 = invoke noundef zeroext i1 @_ZN5sc_dtneERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 0)
          to label %326 unwind label %.loopexit.split-lp.loopexit

326:                                              ; preds = %324
  br i1 %325, label %327, label %336

327:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #6
  invoke void @_ZN5sc_dtrmERKNS_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 %328 unwind label %331

328:                                              ; preds = %327
  %329 = 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 %330 unwind label %333

330:                                              ; preds = %328
  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
  br label %336

331:                                              ; preds = %327
  %332 = landingpad { ptr, i32 }
          cleanup
  br label %335

333:                                              ; preds = %328
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %335

335:                                              ; preds = %333, %331
  %.pn60 = phi { ptr, i32 } [ %334, %333 ], [ %332, %331 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %.loopexit.split-lp

336:                                              ; preds = %330, %326
  %337 = invoke noundef zeroext i1 @_ZN5sc_dtneERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 0)
          to label %338 unwind label %.loopexit.split-lp.loopexit

338:                                              ; preds = %336
  br i1 %337, label %339, label %348

339:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #6
  invoke void @_ZN5sc_dtrmERKNS_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 %340 unwind label %343

340:                                              ; preds = %339
  %341 = 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 %342 unwind label %345

342:                                              ; preds = %340
  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
  br label %348

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

345:                                              ; preds = %340
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %347

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

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

349:                                              ; preds = %348
  %350 = load ptr, ptr %68, align 8, !tbaa !55
  %351 = load ptr, ptr %350, align 8, !tbaa !40
  %352 = getelementptr inbounds i8, ptr %351, i64 72
  %353 = load ptr, ptr %352, align 8
  invoke void %353(ptr noundef nonnull align 8 dereferenceable(196) %350, ptr noundef nonnull align 4 dereferenceable(4) %2)
          to label %354 unwind label %.loopexit.split-lp.loopexit

354:                                              ; preds = %349
  %355 = load ptr, ptr %69, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %356 unwind label %390

356:                                              ; preds = %354
  %357 = load ptr, ptr %355, align 8, !tbaa !40
  %358 = getelementptr inbounds i8, ptr %357, i64 72
  %359 = load ptr, ptr %358, align 8
  invoke void %359(ptr noundef nonnull align 8 dereferenceable(232) %355, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %360 unwind label %392

360:                                              ; preds = %356
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  %361 = load ptr, ptr %70, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %362 unwind label %395

362:                                              ; preds = %360
  %363 = load ptr, ptr %361, align 8, !tbaa !40
  %364 = getelementptr inbounds i8, ptr %363, i64 72
  %365 = load ptr, ptr %364, align 8
  invoke void %365(ptr noundef nonnull align 8 dereferenceable(232) %361, ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %366 unwind label %397

366:                                              ; preds = %362
  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
  %367 = load ptr, ptr %71, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %368 unwind label %400

368:                                              ; preds = %366
  %369 = load ptr, ptr %367, align 8, !tbaa !40
  %370 = getelementptr inbounds i8, ptr %369, i64 72
  %371 = load ptr, ptr %370, align 8
  invoke void %371(ptr noundef nonnull align 8 dereferenceable(232) %367, ptr noundef nonnull align 8 dereferenceable(24) %30)
          to label %372 unwind label %402

372:                                              ; preds = %368
  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
  %373 = load ptr, ptr %72, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %374 unwind label %405

374:                                              ; preds = %372
  %375 = load ptr, ptr %373, align 8, !tbaa !40
  %376 = getelementptr inbounds i8, ptr %375, i64 72
  %377 = load ptr, ptr %376, align 8
  invoke void %377(ptr noundef nonnull align 8 dereferenceable(232) %373, ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %378 unwind label %407

378:                                              ; preds = %374
  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
  %379 = load ptr, ptr %73, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #6
  store i8 1, ptr %32, align 1, !tbaa !42
  %380 = load ptr, ptr %379, align 8, !tbaa !40
  %381 = getelementptr inbounds i8, ptr %380, i64 112
  %382 = load ptr, ptr %381, align 8
  invoke void %382(ptr noundef nonnull align 8 dereferenceable(224) %379, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %383 unwind label %410

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

384:                                              ; preds = %383
  %385 = load ptr, ptr %73, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #6
  store i8 0, ptr %33, align 1, !tbaa !42
  %386 = load ptr, ptr %385, align 8, !tbaa !40
  %387 = getelementptr inbounds i8, ptr %386, i64 112
  %388 = load ptr, ptr %387, align 8
  invoke void %388(ptr noundef nonnull align 8 dereferenceable(224) %385, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %389 unwind label %412

389:                                              ; preds = %384
  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 %.backedge unwind label %.loopexit.split-lp.loopexit

390:                                              ; preds = %354
  %391 = landingpad { ptr, i32 }
          cleanup
  br label %394

392:                                              ; preds = %356
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  br label %394

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

395:                                              ; preds = %360
  %396 = landingpad { ptr, i32 }
          cleanup
  br label %399

397:                                              ; preds = %362
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #6
  br label %399

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

400:                                              ; preds = %366
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %404

402:                                              ; preds = %368
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #6
  br label %404

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

405:                                              ; preds = %372
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %409

407:                                              ; preds = %374
  %408 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  br label %409

409:                                              ; preds = %407, %405
  %.pn70 = phi { ptr, i32 } [ %408, %407 ], [ %406, %405 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  br label %.loopexit.split-lp

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

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %412, %410, %409, %404, %399, %394, %347, %335, %323, %311, %305, %303, %302, %297, %292, %287, %281, %279, %278, %273, %268, %263, %258, %253, %248, %243, %59
  %.pn72 = phi { ptr, i32 } [ %413, %412 ], [ %411, %410 ], [ %.pn70, %409 ], [ %.pn68, %404 ], [ %.pn66, %399 ], [ %.pn64, %394 ], [ %.pn62, %347 ], [ %.pn60, %335 ], [ %.pn58, %323 ], [ %.pn56, %311 ], [ %306, %305 ], [ %304, %303 ], [ %.pn54, %302 ], [ %.pn52, %297 ], [ %.pn50, %292 ], [ %.pn48, %287 ], [ %282, %281 ], [ %280, %279 ], [ %.pn46, %278 ], [ %.pn44, %273 ], [ %.pn42, %268 ], [ %.pn40, %263 ], [ %.pn38, %258 ], [ %.pn36, %253 ], [ %.pn34, %248 ], [ %.pn, %243 ], [ %60, %59 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit77, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp78, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %414

414:                                              ; preds = %.loopexit.split-lp, %57
  %.pn72.pn = phi { ptr, i32 } [ %.pn72, %.loopexit.split-lp ], [ %58, %57 ]
  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 %415

415:                                              ; preds = %414, %55
  %.pn72.pn.pn = phi { ptr, i32 } [ %.pn72.pn, %414 ], [ %56, %55 ]
  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 %416

416:                                              ; preds = %415, %53
  %.pn72.pn.pn.pn = phi { ptr, i32 } [ %.pn72.pn.pn, %415 ], [ %54, %53 ]
  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 } %.pn72.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_dtrmERKNS_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_dtrmERKNS_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_signedrMEi(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_unsignedrMEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #2 align 2

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

declare void @_ZN5sc_dtrmERKNS_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

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

declare void @_ZN5sc_dtrmERKNS_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_dtrmERKNS_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 = !{!"_ZTS6modulo", !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