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

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

%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_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.fsm = type { %"class.sc_core::sc_module", %"class.sc_core::sc_in", ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.sc_core::sc_module" = type { %"class.sc_core::sc_object", %"class.sc_core::sc_process_host", %"class.sc_core::sc_sensitive", %"class.sc_core::sc_sensitive_pos", %"class.sc_core::sc_sensitive_neg", i8, ptr, i32, ptr, ptr }
%"class.sc_core::sc_object" = type { ptr, ptr, %"class.std::vector", %"class.std::vector.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 @_ZN3fsm5entryEv(ptr noundef nonnull align 8 dereferenceable(504) %0) #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.sc_dt::sc_biguint", align 8
  %4 = alloca %"class.sc_dt::sc_biguint", 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_unsigned", align 8
  %9 = alloca %"class.sc_dt::sc_unsigned", align 8
  %10 = alloca %"class.sc_dt::sc_bv", align 8
  %11 = alloca %"class.sc_dt::sc_bv", align 8
  %12 = alloca %"class.sc_dt::sc_bv", align 8
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca %"class.sc_dt::sc_bv", align 8
  %18 = alloca %"class.sc_dt::sc_bv", align 8
  %19 = alloca %"class.sc_dt::sc_bv", align 8
  %20 = alloca %"class.sc_dt::sc_bv", align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca %"class.sc_dt::sc_unsigned", align 8
  %24 = alloca %"class.sc_dt::sc_unsigned", align 8
  %25 = alloca %"class.sc_dt::sc_bv", align 8
  %26 = alloca %"class.sc_dt::sc_biguint", align 8
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca %"class.sc_dt::sc_bv", align 8
  %30 = alloca %"class.sc_dt::sc_biguint", align 8
  %31 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %32 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %3) #5
  call void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %33 unwind label %91

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

34:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #5
  invoke void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 12)
          to label %35 unwind label %99

35:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #5
  invoke void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 12)
          to label %36 unwind label %103

36:                                               ; preds = %35
  %37 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 2
  %38 = load ptr, ptr %37, align 8, !tbaa !9
  %39 = load ptr, ptr %38, align 8, !tbaa !41
  %40 = getelementptr inbounds ptr, ptr %39, i64 7
  %41 = load ptr, ptr %40, align 8
  %42 = invoke noundef nonnull align 1 dereferenceable(1) ptr %41(ptr noundef nonnull align 8 dereferenceable(224) %38)
          to label %43 unwind label %107

43:                                               ; preds = %36
  %44 = load i8, ptr %42, align 1, !tbaa !43, !range !44, !noundef !45
  %45 = trunc i8 %44 to i1
  %46 = zext i1 %45 to i32
  %47 = icmp eq i32 %46, 1
  br i1 %47, label %48, label %150

48:                                               ; preds = %43
  %49 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 7
  %50 = load ptr, ptr %49, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 0)
          to label %51 unwind label %111

51:                                               ; preds = %48
  %52 = load ptr, ptr %50, align 8, !tbaa !41
  %53 = getelementptr inbounds ptr, ptr %52, i64 9
  %54 = load ptr, ptr %53, align 8
  invoke void %54(ptr noundef nonnull align 8 dereferenceable(232) %50, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %55 unwind label %115

55:                                               ; preds = %51
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #5
  %56 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 8
  %57 = load ptr, ptr %56, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef 0)
          to label %58 unwind label %120

58:                                               ; preds = %55
  %59 = load ptr, ptr %57, align 8, !tbaa !41
  %60 = getelementptr inbounds ptr, ptr %59, i64 9
  %61 = load ptr, ptr %60, align 8
  invoke void %61(ptr noundef nonnull align 8 dereferenceable(232) %57, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %62 unwind label %124

62:                                               ; preds = %58
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #5
  %63 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 9
  %64 = load ptr, ptr %63, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 0)
          to label %65 unwind label %129

65:                                               ; preds = %62
  %66 = load ptr, ptr %64, align 8, !tbaa !41
  %67 = getelementptr inbounds ptr, ptr %66, i64 9
  %68 = load ptr, ptr %67, align 8
  invoke void %68(ptr noundef nonnull align 8 dereferenceable(232) %64, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %69 unwind label %133

69:                                               ; preds = %65
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  %70 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 10
  %71 = load ptr, ptr %70, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  store i8 0, ptr %13, align 1, !tbaa !43
  %72 = load ptr, ptr %71, align 8, !tbaa !41
  %73 = getelementptr inbounds ptr, ptr %72, i64 14
  %74 = load ptr, ptr %73, align 8
  invoke void %74(ptr noundef nonnull align 8 dereferenceable(224) %71, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %75 unwind label %138

75:                                               ; preds = %69
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  %76 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 11
  %77 = load ptr, ptr %76, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  store i8 0, ptr %14, align 1, !tbaa !43
  %78 = load ptr, ptr %77, align 8, !tbaa !41
  %79 = getelementptr inbounds ptr, ptr %78, i64 14
  %80 = load ptr, ptr %79, align 8
  invoke void %80(ptr noundef nonnull align 8 dereferenceable(224) %77, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %81 unwind label %142

81:                                               ; preds = %75
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  %82 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 12
  %83 = load ptr, ptr %82, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #5
  store i8 0, ptr %15, align 1, !tbaa !43
  %84 = load ptr, ptr %83, align 8, !tbaa !41
  %85 = getelementptr inbounds ptr, ptr %84, i64 14
  %86 = load ptr, ptr %85, align 8
  invoke void %86(ptr noundef nonnull align 8 dereferenceable(224) %83, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %87 unwind label %146

87:                                               ; preds = %81
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #5
  %88 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 0)
          to label %89 unwind label %107

89:                                               ; preds = %87
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %90 unwind label %107

90:                                               ; preds = %89
  br label %152

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

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

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

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

107:                                              ; preds = %389, %373, %366, %365, %350, %346, %344, %343, %342, %340, %337, %335, %333, %330, %306, %299, %298, %290, %283, %282, %263, %245, %244, %234, %223, %222, %221, %211, %196, %188, %187, %186, %185, %182, %181, %173, %166, %157, %155, %150, %89, %87, %36
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %5, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %6, align 4
  br label %437

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

115:                                              ; preds = %51
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %5, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #5
  br label %119

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

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

124:                                              ; preds = %58
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %5, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #5
  br label %128

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

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

133:                                              ; preds = %65
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %5, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  br label %137

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

138:                                              ; preds = %69
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %5, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  br label %437

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

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

150:                                              ; preds = %43
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %151 unwind label %107

151:                                              ; preds = %150
  br label %152

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

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

154:                                              ; preds = %153
  br label %155

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

156:                                              ; preds = %155
  br label %157

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

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

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

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

175:                                              ; preds = %173
  %176 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 10
  %177 = load ptr, ptr %176, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #5
  store i8 1, ptr %16, align 1, !tbaa !43
  %178 = load ptr, ptr %177, align 8, !tbaa !41
  %179 = getelementptr inbounds ptr, ptr %178, i64 14
  %180 = load ptr, ptr %179, align 8
  invoke void %180(ptr noundef nonnull align 8 dereferenceable(224) %177, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %181 unwind label %198

181:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %182 unwind label %107

182:                                              ; preds = %181
  %183 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 4)
          to label %184 unwind label %107

184:                                              ; preds = %182
  br i1 %183, label %185, label %211

185:                                              ; preds = %184
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %186 unwind label %107

186:                                              ; preds = %185
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %187 unwind label %107

187:                                              ; preds = %186
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %188 unwind label %107

188:                                              ; preds = %187
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %189 unwind label %107

189:                                              ; preds = %188
  %190 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 7
  %191 = load ptr, ptr %190, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %17, i32 noundef 3)
          to label %192 unwind label %202

192:                                              ; preds = %189
  %193 = load ptr, ptr %191, align 8, !tbaa !41
  %194 = getelementptr inbounds ptr, ptr %193, i64 9
  %195 = load ptr, ptr %194, align 8
  invoke void %195(ptr noundef nonnull align 8 dereferenceable(232) %191, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %196 unwind label %206

196:                                              ; preds = %192
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %197 unwind label %107

197:                                              ; preds = %196
  br label %276

198:                                              ; preds = %175
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %5, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  br label %437

202:                                              ; preds = %189
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %5, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %6, align 4
  br label %210

206:                                              ; preds = %192
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %5, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  br label %210

210:                                              ; preds = %206, %202
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #5
  br label %437

211:                                              ; preds = %184
  %212 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 3)
          to label %213 unwind label %107

213:                                              ; preds = %211
  br i1 %212, label %214, label %234

214:                                              ; preds = %213
  %215 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 7
  %216 = load ptr, ptr %215, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %18, i32 noundef 2)
          to label %217 unwind label %225

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

221:                                              ; preds = %217
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %222 unwind label %107

222:                                              ; preds = %221
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %223 unwind label %107

223:                                              ; preds = %222
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %224 unwind label %107

224:                                              ; preds = %223
  br label %275

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

229:                                              ; preds = %217
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %5, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  br label %233

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

234:                                              ; preds = %213
  %235 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 2)
          to label %236 unwind label %107

236:                                              ; preds = %234
  br i1 %235, label %237, label %256

237:                                              ; preds = %236
  %238 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 7
  %239 = load ptr, ptr %238, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %19, i32 noundef 1)
          to label %240 unwind label %247

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

244:                                              ; preds = %240
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %245 unwind label %107

245:                                              ; preds = %244
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %246 unwind label %107

246:                                              ; preds = %245
  br label %274

247:                                              ; preds = %237
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %5, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %6, align 4
  br label %255

251:                                              ; preds = %240
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %5, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  br label %255

255:                                              ; preds = %251, %247
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #5
  br label %437

256:                                              ; preds = %236
  %257 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 7
  %258 = load ptr, ptr %257, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %259 unwind label %265

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

263:                                              ; preds = %259
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %264 unwind label %107

264:                                              ; preds = %263
  br label %274

265:                                              ; preds = %256
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %5, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %6, align 4
  br label %273

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

273:                                              ; preds = %269, %265
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #5
  br label %437

274:                                              ; preds = %264, %246
  br label %275

275:                                              ; preds = %274, %224
  br label %276

276:                                              ; preds = %275, %197
  %277 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 10
  %278 = load ptr, ptr %277, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #5
  store i8 0, ptr %21, align 1, !tbaa !43
  %279 = load ptr, ptr %278, align 8, !tbaa !41
  %280 = getelementptr inbounds ptr, ptr %279, i64 14
  %281 = load ptr, ptr %280, align 8
  invoke void %281(ptr noundef nonnull align 8 dereferenceable(224) %278, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %282 unwind label %308

282:                                              ; preds = %276
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %283 unwind label %107

283:                                              ; preds = %282
  %284 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 4
  %285 = load ptr, ptr %284, align 8, !tbaa !56
  %286 = load ptr, ptr %285, align 8, !tbaa !41
  %287 = getelementptr inbounds ptr, ptr %286, i64 5
  %288 = load ptr, ptr %287, align 8
  %289 = invoke noundef nonnull align 8 dereferenceable(24) ptr %288(ptr noundef nonnull align 8 dereferenceable(232) %285)
          to label %290 unwind label %107

290:                                              ; preds = %283
  %291 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %289)
          to label %292 unwind label %107

292:                                              ; preds = %290
  %293 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 11
  %294 = load ptr, ptr %293, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #5
  store i8 1, ptr %22, align 1, !tbaa !43
  %295 = load ptr, ptr %294, align 8, !tbaa !41
  %296 = getelementptr inbounds ptr, ptr %295, i64 14
  %297 = load ptr, ptr %296, align 8
  invoke void %297(ptr noundef nonnull align 8 dereferenceable(224) %294, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %298 unwind label %312

298:                                              ; preds = %292
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %299 unwind label %107

299:                                              ; preds = %298
  %300 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 4)
          to label %301 unwind label %107

301:                                              ; preds = %299
  br i1 %300, label %302, label %330

302:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #5
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %303 unwind label %316

303:                                              ; preds = %302
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %304 unwind label %320

304:                                              ; preds = %303
  %305 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %306 unwind label %324

306:                                              ; preds = %304
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %307 unwind label %107

307:                                              ; preds = %306
  br label %350

308:                                              ; preds = %276
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %5, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #5
  br label %437

312:                                              ; preds = %292
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %5, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #5
  br label %437

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

320:                                              ; preds = %303
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %5, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %6, align 4
  br label %328

324:                                              ; preds = %304
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %5, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %6, align 4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  br label %328

328:                                              ; preds = %324, %320
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  br label %329

329:                                              ; preds = %328, %316
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %437

330:                                              ; preds = %301
  %331 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 8)
          to label %332 unwind label %107

332:                                              ; preds = %330
  br i1 %331, label %333, label %337

333:                                              ; preds = %332
  %334 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 4)
          to label %335 unwind label %107

335:                                              ; preds = %333
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %336 unwind label %107

336:                                              ; preds = %335
  br label %349

337:                                              ; preds = %332
  %338 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 12)
          to label %339 unwind label %107

339:                                              ; preds = %337
  br i1 %338, label %340, label %346

340:                                              ; preds = %339
  %341 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 1)
          to label %342 unwind label %107

342:                                              ; preds = %340
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %343 unwind label %107

343:                                              ; preds = %342
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %344 unwind label %107

344:                                              ; preds = %343
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %345 unwind label %107

345:                                              ; preds = %344
  br label %348

346:                                              ; preds = %339
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %347 unwind label %107

347:                                              ; preds = %346
  br label %348

348:                                              ; preds = %347, %345
  br label %349

349:                                              ; preds = %348, %336
  br label %350

350:                                              ; preds = %349, %307
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %351 unwind label %107

351:                                              ; preds = %350
  %352 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 8
  %353 = load ptr, ptr %352, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %354 unwind label %397

354:                                              ; preds = %351
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %355 unwind label %401

355:                                              ; preds = %354
  %356 = load ptr, ptr %353, align 8, !tbaa !41
  %357 = getelementptr inbounds ptr, ptr %356, i64 9
  %358 = load ptr, ptr %357, align 8
  invoke void %358(ptr noundef nonnull align 8 dereferenceable(232) %353, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %359 unwind label %405

359:                                              ; preds = %355
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #5
  %360 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 11
  %361 = load ptr, ptr %360, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #5
  store i8 0, ptr %27, align 1, !tbaa !43
  %362 = load ptr, ptr %361, align 8, !tbaa !41
  %363 = getelementptr inbounds ptr, ptr %362, i64 14
  %364 = load ptr, ptr %363, align 8
  invoke void %364(ptr noundef nonnull align 8 dereferenceable(224) %361, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %365 unwind label %411

365:                                              ; preds = %359
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %366 unwind label %107

366:                                              ; preds = %365
  %367 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 5
  %368 = load ptr, ptr %367, align 8, !tbaa !57
  %369 = load ptr, ptr %368, align 8, !tbaa !41
  %370 = getelementptr inbounds ptr, ptr %369, i64 5
  %371 = load ptr, ptr %370, align 8
  %372 = invoke noundef nonnull align 8 dereferenceable(24) ptr %371(ptr noundef nonnull align 8 dereferenceable(232) %368)
          to label %373 unwind label %107

373:                                              ; preds = %366
  %374 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(24) %372)
          to label %375 unwind label %107

375:                                              ; preds = %373
  %376 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 12
  %377 = load ptr, ptr %376, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #5
  store i8 1, ptr %28, align 1, !tbaa !43
  %378 = load ptr, ptr %377, align 8, !tbaa !41
  %379 = getelementptr inbounds ptr, ptr %378, i64 14
  %380 = load ptr, ptr %379, align 8
  invoke void %380(ptr noundef nonnull align 8 dereferenceable(224) %377, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %381 unwind label %415

381:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  %382 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 9
  %383 = load ptr, ptr %382, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %384 unwind label %419

384:                                              ; preds = %381
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %385 unwind label %423

385:                                              ; preds = %384
  %386 = load ptr, ptr %383, align 8, !tbaa !41
  %387 = getelementptr inbounds ptr, ptr %386, i64 9
  %388 = load ptr, ptr %387, align 8
  invoke void %388(ptr noundef nonnull align 8 dereferenceable(232) %383, ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %389 unwind label %427

389:                                              ; preds = %385
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %32)
          to label %390 unwind label %107

390:                                              ; preds = %389
  %391 = getelementptr inbounds %struct.fsm, ptr %32, i32 0, i32 12
  %392 = load ptr, ptr %391, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #5
  store i8 0, ptr %31, align 1, !tbaa !43
  %393 = load ptr, ptr %392, align 8, !tbaa !41
  %394 = getelementptr inbounds ptr, ptr %393, i64 14
  %395 = load ptr, ptr %394, align 8
  invoke void %395(ptr noundef nonnull align 8 dereferenceable(224) %392, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %396 unwind label %433

396:                                              ; preds = %390
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  br label %153, !llvm.loop !58

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

401:                                              ; preds = %354
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %5, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %6, align 4
  br label %409

405:                                              ; preds = %355
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %5, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  br label %409

409:                                              ; preds = %405, %401
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  br label %410

410:                                              ; preds = %409, %397
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #5
  br label %437

411:                                              ; preds = %359
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %5, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  br label %437

415:                                              ; preds = %375
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %5, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  br label %437

419:                                              ; preds = %381
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %5, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %6, align 4
  br label %432

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

427:                                              ; preds = %385
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %5, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  br label %431

431:                                              ; preds = %427, %423
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  br label %432

432:                                              ; preds = %431, %419
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #5
  br label %437

433:                                              ; preds = %390
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %5, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  br label %437

437:                                              ; preds = %433, %432, %415, %411, %410, %329, %312, %308, %273, %255, %233, %210, %198, %146, %142, %138, %137, %128, %119, %107
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  br label %438

438:                                              ; preds = %437, %103
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #5
  br label %439

439:                                              ; preds = %438, %99
  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 %440

440:                                              ; preds = %439, %95
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  br label %441

441:                                              ; preds = %440, %91
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #5
  br label %442

442:                                              ; preds = %441
  %443 = load ptr, ptr %5, align 8
  %444 = load i32, ptr %6, align 4
  %445 = insertvalue { ptr, i32 } poison, ptr %443, 0
  %446 = insertvalue { ptr, i32 } %445, i32 %444, 1
  resume { ptr, i32 } %446
}

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

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

declare i32 @__gxx_personality_v0(...)

declare void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2

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


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

%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_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 @_ZN3fsm5entryEv(ptr noundef nonnull align 8 dereferenceable(504) %0) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.sc_dt::sc_biguint", align 8
  %3 = alloca %"class.sc_dt::sc_biguint", align 8
  %4 = alloca %"class.sc_dt::sc_biguint", align 8
  %5 = alloca %"class.sc_dt::sc_unsigned", align 8
  %6 = alloca %"class.sc_dt::sc_unsigned", align 8
  %7 = alloca %"class.sc_dt::sc_bv", align 8
  %8 = alloca %"class.sc_dt::sc_bv", align 8
  %9 = alloca %"class.sc_dt::sc_bv", align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca %"class.sc_dt::sc_bv", align 8
  %15 = alloca %"class.sc_dt::sc_bv", align 8
  %16 = alloca %"class.sc_dt::sc_bv", align 8
  %17 = alloca %"class.sc_dt::sc_bv", align 8
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca %"class.sc_dt::sc_unsigned", align 8
  %21 = alloca %"class.sc_dt::sc_unsigned", align 8
  %22 = alloca %"class.sc_dt::sc_bv", align 8
  %23 = alloca %"class.sc_dt::sc_biguint", align 8
  %24 = alloca i8, align 1
  %25 = alloca i8, align 1
  %26 = alloca %"class.sc_dt::sc_bv", align 8
  %27 = alloca %"class.sc_dt::sc_biguint", align 8
  %28 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #6
  call void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %29 unwind label %83

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

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

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

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

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

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

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

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

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

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

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

63:                                               ; preds = %59
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  %64 = getelementptr inbounds i8, ptr %0, i64 480
  %65 = load ptr, ptr %64, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  store i8 0, ptr %10, align 1, !tbaa !42
  %66 = load ptr, ptr %65, align 8, !tbaa !40
  %67 = getelementptr inbounds i8, ptr %66, i64 112
  %68 = load ptr, ptr %67, align 8
  invoke void %68(ptr noundef nonnull align 8 dereferenceable(224) %65, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %69 unwind label %106

69:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  %70 = getelementptr inbounds i8, ptr %0, i64 488
  %71 = load ptr, ptr %70, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #6
  store i8 0, ptr %11, align 1, !tbaa !42
  %72 = load ptr, ptr %71, align 8, !tbaa !40
  %73 = getelementptr inbounds i8, ptr %72, i64 112
  %74 = load ptr, ptr %73, align 8
  invoke void %74(ptr noundef nonnull align 8 dereferenceable(224) %71, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %75 unwind label %108

75:                                               ; preds = %69
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  %76 = getelementptr inbounds i8, ptr %0, i64 496
  %77 = load ptr, ptr %76, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  store i8 0, ptr %12, align 1, !tbaa !42
  %78 = load ptr, ptr %77, align 8, !tbaa !40
  %79 = getelementptr inbounds i8, ptr %78, i64 112
  %80 = load ptr, ptr %79, align 8
  invoke void %80(ptr noundef nonnull align 8 dereferenceable(224) %77, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %81 unwind label %110

81:                                               ; preds = %75
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  %82 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 0)
          to label %.invoke57 unwind label %.loopexit.split-lp.loopexit.split-lp

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

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

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

89:                                               ; preds = %31
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %321

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

.loopexit.split-lp.loopexit:                      ; preds = %.invoke58, %.invoke56, %.invoke, %292, %278, %272, %271, %258, %257, %256, %254, %251, %249, %246, %226, %225, %218, %212, %211, %180, %174, %165, %150, %149, %148, %147, %144, %143, %136, %130
  %lpad.loopexit53 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp:             ; preds = %.invoke57, %81, %32
  %lpad.loopexit.split-lp54 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

91:                                               ; preds = %42
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %95

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

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

96:                                               ; preds = %49
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %100

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

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

101:                                              ; preds = %56
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %105

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

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

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

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

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

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

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

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

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

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

.backedge:                                        ; preds = %127, %298
  br label %123, !llvm.loop !52

130:                                              ; preds = %127
  %131 = load ptr, ptr %114, 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 8 dereferenceable(24) ptr %134(ptr noundef nonnull align 8 dereferenceable(232) %131)
          to label %136 unwind label %.loopexit.split-lp.loopexit

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

138:                                              ; preds = %136
  %139 = load ptr, ptr %115, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  store i8 1, ptr %13, align 1, !tbaa !42
  %140 = load ptr, ptr %139, align 8, !tbaa !40
  %141 = getelementptr inbounds i8, ptr %140, i64 112
  %142 = load ptr, ptr %141, align 8
  invoke void %142(ptr noundef nonnull align 8 dereferenceable(224) %139, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %143 unwind label %158

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

144:                                              ; preds = %143
  %145 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 4)
          to label %146 unwind label %.loopexit.split-lp.loopexit

146:                                              ; preds = %144
  br i1 %145, label %147, label %165

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

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

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

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

151:                                              ; preds = %150
  %152 = load ptr, ptr %116, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 3)
          to label %153 unwind label %160

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

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

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

160:                                              ; preds = %151
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %164

162:                                              ; preds = %153
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  br label %164

164:                                              ; preds = %162, %160
  %.pn36 = phi { ptr, i32 } [ %163, %162 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  br label %.loopexit.split-lp

165:                                              ; preds = %146
  %166 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 3)
          to label %167 unwind label %.loopexit.split-lp.loopexit

167:                                              ; preds = %165
  br i1 %166, label %168, label %180

168:                                              ; preds = %167
  %169 = load ptr, ptr %116, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 2)
          to label %170 unwind label %175

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

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

175:                                              ; preds = %168
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %179

177:                                              ; preds = %170
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  br label %179

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

180:                                              ; preds = %167
  %181 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 2)
          to label %182 unwind label %.loopexit.split-lp.loopexit

182:                                              ; preds = %180
  %183 = load ptr, ptr %116, align 8, !tbaa !45
  br i1 %181, label %184, label %195

184:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 1)
          to label %185 unwind label %190

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

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

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

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

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

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

195:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #6
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %196 unwind label %201

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

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

.invoke56:                                        ; preds = %.invoke58, %157, %200
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %206 unwind label %.loopexit.split-lp.loopexit

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

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

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

206:                                              ; preds = %.invoke56
  %207 = load ptr, ptr %115, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  store i8 0, ptr %18, align 1, !tbaa !42
  %208 = load ptr, ptr %207, align 8, !tbaa !40
  %209 = getelementptr inbounds i8, ptr %208, i64 112
  %210 = load ptr, ptr %209, align 8
  invoke void %210(ptr noundef nonnull align 8 dereferenceable(224) %207, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %211 unwind label %234

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

212:                                              ; preds = %211
  %213 = load ptr, ptr %117, align 8, !tbaa !55
  %214 = load ptr, ptr %213, align 8, !tbaa !40
  %215 = getelementptr inbounds i8, ptr %214, i64 40
  %216 = load ptr, ptr %215, align 8
  %217 = invoke noundef nonnull align 8 dereferenceable(24) ptr %216(ptr noundef nonnull align 8 dereferenceable(232) %213)
          to label %218 unwind label %.loopexit.split-lp.loopexit

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

220:                                              ; preds = %218
  %221 = load ptr, ptr %118, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  store i8 1, ptr %19, align 1, !tbaa !42
  %222 = load ptr, ptr %221, align 8, !tbaa !40
  %223 = getelementptr inbounds i8, ptr %222, i64 112
  %224 = load ptr, ptr %223, align 8
  invoke void %224(ptr noundef nonnull align 8 dereferenceable(224) %221, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %225 unwind label %236

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

226:                                              ; preds = %225
  %227 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 4)
          to label %228 unwind label %.loopexit.split-lp.loopexit

228:                                              ; preds = %226
  br i1 %227, label %229, label %246

229:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %230 unwind label %238

230:                                              ; preds = %229
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %231 unwind label %240

231:                                              ; preds = %230
  %232 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %233 unwind label %242

233:                                              ; preds = %231
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %.invoke

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

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

238:                                              ; preds = %229
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %245

240:                                              ; preds = %230
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %244

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

244:                                              ; preds = %242, %240
  %.pn38 = phi { ptr, i32 } [ %243, %242 ], [ %241, %240 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %245

245:                                              ; preds = %244, %238
  %.pn38.pn = phi { ptr, i32 } [ %.pn38, %244 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %.loopexit.split-lp

246:                                              ; preds = %228
  %247 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 8)
          to label %248 unwind label %.loopexit.split-lp.loopexit

248:                                              ; preds = %246
  br i1 %247, label %249, label %251

249:                                              ; preds = %248
  %250 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 4)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit

251:                                              ; preds = %248
  %252 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 12)
          to label %253 unwind label %.loopexit.split-lp.loopexit

253:                                              ; preds = %251
  br i1 %252, label %254, label %.invoke

254:                                              ; preds = %253
  %255 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 1)
          to label %256 unwind label %.loopexit.split-lp.loopexit

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

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

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

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

259:                                              ; preds = %258
  %260 = load ptr, ptr %119, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %261 unwind label %299

261:                                              ; preds = %259
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %262 unwind label %301

262:                                              ; preds = %261
  %263 = load ptr, ptr %260, align 8, !tbaa !40
  %264 = getelementptr inbounds i8, ptr %263, i64 72
  %265 = load ptr, ptr %264, align 8
  invoke void %265(ptr noundef nonnull align 8 dereferenceable(232) %260, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %266 unwind label %303

266:                                              ; preds = %262
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  %267 = load ptr, ptr %118, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  store i8 0, ptr %24, align 1, !tbaa !42
  %268 = load ptr, ptr %267, align 8, !tbaa !40
  %269 = getelementptr inbounds i8, ptr %268, i64 112
  %270 = load ptr, ptr %269, align 8
  invoke void %270(ptr noundef nonnull align 8 dereferenceable(224) %267, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %271 unwind label %307

271:                                              ; preds = %266
  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 %272 unwind label %.loopexit.split-lp.loopexit

272:                                              ; preds = %271
  %273 = load ptr, ptr %120, align 8, !tbaa !56
  %274 = load ptr, ptr %273, align 8, !tbaa !40
  %275 = getelementptr inbounds i8, ptr %274, i64 40
  %276 = load ptr, ptr %275, align 8
  %277 = invoke noundef nonnull align 8 dereferenceable(24) ptr %276(ptr noundef nonnull align 8 dereferenceable(232) %273)
          to label %278 unwind label %.loopexit.split-lp.loopexit

278:                                              ; preds = %272
  %279 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt10sc_biguintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %277)
          to label %280 unwind label %.loopexit.split-lp.loopexit

280:                                              ; preds = %278
  %281 = load ptr, ptr %121, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  store i8 1, ptr %25, align 1, !tbaa !42
  %282 = load ptr, ptr %281, align 8, !tbaa !40
  %283 = getelementptr inbounds i8, ptr %282, i64 112
  %284 = load ptr, ptr %283, align 8
  invoke void %284(ptr noundef nonnull align 8 dereferenceable(224) %281, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %285 unwind label %309

285:                                              ; preds = %280
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  %286 = load ptr, ptr %122, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #6
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %287 unwind label %311

287:                                              ; preds = %285
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %288 unwind label %313

288:                                              ; preds = %287
  %289 = load ptr, ptr %286, align 8, !tbaa !40
  %290 = getelementptr inbounds i8, ptr %289, i64 72
  %291 = load ptr, ptr %290, align 8
  invoke void %291(ptr noundef nonnull align 8 dereferenceable(232) %286, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %292 unwind label %315

292:                                              ; preds = %288
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %293 unwind label %.loopexit.split-lp.loopexit

293:                                              ; preds = %292
  %294 = load ptr, ptr %121, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #6
  store i8 0, ptr %28, align 1, !tbaa !42
  %295 = load ptr, ptr %294, align 8, !tbaa !40
  %296 = getelementptr inbounds i8, ptr %295, i64 112
  %297 = load ptr, ptr %296, align 8
  invoke void %297(ptr noundef nonnull align 8 dereferenceable(224) %294, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %298 unwind label %319

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

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

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

303:                                              ; preds = %262
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #6
  br label %305

305:                                              ; preds = %303, %301
  %.pn41 = phi { ptr, i32 } [ %304, %303 ], [ %302, %301 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %306

306:                                              ; preds = %305, %299
  %.pn41.pn = phi { ptr, i32 } [ %.pn41, %305 ], [ %300, %299 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  br label %.loopexit.split-lp

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

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

311:                                              ; preds = %285
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %318

313:                                              ; preds = %287
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %317

315:                                              ; preds = %288
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #6
  br label %317

317:                                              ; preds = %315, %313
  %.pn44 = phi { ptr, i32 } [ %316, %315 ], [ %314, %313 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %318

318:                                              ; preds = %317, %311
  %.pn44.pn = phi { ptr, i32 } [ %.pn44, %317 ], [ %312, %311 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  br label %.loopexit.split-lp

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %319, %318, %309, %307, %306, %245, %236, %234, %205, %194, %179, %164, %158, %110, %108, %106, %105, %100, %95
  %.pn47 = phi { ptr, i32 } [ %320, %319 ], [ %.pn44.pn, %318 ], [ %310, %309 ], [ %308, %307 ], [ %.pn41.pn, %306 ], [ %.pn38.pn, %245 ], [ %237, %236 ], [ %235, %234 ], [ %.pn36, %164 ], [ %.pn34, %179 ], [ %.pn32, %194 ], [ %.pn30, %205 ], [ %159, %158 ], [ %111, %110 ], [ %109, %108 ], [ %107, %106 ], [ %.pn28, %105 ], [ %.pn26, %100 ], [ %.pn, %95 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit53, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp54, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %321

321:                                              ; preds = %.loopexit.split-lp, %89
  %.pn47.pn = phi { ptr, i32 } [ %.pn47, %.loopexit.split-lp ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %322

322:                                              ; preds = %321, %87
  %.pn47.pn.pn = phi { ptr, i32 } [ %.pn47.pn, %321 ], [ %88, %87 ]
  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 %323

323:                                              ; preds = %322, %85
  %.pn47.pn.pn.pn = phi { ptr, i32 } [ %.pn47.pn.pn, %322 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  br label %324

324:                                              ; preds = %323, %83
  %.pn47.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn47.pn.pn.pn, %323 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  resume { ptr, i32 } %.pn47.pn.pn.pn.pn
}

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

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

declare i32 @__gxx_personality_v0(...)

declare void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(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 void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32), 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 #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

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


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