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

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

%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_lv" = type { %"class.sc_dt::sc_lv_base" }
%"class.sc_dt::sc_lv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy.0", i32, i32, ptr }
%"class.sc_dt::sc_proxy.0" = type { ptr }
%struct.if_test = type { %"class.sc_core::sc_module", %"class.sc_core::sc_in", ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.sc_core::sc_module" = type { %"class.sc_core::sc_object", %"class.sc_core::sc_process_host", %"class.sc_core::sc_sensitive", %"class.sc_core::sc_sensitive_pos", %"class.sc_core::sc_sensitive_neg", i8, ptr, i32, ptr, ptr }
%"class.sc_core::sc_object" = type { ptr, ptr, %"class.std::vector", %"class.std::vector.1", %"class.std::__cxx11::basic_string", ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_event *, std::allocator<sc_core::sc_event *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_object *, std::allocator<sc_core::sc_object *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.sc_core::sc_process_host" = type { ptr }
%"class.sc_core::sc_sensitive" = type { ptr, i32, ptr }
%"class.sc_core::sc_sensitive_pos" = type { ptr, i32, ptr }
%"class.sc_core::sc_sensitive_neg" = type { ptr, i32, ptr }
%"class.sc_core::sc_in" = type { %"class.sc_core::sc_port", ptr, ptr, ptr, ptr }
%"class.sc_core::sc_port" = type { %"class.sc_core::sc_port_b" }
%"class.sc_core::sc_port_b" = type { %"class.sc_core::sc_port_base", ptr, %"class.std::vector.9" }
%"class.sc_core::sc_port_base" = type { %"class.sc_core::sc_object", ptr }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl" }
%"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sc_core::sc_signal_in_if<bool> *, std::allocator<sc_core::sc_signal_in_if<bool> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7if_test5entryEv(ptr noundef nonnull align 8 dereferenceable(520) %0) #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.sc_dt::sc_biguint", align 8
  %4 = alloca %"class.sc_dt::sc_bigint", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.sc_dt::sc_lv", align 8
  %8 = alloca %"class.sc_dt::sc_bv", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.sc_dt::sc_bv", align 8
  %11 = alloca %"class.sc_dt::sc_bv", align 8
  %12 = alloca %"class.sc_dt::sc_bv", align 8
  %13 = alloca %"class.sc_dt::sc_bv", align 8
  %14 = alloca i32, align 4
  %15 = alloca i8, align 1
  %16 = alloca %"class.sc_dt::sc_bv", align 8
  %17 = alloca %"class.sc_dt::sc_bv", align 8
  %18 = alloca %"class.sc_dt::sc_bv", align 8
  %19 = alloca %"class.sc_dt::sc_bv", align 8
  %20 = alloca %"class.sc_dt::sc_bv", align 8
  %21 = alloca %"class.sc_dt::sc_bv", align 8
  %22 = alloca %"class.sc_dt::sc_bv", align 8
  %23 = alloca %"class.sc_dt::sc_bv", align 8
  %24 = alloca i32, align 4
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %27 = 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_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %28 unwind label %84

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

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

30:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %31 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 2
  %32 = load ptr, ptr %31, align 8, !tbaa !9
  %33 = load ptr, ptr %32, align 8, !tbaa !41
  %34 = getelementptr inbounds ptr, ptr %33, i64 7
  %35 = load ptr, ptr %34, align 8
  %36 = invoke noundef nonnull align 1 dereferenceable(1) ptr %35(ptr noundef nonnull align 8 dereferenceable(224) %32)
          to label %37 unwind label %96

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

42:                                               ; preds = %37
  %43 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 9
  %44 = load ptr, ptr %43, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 0)
          to label %45 unwind label %100

45:                                               ; preds = %42
  %46 = load ptr, ptr %44, align 8, !tbaa !41
  %47 = getelementptr inbounds ptr, ptr %46, i64 9
  %48 = load ptr, ptr %47, align 8
  invoke void %48(ptr noundef nonnull align 8 dereferenceable(232) %44, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %49 unwind label %104

49:                                               ; preds = %45
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #4
  %50 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 10
  %51 = load ptr, ptr %50, align 8, !tbaa !47
  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 %52 unwind label %109

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

56:                                               ; preds = %52
  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
  %57 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 11
  %58 = load ptr, ptr %57, align 8, !tbaa !48
  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 %59 unwind label %118

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

63:                                               ; preds = %59
  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
  %64 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 12
  %65 = load ptr, ptr %64, align 8, !tbaa !49
  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 %66 unwind label %127

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

70:                                               ; preds = %66
  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
  %71 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 13
  %72 = load ptr, ptr %71, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !51
  %73 = load ptr, ptr %72, align 8, !tbaa !41
  %74 = getelementptr inbounds ptr, ptr %73, i64 9
  %75 = load ptr, ptr %74, align 8
  invoke void %75(ptr noundef nonnull align 8 dereferenceable(196) %72, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %76 unwind label %136

76:                                               ; preds = %70
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  %77 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 14
  %78 = load ptr, ptr %77, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #4
  store i8 0, ptr %15, align 1, !tbaa !43
  %79 = load ptr, ptr %78, align 8, !tbaa !41
  %80 = getelementptr inbounds ptr, ptr %79, i64 14
  %81 = load ptr, ptr %80, align 8
  invoke void %81(ptr noundef nonnull align 8 dereferenceable(224) %78, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %82 unwind label %140

82:                                               ; preds = %76
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %83 unwind label %96

83:                                               ; preds = %82
  br label %146

84:                                               ; preds = %1
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %5, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %6, align 4
  br label %417

88:                                               ; preds = %28
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %5, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %6, align 4
  br label %416

92:                                               ; preds = %29
  %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 %415

96:                                               ; preds = %394, %387, %373, %366, %363, %352, %334, %333, %323, %312, %294, %284, %283, %244, %224, %203, %196, %194, %187, %185, %178, %176, %169, %167, %160, %151, %149, %144, %82, %30
  %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 %414

100:                                              ; preds = %42
  %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 %108

104:                                              ; preds = %45
  %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
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #4
  br label %108

108:                                              ; preds = %104, %100
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #4
  br label %414

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

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

117:                                              ; preds = %113, %109
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #4
  br label %414

118:                                              ; preds = %56
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %5, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %6, align 4
  br label %126

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

126:                                              ; preds = %122, %118
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #4
  br label %414

127:                                              ; preds = %63
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %5, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %6, align 4
  br label %135

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

135:                                              ; preds = %131, %127
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #4
  br label %414

136:                                              ; preds = %70
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %5, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %414

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

144:                                              ; preds = %37
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %145 unwind label %96

145:                                              ; preds = %144
  br label %146

146:                                              ; preds = %145, %83
  br label %147

147:                                              ; preds = %401, %146
  br label %148

148:                                              ; preds = %147
  br label %149

149:                                              ; preds = %155, %148
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %150 unwind label %96

150:                                              ; preds = %149
  br label %151

151:                                              ; preds = %150
  %152 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 8
  %153 = load ptr, ptr %152, align 8, !tbaa !53
  %154 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK7sc_core9sc_signalIbLNS_16sc_writer_policyE0EEcvRKbEv(ptr noundef nonnull align 8 dereferenceable(224) %153)
          to label %155 unwind label %96

155:                                              ; preds = %151
  %156 = load i8, ptr %154, align 1, !tbaa !43, !range !44, !noundef !45
  %157 = trunc i8 %156 to i1
  %158 = zext i1 %157 to i32
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %149, label %160, !llvm.loop !54

160:                                              ; preds = %155
  %161 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 3
  %162 = load ptr, ptr %161, align 8, !tbaa !56
  %163 = load ptr, ptr %162, align 8, !tbaa !41
  %164 = getelementptr inbounds ptr, ptr %163, i64 5
  %165 = load ptr, ptr %164, align 8
  %166 = invoke noundef nonnull align 8 dereferenceable(24) ptr %165(ptr noundef nonnull align 8 dereferenceable(232) %162)
          to label %167 unwind label %96

167:                                              ; preds = %160
  %168 = 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) %166)
          to label %169 unwind label %96

169:                                              ; preds = %167
  %170 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 4
  %171 = load ptr, ptr %170, align 8, !tbaa !57
  %172 = load ptr, ptr %171, align 8, !tbaa !41
  %173 = getelementptr inbounds ptr, ptr %172, i64 5
  %174 = load ptr, ptr %173, align 8
  %175 = invoke noundef nonnull align 8 dereferenceable(24) ptr %174(ptr noundef nonnull align 8 dereferenceable(232) %171)
          to label %176 unwind label %96

176:                                              ; preds = %169
  %177 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %175)
          to label %178 unwind label %96

178:                                              ; preds = %176
  %179 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 5
  %180 = load ptr, ptr %179, align 8, !tbaa !58
  %181 = load ptr, ptr %180, align 8, !tbaa !41
  %182 = getelementptr inbounds ptr, ptr %181, i64 5
  %183 = load ptr, ptr %182, align 8
  %184 = invoke noundef nonnull align 8 dereferenceable(24) ptr %183(ptr noundef nonnull align 8 dereferenceable(232) %180)
          to label %185 unwind label %96

185:                                              ; preds = %178
  %186 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt5sc_lvILi4EEaSINS_10sc_bv_baseEEERS1_RKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %184)
          to label %187 unwind label %96

187:                                              ; preds = %185
  %188 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 6
  %189 = load ptr, ptr %188, align 8, !tbaa !59
  %190 = load ptr, ptr %189, align 8, !tbaa !41
  %191 = getelementptr inbounds ptr, ptr %190, i64 5
  %192 = load ptr, ptr %191, align 8
  %193 = invoke noundef nonnull align 8 dereferenceable(24) ptr %192(ptr noundef nonnull align 8 dereferenceable(232) %189)
          to label %194 unwind label %96

194:                                              ; preds = %187
  %195 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5sc_dt5sc_bvILi4EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %193)
          to label %196 unwind label %96

196:                                              ; preds = %194
  %197 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 7
  %198 = load ptr, ptr %197, align 8, !tbaa !60
  %199 = load ptr, ptr %198, align 8, !tbaa !41
  %200 = getelementptr inbounds ptr, ptr %199, i64 5
  %201 = load ptr, ptr %200, align 8
  %202 = invoke noundef nonnull align 4 dereferenceable(4) ptr %201(ptr noundef nonnull align 8 dereferenceable(196) %198)
          to label %203 unwind label %96

203:                                              ; preds = %196
  %204 = load i32, ptr %202, align 4, !tbaa !51
  store i32 %204, ptr %9, align 4, !tbaa !51
  %205 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 4)
          to label %206 unwind label %96

206:                                              ; preds = %203
  br i1 %205, label %207, label %224

207:                                              ; preds = %206
  %208 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 9
  %209 = load ptr, ptr %208, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 3)
          to label %210 unwind label %215

210:                                              ; preds = %207
  %211 = load ptr, ptr %209, align 8, !tbaa !41
  %212 = getelementptr inbounds ptr, ptr %211, i64 9
  %213 = load ptr, ptr %212, align 8
  invoke void %213(ptr noundef nonnull align 8 dereferenceable(232) %209, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %214 unwind label %219

214:                                              ; preds = %210
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #4
  br label %283

215:                                              ; preds = %207
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %5, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %6, align 4
  br label %223

219:                                              ; preds = %210
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %5, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #4
  br label %223

223:                                              ; preds = %219, %215
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #4
  br label %414

224:                                              ; preds = %206
  %225 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 3)
          to label %226 unwind label %96

226:                                              ; preds = %224
  br i1 %225, label %227, label %244

227:                                              ; preds = %226
  %228 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 9
  %229 = load ptr, ptr %228, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %17, i32 noundef 2)
          to label %230 unwind label %235

230:                                              ; preds = %227
  %231 = load ptr, ptr %229, align 8, !tbaa !41
  %232 = getelementptr inbounds ptr, ptr %231, i64 9
  %233 = load ptr, ptr %232, align 8
  invoke void %233(ptr noundef nonnull align 8 dereferenceable(232) %229, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %234 unwind label %239

234:                                              ; preds = %230
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #4
  br label %282

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

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

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

244:                                              ; preds = %226
  %245 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 2)
          to label %246 unwind label %96

246:                                              ; preds = %244
  br i1 %245, label %247, label %264

247:                                              ; preds = %246
  %248 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 9
  %249 = load ptr, ptr %248, 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 1)
          to label %250 unwind label %255

250:                                              ; preds = %247
  %251 = load ptr, ptr %249, align 8, !tbaa !41
  %252 = getelementptr inbounds ptr, ptr %251, i64 9
  %253 = load ptr, ptr %252, align 8
  invoke void %253(ptr noundef nonnull align 8 dereferenceable(232) %249, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %254 unwind label %259

254:                                              ; preds = %250
  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
  br label %281

255:                                              ; preds = %247
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %5, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %6, align 4
  br label %263

259:                                              ; preds = %250
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %5, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #4
  br label %263

263:                                              ; preds = %259, %255
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #4
  br label %414

264:                                              ; preds = %246
  %265 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 9
  %266 = load ptr, ptr %265, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_11sc_unsignedE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %267 unwind label %272

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

271:                                              ; preds = %267
  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
  br label %281

272:                                              ; preds = %264
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %5, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %6, align 4
  br label %280

276:                                              ; preds = %267
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %5, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #4
  br label %280

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

281:                                              ; preds = %271, %254
  br label %282

282:                                              ; preds = %281, %234
  br label %283

283:                                              ; preds = %282, %214
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %284 unwind label %96

284:                                              ; preds = %283
  %285 = invoke noundef zeroext i1 @_ZN5sc_dtltERKNS_9sc_signedEi(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 6)
          to label %286 unwind label %96

286:                                              ; preds = %284
  br i1 %285, label %287, label %305

287:                                              ; preds = %286
  %288 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 10
  %289 = load ptr, ptr %288, align 8, !tbaa !47
  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 0)
          to label %290 unwind label %296

290:                                              ; preds = %287
  %291 = load ptr, ptr %289, align 8, !tbaa !41
  %292 = getelementptr inbounds ptr, ptr %291, i64 9
  %293 = load ptr, ptr %292, align 8
  invoke void %293(ptr noundef nonnull align 8 dereferenceable(232) %289, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %294 unwind label %300

294:                                              ; preds = %290
  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) %27)
          to label %295 unwind label %96

295:                                              ; preds = %294
  br label %323

296:                                              ; preds = %287
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %5, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %6, align 4
  br label %304

300:                                              ; preds = %290
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %5, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #4
  br label %304

304:                                              ; preds = %300, %296
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #4
  br label %414

305:                                              ; preds = %286
  %306 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 10
  %307 = load ptr, ptr %306, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %308 unwind label %314

308:                                              ; preds = %305
  %309 = load ptr, ptr %307, align 8, !tbaa !41
  %310 = getelementptr inbounds ptr, ptr %309, i64 9
  %311 = load ptr, ptr %310, align 8
  invoke void %311(ptr noundef nonnull align 8 dereferenceable(232) %307, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %312 unwind label %318

312:                                              ; preds = %308
  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) %27)
          to label %313 unwind label %96

313:                                              ; preds = %312
  br label %323

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

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

322:                                              ; preds = %318, %314
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #4
  br label %414

323:                                              ; preds = %313, %295
  %324 = invoke noundef zeroext i1 @_ZNK5sc_dt8sc_proxyINS_10sc_lv_baseEEeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef @.str)
          to label %325 unwind label %96

325:                                              ; preds = %323
  br i1 %324, label %326, label %345

326:                                              ; preds = %325
  %327 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 11
  %328 = load ptr, ptr %327, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %22, i32 noundef 1)
          to label %329 unwind label %336

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

333:                                              ; preds = %329
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %334 unwind label %96

334:                                              ; preds = %333
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %335 unwind label %96

335:                                              ; preds = %334
  br label %363

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

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

344:                                              ; preds = %340, %336
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #4
  br label %414

345:                                              ; preds = %325
  %346 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 11
  %347 = load ptr, ptr %346, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #4
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2INS_10sc_lv_baseEEERKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %348 unwind label %354

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

352:                                              ; preds = %348
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %353 unwind label %96

353:                                              ; preds = %352
  br label %363

354:                                              ; preds = %345
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %5, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %6, align 4
  br label %362

358:                                              ; preds = %348
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %5, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %6, align 4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #4
  br label %362

362:                                              ; preds = %358, %354
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #4
  br label %414

363:                                              ; preds = %353, %335
  %364 = invoke noundef zeroext i1 @_ZN5sc_dtneINS_10sc_bv_baseEEEbRKNS_8sc_proxyIT_EEPKc(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef @.str.2)
          to label %365 unwind label %96

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

366:                                              ; preds = %365
  %367 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 12
  %368 = load ptr, ptr %367, align 8, !tbaa !49
  %369 = load ptr, ptr %368, align 8, !tbaa !41
  %370 = getelementptr inbounds ptr, ptr %369, i64 9
  %371 = load ptr, ptr %370, align 8
  invoke void %371(ptr noundef nonnull align 8 dereferenceable(232) %368, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %372 unwind label %96

372:                                              ; preds = %366
  br label %373

373:                                              ; preds = %372, %365
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %374 unwind label %96

374:                                              ; preds = %373
  %375 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 13
  %376 = load ptr, ptr %375, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %377 = load i32, ptr %9, align 4, !tbaa !51
  %378 = icmp sge i32 %377, 6
  br i1 %378, label %379, label %380

379:                                              ; preds = %374
  br label %382

380:                                              ; preds = %374
  %381 = load i32, ptr %9, align 4, !tbaa !51
  br label %382

382:                                              ; preds = %380, %379
  %383 = phi i32 [ 0, %379 ], [ %381, %380 ]
  store i32 %383, ptr %24, align 4, !tbaa !51
  %384 = load ptr, ptr %376, align 8, !tbaa !41
  %385 = getelementptr inbounds ptr, ptr %384, i64 9
  %386 = load ptr, ptr %385, align 8
  invoke void %386(ptr noundef nonnull align 8 dereferenceable(196) %376, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %387 unwind label %402

387:                                              ; preds = %382
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %388 unwind label %96

388:                                              ; preds = %387
  %389 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 14
  %390 = load ptr, ptr %389, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #4
  store i8 1, ptr %25, align 1, !tbaa !43
  %391 = load ptr, ptr %390, align 8, !tbaa !41
  %392 = getelementptr inbounds ptr, ptr %391, i64 14
  %393 = load ptr, ptr %392, align 8
  invoke void %393(ptr noundef nonnull align 8 dereferenceable(224) %390, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %394 unwind label %406

394:                                              ; preds = %388
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %27)
          to label %395 unwind label %96

395:                                              ; preds = %394
  %396 = getelementptr inbounds %struct.if_test, ptr %27, i32 0, i32 14
  %397 = load ptr, ptr %396, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #4
  store i8 0, ptr %26, align 1, !tbaa !43
  %398 = load ptr, ptr %397, align 8, !tbaa !41
  %399 = getelementptr inbounds ptr, ptr %398, i64 14
  %400 = load ptr, ptr %399, align 8
  invoke void %400(ptr noundef nonnull align 8 dereferenceable(224) %397, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %401 unwind label %410

401:                                              ; preds = %395
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #4
  br label %147, !llvm.loop !61

402:                                              ; preds = %382
  %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
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  br label %414

406:                                              ; preds = %388
  %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 @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  br label %414

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

414:                                              ; preds = %410, %406, %402, %362, %344, %322, %304, %280, %263, %243, %223, %140, %136, %135, %126, %117, %108, %96
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #4
  br label %415

415:                                              ; preds = %414, %92
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #4
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #4
  br label %416

416:                                              ; preds = %415, %88
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #4
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #4
  br label %417

417:                                              ; preds = %416, %84
  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 %418

418:                                              ; preds = %417
  %419 = load ptr, ptr %5, align 8
  %420 = load i32, ptr %6, align 4
  %421 = insertvalue { ptr, i32 } poison, ptr %419, 0
  %422 = insertvalue { ptr, i32 } %421, i32 %420, 1
  resume { ptr, i32 } %422
}

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!"_ZTS7if_test", !11, i64 0, !33, i64 232, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512}
!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 472}
!47 = !{!10, !6, i64 480}
!48 = !{!10, !6, i64 488}
!49 = !{!10, !6, i64 496}
!50 = !{!10, !6, i64 504}
!51 = !{!32, !32, i64 0}
!52 = !{!10, !6, i64 512}
!53 = !{!10, !6, i64 464}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!10, !6, i64 424}
!57 = !{!10, !6, i64 432}
!58 = !{!10, !6, i64 440}
!59 = !{!10, !6, i64 448}
!60 = !{!10, !6, i64 456}
!61 = distinct !{!61, !55}


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

%"class.sc_dt::sc_biguint" = type { %"class.sc_dt::sc_unsigned" }
%"class.sc_dt::sc_unsigned" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_value_base" = type { ptr }
%"class.sc_dt::sc_bigint" = type { %"class.sc_dt::sc_signed" }
%"class.sc_dt::sc_signed" = type { %"class.sc_dt::sc_value_base", i32, i32, i32, ptr }
%"class.sc_dt::sc_lv" = type { %"class.sc_dt::sc_lv_base" }
%"class.sc_dt::sc_lv_base" = type { %"class.sc_dt::sc_proxy", i32, i32, ptr, ptr }
%"class.sc_dt::sc_proxy" = type { ptr }
%"class.sc_dt::sc_bv" = type { %"class.sc_dt::sc_bv_base" }
%"class.sc_dt::sc_bv_base" = type { %"class.sc_dt::sc_proxy.0", i32, i32, ptr }
%"class.sc_dt::sc_proxy.0" = type { ptr }

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

; Function Attrs: mustprogress noreturn uwtable
define dso_local void @_ZN7if_test5entryEv(ptr noundef nonnull align 8 dereferenceable(520) %0) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.sc_dt::sc_biguint", align 8
  %3 = alloca %"class.sc_dt::sc_bigint", align 8
  %4 = alloca %"class.sc_dt::sc_lv", align 8
  %5 = alloca %"class.sc_dt::sc_bv", align 8
  %6 = alloca %"class.sc_dt::sc_bv", align 8
  %7 = alloca %"class.sc_dt::sc_bv", align 8
  %8 = alloca %"class.sc_dt::sc_bv", align 8
  %9 = alloca %"class.sc_dt::sc_bv", align 8
  %10 = alloca i32, align 4
  %11 = alloca i8, align 1
  %12 = alloca %"class.sc_dt::sc_bv", align 8
  %13 = alloca %"class.sc_dt::sc_bv", align 8
  %14 = alloca %"class.sc_dt::sc_bv", align 8
  %15 = alloca %"class.sc_dt::sc_bv", align 8
  %16 = alloca %"class.sc_dt::sc_bv", align 8
  %17 = alloca %"class.sc_dt::sc_bv", align 8
  %18 = alloca %"class.sc_dt::sc_bv", align 8
  %19 = alloca %"class.sc_dt::sc_bv", align 8
  %20 = alloca i32, align 4
  %21 = alloca i8, align 1
  %22 = 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_dt9sc_bigintILi4EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %23 unwind label %76

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

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

25:                                               ; preds = %24
  %26 = getelementptr inbounds i8, ptr %0, i64 416
  %27 = load ptr, ptr %26, align 8, !tbaa !5
  %28 = load ptr, ptr %27, align 8, !tbaa !40
  %29 = getelementptr inbounds i8, ptr %28, i64 56
  %30 = load ptr, ptr %29, align 8
  %31 = invoke noundef nonnull align 1 dereferenceable(1) ptr %30(ptr noundef nonnull align 8 dereferenceable(224) %27)
          to label %32 unwind label %.loopexit.split-lp.loopexit.split-lp

32:                                               ; preds = %25
  %33 = load i8, ptr %31, align 1, !tbaa !42, !range !43, !noundef !44
  %34 = trunc nuw i8 %33 to i1
  br i1 %34, label %35, label %.invoke53

35:                                               ; preds = %32
  %36 = getelementptr inbounds i8, ptr %0, i64 472
  %37 = load ptr, ptr %36, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %6, i32 noundef 0)
          to label %38 unwind label %82

38:                                               ; preds = %35
  %39 = load ptr, ptr %37, align 8, !tbaa !40
  %40 = getelementptr inbounds i8, ptr %39, i64 72
  %41 = load ptr, ptr %40, align 8
  invoke void %41(ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %42 unwind label %84

42:                                               ; preds = %38
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #5
  %43 = getelementptr inbounds i8, ptr %0, i64 480
  %44 = load ptr, ptr %43, align 8, !tbaa !46
  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 %45 unwind label %87

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

49:                                               ; preds = %45
  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
  %50 = getelementptr inbounds i8, ptr %0, i64 488
  %51 = load ptr, ptr %50, align 8, !tbaa !47
  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 %52 unwind label %92

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

56:                                               ; preds = %52
  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
  %57 = getelementptr inbounds i8, ptr %0, i64 496
  %58 = load ptr, ptr %57, align 8, !tbaa !48
  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 %59 unwind label %97

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

63:                                               ; preds = %59
  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
  %64 = getelementptr inbounds i8, ptr %0, i64 504
  %65 = load ptr, ptr %64, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  store i32 0, ptr %10, align 4, !tbaa !50
  %66 = load ptr, ptr %65, align 8, !tbaa !40
  %67 = getelementptr inbounds i8, ptr %66, i64 72
  %68 = load ptr, ptr %67, align 8
  invoke void %68(ptr noundef nonnull align 8 dereferenceable(196) %65, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %69 unwind label %102

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

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

76:                                               ; preds = %1
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %311

78:                                               ; preds = %23
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %310

80:                                               ; preds = %24
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %309

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

.loopexit.split-lp.loopexit:                      ; preds = %.invoke52, %.invoke, %296, %290, %282, %277, %274, %257, %248, %222, %221, %195, %180, %164, %158, %156, %150, %148, %142, %140, %134, %132, %126
  %lpad.loopexit49 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

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

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

84:                                               ; preds = %38
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  br label %86

86:                                               ; preds = %84, %82
  %.pn = phi { ptr, i32 } [ %85, %84 ], [ %83, %82 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #5
  br label %.loopexit.split-lp

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

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

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

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

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

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

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

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

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

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

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

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

106:                                              ; preds = %.invoke53
  %107 = getelementptr inbounds i8, ptr %0, i64 464
  %108 = getelementptr inbounds i8, ptr %0, i64 424
  %109 = getelementptr inbounds i8, ptr %0, i64 432
  %110 = getelementptr inbounds i8, ptr %0, i64 440
  %111 = getelementptr inbounds i8, ptr %0, i64 448
  %112 = getelementptr inbounds i8, ptr %0, i64 456
  %113 = getelementptr inbounds i8, ptr %0, i64 472
  %114 = getelementptr inbounds i8, ptr %0, i64 480
  %115 = getelementptr inbounds i8, ptr %0, i64 488
  %116 = getelementptr inbounds i8, ptr %0, i64 496
  %117 = getelementptr inbounds i8, ptr %0, i64 504
  %118 = getelementptr inbounds i8, ptr %0, i64 512
  br label %119

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

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

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

.backedge:                                        ; preds = %123, %302
  br label %119, !llvm.loop !53

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

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

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

140:                                              ; preds = %134
  %141 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt9sc_bigintILi4EEaSERKNS_10sc_bv_baseE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(24) %139)
          to label %142 unwind label %.loopexit.split-lp.loopexit

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

148:                                              ; preds = %142
  %149 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5sc_dt5sc_lvILi4EEaSINS_10sc_bv_baseEEERS1_RKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(8) %147)
          to label %150 unwind label %.loopexit.split-lp.loopexit

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

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

158:                                              ; preds = %156
  %159 = load ptr, ptr %112, align 8, !tbaa !59
  %160 = load ptr, ptr %159, align 8, !tbaa !40
  %161 = getelementptr inbounds i8, ptr %160, i64 40
  %162 = load ptr, ptr %161, align 8
  %163 = invoke noundef nonnull align 4 dereferenceable(4) ptr %162(ptr noundef nonnull align 8 dereferenceable(196) %159)
          to label %164 unwind label %.loopexit.split-lp.loopexit

164:                                              ; preds = %158
  %165 = load i32, ptr %163, align 4, !tbaa !50
  %166 = invoke noundef zeroext i1 @_ZN5sc_dteqERKNS_11sc_unsignedEi(ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 4)
          to label %167 unwind label %.loopexit.split-lp.loopexit

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

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

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

174:                                              ; preds = %170
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #5
  br label %221

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

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

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

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

182:                                              ; preds = %180
  br i1 %181, label %183, label %195

183:                                              ; preds = %182
  %184 = load ptr, ptr %113, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2)
          to label %185 unwind label %190

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

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

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

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

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

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

197:                                              ; preds = %195
  %198 = load ptr, ptr %113, align 8, !tbaa !45
  br i1 %196, label %199, label %210

199:                                              ; preds = %197
  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 1)
          to label %200 unwind label %205

200:                                              ; preds = %199
  %201 = load ptr, ptr %198, align 8, !tbaa !40
  %202 = getelementptr inbounds i8, ptr %201, i64 72
  %203 = load ptr, ptr %202, align 8
  invoke void %203(ptr noundef nonnull align 8 dereferenceable(232) %198, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %204 unwind label %207

204:                                              ; preds = %200
  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 %221

205:                                              ; preds = %199
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %209

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

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

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

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

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

216:                                              ; preds = %210
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %220

218:                                              ; preds = %211
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #5
  br label %220

220:                                              ; preds = %218, %216
  %.pn28 = phi { ptr, i32 } [ %219, %218 ], [ %217, %216 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #5
  br label %.loopexit.split-lp

221:                                              ; preds = %189, %215, %204, %174
  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 zeroext i1 @_ZN5sc_dtltERKNS_9sc_signedEi(ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 6)
          to label %224 unwind label %.loopexit.split-lp.loopexit

224:                                              ; preds = %222
  %225 = load ptr, ptr %114, align 8, !tbaa !46
  br i1 %223, label %226, label %237

226:                                              ; preds = %224
  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 0)
          to label %227 unwind label %232

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

231:                                              ; preds = %227
  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 %.invoke52

232:                                              ; preds = %226
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %236

234:                                              ; preds = %227
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #5
  br label %236

236:                                              ; preds = %234, %232
  %.pn38 = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #5
  br label %.loopexit.split-lp

237:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2ERKNS_9sc_signedE(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %238 unwind label %243

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

242:                                              ; preds = %238
  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 %.invoke52

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

243:                                              ; preds = %237
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %247

245:                                              ; preds = %238
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  br label %247

247:                                              ; preds = %245, %243
  %.pn36 = phi { ptr, i32 } [ %246, %245 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #5
  br label %.loopexit.split-lp

248:                                              ; preds = %.invoke52
  %249 = invoke noundef zeroext i1 @_ZNK5sc_dt8sc_proxyINS_10sc_lv_baseEEeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str)
          to label %250 unwind label %.loopexit.split-lp.loopexit

250:                                              ; preds = %248
  %251 = load ptr, ptr %115, align 8, !tbaa !47
  br i1 %249, label %252, label %263

252:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2Ei(ptr noundef nonnull align 8 dereferenceable(24) %18, i32 noundef 1)
          to label %253 unwind label %258

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

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

258:                                              ; preds = %252
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %262

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

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

263:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #5
  invoke void @_ZN5sc_dt5sc_bvILi4EEC2INS_10sc_lv_baseEEERKNS_8sc_proxyIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %264 unwind label %269

264:                                              ; preds = %263
  %265 = load ptr, ptr %251, align 8, !tbaa !40
  %266 = getelementptr inbounds i8, ptr %265, i64 72
  %267 = load ptr, ptr %266, align 8
  invoke void %267(ptr noundef nonnull align 8 dereferenceable(232) %251, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %268 unwind label %271

268:                                              ; preds = %264
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #5
  br label %.invoke

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

269:                                              ; preds = %263
  %270 = landingpad { ptr, i32 }
          cleanup
  br label %273

271:                                              ; preds = %264
  %272 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #5
  br label %273

273:                                              ; preds = %271, %269
  %.pn40 = phi { ptr, i32 } [ %272, %271 ], [ %270, %269 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #5
  br label %.loopexit.split-lp

274:                                              ; preds = %.invoke
  %275 = invoke noundef zeroext i1 @_ZN5sc_dtneINS_10sc_bv_baseEEEbRKNS_8sc_proxyIT_EEPKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull @.str.2)
          to label %276 unwind label %.loopexit.split-lp.loopexit

276:                                              ; preds = %274
  br i1 %275, label %277, label %282

277:                                              ; preds = %276
  %278 = load ptr, ptr %116, align 8, !tbaa !48
  %279 = load ptr, ptr %278, align 8, !tbaa !40
  %280 = getelementptr inbounds i8, ptr %279, i64 72
  %281 = load ptr, ptr %280, align 8
  invoke void %281(ptr noundef nonnull align 8 dereferenceable(232) %278, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %282 unwind label %.loopexit.split-lp.loopexit

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

283:                                              ; preds = %282
  %284 = load ptr, ptr %117, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #5
  %285 = icmp sgt i32 %165, 5
  %286 = select i1 %285, i32 0, i32 %165
  store i32 %286, ptr %20, align 4, !tbaa !50
  %287 = load ptr, ptr %284, align 8, !tbaa !40
  %288 = getelementptr inbounds i8, ptr %287, i64 72
  %289 = load ptr, ptr %288, align 8
  invoke void %289(ptr noundef nonnull align 8 dereferenceable(196) %284, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %290 unwind label %303

290:                                              ; preds = %283
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  invoke void @_ZN7sc_core9sc_module4waitEv(ptr noundef nonnull align 8 dereferenceable(232) %0)
          to label %291 unwind label %.loopexit.split-lp.loopexit

291:                                              ; preds = %290
  %292 = load ptr, ptr %118, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #5
  store i8 1, ptr %21, align 1, !tbaa !42
  %293 = load ptr, ptr %292, align 8, !tbaa !40
  %294 = getelementptr inbounds i8, ptr %293, i64 112
  %295 = load ptr, ptr %294, align 8
  invoke void %295(ptr noundef nonnull align 8 dereferenceable(224) %292, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %296 unwind label %305

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

297:                                              ; preds = %296
  %298 = load ptr, ptr %118, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #5
  store i8 0, ptr %22, align 1, !tbaa !42
  %299 = load ptr, ptr %298, align 8, !tbaa !40
  %300 = getelementptr inbounds i8, ptr %299, i64 112
  %301 = load ptr, ptr %300, align 8
  invoke void %301(ptr noundef nonnull align 8 dereferenceable(224) %298, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %302 unwind label %307

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

303:                                              ; preds = %283
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  br label %.loopexit.split-lp

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

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

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %307, %305, %303, %273, %262, %247, %236, %220, %209, %194, %179, %104, %102, %101, %96, %91, %86
  %.pn44 = phi { ptr, i32 } [ %308, %307 ], [ %306, %305 ], [ %304, %303 ], [ %.pn42, %262 ], [ %.pn40, %273 ], [ %.pn38, %236 ], [ %.pn36, %247 ], [ %.pn34, %179 ], [ %.pn32, %194 ], [ %.pn30, %209 ], [ %.pn28, %220 ], [ %105, %104 ], [ %103, %102 ], [ %.pn26, %101 ], [ %.pn24, %96 ], [ %.pn22, %91 ], [ %.pn, %86 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit49, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp50, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN5sc_dt10sc_bv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  br label %309

309:                                              ; preds = %.loopexit.split-lp, %80
  %.pn44.pn = phi { ptr, i32 } [ %.pn44, %.loopexit.split-lp ], [ %81, %80 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #5
  call void @_ZN5sc_dt10sc_lv_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  br label %310

310:                                              ; preds = %309, %78
  %.pn44.pn.pn = phi { ptr, i32 } [ %.pn44.pn, %309 ], [ %79, %78 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #5
  call void @_ZN5sc_dt9sc_signedD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  br label %311

311:                                              ; preds = %310, %76
  %.pn44.pn.pn.pn = phi { ptr, i32 } [ %.pn44.pn.pn, %310 ], [ %77, %76 ]
  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 } %.pn44.pn.pn.pn
}

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress noreturn uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = !{!"_ZTS7if_test", !7, i64 0, !32, i64 232, !9, i64 416, !9, i64 424, !9, i64 432, !9, i64 440, !9, i64 448, !9, i64 456, !9, i64 464, !9, i64 472, !9, i64 480, !9, i64 488, !9, i64 496, !9, i64 504, !9, i64 512}
!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 472}
!46 = !{!6, !9, i64 480}
!47 = !{!6, !9, i64 488}
!48 = !{!6, !9, i64 496}
!49 = !{!6, !9, i64 504}
!50 = !{!31, !31, i64 0}
!51 = !{!6, !9, i64 512}
!52 = !{!6, !9, i64 464}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{!6, !9, i64 424}
!56 = !{!6, !9, i64 432}
!57 = !{!6, !9, i64 440}
!58 = !{!6, !9, i64 448}
!59 = !{!6, !9, i64 456}


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