; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/control/case/datatypes/datat_5da61f13 (ZN9datatypes5entryEv)

; 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 }
%"class.sc_dt::sc_subref" = type { %"class.sc_dt::sc_subref_r.base", [4 x i8] }
%"class.sc_dt::sc_subref_r.base" = type <{ %"class.sc_dt::sc_proxy.18", ptr, i32, i32, i32 }>
%"class.sc_dt::sc_proxy.18" = type { ptr }
%"class.sc_dt::sc_subref.19" = type { %"class.sc_dt::sc_subref_r.base.22", [4 x i8] }
%"class.sc_dt::sc_subref_r.base.22" = type <{ %"class.sc_dt::sc_proxy.21", ptr, i32, i32, i32 }>
%"class.sc_dt::sc_proxy.21" = type { ptr }
%struct.datatypes = type { %"class.sc_core::sc_module", %"class.sc_core::sc_in", ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.sc_core::sc_module" = type { %"class.sc_core::sc_object", %"class.sc_core::sc_process_host", %"class.sc_core::sc_sensitive", %"class.sc_core::sc_sensitive_pos", %"class.sc_core::sc_sensitive_neg", i8, ptr, i32, ptr, ptr }
%"class.sc_core::sc_object" = type { ptr, ptr, %"class.std::vector", %"class.std::vector.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 }

@.str = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9datatypes5entryEv(ptr noundef nonnull align 8 dereferenceable(504) %0) #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.sc_dt::sc_biguint", align 8
  %4 = alloca %"class.sc_dt::sc_bigint", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.sc_dt::sc_lv", 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 %"class.sc_dt::sc_bv", align 8
  %12 = alloca %"class.sc_dt::sc_bv", align 8
  %13 = alloca i8, align 1
  %14 = alloca %"class.sc_dt::sc_unsigned", align 8
  %15 = alloca %"class.sc_dt::sc_bv", align 8
  %16 = alloca %"class.sc_dt::sc_unsigned", 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 %"class.sc_dt::sc_bv", align 8
  %21 = alloca %"class.sc_dt::sc_bv", align 8
  %22 = alloca %"class.sc_dt::sc_subref", align 8
  %23 = alloca %"class.sc_dt::sc_subref", align 8
  %24 = alloca i1, align 1
  %25 = alloca i1, align 1
  %26 = alloca %"class.sc_dt::sc_subref", align 8
  %27 = alloca i1, align 1
  %28 = alloca i1, align 1
  %29 = alloca %"class.sc_dt::sc_subref", align 8
  %30 = alloca i1, align 1
  %31 = alloca i1, align 1
  %32 = alloca %"class.sc_dt::sc_subref", align 8
  %33 = alloca i1, align 1
  %34 = alloca i1, align 1
  %35 = alloca %"class.sc_dt::sc_bv", align 8
  %36 = alloca %"class.sc_dt::sc_bv", align 8
  %37 = alloca %"class.sc_dt::sc_subref.19", align 8
  %38 = alloca %"class.sc_dt::sc_subref.19", align 8
  %39 = alloca i1, align 1
  %40 = alloca i1, align 1
  %41 = alloca %"class.sc_dt::sc_subref.19", align 8
  %42 = alloca i1, align 1
  %43 = alloca i1, align 1
  %44 = alloca %"class.sc_dt::sc_subref.19", align 8
  %45 = alloca i1, align 1
  %46 = alloca i1, align 1
  %47 = alloca %"class.sc_dt::sc_subref.19", align 8
  %48 = alloca i1, align 1
  %49 = alloca i1, align 1
  %50 = alloca %"class.sc_dt::sc_bv", align 8
  %51 = alloca i8, align 1
  %52 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %53 = 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 %54 unwind label %104

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

55:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %56 unwind label %112

56:                                               ; preds = %55
  %57 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 2
  %58 = load ptr, ptr %57, align 8, !tbaa !9
  %59 = load ptr, ptr %58, align 8, !tbaa !41
  %60 = getelementptr inbounds ptr, ptr %59, i64 7
  %61 = load ptr, ptr %60, align 8
  %62 = invoke noundef nonnull align 1 dereferenceable(1) ptr %61(ptr noundef nonnull align 8 dereferenceable(224) %58)
          to label %63 unwind label %116

63:                                               ; preds = %56
  %64 = load i8, ptr %62, align 1, !tbaa !43, !range !44, !noundef !45
  %65 = trunc i8 %64 to i1
  %66 = zext i1 %65 to i32
  %67 = icmp eq i32 %66, 1
  br i1 %67, label %68, label %160

68:                                               ; preds = %63
  %69 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 8
  %70 = load ptr, ptr %69, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %9, i32 noundef 0)
          to label %71 unwind label %120

71:                                               ; preds = %68
  %72 = load ptr, ptr %70, align 8, !tbaa !41
  %73 = getelementptr inbounds ptr, ptr %72, i64 9
  %74 = load ptr, ptr %73, align 8
  invoke void %74(ptr noundef nonnull align 8 dereferenceable(232) %70, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %75 unwind label %124

75:                                               ; preds = %71
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #5
  %76 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 9
  %77 = load ptr, ptr %76, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 0)
          to label %78 unwind label %129

78:                                               ; preds = %75
  %79 = load ptr, ptr %77, align 8, !tbaa !41
  %80 = getelementptr inbounds ptr, ptr %79, i64 9
  %81 = load ptr, ptr %80, align 8
  invoke void %81(ptr noundef nonnull align 8 dereferenceable(232) %77, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %82 unwind label %133

82:                                               ; preds = %78
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #5
  %83 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 10
  %84 = load ptr, ptr %83, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef 0)
          to label %85 unwind label %138

85:                                               ; preds = %82
  %86 = load ptr, ptr %84, align 8, !tbaa !41
  %87 = getelementptr inbounds ptr, ptr %86, i64 9
  %88 = load ptr, ptr %87, align 8
  invoke void %88(ptr noundef nonnull align 8 dereferenceable(232) %84, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %89 unwind label %142

89:                                               ; preds = %85
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #5
  %90 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 11
  %91 = load ptr, ptr %90, align 8, !tbaa !49
  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 %92 unwind label %147

92:                                               ; preds = %89
  %93 = load ptr, ptr %91, align 8, !tbaa !41
  %94 = getelementptr inbounds ptr, ptr %93, i64 9
  %95 = load ptr, ptr %94, align 8
  invoke void %95(ptr noundef nonnull align 8 dereferenceable(232) %91, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %96 unwind label %151

96:                                               ; preds = %92
  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
  %97 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 12
  %98 = load ptr, ptr %97, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  store i8 0, ptr %13, align 1, !tbaa !43
  %99 = load ptr, ptr %98, align 8, !tbaa !41
  %100 = getelementptr inbounds ptr, ptr %99, i64 14
  %101 = load ptr, ptr %100, align 8
  invoke void %101(ptr noundef nonnull align 8 dereferenceable(224) %98, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %102 unwind label %156

102:                                              ; preds = %96
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %53)
          to label %103 unwind label %116

103:                                              ; preds = %102
  br label %162

104:                                              ; preds = %1
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %5, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %6, align 4
  br label %695

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

112:                                              ; preds = %55
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %5, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %6, align 4
  br label %693

116:                                              ; preds = %676, %663, %361, %320, %318, %297, %295, %294, %210, %203, %201, %194, %192, %185, %183, %176, %167, %165, %160, %102, %56
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %5, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %6, align 4
  br label %692

120:                                              ; preds = %68
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %5, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %6, align 4
  br label %128

124:                                              ; preds = %71
  %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
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #5
  br label %128

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

129:                                              ; preds = %75
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %5, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %6, align 4
  br label %137

133:                                              ; preds = %78
  %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
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #5
  br label %137

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

138:                                              ; preds = %82
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %5, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %6, align 4
  br label %146

142:                                              ; preds = %85
  %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 @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #5
  br label %146

146:                                              ; preds = %142, %138
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #5
  br label %692

147:                                              ; preds = %89
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %5, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %6, align 4
  br label %155

151:                                              ; preds = %92
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %5, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  br label %155

155:                                              ; preds = %151, %147
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  br label %692

156:                                              ; preds = %96
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %5, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  br label %692

160:                                              ; preds = %63
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %53)
          to label %161 unwind label %116

161:                                              ; preds = %160
  br label %162

162:                                              ; preds = %161, %103
  br label %163

163:                                              ; preds = %683, %162
  br label %164

164:                                              ; preds = %163
  br label %165

165:                                              ; preds = %171, %164
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %53)
          to label %166 unwind label %116

166:                                              ; preds = %165
  br label %167

167:                                              ; preds = %166
  %168 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 7
  %169 = load ptr, ptr %168, align 8, !tbaa !51
  %170 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224) %169)
          to label %171 unwind label %116

171:                                              ; preds = %167
  %172 = load i8, ptr %170, align 1, !tbaa !43, !range !44, !noundef !45
  %173 = trunc i8 %172 to i1
  %174 = zext i1 %173 to i32
  %175 = icmp eq i32 %174, 0
  br i1 %175, label %165, label %176, !llvm.loop !52

176:                                              ; preds = %171
  %177 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 3
  %178 = load ptr, ptr %177, align 8, !tbaa !54
  %179 = load ptr, ptr %178, align 8, !tbaa !41
  %180 = getelementptr inbounds ptr, ptr %179, i64 5
  %181 = load ptr, ptr %180, align 8
  %182 = invoke noundef nonnull align 8 dereferenceable(24) ptr %181(ptr noundef nonnull align 8 dereferenceable(232) %178)
          to label %183 unwind label %116

183:                                              ; preds = %176
  %184 = 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) %182)
          to label %185 unwind label %116

185:                                              ; preds = %183
  %186 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 4
  %187 = load ptr, ptr %186, align 8, !tbaa !55
  %188 = load ptr, ptr %187, align 8, !tbaa !41
  %189 = getelementptr inbounds ptr, ptr %188, i64 5
  %190 = load ptr, ptr %189, align 8
  %191 = invoke noundef nonnull align 8 dereferenceable(24) ptr %190(ptr noundef nonnull align 8 dereferenceable(232) %187)
          to label %192 unwind label %116

192:                                              ; preds = %185
  %193 = 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) %191)
          to label %194 unwind label %116

194:                                              ; preds = %192
  %195 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 5
  %196 = load ptr, ptr %195, align 8, !tbaa !56
  %197 = load ptr, ptr %196, align 8, !tbaa !41
  %198 = getelementptr inbounds ptr, ptr %197, i64 5
  %199 = load ptr, ptr %198, align 8
  %200 = invoke noundef nonnull align 8 dereferenceable(24) ptr %199(ptr noundef nonnull align 8 dereferenceable(232) %196)
          to label %201 unwind label %116

201:                                              ; preds = %194
  %202 = 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) %7, ptr noundef nonnull align 8 dereferenceable(8) %200)
          to label %203 unwind label %116

203:                                              ; preds = %201
  %204 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 6
  %205 = load ptr, ptr %204, align 8, !tbaa !57
  %206 = load ptr, ptr %205, align 8, !tbaa !41
  %207 = getelementptr inbounds ptr, ptr %206, i64 5
  %208 = load ptr, ptr %207, align 8
  %209 = invoke noundef nonnull align 8 dereferenceable(24) ptr %208(ptr noundef nonnull align 8 dereferenceable(232) %205)
          to label %210 unwind label %116

210:                                              ; preds = %203
  %211 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %209)
          to label %212 unwind label %116

212:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #5
  %213 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN5sc_dt11sc_unsigned5rangeEii(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 1, i32 noundef 3)
          to label %214 unwind label %226

214:                                              ; preds = %212
  invoke void @_ZNK5sc_dt20sc_unsigned_subref_rcvNS_11sc_unsignedEEv(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %14, ptr noundef nonnull align 8 dereferenceable(28) %213)
          to label %215 unwind label %226

215:                                              ; preds = %214
  %216 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef 4)
          to label %217 unwind label %230

217:                                              ; preds = %215
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #5
  br i1 %216, label %218, label %244

218:                                              ; preds = %217
  %219 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 8
  %220 = load ptr, ptr %219, align 8, !tbaa !46
  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 3)
          to label %221 unwind label %235

221:                                              ; preds = %218
  %222 = load ptr, ptr %220, align 8, !tbaa !41
  %223 = getelementptr inbounds ptr, ptr %222, i64 9
  %224 = load ptr, ptr %223, align 8
  invoke void %224(ptr noundef nonnull align 8 dereferenceable(232) %220, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %225 unwind label %239

225:                                              ; preds = %221
  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
  br label %294

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

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

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

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

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

243:                                              ; preds = %239, %235
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #5
  br label %692

244:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #5
  %245 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN5sc_dt11sc_unsigned5rangeEii(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 3, i32 noundef 1)
          to label %246 unwind label %258

246:                                              ; preds = %244
  invoke void @_ZNK5sc_dt20sc_unsigned_subref_rcvNS_11sc_unsignedEEv(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %16, ptr noundef nonnull align 8 dereferenceable(28) %245)
          to label %247 unwind label %258

247:                                              ; preds = %246
  %248 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %16, i32 noundef 4)
          to label %249 unwind label %262

249:                                              ; preds = %247
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #5
  br i1 %248, label %250, label %276

250:                                              ; preds = %249
  %251 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 8
  %252 = load ptr, ptr %251, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %17, i32 noundef 2)
          to label %253 unwind label %267

253:                                              ; preds = %250
  %254 = load ptr, ptr %252, align 8, !tbaa !41
  %255 = getelementptr inbounds ptr, ptr %254, i64 9
  %256 = load ptr, ptr %255, align 8
  invoke void %256(ptr noundef nonnull align 8 dereferenceable(232) %252, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %257 unwind label %271

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

258:                                              ; preds = %246, %244
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %5, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %6, align 4
  br label %266

262:                                              ; preds = %247
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %5, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %6, align 4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #5
  br label %266

266:                                              ; preds = %262, %258
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #5
  br label %692

267:                                              ; preds = %250
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %5, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %6, align 4
  br label %275

271:                                              ; preds = %253
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %5, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  br label %275

275:                                              ; preds = %271, %267
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #5
  br label %692

276:                                              ; preds = %249
  %277 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 8
  %278 = load ptr, ptr %277, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %279 unwind label %284

279:                                              ; preds = %276
  %280 = load ptr, ptr %278, align 8, !tbaa !41
  %281 = getelementptr inbounds ptr, ptr %280, i64 9
  %282 = load ptr, ptr %281, align 8
  invoke void %282(ptr noundef nonnull align 8 dereferenceable(232) %278, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %283 unwind label %288

283:                                              ; preds = %279
  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 %293

284:                                              ; preds = %276
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %5, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %6, align 4
  br label %292

288:                                              ; preds = %279
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %5, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  br label %292

292:                                              ; preds = %288, %284
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #5
  br label %692

293:                                              ; preds = %283, %257
  br label %294

294:                                              ; preds = %293, %225
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %53)
          to label %295 unwind label %116

295:                                              ; preds = %294
  %296 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt9sc_signedixEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 2)
          to label %297 unwind label %116

297:                                              ; preds = %295
  %298 = invoke noundef i64 @_ZNK5sc_dt18sc_signed_bitref_rcvyEv(ptr noundef nonnull align 8 dereferenceable(24) %296)
          to label %299 unwind label %116

299:                                              ; preds = %297
  %300 = icmp ne i64 %298, 0
  br i1 %300, label %301, label %318

301:                                              ; preds = %299
  %302 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 9
  %303 = load ptr, ptr %302, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %19, i32 noundef 3)
          to label %304 unwind label %309

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

308:                                              ; preds = %304
  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 %361

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

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

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

318:                                              ; preds = %299
  %319 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt11sc_unsignedixEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 1)
          to label %320 unwind label %116

320:                                              ; preds = %318
  %321 = invoke noundef i64 @_ZNK5sc_dt20sc_unsigned_bitref_rcvyEv(ptr noundef nonnull align 8 dereferenceable(24) %319)
          to label %322 unwind label %116

322:                                              ; preds = %320
  %323 = icmp ne i64 %321, 0
  %324 = zext i1 %323 to i32
  %325 = icmp eq i32 %324, 1
  br i1 %325, label %326, label %343

326:                                              ; preds = %322
  %327 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 9
  %328 = load ptr, ptr %327, 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 2)
          to label %329 unwind label %334

329:                                              ; preds = %326
  %330 = load ptr, ptr %328, align 8, !tbaa !41
  %331 = getelementptr inbounds ptr, ptr %330, i64 9
  %332 = load ptr, ptr %331, align 8
  invoke void %332(ptr noundef nonnull align 8 dereferenceable(232) %328, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %333 unwind label %338

333:                                              ; preds = %329
  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 %360

334:                                              ; preds = %326
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %5, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %6, align 4
  br label %342

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

342:                                              ; preds = %338, %334
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #5
  br label %692

343:                                              ; preds = %322
  %344 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 9
  %345 = load ptr, ptr %344, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %346 unwind label %351

346:                                              ; preds = %343
  %347 = load ptr, ptr %345, align 8, !tbaa !41
  %348 = getelementptr inbounds ptr, ptr %347, i64 9
  %349 = load ptr, ptr %348, align 8
  invoke void %349(ptr noundef nonnull align 8 dereferenceable(232) %345, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %350 unwind label %355

350:                                              ; preds = %346
  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 %360

351:                                              ; preds = %343
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %5, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %6, align 4
  br label %359

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

359:                                              ; preds = %355, %351
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #5
  br label %692

360:                                              ; preds = %350, %333
  br label %361

361:                                              ; preds = %360, %308
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %53)
          to label %362 unwind label %116

362:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #5
  store i1 false, ptr %24, align 1
  store i1 false, ptr %25, align 1
  store i1 false, ptr %27, align 1
  store i1 false, ptr %28, align 1
  store i1 false, ptr %30, align 1
  store i1 false, ptr %31, align 1
  store i1 false, ptr %33, align 1
  store i1 false, ptr %34, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref") align 8 %22, ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef 1, i32 noundef 3)
          to label %363 unwind label %422

363:                                              ; preds = %362
  %364 = invoke noundef zeroext i1 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEEeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef @.str)
          to label %365 unwind label %426

365:                                              ; preds = %363
  br i1 %364, label %388, label %366

366:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #5
  store i1 true, ptr %24, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref") align 8 %23, ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef 3, i32 noundef 1)
          to label %367 unwind label %430

367:                                              ; preds = %366
  store i1 true, ptr %25, align 1
  %368 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %369 unwind label %434

369:                                              ; preds = %367
  %370 = icmp ne i32 %368, 4
  br i1 %370, label %371, label %386

371:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #5
  store i1 true, ptr %27, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref") align 8 %26, ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef 3, i32 noundef 1)
          to label %372 unwind label %438

372:                                              ; preds = %371
  store i1 true, ptr %28, align 1
  %373 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %374 unwind label %442

374:                                              ; preds = %372
  %375 = icmp ne i32 %373, 5
  br i1 %375, label %376, label %386

376:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #5
  store i1 true, ptr %30, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref") align 8 %29, ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef 3, i32 noundef 1)
          to label %377 unwind label %446

377:                                              ; preds = %376
  store i1 true, ptr %31, align 1
  %378 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %379 unwind label %450

379:                                              ; preds = %377
  %380 = icmp ne i32 %378, 6
  br i1 %380, label %381, label %386

381:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #5
  store i1 true, ptr %33, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef 3, i32 noundef 1)
          to label %382 unwind label %454

382:                                              ; preds = %381
  store i1 true, ptr %34, align 1
  %383 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %384 unwind label %458

384:                                              ; preds = %382
  %385 = icmp ne i32 %383, 7
  br label %386

386:                                              ; preds = %384, %379, %374, %369
  %387 = phi i1 [ false, %379 ], [ false, %374 ], [ false, %369 ], [ %385, %384 ]
  br label %388

388:                                              ; preds = %386, %365
  %389 = phi i1 [ true, %365 ], [ %387, %386 ]
  %390 = load i1, ptr %34, align 1
  br i1 %390, label %391, label %392

391:                                              ; preds = %388
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %32) #5
  br label %392

392:                                              ; preds = %391, %388
  %393 = load i1, ptr %33, align 1
  br i1 %393, label %394, label %395

394:                                              ; preds = %392
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #5
  br label %395

395:                                              ; preds = %394, %392
  %396 = load i1, ptr %31, align 1
  br i1 %396, label %397, label %398

397:                                              ; preds = %395
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %29) #5
  br label %398

398:                                              ; preds = %397, %395
  %399 = load i1, ptr %30, align 1
  br i1 %399, label %400, label %401

400:                                              ; preds = %398
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  br label %401

401:                                              ; preds = %400, %398
  %402 = load i1, ptr %28, align 1
  br i1 %402, label %403, label %404

403:                                              ; preds = %401
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #5
  br label %404

404:                                              ; preds = %403, %401
  %405 = load i1, ptr %27, align 1
  br i1 %405, label %406, label %407

406:                                              ; preds = %404
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #5
  br label %407

407:                                              ; preds = %406, %404
  %408 = load i1, ptr %25, align 1
  br i1 %408, label %409, label %410

409:                                              ; preds = %407
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %23) #5
  br label %410

410:                                              ; preds = %409, %407
  %411 = load i1, ptr %24, align 1
  br i1 %411, label %412, label %413

412:                                              ; preds = %410
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %413

413:                                              ; preds = %412, %410
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %22) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  br i1 %389, label %414, label %504

414:                                              ; preds = %413
  %415 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 10
  %416 = load ptr, ptr %415, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %35, i32 noundef 1)
          to label %417 unwind label %495

417:                                              ; preds = %414
  %418 = load ptr, ptr %416, align 8, !tbaa !41
  %419 = getelementptr inbounds ptr, ptr %418, i64 9
  %420 = load ptr, ptr %419, align 8
  invoke void %420(ptr noundef nonnull align 8 dereferenceable(232) %416, ptr noundef nonnull align 8 dereferenceable(24) %35)
          to label %421 unwind label %499

421:                                              ; preds = %417
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #5
  br label %521

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

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

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

434:                                              ; preds = %367
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %5, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %6, align 4
  br label %485

438:                                              ; preds = %371
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %5, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %6, align 4
  br label %481

442:                                              ; preds = %372
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %5, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %6, align 4
  br label %477

446:                                              ; preds = %376
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %5, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %6, align 4
  br label %473

450:                                              ; preds = %377
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %5, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %6, align 4
  br label %469

454:                                              ; preds = %381
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %5, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %6, align 4
  br label %465

458:                                              ; preds = %382
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %5, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %6, align 4
  %462 = load i1, ptr %34, align 1
  br i1 %462, label %463, label %464

463:                                              ; preds = %458
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %32) #5
  br label %464

464:                                              ; preds = %463, %458
  br label %465

465:                                              ; preds = %464, %454
  %466 = load i1, ptr %33, align 1
  br i1 %466, label %467, label %468

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

468:                                              ; preds = %467, %465
  br label %469

469:                                              ; preds = %468, %450
  %470 = load i1, ptr %31, align 1
  br i1 %470, label %471, label %472

471:                                              ; preds = %469
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %29) #5
  br label %472

472:                                              ; preds = %471, %469
  br label %473

473:                                              ; preds = %472, %446
  %474 = load i1, ptr %30, align 1
  br i1 %474, label %475, label %476

475:                                              ; preds = %473
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  br label %476

476:                                              ; preds = %475, %473
  br label %477

477:                                              ; preds = %476, %442
  %478 = load i1, ptr %28, align 1
  br i1 %478, label %479, label %480

479:                                              ; preds = %477
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #5
  br label %480

480:                                              ; preds = %479, %477
  br label %481

481:                                              ; preds = %480, %438
  %482 = load i1, ptr %27, align 1
  br i1 %482, label %483, label %484

483:                                              ; preds = %481
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #5
  br label %484

484:                                              ; preds = %483, %481
  br label %485

485:                                              ; preds = %484, %434
  %486 = load i1, ptr %25, align 1
  br i1 %486, label %487, label %488

487:                                              ; preds = %485
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %23) #5
  br label %488

488:                                              ; preds = %487, %485
  br label %489

489:                                              ; preds = %488, %430
  %490 = load i1, ptr %24, align 1
  br i1 %490, label %491, label %492

491:                                              ; preds = %489
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %492

492:                                              ; preds = %491, %489
  br label %493

493:                                              ; preds = %492, %426
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %22) #5
  br label %494

494:                                              ; preds = %493, %422
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  br label %692

495:                                              ; preds = %414
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %5, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %6, align 4
  br label %503

499:                                              ; preds = %417
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %5, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #5
  br label %503

503:                                              ; preds = %499, %495
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #5
  br label %692

504:                                              ; preds = %413
  %505 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 10
  %506 = load ptr, ptr %505, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2INS_10sc_lv_baseEEERKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %507 unwind label %512

507:                                              ; preds = %504
  %508 = load ptr, ptr %506, align 8, !tbaa !41
  %509 = getelementptr inbounds ptr, ptr %508, i64 9
  %510 = load ptr, ptr %509, align 8
  invoke void %510(ptr noundef nonnull align 8 dereferenceable(232) %506, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %511 unwind label %516

511:                                              ; preds = %507
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #5
  br label %521

512:                                              ; preds = %504
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %5, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %6, align 4
  br label %520

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

520:                                              ; preds = %516, %512
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #5
  br label %692

521:                                              ; preds = %511, %421
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #5
  store i1 false, ptr %39, align 1
  store i1 false, ptr %40, align 1
  store i1 false, ptr %42, align 1
  store i1 false, ptr %43, align 1
  store i1 false, ptr %45, align 1
  store i1 false, ptr %46, align 1
  store i1 false, ptr %48, align 1
  store i1 false, ptr %49, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref.19") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 1, i32 noundef 3)
          to label %522 unwind label %581

522:                                              ; preds = %521
  %523 = invoke noundef zeroext i1 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEEeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef @.str)
          to label %524 unwind label %585

524:                                              ; preds = %522
  br i1 %523, label %547, label %525

525:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #5
  store i1 true, ptr %39, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref.19") align 8 %38, ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 3, i32 noundef 1)
          to label %526 unwind label %589

526:                                              ; preds = %525
  store i1 true, ptr %40, align 1
  %527 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %528 unwind label %593

528:                                              ; preds = %526
  %529 = icmp ne i32 %527, 4
  br i1 %529, label %530, label %545

530:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #5
  store i1 true, ptr %42, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref.19") align 8 %41, ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 3, i32 noundef 1)
          to label %531 unwind label %597

531:                                              ; preds = %530
  store i1 true, ptr %43, align 1
  %532 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %533 unwind label %601

533:                                              ; preds = %531
  %534 = icmp ne i32 %532, 5
  br i1 %534, label %535, label %545

535:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #5
  store i1 true, ptr %45, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref.19") align 8 %44, ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 3, i32 noundef 1)
          to label %536 unwind label %605

536:                                              ; preds = %535
  store i1 true, ptr %46, align 1
  %537 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %538 unwind label %609

538:                                              ; preds = %536
  %539 = icmp ne i32 %537, 6
  br i1 %539, label %540, label %545

540:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #5
  store i1 true, ptr %48, align 1
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_subref.19") align 8 %47, ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 3, i32 noundef 1)
          to label %541 unwind label %613

541:                                              ; preds = %540
  store i1 true, ptr %49, align 1
  %542 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %543 unwind label %617

543:                                              ; preds = %541
  %544 = icmp ne i32 %542, 7
  br label %545

545:                                              ; preds = %543, %538, %533, %528
  %546 = phi i1 [ false, %538 ], [ false, %533 ], [ false, %528 ], [ %544, %543 ]
  br label %547

547:                                              ; preds = %545, %524
  %548 = phi i1 [ true, %524 ], [ %546, %545 ]
  %549 = load i1, ptr %49, align 1
  br i1 %549, label %550, label %551

550:                                              ; preds = %547
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %47) #5
  br label %551

551:                                              ; preds = %550, %547
  %552 = load i1, ptr %48, align 1
  br i1 %552, label %553, label %554

553:                                              ; preds = %551
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #5
  br label %554

554:                                              ; preds = %553, %551
  %555 = load i1, ptr %46, align 1
  br i1 %555, label %556, label %557

556:                                              ; preds = %554
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %44) #5
  br label %557

557:                                              ; preds = %556, %554
  %558 = load i1, ptr %45, align 1
  br i1 %558, label %559, label %560

559:                                              ; preds = %557
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #5
  br label %560

560:                                              ; preds = %559, %557
  %561 = load i1, ptr %43, align 1
  br i1 %561, label %562, label %563

562:                                              ; preds = %560
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %41) #5
  br label %563

563:                                              ; preds = %562, %560
  %564 = load i1, ptr %42, align 1
  br i1 %564, label %565, label %566

565:                                              ; preds = %563
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #5
  br label %566

566:                                              ; preds = %565, %563
  %567 = load i1, ptr %40, align 1
  br i1 %567, label %568, label %569

568:                                              ; preds = %566
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %38) #5
  br label %569

569:                                              ; preds = %568, %566
  %570 = load i1, ptr %39, align 1
  br i1 %570, label %571, label %572

571:                                              ; preds = %569
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #5
  br label %572

572:                                              ; preds = %571, %569
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %37) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #5
  br i1 %548, label %573, label %663

573:                                              ; preds = %572
  %574 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 11
  %575 = load ptr, ptr %574, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %50, i32 noundef 1)
          to label %576 unwind label %654

576:                                              ; preds = %573
  %577 = load ptr, ptr %575, align 8, !tbaa !41
  %578 = getelementptr inbounds ptr, ptr %577, i64 9
  %579 = load ptr, ptr %578, align 8
  invoke void %579(ptr noundef nonnull align 8 dereferenceable(232) %575, ptr noundef nonnull align 8 dereferenceable(24) %50)
          to label %580 unwind label %658

580:                                              ; preds = %576
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #5
  br label %670

581:                                              ; preds = %521
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %5, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %6, align 4
  br label %653

585:                                              ; preds = %522
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %5, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %6, align 4
  br label %652

589:                                              ; preds = %525
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %5, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %6, align 4
  br label %648

593:                                              ; preds = %526
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %5, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %6, align 4
  br label %644

597:                                              ; preds = %530
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %5, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %6, align 4
  br label %640

601:                                              ; preds = %531
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %5, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %6, align 4
  br label %636

605:                                              ; preds = %535
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %5, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %6, align 4
  br label %632

609:                                              ; preds = %536
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %5, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %6, align 4
  br label %628

613:                                              ; preds = %540
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %5, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %6, align 4
  br label %624

617:                                              ; preds = %541
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %5, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %6, align 4
  %621 = load i1, ptr %49, align 1
  br i1 %621, label %622, label %623

622:                                              ; preds = %617
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %47) #5
  br label %623

623:                                              ; preds = %622, %617
  br label %624

624:                                              ; preds = %623, %613
  %625 = load i1, ptr %48, align 1
  br i1 %625, label %626, label %627

626:                                              ; preds = %624
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #5
  br label %627

627:                                              ; preds = %626, %624
  br label %628

628:                                              ; preds = %627, %609
  %629 = load i1, ptr %46, align 1
  br i1 %629, label %630, label %631

630:                                              ; preds = %628
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %44) #5
  br label %631

631:                                              ; preds = %630, %628
  br label %632

632:                                              ; preds = %631, %605
  %633 = load i1, ptr %45, align 1
  br i1 %633, label %634, label %635

634:                                              ; preds = %632
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #5
  br label %635

635:                                              ; preds = %634, %632
  br label %636

636:                                              ; preds = %635, %601
  %637 = load i1, ptr %43, align 1
  br i1 %637, label %638, label %639

638:                                              ; preds = %636
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %41) #5
  br label %639

639:                                              ; preds = %638, %636
  br label %640

640:                                              ; preds = %639, %597
  %641 = load i1, ptr %42, align 1
  br i1 %641, label %642, label %643

642:                                              ; preds = %640
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #5
  br label %643

643:                                              ; preds = %642, %640
  br label %644

644:                                              ; preds = %643, %593
  %645 = load i1, ptr %40, align 1
  br i1 %645, label %646, label %647

646:                                              ; preds = %644
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %38) #5
  br label %647

647:                                              ; preds = %646, %644
  br label %648

648:                                              ; preds = %647, %589
  %649 = load i1, ptr %39, align 1
  br i1 %649, label %650, label %651

650:                                              ; preds = %648
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #5
  br label %651

651:                                              ; preds = %650, %648
  br label %652

652:                                              ; preds = %651, %585
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %37) #5
  br label %653

653:                                              ; preds = %652, %581
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #5
  br label %692

654:                                              ; preds = %573
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %5, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %6, align 4
  br label %662

658:                                              ; preds = %576
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %5, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #5
  br label %662

662:                                              ; preds = %658, %654
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #5
  br label %692

663:                                              ; preds = %572
  %664 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 11
  %665 = load ptr, ptr %664, align 8, !tbaa !49
  %666 = load ptr, ptr %665, align 8, !tbaa !41
  %667 = getelementptr inbounds ptr, ptr %666, i64 9
  %668 = load ptr, ptr %667, align 8
  invoke void %668(ptr noundef nonnull align 8 dereferenceable(232) %665, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %669 unwind label %116

669:                                              ; preds = %663
  br label %670

670:                                              ; preds = %669, %580
  %671 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 12
  %672 = load ptr, ptr %671, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #5
  store i8 1, ptr %51, align 1, !tbaa !43
  %673 = load ptr, ptr %672, align 8, !tbaa !41
  %674 = getelementptr inbounds ptr, ptr %673, i64 14
  %675 = load ptr, ptr %674, align 8
  invoke void %675(ptr noundef nonnull align 8 dereferenceable(224) %672, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %676 unwind label %684

676:                                              ; preds = %670
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %53)
          to label %677 unwind label %116

677:                                              ; preds = %676
  %678 = getelementptr inbounds %struct.datatypes, ptr %53, i32 0, i32 12
  %679 = load ptr, ptr %678, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #5
  store i8 0, ptr %52, align 1, !tbaa !43
  %680 = load ptr, ptr %679, align 8, !tbaa !41
  %681 = getelementptr inbounds ptr, ptr %680, i64 14
  %682 = load ptr, ptr %681, align 8
  invoke void %682(ptr noundef nonnull align 8 dereferenceable(224) %679, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %683 unwind label %688

683:                                              ; preds = %677
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #5
  br label %163, !llvm.loop !58

684:                                              ; preds = %670
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %5, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #5
  br label %692

688:                                              ; preds = %677
  %689 = landingpad { ptr, i32 }
          cleanup
  %690 = extractvalue { ptr, i32 } %689, 0
  store ptr %690, ptr %5, align 8
  %691 = extractvalue { ptr, i32 } %689, 1
  store i32 %691, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #5
  br label %692

692:                                              ; preds = %688, %684, %662, %653, %520, %503, %494, %359, %342, %317, %292, %275, %266, %243, %234, %156, %155, %146, %137, %128, %116
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #5
  br label %693

693:                                              ; preds = %692, %112
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #5
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #5
  br label %694

694:                                              ; preds = %693, %108
  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 %695

695:                                              ; preds = %694, %104
  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 %696

696:                                              ; preds = %695
  %697 = load ptr, ptr %5, align 8
  %698 = load i32, ptr %6, align 4
  %699 = insertvalue { ptr, i32 } poison, ptr %697, 0
  %700 = insertvalue { ptr, i32 } %699, i32 %698, 1
  resume { ptr, i32 } %700
}

; 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(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(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: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(28) ptr @_ZN5sc_dt11sc_unsigned5rangeEii(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) #0 align 2

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

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

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

declare noundef i64 @_ZNK5sc_dt18sc_signed_bitref_rcvyEv(ptr noundef nonnull align 8 dereferenceable(24)) #3

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

declare noundef i64 @_ZNK5sc_dt20sc_unsigned_bitref_rcvyEv(ptr noundef nonnull align 8 dereferenceable(24)) #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind noalias writable sret(%"class.sc_dt::sc_subref.19") align 8, ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef) #0 align 2

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

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

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

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

; 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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) 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 = !{!"_ZTS9datatypes", !11, i64 0, !33, i64 232, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496}
!11 = !{!"_ZTSN7sc_core9sc_moduleE", !12, i64 0, !24, i64 112, !25, i64 120, !27, i64 144, !29, i64 168, !31, i64 192, !6, i64 200, !32, i64 208, !6, i64 216, !6, i64 224}
!12 = !{!"_ZTSN7sc_core9sc_objectE", !6, i64 8, !13, i64 16, !17, i64 40, !21, i64 64, !6, i64 96, !6, i64 104}
!13 = !{!"_ZTSSt6vectorIPN7sc_core8sc_eventESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"_ZTSSt6vectorIPN7sc_core9sc_objectESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !22, i64 0, !23, i64 8, !7, i64 16}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSN7sc_core15sc_process_hostE"}
!25 = !{!"_ZTSN7sc_core12sc_sensitiveE", !6, i64 0, !26, i64 8, !6, i64 16}
!26 = !{!"_ZTSN7sc_core12sc_sensitiveUt_E", !7, i64 0}
!27 = !{!"_ZTSN7sc_core16sc_sensitive_posE", !6, i64 0, !28, i64 8, !6, i64 16}
!28 = !{!"_ZTSN7sc_core16sc_sensitive_posUt_E", !7, i64 0}
!29 = !{!"_ZTSN7sc_core16sc_sensitive_negE", !6, i64 0, !30, i64 8, !6, i64 16}
!30 = !{!"_ZTSN7sc_core16sc_sensitive_negUt_E", !7, i64 0}
!31 = !{!"bool", !7, i64 0}
!32 = !{!"int", !7, i64 0}
!33 = !{!"_ZTSN7sc_core5sc_inIbEE", !34, i64 0, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176}
!34 = !{!"_ZTSN7sc_core7sc_portINS_15sc_signal_in_ifIbEELi1ELNS_14sc_port_policyE0EEE", !35, i64 0}
!35 = !{!"_ZTSN7sc_core9sc_port_bINS_15sc_signal_in_ifIbEEEE", !36, i64 0, !6, i64 120, !37, i64 128}
!36 = !{!"_ZTSN7sc_core12sc_port_baseE", !12, i64 0, !6, i64 112}
!37 = !{!"_ZTSSt6vectorIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!42, !42, i64 0}
!42 = !{!"vtable pointer", !8, i64 0}
!43 = !{!31, !31, i64 0}
!44 = !{i8 0, i8 2}
!45 = !{}
!46 = !{!10, !6, i64 464}
!47 = !{!10, !6, i64 472}
!48 = !{!10, !6, i64 480}
!49 = !{!10, !6, i64 488}
!50 = !{!10, !6, i64 496}
!51 = !{!10, !6, i64 456}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}
!54 = !{!10, !6, i64 424}
!55 = !{!10, !6, i64 432}
!56 = !{!10, !6, i64 440}
!57 = !{!10, !6, i64 448}
!58 = distinct !{!58, !53}


; 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 }
%"class.sc_dt::sc_subref" = type { %"class.sc_dt::sc_subref_r.base", [4 x i8] }
%"class.sc_dt::sc_subref_r.base" = type <{ %"class.sc_dt::sc_proxy.18", ptr, i32, i32, i32 }>
%"class.sc_dt::sc_proxy.18" = type { ptr }
%"class.sc_dt::sc_subref.19" = type { %"class.sc_dt::sc_subref_r.base.22", [4 x i8] }
%"class.sc_dt::sc_subref_r.base.22" = type <{ %"class.sc_dt::sc_proxy.21", ptr, i32, i32, i32 }>
%"class.sc_dt::sc_proxy.21" = type { ptr }

@.str = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress noreturn uwtable
define dso_local void @_ZN9datatypes5entryEv(ptr noundef nonnull align 8 dereferenceable(504) %0) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.sc_dt::sc_biguint", align 8
  %3 = alloca %"class.sc_dt::sc_bigint", align 8
  %4 = alloca %"class.sc_dt::sc_lv", align 8
  %5 = alloca %"class.sc_dt::sc_bv", 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 i8, align 1
  %11 = alloca %"class.sc_dt::sc_unsigned", align 8
  %12 = alloca %"class.sc_dt::sc_bv", align 8
  %13 = alloca %"class.sc_dt::sc_unsigned", 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_subref", align 8
  %20 = alloca %"class.sc_dt::sc_subref", align 8
  %21 = alloca %"class.sc_dt::sc_subref", align 8
  %22 = alloca %"class.sc_dt::sc_subref", align 8
  %23 = alloca %"class.sc_dt::sc_subref", align 8
  %24 = alloca %"class.sc_dt::sc_bv", align 8
  %25 = alloca %"class.sc_dt::sc_bv", align 8
  %26 = alloca %"class.sc_dt::sc_subref.19", align 8
  %27 = alloca %"class.sc_dt::sc_subref.19", align 8
  %28 = alloca %"class.sc_dt::sc_subref.19", align 8
  %29 = alloca %"class.sc_dt::sc_subref.19", align 8
  %30 = alloca %"class.sc_dt::sc_subref.19", align 8
  %31 = alloca %"class.sc_dt::sc_bv", align 8
  %32 = alloca i8, align 1
  %33 = 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 %34 unwind label %81

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

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

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

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

46:                                               ; preds = %43
  %47 = getelementptr inbounds i8, ptr %0, i64 464
  %48 = load ptr, ptr %47, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %6, i32 noundef 0)
          to label %49 unwind label %87

49:                                               ; preds = %46
  %50 = load ptr, ptr %48, align 8, !tbaa !40
  %51 = getelementptr inbounds i8, ptr %50, i64 72
  %52 = load ptr, ptr %51, align 8
  invoke void %52(ptr noundef nonnull align 8 dereferenceable(232) %48, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %53 unwind label %89

53:                                               ; preds = %49
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  %54 = getelementptr inbounds i8, ptr %0, i64 472
  %55 = load ptr, ptr %54, align 8, !tbaa !46
  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 %56 unwind label %92

56:                                               ; preds = %53
  %57 = load ptr, ptr %55, align 8, !tbaa !40
  %58 = getelementptr inbounds i8, ptr %57, i64 72
  %59 = load ptr, ptr %58, align 8
  invoke void %59(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %60 unwind label %94

60:                                               ; preds = %56
  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
  %61 = getelementptr inbounds i8, ptr %0, i64 480
  %62 = load ptr, ptr %61, align 8, !tbaa !47
  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 %63 unwind label %97

63:                                               ; preds = %60
  %64 = load ptr, ptr %62, align 8, !tbaa !40
  %65 = getelementptr inbounds i8, ptr %64, i64 72
  %66 = load ptr, ptr %65, align 8
  invoke void %66(ptr noundef nonnull align 8 dereferenceable(232) %62, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %67 unwind label %99

67:                                               ; preds = %63
  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
  %68 = getelementptr inbounds i8, ptr %0, i64 488
  %69 = load ptr, ptr %68, align 8, !tbaa !48
  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 %70 unwind label %102

70:                                               ; preds = %67
  %71 = load ptr, ptr %69, align 8, !tbaa !40
  %72 = getelementptr inbounds i8, ptr %71, i64 72
  %73 = load ptr, ptr %72, align 8
  invoke void %73(ptr noundef nonnull align 8 dereferenceable(232) %69, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %74 unwind label %104

74:                                               ; preds = %70
  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
  %75 = getelementptr inbounds i8, ptr %0, i64 496
  %76 = load ptr, ptr %75, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  store i8 0, ptr %10, align 1, !tbaa !42
  %77 = load ptr, ptr %76, align 8, !tbaa !40
  %78 = getelementptr inbounds i8, ptr %77, i64 112
  %79 = load ptr, ptr %78, align 8
  invoke void %79(ptr noundef nonnull align 8 dereferenceable(224) %76, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %80 unwind label %107

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

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

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

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

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

.loopexit.split-lp.loopexit:                      ; preds = %405, %395, %262, %236, %234, %219, %217, %216, %157, %151, %149, %143, %141, %135, %133, %127
  %lpad.loopexit209 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

87:                                               ; preds = %46
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %91

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

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

92:                                               ; preds = %53
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %96

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

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

97:                                               ; preds = %60
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %101

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

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

102:                                              ; preds = %67
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %106

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

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

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

.invoke:                                          ; preds = %43, %80
  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 456
  %111 = getelementptr inbounds i8, ptr %0, i64 424
  %112 = getelementptr inbounds i8, ptr %0, i64 432
  %113 = getelementptr inbounds i8, ptr %0, i64 440
  %114 = getelementptr inbounds i8, ptr %0, i64 448
  %115 = getelementptr inbounds i8, ptr %0, i64 464
  %116 = getelementptr inbounds i8, ptr %0, i64 472
  %117 = getelementptr inbounds i8, ptr %0, i64 480
  %118 = getelementptr inbounds i8, ptr %0, i64 488
  %119 = getelementptr inbounds i8, ptr %0, i64 496
  br label %120

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

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

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

.backedge:                                        ; preds = %124, %411
  br label %120, !llvm.loop !51

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

133:                                              ; preds = %127
  %134 = 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) %132)
          to label %135 unwind label %.loopexit.split-lp.loopexit

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

141:                                              ; preds = %135
  %142 = 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) %140)
          to label %143 unwind label %.loopexit.split-lp.loopexit

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

149:                                              ; preds = %143
  %150 = 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) %4, ptr noundef nonnull align 8 dereferenceable(8) %148)
          to label %151 unwind label %.loopexit.split-lp.loopexit

151:                                              ; preds = %149
  %152 = load ptr, ptr %114, align 8, !tbaa !56
  %153 = load ptr, ptr %152, align 8, !tbaa !40
  %154 = getelementptr inbounds i8, ptr %153, i64 40
  %155 = load ptr, ptr %154, align 8
  %156 = invoke noundef nonnull align 8 dereferenceable(24) ptr %155(ptr noundef nonnull align 8 dereferenceable(232) %152)
          to label %157 unwind label %.loopexit.split-lp.loopexit

157:                                              ; preds = %151
  %158 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %156)
          to label %159 unwind label %.loopexit.split-lp.loopexit

159:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  %160 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN5sc_dt11sc_unsigned5rangeEii(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 1, i32 noundef 3)
          to label %161 unwind label %172

161:                                              ; preds = %159
  invoke void @_ZNK5sc_dt20sc_unsigned_subref_rcvNS_11sc_unsignedEEv(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %11, ptr noundef nonnull align 8 dereferenceable(28) %160)
          to label %162 unwind label %172

162:                                              ; preds = %161
  %163 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %11, i32 noundef 4)
          to label %164 unwind label %174

164:                                              ; preds = %162
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br i1 %163, label %165, label %182

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

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

171:                                              ; preds = %167
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  br label %216

172:                                              ; preds = %161, %159
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %162
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %176

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

177:                                              ; preds = %165
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %181

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

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

182:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  %183 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN5sc_dt11sc_unsigned5rangeEii(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 3, i32 noundef 1)
          to label %184 unwind label %195

184:                                              ; preds = %182
  invoke void @_ZNK5sc_dt20sc_unsigned_subref_rcvNS_11sc_unsignedEEv(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %13, ptr noundef nonnull align 8 dereferenceable(28) %183)
          to label %185 unwind label %195

185:                                              ; preds = %184
  %186 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %13, i32 noundef 4)
          to label %187 unwind label %197

187:                                              ; preds = %185
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  %188 = load ptr, ptr %115, align 8, !tbaa !45
  br i1 %186, label %189, label %205

189:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 2)
          to label %190 unwind label %200

190:                                              ; preds = %189
  %191 = load ptr, ptr %188, align 8, !tbaa !40
  %192 = getelementptr inbounds i8, ptr %191, i64 72
  %193 = load ptr, ptr %192, align 8
  invoke void %193(ptr noundef nonnull align 8 dereferenceable(232) %188, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %194 unwind label %202

194:                                              ; preds = %190
  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 %216

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

197:                                              ; preds = %185
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %199

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

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

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

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

205:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %206 unwind label %211

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

210:                                              ; preds = %206
  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 %216

211:                                              ; preds = %205
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %215

213:                                              ; preds = %206
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  br label %215

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

216:                                              ; preds = %194, %210, %171
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %217 unwind label %.loopexit.split-lp.loopexit

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

219:                                              ; preds = %217
  %220 = invoke noundef i64 @_ZNK5sc_dt18sc_signed_bitref_rcvyEv(ptr noundef nonnull align 8 dereferenceable(24) %218)
          to label %221 unwind label %.loopexit.split-lp.loopexit

221:                                              ; preds = %219
  %.not = icmp eq i64 %220, 0
  br i1 %.not, label %234, label %222

222:                                              ; preds = %221
  %223 = load ptr, ptr %116, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 3)
          to label %224 unwind label %229

224:                                              ; preds = %222
  %225 = load ptr, ptr %223, align 8, !tbaa !40
  %226 = getelementptr inbounds i8, ptr %225, i64 72
  %227 = load ptr, ptr %226, align 8
  invoke void %227(ptr noundef nonnull align 8 dereferenceable(232) %223, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %228 unwind label %231

228:                                              ; preds = %224
  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 %262

229:                                              ; preds = %222
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %233

231:                                              ; preds = %224
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  br label %233

233:                                              ; preds = %231, %229
  %.pn109 = phi { ptr, i32 } [ %232, %231 ], [ %230, %229 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  br label %.loopexit.split-lp

234:                                              ; preds = %221
  %235 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt11sc_unsignedixEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 1)
          to label %236 unwind label %.loopexit.split-lp.loopexit

236:                                              ; preds = %234
  %237 = invoke noundef i64 @_ZNK5sc_dt20sc_unsigned_bitref_rcvyEv(ptr noundef nonnull align 8 dereferenceable(24) %235)
          to label %238 unwind label %.loopexit.split-lp.loopexit

238:                                              ; preds = %236
  %.not104 = icmp eq i64 %237, 0
  %239 = load ptr, ptr %116, align 8, !tbaa !46
  br i1 %.not104, label %251, label %240

240:                                              ; preds = %238
  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 2)
          to label %241 unwind label %246

241:                                              ; preds = %240
  %242 = load ptr, ptr %239, align 8, !tbaa !40
  %243 = getelementptr inbounds i8, ptr %242, i64 72
  %244 = load ptr, ptr %243, align 8
  invoke void %244(ptr noundef nonnull align 8 dereferenceable(232) %239, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %245 unwind label %248

245:                                              ; preds = %241
  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 %262

246:                                              ; preds = %240
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %250

248:                                              ; preds = %241
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  br label %250

250:                                              ; preds = %248, %246
  %.pn107 = phi { ptr, i32 } [ %249, %248 ], [ %247, %246 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #6
  br label %.loopexit.split-lp

251:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %252 unwind label %257

252:                                              ; preds = %251
  %253 = load ptr, ptr %239, align 8, !tbaa !40
  %254 = getelementptr inbounds i8, ptr %253, i64 72
  %255 = load ptr, ptr %254, align 8
  invoke void %255(ptr noundef nonnull align 8 dereferenceable(232) %239, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %256 unwind label %259

256:                                              ; preds = %252
  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 %262

257:                                              ; preds = %251
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %261

259:                                              ; preds = %252
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  br label %261

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

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

263:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref") align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef 1, i32 noundef 3)
          to label %264 unwind label %289

264:                                              ; preds = %263
  %265 = invoke noundef zeroext i1 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEEeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull @.str)
          to label %266 unwind label %291

266:                                              ; preds = %264
  br i1 %265, label %.critedge153.thread, label %267

.critedge153.thread:                              ; preds = %266
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %282

267:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref") align 8 %20, ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef 3, i32 noundef 1)
          to label %268 unwind label %293

268:                                              ; preds = %267
  %269 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %270 unwind label %295

270:                                              ; preds = %268
  %.not111 = icmp eq i32 %269, 4
  br i1 %.not111, label %.critedge, label %271

271:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref") align 8 %21, ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef 3, i32 noundef 1)
          to label %272 unwind label %297

272:                                              ; preds = %271
  %273 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %274 unwind label %299

274:                                              ; preds = %272
  %.not112 = icmp eq i32 %273, 5
  br i1 %.not112, label %.critedge203, label %275

275:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref") align 8 %22, ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef 3, i32 noundef 1)
          to label %276 unwind label %301

276:                                              ; preds = %275
  %277 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %278 unwind label %303

278:                                              ; preds = %276
  %.not113 = icmp eq i32 %277, 6
  br i1 %.not113, label %.critedge205, label %279

279:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_lv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref") align 8 %23, ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef 3, i32 noundef 1)
          to label %280 unwind label %305

280:                                              ; preds = %279
  %281 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %.critedge.thread unwind label %307

.critedge.thread:                                 ; preds = %280
  %.not207 = icmp eq i32 %281, 7
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br i1 %.not207, label %323, label %282

282:                                              ; preds = %.critedge153.thread, %.critedge.thread
  %283 = load ptr, ptr %117, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 1)
          to label %284 unwind label %318

284:                                              ; preds = %282
  %285 = load ptr, ptr %283, align 8, !tbaa !40
  %286 = getelementptr inbounds i8, ptr %285, i64 72
  %287 = load ptr, ptr %286, align 8
  invoke void %287(ptr noundef nonnull align 8 dereferenceable(232) %283, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %288 unwind label %320

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

289:                                              ; preds = %263
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %317

291:                                              ; preds = %264
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %316

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

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

297:                                              ; preds = %271
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %313

299:                                              ; preds = %272
  %300 = landingpad { ptr, i32 }
          cleanup
  br label %312

301:                                              ; preds = %275
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %311

303:                                              ; preds = %276
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %310

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

307:                                              ; preds = %280
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %23) #6
  br label %309

309:                                              ; preds = %305, %307
  %.pn114 = phi { ptr, i32 } [ %308, %307 ], [ %306, %305 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  br label %310

310:                                              ; preds = %303, %309
  %.pn114.pn = phi { ptr, i32 } [ %.pn114, %309 ], [ %304, %303 ]
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %22) #6
  br label %311

311:                                              ; preds = %301, %310
  %.pn114.pn.pn = phi { ptr, i32 } [ %.pn114.pn, %310 ], [ %302, %301 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  br label %312

312:                                              ; preds = %299, %311
  %.pn114.pn.pn.pn = phi { ptr, i32 } [ %.pn114.pn.pn, %311 ], [ %300, %299 ]
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %21) #6
  br label %313

313:                                              ; preds = %297, %312
  %.pn114.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn114.pn.pn.pn, %312 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  br label %314

314:                                              ; preds = %295, %313
  %.pn114.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn114.pn.pn.pn.pn, %313 ], [ %296, %295 ]
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %20) #6
  br label %315

315:                                              ; preds = %293, %314
  %.pn114.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn114.pn.pn.pn.pn.pn, %314 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %316

316:                                              ; preds = %315, %291
  %.pn114.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn114.pn.pn.pn.pn.pn.pn, %315 ], [ %292, %291 ]
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #6
  br label %317

317:                                              ; preds = %316, %289
  %.pn114.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn114.pn.pn.pn.pn.pn.pn.pn, %316 ], [ %290, %289 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %.loopexit.split-lp

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

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

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

.critedge:                                        ; preds = %270
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %323

.critedge203:                                     ; preds = %274
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %323

.critedge205:                                     ; preds = %278
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_lv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %323

323:                                              ; preds = %.critedge205, %.critedge203, %.critedge, %.critedge.thread
  %324 = load ptr, ptr %117, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2INS_10sc_lv_baseEEERKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %325 unwind label %330

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

329:                                              ; preds = %325
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  br label %335

330:                                              ; preds = %323
  %331 = landingpad { ptr, i32 }
          cleanup
  br label %334

332:                                              ; preds = %325
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  br label %334

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

335:                                              ; preds = %329, %288
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref.19") align 8 %26, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 1, i32 noundef 3)
          to label %336 unwind label %361

336:                                              ; preds = %335
  %337 = invoke noundef zeroext i1 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEEeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull @.str)
          to label %338 unwind label %363

338:                                              ; preds = %336
  br i1 %337, label %.critedge161.thread, label %339

.critedge161.thread:                              ; preds = %338
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %354

339:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref.19") align 8 %27, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 3, i32 noundef 1)
          to label %340 unwind label %365

340:                                              ; preds = %339
  %341 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %342 unwind label %367

342:                                              ; preds = %340
  %.not128 = icmp eq i32 %341, 4
  br i1 %.not128, label %.critedge202, label %343

343:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref.19") align 8 %28, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 3, i32 noundef 1)
          to label %344 unwind label %369

344:                                              ; preds = %343
  %345 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %346 unwind label %371

346:                                              ; preds = %344
  %.not129 = icmp eq i32 %345, 5
  br i1 %.not129, label %.critedge204, label %347

347:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref.19") align 8 %29, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 3, i32 noundef 1)
          to label %348 unwind label %373

348:                                              ; preds = %347
  %349 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %350 unwind label %375

350:                                              ; preds = %348
  %.not130 = icmp eq i32 %349, 6
  br i1 %.not130, label %.critedge206, label %351

351:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_subref.19") align 8 %30, ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 3, i32 noundef 1)
          to label %352 unwind label %377

352:                                              ; preds = %351
  %353 = invoke noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %.critedge155.thread unwind label %379

.critedge155.thread:                              ; preds = %352
  %.not208 = icmp eq i32 %353, 7
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br i1 %.not208, label %395, label %354

354:                                              ; preds = %.critedge161.thread, %.critedge155.thread
  %355 = load ptr, ptr %118, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 1)
          to label %356 unwind label %390

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

360:                                              ; preds = %356
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  br label %400

361:                                              ; preds = %335
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %389

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

365:                                              ; preds = %339
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %387

367:                                              ; preds = %340
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %386

369:                                              ; preds = %343
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %385

371:                                              ; preds = %344
  %372 = landingpad { ptr, i32 }
          cleanup
  br label %384

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

375:                                              ; preds = %348
  %376 = landingpad { ptr, i32 }
          cleanup
  br label %382

377:                                              ; preds = %351
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %381

379:                                              ; preds = %352
  %380 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %30) #6
  br label %381

381:                                              ; preds = %377, %379
  %.pn131 = phi { ptr, i32 } [ %380, %379 ], [ %378, %377 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br label %382

382:                                              ; preds = %375, %381
  %.pn131.pn = phi { ptr, i32 } [ %.pn131, %381 ], [ %376, %375 ]
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %29) #6
  br label %383

383:                                              ; preds = %373, %382
  %.pn131.pn.pn = phi { ptr, i32 } [ %.pn131.pn, %382 ], [ %374, %373 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  br label %384

384:                                              ; preds = %371, %383
  %.pn131.pn.pn.pn = phi { ptr, i32 } [ %.pn131.pn.pn, %383 ], [ %372, %371 ]
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #6
  br label %385

385:                                              ; preds = %369, %384
  %.pn131.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn131.pn.pn.pn, %384 ], [ %370, %369 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  br label %386

386:                                              ; preds = %367, %385
  %.pn131.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn131.pn.pn.pn.pn, %385 ], [ %368, %367 ]
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %27) #6
  br label %387

387:                                              ; preds = %365, %386
  %.pn131.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn131.pn.pn.pn.pn.pn, %386 ], [ %366, %365 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  br label %388

388:                                              ; preds = %387, %363
  %.pn131.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn131.pn.pn.pn.pn.pn.pn, %387 ], [ %364, %363 ]
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #6
  br label %389

389:                                              ; preds = %388, %361
  %.pn131.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn131.pn.pn.pn.pn.pn.pn.pn, %388 ], [ %362, %361 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %.loopexit.split-lp

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

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

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

.critedge202:                                     ; preds = %342
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %395

.critedge204:                                     ; preds = %346
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %395

.critedge206:                                     ; preds = %350
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %395

395:                                              ; preds = %.critedge206, %.critedge204, %.critedge202, %.critedge155.thread
  %396 = load ptr, ptr %118, align 8, !tbaa !48
  %397 = load ptr, ptr %396, align 8, !tbaa !40
  %398 = getelementptr inbounds i8, ptr %397, i64 72
  %399 = load ptr, ptr %398, align 8
  invoke void %399(ptr noundef nonnull align 8 dereferenceable(232) %396, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %400 unwind label %.loopexit.split-lp.loopexit

400:                                              ; preds = %395, %360
  %401 = load ptr, ptr %119, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #6
  store i8 1, ptr %32, align 1, !tbaa !42
  %402 = load ptr, ptr %401, align 8, !tbaa !40
  %403 = getelementptr inbounds i8, ptr %402, i64 112
  %404 = load ptr, ptr %403, align 8
  invoke void %404(ptr noundef nonnull align 8 dereferenceable(224) %401, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %405 unwind label %412

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

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

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

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

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %414, %412, %394, %389, %334, %322, %317, %261, %250, %233, %215, %204, %199, %181, %176, %107, %106, %101, %96, %91
  %.pn143 = phi { ptr, i32 } [ %415, %414 ], [ %413, %412 ], [ %.pn141, %394 ], [ %.pn131.pn.pn.pn.pn.pn.pn.pn.pn, %389 ], [ %.pn126, %322 ], [ %.pn124, %334 ], [ %.pn114.pn.pn.pn.pn.pn.pn.pn.pn, %317 ], [ %.pn109, %233 ], [ %.pn107, %250 ], [ %.pn105, %261 ], [ %.pn102, %181 ], [ %.pn100, %204 ], [ %.pn98, %215 ], [ %.pn96, %199 ], [ %.pn94, %176 ], [ %108, %107 ], [ %.pn92, %106 ], [ %.pn90, %101 ], [ %.pn88, %96 ], [ %.pn, %91 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit209, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp210, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  br label %416

416:                                              ; preds = %.loopexit.split-lp, %85
  %.pn143.pn = phi { ptr, i32 } [ %.pn143, %.loopexit.split-lp ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #6
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  br label %417

417:                                              ; preds = %416, %83
  %.pn143.pn.pn = phi { ptr, i32 } [ %.pn143.pn, %416 ], [ %84, %83 ]
  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 %418

418:                                              ; preds = %417, %81
  %.pn143.pn.pn.pn = phi { ptr, i32 } [ %.pn143.pn.pn, %417 ], [ %82, %81 ]
  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 } %.pn143.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(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(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: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(28) ptr @_ZN5sc_dt11sc_unsigned5rangeEii(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) local_unnamed_addr #2 align 2

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

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

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

declare noundef i64 @_ZNK5sc_dt18sc_signed_bitref_rcvyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

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

declare noundef i64 @_ZNK5sc_dt20sc_unsigned_bitref_rcvyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEE5rangeEii(ptr dead_on_unwind noalias writable sret(%"class.sc_dt::sc_subref.19") align 8, ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEE7to_uintEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 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_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

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

; 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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt8sc_proxyINS_11sc_subref_rINS_10sc_bv_baseEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) 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 = !{!"_ZTS9datatypes", !7, i64 0, !32, i64 232, !9, i64 416, !9, i64 424, !9, i64 432, !9, i64 440, !9, i64 448, !9, i64 456, !9, i64 464, !9, i64 472, !9, i64 480, !9, i64 488, !9, i64 496}
!7 = !{!"_ZTSN7sc_core9sc_moduleE", !8, i64 0, !23, i64 112, !24, i64 120, !26, i64 144, !28, i64 168, !30, i64 192, !9, i64 200, !31, i64 208, !9, i64 216, !9, i64 224}
!8 = !{!"_ZTSN7sc_core9sc_objectE", !9, i64 8, !12, i64 16, !16, i64 40, !20, i64 64, !9, i64 96, !9, i64 104}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSSt6vectorIPN7sc_core8sc_eventESaIS2_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core8sc_eventESaIS2_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!16 = !{!"_ZTSSt6vectorIPN7sc_core9sc_objectESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core9sc_objectESaIS2_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !22, i64 8, !10, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!22 = !{!"long", !10, i64 0}
!23 = !{!"_ZTSN7sc_core15sc_process_hostE"}
!24 = !{!"_ZTSN7sc_core12sc_sensitiveE", !9, i64 0, !25, i64 8, !9, i64 16}
!25 = !{!"_ZTSN7sc_core12sc_sensitiveUt_E", !10, i64 0}
!26 = !{!"_ZTSN7sc_core16sc_sensitive_posE", !9, i64 0, !27, i64 8, !9, i64 16}
!27 = !{!"_ZTSN7sc_core16sc_sensitive_posUt_E", !10, i64 0}
!28 = !{!"_ZTSN7sc_core16sc_sensitive_negE", !9, i64 0, !29, i64 8, !9, i64 16}
!29 = !{!"_ZTSN7sc_core16sc_sensitive_negUt_E", !10, i64 0}
!30 = !{!"bool", !10, i64 0}
!31 = !{!"int", !10, i64 0}
!32 = !{!"_ZTSN7sc_core5sc_inIbEE", !33, i64 0, !9, i64 152, !9, i64 160, !9, i64 168, !9, i64 176}
!33 = !{!"_ZTSN7sc_core7sc_portINS_15sc_signal_in_ifIbEELi1ELNS_14sc_port_policyE0EEE", !34, i64 0}
!34 = !{!"_ZTSN7sc_core9sc_port_bINS_15sc_signal_in_ifIbEEEE", !35, i64 0, !9, i64 120, !36, i64 128}
!35 = !{!"_ZTSN7sc_core12sc_port_baseE", !8, i64 0, !9, i64 112}
!36 = !{!"_ZTSSt6vectorIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN7sc_core15sc_signal_in_ifIbEESaIS3_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!40 = !{!41, !41, i64 0}
!41 = !{!"vtable pointer", !11, i64 0}
!42 = !{!30, !30, i64 0}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!6, !9, i64 464}
!46 = !{!6, !9, i64 472}
!47 = !{!6, !9, i64 480}
!48 = !{!6, !9, i64 488}
!49 = !{!6, !9, i64 496}
!50 = !{!6, !9, i64 456}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}
!53 = !{!6, !9, i64 424}
!54 = !{!6, !9, i64 432}
!55 = !{!6, !9, i64 440}
!56 = !{!6, !9, i64 448}


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