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

; 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.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%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::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl" }
%"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ASNetwork = type <{ %class.ReduceNetwork, i32, i32, i32, [4 x i8], %"class.std::map", %"class.std::vector", %"class.std::vector", %"class.std::map.6", %"class.std::map.6", %"class.std::vector.11", ptr, ptr, i8, [3 x i8], %class.Config, [4 x i8] }>
%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>, ASwitch *>, std::_Select1st<std::pair<const std::pair<int, int>, ASwitch *>>, std::less<std::pair<int, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<int, int>, std::pair<const std::pair<int, int>, ASwitch *>, std::_Select1st<std::pair<const std::pair<int, int>, ASwitch *>>, 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<ASwitch *, std::allocator<ASwitch *>>::_Vector_impl" }
%"struct.std::_Vector_base<ASwitch *, std::allocator<ASwitch *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ASwitch *, std::allocator<ASwitch *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ASwitch *, std::allocator<ASwitch *>>::_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" }

@.str.1 = external hidden unnamed_addr constant [92 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.3 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [33 x i8], align 1
@__PRETTY_FUNCTION__._ZN9ASNetwork20setMemoryConnectionsESt6vectorIS0_IP10ConnectionSaIS2_EESaIS4_EE = external hidden unnamed_addr constant [85 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [46 x i8], align 1

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 #0 align 2

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

; 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) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 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 #4 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9ASNetwork20setMemoryConnectionsESt6vectorIS0_IP10ConnectionSaIS2_EESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(460) %0, ptr noundef %1) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %class.Config, align 8
  %11 = alloca i1, align 1
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::vector.11", align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.std::vector.11", align 8
  %31 = alloca %"class.std::vector.11", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %32 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #9
  %33 = call noundef i64 @_ZNKSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #9
  %34 = trunc i64 %33 to i32
  store i32 %34, ptr %5, align 4, !tbaa !9
  %35 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.3)
  %36 = load i32, ptr %5, align 4, !tbaa !9
  %37 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef %36)
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %39 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 13
  %40 = load i8, ptr %39, align 8, !tbaa !11, !range !51, !noundef !52
  %41 = trunc i8 %40 to i1
  %42 = zext i1 %41 to i32
  %43 = icmp sgt i32 %42, 0
  br i1 %43, label %44, label %65

44:                                               ; preds = %2
  %45 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 200) #10
  store i1 true, ptr %11, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %46 unwind label %53

46:                                               ; preds = %44
  %47 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %10, ptr align 4 %47, i64 160, i1 false), !tbaa.struct !53
  %48 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 5
  %49 = call noundef i64 @_ZNKSt3mapISt4pairIiiEP7ASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %48) #9
  %50 = trunc i64 %49 to i32
  invoke void @_ZN18AccumulationBufferC1EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6Configj(ptr noundef nonnull align 8 dereferenceable(200) %45, i32 noundef 0, ptr noundef %6, ptr noundef byval(%class.Config) align 8 %10, i32 noundef %50)
          to label %51 unwind label %57

51:                                               ; preds = %46
  store i1 false, ptr %11, align 1
  %52 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 12
  store ptr %45, ptr %52, align 8, !tbaa !58
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  br label %65

53:                                               ; preds = %44
  %54 = landingpad { ptr, i32 }
          cleanup
  %55 = extractvalue { ptr, i32 } %54, 0
  store ptr %55, ptr %8, align 8
  %56 = extractvalue { ptr, i32 } %54, 1
  store i32 %56, ptr %9, align 4
  br label %61

57:                                               ; preds = %46
  %58 = landingpad { ptr, i32 }
          cleanup
  %59 = extractvalue { ptr, i32 } %58, 0
  store ptr %59, ptr %8, align 8
  %60 = extractvalue { ptr, i32 } %58, 1
  store i32 %60, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %61

61:                                               ; preds = %57, %53
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  %62 = load i1, ptr %11, align 1
  br i1 %62, label %63, label %64

63:                                               ; preds = %61
  call void @_ZdlPvm(ptr noundef %45, i64 noundef 200) #11
  br label %64

64:                                               ; preds = %63, %61
  br label %320

65:                                               ; preds = %51, %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #9
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %66

66:                                               ; preds = %199, %65
  %67 = load i32, ptr %14, align 4, !tbaa !9
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 7
  %70 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #9
  %71 = icmp ult i64 %68, %70
  br i1 %71, label %73, label %72

72:                                               ; preds = %66
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %203

73:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  %74 = load i32, ptr %14, align 4, !tbaa !9
  %75 = sdiv i32 %74, 2
  %76 = load i32, ptr %5, align 4, !tbaa !9
  %77 = udiv i32 %75, %76
  %78 = mul i32 2, %77
  store i32 %78, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %79 = load i32, ptr %14, align 4, !tbaa !9
  %80 = sdiv i32 %79, 2
  %81 = load i32, ptr %5, align 4, !tbaa !9
  %82 = urem i32 %80, %81
  store i32 %82, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %83 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 7
  %84 = load i32, ptr %14, align 4, !tbaa !9
  %85 = sext i32 %84 to i64
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP7ASwitchSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %85) #9
  %87 = load ptr, ptr %86, align 8, !tbaa !5
  store ptr %87, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %88 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 7
  %89 = load i32, ptr %14, align 4, !tbaa !9
  %90 = add nsw i32 %89, 1
  %91 = sext i32 %90 to i64
  %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP7ASwitchSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %91) #9
  %93 = load ptr, ptr %92, align 8, !tbaa !5
  store ptr %93, ptr %18, align 8, !tbaa !5
  %94 = load i32, ptr %16, align 4, !tbaa !9
  %95 = zext i32 %94 to i64
  %96 = call noundef i64 @_ZNKSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #9
  %97 = icmp ult i64 %95, %96
  br i1 %97, label %98, label %99

98:                                               ; preds = %73
  br label %101

99:                                               ; preds = %73
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 149, ptr noundef @__PRETTY_FUNCTION__._ZN9ASNetwork20setMemoryConnectionsESt6vectorIS0_IP10ConnectionSaIS2_EESaIS4_EE) #12
  unreachable

100:                                              ; No predecessors!
  br label %101

101:                                              ; preds = %100, %98
  %102 = load i32, ptr %15, align 4, !tbaa !9
  %103 = add i32 %102, 1
  %104 = zext i32 %103 to i64
  %105 = load i32, ptr %16, align 4, !tbaa !9
  %106 = zext i32 %105 to i64
  %107 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %106) #9
  %108 = call noundef i64 @_ZNKSt6vectorIP10ConnectionSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %107) #9
  %109 = icmp ult i64 %104, %108
  br i1 %109, label %110, label %111

110:                                              ; preds = %101
  br label %113

111:                                              ; preds = %101
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 150, ptr noundef @__PRETTY_FUNCTION__._ZN9ASNetwork20setMemoryConnectionsESt6vectorIS0_IP10ConnectionSaIS2_EESaIS4_EE) #12
  unreachable

112:                                              ; No predecessors!
  br label %113

113:                                              ; preds = %112, %110
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %114 = load i32, ptr %16, align 4, !tbaa !9
  %115 = zext i32 %114 to i64
  %116 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %115) #9
  %117 = load i32, ptr %15, align 4, !tbaa !9
  %118 = zext i32 %117 to i64
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10ConnectionSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %116, i64 noundef %118) #9
  %120 = load ptr, ptr %119, align 8, !tbaa !5
  store ptr %120, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %121 = load i32, ptr %16, align 4, !tbaa !9
  %122 = zext i32 %121 to i64
  %123 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %122) #9
  %124 = load i32, ptr %15, align 4, !tbaa !9
  %125 = add i32 %124, 1
  %126 = zext i32 %125 to i64
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10ConnectionSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %126) #9
  %128 = load ptr, ptr %127, align 8, !tbaa !5
  store ptr %128, ptr %20, align 8, !tbaa !5
  %129 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 13
  %130 = load i8, ptr %129, align 8, !tbaa !11, !range !51, !noundef !52
  %131 = trunc i8 %130 to i1
  %132 = zext i1 %131 to i32
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %134, label %150

134:                                              ; preds = %113
  %135 = load ptr, ptr %17, align 8, !tbaa !5
  %136 = load ptr, ptr %19, align 8, !tbaa !5
  %137 = load i32, ptr %16, align 4, !tbaa !9
  %138 = load i32, ptr %15, align 4, !tbaa !9
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %135, ptr noundef %136, i32 noundef %137, i32 noundef %138)
          to label %139 unwind label %146

139:                                              ; preds = %134
  %140 = load ptr, ptr %18, align 8, !tbaa !5
  %141 = load ptr, ptr %20, align 8, !tbaa !5
  %142 = load i32, ptr %16, align 4, !tbaa !9
  %143 = load i32, ptr %15, align 4, !tbaa !9
  %144 = add i32 %143, 1
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %140, ptr noundef %141, i32 noundef %142, i32 noundef %144)
          to label %145 unwind label %146

145:                                              ; preds = %139
  br label %196

146:                                              ; preds = %139, %134
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %8, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %9, align 4
  br label %202

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

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

155:                                              ; preds = %152
  store ptr %151, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %156 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %157 unwind label %186

157:                                              ; preds = %155
  %158 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 1
  %159 = load i32, ptr %158, align 8, !tbaa !59
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %156, i32 noundef %159)
          to label %160 unwind label %190

160:                                              ; preds = %157
  store ptr %156, ptr %22, align 8, !tbaa !5
  %161 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 10
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %161, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %162 unwind label %186

162:                                              ; preds = %160
  %163 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 10
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %164 unwind label %186

164:                                              ; preds = %162
  %165 = load ptr, ptr %17, align 8, !tbaa !5
  %166 = load ptr, ptr %21, align 8, !tbaa !5
  %167 = load i32, ptr %16, align 4, !tbaa !9
  %168 = load i32, ptr %15, align 4, !tbaa !9
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %165, ptr noundef %166, i32 noundef %167, i32 noundef %168)
          to label %169 unwind label %186

169:                                              ; preds = %164
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = load ptr, ptr %22, align 8, !tbaa !5
  %172 = load i32, ptr %16, align 4, !tbaa !9
  %173 = load i32, ptr %15, align 4, !tbaa !9
  %174 = add i32 %173, 1
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %170, ptr noundef %171, i32 noundef %172, i32 noundef %174)
          to label %175 unwind label %186

175:                                              ; preds = %169
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %176 unwind label %186

176:                                              ; preds = %175
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %177 unwind label %186

177:                                              ; preds = %176
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %196

178:                                              ; preds = %150
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %8, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %9, align 4
  br label %195

182:                                              ; preds = %152
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %8, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %151, i64 noundef 64) #11
  br label %195

186:                                              ; preds = %176, %175, %169, %164, %162, %160, %155
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %8, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %9, align 4
  br label %194

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

194:                                              ; preds = %190, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %195

195:                                              ; preds = %194, %182, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %202

196:                                              ; preds = %177, %145
  %197 = load i32, ptr %12, align 4, !tbaa !9
  %198 = add i32 %197, 2
  store i32 %198, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  br label %199

199:                                              ; preds = %196
  %200 = load i32, ptr %14, align 4, !tbaa !9
  %201 = add nsw i32 %200, 2
  store i32 %201, ptr %14, align 4, !tbaa !9
  br label %66, !llvm.loop !60

202:                                              ; preds = %195, %146
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #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 %319

203:                                              ; preds = %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %204

204:                                              ; preds = %286, %203
  %205 = load i32, ptr %23, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 6
  %208 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %207) #9
  %209 = icmp ult i64 %206, %208
  br i1 %209, label %211, label %210

210:                                              ; preds = %204
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %290

211:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %212 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 7
  %213 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %212) #9
  %214 = load i32, ptr %5, align 4, !tbaa !9
  %215 = zext i32 %214 to i64
  %216 = udiv i64 %213, %215
  %217 = add i64 %216, 1
  %218 = trunc i64 %217 to i32
  store i32 %218, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %219 = load i32, ptr %24, align 4, !tbaa !9
  %220 = load i32, ptr %23, align 4, !tbaa !9
  %221 = load i32, ptr %5, align 4, !tbaa !9
  %222 = udiv i32 %220, %221
  %223 = add i32 %219, %222
  store i32 %223, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  %224 = load i32, ptr %23, align 4, !tbaa !9
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 7
  %227 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %226) #9
  %228 = add i64 %225, %227
  %229 = load i32, ptr %5, align 4, !tbaa !9
  %230 = zext i32 %229 to i64
  %231 = urem i64 %228, %230
  %232 = trunc i64 %231 to i32
  store i32 %232, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %233 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 6
  %234 = load i32, ptr %23, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP7ASwitchSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef %235) #9
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  store ptr %237, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %238 = load i32, ptr %26, align 4, !tbaa !9
  %239 = zext i32 %238 to i64
  %240 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %239) #9
  %241 = load i32, ptr %25, align 4, !tbaa !9
  %242 = zext i32 %241 to i64
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10ConnectionSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %242) #9
  %244 = load ptr, ptr %243, align 8, !tbaa !5
  store ptr %244, ptr %28, align 8, !tbaa !5
  %245 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 13
  %246 = load i8, ptr %245, align 8, !tbaa !11, !range !51, !noundef !52
  %247 = trunc i8 %246 to i1
  %248 = zext i1 %247 to i32
  %249 = icmp eq i32 %248, 0
  br i1 %249, label %250, label %260

250:                                              ; preds = %211
  %251 = load ptr, ptr %27, align 8, !tbaa !5
  %252 = load ptr, ptr %28, align 8, !tbaa !5
  %253 = load i32, ptr %26, align 4, !tbaa !9
  %254 = load i32, ptr %25, align 4, !tbaa !9
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %251, ptr noundef %252, i32 noundef %253, i32 noundef %254)
          to label %255 unwind label %256

255:                                              ; preds = %250
  br label %283

256:                                              ; preds = %250
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %8, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %9, align 4
  br label %289

260:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %261 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %262 unwind label %274

262:                                              ; preds = %260
  %263 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 1
  %264 = load i32, ptr %263, align 8, !tbaa !59
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %261, i32 noundef %264)
          to label %265 unwind label %278

265:                                              ; preds = %262
  store ptr %261, ptr %29, align 8, !tbaa !5
  %266 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 10
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %266, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %267 unwind label %274

267:                                              ; preds = %265
  %268 = load ptr, ptr %27, align 8, !tbaa !5
  %269 = load ptr, ptr %29, align 8, !tbaa !5
  %270 = load i32, ptr %26, align 4, !tbaa !9
  %271 = load i32, ptr %25, align 4, !tbaa !9
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %268, ptr noundef %269, i32 noundef %270, i32 noundef %271)
          to label %272 unwind label %274

272:                                              ; preds = %267
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %273 unwind label %274

273:                                              ; preds = %272
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %283

274:                                              ; preds = %272, %267, %265, %260
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %8, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %9, align 4
  br label %282

278:                                              ; preds = %262
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %8, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %261, i64 noundef 64) #11
  br label %282

282:                                              ; preds = %278, %274
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %289

283:                                              ; preds = %273, %255
  %284 = load i32, ptr %12, align 4, !tbaa !9
  %285 = add i32 %284, 1
  store i32 %285, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %286

286:                                              ; preds = %283
  %287 = load i32, ptr %23, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %23, align 4, !tbaa !9
  br label %204, !llvm.loop !62

289:                                              ; preds = %282, %256
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %319

290:                                              ; preds = %210
  %291 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 13
  %292 = load i8, ptr %291, align 8, !tbaa !11, !range !51, !noundef !52
  %293 = trunc i8 %292 to i1
  %294 = zext i1 %293 to i32
  %295 = icmp sgt i32 %294, 0
  br i1 %295, label %296, label %318

296:                                              ; preds = %290
  %297 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 12
  %298 = load ptr, ptr %297, align 8, !tbaa !58
  %299 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 10
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %299)
          to label %300 unwind label %306

300:                                              ; preds = %296
  invoke void @_ZN18AccumulationBuffer19setInputConnectionsESt6vectorIP10ConnectionSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(200) %298, ptr noundef %30)
          to label %301 unwind label %310

301:                                              ; preds = %300
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  %302 = getelementptr inbounds %class.ASNetwork, ptr %32, i32 0, i32 12
  %303 = load ptr, ptr %302, align 8, !tbaa !58
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %304 unwind label %306

304:                                              ; preds = %301
  invoke void @_ZN18AccumulationBuffer20setMemoryConnectionsESt6vectorIP10ConnectionSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(200) %303, ptr noundef %31)
          to label %305 unwind label %314

305:                                              ; preds = %304
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #9
  br label %318

306:                                              ; preds = %301, %296
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %8, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %9, align 4
  br label %319

310:                                              ; preds = %300
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %8, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %9, align 4
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  br label %319

314:                                              ; preds = %304
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %8, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %9, align 4
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #9
  br label %319

318:                                              ; preds = %305, %290
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #9
  ret void

319:                                              ; preds = %314, %310, %306, %289, %202
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %320

320:                                              ; preds = %319, %64
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #9
  br label %321

321:                                              ; preds = %320
  %322 = load ptr, ptr %8, align 8
  %323 = load i32, ptr %9, align 4
  %324 = insertvalue { ptr, i32 } poison, ptr %322, 0
  %325 = insertvalue { ptr, i32 } %324, i32 %323, 1
  resume { ptr, i32 } %325
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt3mapISt4pairIiiEP7ASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

declare void @_ZN18AccumulationBufferC1EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6Configj(ptr noundef nonnull align 8 dereferenceable(200), i32 noundef, ptr noundef, ptr noundef byval(%class.Config) align 8, i32 noundef) unnamed_addr #7

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

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

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

declare void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef, i32 noundef, i32 noundef) #7

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

declare void @_ZN18AccumulationBuffer19setInputConnectionsESt6vectorIP10ConnectionSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef) #7

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

declare void @_ZN18AccumulationBuffer20setMemoryConnectionsESt6vectorIP10ConnectionSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef) #7

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

attributes #0 = { 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 #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { noreturn 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, !37, i64 296}
!12 = !{!"_ZTS9ASNetwork", !13, i64 0, !10, i64 48, !10, i64 52, !10, i64 56, !18, i64 64, !26, i64 112, !26, i64 136, !30, i64 160, !30, i64 208, !33, i64 256, !6, i64 280, !6, i64 288, !37, i64 296, !38, i64 300}
!13 = !{!"_ZTS13ReduceNetwork", !14, i64 0}
!14 = !{!"_ZTS4Unit", !10, i64 8, !15, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !16, i64 0, !17, i64 8, !7, i64 16}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!"_ZTSSt3mapISt4pairIiiEP7ASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEE", !19, i64 0}
!19 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES0_IKS1_P7ASwitchESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !20, i64 0}
!20 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES0_IKS1_P7ASwitchESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !21, i64 0, !23, i64 8}
!21 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !22, i64 0}
!22 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!23 = !{!"_ZTSSt15_Rb_tree_header", !24, i64 0, !17, i64 32}
!24 = !{!"_ZTSSt18_Rb_tree_node_base", !25, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!26 = !{!"_ZTSSt6vectorIP7ASwitchSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIP7ASwitchSaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP7ASwitchSaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIP7ASwitchSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEE", !31, i64 0}
!31 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES0_IKS1_P10ConnectionESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !32, i64 0}
!32 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES0_IKS1_P10ConnectionESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !21, i64 0, !23, i64 8}
!33 = !{!"_ZTSSt6vectorIP10ConnectionSaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIP10ConnectionSaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"bool", !7, i64 0}
!38 = !{!"_ZTS6Config", !10, i64 0, !39, i64 4, !40, i64 8, !41, i64 24, !43, i64 40, !44, i64 64, !46, i64 72, !47, i64 96, !48, i64 104}
!39 = !{!"_ZTS15DSNetworkConfig", !10, i64 0}
!40 = !{!"_ZTS13DSwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!41 = !{!"_ZTS15MSNetworkConfig", !42, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!42 = !{!"_ZTS19MultiplierNetwork_t", !7, i64 0}
!43 = !{!"_ZTS13MSwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!44 = !{!"_ZTS15ASNetworkConfig", !45, i64 0, !10, i64 4}
!45 = !{!"_ZTS15ReduceNetwork_t", !7, i64 0}
!46 = !{!"_ZTS13ASwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!47 = !{!"_ZTS17LookUpTableConfig", !10, i64 0, !10, i64 4}
!48 = !{!"_ZTS14SDMemoryConfig", !49, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !50, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!49 = !{!"_ZTS18MemoryController_t", !7, i64 0}
!50 = !{!"_ZTS17MemoryHierarchy_t", !7, i64 0}
!51 = !{i8 0, i8 2}
!52 = !{}
!53 = !{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, !54, 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, !55, 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, !56, 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, !57, 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}
!54 = !{!42, !42, i64 0}
!55 = !{!45, !45, i64 0}
!56 = !{!49, !49, i64 0}
!57 = !{!50, !50, i64 0}
!58 = !{!12, !6, i64 288}
!59 = !{!12, !10, i64 48}
!60 = distinct !{!60, !61}
!61 = !{!"llvm.loop.mustprogress"}
!62 = distinct !{!62, !61}


; 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.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%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::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl" }
%"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Connection *, std::allocator<Connection *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [92 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.3 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [33 x i8], align 1
@__PRETTY_FUNCTION__._ZN9ASNetwork20setMemoryConnectionsESt6vectorIS0_IP10ConnectionSaIS2_EESaIS4_EE = external hidden unnamed_addr constant [85 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [46 x i8], align 1

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 #0 align 2

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

; Function Attrs: mustprogress 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) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 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 #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIP10ConnectionSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9ASNetwork20setMemoryConnectionsESt6vectorIS0_IP10ConnectionSaIS2_EESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(460) %0, ptr noundef nonnull %1) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %class.Config, align 8
  %6 = alloca %"class.std::vector.11", align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.std::vector.11", align 8
  %14 = alloca %"class.std::vector.11", align 8
  %15 = tail call noundef i64 @_ZNKSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #9
  %16 = trunc i64 %15 to i32
  %17 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.3)
  %18 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %17, i32 noundef %16)
  %19 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %20 = getelementptr inbounds i8, ptr %0, i64 296
  %21 = load i8, ptr %20, align 8, !tbaa !5, !range !49, !noundef !50
  %22 = trunc nuw i8 %21 to i1
  br i1 %22, label %23, label %37

23:                                               ; preds = %2
  %24 = tail call noalias noundef nonnull dereferenceable(200) ptr @_Znwm(i64 noundef 200) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %25 unwind label %32

25:                                               ; preds = %23
  %26 = getelementptr inbounds i8, ptr %0, i64 300
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(160) %5, ptr noundef nonnull align 4 dereferenceable(160) %26, i64 160, i1 false), !tbaa.struct !51
  %27 = getelementptr inbounds i8, ptr %0, i64 64
  %28 = call noundef i64 @_ZNKSt3mapISt4pairIiiEP7ASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #9
  %29 = trunc i64 %28 to i32
  invoke void @_ZN18AccumulationBufferC1EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6Configj(ptr noundef nonnull align 8 dereferenceable(200) %24, i32 noundef 0, ptr noundef nonnull %3, ptr noundef nonnull byval(%class.Config) align 8 %5, i32 noundef %29)
          to label %30 unwind label %34

30:                                               ; preds = %25
  %31 = getelementptr inbounds i8, ptr %0, i64 288
  store ptr %24, ptr %31, align 8, !tbaa !57
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  br label %37

32:                                               ; preds = %23
  %33 = landingpad { ptr, i32 }
          cleanup
  br label %36

34:                                               ; preds = %25
  %35 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  br label %36

36:                                               ; preds = %34, %32
  %.pn = phi { ptr, i32 } [ %35, %34 ], [ %33, %32 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  call void @_ZdlPvm(ptr noundef nonnull %24, i64 noundef 200) #11
  br label %176

37:                                               ; preds = %30, %2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %38 = getelementptr inbounds i8, ptr %0, i64 136
  %39 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  %.not = icmp eq i64 %39, 0
  br i1 %.not, label %.preheader, label %.lr.ph

.lr.ph:                                           ; preds = %37
  %40 = getelementptr inbounds i8, ptr %0, i64 48
  %41 = getelementptr inbounds i8, ptr %0, i64 256
  br label %47

.preheader:                                       ; preds = %112, %37
  %42 = getelementptr inbounds i8, ptr %0, i64 112
  %43 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  %.not93 = icmp eq i64 %43, 0
  br i1 %.not93, label %._crit_edge, label %.lr.ph92

.lr.ph92:                                         ; preds = %.preheader
  %44 = and i64 %15, 4294967295
  %45 = getelementptr inbounds i8, ptr %0, i64 48
  %46 = getelementptr inbounds i8, ptr %0, i64 256
  br label %118

47:                                               ; preds = %.lr.ph, %112
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %112 ]
  %48 = lshr exact i64 %indvars.iv, 1
  %49 = trunc nuw i64 %48 to i32
  %50 = udiv i32 %49, %16
  %51 = shl nuw nsw i32 %50, 1
  %52 = urem i32 %49, %16
  %53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP7ASwitchSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #9
  %54 = load ptr, ptr %53, align 8, !tbaa !58
  %55 = or disjoint i64 %indvars.iv, 1
  %56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP7ASwitchSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %55) #9
  %57 = load ptr, ptr %56, align 8, !tbaa !58
  %58 = zext nneg i32 %52 to i64
  %59 = call noundef i64 @_ZNKSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #9
  %60 = icmp ugt i64 %59, %58
  br i1 %60, label %62, label %61

61:                                               ; preds = %47
  call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 149, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN9ASNetwork20setMemoryConnectionsESt6vectorIS0_IP10ConnectionSaIS2_EESaIS4_EE) #12
  unreachable

62:                                               ; preds = %47
  %63 = or disjoint i32 %51, 1
  %64 = zext nneg i32 %63 to i64
  %65 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %58) #9
  %66 = call noundef i64 @_ZNKSt6vectorIP10ConnectionSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  %67 = icmp ugt i64 %66, %64
  br i1 %67, label %69, label %68

68:                                               ; preds = %62
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 150, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN9ASNetwork20setMemoryConnectionsESt6vectorIS0_IP10ConnectionSaIS2_EESaIS4_EE) #12
  unreachable

69:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  %70 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %58) #9
  %71 = zext nneg i32 %51 to i64
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10ConnectionSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %71) #9
  %73 = load ptr, ptr %72, align 8, !tbaa !58
  store ptr %73, ptr %7, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  %74 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %58) #9
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10ConnectionSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %64) #9
  %76 = load ptr, ptr %75, align 8, !tbaa !58
  store ptr %76, ptr %8, align 8, !tbaa !58
  %77 = load i8, ptr %20, align 8, !tbaa !5, !range !49, !noundef !50
  %78 = icmp eq i8 %77, 0
  br i1 %78, label %79, label %85

79:                                               ; preds = %69
  %80 = load ptr, ptr %7, align 8, !tbaa !58
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %54, ptr noundef %80, i32 noundef %52, i32 noundef %51)
          to label %81 unwind label %83

81:                                               ; preds = %79
  %82 = load ptr, ptr %8, align 8, !tbaa !58
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %57, ptr noundef %82, i32 noundef %52, i32 noundef %63)
          to label %112 unwind label %83

83:                                               ; preds = %81, %79
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %115

85:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %86 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %87 unwind label %102

87:                                               ; preds = %85
  %88 = load i32, ptr %40, align 8, !tbaa !59
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %86, i32 noundef %88)
          to label %89 unwind label %104

89:                                               ; preds = %87
  store ptr %86, ptr %9, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #9
  %90 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %91 unwind label %106

91:                                               ; preds = %89
  %92 = load i32, ptr %40, align 8, !tbaa !59
  invoke void @_ZN10ConnectionC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %90, i32 noundef %92)
          to label %93 unwind label %108

93:                                               ; preds = %91
  store ptr %90, ptr %10, align 8, !tbaa !58
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %94 unwind label %106

94:                                               ; preds = %93
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %95 unwind label %106

95:                                               ; preds = %94
  %96 = load ptr, ptr %9, align 8, !tbaa !58
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %54, ptr noundef %96, i32 noundef %52, i32 noundef %51)
          to label %97 unwind label %106

97:                                               ; preds = %95
  %98 = load ptr, ptr %10, align 8, !tbaa !58
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %57, ptr noundef %98, i32 noundef %52, i32 noundef %63)
          to label %99 unwind label %106

99:                                               ; preds = %97
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %100 unwind label %106

100:                                              ; preds = %99
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %101 unwind label %106

101:                                              ; preds = %100
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %112

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

104:                                              ; preds = %87
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %86, i64 noundef 64) #11
  br label %111

106:                                              ; preds = %100, %99, %97, %95, %94, %93, %89
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %110

108:                                              ; preds = %91
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %90, i64 noundef 64) #11
  br label %110

110:                                              ; preds = %108, %106
  %.pn71 = phi { ptr, i32 } [ %107, %106 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  br label %111

111:                                              ; preds = %110, %104, %102
  %.pn71.pn = phi { ptr, i32 } [ %.pn71, %110 ], [ %105, %104 ], [ %103, %102 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %115

112:                                              ; preds = %81, %101
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2
  %113 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  %114 = icmp ugt i64 %113, %indvars.iv.next
  br i1 %114, label %47, label %.preheader, !llvm.loop !60

115:                                              ; preds = %111, %83
  %.pn74 = phi { ptr, i32 } [ %84, %83 ], [ %.pn71.pn, %111 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  br label %175

._crit_edge:                                      ; preds = %155, %.preheader
  %116 = load i8, ptr %20, align 8, !tbaa !5, !range !49, !noundef !50
  %117 = trunc nuw i8 %116 to i1
  br i1 %117, label %159, label %174

118:                                              ; preds = %.lr.ph92, %155
  %indvars.iv99 = phi i64 [ 0, %.lr.ph92 ], [ %indvars.iv.next100, %155 ]
  %119 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  %120 = udiv i64 %119, %44
  %121 = trunc i64 %120 to i32
  %122 = add i32 %121, 1
  %123 = trunc nuw nsw i64 %indvars.iv99 to i32
  %124 = udiv i32 %123, %16
  %125 = add i32 %122, %124
  %126 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #9
  %127 = add i64 %126, %indvars.iv99
  %128 = urem i64 %127, %44
  %129 = trunc nuw i64 %128 to i32
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP7ASwitchSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv99) #9
  %131 = load ptr, ptr %130, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %132 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %128) #9
  %133 = zext i32 %125 to i64
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10ConnectionSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %132, i64 noundef %133) #9
  %135 = load ptr, ptr %134, align 8, !tbaa !58
  store ptr %135, ptr %11, align 8, !tbaa !58
  %136 = load i8, ptr %20, align 8, !tbaa !5, !range !49, !noundef !50
  %137 = icmp eq i8 %136, 0
  br i1 %137, label %138, label %141

138:                                              ; preds = %118
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %131, ptr noundef %135, i32 noundef %129, i32 noundef %125)
          to label %155 unwind label %139

139:                                              ; preds = %138
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %158

141:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  %142 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %143 unwind label %150

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

145:                                              ; preds = %143
  store ptr %142, ptr %12, align 8, !tbaa !58
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %146 unwind label %150

146:                                              ; preds = %145
  %147 = load ptr, ptr %12, align 8, !tbaa !58
  invoke void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288) %131, ptr noundef %147, i32 noundef %129, i32 noundef %125)
          to label %148 unwind label %150

148:                                              ; preds = %146
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %149 unwind label %150

149:                                              ; preds = %148
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %155

150:                                              ; preds = %148, %146, %145, %141
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %154

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

154:                                              ; preds = %152, %150
  %.pn67 = phi { ptr, i32 } [ %151, %150 ], [ %153, %152 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %158

155:                                              ; preds = %138, %149
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  %indvars.iv.next100 = add nuw nsw i64 %indvars.iv99, 1
  %156 = call noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  %157 = icmp ugt i64 %156, %indvars.iv.next100
  br i1 %157, label %118, label %._crit_edge, !llvm.loop !62

158:                                              ; preds = %154, %139
  %.pn69 = phi { ptr, i32 } [ %140, %139 ], [ %.pn67, %154 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  br label %175

159:                                              ; preds = %._crit_edge
  %160 = getelementptr inbounds i8, ptr %0, i64 288
  %161 = load ptr, ptr %160, align 8, !tbaa !57
  %162 = getelementptr inbounds i8, ptr %0, i64 256
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %162)
          to label %163 unwind label %168

163:                                              ; preds = %159
  invoke void @_ZN18AccumulationBuffer19setInputConnectionsESt6vectorIP10ConnectionSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(200) %161, ptr noundef nonnull %13)
          to label %164 unwind label %170

164:                                              ; preds = %163
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  %165 = load ptr, ptr %160, align 8, !tbaa !57
  invoke void @_ZNSt6vectorIP10ConnectionSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %166 unwind label %168

166:                                              ; preds = %164
  invoke void @_ZN18AccumulationBuffer20setMemoryConnectionsESt6vectorIP10ConnectionSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(200) %165, ptr noundef nonnull %14)
          to label %167 unwind label %172

167:                                              ; preds = %166
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  br label %174

168:                                              ; preds = %164, %159
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %175

170:                                              ; preds = %163
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  br label %175

172:                                              ; preds = %166
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  br label %175

174:                                              ; preds = %167, %._crit_edge
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  ret void

175:                                              ; preds = %172, %170, %168, %158, %115
  %.pn74.pn = phi { ptr, i32 } [ %.pn74, %115 ], [ %.pn69, %158 ], [ %173, %172 ], [ %169, %168 ], [ %171, %170 ]
  call void @_ZNSt6vectorIP10ConnectionSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  br label %176

176:                                              ; preds = %36, %175
  %.pn74.pn.pn = phi { ptr, i32 } [ %.pn74.pn, %175 ], [ %.pn, %36 ]
  resume { ptr, i32 } %.pn74.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIS_IP10ConnectionSaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #8

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt3mapISt4pairIiiEP7ASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

declare void @_ZN18AccumulationBufferC1EjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE6Configj(ptr noundef nonnull align 8 dereferenceable(200), i32 noundef, ptr noundef, ptr noundef byval(%class.Config) align 8, i32 noundef) unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIP7ASwitchSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

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

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

declare void @_ZN7ASwitch19setMemoryConnectionEP10Connectionjj(ptr noundef nonnull align 8 dereferenceable(288), ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #7

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

declare void @_ZN18AccumulationBuffer19setInputConnectionsESt6vectorIP10ConnectionSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef) local_unnamed_addr #7

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

declare void @_ZN18AccumulationBuffer20setMemoryConnectionsESt6vectorIP10ConnectionSaIS2_EE(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef) local_unnamed_addr #7

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { noreturn 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, !35, i64 296}
!6 = !{!"_ZTS9ASNetwork", !7, i64 0, !9, i64 48, !9, i64 52, !9, i64 56, !16, i64 64, !24, i64 112, !24, i64 136, !28, i64 160, !28, i64 208, !31, i64 256, !14, i64 280, !14, i64 288, !35, i64 296, !36, i64 300}
!7 = !{!"_ZTS13ReduceNetwork", !8, i64 0}
!8 = !{!"_ZTS4Unit", !9, i64 8, !12, i64 16}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !15, i64 8, !10, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !14, i64 0}
!14 = !{!"any pointer", !10, i64 0}
!15 = !{!"long", !10, i64 0}
!16 = !{!"_ZTSSt3mapISt4pairIiiEP7ASwitchSt4lessIS1_ESaIS0_IKS1_S3_EEE", !17, i64 0}
!17 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES0_IKS1_P7ASwitchESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !18, i64 0}
!18 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES0_IKS1_P7ASwitchESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !19, i64 0, !21, i64 8}
!19 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt4pairIiiEEE", !20, i64 0}
!20 = !{!"_ZTSSt4lessISt4pairIiiEE"}
!21 = !{!"_ZTSSt15_Rb_tree_header", !22, i64 0, !15, i64 32}
!22 = !{!"_ZTSSt18_Rb_tree_node_base", !23, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!23 = !{!"_ZTSSt14_Rb_tree_color", !10, i64 0}
!24 = !{!"_ZTSSt6vectorIP7ASwitchSaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIP7ASwitchSaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIP7ASwitchSaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIP7ASwitchSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!28 = !{!"_ZTSSt3mapISt4pairIiiEP10ConnectionSt4lessIS1_ESaIS0_IKS1_S3_EEE", !29, i64 0}
!29 = !{!"_ZTSSt8_Rb_treeISt4pairIiiES0_IKS1_P10ConnectionESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSNSt8_Rb_treeISt4pairIiiES0_IKS1_P10ConnectionESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !19, i64 0, !21, i64 8}
!31 = !{!"_ZTSSt6vectorIP10ConnectionSaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIP10ConnectionSaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIP10ConnectionSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!35 = !{!"bool", !10, i64 0}
!36 = !{!"_ZTS6Config", !9, i64 0, !37, i64 4, !38, i64 8, !39, i64 24, !41, i64 40, !42, i64 64, !44, i64 72, !45, i64 96, !46, i64 104}
!37 = !{!"_ZTS15DSNetworkConfig", !9, i64 0}
!38 = !{!"_ZTS13DSwitchConfig", !9, i64 0, !9, i64 4, !9, i64 8, !9, i64 12}
!39 = !{!"_ZTS15MSNetworkConfig", !40, i64 0, !9, i64 4, !9, i64 8, !9, i64 12}
!40 = !{!"_ZTS19MultiplierNetwork_t", !10, i64 0}
!41 = !{!"_ZTS13MSwitchConfig", !9, i64 0, !9, i64 4, !9, i64 8, !9, i64 12, !9, i64 16, !9, i64 20}
!42 = !{!"_ZTS15ASNetworkConfig", !43, i64 0, !9, i64 4}
!43 = !{!"_ZTS15ReduceNetwork_t", !10, i64 0}
!44 = !{!"_ZTS13ASwitchConfig", !9, i64 0, !9, i64 4, !9, i64 8, !9, i64 12, !9, i64 16, !9, i64 20}
!45 = !{!"_ZTS17LookUpTableConfig", !9, i64 0, !9, i64 4}
!46 = !{!"_ZTS14SDMemoryConfig", !47, i64 0, !9, i64 4, !9, i64 8, !9, i64 12, !9, i64 16, !9, i64 20, !9, i64 24, !48, i64 28, !9, i64 32, !9, i64 36, !9, i64 40, !9, i64 44, !9, i64 48, !9, i64 52}
!47 = !{!"_ZTS18MemoryController_t", !10, i64 0}
!48 = !{!"_ZTS17MemoryHierarchy_t", !10, i64 0}
!49 = !{i8 0, i8 2}
!50 = !{}
!51 = !{i64 0, i64 4, !52, i64 4, i64 4, !52, i64 8, i64 4, !52, i64 12, i64 4, !52, i64 16, i64 4, !52, i64 20, i64 4, !52, i64 24, i64 4, !53, i64 28, i64 4, !52, i64 32, i64 4, !52, i64 36, i64 4, !52, i64 40, i64 4, !52, i64 44, i64 4, !52, i64 48, i64 4, !52, i64 52, i64 4, !52, i64 56, i64 4, !52, i64 60, i64 4, !52, i64 64, i64 4, !54, i64 68, i64 4, !52, i64 72, i64 4, !52, i64 76, i64 4, !52, i64 80, i64 4, !52, i64 84, i64 4, !52, i64 88, i64 4, !52, i64 92, i64 4, !52, i64 96, i64 4, !52, i64 100, i64 4, !52, i64 104, i64 4, !55, i64 108, i64 4, !52, i64 112, i64 4, !52, i64 116, i64 4, !52, i64 120, i64 4, !52, i64 124, i64 4, !52, i64 128, i64 4, !52, i64 132, i64 4, !56, i64 136, i64 4, !52, i64 140, i64 4, !52, i64 144, i64 4, !52, i64 148, i64 4, !52, i64 152, i64 4, !52, i64 156, i64 4, !52}
!52 = !{!9, !9, i64 0}
!53 = !{!40, !40, i64 0}
!54 = !{!43, !43, i64 0}
!55 = !{!47, !47, i64 0}
!56 = !{!48, !48, i64 0}
!57 = !{!6, !14, i64 288}
!58 = !{!14, !14, i64 0}
!59 = !{!6, !9, i64 48}
!60 = distinct !{!60, !61}
!61 = !{!"llvm.loop.mustprogress"}
!62 = distinct !{!62, !61}


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