; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/control/if_test/conditions/c_d0f5d02d (ZN10conditions5entryEv)

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

%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_lv" = type { %"class.sc_dt::sc_lv_base" }
%"class.sc_dt::sc_lv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy.0", i32, i32, ptr }
%"class.sc_dt::sc_proxy.0" = type { ptr }
%struct.conditions = 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.1", %"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.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = 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.9" }
%"class.sc_core::sc_port_base" = type { %"class.sc_core::sc_object", ptr }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = 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 @_ZN10conditions5entryEv(ptr noundef nonnull align 8 dereferenceable(520) %0) #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.sc_dt::sc_biguint", align 8
  %4 = alloca %"class.sc_dt::sc_bigint", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.sc_dt::sc_biguint", align 8
  %8 = alloca %"class.sc_dt::sc_lv", align 8
  %9 = alloca %"class.sc_dt::sc_bv", align 8
  %10 = alloca i32, align 4
  %11 = alloca i8, align 1
  %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", align 8
  %15 = alloca %"class.sc_dt::sc_bv", align 8
  %16 = alloca i32, align 4
  %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", align 8
  %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", align 8
  %24 = alloca %"class.sc_dt::sc_bv", align 8
  %25 = alloca i32, align 4
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %28 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %3) #5
  call void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #5
  invoke void @_ZN5sc_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %29 unwind label %86

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

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

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

32:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #5
  %33 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 2
  %34 = load ptr, ptr %33, align 8, !tbaa !9
  %35 = load ptr, ptr %34, align 8, !tbaa !41
  %36 = getelementptr inbounds ptr, ptr %35, i64 7
  %37 = load ptr, ptr %36, align 8
  %38 = invoke noundef nonnull align 1 dereferenceable(1) ptr %37(ptr noundef nonnull align 8 dereferenceable(224) %34)
          to label %39 unwind label %102

39:                                               ; preds = %32
  %40 = load i8, ptr %38, align 1, !tbaa !43, !range !44, !noundef !45
  %41 = trunc i8 %40 to i1
  %42 = zext i1 %41 to i32
  %43 = icmp eq i32 %42, 1
  br i1 %43, label %44, label %150

44:                                               ; preds = %39
  %45 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 9
  %46 = load ptr, ptr %45, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 0)
          to label %47 unwind label %106

47:                                               ; preds = %44
  %48 = load ptr, ptr %46, align 8, !tbaa !41
  %49 = getelementptr inbounds ptr, ptr %48, i64 9
  %50 = load ptr, ptr %49, align 8
  invoke void %50(ptr noundef nonnull align 8 dereferenceable(232) %46, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %51 unwind label %110

51:                                               ; preds = %47
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  %52 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 10
  %53 = load ptr, ptr %52, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 0)
          to label %54 unwind label %115

54:                                               ; preds = %51
  %55 = load ptr, ptr %53, align 8, !tbaa !41
  %56 = getelementptr inbounds ptr, ptr %55, i64 9
  %57 = load ptr, ptr %56, align 8
  invoke void %57(ptr noundef nonnull align 8 dereferenceable(232) %53, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %58 unwind label %119

58:                                               ; preds = %54
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #5
  %59 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 11
  %60 = load ptr, ptr %59, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 0)
          to label %61 unwind label %124

61:                                               ; preds = %58
  %62 = load ptr, ptr %60, align 8, !tbaa !41
  %63 = getelementptr inbounds ptr, ptr %62, i64 9
  %64 = load ptr, ptr %63, align 8
  invoke void %64(ptr noundef nonnull align 8 dereferenceable(232) %60, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %65 unwind label %128

65:                                               ; preds = %61
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #5
  %66 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 12
  %67 = load ptr, ptr %66, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 0)
          to label %68 unwind label %133

68:                                               ; preds = %65
  %69 = load ptr, ptr %67, align 8, !tbaa !41
  %70 = getelementptr inbounds ptr, ptr %69, i64 9
  %71 = load ptr, ptr %70, align 8
  invoke void %71(ptr noundef nonnull align 8 dereferenceable(232) %67, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %72 unwind label %137

72:                                               ; preds = %68
  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
  %73 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 13
  %74 = load ptr, ptr %73, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 0, ptr %16, align 4, !tbaa !51
  %75 = load ptr, ptr %74, align 8, !tbaa !41
  %76 = getelementptr inbounds ptr, ptr %75, i64 9
  %77 = load ptr, ptr %76, align 8
  invoke void %77(ptr noundef nonnull align 8 dereferenceable(196) %74, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %78 unwind label %142

78:                                               ; preds = %72
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  %79 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 14
  %80 = load ptr, ptr %79, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #5
  store i8 0, ptr %17, align 1, !tbaa !43
  %81 = load ptr, ptr %80, align 8, !tbaa !41
  %82 = getelementptr inbounds ptr, ptr %81, i64 14
  %83 = load ptr, ptr %82, align 8
  invoke void %83(ptr noundef nonnull align 8 dereferenceable(224) %80, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %84 unwind label %146

84:                                               ; preds = %78
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %85 unwind label %102

85:                                               ; preds = %84
  br label %152

86:                                               ; preds = %1
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %5, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %6, align 4
  br label %540

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

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

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

102:                                              ; preds = %507, %447, %446, %421, %420, %375, %372, %368, %361, %359, %352, %350, %343, %341, %334, %332, %325, %324, %279, %277, %270, %266, %259, %255, %248, %247, %207, %204, %200, %193, %191, %184, %182, %175, %173, %166, %157, %155, %150, %84, %32
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %5, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %6, align 4
  br label %536

106:                                              ; preds = %44
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %5, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %6, align 4
  br label %114

110:                                              ; preds = %47
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %5, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  br label %114

114:                                              ; preds = %110, %106
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  br label %536

115:                                              ; preds = %51
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %5, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %6, align 4
  br label %123

119:                                              ; preds = %54
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %5, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  br label %123

123:                                              ; preds = %119, %115
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #5
  br label %536

124:                                              ; preds = %58
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %5, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %6, align 4
  br label %132

128:                                              ; preds = %61
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %5, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #5
  br label %132

132:                                              ; preds = %128, %124
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #5
  br label %536

133:                                              ; preds = %65
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %5, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %6, align 4
  br label %141

137:                                              ; preds = %68
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %5, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #5
  br label %141

141:                                              ; preds = %137, %133
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #5
  br label %536

142:                                              ; preds = %72
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %5, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %536

146:                                              ; preds = %78
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %5, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #5
  br label %536

150:                                              ; preds = %39
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %151 unwind label %102

151:                                              ; preds = %150
  br label %152

152:                                              ; preds = %151, %85
  br label %153

153:                                              ; preds = %514, %152
  br label %154

154:                                              ; preds = %153
  br label %155

155:                                              ; preds = %161, %154
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %156 unwind label %102

156:                                              ; preds = %155
  br label %157

157:                                              ; preds = %156
  %158 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 8
  %159 = load ptr, ptr %158, align 8, !tbaa !53
  %160 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224) %159)
          to label %161 unwind label %102

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

166:                                              ; preds = %161
  %167 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 3
  %168 = load ptr, ptr %167, align 8, !tbaa !56
  %169 = load ptr, ptr %168, align 8, !tbaa !41
  %170 = getelementptr inbounds ptr, ptr %169, i64 5
  %171 = load ptr, ptr %170, align 8
  %172 = invoke noundef nonnull align 8 dereferenceable(24) ptr %171(ptr noundef nonnull align 8 dereferenceable(232) %168)
          to label %173 unwind label %102

173:                                              ; preds = %166
  %174 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(24) %172)
          to label %175 unwind label %102

175:                                              ; preds = %173
  %176 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 4
  %177 = load ptr, ptr %176, align 8, !tbaa !57
  %178 = load ptr, ptr %177, align 8, !tbaa !41
  %179 = getelementptr inbounds ptr, ptr %178, i64 5
  %180 = load ptr, ptr %179, align 8
  %181 = invoke noundef nonnull align 8 dereferenceable(24) ptr %180(ptr noundef nonnull align 8 dereferenceable(232) %177)
          to label %182 unwind label %102

182:                                              ; preds = %175
  %183 = 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) %181)
          to label %184 unwind label %102

184:                                              ; preds = %182
  %185 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 6
  %186 = load ptr, ptr %185, align 8, !tbaa !58
  %187 = load ptr, ptr %186, align 8, !tbaa !41
  %188 = getelementptr inbounds ptr, ptr %187, i64 5
  %189 = load ptr, ptr %188, align 8
  %190 = invoke noundef nonnull align 8 dereferenceable(24) ptr %189(ptr noundef nonnull align 8 dereferenceable(232) %186)
          to label %191 unwind label %102

191:                                              ; preds = %184
  %192 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %190)
          to label %193 unwind label %102

193:                                              ; preds = %191
  %194 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 7
  %195 = load ptr, ptr %194, align 8, !tbaa !59
  %196 = load ptr, ptr %195, align 8, !tbaa !41
  %197 = getelementptr inbounds ptr, ptr %196, i64 5
  %198 = load ptr, ptr %197, align 8
  %199 = invoke noundef nonnull align 4 dereferenceable(4) ptr %198(ptr noundef nonnull align 8 dereferenceable(196) %195)
          to label %200 unwind label %102

200:                                              ; preds = %193
  %201 = load i32, ptr %199, align 4, !tbaa !51
  store i32 %201, ptr %10, align 4, !tbaa !51
  %202 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 4)
          to label %203 unwind label %102

203:                                              ; preds = %200
  br i1 %202, label %204, label %207

204:                                              ; preds = %203
  %205 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_9sc_signedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 6)
          to label %206 unwind label %102

206:                                              ; preds = %204
  br i1 %205, label %213, label %207

207:                                              ; preds = %206, %203
  %208 = load i32, ptr %10, align 4, !tbaa !51
  %209 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %210 unwind label %102

210:                                              ; preds = %207
  %211 = add nsw i32 %208, %209
  %212 = icmp eq i32 %211, 6
  br i1 %212, label %213, label %230

213:                                              ; preds = %210, %206
  %214 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 9
  %215 = load ptr, ptr %214, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %18, i32 noundef 4)
          to label %216 unwind label %221

216:                                              ; preds = %213
  %217 = load ptr, ptr %215, align 8, !tbaa !41
  %218 = getelementptr inbounds ptr, ptr %217, i64 9
  %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) %18)
          to label %220 unwind label %225

220:                                              ; preds = %216
  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
  br label %247

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

225:                                              ; preds = %216
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %5, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  br label %229

229:                                              ; preds = %225, %221
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #5
  br label %536

230:                                              ; preds = %210
  %231 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 9
  %232 = load ptr, ptr %231, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %233 unwind label %238

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

237:                                              ; preds = %233
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #5
  br label %247

238:                                              ; preds = %230
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %5, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %6, align 4
  br label %246

242:                                              ; preds = %233
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %5, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  br label %246

246:                                              ; preds = %242, %238
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #5
  br label %536

247:                                              ; preds = %237, %220
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %248 unwind label %102

248:                                              ; preds = %247
  %249 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 3
  %250 = load ptr, ptr %249, align 8, !tbaa !56
  %251 = load ptr, ptr %250, align 8, !tbaa !41
  %252 = getelementptr inbounds ptr, ptr %251, i64 5
  %253 = load ptr, ptr %252, align 8
  %254 = invoke noundef nonnull align 8 dereferenceable(24) ptr %253(ptr noundef nonnull align 8 dereferenceable(232) %250)
          to label %255 unwind label %102

255:                                              ; preds = %248
  %256 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %257 unwind label %102

257:                                              ; preds = %255
  %258 = icmp eq i32 %256, 4
  br i1 %258, label %259, label %270

259:                                              ; preds = %257
  %260 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 4
  %261 = load ptr, ptr %260, align 8, !tbaa !57
  %262 = load ptr, ptr %261, align 8, !tbaa !41
  %263 = getelementptr inbounds ptr, ptr %262, i64 5
  %264 = load ptr, ptr %263, align 8
  %265 = invoke noundef nonnull align 8 dereferenceable(24) ptr %264(ptr noundef nonnull align 8 dereferenceable(232) %261)
          to label %266 unwind label %102

266:                                              ; preds = %259
  %267 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %265)
          to label %268 unwind label %102

268:                                              ; preds = %266
  %269 = icmp slt i32 %267, 6
  br i1 %269, label %290, label %270

270:                                              ; preds = %268, %257
  %271 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 6
  %272 = load ptr, ptr %271, align 8, !tbaa !58
  %273 = load ptr, ptr %272, align 8, !tbaa !41
  %274 = getelementptr inbounds ptr, ptr %273, i64 5
  %275 = load ptr, ptr %274, align 8
  %276 = invoke noundef nonnull align 8 dereferenceable(24) ptr %275(ptr noundef nonnull align 8 dereferenceable(232) %272)
          to label %277 unwind label %102

277:                                              ; preds = %270
  %278 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %276)
          to label %279 unwind label %102

279:                                              ; preds = %277
  %280 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 7
  %281 = load ptr, ptr %280, align 8, !tbaa !59
  %282 = load ptr, ptr %281, align 8, !tbaa !41
  %283 = getelementptr inbounds ptr, ptr %282, i64 5
  %284 = load ptr, ptr %283, align 8
  %285 = invoke noundef nonnull align 4 dereferenceable(4) ptr %284(ptr noundef nonnull align 8 dereferenceable(196) %281)
          to label %286 unwind label %102

286:                                              ; preds = %279
  %287 = load i32, ptr %285, align 4, !tbaa !51
  %288 = add nsw i32 %278, %287
  %289 = icmp eq i32 %288, 6
  br i1 %289, label %290, label %307

290:                                              ; preds = %286, %268
  %291 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 10
  %292 = load ptr, ptr %291, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %20, i32 noundef 4)
          to label %293 unwind label %298

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

297:                                              ; preds = %293
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #5
  br label %324

298:                                              ; preds = %290
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %5, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %6, align 4
  br label %306

302:                                              ; preds = %293
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %5, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  br label %306

306:                                              ; preds = %302, %298
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #5
  br label %536

307:                                              ; preds = %286
  %308 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 10
  %309 = load ptr, ptr %308, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %310 unwind label %315

310:                                              ; preds = %307
  %311 = load ptr, ptr %309, align 8, !tbaa !41
  %312 = getelementptr inbounds ptr, ptr %311, i64 9
  %313 = load ptr, ptr %312, align 8
  invoke void %313(ptr noundef nonnull align 8 dereferenceable(232) %309, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %314 unwind label %319

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

315:                                              ; preds = %307
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %5, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %6, align 4
  br label %323

319:                                              ; preds = %310
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %5, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #5
  br label %323

323:                                              ; preds = %319, %315
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #5
  br label %536

324:                                              ; preds = %314, %297
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %325 unwind label %102

325:                                              ; preds = %324
  %326 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 3
  %327 = load ptr, ptr %326, align 8, !tbaa !56
  %328 = load ptr, ptr %327, align 8, !tbaa !41
  %329 = getelementptr inbounds ptr, ptr %328, i64 5
  %330 = load ptr, ptr %329, align 8
  %331 = invoke noundef nonnull align 8 dereferenceable(24) ptr %330(ptr noundef nonnull align 8 dereferenceable(232) %327)
          to label %332 unwind label %102

332:                                              ; preds = %325
  %333 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(24) %331)
          to label %334 unwind label %102

334:                                              ; preds = %332
  %335 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 4
  %336 = load ptr, ptr %335, align 8, !tbaa !57
  %337 = load ptr, ptr %336, align 8, !tbaa !41
  %338 = getelementptr inbounds ptr, ptr %337, i64 5
  %339 = load ptr, ptr %338, align 8
  %340 = invoke noundef nonnull align 8 dereferenceable(24) ptr %339(ptr noundef nonnull align 8 dereferenceable(232) %336)
          to label %341 unwind label %102

341:                                              ; preds = %334
  %342 = 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) %340)
          to label %343 unwind label %102

343:                                              ; preds = %341
  %344 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 5
  %345 = load ptr, ptr %344, align 8, !tbaa !60
  %346 = load ptr, ptr %345, align 8, !tbaa !41
  %347 = getelementptr inbounds ptr, ptr %346, i64 5
  %348 = load ptr, ptr %347, align 8
  %349 = invoke noundef nonnull align 8 dereferenceable(24) ptr %348(ptr noundef nonnull align 8 dereferenceable(232) %345)
          to label %350 unwind label %102

350:                                              ; preds = %343
  %351 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt5sc_lvILi4EEaSINS_10sc_bv_baseEEERS1_RKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(8) %349)
          to label %352 unwind label %102

352:                                              ; preds = %350
  %353 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 6
  %354 = load ptr, ptr %353, align 8, !tbaa !58
  %355 = load ptr, ptr %354, align 8, !tbaa !41
  %356 = getelementptr inbounds ptr, ptr %355, i64 5
  %357 = load ptr, ptr %356, align 8
  %358 = invoke noundef nonnull align 8 dereferenceable(24) ptr %357(ptr noundef nonnull align 8 dereferenceable(232) %354)
          to label %359 unwind label %102

359:                                              ; preds = %352
  %360 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %358)
          to label %361 unwind label %102

361:                                              ; preds = %359
  %362 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 7
  %363 = load ptr, ptr %362, align 8, !tbaa !59
  %364 = load ptr, ptr %363, align 8, !tbaa !41
  %365 = getelementptr inbounds ptr, ptr %364, i64 5
  %366 = load ptr, ptr %365, align 8
  %367 = invoke noundef nonnull align 4 dereferenceable(4) ptr %366(ptr noundef nonnull align 8 dereferenceable(196) %363)
          to label %368 unwind label %102

368:                                              ; preds = %361
  %369 = load i32, ptr %367, align 4, !tbaa !51
  store i32 %369, ptr %10, align 4, !tbaa !51
  %370 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 4)
          to label %371 unwind label %102

371:                                              ; preds = %368
  br i1 %370, label %372, label %375

372:                                              ; preds = %371
  %373 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_9sc_signedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 6)
          to label %374 unwind label %102

374:                                              ; preds = %372
  br i1 %373, label %381, label %375

375:                                              ; preds = %374, %371
  %376 = load i32, ptr %10, align 4, !tbaa !51
  %377 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %378 unwind label %102

378:                                              ; preds = %375
  %379 = add nsw i32 %376, %377
  %380 = icmp eq i32 %379, 6
  br label %381

381:                                              ; preds = %378, %374
  %382 = phi i1 [ true, %374 ], [ %380, %378 ]
  %383 = zext i1 %382 to i8
  store i8 %383, ptr %11, align 1, !tbaa !43
  %384 = load i8, ptr %11, align 1, !tbaa !43, !range !44, !noundef !45
  %385 = trunc i8 %384 to i1
  br i1 %385, label %386, label %403

386:                                              ; preds = %381
  %387 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 11
  %388 = load ptr, ptr %387, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %22, i32 noundef 4)
          to label %389 unwind label %394

389:                                              ; preds = %386
  %390 = load ptr, ptr %388, align 8, !tbaa !41
  %391 = getelementptr inbounds ptr, ptr %390, i64 9
  %392 = load ptr, ptr %391, align 8
  invoke void %392(ptr noundef nonnull align 8 dereferenceable(232) %388, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %393 unwind label %398

393:                                              ; preds = %389
  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
  br label %420

394:                                              ; preds = %386
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %5, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %6, align 4
  br label %402

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

402:                                              ; preds = %398, %394
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #5
  br label %536

403:                                              ; preds = %381
  %404 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 11
  %405 = load ptr, ptr %404, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %406 unwind label %411

406:                                              ; preds = %403
  %407 = load ptr, ptr %405, align 8, !tbaa !41
  %408 = getelementptr inbounds ptr, ptr %407, i64 9
  %409 = load ptr, ptr %408, align 8
  invoke void %409(ptr noundef nonnull align 8 dereferenceable(232) %405, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %410 unwind label %415

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

411:                                              ; preds = %403
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %5, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %6, align 4
  br label %419

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

419:                                              ; preds = %415, %411
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #5
  br label %536

420:                                              ; preds = %410, %393
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %421 unwind label %102

421:                                              ; preds = %420
  %422 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSEi(ptr noundef nonnull align 8 dereferenceable(32) %7, i32 noundef 0)
          to label %423 unwind label %102

423:                                              ; preds = %421
  %424 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 12
  %425 = load ptr, ptr %424, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #5
  %426 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_lv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %427 unwind label %515

427:                                              ; preds = %423
  %428 = icmp eq i32 %426, 4
  br i1 %428, label %429, label %432

429:                                              ; preds = %427
  %430 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 6)
          to label %431 unwind label %515

431:                                              ; preds = %429
  br i1 %430, label %438, label %432

432:                                              ; preds = %431, %427
  %433 = load i32, ptr %10, align 4, !tbaa !51
  %434 = invoke noundef i32 @_ZNK5sc_dt9sc_signed6to_intEv(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %435 unwind label %515

435:                                              ; preds = %432
  %436 = add nsw i32 %433, %434
  %437 = icmp eq i32 %436, 6
  br i1 %437, label %438, label %439

438:                                              ; preds = %435, %431
  br label %440

439:                                              ; preds = %435
  br label %440

440:                                              ; preds = %439, %438
  %441 = phi ptr [ %7, %438 ], [ %3, %439 ]
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(32) %441)
          to label %442 unwind label %515

442:                                              ; preds = %440
  %443 = load ptr, ptr %425, align 8, !tbaa !41
  %444 = getelementptr inbounds ptr, ptr %443, i64 9
  %445 = load ptr, ptr %444, align 8
  invoke void %445(ptr noundef nonnull align 8 dereferenceable(232) %425, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %446 unwind label %519

446:                                              ; preds = %442
  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
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %447 unwind label %102

447:                                              ; preds = %446
  %448 = invoke noundef i32 @_ZNK5sc_dt9sc_signed6to_intEv(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %449 unwind label %102

449:                                              ; preds = %447
  store i32 %448, ptr %10, align 4, !tbaa !51
  %450 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 13
  %451 = load ptr, ptr %450, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  %452 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 5
  %453 = load ptr, ptr %452, align 8, !tbaa !60
  %454 = load ptr, ptr %453, align 8, !tbaa !41
  %455 = getelementptr inbounds ptr, ptr %454, i64 5
  %456 = load ptr, ptr %455, align 8
  %457 = invoke noundef nonnull align 8 dereferenceable(24) ptr %456(ptr noundef nonnull align 8 dereferenceable(232) %453)
          to label %458 unwind label %524

458:                                              ; preds = %449
  %459 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %457)
          to label %460 unwind label %524

460:                                              ; preds = %458
  %461 = icmp eq i32 %459, 4
  br i1 %461, label %462, label %473

462:                                              ; preds = %460
  %463 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 3
  %464 = load ptr, ptr %463, align 8, !tbaa !56
  %465 = load ptr, ptr %464, align 8, !tbaa !41
  %466 = getelementptr inbounds ptr, ptr %465, i64 5
  %467 = load ptr, ptr %466, align 8
  %468 = invoke noundef nonnull align 8 dereferenceable(24) ptr %467(ptr noundef nonnull align 8 dereferenceable(232) %464)
          to label %469 unwind label %524

469:                                              ; preds = %462
  %470 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %468)
          to label %471 unwind label %524

471:                                              ; preds = %469
  %472 = icmp slt i32 %470, 6
  br i1 %472, label %493, label %473

473:                                              ; preds = %471, %460
  %474 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 7
  %475 = load ptr, ptr %474, align 8, !tbaa !59
  %476 = load ptr, ptr %475, align 8, !tbaa !41
  %477 = getelementptr inbounds ptr, ptr %476, i64 5
  %478 = load ptr, ptr %477, align 8
  %479 = invoke noundef nonnull align 4 dereferenceable(4) ptr %478(ptr noundef nonnull align 8 dereferenceable(196) %475)
          to label %480 unwind label %524

480:                                              ; preds = %473
  %481 = load i32, ptr %479, align 4, !tbaa !51
  %482 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 4
  %483 = load ptr, ptr %482, align 8, !tbaa !57
  %484 = load ptr, ptr %483, align 8, !tbaa !41
  %485 = getelementptr inbounds ptr, ptr %484, i64 5
  %486 = load ptr, ptr %485, align 8
  %487 = invoke noundef nonnull align 8 dereferenceable(24) ptr %486(ptr noundef nonnull align 8 dereferenceable(232) %483)
          to label %488 unwind label %524

488:                                              ; preds = %480
  %489 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %487)
          to label %490 unwind label %524

490:                                              ; preds = %488
  %491 = add nsw i32 %481, %489
  %492 = icmp eq i32 %491, 6
  br i1 %492, label %493, label %494

493:                                              ; preds = %490, %471
  br label %496

494:                                              ; preds = %490
  %495 = load i32, ptr %10, align 4, !tbaa !51
  br label %496

496:                                              ; preds = %494, %493
  %497 = phi i32 [ 0, %493 ], [ %495, %494 ]
  store i32 %497, ptr %25, align 4, !tbaa !51
  %498 = load ptr, ptr %451, align 8, !tbaa !41
  %499 = getelementptr inbounds ptr, ptr %498, i64 9
  %500 = load ptr, ptr %499, align 8
  invoke void %500(ptr noundef nonnull align 8 dereferenceable(196) %451, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %501 unwind label %524

501:                                              ; preds = %496
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  %502 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 14
  %503 = load ptr, ptr %502, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #5
  store i8 1, ptr %26, align 1, !tbaa !43
  %504 = load ptr, ptr %503, align 8, !tbaa !41
  %505 = getelementptr inbounds ptr, ptr %504, i64 14
  %506 = load ptr, ptr %505, align 8
  invoke void %506(ptr noundef nonnull align 8 dereferenceable(224) %503, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %507 unwind label %528

507:                                              ; preds = %501
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %508 unwind label %102

508:                                              ; preds = %507
  %509 = getelementptr inbounds %struct.conditions, ptr %28, i32 0, i32 14
  %510 = load ptr, ptr %509, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #5
  store i8 0, ptr %27, align 1, !tbaa !43
  %511 = load ptr, ptr %510, align 8, !tbaa !41
  %512 = getelementptr inbounds ptr, ptr %511, i64 14
  %513 = load ptr, ptr %512, align 8
  invoke void %513(ptr noundef nonnull align 8 dereferenceable(224) %510, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %514 unwind label %532

514:                                              ; preds = %508
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  br label %153, !llvm.loop !61

515:                                              ; preds = %440, %432, %429, %423
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %5, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %6, align 4
  br label %523

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

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

524:                                              ; preds = %496, %488, %480, %473, %469, %462, %458, %449
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %5, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  br label %536

528:                                              ; preds = %501
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %5, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  br label %536

532:                                              ; preds = %508
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %5, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  br label %536

536:                                              ; preds = %532, %528, %524, %523, %419, %402, %323, %306, %246, %229, %146, %142, %141, %132, %123, %114, %102
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #5
  br label %537

537:                                              ; preds = %536, %98
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #5
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #5
  br label %538

538:                                              ; preds = %537, %94
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #5
  br label %539

539:                                              ; preds = %538, %90
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  br label %540

540:                                              ; preds = %539, %86
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #5
  br label %541

541:                                              ; preds = %540
  %542 = load ptr, ptr %5, align 8
  %543 = load i32, ptr %6, align 4
  %544 = insertvalue { ptr, i32 } poison, ptr %542, 0
  %545 = insertvalue { ptr, i32 } %544, i32 %543, 1
  resume { ptr, i32 } %545
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224)) #0 align 2

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

; Function Attrs: 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(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8)) #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 noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

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

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

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

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

; 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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 416}
!10 = !{!"_ZTS10conditions", !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 472}
!47 = !{!10, !6, i64 480}
!48 = !{!10, !6, i64 488}
!49 = !{!10, !6, i64 496}
!50 = !{!10, !6, i64 504}
!51 = !{!32, !32, i64 0}
!52 = !{!10, !6, i64 512}
!53 = !{!10, !6, i64 464}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!10, !6, i64 424}
!57 = !{!10, !6, i64 432}
!58 = !{!10, !6, i64 448}
!59 = !{!10, !6, i64 456}
!60 = !{!10, !6, i64 440}
!61 = distinct !{!61, !55}


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

%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_lv" = type { %"class.sc_dt::sc_lv_base" }
%"class.sc_dt::sc_lv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy.0", i32, i32, ptr }
%"class.sc_dt::sc_proxy.0" = type { ptr }

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

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

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

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

26:                                               ; preds = %25
  %27 = getelementptr inbounds i8, ptr %0, i64 416
  %28 = load ptr, ptr %27, align 8, !tbaa !5
  %29 = load ptr, ptr %28, align 8, !tbaa !40
  %30 = getelementptr inbounds i8, ptr %29, i64 56
  %31 = load ptr, ptr %30, align 8
  %32 = invoke noundef nonnull align 1 dereferenceable(1) ptr %31(ptr noundef nonnull align 8 dereferenceable(224) %28)
          to label %33 unwind label %.loopexit.split-lp.loopexit.split-lp

33:                                               ; preds = %26
  %34 = load i8, ptr %32, align 1, !tbaa !42, !range !43, !noundef !44
  %35 = trunc nuw i8 %34 to i1
  br i1 %35, label %36, label %.invoke

36:                                               ; preds = %33
  %37 = getelementptr inbounds i8, ptr %0, i64 472
  %38 = load ptr, ptr %37, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 0)
          to label %39 unwind label %85

39:                                               ; preds = %36
  %40 = load ptr, ptr %38, align 8, !tbaa !40
  %41 = getelementptr inbounds i8, ptr %40, i64 72
  %42 = load ptr, ptr %41, align 8
  invoke void %42(ptr noundef nonnull align 8 dereferenceable(232) %38, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %43 unwind label %87

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

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

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

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

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

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

64:                                               ; preds = %60
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  %65 = getelementptr inbounds i8, ptr %0, i64 504
  %66 = load ptr, ptr %65, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  store i32 0, ptr %11, align 4, !tbaa !50
  %67 = load ptr, ptr %66, align 8, !tbaa !40
  %68 = getelementptr inbounds i8, ptr %67, i64 72
  %69 = load ptr, ptr %68, align 8
  invoke void %69(ptr noundef nonnull align 8 dereferenceable(196) %66, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %70 unwind label %105

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

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

77:                                               ; preds = %1
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %427

79:                                               ; preds = %23
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %426

81:                                               ; preds = %24
  %82 = landingpad { ptr, i32 }
          cleanup
  br label %425

83:                                               ; preds = %25
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %424

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

.loopexit.split-lp.loopexit:                      ; preds = %406, %355, %354, %333, %332, %304, %301, %297, %291, %289, %283, %281, %275, %273, %267, %265, %259, %258, %224, %222, %216, %212, %206, %202, %196, %195, %166, %163, %159, %153, %151, %145, %143, %137, %135, %129
  %lpad.loopexit51 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

85:                                               ; preds = %36
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %89

87:                                               ; preds = %39
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  br label %89

89:                                               ; preds = %87, %85
  %.pn = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  br label %.loopexit.split-lp

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.backedge:                                        ; preds = %126, %412
  br label %122, !llvm.loop !53

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

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

137:                                              ; preds = %135
  %138 = load ptr, ptr %112, align 8, !tbaa !56
  %139 = load ptr, ptr %138, align 8, !tbaa !40
  %140 = getelementptr inbounds i8, ptr %139, i64 40
  %141 = load ptr, ptr %140, align 8
  %142 = invoke noundef nonnull align 8 dereferenceable(24) ptr %141(ptr noundef nonnull align 8 dereferenceable(232) %138)
          to label %143 unwind label %.loopexit.split-lp.loopexit

143:                                              ; preds = %137
  %144 = 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) %142)
          to label %145 unwind label %.loopexit.split-lp.loopexit

145:                                              ; preds = %143
  %146 = load ptr, ptr %113, align 8, !tbaa !57
  %147 = load ptr, ptr %146, align 8, !tbaa !40
  %148 = getelementptr inbounds i8, ptr %147, i64 40
  %149 = load ptr, ptr %148, align 8
  %150 = invoke noundef nonnull align 8 dereferenceable(24) ptr %149(ptr noundef nonnull align 8 dereferenceable(232) %146)
          to label %151 unwind label %.loopexit.split-lp.loopexit

151:                                              ; preds = %145
  %152 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %150)
          to label %153 unwind label %.loopexit.split-lp.loopexit

153:                                              ; preds = %151
  %154 = load ptr, ptr %114, align 8, !tbaa !58
  %155 = load ptr, ptr %154, align 8, !tbaa !40
  %156 = getelementptr inbounds i8, ptr %155, i64 40
  %157 = load ptr, ptr %156, align 8
  %158 = invoke noundef nonnull align 4 dereferenceable(4) ptr %157(ptr noundef nonnull align 8 dereferenceable(196) %154)
          to label %159 unwind label %.loopexit.split-lp.loopexit

159:                                              ; preds = %153
  %160 = load i32, ptr %158, align 4, !tbaa !50
  %161 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 4)
          to label %162 unwind label %.loopexit.split-lp.loopexit

162:                                              ; preds = %159
  br i1 %161, label %163, label %166

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

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

166:                                              ; preds = %165, %162
  %167 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %168 unwind label %.loopexit.split-lp.loopexit

168:                                              ; preds = %166
  %169 = add nsw i32 %167, %160
  %170 = icmp eq i32 %169, 6
  br i1 %170, label %171, label %183

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

173:                                              ; preds = %171
  %174 = load ptr, ptr %172, align 8, !tbaa !40
  %175 = getelementptr inbounds i8, ptr %174, i64 72
  %176 = load ptr, ptr %175, align 8
  invoke void %176(ptr noundef nonnull align 8 dereferenceable(232) %172, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %177 unwind label %180

177:                                              ; preds = %173
  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
  br label %195

178:                                              ; preds = %171
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %182

180:                                              ; preds = %173
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  br label %182

182:                                              ; preds = %180, %178
  %.pn33 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #6
  br label %.loopexit.split-lp

183:                                              ; preds = %168
  %184 = load ptr, ptr %115, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %185 unwind label %190

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

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

190:                                              ; preds = %183
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %194

192:                                              ; preds = %185
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  br label %194

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

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

196:                                              ; preds = %195
  %197 = load ptr, ptr %111, align 8, !tbaa !55
  %198 = load ptr, ptr %197, align 8, !tbaa !40
  %199 = getelementptr inbounds i8, ptr %198, i64 40
  %200 = load ptr, ptr %199, align 8
  %201 = invoke noundef nonnull align 8 dereferenceable(24) ptr %200(ptr noundef nonnull align 8 dereferenceable(232) %197)
          to label %202 unwind label %.loopexit.split-lp.loopexit

202:                                              ; preds = %196
  %203 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %204 unwind label %.loopexit.split-lp.loopexit

204:                                              ; preds = %202
  %205 = icmp eq i32 %203, 4
  br i1 %205, label %206, label %216

206:                                              ; preds = %204
  %207 = load ptr, ptr %112, align 8, !tbaa !56
  %208 = load ptr, ptr %207, align 8, !tbaa !40
  %209 = getelementptr inbounds i8, ptr %208, i64 40
  %210 = load ptr, ptr %209, align 8
  %211 = invoke noundef nonnull align 8 dereferenceable(24) ptr %210(ptr noundef nonnull align 8 dereferenceable(232) %207)
          to label %212 unwind label %.loopexit.split-lp.loopexit

212:                                              ; preds = %206
  %213 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %211)
          to label %214 unwind label %.loopexit.split-lp.loopexit

214:                                              ; preds = %212
  %215 = icmp slt i32 %213, 6
  br i1 %215, label %234, label %216

216:                                              ; preds = %214, %204
  %217 = load ptr, ptr %113, align 8, !tbaa !57
  %218 = load ptr, ptr %217, align 8, !tbaa !40
  %219 = getelementptr inbounds i8, ptr %218, i64 40
  %220 = load ptr, ptr %219, align 8
  %221 = invoke noundef nonnull align 8 dereferenceable(24) ptr %220(ptr noundef nonnull align 8 dereferenceable(232) %217)
          to label %222 unwind label %.loopexit.split-lp.loopexit

222:                                              ; preds = %216
  %223 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %221)
          to label %224 unwind label %.loopexit.split-lp.loopexit

224:                                              ; preds = %222
  %225 = load ptr, ptr %114, align 8, !tbaa !58
  %226 = load ptr, ptr %225, align 8, !tbaa !40
  %227 = getelementptr inbounds i8, ptr %226, i64 40
  %228 = load ptr, ptr %227, align 8
  %229 = invoke noundef nonnull align 4 dereferenceable(4) ptr %228(ptr noundef nonnull align 8 dereferenceable(196) %225)
          to label %230 unwind label %.loopexit.split-lp.loopexit

230:                                              ; preds = %224
  %231 = load i32, ptr %229, align 4, !tbaa !50
  %232 = add nsw i32 %231, %223
  %233 = icmp eq i32 %232, 6
  br i1 %233, label %234, label %246

234:                                              ; preds = %230, %214
  %235 = load ptr, ptr %116, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 4)
          to label %236 unwind label %241

236:                                              ; preds = %234
  %237 = load ptr, ptr %235, align 8, !tbaa !40
  %238 = getelementptr inbounds i8, ptr %237, i64 72
  %239 = load ptr, ptr %238, align 8
  invoke void %239(ptr noundef nonnull align 8 dereferenceable(232) %235, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %240 unwind label %243

240:                                              ; preds = %236
  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
  br label %258

241:                                              ; preds = %234
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %245

243:                                              ; preds = %236
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  br label %245

245:                                              ; preds = %243, %241
  %.pn37 = phi { ptr, i32 } [ %244, %243 ], [ %242, %241 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  br label %.loopexit.split-lp

246:                                              ; preds = %230
  %247 = load ptr, ptr %116, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %248 unwind label %253

248:                                              ; preds = %246
  %249 = load ptr, ptr %247, align 8, !tbaa !40
  %250 = getelementptr inbounds i8, ptr %249, i64 72
  %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) %16)
          to label %252 unwind label %255

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

253:                                              ; preds = %246
  %254 = landingpad { ptr, i32 }
          cleanup
  br label %257

255:                                              ; preds = %248
  %256 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  br label %257

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

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

259:                                              ; preds = %258
  %260 = load ptr, ptr %111, align 8, !tbaa !55
  %261 = load ptr, ptr %260, align 8, !tbaa !40
  %262 = getelementptr inbounds i8, ptr %261, i64 40
  %263 = load ptr, ptr %262, align 8
  %264 = invoke noundef nonnull align 8 dereferenceable(24) ptr %263(ptr noundef nonnull align 8 dereferenceable(232) %260)
          to label %265 unwind label %.loopexit.split-lp.loopexit

265:                                              ; preds = %259
  %266 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(24) %264)
          to label %267 unwind label %.loopexit.split-lp.loopexit

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

273:                                              ; preds = %267
  %274 = 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) %272)
          to label %275 unwind label %.loopexit.split-lp.loopexit

275:                                              ; preds = %273
  %276 = load ptr, ptr %117, align 8, !tbaa !59
  %277 = load ptr, ptr %276, align 8, !tbaa !40
  %278 = getelementptr inbounds i8, ptr %277, i64 40
  %279 = load ptr, ptr %278, align 8
  %280 = invoke noundef nonnull align 8 dereferenceable(24) ptr %279(ptr noundef nonnull align 8 dereferenceable(232) %276)
          to label %281 unwind label %.loopexit.split-lp.loopexit

281:                                              ; preds = %275
  %282 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt5sc_lvILi4EEaSINS_10sc_bv_baseEEERS1_RKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %280)
          to label %283 unwind label %.loopexit.split-lp.loopexit

283:                                              ; preds = %281
  %284 = load ptr, ptr %113, align 8, !tbaa !57
  %285 = load ptr, ptr %284, align 8, !tbaa !40
  %286 = getelementptr inbounds i8, ptr %285, i64 40
  %287 = load ptr, ptr %286, align 8
  %288 = invoke noundef nonnull align 8 dereferenceable(24) ptr %287(ptr noundef nonnull align 8 dereferenceable(232) %284)
          to label %289 unwind label %.loopexit.split-lp.loopexit

289:                                              ; preds = %283
  %290 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %288)
          to label %291 unwind label %.loopexit.split-lp.loopexit

291:                                              ; preds = %289
  %292 = load ptr, ptr %114, align 8, !tbaa !58
  %293 = load ptr, ptr %292, align 8, !tbaa !40
  %294 = getelementptr inbounds i8, ptr %293, i64 40
  %295 = load ptr, ptr %294, align 8
  %296 = invoke noundef nonnull align 4 dereferenceable(4) ptr %295(ptr noundef nonnull align 8 dereferenceable(196) %292)
          to label %297 unwind label %.loopexit.split-lp.loopexit

297:                                              ; preds = %291
  %298 = load i32, ptr %296, align 4, !tbaa !50
  %299 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 4)
          to label %300 unwind label %.loopexit.split-lp.loopexit

300:                                              ; preds = %297
  br i1 %299, label %301, label %304

301:                                              ; preds = %300
  %302 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_9sc_signedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 6)
          to label %303 unwind label %.loopexit.split-lp.loopexit

303:                                              ; preds = %301
  br i1 %302, label %.critedge, label %304

304:                                              ; preds = %303, %300
  %305 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %306 unwind label %.loopexit.split-lp.loopexit

306:                                              ; preds = %304
  %307 = add nsw i32 %305, %298
  %308 = icmp eq i32 %307, 6
  br i1 %308, label %.critedge, label %320

.critedge:                                        ; preds = %303, %306
  %309 = load ptr, ptr %118, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %17, i32 noundef 4)
          to label %310 unwind label %315

310:                                              ; preds = %.critedge
  %311 = load ptr, ptr %309, align 8, !tbaa !40
  %312 = getelementptr inbounds i8, ptr %311, i64 72
  %313 = load ptr, ptr %312, align 8
  invoke void %313(ptr noundef nonnull align 8 dereferenceable(232) %309, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %314 unwind label %317

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

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

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

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

320:                                              ; preds = %306
  %321 = load ptr, ptr %118, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %322 unwind label %327

322:                                              ; preds = %320
  %323 = load ptr, ptr %321, align 8, !tbaa !40
  %324 = getelementptr inbounds i8, ptr %323, i64 72
  %325 = load ptr, ptr %324, align 8
  invoke void %325(ptr noundef nonnull align 8 dereferenceable(232) %321, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %326 unwind label %329

326:                                              ; preds = %322
  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
  br label %332

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

329:                                              ; preds = %322
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  br label %331

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

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

333:                                              ; preds = %332
  %334 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 0)
          to label %335 unwind label %.loopexit.split-lp.loopexit

335:                                              ; preds = %333
  %336 = load ptr, ptr %119, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #6
  %337 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_lv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %338 unwind label %413

338:                                              ; preds = %335
  %339 = icmp eq i32 %337, 4
  br i1 %339, label %340, label %343

340:                                              ; preds = %338
  %341 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 6)
          to label %342 unwind label %413

342:                                              ; preds = %340
  br i1 %341, label %348, label %343

343:                                              ; preds = %342, %338
  %344 = invoke noundef i32 @_ZNK5sc_dt9sc_signed6to_intEv(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %345 unwind label %413

345:                                              ; preds = %343
  %346 = add nsw i32 %344, %298
  %347 = icmp eq i32 %346, 6
  %spec.select = select i1 %347, ptr %4, ptr %2
  br label %348

348:                                              ; preds = %345, %342
  %349 = phi ptr [ %4, %342 ], [ %spec.select, %345 ]
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(32) %349)
          to label %350 unwind label %413

350:                                              ; preds = %348
  %351 = load ptr, ptr %336, 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(232) %336, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %354 unwind label %415

354:                                              ; preds = %350
  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
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %355 unwind label %.loopexit.split-lp.loopexit

355:                                              ; preds = %354
  %356 = invoke noundef i32 @_ZNK5sc_dt9sc_signed6to_intEv(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %357 unwind label %.loopexit.split-lp.loopexit

357:                                              ; preds = %355
  %358 = load ptr, ptr %120, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  %359 = load ptr, ptr %117, align 8, !tbaa !59
  %360 = load ptr, ptr %359, align 8, !tbaa !40
  %361 = getelementptr inbounds i8, ptr %360, i64 40
  %362 = load ptr, ptr %361, align 8
  %363 = invoke noundef nonnull align 8 dereferenceable(24) ptr %362(ptr noundef nonnull align 8 dereferenceable(232) %359)
          to label %364 unwind label %418

364:                                              ; preds = %357
  %365 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %363)
          to label %366 unwind label %418

366:                                              ; preds = %364
  %367 = icmp eq i32 %365, 4
  br i1 %367, label %368, label %378

368:                                              ; preds = %366
  %369 = load ptr, ptr %111, align 8, !tbaa !55
  %370 = load ptr, ptr %369, align 8, !tbaa !40
  %371 = getelementptr inbounds i8, ptr %370, i64 40
  %372 = load ptr, ptr %371, align 8
  %373 = invoke noundef nonnull align 8 dereferenceable(24) ptr %372(ptr noundef nonnull align 8 dereferenceable(232) %369)
          to label %374 unwind label %418

374:                                              ; preds = %368
  %375 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %373)
          to label %376 unwind label %418

376:                                              ; preds = %374
  %377 = icmp slt i32 %375, 6
  br i1 %377, label %396, label %378

378:                                              ; preds = %376, %366
  %379 = load ptr, ptr %114, align 8, !tbaa !58
  %380 = load ptr, ptr %379, align 8, !tbaa !40
  %381 = getelementptr inbounds i8, ptr %380, i64 40
  %382 = load ptr, ptr %381, align 8
  %383 = invoke noundef nonnull align 4 dereferenceable(4) ptr %382(ptr noundef nonnull align 8 dereferenceable(196) %379)
          to label %384 unwind label %418

384:                                              ; preds = %378
  %385 = load i32, ptr %383, align 4, !tbaa !50
  %386 = load ptr, ptr %112, align 8, !tbaa !56
  %387 = load ptr, ptr %386, align 8, !tbaa !40
  %388 = getelementptr inbounds i8, ptr %387, i64 40
  %389 = load ptr, ptr %388, align 8
  %390 = invoke noundef nonnull align 8 dereferenceable(24) ptr %389(ptr noundef nonnull align 8 dereferenceable(232) %386)
          to label %391 unwind label %418

391:                                              ; preds = %384
  %392 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8) %390)
          to label %393 unwind label %418

393:                                              ; preds = %391
  %394 = add nsw i32 %392, %385
  %395 = icmp eq i32 %394, 6
  %spec.select1 = select i1 %395, i32 0, i32 %356
  br label %396

396:                                              ; preds = %393, %376
  %397 = phi i32 [ 0, %376 ], [ %spec.select1, %393 ]
  store i32 %397, ptr %20, align 4, !tbaa !50
  %398 = load ptr, ptr %358, align 8, !tbaa !40
  %399 = getelementptr inbounds i8, ptr %398, i64 72
  %400 = load ptr, ptr %399, align 8
  invoke void %400(ptr noundef nonnull align 8 dereferenceable(196) %358, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %401 unwind label %418

401:                                              ; preds = %396
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  %402 = load ptr, ptr %121, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #6
  store i8 1, ptr %21, align 1, !tbaa !42
  %403 = load ptr, ptr %402, align 8, !tbaa !40
  %404 = getelementptr inbounds i8, ptr %403, i64 112
  %405 = load ptr, ptr %404, align 8
  invoke void %405(ptr noundef nonnull align 8 dereferenceable(224) %402, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %406 unwind label %420

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

407:                                              ; preds = %406
  %408 = load ptr, ptr %121, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  store i8 0, ptr %22, align 1, !tbaa !42
  %409 = load ptr, ptr %408, align 8, !tbaa !40
  %410 = getelementptr inbounds i8, ptr %409, i64 112
  %411 = load ptr, ptr %410, align 8
  invoke void %411(ptr noundef nonnull align 8 dereferenceable(224) %408, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %412 unwind label %422

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

413:                                              ; preds = %348, %343, %340, %335
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %417

415:                                              ; preds = %350
  %416 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  br label %417

417:                                              ; preds = %415, %413
  %.pn43 = phi { ptr, i32 } [ %416, %415 ], [ %414, %413 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br label %.loopexit.split-lp

418:                                              ; preds = %396, %391, %384, %378, %374, %368, %364, %357
  %419 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  br label %.loopexit.split-lp

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

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %422, %420, %418, %417, %331, %319, %257, %245, %194, %182, %107, %105, %104, %99, %94, %89
  %.pn45 = phi { ptr, i32 } [ %423, %422 ], [ %421, %420 ], [ %419, %418 ], [ %.pn43, %417 ], [ %.pn41, %319 ], [ %.pn39, %331 ], [ %.pn37, %245 ], [ %.pn35, %257 ], [ %.pn33, %182 ], [ %.pn31, %194 ], [ %108, %107 ], [ %106, %105 ], [ %.pn29, %104 ], [ %.pn27, %99 ], [ %.pn25, %94 ], [ %.pn, %89 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit51, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp52, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  br label %424

424:                                              ; preds = %.loopexit.split-lp, %83
  %.pn45.pn = phi { ptr, i32 } [ %.pn45, %.loopexit.split-lp ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %425

425:                                              ; preds = %424, %81
  %.pn45.pn.pn = phi { ptr, i32 } [ %.pn45.pn, %424 ], [ %82, %81 ]
  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 %426

426:                                              ; preds = %425, %79
  %.pn45.pn.pn.pn = phi { ptr, i32 } [ %.pn45.pn.pn, %425 ], [ %80, %79 ]
  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
  br label %427

427:                                              ; preds = %426, %77
  %.pn45.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn45.pn.pn.pn, %426 ], [ %78, %77 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  resume { ptr, i32 } %.pn45.pn.pn.pn.pn
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #2 align 2

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

; Function Attrs: 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(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE6to_intEv(ptr noundef nonnull align 8 dereferenceable(8)) local_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 noundef i32 @_ZNK5sc_dt8sc_proxyINS_10sc_bv_baseEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !9, i64 416}
!6 = !{!"_ZTS10conditions", !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 472}
!46 = !{!6, !9, i64 480}
!47 = !{!6, !9, i64 488}
!48 = !{!6, !9, i64 496}
!49 = !{!6, !9, i64 504}
!50 = !{!31, !31, i64 0}
!51 = !{!6, !9, i64 512}
!52 = !{!6, !9, i64 464}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{!6, !9, i64 424}
!56 = !{!6, !9, i64 432}
!57 = !{!6, !9, i64 448}
!58 = !{!6, !9, i64 456}
!59 = !{!6, !9, i64 440}


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