; LLVM IR from gem5/gem5 :: src/systemc/tests/systemc/misc/cae_test/general/control/case/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 i32, align 4
  %11 = alloca %"class.sc_dt::sc_bv", align 8
  %12 = alloca %"class.sc_dt::sc_bv", align 8
  %13 = alloca %"class.sc_dt::sc_bv", align 8
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca %"class.sc_dt::sc_bv", align 8
  %19 = alloca %"class.sc_dt::sc_bv", align 8
  %20 = alloca %"class.sc_dt::sc_bv", align 8
  %21 = alloca %"class.sc_dt::sc_bv", align 8
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca %"class.sc_dt::sc_unsigned", align 8
  %25 = alloca %"class.sc_dt::sc_unsigned", align 8
  %26 = alloca %"class.sc_dt::sc_bv", align 8
  %27 = alloca %"class.sc_dt::sc_biguint", align 8
  %28 = alloca i8, align 1
  %29 = alloca i8, align 1
  %30 = alloca %"class.sc_dt::sc_unsigned", align 8
  %31 = alloca %"class.sc_dt::sc_unsigned", align 8
  %32 = alloca %"class.sc_dt::sc_bv", align 8
  %33 = alloca %"class.sc_dt::sc_biguint", align 8
  %34 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %35 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %3) #4
  call void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #4
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %36 unwind label %92

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

37:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #4
  invoke void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 12)
          to label %38 unwind label %100

38:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #4
  invoke void @_ZN5sc_dt11sc_unsignedC1Ei(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 12)
          to label %39 unwind label %104

39:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  %40 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 2
  %41 = load ptr, ptr %40, align 8, !tbaa !9
  %42 = load ptr, ptr %41, align 8, !tbaa !41
  %43 = getelementptr inbounds ptr, ptr %42, i64 7
  %44 = load ptr, ptr %43, align 8
  %45 = invoke noundef nonnull align 1 dereferenceable(1) ptr %44(ptr noundef nonnull align 8 dereferenceable(224) %41)
          to label %46 unwind label %108

46:                                               ; preds = %39
  %47 = load i8, ptr %45, align 1, !tbaa !43, !range !44, !noundef !45
  %48 = trunc i8 %47 to i1
  %49 = zext i1 %48 to i32
  %50 = icmp eq i32 %49, 1
  br i1 %50, label %51, label %151

51:                                               ; preds = %46
  %52 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 7
  %53 = load ptr, ptr %52, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef 0)
          to label %54 unwind label %112

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

58:                                               ; preds = %54
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #4
  %59 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 8
  %60 = load ptr, ptr %59, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 0)
          to label %61 unwind label %121

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

65:                                               ; preds = %61
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #4
  %66 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 9
  %67 = load ptr, ptr %66, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 0)
          to label %68 unwind label %130

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

72:                                               ; preds = %68
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #4
  %73 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 10
  %74 = load ptr, ptr %73, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #4
  store i8 0, ptr %14, align 1, !tbaa !43
  %75 = load ptr, ptr %74, align 8, !tbaa !41
  %76 = getelementptr inbounds ptr, ptr %75, i64 14
  %77 = load ptr, ptr %76, align 8
  invoke void %77(ptr noundef nonnull align 8 dereferenceable(224) %74, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %78 unwind label %139

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

84:                                               ; preds = %78
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #4
  %85 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 12
  %86 = load ptr, ptr %85, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #4
  store i8 0, ptr %16, align 1, !tbaa !43
  %87 = load ptr, ptr %86, align 8, !tbaa !41
  %88 = getelementptr inbounds ptr, ptr %87, i64 14
  %89 = load ptr, ptr %88, align 8
  invoke void %89(ptr noundef nonnull align 8 dereferenceable(224) %86, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %90 unwind label %147

90:                                               ; preds = %84
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %91 unwind label %108

91:                                               ; preds = %90
  br label %153

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

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

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

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

108:                                              ; preds = %424, %414, %412, %396, %366, %365, %357, %350, %349, %333, %332, %331, %329, %327, %325, %309, %293, %292, %284, %277, %276, %259, %241, %240, %222, %221, %220, %202, %194, %193, %192, %191, %184, %182, %174, %167, %158, %156, %151, %90, %39
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %5, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %6, align 4
  br label %450

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

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

120:                                              ; preds = %116, %112
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #4
  br label %450

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

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

129:                                              ; preds = %125, %121
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #4
  br label %450

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

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

138:                                              ; preds = %134, %130
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #4
  br label %450

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

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

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

151:                                              ; preds = %46
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %152 unwind label %108

152:                                              ; preds = %151
  br label %153

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

154:                                              ; preds = %431, %153
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %162, %155
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %157 unwind label %108

157:                                              ; preds = %156
  br label %158

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

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

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

174:                                              ; preds = %167
  %175 = 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) %173)
          to label %176 unwind label %108

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

182:                                              ; preds = %176
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #4
  %183 = invoke noundef i32 @_ZNK5sc_dt11sc_unsigned7to_uintEv(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %184 unwind label %108

184:                                              ; preds = %182
  store i32 %183, ptr %10, align 4, !tbaa !56
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %185 unwind label %108

185:                                              ; preds = %184
  %186 = load i32, ptr %10, align 4, !tbaa !56
  switch i32 %186, label %252 [
    i32 4, label %191
    i32 3, label %213
    i32 2, label %233
  ]

187:                                              ; preds = %176
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %5, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #4
  br label %450

191:                                              ; preds = %185
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %192 unwind label %108

192:                                              ; preds = %191
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %193 unwind label %108

193:                                              ; preds = %192
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %194 unwind label %108

194:                                              ; preds = %193
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %195 unwind label %108

195:                                              ; preds = %194
  %196 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 7
  %197 = load ptr, ptr %196, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %18, i32 noundef 3)
          to label %198 unwind label %204

198:                                              ; preds = %195
  %199 = load ptr, ptr %197, align 8, !tbaa !41
  %200 = getelementptr inbounds ptr, ptr %199, i64 9
  %201 = load ptr, ptr %200, align 8
  invoke void %201(ptr noundef nonnull align 8 dereferenceable(232) %197, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %202 unwind label %208

202:                                              ; preds = %198
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %203 unwind label %108

203:                                              ; preds = %202
  br label %270

204:                                              ; preds = %195
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %5, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %6, align 4
  br label %212

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

212:                                              ; preds = %208, %204
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #4
  br label %450

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

216:                                              ; preds = %213
  %217 = load ptr, ptr %215, align 8, !tbaa !41
  %218 = getelementptr inbounds ptr, ptr %217, i64 9
  %219 = load ptr, ptr %218, align 8
  invoke void %219(ptr noundef nonnull align 8 dereferenceable(232) %215, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %220 unwind label %228

220:                                              ; preds = %216
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %221 unwind label %108

221:                                              ; preds = %220
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %222 unwind label %108

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

223:                                              ; preds = %222
  br label %270

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

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

232:                                              ; preds = %228, %224
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #4
  br label %450

233:                                              ; preds = %185
  %234 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 7
  %235 = load ptr, ptr %234, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %20, i32 noundef 1)
          to label %236 unwind label %243

236:                                              ; preds = %233
  %237 = load ptr, ptr %235, align 8, !tbaa !41
  %238 = getelementptr inbounds ptr, ptr %237, i64 9
  %239 = load ptr, ptr %238, align 8
  invoke void %239(ptr noundef nonnull align 8 dereferenceable(232) %235, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %240 unwind label %247

240:                                              ; preds = %236
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %241 unwind label %108

241:                                              ; preds = %240
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %242 unwind label %108

242:                                              ; preds = %241
  br label %270

243:                                              ; preds = %233
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %5, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %6, align 4
  br label %251

247:                                              ; preds = %236
  %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
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #4
  br label %251

251:                                              ; preds = %247, %243
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #4
  br label %450

252:                                              ; preds = %185
  %253 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 7
  %254 = load ptr, ptr %253, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %255 unwind label %261

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

259:                                              ; preds = %255
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %260 unwind label %108

260:                                              ; preds = %259
  br label %270

261:                                              ; preds = %252
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %5, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %6, align 4
  br label %269

265:                                              ; preds = %255
  %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
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #4
  br label %269

269:                                              ; preds = %265, %261
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #4
  br label %450

270:                                              ; preds = %260, %242, %223, %203
  %271 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 10
  %272 = load ptr, ptr %271, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #4
  store i8 0, ptr %22, align 1, !tbaa !43
  %273 = load ptr, ptr %272, align 8, !tbaa !41
  %274 = getelementptr inbounds ptr, ptr %273, i64 14
  %275 = load ptr, ptr %274, align 8
  invoke void %275(ptr noundef nonnull align 8 dereferenceable(224) %272, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %276 unwind label %297

276:                                              ; preds = %270
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %277 unwind label %108

277:                                              ; preds = %276
  %278 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 4
  %279 = load ptr, ptr %278, align 8, !tbaa !57
  %280 = load ptr, ptr %279, align 8, !tbaa !41
  %281 = getelementptr inbounds ptr, ptr %280, i64 5
  %282 = load ptr, ptr %281, align 8
  %283 = invoke noundef nonnull align 8 dereferenceable(24) ptr %282(ptr noundef nonnull align 8 dereferenceable(232) %279)
          to label %284 unwind label %108

284:                                              ; preds = %277
  %285 = 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) %283)
          to label %286 unwind label %108

286:                                              ; preds = %284
  %287 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 11
  %288 = load ptr, ptr %287, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #4
  store i8 1, ptr %23, align 1, !tbaa !43
  %289 = load ptr, ptr %288, align 8, !tbaa !41
  %290 = getelementptr inbounds ptr, ptr %289, i64 14
  %291 = load ptr, ptr %290, align 8
  invoke void %291(ptr noundef nonnull align 8 dereferenceable(224) %288, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %292 unwind label %301

292:                                              ; preds = %286
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %293 unwind label %108

293:                                              ; preds = %292
  %294 = invoke noundef i32 @_ZNK5sc_dt11sc_unsigned7to_uintEv(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %295 unwind label %108

295:                                              ; preds = %293
  store i32 %294, ptr %10, align 4, !tbaa !56
  %296 = load i32, ptr %10, align 4, !tbaa !56
  switch i32 %296, label %335 [
    i32 0, label %305
    i32 1, label %305
    i32 2, label %305
    i32 3, label %305
    i32 4, label %325
    i32 5, label %325
    i32 6, label %325
    i32 7, label %325
    i32 8, label %329
    i32 9, label %329
    i32 10, label %329
    i32 11, label %329
  ]

297:                                              ; preds = %270
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %5, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #4
  br label %450

301:                                              ; preds = %286
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %5, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #4
  br label %450

305:                                              ; preds = %295, %295, %295, %295
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #4
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %306 unwind label %311

306:                                              ; preds = %305
  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) %25, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %307 unwind label %315

307:                                              ; preds = %306
  %308 = 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) %24)
          to label %309 unwind label %319

309:                                              ; preds = %307
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %310 unwind label %108

310:                                              ; preds = %309
  br label %335

311:                                              ; preds = %305
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %5, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %6, align 4
  br label %324

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

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

323:                                              ; preds = %319, %315
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #4
  br label %324

324:                                              ; preds = %323, %311
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #4
  br label %450

325:                                              ; preds = %295, %295, %295, %295
  %326 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 4)
          to label %327 unwind label %108

327:                                              ; preds = %325
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %328 unwind label %108

328:                                              ; preds = %327
  br label %335

329:                                              ; preds = %295, %295, %295, %295
  %330 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 1)
          to label %331 unwind label %108

331:                                              ; preds = %329
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %332 unwind label %108

332:                                              ; preds = %331
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %333 unwind label %108

333:                                              ; preds = %332
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %334 unwind label %108

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334, %328, %310, %295
  %336 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 8
  %337 = load ptr, ptr %336, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #4
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %338 unwind label %370

338:                                              ; preds = %335
  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 %339 unwind label %374

339:                                              ; preds = %338
  %340 = load ptr, ptr %337, align 8, !tbaa !41
  %341 = getelementptr inbounds ptr, ptr %340, i64 9
  %342 = load ptr, ptr %341, align 8
  invoke void %342(ptr noundef nonnull align 8 dereferenceable(232) %337, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %343 unwind label %378

343:                                              ; preds = %339
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #4
  %344 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 11
  %345 = load ptr, ptr %344, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #4
  store i8 0, ptr %28, align 1, !tbaa !43
  %346 = load ptr, ptr %345, align 8, !tbaa !41
  %347 = getelementptr inbounds ptr, ptr %346, i64 14
  %348 = load ptr, ptr %347, align 8
  invoke void %348(ptr noundef nonnull align 8 dereferenceable(224) %345, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %349 unwind label %384

349:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %350 unwind label %108

350:                                              ; preds = %349
  %351 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 5
  %352 = load ptr, ptr %351, align 8, !tbaa !58
  %353 = load ptr, ptr %352, align 8, !tbaa !41
  %354 = getelementptr inbounds ptr, ptr %353, i64 5
  %355 = load ptr, ptr %354, align 8
  %356 = invoke noundef nonnull align 8 dereferenceable(24) ptr %355(ptr noundef nonnull align 8 dereferenceable(232) %352)
          to label %357 unwind label %108

357:                                              ; preds = %350
  %358 = 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) %356)
          to label %359 unwind label %108

359:                                              ; preds = %357
  %360 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 12
  %361 = load ptr, ptr %360, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #4
  store i8 1, ptr %29, 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) %29)
          to label %365 unwind label %388

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

366:                                              ; preds = %365
  %367 = invoke noundef i32 @_ZNK5sc_dt11sc_unsigned7to_uintEv(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %368 unwind label %108

368:                                              ; preds = %366
  store i32 %367, ptr %10, align 4, !tbaa !56
  %369 = load i32, ptr %10, align 4, !tbaa !56
  switch i32 %369, label %412 [
    i32 0, label %392
    i32 1, label %392
    i32 2, label %392
    i32 3, label %392
  ]

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

374:                                              ; preds = %338
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %5, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %6, align 4
  br label %382

378:                                              ; preds = %339
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %5, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #4
  br label %382

382:                                              ; preds = %378, %374
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #4
  br label %383

383:                                              ; preds = %382, %370
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #4
  br label %450

384:                                              ; preds = %343
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %5, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  br label %450

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

392:                                              ; preds = %368, %368, %368, %368
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #4
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %393 unwind label %398

393:                                              ; preds = %392
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind writable sret(%"class.sc_dt::sc_unsigned") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %394 unwind label %402

394:                                              ; preds = %393
  %395 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %396 unwind label %406

396:                                              ; preds = %394
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %397 unwind label %108

397:                                              ; preds = %396
  br label %416

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

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

406:                                              ; preds = %394
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %5, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %6, align 4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #4
  br label %410

410:                                              ; preds = %406, %402
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #4
  br label %411

411:                                              ; preds = %410, %398
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #4
  br label %450

412:                                              ; preds = %368
  %413 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 4)
          to label %414 unwind label %108

414:                                              ; preds = %412
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %415 unwind label %108

415:                                              ; preds = %414
  br label %416

416:                                              ; preds = %415, %397
  %417 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 9
  %418 = load ptr, ptr %417, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #4
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %419 unwind label %432

419:                                              ; preds = %416
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %420 unwind label %436

420:                                              ; preds = %419
  %421 = load ptr, ptr %418, align 8, !tbaa !41
  %422 = getelementptr inbounds ptr, ptr %421, i64 9
  %423 = load ptr, ptr %422, align 8
  invoke void %423(ptr noundef nonnull align 8 dereferenceable(232) %418, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %424 unwind label %440

424:                                              ; preds = %420
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %35)
          to label %425 unwind label %108

425:                                              ; preds = %424
  %426 = getelementptr inbounds %struct.fsm, ptr %35, i32 0, i32 12
  %427 = load ptr, ptr %426, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #4
  store i8 0, ptr %34, align 1, !tbaa !43
  %428 = load ptr, ptr %427, align 8, !tbaa !41
  %429 = getelementptr inbounds ptr, ptr %428, i64 14
  %430 = load ptr, ptr %429, align 8
  invoke void %430(ptr noundef nonnull align 8 dereferenceable(224) %427, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %431 unwind label %446

431:                                              ; preds = %425
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #4
  br label %154, !llvm.loop !59

432:                                              ; preds = %416
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %5, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %6, align 4
  br label %445

436:                                              ; preds = %419
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %5, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %6, align 4
  br label %444

440:                                              ; preds = %420
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %5, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #4
  br label %444

444:                                              ; preds = %440, %436
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #4
  br label %445

445:                                              ; preds = %444, %432
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #4
  br label %450

446:                                              ; preds = %425
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %5, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #4
  br label %450

450:                                              ; preds = %446, %445, %411, %388, %384, %383, %324, %301, %297, %269, %251, %232, %212, %187, %147, %143, %139, %138, %129, %120, %108
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #4
  br label %451

451:                                              ; preds = %450, %104
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #4
  br label %452

452:                                              ; preds = %451, %100
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #4
  br label %453

453:                                              ; preds = %452, %96
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #4
  br label %454

454:                                              ; preds = %453, %92
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #4
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #4
  br label %455

455:                                              ; preds = %454
  %456 = load ptr, ptr %5, align 8
  %457 = load i32, ptr %6, align 4
  %458 = insertvalue { ptr, i32 } poison, ptr %456, 0
  %459 = insertvalue { ptr, i32 } %458, i32 %457, 1
  resume { ptr, i32 } %459
}

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

declare noundef i32 @_ZNK5sc_dt11sc_unsigned7to_uintEv(ptr noundef nonnull align 8 dereferenceable(32)) #2

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

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 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 @_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 #3 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 416}
!10 = !{!"_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 = !{!32, !32, i64 0}
!57 = !{!10, !6, i64 432}
!58 = !{!10, !6, i64 440}
!59 = distinct !{!59, !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_unsigned", align 8
  %27 = alloca %"class.sc_dt::sc_unsigned", align 8
  %28 = alloca %"class.sc_dt::sc_bv", align 8
  %29 = alloca %"class.sc_dt::sc_biguint", align 8
  %30 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #5
  call void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %31 unwind label %84

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

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

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

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

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

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

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

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

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

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

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

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

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

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

83:                                               ; preds = %77
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #5
  br label %.invoke65

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

86:                                               ; preds = %31
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %331

88:                                               ; preds = %32
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %330

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

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

.loopexit.split-lp.loopexit:                      ; preds = %.invoke66, %.invoke64, %.invoke63, %.invoke, %312, %303, %275, %274, %267, %261, %260, %247, %246, %244, %242, %222, %221, %214, %208, %207, %172, %153, %152, %151, %150, %146, %144, %137, %131
  %lpad.loopexit60 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.backedge:                                        ; preds = %128, %318
  br label %124, !llvm.loop !52

131:                                              ; preds = %128
  %132 = load ptr, ptr %115, align 8, !tbaa !54
  %133 = load ptr, ptr %132, align 8, !tbaa !40
  %134 = getelementptr inbounds i8, ptr %133, i64 40
  %135 = load ptr, ptr %134, align 8
  %136 = invoke noundef nonnull align 8 dereferenceable(24) ptr %135(ptr noundef nonnull align 8 dereferenceable(232) %132)
          to label %137 unwind label %.loopexit.split-lp.loopexit

137:                                              ; preds = %131
  %138 = 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) %136)
          to label %139 unwind label %.loopexit.split-lp.loopexit

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

144:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #5
  %145 = invoke noundef i32 @_ZNK5sc_dt11sc_unsigned7to_uintEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %146 unwind label %.loopexit.split-lp.loopexit

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

147:                                              ; preds = %146
  switch i32 %145, label %190 [
    i32 4, label %150
    i32 3, label %166
    i32 2, label %178
  ]

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

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

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

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

154:                                              ; preds = %153
  %155 = load ptr, ptr %117, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 3)
          to label %156 unwind label %161

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

160:                                              ; preds = %156
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #5
  br label %.invoke64

161:                                              ; preds = %154
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %165

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

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

166:                                              ; preds = %147
  %167 = load ptr, ptr %117, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 2)
          to label %168 unwind label %173

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

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

173:                                              ; preds = %166
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %168
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #5
  br label %177

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

178:                                              ; preds = %147
  %179 = load ptr, ptr %117, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 1)
          to label %180 unwind label %185

180:                                              ; preds = %178
  %181 = load ptr, ptr %179, align 8, !tbaa !40
  %182 = getelementptr inbounds i8, ptr %181, i64 72
  %183 = load ptr, ptr %182, align 8
  invoke void %183(ptr noundef nonnull align 8 dereferenceable(232) %179, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %184 unwind label %187

184:                                              ; preds = %180
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #5
  br label %.invoke66

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

185:                                              ; preds = %178
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %180
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #5
  br label %189

189:                                              ; preds = %187, %185
  %.pn34 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #5
  br label %.loopexit.split-lp

190:                                              ; preds = %147
  %191 = load ptr, ptr %117, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #5
  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 %192 unwind label %197

192:                                              ; preds = %190
  %193 = load ptr, ptr %191, align 8, !tbaa !40
  %194 = getelementptr inbounds i8, ptr %193, i64 72
  %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 %199

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 nonnull %17) #5
  br label %.invoke64

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

197:                                              ; preds = %190
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %201

199:                                              ; preds = %192
  %200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  br label %201

201:                                              ; preds = %199, %197
  %.pn40 = phi { ptr, i32 } [ %200, %199 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #5
  br label %.loopexit.split-lp

202:                                              ; preds = %.invoke64
  %203 = load ptr, ptr %116, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #5
  store i8 0, ptr %18, align 1, !tbaa !42
  %204 = load ptr, ptr %203, align 8, !tbaa !40
  %205 = getelementptr inbounds i8, ptr %204, i64 112
  %206 = load ptr, ptr %205, align 8
  invoke void %206(ptr noundef nonnull align 8 dereferenceable(224) %203, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %207 unwind label %225

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

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

214:                                              ; preds = %208
  %215 = 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) %213)
          to label %216 unwind label %.loopexit.split-lp.loopexit

216:                                              ; preds = %214
  %217 = load ptr, ptr %119, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #5
  store i8 1, ptr %19, align 1, !tbaa !42
  %218 = load ptr, ptr %217, align 8, !tbaa !40
  %219 = getelementptr inbounds i8, ptr %218, i64 112
  %220 = load ptr, ptr %219, align 8
  invoke void %220(ptr noundef nonnull align 8 dereferenceable(224) %217, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %221 unwind label %227

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

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

224:                                              ; preds = %222
  switch i32 %223, label %248 [
    i32 0, label %229
    i32 1, label %229
    i32 2, label %229
    i32 3, label %229
    i32 4, label %242
    i32 5, label %242
    i32 6, label %242
    i32 7, label %242
    i32 8, label %244
    i32 9, label %244
    i32 10, label %244
    i32 11, label %244
  ]

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

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

229:                                              ; preds = %224, %224, %224, %224
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #5
  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 %234

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 %236

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 %238

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

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

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

238:                                              ; preds = %231
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #5
  br label %240

240:                                              ; preds = %238, %236
  %.pn42 = phi { ptr, i32 } [ %239, %238 ], [ %237, %236 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  br label %241

241:                                              ; preds = %240, %234
  %.pn42.pn = phi { ptr, i32 } [ %.pn42, %240 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #5
  br label %.loopexit.split-lp

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

244:                                              ; preds = %224, %224, %224, %224
  %245 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef 1)
          to label %246 unwind label %.loopexit.split-lp.loopexit

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

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

.invoke63:                                        ; preds = %247, %242, %233
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %248 unwind label %.loopexit.split-lp.loopexit

248:                                              ; preds = %.invoke63, %224
  %249 = load ptr, ptr %120, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #5
  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 %250 unwind label %278

250:                                              ; preds = %248
  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 %251 unwind label %280

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

255:                                              ; preds = %251
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #5
  %256 = load ptr, ptr %119, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #5
  store i8 0, ptr %24, align 1, !tbaa !42
  %257 = load ptr, ptr %256, align 8, !tbaa !40
  %258 = getelementptr inbounds i8, ptr %257, i64 112
  %259 = load ptr, ptr %258, align 8
  invoke void %259(ptr noundef nonnull align 8 dereferenceable(224) %256, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %260 unwind label %286

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

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

267:                                              ; preds = %261
  %268 = 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) %266)
          to label %269 unwind label %.loopexit.split-lp.loopexit

269:                                              ; preds = %267
  %270 = load ptr, ptr %122, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #5
  store i8 1, ptr %25, align 1, !tbaa !42
  %271 = load ptr, ptr %270, align 8, !tbaa !40
  %272 = getelementptr inbounds i8, ptr %271, i64 112
  %273 = load ptr, ptr %272, align 8
  invoke void %273(ptr noundef nonnull align 8 dereferenceable(224) %270, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %274 unwind label %288

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

275:                                              ; preds = %274
  %276 = invoke noundef i32 @_ZNK5sc_dt11sc_unsigned7to_uintEv(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %277 unwind label %.loopexit.split-lp.loopexit

277:                                              ; preds = %275
  %switch = icmp ult i32 %276, 4
  br i1 %switch, label %290, label %303

278:                                              ; preds = %248
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %285

280:                                              ; preds = %250
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %284

282:                                              ; preds = %251
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #5
  br label %284

284:                                              ; preds = %282, %280
  %.pn45 = phi { ptr, i32 } [ %283, %282 ], [ %281, %280 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  br label %285

285:                                              ; preds = %284, %278
  %.pn45.pn = phi { ptr, i32 } [ %.pn45, %284 ], [ %279, %278 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #5
  br label %.loopexit.split-lp

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

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

290:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #5
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %291 unwind label %295

291:                                              ; preds = %290
  invoke void @_ZN5sc_dtmlERKNS_11sc_unsignedES2_(ptr dead_on_unwind nonnull writable sret(%"class.sc_dt::sc_unsigned") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %292 unwind label %297

292:                                              ; preds = %291
  %293 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %294 unwind label %299

294:                                              ; preds = %292
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #5
  br label %.invoke

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

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

299:                                              ; preds = %292
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  br label %301

301:                                              ; preds = %299, %297
  %.pn48 = phi { ptr, i32 } [ %300, %299 ], [ %298, %297 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  br label %302

302:                                              ; preds = %301, %295
  %.pn48.pn = phi { ptr, i32 } [ %.pn48, %301 ], [ %296, %295 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #5
  br label %.loopexit.split-lp

303:                                              ; preds = %277
  %304 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt11sc_unsignedaSEi(ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 4)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit

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

305:                                              ; preds = %.invoke
  %306 = load ptr, ptr %123, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #5
  invoke void @_ZN5sc_dt10sc_biguintILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %307 unwind label %319

307:                                              ; preds = %305
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %308 unwind label %321

308:                                              ; preds = %307
  %309 = load ptr, ptr %306, align 8, !tbaa !40
  %310 = getelementptr inbounds i8, ptr %309, i64 72
  %311 = load ptr, ptr %310, align 8
  invoke void %311(ptr noundef nonnull align 8 dereferenceable(232) %306, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %312 unwind label %323

312:                                              ; preds = %308
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %313 unwind label %.loopexit.split-lp.loopexit

313:                                              ; preds = %312
  %314 = load ptr, ptr %122, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #5
  store i8 0, ptr %30, align 1, !tbaa !42
  %315 = load ptr, ptr %314, align 8, !tbaa !40
  %316 = getelementptr inbounds i8, ptr %315, i64 112
  %317 = load ptr, ptr %316, align 8
  invoke void %317(ptr noundef nonnull align 8 dereferenceable(224) %314, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %318 unwind label %327

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

319:                                              ; preds = %305
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %326

321:                                              ; preds = %307
  %322 = landingpad { ptr, i32 }
          cleanup
  br label %325

323:                                              ; preds = %308
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #5
  br label %325

325:                                              ; preds = %323, %321
  %.pn51 = phi { ptr, i32 } [ %324, %323 ], [ %322, %321 ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  br label %326

326:                                              ; preds = %325, %319
  %.pn51.pn = phi { ptr, i32 } [ %.pn51, %325 ], [ %320, %319 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #5
  br label %.loopexit.split-lp

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %327, %326, %302, %288, %286, %285, %241, %227, %225, %201, %189, %177, %165, %148, %111, %109, %107, %106, %101, %96
  %.pn54 = phi { ptr, i32 } [ %328, %327 ], [ %.pn51.pn, %326 ], [ %.pn48.pn, %302 ], [ %289, %288 ], [ %287, %286 ], [ %.pn45.pn, %285 ], [ %.pn42.pn, %241 ], [ %228, %227 ], [ %226, %225 ], [ %.pn40, %201 ], [ %.pn34, %189 ], [ %.pn36, %177 ], [ %.pn38, %165 ], [ %149, %148 ], [ %112, %111 ], [ %110, %109 ], [ %108, %107 ], [ %.pn32, %106 ], [ %.pn30, %101 ], [ %.pn, %96 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit60, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp61, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #5
  br label %329

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

330:                                              ; preds = %329, %88
  %.pn54.pn.pn = phi { ptr, i32 } [ %.pn54.pn, %329 ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  br label %331

331:                                              ; preds = %330, %86
  %.pn54.pn.pn.pn = phi { ptr, i32 } [ %.pn54.pn.pn, %330 ], [ %87, %86 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  br label %332

332:                                              ; preds = %331, %84
  %.pn54.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn54.pn.pn.pn, %331 ], [ %85, %84 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #5
  call void @_ZN5sc_dt11sc_unsignedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #5
  resume { ptr, i32 } %.pn54.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 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

declare noundef i32 @_ZNK5sc_dt11sc_unsigned7to_uintEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #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 #2 align 2

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 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 @_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 #4 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !9, i64 416}
!6 = !{!"_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