; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/bitwise/not/datatypes/dataty_ae451af3 (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_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_lv" = type { %"class.sc_dt::sc_lv_base" }
%"class.sc_dt::sc_lv_base" = type { %"class.sc_dt::sc_proxy.0", i32, i32, ptr, ptr }
%"class.sc_dt::sc_proxy.0" = type { ptr }
%"class.sc_dt::sc_bitref" = type { %"class.sc_dt::sc_bitref_r.base", [4 x i8] }
%"class.sc_dt::sc_bitref_r.base" = type <{ ptr, i32 }>
%"class.sc_dt::sc_bv.18" = type { %"class.sc_dt::sc_bv_base" }
%struct.datatypes = type { %"class.sc_core::sc_module", %"class.sc_core::sc_in", ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.sc_core::sc_module" = type { %"class.sc_core::sc_object", %"class.sc_core::sc_process_host", %"class.sc_core::sc_sensitive", %"class.sc_core::sc_sensitive_pos", %"class.sc_core::sc_sensitive_neg", i8, ptr, i32, ptr, ptr }
%"class.sc_core::sc_object" = type { ptr, ptr, %"class.std::vector", %"class.std::vector.1", %"class.std::__cxx11::basic_string", ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.sc_core::sc_process_host" = type { ptr }
%"class.sc_core::sc_sensitive" = type { ptr, i32, ptr }
%"class.sc_core::sc_sensitive_pos" = type { ptr, i32, ptr }
%"class.sc_core::sc_sensitive_neg" = type { ptr, i32, ptr }
%"class.sc_core::sc_in" = type { %"class.sc_core::sc_port", ptr, ptr, ptr, ptr }
%"class.sc_core::sc_port" = type { %"class.sc_core::sc_port_b" }
%"class.sc_core::sc_port_b" = type { %"class.sc_core::sc_port_base", ptr, %"class.std::vector.9" }
%"class.sc_core::sc_port_base" = type { %"class.sc_core::sc_object", ptr }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

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

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

40:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %41 unwind label %82

41:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %42 unwind label %86

42:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #5
  invoke void @_ZN5sc_dt5sc_lvILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %43 unwind label %90

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

44:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr %24) #5
  %45 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 2
  %46 = load ptr, ptr %45, align 8, !tbaa !9
  %47 = load ptr, ptr %46, align 8, !tbaa !41
  %48 = getelementptr inbounds ptr, ptr %47, i64 7
  %49 = load ptr, ptr %48, align 8
  %50 = invoke noundef nonnull align 1 dereferenceable(1) ptr %49(ptr noundef nonnull align 8 dereferenceable(224) %46)
          to label %51 unwind label %98

51:                                               ; preds = %44
  %52 = load i8, ptr %50, align 1, !tbaa !43, !range !44, !noundef !45
  %53 = trunc i8 %52 to i1
  %54 = zext i1 %53 to i32
  %55 = icmp eq i32 %54, 1
  br i1 %55, label %56, label %110

56:                                               ; preds = %51
  %57 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 24
  %58 = load ptr, ptr %57, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #5
  store i8 0, ptr %25, align 1, !tbaa !43
  %59 = load ptr, ptr %58, align 8, !tbaa !41
  %60 = getelementptr inbounds ptr, ptr %59, i64 14
  %61 = load ptr, ptr %60, align 8
  invoke void %61(ptr noundef nonnull align 8 dereferenceable(224) %58, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %62 unwind label %102

62:                                               ; preds = %56
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #5
  %63 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 14
  %64 = load ptr, ptr %63, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #5
  store i8 0, ptr %26, align 1, !tbaa !43
  %65 = load ptr, ptr %64, align 8, !tbaa !41
  %66 = getelementptr inbounds ptr, ptr %65, i64 14
  %67 = load ptr, ptr %66, align 8
  invoke void %67(ptr noundef nonnull align 8 dereferenceable(224) %64, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %68 unwind label %106

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

69:                                               ; preds = %68
  br label %112

70:                                               ; preds = %1
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %5, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %6, align 4
  br label %406

74:                                               ; preds = %38
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %5, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %6, align 4
  br label %405

78:                                               ; preds = %39
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %5, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %6, align 4
  br label %404

82:                                               ; preds = %40
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %5, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %6, align 4
  br label %403

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

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

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

98:                                               ; preds = %320, %308, %302, %296, %290, %284, %278, %272, %228, %217, %210, %208, %198, %189, %181, %173, %165, %157, %150, %148, %141, %139, %132, %130, %118, %110, %68, %44
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %5, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %6, align 4
  br label %399

102:                                              ; preds = %56
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %5, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #5
  br label %399

106:                                              ; preds = %62
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %5, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  br label %399

110:                                              ; preds = %51
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %111 unwind label %98

111:                                              ; preds = %110
  br label %112

112:                                              ; preds = %111, %69
  %113 = getelementptr inbounds [2 x i32], ptr %23, i64 0, i64 0
  store i32 12, ptr %113, align 4, !tbaa !48
  %114 = getelementptr inbounds [2 x i32], ptr %23, i64 0, i64 1
  store i32 127, ptr %114, align 4, !tbaa !48
  %115 = getelementptr inbounds [2 x i8], ptr %24, i64 0, i64 1
  store i8 71, ptr %115, align 1, !tbaa !49
  br label %116

116:                                              ; preds = %333, %112
  br label %117

117:                                              ; preds = %116
  br label %118

118:                                              ; preds = %131, %117
  %119 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 13
  %120 = load ptr, ptr %119, align 8, !tbaa !50
  %121 = load ptr, ptr %120, align 8, !tbaa !41
  %122 = getelementptr inbounds ptr, ptr %121, i64 7
  %123 = load ptr, ptr %122, align 8
  %124 = invoke noundef nonnull align 1 dereferenceable(1) ptr %123(ptr noundef nonnull align 8 dereferenceable(224) %120)
          to label %125 unwind label %98

125:                                              ; preds = %118
  %126 = load i8, ptr %124, align 1, !tbaa !43, !range !44, !noundef !45
  %127 = trunc i8 %126 to i1
  %128 = zext i1 %127 to i32
  %129 = icmp eq i32 %128, 0
  br i1 %129, label %130, label %132

130:                                              ; preds = %125
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %131 unwind label %98

131:                                              ; preds = %130
  br label %118, !llvm.loop !51

132:                                              ; preds = %125
  %133 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 3
  %134 = load ptr, ptr %133, align 8, !tbaa !53
  %135 = load ptr, ptr %134, align 8, !tbaa !41
  %136 = getelementptr inbounds ptr, ptr %135, i64 5
  %137 = load ptr, ptr %136, align 8
  %138 = invoke noundef nonnull align 8 dereferenceable(24) ptr %137(ptr noundef nonnull align 8 dereferenceable(232) %134)
          to label %139 unwind label %98

139:                                              ; preds = %132
  %140 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(24) %138)
          to label %141 unwind label %98

141:                                              ; preds = %139
  %142 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 4
  %143 = load ptr, ptr %142, align 8, !tbaa !54
  %144 = load ptr, ptr %143, align 8, !tbaa !41
  %145 = getelementptr inbounds ptr, ptr %144, i64 5
  %146 = load ptr, ptr %145, align 8
  %147 = invoke noundef nonnull align 8 dereferenceable(24) ptr %146(ptr noundef nonnull align 8 dereferenceable(232) %143)
          to label %148 unwind label %98

148:                                              ; preds = %141
  %149 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(24) %147)
          to label %150 unwind label %98

150:                                              ; preds = %148
  %151 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 5
  %152 = load ptr, ptr %151, align 8, !tbaa !55
  %153 = load ptr, ptr %152, align 8, !tbaa !41
  %154 = getelementptr inbounds ptr, ptr %153, i64 5
  %155 = load ptr, ptr %154, align 8
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr %155(ptr noundef nonnull align 8 dereferenceable(200) %152)
          to label %157 unwind label %98

157:                                              ; preds = %150
  %158 = load i64, ptr %156, align 8, !tbaa !56
  store i64 %158, ptr %9, align 8, !tbaa !56
  %159 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 6
  %160 = load ptr, ptr %159, align 8, !tbaa !57
  %161 = load ptr, ptr %160, align 8, !tbaa !41
  %162 = getelementptr inbounds ptr, ptr %161, i64 5
  %163 = load ptr, ptr %162, align 8
  %164 = invoke noundef nonnull align 4 dereferenceable(4) ptr %163(ptr noundef nonnull align 8 dereferenceable(196) %160)
          to label %165 unwind label %98

165:                                              ; preds = %157
  %166 = load i32, ptr %164, align 4, !tbaa !48
  store i32 %166, ptr %11, align 4, !tbaa !48
  %167 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 7
  %168 = load ptr, ptr %167, align 8, !tbaa !58
  %169 = load ptr, ptr %168, align 8, !tbaa !41
  %170 = getelementptr inbounds ptr, ptr %169, i64 5
  %171 = load ptr, ptr %170, align 8
  %172 = invoke noundef nonnull align 2 dereferenceable(2) ptr %171(ptr noundef nonnull align 8 dereferenceable(194) %168)
          to label %173 unwind label %98

173:                                              ; preds = %165
  %174 = load i16, ptr %172, align 2, !tbaa !59
  store i16 %174, ptr %13, align 2, !tbaa !59
  %175 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 8
  %176 = load ptr, ptr %175, align 8, !tbaa !61
  %177 = load ptr, ptr %176, align 8, !tbaa !41
  %178 = getelementptr inbounds ptr, ptr %177, i64 5
  %179 = load ptr, ptr %178, align 8
  %180 = invoke noundef nonnull align 1 dereferenceable(1) ptr %179(ptr noundef nonnull align 8 dereferenceable(193) %176)
          to label %181 unwind label %98

181:                                              ; preds = %173
  %182 = load i8, ptr %180, align 1, !tbaa !49
  store i8 %182, ptr %15, align 1, !tbaa !49
  %183 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 9
  %184 = load ptr, ptr %183, align 8, !tbaa !62
  %185 = load ptr, ptr %184, align 8, !tbaa !41
  %186 = getelementptr inbounds ptr, ptr %185, i64 5
  %187 = load ptr, ptr %186, align 8
  %188 = invoke noundef nonnull align 1 dereferenceable(1) ptr %187(ptr noundef nonnull align 8 dereferenceable(193) %184)
          to label %189 unwind label %98

189:                                              ; preds = %181
  %190 = load i8, ptr %188, align 1, !tbaa !49
  %191 = getelementptr inbounds [2 x i8], ptr %24, i64 0, i64 0
  store i8 %190, ptr %191, align 1, !tbaa !49
  %192 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 10
  %193 = load ptr, ptr %192, align 8, !tbaa !63
  %194 = load ptr, ptr %193, align 8, !tbaa !41
  %195 = getelementptr inbounds ptr, ptr %194, i64 7
  %196 = load ptr, ptr %195, align 8
  %197 = invoke noundef nonnull align 1 dereferenceable(1) ptr %196(ptr noundef nonnull align 8 dereferenceable(224) %193)
          to label %198 unwind label %98

198:                                              ; preds = %189
  %199 = load i8, ptr %197, align 1, !tbaa !43, !range !44, !noundef !45
  %200 = trunc i8 %199 to i1
  %201 = zext i1 %200 to i8
  store i8 %201, ptr %17, align 1, !tbaa !43
  %202 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 11
  %203 = load ptr, ptr %202, align 8, !tbaa !64
  %204 = load ptr, ptr %203, align 8, !tbaa !41
  %205 = getelementptr inbounds ptr, ptr %204, i64 5
  %206 = load ptr, ptr %205, align 8
  %207 = invoke noundef nonnull align 8 dereferenceable(24) ptr %206(ptr noundef nonnull align 8 dereferenceable(232) %203)
          to label %208 unwind label %98

208:                                              ; preds = %198
  %209 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %207)
          to label %210 unwind label %98

210:                                              ; preds = %208
  %211 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 12
  %212 = load ptr, ptr %211, align 8, !tbaa !65
  %213 = load ptr, ptr %212, align 8, !tbaa !41
  %214 = getelementptr inbounds ptr, ptr %213, i64 5
  %215 = load ptr, ptr %214, align 8
  %216 = invoke noundef nonnull align 8 dereferenceable(32) ptr %215(ptr noundef nonnull align 8 dereferenceable(248) %212)
          to label %217 unwind label %98

217:                                              ; preds = %210
  %218 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt5sc_lvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %216)
          to label %219 unwind label %98

219:                                              ; preds = %217
  %220 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 14
  %221 = load ptr, ptr %220, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #5
  store i8 1, ptr %27, align 1, !tbaa !43
  %222 = load ptr, ptr %221, align 8, !tbaa !41
  %223 = getelementptr inbounds ptr, ptr %222, i64 14
  %224 = load ptr, ptr %223, align 8
  invoke void %224(ptr noundef nonnull align 8 dereferenceable(224) %221, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %225 unwind label %334

225:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #5
  invoke void @_ZN5sc_dtcoERKNS_11sc_unsignedE(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %226 unwind label %338

226:                                              ; preds = %225
  %227 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %228 unwind label %342

228:                                              ; preds = %226
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #5
  %229 = load i64, ptr %9, align 8, !tbaa !56
  %230 = xor i64 %229, -1
  %231 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSEl(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %230)
          to label %232 unwind label %98

232:                                              ; preds = %228
  %233 = load i8, ptr %15, align 1, !tbaa !49
  %234 = sext i8 %233 to i32
  %235 = xor i32 %234, -1
  %236 = sext i32 %235 to i64
  store i64 %236, ptr %10, align 8, !tbaa !56
  %237 = load i16, ptr %13, align 2, !tbaa !59
  %238 = sext i16 %237 to i32
  %239 = xor i32 %238, -1
  store i32 %239, ptr %12, align 4, !tbaa !48
  %240 = load i32, ptr %11, align 4, !tbaa !48
  %241 = xor i32 %240, -1
  %242 = trunc i32 %241 to i16
  store i16 %242, ptr %14, align 2, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #5
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEEixEi(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_bitref") align 8 %29, ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef 0)
          to label %243 unwind label %347

243:                                              ; preds = %232
  %244 = invoke noundef zeroext i1 @_ZNK5sc_dt11sc_bitref_rINS_10sc_bv_baseEE7to_boolEv(ptr noundef nonnull align 8 dereferenceable(12) %29)
          to label %245 unwind label %347

245:                                              ; preds = %243
  %246 = zext i1 %244 to i32
  %247 = xor i32 %246, -1
  %248 = trunc i32 %247 to i8
  store i8 %248, ptr %16, align 1, !tbaa !49
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #5
  %249 = load i8, ptr %17, align 1, !tbaa !43, !range !44, !noundef !45
  %250 = trunc i8 %249 to i1
  %251 = xor i1 %250, true
  %252 = zext i1 %251 to i8
  store i8 %252, ptr %18, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #5
  invoke void @_ZNK5sc_dt8sc_proxyINS_10sc_lv_baseEEcoEv(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_lv_base") align 8 %30, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %253 unwind label %351

253:                                              ; preds = %245
  %254 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSINS_10sc_lv_baseEEERS1_RKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %255 unwind label %355

255:                                              ; preds = %253
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #5
  invoke void @_ZNK5sc_dt8sc_proxyINS_10sc_lv_baseEEcoEv(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_lv_base") align 8 %31, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %256 unwind label %360

256:                                              ; preds = %255
  %257 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt5sc_lvILi4EEaSINS_10sc_lv_baseEEERS1_RKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %258 unwind label %364

258:                                              ; preds = %256
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #5
  %259 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 15
  %260 = load ptr, ptr %259, align 8, !tbaa !66
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %261 unwind label %369

261:                                              ; preds = %258
  %262 = load ptr, ptr %260, align 8, !tbaa !41
  %263 = getelementptr inbounds ptr, ptr %262, i64 9
  %264 = load ptr, ptr %263, align 8
  invoke void %264(ptr noundef nonnull align 8 dereferenceable(232) %260, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %265 unwind label %373

265:                                              ; preds = %261
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #5
  %266 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 16
  %267 = load ptr, ptr %266, align 8, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %268 unwind label %378

268:                                              ; preds = %265
  %269 = load ptr, ptr %267, align 8, !tbaa !41
  %270 = getelementptr inbounds ptr, ptr %269, i64 9
  %271 = load ptr, ptr %270, align 8
  invoke void %271(ptr noundef nonnull align 8 dereferenceable(232) %267, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %272 unwind label %382

272:                                              ; preds = %268
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #5
  %273 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 17
  %274 = load ptr, ptr %273, align 8, !tbaa !68
  %275 = load ptr, ptr %274, align 8, !tbaa !41
  %276 = getelementptr inbounds ptr, ptr %275, i64 9
  %277 = load ptr, ptr %276, align 8
  invoke void %277(ptr noundef nonnull align 8 dereferenceable(200) %274, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %278 unwind label %98

278:                                              ; preds = %272
  %279 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 18
  %280 = load ptr, ptr %279, align 8, !tbaa !69
  %281 = load ptr, ptr %280, align 8, !tbaa !41
  %282 = getelementptr inbounds ptr, ptr %281, i64 9
  %283 = load ptr, ptr %282, align 8
  invoke void %283(ptr noundef nonnull align 8 dereferenceable(196) %280, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %284 unwind label %98

284:                                              ; preds = %278
  %285 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 19
  %286 = load ptr, ptr %285, align 8, !tbaa !70
  %287 = load ptr, ptr %286, align 8, !tbaa !41
  %288 = getelementptr inbounds ptr, ptr %287, i64 9
  %289 = load ptr, ptr %288, align 8
  invoke void %289(ptr noundef nonnull align 8 dereferenceable(194) %286, ptr noundef nonnull align 2 dereferenceable(2) %14)
          to label %290 unwind label %98

290:                                              ; preds = %284
  %291 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 20
  %292 = load ptr, ptr %291, align 8, !tbaa !71
  %293 = load ptr, ptr %292, align 8, !tbaa !41
  %294 = getelementptr inbounds ptr, ptr %293, i64 9
  %295 = load ptr, ptr %294, align 8
  invoke void %295(ptr noundef nonnull align 8 dereferenceable(193) %292, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %296 unwind label %98

296:                                              ; preds = %290
  %297 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 21
  %298 = load ptr, ptr %297, align 8, !tbaa !72
  %299 = load ptr, ptr %298, align 8, !tbaa !41
  %300 = getelementptr inbounds ptr, ptr %299, i64 14
  %301 = load ptr, ptr %300, align 8
  invoke void %301(ptr noundef nonnull align 8 dereferenceable(224) %298, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %302 unwind label %98

302:                                              ; preds = %296
  %303 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 22
  %304 = load ptr, ptr %303, align 8, !tbaa !73
  %305 = load ptr, ptr %304, 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) %304, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %308 unwind label %98

308:                                              ; preds = %302
  %309 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 23
  %310 = load ptr, ptr %309, align 8, !tbaa !74
  %311 = load ptr, ptr %310, align 8, !tbaa !41
  %312 = getelementptr inbounds ptr, ptr %311, i64 9
  %313 = load ptr, ptr %312, align 8
  invoke void %313(ptr noundef nonnull align 8 dereferenceable(248) %310, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %314 unwind label %98

314:                                              ; preds = %308
  %315 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 24
  %316 = load ptr, ptr %315, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #5
  store i8 1, ptr %34, align 1, !tbaa !43
  %317 = load ptr, ptr %316, align 8, !tbaa !41
  %318 = getelementptr inbounds ptr, ptr %317, i64 14
  %319 = load ptr, ptr %318, align 8
  invoke void %319(ptr noundef nonnull align 8 dereferenceable(224) %316, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %320 unwind label %387

320:                                              ; preds = %314
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %37)
          to label %321 unwind label %98

321:                                              ; preds = %320
  %322 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 14
  %323 = load ptr, ptr %322, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #5
  store i8 0, ptr %35, align 1, !tbaa !43
  %324 = load ptr, ptr %323, align 8, !tbaa !41
  %325 = getelementptr inbounds ptr, ptr %324, i64 14
  %326 = load ptr, ptr %325, align 8
  invoke void %326(ptr noundef nonnull align 8 dereferenceable(224) %323, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %327 unwind label %391

327:                                              ; preds = %321
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #5
  %328 = getelementptr inbounds %struct.datatypes, ptr %37, i32 0, i32 24
  %329 = load ptr, ptr %328, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #5
  store i8 0, ptr %36, align 1, !tbaa !43
  %330 = load ptr, ptr %329, align 8, !tbaa !41
  %331 = getelementptr inbounds ptr, ptr %330, i64 14
  %332 = load ptr, ptr %331, align 8
  invoke void %332(ptr noundef nonnull align 8 dereferenceable(224) %329, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %333 unwind label %395

333:                                              ; preds = %327
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  br label %116, !llvm.loop !75

334:                                              ; preds = %219
  %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
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  br label %399

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

342:                                              ; preds = %226
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %5, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %6, align 4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #5
  br label %346

346:                                              ; preds = %342, %338
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #5
  br label %399

347:                                              ; preds = %243, %232
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %5, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #5
  br label %399

351:                                              ; preds = %245
  %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 = %253
  %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_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  br label %359

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

360:                                              ; preds = %255
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %5, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %6, align 4
  br label %368

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

368:                                              ; preds = %364, %360
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #5
  br label %399

369:                                              ; preds = %258
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %5, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %6, align 4
  br label %377

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

377:                                              ; preds = %373, %369
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #5
  br label %399

378:                                              ; preds = %265
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %5, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %6, align 4
  br label %386

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

386:                                              ; preds = %382, %378
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #5
  br label %399

387:                                              ; preds = %314
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %5, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #5
  br label %399

391:                                              ; preds = %321
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %5, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #5
  br label %399

395:                                              ; preds = %327
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %5, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  br label %399

399:                                              ; preds = %395, %391, %387, %386, %377, %368, %359, %347, %346, %334, %106, %102, %98
  call void @llvm.lifetime.end.p0(i64 2, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #5
  br label %400

400:                                              ; preds = %399, %94
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  br label %401

401:                                              ; preds = %400, %90
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #5
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  br label %402

402:                                              ; preds = %401, %86
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #5
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  br label %403

403:                                              ; preds = %402, %82
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #5
  br label %404

404:                                              ; preds = %403, %78
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #5
  br label %405

405:                                              ; preds = %404, %74
  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 %406

406:                                              ; preds = %405, %70
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #5
  br label %407

407:                                              ; preds = %406
  %408 = load ptr, ptr %5, align 8
  %409 = load i32, ptr %6, align 4
  %410 = insertvalue { ptr, i32 } poison, ptr %408, 0
  %411 = insertvalue { ptr, i32 } %410, i32 %409, 1
  resume { ptr, i32 } %411
}

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5sc_dt11sc_bitref_rINS_10sc_bv_baseEE7to_boolEv(ptr noundef nonnull align 8 dereferenceable(12)) #0 align 2

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

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

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

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

; Function Attrs: mustprogress 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_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_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 416}
!10 = !{!"_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, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !6, i64 536, !6, i64 544, !6, i64 552, !6, i64 560, !6, i64 568, !6, i64 576, !6, i64 584, !6, i64 592}
!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 592}
!47 = !{!10, !6, i64 512}
!48 = !{!32, !32, i64 0}
!49 = !{!7, !7, i64 0}
!50 = !{!10, !6, i64 504}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}
!53 = !{!10, !6, i64 424}
!54 = !{!10, !6, i64 432}
!55 = !{!10, !6, i64 440}
!56 = !{!23, !23, i64 0}
!57 = !{!10, !6, i64 448}
!58 = !{!10, !6, i64 456}
!59 = !{!60, !60, i64 0}
!60 = !{!"short", !7, i64 0}
!61 = !{!10, !6, i64 464}
!62 = !{!10, !6, i64 472}
!63 = !{!10, !6, i64 480}
!64 = !{!10, !6, i64 488}
!65 = !{!10, !6, i64 496}
!66 = !{!10, !6, i64 520}
!67 = !{!10, !6, i64 528}
!68 = !{!10, !6, i64 536}
!69 = !{!10, !6, i64 544}
!70 = !{!10, !6, i64 552}
!71 = !{!10, !6, i64 560}
!72 = !{!10, !6, i64 568}
!73 = !{!10, !6, i64 576}
!74 = !{!10, !6, i64 584}
!75 = distinct !{!75, !52}


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

%"class.sc_dt::sc_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_lv" = type { %"class.sc_dt::sc_lv_base" }
%"class.sc_dt::sc_lv_base" = type { %"class.sc_dt::sc_proxy.0", i32, i32, ptr, ptr }
%"class.sc_dt::sc_proxy.0" = type { ptr }
%"class.sc_dt::sc_bitref" = type { %"class.sc_dt::sc_bitref_r.base", [4 x i8] }
%"class.sc_dt::sc_bitref_r.base" = type <{ ptr, i32 }>
%"class.sc_dt::sc_bv.18" = type { %"class.sc_dt::sc_bv_base" }

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

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

28:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  invoke void @_ZN5sc_dt10sc_biguintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %29 unwind label %60

29:                                               ; preds = %28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %30 unwind label %62

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

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

32:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  invoke void @_ZN5sc_dt5sc_lvILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %33 unwind label %68

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

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

43:                                               ; preds = %40
  %44 = getelementptr inbounds i8, ptr %0, i64 592
  %45 = load ptr, ptr %44, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  store i8 0, ptr %15, align 1, !tbaa !42
  %46 = load ptr, ptr %45, align 8, !tbaa !40
  %47 = getelementptr inbounds i8, ptr %46, i64 112
  %48 = load ptr, ptr %47, align 8
  invoke void %48(ptr noundef nonnull align 8 dereferenceable(224) %45, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %49 unwind label %70

49:                                               ; preds = %43
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  %50 = getelementptr inbounds i8, ptr %0, i64 512
  %51 = load ptr, ptr %50, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #6
  store i8 0, ptr %16, align 1, !tbaa !42
  %52 = load ptr, ptr %51, align 8, !tbaa !40
  %53 = getelementptr inbounds i8, ptr %52, i64 112
  %54 = load ptr, ptr %53, align 8
  invoke void %54(ptr noundef nonnull align 8 dereferenceable(224) %51, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %55 unwind label %72

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

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

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

60:                                               ; preds = %28
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %312

62:                                               ; preds = %29
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %311

64:                                               ; preds = %30
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %310

66:                                               ; preds = %31
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %309

68:                                               ; preds = %32
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %308

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

.loopexit.split-lp.loopexit:                      ; preds = %261, %251, %246, %241, %236, %231, %226, %221, %188, %178, %172, %170, %163, %157, %150, %143, %136, %129, %123, %121, %115, %113, %107
  %lpad.loopexit40 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

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

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

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

74:                                               ; preds = %.invoke
  %75 = getelementptr inbounds i8, ptr %0, i64 504
  %76 = getelementptr inbounds i8, ptr %0, i64 424
  %77 = getelementptr inbounds i8, ptr %0, i64 432
  %78 = getelementptr inbounds i8, ptr %0, i64 440
  %79 = getelementptr inbounds i8, ptr %0, i64 448
  %80 = getelementptr inbounds i8, ptr %0, i64 456
  %81 = getelementptr inbounds i8, ptr %0, i64 464
  %82 = getelementptr inbounds i8, ptr %0, i64 472
  %83 = getelementptr inbounds i8, ptr %0, i64 480
  %84 = getelementptr inbounds i8, ptr %0, i64 488
  %85 = getelementptr inbounds i8, ptr %0, i64 496
  %86 = getelementptr inbounds i8, ptr %0, i64 512
  %87 = getelementptr inbounds i8, ptr %0, i64 520
  %88 = getelementptr inbounds i8, ptr %0, i64 528
  %89 = getelementptr inbounds i8, ptr %0, i64 536
  %90 = getelementptr inbounds i8, ptr %0, i64 544
  %91 = getelementptr inbounds i8, ptr %0, i64 552
  %92 = getelementptr inbounds i8, ptr %0, i64 560
  %93 = getelementptr inbounds i8, ptr %0, i64 568
  %94 = getelementptr inbounds i8, ptr %0, i64 576
  %95 = getelementptr inbounds i8, ptr %0, i64 584
  %96 = getelementptr inbounds i8, ptr %0, i64 592
  br label %97

97:                                               ; preds = %.backedge, %74
  %98 = load ptr, ptr %75, align 8, !tbaa !47
  %99 = load ptr, ptr %98, align 8, !tbaa !40
  %100 = getelementptr inbounds i8, ptr %99, i64 56
  %101 = load ptr, ptr %100, align 8
  %102 = invoke noundef nonnull align 1 dereferenceable(1) ptr %101(ptr noundef nonnull align 8 dereferenceable(224) %98)
          to label %103 unwind label %.loopexit

103:                                              ; preds = %97
  %104 = load i8, ptr %102, align 1, !tbaa !42, !range !43, !noundef !44
  %105 = icmp eq i8 %104, 0
  br i1 %105, label %106, label %107

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

.backedge:                                        ; preds = %106, %272
  br label %97, !llvm.loop !48

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

113:                                              ; preds = %107
  %114 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(24) %112)
          to label %115 unwind label %.loopexit.split-lp.loopexit

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

121:                                              ; preds = %115
  %122 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %120)
          to label %123 unwind label %.loopexit.split-lp.loopexit

123:                                              ; preds = %121
  %124 = load ptr, ptr %78, align 8, !tbaa !52
  %125 = load ptr, ptr %124, align 8, !tbaa !40
  %126 = getelementptr inbounds i8, ptr %125, i64 40
  %127 = load ptr, ptr %126, align 8
  %128 = invoke noundef nonnull align 8 dereferenceable(8) ptr %127(ptr noundef nonnull align 8 dereferenceable(200) %124)
          to label %129 unwind label %.loopexit.split-lp.loopexit

129:                                              ; preds = %123
  %130 = load i64, ptr %128, align 8, !tbaa !53
  %131 = load ptr, ptr %79, align 8, !tbaa !54
  %132 = load ptr, ptr %131, align 8, !tbaa !40
  %133 = getelementptr inbounds i8, ptr %132, i64 40
  %134 = load ptr, ptr %133, align 8
  %135 = invoke noundef nonnull align 4 dereferenceable(4) ptr %134(ptr noundef nonnull align 8 dereferenceable(196) %131)
          to label %136 unwind label %.loopexit.split-lp.loopexit

136:                                              ; preds = %129
  %137 = load i32, ptr %135, align 4, !tbaa !55
  %138 = load ptr, ptr %80, align 8, !tbaa !56
  %139 = load ptr, ptr %138, align 8, !tbaa !40
  %140 = getelementptr inbounds i8, ptr %139, i64 40
  %141 = load ptr, ptr %140, align 8
  %142 = invoke noundef nonnull align 2 dereferenceable(2) ptr %141(ptr noundef nonnull align 8 dereferenceable(194) %138)
          to label %143 unwind label %.loopexit.split-lp.loopexit

143:                                              ; preds = %136
  %144 = load i16, ptr %142, align 2, !tbaa !57
  %145 = load ptr, ptr %81, align 8, !tbaa !59
  %146 = load ptr, ptr %145, align 8, !tbaa !40
  %147 = getelementptr inbounds i8, ptr %146, i64 40
  %148 = load ptr, ptr %147, align 8
  %149 = invoke noundef nonnull align 1 dereferenceable(1) ptr %148(ptr noundef nonnull align 8 dereferenceable(193) %145)
          to label %150 unwind label %.loopexit.split-lp.loopexit

150:                                              ; preds = %143
  %151 = load i8, ptr %149, align 1, !tbaa !60
  %152 = load ptr, ptr %82, align 8, !tbaa !61
  %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 1 dereferenceable(1) ptr %155(ptr noundef nonnull align 8 dereferenceable(193) %152)
          to label %157 unwind label %.loopexit.split-lp.loopexit

157:                                              ; preds = %150
  %158 = load ptr, ptr %83, align 8, !tbaa !62
  %159 = load ptr, ptr %158, align 8, !tbaa !40
  %160 = getelementptr inbounds i8, ptr %159, i64 56
  %161 = load ptr, ptr %160, align 8
  %162 = invoke noundef nonnull align 1 dereferenceable(1) ptr %161(ptr noundef nonnull align 8 dereferenceable(224) %158)
          to label %163 unwind label %.loopexit.split-lp.loopexit

163:                                              ; preds = %157
  %164 = load i8, ptr %162, align 1, !tbaa !42, !range !43, !noundef !44
  %165 = load ptr, ptr %84, align 8, !tbaa !63
  %166 = load ptr, ptr %165, align 8, !tbaa !40
  %167 = getelementptr inbounds i8, ptr %166, i64 40
  %168 = load ptr, ptr %167, align 8
  %169 = invoke noundef nonnull align 8 dereferenceable(24) ptr %168(ptr noundef nonnull align 8 dereferenceable(232) %165)
          to label %170 unwind label %.loopexit.split-lp.loopexit

170:                                              ; preds = %163
  %171 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %169)
          to label %172 unwind label %.loopexit.split-lp.loopexit

172:                                              ; preds = %170
  %173 = load ptr, ptr %85, align 8, !tbaa !64
  %174 = load ptr, ptr %173, align 8, !tbaa !40
  %175 = getelementptr inbounds i8, ptr %174, i64 40
  %176 = load ptr, ptr %175, align 8
  %177 = invoke noundef nonnull align 8 dereferenceable(32) ptr %176(ptr noundef nonnull align 8 dereferenceable(248) %173)
          to label %178 unwind label %.loopexit.split-lp.loopexit

178:                                              ; preds = %172
  %179 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt5sc_lvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %177)
          to label %180 unwind label %.loopexit.split-lp.loopexit

180:                                              ; preds = %178
  %181 = load ptr, ptr %86, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #6
  store i8 1, ptr %17, align 1, !tbaa !42
  %182 = load ptr, ptr %181, align 8, !tbaa !40
  %183 = getelementptr inbounds i8, ptr %182, i64 112
  %184 = load ptr, ptr %183, align 8
  invoke void %184(ptr noundef nonnull align 8 dereferenceable(224) %181, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %185 unwind label %273

185:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #6
  invoke void @_ZN5sc_dtcoERKNS_11sc_unsignedE(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %186 unwind label %275

186:                                              ; preds = %185
  %187 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %188 unwind label %277

188:                                              ; preds = %186
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  %189 = xor i64 %130, -1
  %190 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSEl(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef %189)
          to label %191 unwind label %.loopexit.split-lp.loopexit

191:                                              ; preds = %188
  %192 = xor i8 %151, -1
  %193 = sext i8 %192 to i64
  store i64 %193, ptr %6, align 8, !tbaa !53
  %194 = xor i16 %144, -1
  %195 = sext i16 %194 to i32
  store i32 %195, ptr %7, align 4, !tbaa !55
  %196 = trunc i32 %137 to i16
  %197 = xor i16 %196, -1
  store i16 %197, ptr %8, align 2, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #6
  invoke void @_ZN5sc_dt8sc_proxyINS_10sc_bv_baseEEixEi(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_bitref") align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %11, i32 noundef 0)
          to label %198 unwind label %280

198:                                              ; preds = %191
  %199 = invoke noundef zeroext i1 @_ZNK5sc_dt11sc_bitref_rINS_10sc_bv_baseEE7to_boolEv(ptr noundef nonnull align 8 dereferenceable(12) %19)
          to label %200 unwind label %280

200:                                              ; preds = %198
  %201 = zext i1 %199 to i8
  %202 = xor i8 %201, -1
  store i8 %202, ptr %9, align 1, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #6
  %203 = xor i8 %164, 1
  store i8 %203, ptr %10, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  invoke void @_ZNK5sc_dt8sc_proxyINS_10sc_lv_baseEEcoEv(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_lv_base") align 8 %20, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %204 unwind label %282

204:                                              ; preds = %200
  %205 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSINS_10sc_lv_baseEEERS1_RKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %206 unwind label %284

206:                                              ; preds = %204
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  invoke void @_ZNK5sc_dt8sc_proxyINS_10sc_lv_baseEEcoEv(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_lv_base") align 8 %21, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %207 unwind label %287

207:                                              ; preds = %206
  %208 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt5sc_lvILi4EEaSINS_10sc_lv_baseEEERS1_RKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %209 unwind label %289

209:                                              ; preds = %207
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  %210 = load ptr, ptr %87, align 8, !tbaa !65
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %211 unwind label %292

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

215:                                              ; preds = %211
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  %216 = load ptr, ptr %88, align 8, !tbaa !66
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #6
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %217 unwind label %297

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

221:                                              ; preds = %217
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  %222 = load ptr, ptr %89, align 8, !tbaa !67
  %223 = load ptr, ptr %222, align 8, !tbaa !40
  %224 = getelementptr inbounds i8, ptr %223, i64 72
  %225 = load ptr, ptr %224, align 8
  invoke void %225(ptr noundef nonnull align 8 dereferenceable(200) %222, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %226 unwind label %.loopexit.split-lp.loopexit

226:                                              ; preds = %221
  %227 = load ptr, ptr %90, align 8, !tbaa !68
  %228 = load ptr, ptr %227, align 8, !tbaa !40
  %229 = getelementptr inbounds i8, ptr %228, i64 72
  %230 = load ptr, ptr %229, align 8
  invoke void %230(ptr noundef nonnull align 8 dereferenceable(196) %227, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %231 unwind label %.loopexit.split-lp.loopexit

231:                                              ; preds = %226
  %232 = load ptr, ptr %91, align 8, !tbaa !69
  %233 = load ptr, ptr %232, align 8, !tbaa !40
  %234 = getelementptr inbounds i8, ptr %233, i64 72
  %235 = load ptr, ptr %234, align 8
  invoke void %235(ptr noundef nonnull align 8 dereferenceable(194) %232, ptr noundef nonnull align 2 dereferenceable(2) %8)
          to label %236 unwind label %.loopexit.split-lp.loopexit

236:                                              ; preds = %231
  %237 = load ptr, ptr %92, align 8, !tbaa !70
  %238 = load ptr, ptr %237, align 8, !tbaa !40
  %239 = getelementptr inbounds i8, ptr %238, i64 72
  %240 = load ptr, ptr %239, align 8
  invoke void %240(ptr noundef nonnull align 8 dereferenceable(193) %237, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %241 unwind label %.loopexit.split-lp.loopexit

241:                                              ; preds = %236
  %242 = load ptr, ptr %93, align 8, !tbaa !71
  %243 = load ptr, ptr %242, align 8, !tbaa !40
  %244 = getelementptr inbounds i8, ptr %243, i64 112
  %245 = load ptr, ptr %244, align 8
  invoke void %245(ptr noundef nonnull align 8 dereferenceable(224) %242, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %246 unwind label %.loopexit.split-lp.loopexit

246:                                              ; preds = %241
  %247 = load ptr, ptr %94, align 8, !tbaa !72
  %248 = load ptr, ptr %247, align 8, !tbaa !40
  %249 = getelementptr inbounds i8, ptr %248, i64 72
  %250 = load ptr, ptr %249, align 8
  invoke void %250(ptr noundef nonnull align 8 dereferenceable(232) %247, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %251 unwind label %.loopexit.split-lp.loopexit

251:                                              ; preds = %246
  %252 = load ptr, ptr %95, align 8, !tbaa !73
  %253 = load ptr, ptr %252, 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(248) %252, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %256 unwind label %.loopexit.split-lp.loopexit

256:                                              ; preds = %251
  %257 = load ptr, ptr %96, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  store i8 1, ptr %24, align 1, !tbaa !42
  %258 = load ptr, ptr %257, align 8, !tbaa !40
  %259 = getelementptr inbounds i8, ptr %258, i64 112
  %260 = load ptr, ptr %259, align 8
  invoke void %260(ptr noundef nonnull align 8 dereferenceable(224) %257, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %261 unwind label %302

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

262:                                              ; preds = %261
  %263 = load ptr, ptr %86, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  store i8 0, ptr %25, align 1, !tbaa !42
  %264 = load ptr, ptr %263, align 8, !tbaa !40
  %265 = getelementptr inbounds i8, ptr %264, i64 112
  %266 = load ptr, ptr %265, align 8
  invoke void %266(ptr noundef nonnull align 8 dereferenceable(224) %263, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %267 unwind label %304

267:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  %268 = load ptr, ptr %96, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #6
  store i8 0, ptr %26, align 1, !tbaa !42
  %269 = load ptr, ptr %268, align 8, !tbaa !40
  %270 = getelementptr inbounds i8, ptr %269, i64 112
  %271 = load ptr, ptr %270, align 8
  invoke void %271(ptr noundef nonnull align 8 dereferenceable(224) %268, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %272 unwind label %306

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

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

275:                                              ; preds = %185
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %279

277:                                              ; preds = %186
  %278 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %279

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

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

282:                                              ; preds = %200
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %286

284:                                              ; preds = %204
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %286

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

287:                                              ; preds = %206
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %291

289:                                              ; preds = %207
  %290 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %291

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

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

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

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

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

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

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

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

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

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %306, %304, %302, %301, %296, %291, %286, %280, %279, %273, %72, %70
  %.pn31 = phi { ptr, i32 } [ %307, %306 ], [ %305, %304 ], [ %303, %302 ], [ %.pn29, %301 ], [ %.pn27, %296 ], [ %.pn25, %291 ], [ %.pn23, %286 ], [ %281, %280 ], [ %.pn, %279 ], [ %274, %273 ], [ %73, %72 ], [ %71, %70 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit40, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp41, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %308

308:                                              ; preds = %.loopexit.split-lp, %68
  %.pn31.pn = phi { ptr, i32 } [ %.pn31, %.loopexit.split-lp ], [ %69, %68 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %309

309:                                              ; preds = %308, %66
  %.pn31.pn.pn = phi { ptr, i32 } [ %.pn31.pn, %308 ], [ %67, %66 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  br label %310

310:                                              ; preds = %309, %64
  %.pn31.pn.pn.pn = phi { ptr, i32 } [ %.pn31.pn.pn, %309 ], [ %65, %64 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  br label %311

311:                                              ; preds = %310, %62
  %.pn31.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn31.pn.pn.pn, %310 ], [ %63, %62 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %312

312:                                              ; preds = %311, %60
  %.pn31.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn31.pn.pn.pn.pn, %311 ], [ %61, %60 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  br label %313

313:                                              ; preds = %312, %58
  %.pn31.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn31.pn.pn.pn.pn.pn, %312 ], [ %59, %58 ]
  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 %314

314:                                              ; preds = %313, %56
  %.pn31.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn31.pn.pn.pn.pn.pn.pn, %313 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  resume { ptr, i32 } %.pn31.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5sc_dt11sc_bitref_rINS_10sc_bv_baseEE7to_boolEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress 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_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_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !9, i64 416}
!6 = !{!"_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, !9, i64 504, !9, i64 512, !9, i64 520, !9, i64 528, !9, i64 536, !9, i64 544, !9, i64 552, !9, i64 560, !9, i64 568, !9, i64 576, !9, i64 584, !9, i64 592}
!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 592}
!46 = !{!6, !9, i64 512}
!47 = !{!6, !9, i64 504}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!6, !9, i64 424}
!51 = !{!6, !9, i64 432}
!52 = !{!6, !9, i64 440}
!53 = !{!22, !22, i64 0}
!54 = !{!6, !9, i64 448}
!55 = !{!31, !31, i64 0}
!56 = !{!6, !9, i64 456}
!57 = !{!58, !58, i64 0}
!58 = !{!"short", !10, i64 0}
!59 = !{!6, !9, i64 464}
!60 = !{!10, !10, i64 0}
!61 = !{!6, !9, i64 472}
!62 = !{!6, !9, i64 480}
!63 = !{!6, !9, i64 488}
!64 = !{!6, !9, i64 496}
!65 = !{!6, !9, i64 520}
!66 = !{!6, !9, i64 528}
!67 = !{!6, !9, i64 536}
!68 = !{!6, !9, i64 544}
!69 = !{!6, !9, i64 552}
!70 = !{!6, !9, i64 560}
!71 = !{!6, !9, i64 568}
!72 = !{!6, !9, i64 576}
!73 = !{!6, !9, i64 584}


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