; LLVM IR from stonne-simulator/omega :: omega-code/stonne/src (FENetwork)

; 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.Config = type { i32, %class.DSNetworkConfig, %class.DSwitchConfig, %class.MSNetworkConfig, %class.MSwitchConfig, %class.ASNetworkConfig, %class.ASwitchConfig, %class.LookUpTableConfig, %class.SDMemoryConfig }
%class.DSNetworkConfig = type { i32 }
%class.DSwitchConfig = type { i32, i32, i32, i32 }
%class.MSNetworkConfig = type { i32, i32, i32, i32 }
%class.MSwitchConfig = type { i32, i32, i32, i32, i32, i32 }
%class.ASNetworkConfig = type { i32, i32 }
%class.ASwitchConfig = type { i32, i32, i32, i32, i32, i32 }
%class.LookUpTableConfig = type { i32, i32 }
%class.SDMemoryConfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%"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.std::allocator" = type { i8 }
%"struct.std::pair" = type { i32, i32 }
%class.FENetwork = type { %class.ReduceNetwork, i32, i32, i32, %"class.std::map", %"class.std::vector", %"class.std::vector", %"class.std::map.6", %"class.std::map.6", %"class.std::map.6", ptr }
%class.ReduceNetwork = type { %class.Unit }
%class.Unit = type { ptr, i32, %"class.std::__cxx11::basic_string" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::pair<int, int>, std::pair<const std::pair<int, int>, FEASwitch *>, std::_Select1st<std::pair<const std::pair<int, int>, FEASwitch *>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<int, int>, std::pair<const std::pair<int, int>, FEASwitch *>, std::_Select1st<std::pair<const std::pair<int, int>, FEASwitch *>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<FEASwitch *, std::allocator<FEASwitch *>>::_Vector_impl" }
%"struct.std::_Vector_base<FEASwitch *, std::allocator<FEASwitch *>>::_Vector_impl" = type { %"struct.std::_Vector_base<FEASwitch *, std::allocator<FEASwitch *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<FEASwitch *, std::allocator<FEASwitch *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.6" = type { %"class.std::_Rb_tree.7" }
%"class.std::_Rb_tree.7" = type { %"struct.std::_Rb_tree<std::pair<int, int>, std::pair<const std::pair<int, int>, Connection *>, std::_Select1st<std::pair<const std::pair<int, int>, Connection *>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<int, int>, std::pair<const std::pair<int, int>, Connection *>, std::_Select1st<std::pair<const std::pair<int, int>, Connection *>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }

@_ZTV9FENetwork = external dso_local unnamed_addr constant { [14 x ptr] }, align 8
@.str = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN9FENetworkC2EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6ConfigP10Connection = external hidden unnamed_addr constant [62 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9FENetworkC2EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6ConfigP10Connection(ptr noundef nonnull align 8 dereferenceable(312) %0, i32 noundef %1, ptr noundef %2, ptr noundef byval(%class.Config) align 8 %3, ptr noundef %4) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca ptr, align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %class.Config, align 8
  %24 = alloca i1, align 1
  %25 = alloca %"struct.std::pair", align 4
  %26 = alloca ptr, align 8
  %27 = alloca %"struct.std::pair", align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca %"struct.std::pair", align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"struct.std::pair", align 4
  %36 = alloca %"struct.std::pair", align 4
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %"struct.std::pair", align 4
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %"struct.std::pair", align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca %"struct.std::pair", align 4
  %53 = alloca ptr, align 8
  %54 = alloca i32, align 4
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca %"struct.std::pair", align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %4, ptr %9, align 8, !tbaa !5
  %58 = load ptr, ptr %6, align 8
  %59 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %2)
  invoke void @_ZN13ReduceNetworkC2EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %58, i32 noundef %59, ptr noundef %10)
          to label %60 unwind label %83

60:                                               ; preds = %5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  store ptr getelementptr inbounds inrange(-16, 96) ({ [14 x ptr] }, ptr @_ZTV9FENetwork, i32 0, i32 0, i32 2), ptr %58, align 8, !tbaa !11
  %61 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 4
  call void @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  %62 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 5
  call void @_ZNSt6vectorIP9FEASwitchSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #9
  %63 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 6
  call void @_ZNSt6vectorIP9FEASwitchSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #9
  %64 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 7
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #9
  %65 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 8
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %65) #9
  %66 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 9
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #9
  %67 = getelementptr inbounds %class.Config, ptr %3, i32 0, i32 6
  %68 = getelementptr inbounds %class.ASwitchConfig, ptr %67, i32 0, i32 4
  %69 = load i32, ptr %68, align 8, !tbaa !13
  %70 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 1
  store i32 %69, ptr %70, align 8, !tbaa !27
  %71 = getelementptr inbounds %class.Config, ptr %3, i32 0, i32 3
  %72 = getelementptr inbounds %class.MSNetworkConfig, ptr %71, i32 0, i32 1
  %73 = load i32, ptr %72, align 4, !tbaa !49
  %74 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 2
  store i32 %73, ptr %74, align 4, !tbaa !50
  %75 = getelementptr inbounds %class.Config, ptr %3, i32 0, i32 5
  %76 = getelementptr inbounds %class.ASNetworkConfig, ptr %75, i32 0, i32 1
  store i32 0, ptr %76, align 4, !tbaa !51
  %77 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 2
  %78 = load i32, ptr %77, align 4, !tbaa !50
  %79 = invoke noundef zeroext i1 @_Z10ispowerof2j(i32 noundef %78)
          to label %80 unwind label %87

80:                                               ; preds = %60
  br i1 %79, label %81, label %82

81:                                               ; preds = %80
  br label %92

82:                                               ; preds = %80
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 17, ptr noundef @__PRETTY_FUNCTION__._ZN9FENetworkC2EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6ConfigP10Connection) #10
  unreachable

83:                                               ; preds = %5
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %11, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %487

87:                                               ; preds = %60
  %88 = landingpad { ptr, i32 }
          cleanup
  %89 = extractvalue { ptr, i32 } %88, 0
  store ptr %89, ptr %11, align 8
  %90 = extractvalue { ptr, i32 } %88, 1
  store i32 %90, ptr %12, align 4
  br label %486

91:                                               ; No predecessors!
  br label %92

92:                                               ; preds = %91, %81
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 10
  store ptr %93, ptr %94, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %95 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 2
  %96 = load i32, ptr %95, align 4, !tbaa !50
  %97 = invoke noundef double @_ZSt5log10IjEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %96)
          to label %98 unwind label %111

98:                                               ; preds = %92
  %99 = invoke noundef double @_ZSt5log10IiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef 2)
          to label %100 unwind label %111

100:                                              ; preds = %98
  %101 = fdiv double %97, %99
  %102 = fptosi double %101 to i32
  store i32 %102, ptr %13, align 4, !tbaa !9
  %103 = load i32, ptr %13, align 4, !tbaa !9
  %104 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 3
  store i32 %103, ptr %104, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 2, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %105

105:                                              ; preds = %481, %100
  %106 = load i32, ptr %16, align 4, !tbaa !9
  %107 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 3
  %108 = load i32, ptr %107, align 8, !tbaa !53
  %109 = icmp slt i32 %106, %108
  br i1 %109, label %115, label %110

110:                                              ; preds = %105
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %484

111:                                              ; preds = %98, %92
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %11, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %12, align 4
  br label %485

115:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %116

116:                                              ; preds = %468, %115
  %117 = load i32, ptr %18, align 4, !tbaa !9
  %118 = load i32, ptr %14, align 4, !tbaa !9
  %119 = icmp slt i32 %117, %118
  br i1 %119, label %121, label %120

120:                                              ; preds = %116
  store i32 5, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %474

121:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #9
  %122 = load i32, ptr %15, align 4, !tbaa !9
  %123 = zext i32 %122 to i64
  %124 = getelementptr inbounds i8, ptr @.str.2, i64 %123
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %124, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %125 unwind label %163

125:                                              ; preds = %121
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %126 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 336) #11
          to label %127 unwind label %167

127:                                              ; preds = %125
  store i1 true, ptr %24, align 1
  %128 = load i32, ptr %15, align 4, !tbaa !9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %129 unwind label %171

129:                                              ; preds = %127
  %130 = load i32, ptr %16, align 4, !tbaa !9
  %131 = load i32, ptr %18, align 4, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %23, ptr align 8 %3, i64 160, i1 false), !tbaa.struct !54
  invoke void @_ZN9FEASwitchC1EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjj6Config(ptr noundef nonnull align 8 dereferenceable(336) %126, i32 noundef %128, ptr noundef %22, i32 noundef %130, i32 noundef %131, ptr noundef byval(%class.Config) align 8 %23)
          to label %132 unwind label %175

132:                                              ; preds = %129
  store i1 false, ptr %24, align 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  store ptr %126, ptr %21, align 8, !tbaa !5
  %133 = load i32, ptr %15, align 4, !tbaa !9
  %134 = add i32 %133, 1
  store i32 %134, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  invoke void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %135 unwind label %183

135:                                              ; preds = %132
  %136 = load ptr, ptr %21, align 8, !tbaa !5
  %137 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 4
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %137, ptr noundef nonnull align 4 dereferenceable(8) %25)
          to label %139 unwind label %183

139:                                              ; preds = %135
  store ptr %136, ptr %138, align 8, !tbaa !5
  %140 = load i32, ptr %16, align 4, !tbaa !9
  %141 = icmp eq i32 %140, 0
  br i1 %141, label %142, label %220

142:                                              ; preds = %139
  %143 = load i32, ptr %18, align 4, !tbaa !9
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %145, label %196

145:                                              ; preds = %142
  %146 = load ptr, ptr %21, align 8, !tbaa !5
  %147 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch19setOutputConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %146, ptr noundef %147)
          to label %148 unwind label %183

148:                                              ; preds = %145
  %149 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 5
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %149, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %150 unwind label %183

150:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %151 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #11
          to label %152 unwind label %187

152:                                              ; preds = %150
  %153 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 1
  %154 = load i32, ptr %153, align 8, !tbaa !27
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %151, i32 noundef %154)
          to label %155 unwind label %191

155:                                              ; preds = %152
  store ptr %151, ptr %26, align 8, !tbaa !5
  %156 = load ptr, ptr %26, align 8, !tbaa !5
  %157 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 9
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %157, ptr noundef nonnull align 4 dereferenceable(8) %25)
          to label %159 unwind label %187

159:                                              ; preds = %155
  store ptr %156, ptr %158, align 8, !tbaa !5
  %160 = load ptr, ptr %21, align 8, !tbaa !5
  %161 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch29setUpNodeForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %160, ptr noundef %161)
          to label %162 unwind label %187

162:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %196

163:                                              ; preds = %121
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %11, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  br label %473

167:                                              ; preds = %125
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %11, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %12, align 4
  br label %472

171:                                              ; preds = %127
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %11, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %12, align 4
  br label %179

175:                                              ; preds = %129
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %11, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  br label %179

179:                                              ; preds = %175, %171
  %180 = load i1, ptr %24, align 1
  br i1 %180, label %181, label %182

181:                                              ; preds = %179
  call void @_ZdlPvm(ptr noundef %126, i64 noundef 336) #12
  br label %182

182:                                              ; preds = %181, %179
  br label %472

183:                                              ; preds = %148, %145, %135, %132
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %11, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %12, align 4
  br label %471

187:                                              ; preds = %159, %155, %150
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %11, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %12, align 4
  br label %195

191:                                              ; preds = %152
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %11, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %151, i64 noundef 64) #12
  br label %195

195:                                              ; preds = %191, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %471

196:                                              ; preds = %162, %142
  %197 = load i32, ptr %18, align 4, !tbaa !9
  %198 = icmp eq i32 %197, 1
  br i1 %198, label %199, label %219

199:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  store i32 0, ptr %29, align 4, !tbaa !9
  invoke void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %200 unwind label %210

200:                                              ; preds = %199
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %201 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 9
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %201, ptr noundef nonnull align 4 dereferenceable(8) %27)
          to label %203 unwind label %214

203:                                              ; preds = %200
  %204 = load ptr, ptr %202, align 8, !tbaa !5
  store ptr %204, ptr %30, align 8, !tbaa !5
  %205 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 5
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %205, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %206 unwind label %214

206:                                              ; preds = %203
  %207 = load ptr, ptr %21, align 8, !tbaa !5
  %208 = load ptr, ptr %30, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %207, ptr noundef %208)
          to label %209 unwind label %214

209:                                              ; preds = %206
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %219

210:                                              ; preds = %199
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %11, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  br label %218

214:                                              ; preds = %206, %203, %200
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %11, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  br label %218

218:                                              ; preds = %214, %210
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %471

219:                                              ; preds = %209, %196
  br label %416

220:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %221 = load i32, ptr %16, align 4, !tbaa !9
  %222 = sub nsw i32 %221, 1
  store i32 %222, ptr %32, align 4, !tbaa !9
  invoke void @_ZNSt4pairIiiEC2IiRiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %31, ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %223 unwind label %265

223:                                              ; preds = %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %224 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 7
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %224, ptr noundef nonnull align 4 dereferenceable(8) %31)
          to label %226 unwind label %269

226:                                              ; preds = %223
  %227 = load ptr, ptr %225, align 8, !tbaa !5
  store ptr %227, ptr %33, align 8, !tbaa !5
  %228 = load ptr, ptr %21, align 8, !tbaa !5
  %229 = load ptr, ptr %33, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch19setOutputConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %228, ptr noundef %229)
          to label %230 unwind label %269

230:                                              ; preds = %226
  %231 = load i32, ptr %18, align 4, !tbaa !9
  %232 = icmp ne i32 %231, 0
  br i1 %232, label %233, label %296

233:                                              ; preds = %230
  %234 = load i32, ptr %18, align 4, !tbaa !9
  %235 = srem i32 %234, 2
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %237, label %296

237:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %238 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #11
          to label %239 unwind label %273

239:                                              ; preds = %237
  %240 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 1
  %241 = load i32, ptr %240, align 8, !tbaa !27
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %238, i32 noundef %241)
          to label %242 unwind label %277

242:                                              ; preds = %239
  store ptr %238, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  invoke void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %35, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %243 unwind label %281

243:                                              ; preds = %242
  %244 = load ptr, ptr %34, align 8, !tbaa !5
  %245 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 8
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %245, ptr noundef nonnull align 4 dereferenceable(8) %35)
          to label %247 unwind label %281

247:                                              ; preds = %243
  store ptr %244, ptr %246, align 8, !tbaa !5
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = load ptr, ptr %34, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch23setForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %248, ptr noundef %249)
          to label %250 unwind label %281

250:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  %251 = load i32, ptr %18, align 4, !tbaa !9
  %252 = sub nsw i32 %251, 1
  store i32 %252, ptr %37, align 4, !tbaa !9
  invoke void @_ZNSt4pairIiiEC2IRiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %253 unwind label %285

253:                                              ; preds = %250
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %254 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 4
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %254, ptr noundef nonnull align 4 dereferenceable(8) %36)
          to label %256 unwind label %289

256:                                              ; preds = %253
  %257 = load ptr, ptr %255, align 8, !tbaa !5
  store ptr %257, ptr %38, align 8, !tbaa !5
  %258 = load ptr, ptr %38, align 8, !tbaa !5
  %259 = load ptr, ptr %34, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch23setForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %258, ptr noundef %259)
          to label %260 unwind label %289

260:                                              ; preds = %256
  %261 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 6
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %261, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %262 unwind label %289

262:                                              ; preds = %260
  %263 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 6
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %263, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %264 unwind label %289

264:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %308

265:                                              ; preds = %220
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %11, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %415

269:                                              ; preds = %304, %226, %223
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %11, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %12, align 4
  br label %414

273:                                              ; preds = %237
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %11, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %12, align 4
  br label %295

277:                                              ; preds = %239
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %11, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %238, i64 noundef 64) #12
  br label %295

281:                                              ; preds = %247, %243, %242
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %11, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %12, align 4
  br label %294

285:                                              ; preds = %250
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %11, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %293

289:                                              ; preds = %262, %260, %256, %253
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %11, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %293

293:                                              ; preds = %289, %285
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %294

294:                                              ; preds = %293, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  br label %295

295:                                              ; preds = %294, %277, %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %414

296:                                              ; preds = %233, %230
  %297 = load i32, ptr %18, align 4, !tbaa !9
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %304, label %299

299:                                              ; preds = %296
  %300 = load i32, ptr %18, align 4, !tbaa !9
  %301 = load i32, ptr %14, align 4, !tbaa !9
  %302 = sub nsw i32 %301, 1
  %303 = icmp eq i32 %300, %302
  br i1 %303, label %304, label %307

304:                                              ; preds = %299, %296
  %305 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 5
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %305, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %306 unwind label %269

306:                                              ; preds = %304
  br label %307

307:                                              ; preds = %306, %299
  br label %308

308:                                              ; preds = %307, %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %309 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #11
          to label %310 unwind label %337

310:                                              ; preds = %308
  %311 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 1
  %312 = load i32, ptr %311, align 8, !tbaa !27
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %309, i32 noundef %312)
          to label %313 unwind label %341

313:                                              ; preds = %310
  store ptr %309, ptr %39, align 8, !tbaa !5
  %314 = load ptr, ptr %39, align 8, !tbaa !5
  %315 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 9
  %316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %315, ptr noundef nonnull align 4 dereferenceable(8) %25)
          to label %317 unwind label %337

317:                                              ; preds = %313
  store ptr %314, ptr %316, align 8, !tbaa !5
  %318 = load ptr, ptr %21, align 8, !tbaa !5
  %319 = load ptr, ptr %39, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch29setUpNodeForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %318, ptr noundef %319)
          to label %320 unwind label %337

320:                                              ; preds = %317
  %321 = load i32, ptr %18, align 4, !tbaa !9
  %322 = srem i32 %321, 2
  %323 = icmp eq i32 %322, 0
  br i1 %323, label %324, label %354

324:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  %325 = load i32, ptr %16, align 4, !tbaa !9
  %326 = sub nsw i32 %325, 1
  store i32 %326, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %327 = load i32, ptr %18, align 4, !tbaa !9
  %328 = sdiv i32 %327, 2
  store i32 %328, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  invoke void @_ZNSt4pairIiiEC2IRjS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %329 unwind label %345

329:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %330 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 4
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %330, ptr noundef nonnull align 4 dereferenceable(8) %42)
          to label %332 unwind label %349

332:                                              ; preds = %329
  %333 = load ptr, ptr %331, align 8, !tbaa !5
  store ptr %333, ptr %43, align 8, !tbaa !5
  %334 = load ptr, ptr %43, align 8, !tbaa !5
  %335 = load ptr, ptr %39, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %334, ptr noundef %335)
          to label %336 unwind label %349

336:                                              ; preds = %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %412

337:                                              ; preds = %317, %313, %308
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %11, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %12, align 4
  br label %413

341:                                              ; preds = %310
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %11, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %309, i64 noundef 64) #12
  br label %413

345:                                              ; preds = %324
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %11, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %12, align 4
  br label %353

349:                                              ; preds = %332, %329
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %11, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %353

353:                                              ; preds = %349, %345
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %413

354:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #9
  store i32 0, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  %355 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %355, ptr %45, align 4, !tbaa !9
  br label %356

356:                                              ; preds = %360, %354
  %357 = load i32, ptr %45, align 4, !tbaa !9
  %358 = urem i32 %357, 2
  %359 = icmp ne i32 %358, 0
  br i1 %359, label %360, label %365

360:                                              ; preds = %356
  %361 = load i32, ptr %44, align 4, !tbaa !9
  %362 = add i32 %361, 1
  store i32 %362, ptr %44, align 4, !tbaa !9
  %363 = load i32, ptr %45, align 4, !tbaa !9
  %364 = udiv i32 %363, 2
  store i32 %364, ptr %45, align 4, !tbaa !9
  br label %356, !llvm.loop !59

365:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  %366 = load i32, ptr %16, align 4, !tbaa !9
  %367 = load i32, ptr %44, align 4, !tbaa !9
  %368 = sub i32 %366, %367
  %369 = sub i32 %368, 1
  store i32 %369, ptr %46, align 4, !tbaa !9
  %370 = load i32, ptr %46, align 4, !tbaa !9
  %371 = icmp slt i32 %370, 0
  br i1 %371, label %372, label %390

372:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  store i32 0, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  store i32 1, ptr %49, align 4, !tbaa !9
  invoke void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %47, ptr noundef nonnull align 4 dereferenceable(4) %48, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %373 unwind label %381

373:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %374 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 4
  %375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %374, ptr noundef nonnull align 4 dereferenceable(8) %47)
          to label %376 unwind label %385

376:                                              ; preds = %373
  %377 = load ptr, ptr %375, align 8, !tbaa !5
  store ptr %377, ptr %50, align 8, !tbaa !5
  %378 = load ptr, ptr %50, align 8, !tbaa !5
  %379 = load ptr, ptr %39, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %378, ptr noundef %379)
          to label %380 unwind label %385

380:                                              ; preds = %376
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %410

381:                                              ; preds = %372
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %11, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %389

385:                                              ; preds = %376, %373
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %11, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %389

389:                                              ; preds = %385, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %411

390:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  %391 = load i32, ptr %45, align 4, !tbaa !9
  %392 = udiv i32 %391, 2
  store i32 %392, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  invoke void @_ZNSt4pairIiiEC2IRiRjTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_(ptr noundef nonnull align 4 dereferenceable(8) %52, ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 4 dereferenceable(4) %51)
          to label %393 unwind label %401

393:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %394 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 4
  %395 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %394, ptr noundef nonnull align 4 dereferenceable(8) %52)
          to label %396 unwind label %405

396:                                              ; preds = %393
  %397 = load ptr, ptr %395, align 8, !tbaa !5
  store ptr %397, ptr %53, align 8, !tbaa !5
  %398 = load ptr, ptr %53, align 8, !tbaa !5
  %399 = load ptr, ptr %39, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %398, ptr noundef %399)
          to label %400 unwind label %405

400:                                              ; preds = %396
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %410

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

405:                                              ; preds = %396, %393
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %11, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %409

409:                                              ; preds = %405, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %411

410:                                              ; preds = %400, %380
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %412

411:                                              ; preds = %409, %389
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %413

412:                                              ; preds = %410, %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %416

413:                                              ; preds = %411, %353, %341, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %414

414:                                              ; preds = %413, %295, %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %415

415:                                              ; preds = %414, %265
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %471

416:                                              ; preds = %412, %219
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %417

417:                                              ; preds = %463, %416
  %418 = load i32, ptr %54, align 4, !tbaa !9
  %419 = icmp slt i32 %418, 2
  br i1 %419, label %421, label %420

420:                                              ; preds = %417
  store i32 10, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %467

421:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %422 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #11
          to label %423 unwind label %442

423:                                              ; preds = %421
  %424 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 1
  %425 = load i32, ptr %424, align 8, !tbaa !27
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %422, i32 noundef %425)
          to label %426 unwind label %446

426:                                              ; preds = %423
  store ptr %422, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  %427 = load i32, ptr %18, align 4, !tbaa !9
  %428 = mul nsw i32 %427, 2
  %429 = load i32, ptr %54, align 4, !tbaa !9
  %430 = add nsw i32 %428, %429
  store i32 %430, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  invoke void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %57, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %56)
          to label %431 unwind label %450

431:                                              ; preds = %426
  %432 = load ptr, ptr %55, align 8, !tbaa !5
  %433 = getelementptr inbounds %class.FENetwork, ptr %58, i32 0, i32 7
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %433, ptr noundef nonnull align 4 dereferenceable(8) %57)
          to label %435 unwind label %450

435:                                              ; preds = %431
  store ptr %432, ptr %434, align 8, !tbaa !5
  %436 = load i32, ptr %54, align 4, !tbaa !9
  %437 = icmp eq i32 %436, 0
  br i1 %437, label %438, label %454

438:                                              ; preds = %435
  %439 = load ptr, ptr %21, align 8, !tbaa !5
  %440 = load ptr, ptr %55, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch22setInputLeftConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %439, ptr noundef %440)
          to label %441 unwind label %450

441:                                              ; preds = %438
  br label %462

442:                                              ; preds = %421
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %11, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %12, align 4
  br label %466

446:                                              ; preds = %423
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %11, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %422, i64 noundef 64) #12
  br label %466

450:                                              ; preds = %457, %438, %431, %426
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %11, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  br label %466

454:                                              ; preds = %435
  %455 = load i32, ptr %54, align 4, !tbaa !9
  %456 = icmp eq i32 %455, 1
  br i1 %456, label %457, label %461

457:                                              ; preds = %454
  %458 = load ptr, ptr %21, align 8, !tbaa !5
  %459 = load ptr, ptr %55, align 8, !tbaa !5
  invoke void @_ZN9FEASwitch23setInputRightConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %458, ptr noundef %459)
          to label %460 unwind label %450

460:                                              ; preds = %457
  br label %461

461:                                              ; preds = %460, %454
  br label %462

462:                                              ; preds = %461, %441
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %463

463:                                              ; preds = %462
  %464 = load i32, ptr %54, align 4, !tbaa !9
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %54, align 4, !tbaa !9
  br label %417, !llvm.loop !61

466:                                              ; preds = %450, %446, %442
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %471

467:                                              ; preds = %420
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  br label %468

468:                                              ; preds = %467
  %469 = load i32, ptr %18, align 4, !tbaa !9
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %18, align 4, !tbaa !9
  br label %116, !llvm.loop !62

471:                                              ; preds = %466, %415, %218, %195, %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %472

472:                                              ; preds = %471, %182, %167
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %473

473:                                              ; preds = %472, %163
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %485

474:                                              ; preds = %120
  %475 = load i32, ptr %16, align 4, !tbaa !9
  %476 = icmp sgt i32 %475, 0
  br i1 %476, label %477, label %480

477:                                              ; preds = %474
  %478 = load i32, ptr %14, align 4, !tbaa !9
  %479 = mul nsw i32 %478, 2
  store i32 %479, ptr %14, align 4, !tbaa !9
  br label %480

480:                                              ; preds = %477, %474
  br label %481

481:                                              ; preds = %480
  %482 = load i32, ptr %16, align 4, !tbaa !9
  %483 = add nsw i32 %482, 1
  store i32 %483, ptr %16, align 4, !tbaa !9
  br label %105, !llvm.loop !63

484:                                              ; preds = %110
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  ret void

485:                                              ; preds = %473, %111
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %486

486:                                              ; preds = %485, %87
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #9
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %65) #9
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #9
  call void @_ZNSt6vectorIP9FEASwitchSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #9
  call void @_ZNSt6vectorIP9FEASwitchSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #9
  call void @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  call void @_ZN4UnitD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %58) #9
  br label %487

487:                                              ; preds = %486, %83
  %488 = load ptr, ptr %11, align 8
  %489 = load i32, ptr %12, align 4
  %490 = insertvalue { ptr, i32 } poison, ptr %488, 0
  %491 = insertvalue { ptr, i32 } %490, i32 %489, 1
  resume { ptr, i32 } %491
}

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

declare noundef zeroext i1 @_Z10ispowerof2j(i32 noundef) #2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt5log10IjEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt5log10IiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #6

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

declare void @_ZN9FEASwitchC1EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjj6Config(ptr noundef nonnull align 8 dereferenceable(336), i32 noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef byval(%class.Config) align 8) unnamed_addr #2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #8

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

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

declare void @_ZN9FEASwitch19setOutputConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) #2

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

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

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

declare void @_ZN9FEASwitch29setUpNodeForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) #2

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

declare void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) #2

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

declare void @_ZN9FEASwitch23setForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) #2

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

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

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

declare void @_ZN9FEASwitch22setInputLeftConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) #2

declare void @_ZN9FEASwitch23setInputRightConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind "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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin allocsize(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 #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nobuiltin nounwind "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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { builtin 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !10, i64 88}
!14 = !{!"_ZTS6Config", !10, i64 0, !15, i64 4, !16, i64 8, !17, i64 24, !19, i64 40, !20, i64 64, !22, i64 72, !23, i64 96, !24, i64 104}
!15 = !{!"_ZTS15DSNetworkConfig", !10, i64 0}
!16 = !{!"_ZTS13DSwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!17 = !{!"_ZTS15MSNetworkConfig", !18, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!18 = !{!"_ZTS19MultiplierNetwork_t", !7, i64 0}
!19 = !{!"_ZTS13MSwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!20 = !{!"_ZTS15ASNetworkConfig", !21, i64 0, !10, i64 4}
!21 = !{!"_ZTS15ReduceNetwork_t", !7, i64 0}
!22 = !{!"_ZTS13ASwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!23 = !{!"_ZTS17LookUpTableConfig", !10, i64 0, !10, i64 4}
!24 = !{!"_ZTS14SDMemoryConfig", !25, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !26, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!25 = !{!"_ZTS18MemoryController_t", !7, i64 0}
!26 = !{!"_ZTS17MemoryHierarchy_t", !7, i64 0}
!27 = !{!28, !10, i64 48}
!28 = !{!"_ZTS9FENetwork", !29, i64 0, !10, i64 48, !10, i64 52, !10, i64 56, !34, i64 64, !42, i64 112, !42, i64 136, !46, i64 160, !46, i64 208, !46, i64 256, !6, i64 304}
!29 = !{!"_ZTS13ReduceNetwork", !30, i64 0}
!30 = !{!"_ZTS4Unit", !10, i64 8, !31, i64 16}
!31 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !32, i64 0, !33, i64 8, !7, i64 16}
!32 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!33 = !{!"long", !7, i64 0}
!34 = !{!"_ZTSSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES0_IKS1_P9FEASwitchESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES0_IKS1_P9FEASwitchESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !37, i64 0, !39, i64 8}
!37 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !38, i64 0}
!38 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!39 = !{!"_ZTSSt15_Rb_tree_header", !40, i64 0, !33, i64 32}
!40 = !{!"_ZTSSt18_Rb_tree_node_base", !41, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!41 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!42 = !{!"_ZTSSt6vectorIP9FEASwitchSaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIP9FEASwitchSaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIP9FEASwitchSaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIP9FEASwitchSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEE", !47, i64 0}
!47 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES0_IKS1_P10ConnectionESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !48, i64 0}
!48 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES0_IKS1_P10ConnectionESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !37, i64 0, !39, i64 8}
!49 = !{!14, !10, i64 28}
!50 = !{!28, !10, i64 52}
!51 = !{!14, !10, i64 68}
!52 = !{!28, !6, i64 304}
!53 = !{!28, !10, i64 56}
!54 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 4, !55, i64 28, i64 4, !9, i64 32, i64 4, !9, i64 36, i64 4, !9, i64 40, i64 4, !9, i64 44, i64 4, !9, i64 48, i64 4, !9, i64 52, i64 4, !9, i64 56, i64 4, !9, i64 60, i64 4, !9, i64 64, i64 4, !56, i64 68, i64 4, !9, i64 72, i64 4, !9, i64 76, i64 4, !9, i64 80, i64 4, !9, i64 84, i64 4, !9, i64 88, i64 4, !9, i64 92, i64 4, !9, i64 96, i64 4, !9, i64 100, i64 4, !9, i64 104, i64 4, !57, i64 108, i64 4, !9, i64 112, i64 4, !9, i64 116, i64 4, !9, i64 120, i64 4, !9, i64 124, i64 4, !9, i64 128, i64 4, !9, i64 132, i64 4, !58, i64 136, i64 4, !9, i64 140, i64 4, !9, i64 144, i64 4, !9, i64 148, i64 4, !9, i64 152, i64 4, !9, i64 156, i64 4, !9}
!55 = !{!18, !18, i64 0}
!56 = !{!21, !21, i64 0}
!57 = !{!25, !25, i64 0}
!58 = !{!26, !26, i64 0}
!59 = distinct !{!59, !60}
!60 = !{!"llvm.loop.mustprogress"}
!61 = distinct !{!61, !60}
!62 = distinct !{!62, !60}
!63 = distinct !{!63, !60}


; 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.Config = type { i32, %class.DSNetworkConfig, %class.DSwitchConfig, %class.MSNetworkConfig, %class.MSwitchConfig, %class.ASNetworkConfig, %class.ASwitchConfig, %class.LookUpTableConfig, %class.SDMemoryConfig }
%class.DSNetworkConfig = type { i32 }
%class.DSwitchConfig = type { i32, i32, i32, i32 }
%class.MSNetworkConfig = type { i32, i32, i32, i32 }
%class.MSwitchConfig = type { i32, i32, i32, i32, i32, i32 }
%class.ASNetworkConfig = type { i32, i32 }
%class.ASwitchConfig = type { i32, i32, i32, i32, i32, i32 }
%class.LookUpTableConfig = type { i32, i32 }
%class.SDMemoryConfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%"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.std::allocator" = type { i8 }
%"struct.std::pair" = type { i32, i32 }

@_ZTV9FENetwork = external dso_local unnamed_addr constant { [14 x ptr] }, align 8
@.str = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN9FENetworkC2EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6ConfigP10Connection = external hidden unnamed_addr constant [62 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9FENetworkC2EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6ConfigP10Connection(ptr noundef nonnull align 8 dereferenceable(312) %0, i32 noundef %1, ptr noundef nonnull %2, ptr nocapture noundef byval(%class.Config) align 8 %3, ptr noundef %4) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"struct.std::pair", align 4
  %14 = alloca %"struct.std::pair", align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"struct.std::pair", align 4
  %18 = alloca i32, align 4
  %19 = alloca %"struct.std::pair", align 4
  %20 = alloca %"struct.std::pair", align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %"struct.std::pair", align 4
  %26 = alloca i32, align 4
  %27 = alloca %"struct.std::pair", align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %"struct.std::pair", align 4
  %32 = alloca i32, align 4
  %33 = alloca %"struct.std::pair", align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %2)
  invoke void @_ZN13ReduceNetworkC2EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %0, i32 noundef %1, ptr noundef nonnull %6)
          to label %34 unwind label %51

34:                                               ; preds = %5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTV9FENetwork, i64 16), ptr %0, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %0, i64 64
  call void @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #8
  %36 = getelementptr inbounds i8, ptr %0, i64 112
  call void @_ZNSt6vectorIP9FEASwitchSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  %37 = getelementptr inbounds i8, ptr %0, i64 136
  call void @_ZNSt6vectorIP9FEASwitchSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  %38 = getelementptr inbounds i8, ptr %0, i64 160
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %38) #8
  %39 = getelementptr inbounds i8, ptr %0, i64 208
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %39) #8
  %40 = getelementptr inbounds i8, ptr %0, i64 256
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %40) #8
  %41 = getelementptr inbounds i8, ptr %3, i64 88
  %42 = load i32, ptr %41, align 8, !tbaa !8
  %43 = getelementptr inbounds i8, ptr %0, i64 48
  store i32 %42, ptr %43, align 8, !tbaa !24
  %44 = getelementptr inbounds i8, ptr %3, i64 28
  %45 = load i32, ptr %44, align 4, !tbaa !47
  %46 = getelementptr inbounds i8, ptr %0, i64 52
  store i32 %45, ptr %46, align 4, !tbaa !48
  %47 = getelementptr inbounds i8, ptr %3, i64 68
  store i32 0, ptr %47, align 4, !tbaa !49
  %48 = invoke noundef zeroext i1 @_Z10ispowerof2j(i32 noundef %45)
          to label %49 unwind label %53

49:                                               ; preds = %34
  br i1 %48, label %55, label %50

50:                                               ; preds = %49
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 17, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN9FENetworkC2EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6ConfigP10Connection) #9
  unreachable

51:                                               ; preds = %5
  %52 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %259

53:                                               ; preds = %34
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %258

55:                                               ; preds = %49
  %56 = getelementptr inbounds i8, ptr %0, i64 304
  store ptr %4, ptr %56, align 8, !tbaa !50
  %57 = load i32, ptr %46, align 4, !tbaa !48
  %58 = call noundef double @_ZSt5log10IjEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %57)
  %59 = call noundef double @_ZSt5log10IiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef 2)
  %60 = fdiv double %58, %59
  %61 = fptosi double %60 to i32
  %62 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 %61, ptr %62, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #8
  store i32 0, ptr %7, align 4, !tbaa !52
  %63 = icmp sgt i32 %61, 0
  br i1 %63, label %.lr.ph148, label %._crit_edge149

._crit_edge149:                                   ; preds = %._crit_edge143, %55
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8
  ret void

.lr.ph148:                                        ; preds = %55, %._crit_edge143
  %64 = phi i32 [ %68, %._crit_edge143 ], [ %61, %55 ]
  %65 = phi i32 [ %72, %._crit_edge143 ], [ 0, %55 ]
  %.055146 = phi i32 [ %spec.select, %._crit_edge143 ], [ 2, %55 ]
  %.059145 = phi i32 [ %.160.lcssa, %._crit_edge143 ], [ 0, %55 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8
  store i32 0, ptr %8, align 4, !tbaa !52
  %66 = icmp sgt i32 %.055146, 0
  br i1 %66, label %.lr.ph142, label %._crit_edge143

.lr.ph142:                                        ; preds = %.lr.ph148
  %67 = add nsw i32 %.055146, -1
  br label %74

._crit_edge143.loopexit:                          ; preds = %251
  %.pre = load i32, ptr %7, align 4, !tbaa !52
  %.pre202 = load i32, ptr %62, align 8, !tbaa !51
  br label %._crit_edge143

._crit_edge143:                                   ; preds = %._crit_edge143.loopexit, %.lr.ph148
  %68 = phi i32 [ %64, %.lr.ph148 ], [ %.pre202, %._crit_edge143.loopexit ]
  %69 = phi i32 [ %65, %.lr.ph148 ], [ %.pre, %._crit_edge143.loopexit ]
  %.160.lcssa = phi i32 [ %.059145, %.lr.ph148 ], [ %84, %._crit_edge143.loopexit ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  %70 = icmp sgt i32 %69, 0
  %71 = zext i1 %70 to i32
  %spec.select = shl nsw i32 %.055146, %71
  %72 = add nsw i32 %69, 1
  store i32 %72, ptr %7, align 4, !tbaa !52
  %73 = icmp slt i32 %72, %68
  br i1 %73, label %.lr.ph148, label %._crit_edge149, !llvm.loop !53

74:                                               ; preds = %.lr.ph142, %251
  %.160140 = phi i32 [ %.059145, %.lr.ph142 ], [ %84, %251 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  %75 = zext i32 %.160140 to i64
  %76 = getelementptr inbounds i8, ptr @.str.2, i64 %75
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull %76, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %77 unwind label %104

77:                                               ; preds = %74
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %78 = invoke noalias noundef nonnull dereferenceable(336) ptr @_Znwm(i64 noundef 336) #10
          to label %79 unwind label %106

79:                                               ; preds = %77
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %80 unwind label %108

80:                                               ; preds = %79
  %81 = load i32, ptr %7, align 4, !tbaa !52
  %82 = load i32, ptr %8, align 4, !tbaa !52
  invoke void @_ZN9FEASwitchC1EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjj6Config(ptr noundef nonnull align 8 dereferenceable(336) %78, i32 noundef %.160140, ptr noundef nonnull %12, i32 noundef %81, i32 noundef %82, ptr noundef nonnull byval(%class.Config) align 8 %3)
          to label %83 unwind label %110

83:                                               ; preds = %80
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  store ptr %78, ptr %11, align 8, !tbaa !55
  %84 = add i32 %.160140, 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %85 = load ptr, ptr %11, align 8, !tbaa !55
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %35, ptr noundef nonnull align 4 dereferenceable(8) %13)
          to label %87 unwind label %113

87:                                               ; preds = %83
  store ptr %85, ptr %86, align 8, !tbaa !55
  %88 = load i32, ptr %7, align 4, !tbaa !52
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %131

90:                                               ; preds = %87
  %91 = load i32, ptr %8, align 4, !tbaa !52
  %92 = icmp eq i32 %91, 0
  br i1 %92, label %93, label %119

93:                                               ; preds = %90
  %94 = load ptr, ptr %11, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch19setOutputConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %94, ptr noundef %4)
          to label %95 unwind label %113

95:                                               ; preds = %93
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %96 unwind label %113

96:                                               ; preds = %95
  %97 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %98 unwind label %115

98:                                               ; preds = %96
  %99 = load i32, ptr %43, align 8, !tbaa !24
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %97, i32 noundef %99)
          to label %100 unwind label %117

100:                                              ; preds = %98
  %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 4 dereferenceable(8) %13)
          to label %102 unwind label %115

102:                                              ; preds = %100
  store ptr %97, ptr %101, align 8, !tbaa !55
  %103 = load ptr, ptr %11, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch29setUpNodeForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %103, ptr noundef nonnull %97)
          to label %thread-pre-split unwind label %115

104:                                              ; preds = %74
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  br label %257

106:                                              ; preds = %77
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %256

108:                                              ; preds = %79
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %112

110:                                              ; preds = %80
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %112

112:                                              ; preds = %108, %110
  %.pn = phi { ptr, i32 } [ %111, %110 ], [ %109, %108 ]
  call void @_ZdlPvm(ptr noundef nonnull %78, i64 noundef 336) #11
  br label %256

113:                                              ; preds = %95, %93, %83
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %255

115:                                              ; preds = %102, %100, %96
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %255

117:                                              ; preds = %98
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %97, i64 noundef 64) #11
  br label %255

thread-pre-split:                                 ; preds = %102
  %.pr = load i32, ptr %8, align 4, !tbaa !52
  br label %119

119:                                              ; preds = %thread-pre-split, %90
  %120 = phi i32 [ %.pr, %thread-pre-split ], [ %91, %90 ]
  %121 = icmp eq i32 %120, 1
  br i1 %121, label %122, label %224

122:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #8
  store i32 0, ptr %15, align 4, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #8
  store i32 0, ptr %16, align 4, !tbaa !52
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %14, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 4 dereferenceable(8) %14)
          to label %124 unwind label %129

124:                                              ; preds = %122
  %125 = load ptr, ptr %123, align 8, !tbaa !55
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %126 unwind label %129

126:                                              ; preds = %124
  %127 = load ptr, ptr %11, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %127, ptr noundef %125)
          to label %128 unwind label %129

128:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %224

129:                                              ; preds = %126, %124, %122
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %255

131:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #8
  %132 = add nsw i32 %88, -1
  store i32 %132, ptr %18, align 4, !tbaa !52
  call void @_ZNSt4pairIiiEC2IiRiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %17, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %8)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #8
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %38, ptr noundef nonnull align 4 dereferenceable(8) %17)
          to label %134 unwind label %158

134:                                              ; preds = %131
  %135 = load ptr, ptr %133, align 8, !tbaa !55
  %136 = load ptr, ptr %11, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch19setOutputConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %136, ptr noundef %135)
          to label %137 unwind label %158

137:                                              ; preds = %134
  %138 = load i32, ptr %8, align 4, !tbaa !52
  %.not = icmp ne i32 %138, 0
  %139 = and i32 %138, 1
  %140 = icmp eq i32 %139, 0
  %or.cond = and i1 %.not, %140
  br i1 %or.cond, label %141, label %169

141:                                              ; preds = %137
  %142 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %143 unwind label %160

143:                                              ; preds = %141
  %144 = load i32, ptr %43, align 8, !tbaa !24
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %142, i32 noundef %144)
          to label %145 unwind label %162

145:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %39, ptr noundef nonnull align 4 dereferenceable(8) %19)
          to label %147 unwind label %164

147:                                              ; preds = %145
  store ptr %142, ptr %146, align 8, !tbaa !55
  %148 = load ptr, ptr %11, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch23setForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %148, ptr noundef nonnull %142)
          to label %149 unwind label %164

149:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #8
  %150 = load i32, ptr %8, align 4, !tbaa !52
  %151 = add nsw i32 %150, -1
  store i32 %151, ptr %21, align 4, !tbaa !52
  call void @_ZNSt4pairIiiEC2IRiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %21)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %35, ptr noundef nonnull align 4 dereferenceable(8) %20)
          to label %153 unwind label %166

153:                                              ; preds = %149
  %154 = load ptr, ptr %152, align 8, !tbaa !55
  store ptr %154, ptr %22, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch23setForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %154, ptr noundef nonnull %142)
          to label %155 unwind label %166

155:                                              ; preds = %153
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %156 unwind label %166

156:                                              ; preds = %155
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %157 unwind label %166

157:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  br label %173

158:                                              ; preds = %172, %134, %131
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %223

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

162:                                              ; preds = %143
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %142, i64 noundef 64) #11
  br label %223

164:                                              ; preds = %147, %145
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %168

166:                                              ; preds = %156, %155, %153, %149
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %168

168:                                              ; preds = %166, %164
  %.pn65 = phi { ptr, i32 } [ %167, %166 ], [ %165, %164 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  br label %223

169:                                              ; preds = %137
  %170 = icmp eq i32 %138, 0
  %171 = icmp eq i32 %138, %67
  %or.cond85 = select i1 %170, i1 true, i1 %171
  br i1 %or.cond85, label %172, label %173

172:                                              ; preds = %169
  invoke void @_ZNSt6vectorIP9FEASwitchSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %173 unwind label %158

173:                                              ; preds = %169, %172, %157
  %174 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %175 unwind label %193

175:                                              ; preds = %173
  %176 = load i32, ptr %43, align 8, !tbaa !24
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %174, i32 noundef %176)
          to label %177 unwind label %195

177:                                              ; preds = %175
  %178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 4 dereferenceable(8) %13)
          to label %179 unwind label %193

179:                                              ; preds = %177
  store ptr %174, ptr %178, align 8, !tbaa !55
  %180 = load ptr, ptr %11, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch29setUpNodeForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %180, ptr noundef nonnull %174)
          to label %181 unwind label %193

181:                                              ; preds = %179
  %182 = load i32, ptr %8, align 4, !tbaa !52
  %183 = and i32 %182, 1
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %185, label %.lr.ph

185:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #8
  %186 = load i32, ptr %7, align 4, !tbaa !52
  %187 = add nsw i32 %186, -1
  store i32 %187, ptr %23, align 4, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #8
  %188 = ashr exact i32 %182, 1
  store i32 %188, ptr %24, align 4, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  call void @_ZNSt4pairIiiEC2IRjS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24)
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %35, ptr noundef nonnull align 4 dereferenceable(8) %25)
          to label %190 unwind label %197

190:                                              ; preds = %185
  %191 = load ptr, ptr %189, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %191, ptr noundef nonnull %174)
          to label %192 unwind label %197

192:                                              ; preds = %190
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #8
  br label %222

193:                                              ; preds = %179, %177, %173
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %223

195:                                              ; preds = %175
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %174, i64 noundef 64) #11
  br label %223

197:                                              ; preds = %190, %185
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #8
  br label %223

.lr.ph:                                           ; preds = %181, %.lr.ph
  %.057137 = phi i32 [ %200, %.lr.ph ], [ %182, %181 ]
  %.058136 = phi i32 [ %199, %.lr.ph ], [ 0, %181 ]
  %199 = add i32 %.058136, 1
  %200 = lshr i32 %.057137, 1
  %201 = and i32 %.057137, 2
  %.not68 = icmp eq i32 %201, 0
  br i1 %.not68, label %._crit_edge, label %.lr.ph, !llvm.loop !56

._crit_edge:                                      ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #8
  %202 = load i32, ptr %7, align 4, !tbaa !52
  %reass.sub = sub i32 %202, %.058136
  %203 = add i32 %reass.sub, -2
  store i32 %203, ptr %26, align 4, !tbaa !52
  %204 = icmp slt i32 %203, 0
  br i1 %204, label %205, label %212

205:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #8
  store i32 0, ptr %28, align 4, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #8
  store i32 1, ptr %29, align 4, !tbaa !52
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %29)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #8
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %35, ptr noundef nonnull align 4 dereferenceable(8) %27)
          to label %207 unwind label %210

207:                                              ; preds = %205
  %208 = load ptr, ptr %206, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %208, ptr noundef nonnull %174)
          to label %209 unwind label %210

209:                                              ; preds = %207
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %220

210:                                              ; preds = %207, %205
  %211 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %221

212:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #8
  %213 = lshr i32 %.057137, 2
  store i32 %213, ptr %30, align 4, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  call void @_ZNSt4pairIiiEC2IRiRjTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_(ptr noundef nonnull align 4 dereferenceable(8) %31, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %30)
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %35, ptr noundef nonnull align 4 dereferenceable(8) %31)
          to label %215 unwind label %218

215:                                              ; preds = %212
  %216 = load ptr, ptr %214, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %216, ptr noundef nonnull %174)
          to label %217 unwind label %218

217:                                              ; preds = %215
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #8
  br label %220

218:                                              ; preds = %215, %212
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #8
  br label %221

220:                                              ; preds = %217, %209
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  br label %222

221:                                              ; preds = %218, %210
  %.pn69 = phi { ptr, i32 } [ %211, %210 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  br label %223

222:                                              ; preds = %220, %192
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %224

223:                                              ; preds = %193, %195, %197, %221, %160, %162, %168, %158
  %.pn71.pn = phi { ptr, i32 } [ %159, %158 ], [ %.pn65, %168 ], [ %163, %162 ], [ %161, %160 ], [ %198, %197 ], [ %.pn69, %221 ], [ %194, %193 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %255

224:                                              ; preds = %119, %128, %222
  %225 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %226 unwind label %234

226:                                              ; preds = %224
  %227 = load i32, ptr %43, align 8, !tbaa !24
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %225, i32 noundef %227)
          to label %228 unwind label %236

228:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #8
  %229 = load i32, ptr %8, align 4, !tbaa !52
  %230 = shl nsw i32 %229, 1
  store i32 %230, ptr %32, align 4, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %32)
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %38, ptr noundef nonnull align 4 dereferenceable(8) %33)
          to label %232 unwind label %238

232:                                              ; preds = %228
  store ptr %225, ptr %231, align 8, !tbaa !55
  %233 = load ptr, ptr %11, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch22setInputLeftConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %233, ptr noundef nonnull %225)
          to label %240 unwind label %238

234:                                              ; preds = %240, %224
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %255

236:                                              ; preds = %242, %226
  %.lcssa151 = phi ptr [ %225, %226 ], [ %241, %242 ]
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %.lcssa151, i64 noundef 64) #11
  br label %255

238:                                              ; preds = %249, %244, %232, %228
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #8
  br label %255

240:                                              ; preds = %232
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #8
  %241 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %242 unwind label %234

242:                                              ; preds = %240
  %243 = load i32, ptr %43, align 8, !tbaa !24
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %241, i32 noundef %243)
          to label %244 unwind label %236

244:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #8
  %245 = load i32, ptr %8, align 4, !tbaa !52
  %246 = shl nsw i32 %245, 1
  %247 = or disjoint i32 %246, 1
  store i32 %247, ptr %32, align 4, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %32)
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48) %38, ptr noundef nonnull align 4 dereferenceable(8) %33)
          to label %249 unwind label %238

249:                                              ; preds = %244
  store ptr %241, ptr %248, align 8, !tbaa !55
  %250 = load ptr, ptr %11, align 8, !tbaa !55
  invoke void @_ZN9FEASwitch23setInputRightConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336) %250, ptr noundef nonnull %241)
          to label %251 unwind label %238

251:                                              ; preds = %249
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  %252 = load i32, ptr %8, align 4, !tbaa !52
  %253 = add nsw i32 %252, 1
  store i32 %253, ptr %8, align 4, !tbaa !52
  %254 = icmp slt i32 %253, %.055146
  br i1 %254, label %74, label %._crit_edge143.loopexit, !llvm.loop !57

255:                                              ; preds = %234, %236, %238, %115, %117, %223, %129, %113
  %.pn76.pn = phi { ptr, i32 } [ %130, %129 ], [ %114, %113 ], [ %.pn71.pn, %223 ], [ %116, %115 ], [ %118, %117 ], [ %239, %238 ], [ %237, %236 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %256

256:                                              ; preds = %112, %255, %106
  %.pn76.pn.pn = phi { ptr, i32 } [ %.pn76.pn, %255 ], [ %.pn, %112 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %257

257:                                              ; preds = %256, %104
  %.pn76.pn.pn.pn = phi { ptr, i32 } [ %.pn76.pn.pn, %256 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8
  br label %258

258:                                              ; preds = %257, %53
  %.pn76.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn76.pn.pn.pn, %257 ], [ %54, %53 ]
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %40) #8
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %39) #8
  call void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %38) #8
  call void @_ZNSt6vectorIP9FEASwitchSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  call void @_ZNSt6vectorIP9FEASwitchSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  call void @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #8
  call void @_ZN4UnitD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %0) #8
  br label %259

259:                                              ; preds = %258, %51
  %.pn76.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn76.pn.pn.pn.pn, %258 ], [ %52, %51 ]
  resume { ptr, i32 } %.pn76.pn.pn.pn.pn.pn
}

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

declare noundef zeroext i1 @_Z10ispowerof2j(i32 noundef) local_unnamed_addr #2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt5log10IjEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt5log10IiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #6

declare void @_ZN9FEASwitchC1EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjj6Config(ptr noundef nonnull align 8 dereferenceable(336), i32 noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef byval(%class.Config) align 8) unnamed_addr #2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #0 align 2

declare void @_ZN9FEASwitch19setOutputConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #0 align 2

declare void @_ZN9FEASwitch29setUpNodeForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) local_unnamed_addr #2

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

declare void @_ZN9FEASwitch27addInputConnectionToForwardEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) local_unnamed_addr #2

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

declare void @_ZN9FEASwitch23setForwardingConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) local_unnamed_addr #2

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

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

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

declare void @_ZN9FEASwitch22setInputLeftConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) local_unnamed_addr #2

declare void @_ZN9FEASwitch23setInputRightConnectionEP10Connection(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind "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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin allocsize(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 #7 = { nobuiltin nounwind "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 #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !10, i64 88}
!9 = !{!"_ZTS6Config", !10, i64 0, !12, i64 4, !13, i64 8, !14, i64 24, !16, i64 40, !17, i64 64, !19, i64 72, !20, i64 96, !21, i64 104}
!10 = !{!"int", !11, i64 0}
!11 = !{!"omnipotent char", !7, i64 0}
!12 = !{!"_ZTS15DSNetworkConfig", !10, i64 0}
!13 = !{!"_ZTS13DSwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!14 = !{!"_ZTS15MSNetworkConfig", !15, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!15 = !{!"_ZTS19MultiplierNetwork_t", !11, i64 0}
!16 = !{!"_ZTS13MSwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!17 = !{!"_ZTS15ASNetworkConfig", !18, i64 0, !10, i64 4}
!18 = !{!"_ZTS15ReduceNetwork_t", !11, i64 0}
!19 = !{!"_ZTS13ASwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!20 = !{!"_ZTS17LookUpTableConfig", !10, i64 0, !10, i64 4}
!21 = !{!"_ZTS14SDMemoryConfig", !22, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !23, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!22 = !{!"_ZTS18MemoryController_t", !11, i64 0}
!23 = !{!"_ZTS17MemoryHierarchy_t", !11, i64 0}
!24 = !{!25, !10, i64 48}
!25 = !{!"_ZTS9FENetwork", !26, i64 0, !10, i64 48, !10, i64 52, !10, i64 56, !32, i64 64, !40, i64 112, !40, i64 136, !44, i64 160, !44, i64 208, !44, i64 256, !30, i64 304}
!26 = !{!"_ZTS13ReduceNetwork", !27, i64 0}
!27 = !{!"_ZTS4Unit", !10, i64 8, !28, i64 16}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !29, i64 0, !31, i64 8, !11, i64 16}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !30, i64 0}
!30 = !{!"any pointer", !11, i64 0}
!31 = !{!"long", !11, i64 0}
!32 = !{!"_ZTSSt3mapISt4pairIiiEP9FEASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEE", !33, i64 0}
!33 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES0_IKS1_P9FEASwitchESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES0_IKS1_P9FEASwitchESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !35, i64 0, !37, i64 8}
!35 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !36, i64 0}
!36 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!37 = !{!"_ZTSSt15_Rb_tree_header", !38, i64 0, !31, i64 32}
!38 = !{!"_ZTSSt18_Rb_tree_node_base", !39, i64 0, !30, i64 8, !30, i64 16, !30, i64 24}
!39 = !{!"_ZTSSt14_Rb_tree_color", !11, i64 0}
!40 = !{!"_ZTSSt6vectorIP9FEASwitchSaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIP9FEASwitchSaIS1_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIP9FEASwitchSaIS1_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIP9FEASwitchSaIS1_EE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!44 = !{!"_ZTSSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEE", !45, i64 0}
!45 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES0_IKS1_P10ConnectionESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !46, i64 0}
!46 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES0_IKS1_P10ConnectionESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !35, i64 0, !37, i64 8}
!47 = !{!9, !10, i64 28}
!48 = !{!25, !10, i64 52}
!49 = !{!9, !10, i64 68}
!50 = !{!25, !30, i64 304}
!51 = !{!25, !10, i64 56}
!52 = !{!10, !10, i64 0}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{!30, !30, i64 0}
!56 = distinct !{!56, !54}
!57 = distinct !{!57, !54}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass