; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/bitwise/or/datatypes/datatyp_aa8a7056 (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 }
%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 }
%"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.0", %"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.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.8" }
%"class.sc_core::sc_port_base" = type { %"class.sc_core::sc_object", ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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(552) %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 [2 x i32], align 4
  %18 = alloca [2 x i8], align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca %"class.sc_dt::sc_signed", align 8
  %23 = alloca %"class.sc_dt::sc_bv", align 8
  %24 = alloca %"class.sc_dt::sc_bv", align 8
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %28 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %3) #4
  call void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #4
  invoke void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %29 unwind label %57

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

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

31:                                               ; preds = %30
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr %18) #4
  %32 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 2
  %33 = load ptr, ptr %32, align 8, !tbaa !9
  %34 = load ptr, ptr %33, align 8, !tbaa !41
  %35 = getelementptr inbounds ptr, ptr %34, i64 7
  %36 = load ptr, ptr %35, align 8
  %37 = invoke noundef nonnull align 1 dereferenceable(1) ptr %36(ptr noundef nonnull align 8 dereferenceable(224) %33)
          to label %38 unwind label %69

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

43:                                               ; preds = %38
  %44 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 18
  %45 = load ptr, ptr %44, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #4
  store i8 0, ptr %19, align 1, !tbaa !43
  %46 = load ptr, ptr %45, align 8, !tbaa !41
  %47 = getelementptr inbounds ptr, ptr %46, i64 14
  %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) %19)
          to label %49 unwind label %73

49:                                               ; preds = %43
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #4
  %50 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 11
  %51 = load ptr, ptr %50, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #4
  store i8 0, ptr %20, align 1, !tbaa !43
  %52 = load ptr, ptr %51, align 8, !tbaa !41
  %53 = getelementptr inbounds ptr, ptr %52, i64 14
  %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) %20)
          to label %55 unwind label %77

55:                                               ; preds = %49
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %56 unwind label %69

56:                                               ; preds = %55
  br label %83

57:                                               ; preds = %1
  %58 = landingpad { ptr, i32 }
          cleanup
  %59 = extractvalue { ptr, i32 } %58, 0
  store ptr %59, ptr %5, align 8
  %60 = extractvalue { ptr, i32 } %58, 1
  store i32 %60, ptr %6, align 4
  br label %301

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

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

69:                                               ; preds = %241, %229, %223, %217, %211, %171, %152, %144, %136, %128, %121, %119, %112, %110, %103, %101, %89, %81, %55, %31
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %5, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %6, align 4
  br label %298

73:                                               ; preds = %43
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %5, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #4
  br label %298

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

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

82:                                               ; preds = %81
  br label %83

83:                                               ; preds = %82, %56
  %84 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 0
  store i32 12, ptr %84, align 4, !tbaa !48
  %85 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 1
  store i32 0, ptr %85, align 4, !tbaa !48
  %86 = getelementptr inbounds [2 x i8], ptr %18, i64 0, i64 1
  store i8 71, ptr %86, align 1, !tbaa !49
  br label %87

87:                                               ; preds = %254, %83
  br label %88

88:                                               ; preds = %87
  br label %89

89:                                               ; preds = %102, %88
  %90 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 10
  %91 = load ptr, ptr %90, align 8, !tbaa !50
  %92 = load ptr, ptr %91, align 8, !tbaa !41
  %93 = getelementptr inbounds ptr, ptr %92, i64 7
  %94 = load ptr, ptr %93, align 8
  %95 = invoke noundef nonnull align 1 dereferenceable(1) ptr %94(ptr noundef nonnull align 8 dereferenceable(224) %91)
          to label %96 unwind label %69

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

101:                                              ; preds = %96
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %102 unwind label %69

102:                                              ; preds = %101
  br label %89, !llvm.loop !51

103:                                              ; preds = %96
  %104 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 3
  %105 = load ptr, ptr %104, align 8, !tbaa !53
  %106 = load ptr, ptr %105, align 8, !tbaa !41
  %107 = getelementptr inbounds ptr, ptr %106, i64 5
  %108 = load ptr, ptr %107, align 8
  %109 = invoke noundef nonnull align 8 dereferenceable(24) ptr %108(ptr noundef nonnull align 8 dereferenceable(232) %105)
          to label %110 unwind label %69

110:                                              ; preds = %103
  %111 = 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) %109)
          to label %112 unwind label %69

112:                                              ; preds = %110
  %113 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 4
  %114 = load ptr, ptr %113, align 8, !tbaa !54
  %115 = load ptr, ptr %114, align 8, !tbaa !41
  %116 = getelementptr inbounds ptr, ptr %115, i64 5
  %117 = load ptr, ptr %116, align 8
  %118 = invoke noundef nonnull align 8 dereferenceable(24) ptr %117(ptr noundef nonnull align 8 dereferenceable(232) %114)
          to label %119 unwind label %69

119:                                              ; preds = %112
  %120 = 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) %118)
          to label %121 unwind label %69

121:                                              ; preds = %119
  %122 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 5
  %123 = load ptr, ptr %122, align 8, !tbaa !55
  %124 = load ptr, ptr %123, align 8, !tbaa !41
  %125 = getelementptr inbounds ptr, ptr %124, i64 5
  %126 = load ptr, ptr %125, align 8
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr %126(ptr noundef nonnull align 8 dereferenceable(200) %123)
          to label %128 unwind label %69

128:                                              ; preds = %121
  %129 = load i64, ptr %127, align 8, !tbaa !56
  store i64 %129, ptr %9, align 8, !tbaa !56
  %130 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 6
  %131 = load ptr, ptr %130, align 8, !tbaa !57
  %132 = load ptr, ptr %131, align 8, !tbaa !41
  %133 = getelementptr inbounds ptr, ptr %132, i64 5
  %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 %69

136:                                              ; preds = %128
  %137 = load i32, ptr %135, align 4, !tbaa !48
  store i32 %137, ptr %11, align 4, !tbaa !48
  %138 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 7
  %139 = load ptr, ptr %138, align 8, !tbaa !58
  %140 = load ptr, ptr %139, align 8, !tbaa !41
  %141 = getelementptr inbounds ptr, ptr %140, i64 5
  %142 = load ptr, ptr %141, align 8
  %143 = invoke noundef nonnull align 2 dereferenceable(2) ptr %142(ptr noundef nonnull align 8 dereferenceable(194) %139)
          to label %144 unwind label %69

144:                                              ; preds = %136
  %145 = load i16, ptr %143, align 2, !tbaa !59
  store i16 %145, ptr %13, align 2, !tbaa !59
  %146 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 8
  %147 = load ptr, ptr %146, align 8, !tbaa !61
  %148 = load ptr, ptr %147, align 8, !tbaa !41
  %149 = getelementptr inbounds ptr, ptr %148, i64 5
  %150 = load ptr, ptr %149, align 8
  %151 = invoke noundef nonnull align 1 dereferenceable(1) ptr %150(ptr noundef nonnull align 8 dereferenceable(193) %147)
          to label %152 unwind label %69

152:                                              ; preds = %144
  %153 = load i8, ptr %151, align 1, !tbaa !49
  store i8 %153, ptr %15, align 1, !tbaa !49
  %154 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 9
  %155 = load ptr, ptr %154, align 8, !tbaa !62
  %156 = load ptr, ptr %155, align 8, !tbaa !41
  %157 = getelementptr inbounds ptr, ptr %156, i64 5
  %158 = load ptr, ptr %157, align 8
  %159 = invoke noundef nonnull align 1 dereferenceable(1) ptr %158(ptr noundef nonnull align 8 dereferenceable(193) %155)
          to label %160 unwind label %69

160:                                              ; preds = %152
  %161 = load i8, ptr %159, align 1, !tbaa !49
  %162 = getelementptr inbounds [2 x i8], ptr %18, i64 0, i64 0
  store i8 %161, ptr %162, align 1, !tbaa !49
  %163 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 11
  %164 = load ptr, ptr %163, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #4
  store i8 1, ptr %21, align 1, !tbaa !43
  %165 = load ptr, ptr %164, align 8, !tbaa !41
  %166 = getelementptr inbounds ptr, ptr %165, i64 14
  %167 = load ptr, ptr %166, align 8
  invoke void %167(ptr noundef nonnull align 8 dereferenceable(224) %164, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %168 unwind label %255

168:                                              ; preds = %160
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #4
  invoke void @_ZN5sc_dtorERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_signed") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %169 unwind label %259

169:                                              ; preds = %168
  %170 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %171 unwind label %263

171:                                              ; preds = %169
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #4
  %172 = load i8, ptr %15, align 1, !tbaa !49
  %173 = sext i8 %172 to i64
  %174 = load i64, ptr %9, align 8, !tbaa !56
  %175 = or i64 %173, %174
  %176 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSEl(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %175)
          to label %177 unwind label %69

177:                                              ; preds = %171
  %178 = load i32, ptr %11, align 4, !tbaa !48
  %179 = load i8, ptr %15, align 1, !tbaa !49
  %180 = sext i8 %179 to i32
  %181 = or i32 %178, %180
  %182 = sext i32 %181 to i64
  store i64 %182, ptr %10, align 8, !tbaa !56
  %183 = load i32, ptr %11, align 4, !tbaa !48
  %184 = load i16, ptr %13, align 2, !tbaa !59
  %185 = sext i16 %184 to i32
  %186 = or i32 %183, %185
  store i32 %186, ptr %12, align 4, !tbaa !48
  %187 = load i16, ptr %13, align 2, !tbaa !59
  %188 = sext i16 %187 to i32
  %189 = or i32 %188, 5
  %190 = trunc i32 %189 to i16
  store i16 %190, ptr %14, align 2, !tbaa !59
  %191 = getelementptr inbounds [2 x i8], ptr %18, i64 0, i64 0
  %192 = load i8, ptr %191, align 1, !tbaa !49
  %193 = sext i8 %192 to i32
  %194 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 1
  %195 = load i32, ptr %194, align 4, !tbaa !48
  %196 = or i32 %193, %195
  %197 = trunc i32 %196 to i8
  store i8 %197, ptr %16, align 1, !tbaa !49
  %198 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 12
  %199 = load ptr, ptr %198, align 8, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #4
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %200 unwind label %268

200:                                              ; preds = %177
  %201 = load ptr, ptr %199, align 8, !tbaa !41
  %202 = getelementptr inbounds ptr, ptr %201, i64 9
  %203 = load ptr, ptr %202, align 8
  invoke void %203(ptr noundef nonnull align 8 dereferenceable(232) %199, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %204 unwind label %272

204:                                              ; preds = %200
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #4
  %205 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 13
  %206 = load ptr, ptr %205, align 8, !tbaa !64
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #4
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %207 unwind label %277

207:                                              ; preds = %204
  %208 = load ptr, ptr %206, align 8, !tbaa !41
  %209 = getelementptr inbounds ptr, ptr %208, i64 9
  %210 = load ptr, ptr %209, align 8
  invoke void %210(ptr noundef nonnull align 8 dereferenceable(232) %206, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %211 unwind label %281

211:                                              ; preds = %207
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #4
  %212 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 14
  %213 = load ptr, ptr %212, align 8, !tbaa !65
  %214 = load ptr, ptr %213, align 8, !tbaa !41
  %215 = getelementptr inbounds ptr, ptr %214, i64 9
  %216 = load ptr, ptr %215, align 8
  invoke void %216(ptr noundef nonnull align 8 dereferenceable(200) %213, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %217 unwind label %69

217:                                              ; preds = %211
  %218 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 15
  %219 = load ptr, ptr %218, align 8, !tbaa !66
  %220 = load ptr, ptr %219, align 8, !tbaa !41
  %221 = getelementptr inbounds ptr, ptr %220, i64 9
  %222 = load ptr, ptr %221, align 8
  invoke void %222(ptr noundef nonnull align 8 dereferenceable(196) %219, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %223 unwind label %69

223:                                              ; preds = %217
  %224 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 16
  %225 = load ptr, ptr %224, align 8, !tbaa !67
  %226 = load ptr, ptr %225, align 8, !tbaa !41
  %227 = getelementptr inbounds ptr, ptr %226, i64 9
  %228 = load ptr, ptr %227, align 8
  invoke void %228(ptr noundef nonnull align 8 dereferenceable(194) %225, ptr noundef nonnull align 2 dereferenceable(2) %14)
          to label %229 unwind label %69

229:                                              ; preds = %223
  %230 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 17
  %231 = load ptr, ptr %230, align 8, !tbaa !68
  %232 = load ptr, ptr %231, align 8, !tbaa !41
  %233 = getelementptr inbounds ptr, ptr %232, i64 9
  %234 = load ptr, ptr %233, align 8
  invoke void %234(ptr noundef nonnull align 8 dereferenceable(193) %231, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %235 unwind label %69

235:                                              ; preds = %229
  %236 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 18
  %237 = load ptr, ptr %236, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #4
  store i8 1, ptr %25, align 1, !tbaa !43
  %238 = load ptr, ptr %237, align 8, !tbaa !41
  %239 = getelementptr inbounds ptr, ptr %238, i64 14
  %240 = load ptr, ptr %239, align 8
  invoke void %240(ptr noundef nonnull align 8 dereferenceable(224) %237, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %241 unwind label %286

241:                                              ; preds = %235
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %28)
          to label %242 unwind label %69

242:                                              ; preds = %241
  %243 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 11
  %244 = load ptr, ptr %243, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #4
  store i8 0, ptr %26, align 1, !tbaa !43
  %245 = load ptr, ptr %244, align 8, !tbaa !41
  %246 = getelementptr inbounds ptr, ptr %245, i64 14
  %247 = load ptr, ptr %246, align 8
  invoke void %247(ptr noundef nonnull align 8 dereferenceable(224) %244, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %248 unwind label %290

248:                                              ; preds = %242
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #4
  %249 = getelementptr inbounds %struct.datatypes, ptr %28, i32 0, i32 18
  %250 = load ptr, ptr %249, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #4
  store i8 0, ptr %27, align 1, !tbaa !43
  %251 = load ptr, ptr %250, align 8, !tbaa !41
  %252 = getelementptr inbounds ptr, ptr %251, i64 14
  %253 = load ptr, ptr %252, align 8
  invoke void %253(ptr noundef nonnull align 8 dereferenceable(224) %250, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %254 unwind label %294

254:                                              ; preds = %248
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #4
  br label %87, !llvm.loop !69

255:                                              ; preds = %160
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %5, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #4
  br label %298

259:                                              ; preds = %168
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %5, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %6, align 4
  br label %267

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

267:                                              ; preds = %263, %259
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #4
  br label %298

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

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

276:                                              ; preds = %272, %268
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #4
  br label %298

277:                                              ; preds = %204
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %5, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %6, align 4
  br label %285

281:                                              ; preds = %207
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %5, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #4
  br label %285

285:                                              ; preds = %281, %277
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #4
  br label %298

286:                                              ; preds = %235
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %5, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  br label %298

290:                                              ; preds = %242
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %5, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #4
  br label %298

294:                                              ; preds = %248
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %5, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #4
  br label %298

298:                                              ; preds = %294, %290, %286, %285, %276, %267, %255, %77, %73, %69
  call void @llvm.lifetime.end.p0(i64 2, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #4
  br label %299

299:                                              ; preds = %298, %65
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #4
  br label %300

300:                                              ; preds = %299, %61
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #4
  br label %301

301:                                              ; preds = %300, %57
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #4
  br label %302

302:                                              ; preds = %301
  %303 = load ptr, ptr %5, align 8
  %304 = load i32, ptr %6, align 4
  %305 = insertvalue { ptr, i32 } poison, ptr %303, 0
  %306 = insertvalue { ptr, i32 } %305, i32 %304, 1
  resume { ptr, i32 } %306
}

; 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: 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

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

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

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

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

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

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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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}
!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 544}
!47 = !{!10, !6, i64 488}
!48 = !{!32, !32, i64 0}
!49 = !{!7, !7, i64 0}
!50 = !{!10, !6, i64 480}
!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 496}
!64 = !{!10, !6, i64 504}
!65 = !{!10, !6, i64 512}
!66 = !{!10, !6, i64 520}
!67 = !{!10, !6, i64 528}
!68 = !{!10, !6, i64 536}
!69 = distinct !{!69, !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 }

; Function Attrs: mustprogress noreturn uwtable
define dso_local void @_ZN9datatypes5entryEv(ptr noundef nonnull align 8 dereferenceable(552) %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 i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca %"class.sc_dt::sc_signed", align 8
  %14 = alloca %"class.sc_dt::sc_bv", align 8
  %15 = alloca %"class.sc_dt::sc_bv", align 8
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #5
  call void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #5
  invoke void @_ZN5sc_dt9sc_bigintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %19 unwind label %44

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

20:                                               ; preds = %19
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #5
  invoke void @_ZN5sc_dt10sc_biguintILi8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %21 unwind label %48

21:                                               ; preds = %20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #5
  %22 = getelementptr inbounds i8, ptr %0, i64 416
  %23 = load ptr, ptr %22, align 8, !tbaa !5
  %24 = load ptr, ptr %23, align 8, !tbaa !40
  %25 = getelementptr inbounds i8, ptr %24, i64 56
  %26 = load ptr, ptr %25, align 8
  %27 = invoke noundef nonnull align 1 dereferenceable(1) ptr %26(ptr noundef nonnull align 8 dereferenceable(224) %23)
          to label %28 unwind label %.loopexit.split-lp.loopexit.split-lp

28:                                               ; preds = %21
  %29 = load i8, ptr %27, align 1, !tbaa !42, !range !43, !noundef !44
  %30 = trunc nuw i8 %29 to i1
  br i1 %30, label %31, label %.invoke

31:                                               ; preds = %28
  %32 = getelementptr inbounds i8, ptr %0, i64 544
  %33 = load ptr, ptr %32, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #5
  store i8 0, ptr %10, align 1, !tbaa !42
  %34 = load ptr, ptr %33, align 8, !tbaa !40
  %35 = getelementptr inbounds i8, ptr %34, i64 112
  %36 = load ptr, ptr %35, align 8
  invoke void %36(ptr noundef nonnull align 8 dereferenceable(224) %33, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %37 unwind label %50

37:                                               ; preds = %31
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #5
  %38 = getelementptr inbounds i8, ptr %0, i64 488
  %39 = load ptr, ptr %38, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #5
  store i8 0, ptr %11, align 1, !tbaa !42
  %40 = load ptr, ptr %39, align 8, !tbaa !40
  %41 = getelementptr inbounds i8, ptr %40, i64 112
  %42 = load ptr, ptr %41, align 8
  invoke void %42(ptr noundef nonnull align 8 dereferenceable(224) %39, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %43 unwind label %52

43:                                               ; preds = %37
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #5
  br label %.invoke

44:                                               ; preds = %1
  %45 = landingpad { ptr, i32 }
          cleanup
  br label %224

46:                                               ; preds = %19
  %47 = landingpad { ptr, i32 }
          cleanup
  br label %223

48:                                               ; preds = %20
  %49 = landingpad { ptr, i32 }
          cleanup
  br label %222

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

.loopexit.split-lp.loopexit:                      ; preds = %187, %177, %172, %167, %162, %140, %124, %117, %110, %103, %97, %95, %89, %87, %81
  %lpad.loopexit27 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

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

52:                                               ; preds = %37
  %53 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #5
  br label %.loopexit.split-lp

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

54:                                               ; preds = %.invoke
  %55 = getelementptr inbounds i8, ptr %0, i64 480
  %56 = getelementptr inbounds i8, ptr %0, i64 424
  %57 = getelementptr inbounds i8, ptr %0, i64 432
  %58 = getelementptr inbounds i8, ptr %0, i64 440
  %59 = getelementptr inbounds i8, ptr %0, i64 448
  %60 = getelementptr inbounds i8, ptr %0, i64 456
  %61 = getelementptr inbounds i8, ptr %0, i64 464
  %62 = getelementptr inbounds i8, ptr %0, i64 472
  %63 = getelementptr inbounds i8, ptr %0, i64 488
  %64 = getelementptr inbounds i8, ptr %0, i64 496
  %65 = getelementptr inbounds i8, ptr %0, i64 504
  %66 = getelementptr inbounds i8, ptr %0, i64 512
  %67 = getelementptr inbounds i8, ptr %0, i64 520
  %68 = getelementptr inbounds i8, ptr %0, i64 528
  %69 = getelementptr inbounds i8, ptr %0, i64 536
  %70 = getelementptr inbounds i8, ptr %0, i64 544
  br label %71

71:                                               ; preds = %.backedge, %54
  %72 = load ptr, ptr %55, align 8, !tbaa !47
  %73 = load ptr, ptr %72, align 8, !tbaa !40
  %74 = getelementptr inbounds i8, ptr %73, i64 56
  %75 = load ptr, ptr %74, align 8
  %76 = invoke noundef nonnull align 1 dereferenceable(1) ptr %75(ptr noundef nonnull align 8 dereferenceable(224) %72)
          to label %77 unwind label %.loopexit

77:                                               ; preds = %71
  %78 = load i8, ptr %76, align 1, !tbaa !42, !range !43, !noundef !44
  %79 = icmp eq i8 %78, 0
  br i1 %79, label %80, label %81

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

.backedge:                                        ; preds = %80, %198
  br label %71, !llvm.loop !48

81:                                               ; preds = %77
  %82 = load ptr, ptr %56, align 8, !tbaa !50
  %83 = load ptr, ptr %82, align 8, !tbaa !40
  %84 = getelementptr inbounds i8, ptr %83, i64 40
  %85 = load ptr, ptr %84, align 8
  %86 = invoke noundef nonnull align 8 dereferenceable(24) ptr %85(ptr noundef nonnull align 8 dereferenceable(232) %82)
          to label %87 unwind label %.loopexit.split-lp.loopexit

87:                                               ; preds = %81
  %88 = 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) %86)
          to label %89 unwind label %.loopexit.split-lp.loopexit

89:                                               ; preds = %87
  %90 = load ptr, ptr %57, align 8, !tbaa !51
  %91 = load ptr, ptr %90, align 8, !tbaa !40
  %92 = getelementptr inbounds i8, ptr %91, i64 40
  %93 = load ptr, ptr %92, align 8
  %94 = invoke noundef nonnull align 8 dereferenceable(24) ptr %93(ptr noundef nonnull align 8 dereferenceable(232) %90)
          to label %95 unwind label %.loopexit.split-lp.loopexit

95:                                               ; preds = %89
  %96 = 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) %94)
          to label %97 unwind label %.loopexit.split-lp.loopexit

97:                                               ; preds = %95
  %98 = load ptr, ptr %58, align 8, !tbaa !52
  %99 = load ptr, ptr %98, align 8, !tbaa !40
  %100 = getelementptr inbounds i8, ptr %99, i64 40
  %101 = load ptr, ptr %100, align 8
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr %101(ptr noundef nonnull align 8 dereferenceable(200) %98)
          to label %103 unwind label %.loopexit.split-lp.loopexit

103:                                              ; preds = %97
  %104 = load i64, ptr %102, align 8, !tbaa !53
  %105 = load ptr, ptr %59, align 8, !tbaa !54
  %106 = load ptr, ptr %105, align 8, !tbaa !40
  %107 = getelementptr inbounds i8, ptr %106, i64 40
  %108 = load ptr, ptr %107, align 8
  %109 = invoke noundef nonnull align 4 dereferenceable(4) ptr %108(ptr noundef nonnull align 8 dereferenceable(196) %105)
          to label %110 unwind label %.loopexit.split-lp.loopexit

110:                                              ; preds = %103
  %111 = load i32, ptr %109, align 4, !tbaa !55
  %112 = load ptr, ptr %60, align 8, !tbaa !56
  %113 = load ptr, ptr %112, align 8, !tbaa !40
  %114 = getelementptr inbounds i8, ptr %113, i64 40
  %115 = load ptr, ptr %114, align 8
  %116 = invoke noundef nonnull align 2 dereferenceable(2) ptr %115(ptr noundef nonnull align 8 dereferenceable(194) %112)
          to label %117 unwind label %.loopexit.split-lp.loopexit

117:                                              ; preds = %110
  %118 = load i16, ptr %116, align 2, !tbaa !57
  %119 = load ptr, ptr %61, align 8, !tbaa !59
  %120 = load ptr, ptr %119, align 8, !tbaa !40
  %121 = getelementptr inbounds i8, ptr %120, i64 40
  %122 = load ptr, ptr %121, align 8
  %123 = invoke noundef nonnull align 1 dereferenceable(1) ptr %122(ptr noundef nonnull align 8 dereferenceable(193) %119)
          to label %124 unwind label %.loopexit.split-lp.loopexit

124:                                              ; preds = %117
  %125 = load i8, ptr %123, align 1, !tbaa !60
  %126 = load ptr, ptr %62, align 8, !tbaa !61
  %127 = load ptr, ptr %126, align 8, !tbaa !40
  %128 = getelementptr inbounds i8, ptr %127, i64 40
  %129 = load ptr, ptr %128, align 8
  %130 = invoke noundef nonnull align 1 dereferenceable(1) ptr %129(ptr noundef nonnull align 8 dereferenceable(193) %126)
          to label %131 unwind label %.loopexit.split-lp.loopexit

131:                                              ; preds = %124
  %132 = load i8, ptr %130, align 1, !tbaa !60
  %133 = load ptr, ptr %63, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #5
  store i8 1, ptr %12, align 1, !tbaa !42
  %134 = load ptr, ptr %133, align 8, !tbaa !40
  %135 = getelementptr inbounds i8, ptr %134, i64 112
  %136 = load ptr, ptr %135, align 8
  invoke void %136(ptr noundef nonnull align 8 dereferenceable(224) %133, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %137 unwind label %199

137:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #5
  invoke void @_ZN5sc_dtorERKNS_9sc_signedERKNS_11sc_unsignedE(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_signed") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %138 unwind label %201

138:                                              ; preds = %137
  %139 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi8EEaSERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %140 unwind label %203

140:                                              ; preds = %138
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  %141 = sext i8 %125 to i64
  %142 = or i64 %104, %141
  %143 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi8EEaSEl(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef %142)
          to label %144 unwind label %.loopexit.split-lp.loopexit

144:                                              ; preds = %140
  %145 = sext i8 %125 to i32
  %146 = or i32 %111, %145
  %147 = sext i32 %146 to i64
  store i64 %147, ptr %6, align 8, !tbaa !53
  %148 = sext i16 %118 to i32
  %149 = or i32 %111, %148
  store i32 %149, ptr %7, align 4, !tbaa !55
  %150 = or i16 %118, 5
  store i16 %150, ptr %8, align 2, !tbaa !57
  store i8 %132, ptr %9, align 1, !tbaa !60
  %151 = load ptr, ptr %64, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %152 unwind label %206

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

156:                                              ; preds = %152
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #5
  %157 = load ptr, ptr %65, align 8, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #5
  invoke void @_ZN5sc_dt5sc_bvILi8EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %158 unwind label %211

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

162:                                              ; preds = %158
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #5
  %163 = load ptr, ptr %66, align 8, !tbaa !64
  %164 = load ptr, ptr %163, align 8, !tbaa !40
  %165 = getelementptr inbounds i8, ptr %164, i64 72
  %166 = load ptr, ptr %165, align 8
  invoke void %166(ptr noundef nonnull align 8 dereferenceable(200) %163, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %167 unwind label %.loopexit.split-lp.loopexit

167:                                              ; preds = %162
  %168 = load ptr, ptr %67, align 8, !tbaa !65
  %169 = load ptr, ptr %168, align 8, !tbaa !40
  %170 = getelementptr inbounds i8, ptr %169, i64 72
  %171 = load ptr, ptr %170, align 8
  invoke void %171(ptr noundef nonnull align 8 dereferenceable(196) %168, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %172 unwind label %.loopexit.split-lp.loopexit

172:                                              ; preds = %167
  %173 = load ptr, ptr %68, align 8, !tbaa !66
  %174 = load ptr, ptr %173, align 8, !tbaa !40
  %175 = getelementptr inbounds i8, ptr %174, i64 72
  %176 = load ptr, ptr %175, align 8
  invoke void %176(ptr noundef nonnull align 8 dereferenceable(194) %173, ptr noundef nonnull align 2 dereferenceable(2) %8)
          to label %177 unwind label %.loopexit.split-lp.loopexit

177:                                              ; preds = %172
  %178 = load ptr, ptr %69, align 8, !tbaa !67
  %179 = load ptr, ptr %178, align 8, !tbaa !40
  %180 = getelementptr inbounds i8, ptr %179, i64 72
  %181 = load ptr, ptr %180, align 8
  invoke void %181(ptr noundef nonnull align 8 dereferenceable(193) %178, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %182 unwind label %.loopexit.split-lp.loopexit

182:                                              ; preds = %177
  %183 = load ptr, ptr %70, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #5
  store i8 1, ptr %16, align 1, !tbaa !42
  %184 = load ptr, ptr %183, align 8, !tbaa !40
  %185 = getelementptr inbounds i8, ptr %184, i64 112
  %186 = load ptr, ptr %185, align 8
  invoke void %186(ptr noundef nonnull align 8 dereferenceable(224) %183, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %187 unwind label %216

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

188:                                              ; preds = %187
  %189 = load ptr, ptr %63, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #5
  store i8 0, ptr %17, align 1, !tbaa !42
  %190 = load ptr, ptr %189, align 8, !tbaa !40
  %191 = getelementptr inbounds i8, ptr %190, i64 112
  %192 = load ptr, ptr %191, align 8
  invoke void %192(ptr noundef nonnull align 8 dereferenceable(224) %189, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %193 unwind label %218

193:                                              ; preds = %188
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #5
  %194 = load ptr, ptr %70, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #5
  store i8 0, ptr %18, align 1, !tbaa !42
  %195 = load ptr, ptr %194, align 8, !tbaa !40
  %196 = getelementptr inbounds i8, ptr %195, i64 112
  %197 = load ptr, ptr %196, align 8
  invoke void %197(ptr noundef nonnull align 8 dereferenceable(224) %194, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %198 unwind label %220

198:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #5
  br label %.backedge

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

201:                                              ; preds = %137
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %205

203:                                              ; preds = %138
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  br label %205

205:                                              ; preds = %203, %201
  %.pn = phi { ptr, i32 } [ %204, %203 ], [ %202, %201 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  br label %.loopexit.split-lp

206:                                              ; preds = %144
  %207 = landingpad { ptr, i32 }
          cleanup
  br label %210

208:                                              ; preds = %152
  %209 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #5
  br label %210

210:                                              ; preds = %208, %206
  %.pn18 = phi { ptr, i32 } [ %209, %208 ], [ %207, %206 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #5
  br label %.loopexit.split-lp

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

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

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

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

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

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %220, %218, %216, %215, %210, %205, %199, %52, %50
  %.pn22 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ], [ %217, %216 ], [ %.pn20, %215 ], [ %.pn18, %210 ], [ %.pn, %205 ], [ %200, %199 ], [ %53, %52 ], [ %51, %50 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit27, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp28, %.loopexit.split-lp.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  br label %222

222:                                              ; preds = %.loopexit.split-lp, %48
  %.pn22.pn = phi { ptr, i32 } [ %.pn22, %.loopexit.split-lp ], [ %49, %48 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  br label %223

223:                                              ; preds = %222, %46
  %.pn22.pn.pn = phi { ptr, i32 } [ %.pn22.pn, %222 ], [ %47, %46 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  br label %224

224:                                              ; preds = %223, %44
  %.pn22.pn.pn.pn = phi { ptr, i32 } [ %.pn22.pn.pn, %223 ], [ %45, %44 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #5
  resume { ptr, i32 } %.pn22.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 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

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

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

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

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

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

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 = { 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, !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}
!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 544}
!46 = !{!6, !9, i64 488}
!47 = !{!6, !9, i64 480}
!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 496}
!63 = !{!6, !9, i64 504}
!64 = !{!6, !9, i64 512}
!65 = !{!6, !9, i64 520}
!66 = !{!6, !9, i64 528}
!67 = !{!6, !9, i64 536}


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