; LLVM IR from CRAFT-THU/BSim :: src/net/BuildNetworks.ll (ZN12MultiNetwork11arrangeDataEi)

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

%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.40" = type { ptr }
%"struct.std::_Rb_tree_const_iterator.41" = type { ptr }
%class.MultiNetwork = type <{ %"class.std::vector", %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.7", ptr, i32, [4 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::set<NeuronBase *>, std::allocator<std::set<NeuronBase *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::set<NeuronBase *>, std::allocator<std::set<NeuronBase *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::set<NeuronBase *>, std::allocator<std::set<NeuronBase *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::set<NeuronBase *>, std::allocator<std::set<NeuronBase *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<std::map<NeuronBase *, int>, std::allocator<std::map<NeuronBase *, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::map<NeuronBase *, int>, std::allocator<std::map<NeuronBase *, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::map<NeuronBase *, int>, std::allocator<std::map<NeuronBase *, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::map<NeuronBase *, int>, std::allocator<std::map<NeuronBase *, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<std::map<Type, int>, std::allocator<std::map<Type, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::map<Type, int>, std::allocator<std::map<Type, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::map<Type, int>, std::allocator<std::map<Type, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::map<Type, int>, std::allocator<std::map<Type, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i32, i32 }
%struct.GNetwork = type { ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, i32 }
%class.Network = type { %"class.std::vector.12", %"class.std::vector.17", %"class.std::vector.22", i32, i32, i32, float, float, %"class.std::vector.27", %"class.std::vector.27", i32, %"class.std::vector.32", %"class.std::vector.32", %"class.std::vector.32" }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<NeuronBase *, std::allocator<NeuronBase *>>::_Vector_impl" }
%"struct.std::_Vector_base<NeuronBase *, std::allocator<NeuronBase *>>::_Vector_impl" = type { %"struct.std::_Vector_base<NeuronBase *, std::allocator<NeuronBase *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<NeuronBase *, std::allocator<NeuronBase *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.17" = type { %"struct.std::_Vector_base.18" }
%"struct.std::_Vector_base.18" = type { %"struct.std::_Vector_base<PopulationBase *, std::allocator<PopulationBase *>>::_Vector_impl" }
%"struct.std::_Vector_base<PopulationBase *, std::allocator<PopulationBase *>>::_Vector_impl" = type { %"struct.std::_Vector_base<PopulationBase *, std::allocator<PopulationBase *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PopulationBase *, std::allocator<PopulationBase *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<SynapseBase *, std::allocator<SynapseBase *>>::_Vector_impl" }
%"struct.std::_Vector_base<SynapseBase *, std::allocator<SynapseBase *>>::_Vector_impl" = type { %"struct.std::_Vector_base<SynapseBase *, std::allocator<SynapseBase *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SynapseBase *, std::allocator<SynapseBase *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<Type, std::allocator<Type>>::_Vector_impl" }
%"struct.std::_Vector_base<Type, std::allocator<Type>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type, std::allocator<Type>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type, std::allocator<Type>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@createType = external global [10 x ptr], align 16
@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [74 x i8], align 1
@__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi = external hidden unnamed_addr constant [41 x i8], align 1
@allocType = external global [10 x ptr], align 16
@.str.2 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZN9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN12MultiNetwork11arrangeDataEi(ptr noundef nonnull align 8 dereferenceable(132) %0, i32 noundef %1) #3 align 2 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %10 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %11 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %12 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i64, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %24 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %25 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %26 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %27 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %39 = alloca i32, align 4
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %42 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %43 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %48 = alloca i32, align 4
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %50 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %51 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %52 = alloca i32, align 4
  %53 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %54 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %55 = alloca i32, align 4
  %56 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  %57 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  %58 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 3
  %59 = load i32, ptr %4, align 4, !tbaa !9
  %60 = sext i32 %59 to i64
  %61 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %60) #6
  %62 = call noundef i64 @_ZNKSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %61) #6
  %63 = trunc i64 %62 to i32
  store i32 %63, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  %64 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 4
  %65 = load i32, ptr %4, align 4, !tbaa !9
  %66 = sext i32 %65 to i64
  %67 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %66) #6
  %68 = call noundef i64 @_ZNKSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %67) #6
  %69 = trunc i64 %68 to i32
  store i32 %69, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  %70 = load i32, ptr %5, align 4, !tbaa !9
  %71 = load i32, ptr %6, align 4, !tbaa !9
  %72 = call noundef ptr @_Z12initGNetworkii(i32 noundef %70, i32 noundef %71)
  store ptr %72, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %73 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 3
  %74 = load i32, ptr %4, align 4, !tbaa !9
  %75 = sext i32 %74 to i64
  %76 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %75) #6
  %77 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %76) #6
  %78 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %10, i32 0, i32 0
  store ptr %77, ptr %78, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  br label %79

79:                                               ; preds = %210, %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  %80 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 3
  %81 = load i32, ptr %4, align 4, !tbaa !9
  %82 = sext i32 %81 to i64
  %83 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %82) #6
  %84 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %83) #6
  %85 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %12, i32 0, i32 0
  store ptr %84, ptr %85, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  %86 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEES6_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  br i1 %86, label %88, label %87

87:                                               ; preds = %79
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  br label %213

88:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %89 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %90 = getelementptr inbounds %"struct.std::pair", ptr %89, i32 0, i32 0
  %91 = load i32, ptr %90, align 4, !tbaa !11
  store i32 %91, ptr %14, align 4, !tbaa !14
  %92 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %93 = getelementptr inbounds %"struct.std::pair", ptr %92, i32 0, i32 0
  %94 = load i32, ptr %93, align 4, !tbaa !11
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.GNetwork, ptr %95, i32 0, i32 7
  %97 = load ptr, ptr %96, align 8, !tbaa !15
  %98 = load i32, ptr %8, align 4, !tbaa !9
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds i32, ptr %97, i64 %99
  store i32 %94, ptr %100, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %101 = load i32, ptr %14, align 4, !tbaa !14
  %102 = zext i32 %101 to i64
  %103 = getelementptr inbounds [10 x ptr], ptr @createType, i64 0, i64 %102
  %104 = load ptr, ptr %103, align 8, !tbaa !5
  %105 = call noundef ptr %104()
  store ptr %105, ptr %15, align 8, !tbaa !5
  %106 = load ptr, ptr %15, align 8, !tbaa !5
  %107 = icmp ne ptr %106, null
  br i1 %107, label %108, label %109

108:                                              ; preds = %88
  br label %111

109:                                              ; preds = %88
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 84, ptr noundef @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

110:                                              ; No predecessors!
  br label %111

111:                                              ; preds = %110, %108
  %112 = load i32, ptr %14, align 4, !tbaa !14
  %113 = zext i32 %112 to i64
  %114 = getelementptr inbounds [10 x ptr], ptr @allocType, i64 0, i64 %113
  %115 = load ptr, ptr %114, align 8, !tbaa !5
  %116 = load ptr, ptr %15, align 8, !tbaa !5
  %117 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %118 = getelementptr inbounds %"struct.std::pair", ptr %117, i32 0, i32 1
  %119 = load i32, ptr %118, align 4, !tbaa !17
  %120 = call noundef i32 %115(ptr noundef %116, i32 noundef %119)
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %121 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 5
  %122 = load ptr, ptr %121, align 8, !tbaa !18
  %123 = getelementptr inbounds %class.Network, ptr %122, i32 0, i32 1
  %124 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %123) #6
  %125 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  store ptr %124, ptr %125, align 8
  br label %126

126:                                              ; preds = %172, %111
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %127 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 5
  %128 = load ptr, ptr %127, align 8, !tbaa !18
  %129 = getelementptr inbounds %class.Network, ptr %128, i32 0, i32 1
  %130 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #6
  %131 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  store ptr %130, ptr %131, align 8
  %132 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  br i1 %132, label %134, label %133

133:                                              ; preds = %126
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %175

134:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  %136 = load ptr, ptr %135, align 8, !tbaa !5
  store ptr %136, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %137 = load ptr, ptr %19, align 8, !tbaa !5
  %138 = call noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
  store i32 %138, ptr %20, align 4, !tbaa !9
  %139 = load i32, ptr %20, align 4, !tbaa !9
  %140 = load i32, ptr %4, align 4, !tbaa !9
  %141 = icmp eq i32 %139, %140
  br i1 %141, label %142, label %171

142:                                              ; preds = %134
  %143 = load ptr, ptr %19, align 8, !tbaa !5
  %144 = load ptr, ptr %143, align 8, !tbaa !32
  %145 = getelementptr inbounds ptr, ptr %144, i64 2
  %146 = load ptr, ptr %145, align 8
  %147 = call noundef i32 %146(ptr noundef nonnull align 8 dereferenceable(16) %143)
  %148 = load i32, ptr %14, align 4, !tbaa !14
  %149 = icmp eq i32 %147, %148
  br i1 %149, label %150, label %171

150:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %151 = load ptr, ptr %19, align 8, !tbaa !5
  %152 = load ptr, ptr %15, align 8, !tbaa !5
  %153 = load i32, ptr %16, align 4, !tbaa !9
  %154 = load ptr, ptr %7, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.GNetwork, ptr %154, i32 0, i32 3
  %156 = load ptr, ptr %155, align 8, !tbaa !34
  %157 = load i32, ptr %8, align 4, !tbaa !9
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds i32, ptr %156, i64 %158
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = load ptr, ptr %151, align 8, !tbaa !32
  %162 = getelementptr inbounds ptr, ptr %161, i64 8
  %163 = load ptr, ptr %162, align 8
  %164 = call noundef i32 %163(ptr noundef nonnull align 8 dereferenceable(16) %151, ptr noundef %152, i32 noundef %153, i32 noundef %160)
  %165 = sext i32 %164 to i64
  store i64 %165, ptr %21, align 8, !tbaa !35
  %166 = load i64, ptr %21, align 8, !tbaa !35
  %167 = load i32, ptr %16, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = add i64 %168, %166
  %170 = trunc i64 %169 to i32
  store i32 %170, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %171

171:                                              ; preds = %150, %142, %134
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  br label %172

172:                                              ; preds = %171
  %173 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %17, i32 noundef 0) #6
  %174 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %22, i32 0, i32 0
  store ptr %173, ptr %174, align 8
  br label %126, !llvm.loop !37

175:                                              ; preds = %133
  %176 = load i32, ptr %16, align 4, !tbaa !9
  %177 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %178 = getelementptr inbounds %"struct.std::pair", ptr %177, i32 0, i32 1
  %179 = load i32, ptr %178, align 4, !tbaa !17
  %180 = icmp eq i32 %176, %179
  br i1 %180, label %181, label %182

181:                                              ; preds = %175
  br label %184

182:                                              ; preds = %175
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 98, ptr noundef @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

183:                                              ; No predecessors!
  br label %184

184:                                              ; preds = %183, %181
  %185 = load i32, ptr %16, align 4, !tbaa !9
  %186 = load ptr, ptr %7, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.GNetwork, ptr %186, i32 0, i32 3
  %188 = load ptr, ptr %187, align 8, !tbaa !34
  %189 = load i32, ptr %8, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds i32, ptr %188, i64 %190
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = add nsw i32 %185, %192
  %194 = load ptr, ptr %7, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.GNetwork, ptr %194, i32 0, i32 3
  %196 = load ptr, ptr %195, align 8, !tbaa !34
  %197 = load i32, ptr %8, align 4, !tbaa !9
  %198 = add nsw i32 %197, 1
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds i32, ptr %196, i64 %199
  store i32 %193, ptr %200, align 4, !tbaa !9
  %201 = load ptr, ptr %15, align 8, !tbaa !5
  %202 = load ptr, ptr %7, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.GNetwork, ptr %202, i32 0, i32 0
  %204 = load ptr, ptr %203, align 8, !tbaa !39
  %205 = load i32, ptr %8, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds ptr, ptr %204, i64 %206
  store ptr %201, ptr %207, align 8, !tbaa !5
  %208 = load i32, ptr %8, align 4, !tbaa !9
  %209 = add nsw i32 %208, 1
  store i32 %209, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %210

210:                                              ; preds = %184
  %211 = call ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef 0) #6
  %212 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %23, i32 0, i32 0
  store ptr %211, ptr %212, align 8
  br label %79, !llvm.loop !40

213:                                              ; preds = %87
  %214 = load i32, ptr %8, align 4, !tbaa !9
  %215 = load i32, ptr %5, align 4, !tbaa !9
  %216 = icmp eq i32 %214, %215
  br i1 %216, label %217, label %218

217:                                              ; preds = %213
  br label %220

218:                                              ; preds = %213
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 103, ptr noundef @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

219:                                              ; No predecessors!
  br label %220

220:                                              ; preds = %219, %217
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %221 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 4
  %222 = load i32, ptr %4, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %221, i64 noundef %223) #6
  %225 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %224) #6
  %226 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %25, i32 0, i32 0
  store ptr %225, ptr %226, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  br label %227

227:                                              ; preds = %529, %220
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  %228 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 4
  %229 = load i32, ptr %4, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  %231 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %228, i64 noundef %230) #6
  %232 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %231) #6
  %233 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %27, i32 0, i32 0
  store ptr %232, ptr %233, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  %234 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEES6_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br i1 %234, label %236, label %235

235:                                              ; preds = %227
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %532

236:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %237 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  %238 = getelementptr inbounds %"struct.std::pair", ptr %237, i32 0, i32 0
  %239 = load i32, ptr %238, align 4, !tbaa !11
  store i32 %239, ptr %28, align 4, !tbaa !14
  %240 = load i32, ptr %28, align 4, !tbaa !14
  %241 = load ptr, ptr %7, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.GNetwork, ptr %241, i32 0, i32 8
  %243 = load ptr, ptr %242, align 8, !tbaa !41
  %244 = load i32, ptr %8, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds i32, ptr %243, i64 %245
  store i32 %240, ptr %246, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  %247 = load i32, ptr %28, align 4, !tbaa !14
  %248 = zext i32 %247 to i64
  %249 = getelementptr inbounds [10 x ptr], ptr @createType, i64 0, i64 %248
  %250 = load ptr, ptr %249, align 8, !tbaa !5
  %251 = call noundef ptr %250()
  store ptr %251, ptr %29, align 8, !tbaa !5
  %252 = load ptr, ptr %29, align 8, !tbaa !5
  %253 = icmp ne ptr %252, null
  br i1 %253, label %254, label %255

254:                                              ; preds = %236
  br label %257

255:                                              ; preds = %236
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 111, ptr noundef @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

256:                                              ; No predecessors!
  br label %257

257:                                              ; preds = %256, %254
  %258 = load i32, ptr %28, align 4, !tbaa !14
  %259 = zext i32 %258 to i64
  %260 = getelementptr inbounds [10 x ptr], ptr @allocType, i64 0, i64 %259
  %261 = load ptr, ptr %260, align 8, !tbaa !5
  %262 = load ptr, ptr %29, align 8, !tbaa !5
  %263 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  %264 = getelementptr inbounds %"struct.std::pair", ptr %263, i32 0, i32 1
  %265 = load i32, ptr %264, align 4, !tbaa !17
  %266 = call noundef i32 %261(ptr noundef %262, i32 noundef %265)
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %267 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 5
  %268 = load ptr, ptr %267, align 8, !tbaa !18
  %269 = getelementptr inbounds %class.Network, ptr %268, i32 0, i32 1
  %270 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %269) #6
  %271 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %31, i32 0, i32 0
  store ptr %270, ptr %271, align 8
  br label %272

272:                                              ; preds = %391, %257
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %273 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 5
  %274 = load ptr, ptr %273, align 8, !tbaa !18
  %275 = getelementptr inbounds %class.Network, ptr %274, i32 0, i32 1
  %276 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %275) #6
  %277 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  store ptr %276, ptr %277, align 8
  %278 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  br i1 %278, label %280, label %279

279:                                              ; preds = %272
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %394

280:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #6
  %282 = load ptr, ptr %281, align 8, !tbaa !5
  store ptr %282, ptr %33, align 8, !tbaa !5
  %283 = load ptr, ptr %33, align 8, !tbaa !5
  %284 = call noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16) %283)
  %285 = load i32, ptr %4, align 4, !tbaa !9
  %286 = icmp ne i32 %284, %285
  br i1 %286, label %287, label %288

287:                                              ; preds = %280
  store i32 13, ptr %13, align 4
  br label %388

288:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %384, %288
  %290 = load i32, ptr %34, align 4, !tbaa !9
  %291 = load ptr, ptr %33, align 8, !tbaa !5
  %292 = load ptr, ptr %291, align 8, !tbaa !32
  %293 = getelementptr inbounds ptr, ptr %292, i64 10
  %294 = load ptr, ptr %293, align 8
  %295 = call noundef i32 %294(ptr noundef nonnull align 8 dereferenceable(17) %291)
  %296 = icmp slt i32 %290, %295
  br i1 %296, label %298, label %297

297:                                              ; preds = %289
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %387

298:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  %299 = load ptr, ptr %33, align 8, !tbaa !5
  %300 = load i32, ptr %34, align 4, !tbaa !9
  %301 = load ptr, ptr %299, align 8, !tbaa !32
  %302 = getelementptr inbounds ptr, ptr %301, i64 12
  %303 = load ptr, ptr %302, align 8
  %304 = call noundef ptr %303(ptr noundef nonnull align 8 dereferenceable(17) %299, i32 noundef %300)
  %305 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10NeuronBase11getSynapsesEv(ptr noundef nonnull align 8 dereferenceable(52) %304)
  store ptr %305, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %306

306:                                              ; preds = %380, %298
  %307 = load i32, ptr %36, align 4, !tbaa !9
  %308 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 5
  %309 = load ptr, ptr %308, align 8, !tbaa !18
  %310 = getelementptr inbounds %class.Network, ptr %309, i32 0, i32 3
  %311 = load i32, ptr %310, align 8, !tbaa !42
  %312 = icmp slt i32 %307, %311
  br i1 %312, label %314, label %313

313:                                              ; preds = %306
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %383

314:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %315 = load ptr, ptr %35, align 8, !tbaa !5
  %316 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %315) #6
  %317 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.40", ptr %37, i32 0, i32 0
  store ptr %316, ptr %317, align 8
  br label %318

318:                                              ; preds = %376, %314
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  %319 = load ptr, ptr %35, align 8, !tbaa !5
  %320 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %319) #6
  %321 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.40", ptr %38, i32 0, i32 0
  store ptr %320, ptr %321, align 8
  %322 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  br i1 %322, label %324, label %323

323:                                              ; preds = %318
  store i32 20, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  br label %379

324:                                              ; preds = %318
  %325 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  %326 = load ptr, ptr %325, align 8, !tbaa !5
  %327 = call noundef i32 @_ZN11SynapseBase8getDelayEv(ptr noundef nonnull align 8 dereferenceable(33) %326)
  %328 = load i32, ptr %36, align 4, !tbaa !9
  %329 = add nsw i32 %328, 1
  %330 = icmp eq i32 %327, %329
  br i1 %330, label %331, label %375

331:                                              ; preds = %324
  %332 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  %333 = load ptr, ptr %332, align 8, !tbaa !5
  %334 = load ptr, ptr %333, align 8, !tbaa !32
  %335 = getelementptr inbounds ptr, ptr %334, i64 2
  %336 = load ptr, ptr %335, align 8
  %337 = call noundef i32 %336(ptr noundef nonnull align 8 dereferenceable(16) %333)
  %338 = load i32, ptr %28, align 4, !tbaa !14
  %339 = icmp eq i32 %337, %338
  br i1 %339, label %340, label %374

340:                                              ; preds = %331
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  %342 = load ptr, ptr %341, align 8, !tbaa !5
  %343 = call noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
  %344 = load i32, ptr %4, align 4, !tbaa !9
  %345 = icmp eq i32 %343, %344
  br i1 %345, label %346, label %374

346:                                              ; preds = %340
  %347 = load i32, ptr %30, align 4, !tbaa !9
  %348 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  %349 = getelementptr inbounds %"struct.std::pair", ptr %348, i32 0, i32 1
  %350 = load i32, ptr %349, align 4, !tbaa !17
  %351 = icmp slt i32 %347, %350
  br i1 %351, label %352, label %353

352:                                              ; preds = %346
  br label %355

353:                                              ; preds = %346
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 136, ptr noundef @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

354:                                              ; No predecessors!
  br label %355

355:                                              ; preds = %354, %352
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %356 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  %357 = load ptr, ptr %356, align 8, !tbaa !5
  %358 = load ptr, ptr %29, align 8, !tbaa !5
  %359 = load i32, ptr %30, align 4, !tbaa !9
  %360 = load ptr, ptr %7, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.GNetwork, ptr %360, i32 0, i32 4
  %362 = load ptr, ptr %361, align 8, !tbaa !65
  %363 = load i32, ptr %8, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds i32, ptr %362, i64 %364
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = load ptr, ptr %357, align 8, !tbaa !32
  %368 = getelementptr inbounds ptr, ptr %367, i64 8
  %369 = load ptr, ptr %368, align 8
  %370 = call noundef i32 %369(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef %358, i32 noundef %359, i32 noundef %366)
  store i32 %370, ptr %39, align 4, !tbaa !9
  %371 = load i32, ptr %39, align 4, !tbaa !9
  %372 = load i32, ptr %30, align 4, !tbaa !9
  %373 = add nsw i32 %372, %371
  store i32 %373, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %374

374:                                              ; preds = %355, %340, %331
  br label %375

375:                                              ; preds = %374, %324
  br label %376

376:                                              ; preds = %375
  %377 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef 0) #6
  %378 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.40", ptr %40, i32 0, i32 0
  store ptr %377, ptr %378, align 8
  br label %318, !llvm.loop !66

379:                                              ; preds = %323
  br label %380

380:                                              ; preds = %379
  %381 = load i32, ptr %36, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %36, align 4, !tbaa !9
  br label %306, !llvm.loop !67

383:                                              ; preds = %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  br label %384

384:                                              ; preds = %383
  %385 = load i32, ptr %34, align 4, !tbaa !9
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr %34, align 4, !tbaa !9
  br label %289, !llvm.loop !68

387:                                              ; preds = %297
  store i32 0, ptr %13, align 4
  br label %388

388:                                              ; preds = %387, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  %389 = load i32, ptr %13, align 4
  switch i32 %389, label %591 [
    i32 0, label %390
    i32 13, label %391
  ]

390:                                              ; preds = %388
  br label %391

391:                                              ; preds = %390, %388
  %392 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %31, i32 noundef 0) #6
  %393 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %41, i32 0, i32 0
  store ptr %392, ptr %393, align 8
  br label %272, !llvm.loop !69

394:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  %395 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 1
  %396 = load i32, ptr %4, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %395, i64 noundef %397) #6
  %399 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %398) #6
  %400 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.41", ptr %42, i32 0, i32 0
  store ptr %399, ptr %400, align 8
  br label %401

401:                                              ; preds = %491, %394
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %402 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 1
  %403 = load i32, ptr %4, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %402, i64 noundef %404) #6
  %406 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %405) #6
  %407 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.41", ptr %43, i32 0, i32 0
  store ptr %406, ptr %407, align 8
  %408 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIP10NeuronBaseES4_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  br i1 %408, label %410, label %409

409:                                              ; preds = %401
  store i32 23, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  br label %494

410:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  %411 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIP10NeuronBaseEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %412 = load ptr, ptr %411, align 8, !tbaa !5
  %413 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10NeuronBase11getSynapsesEv(ptr noundef nonnull align 8 dereferenceable(52) %412)
  store ptr %413, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %414

414:                                              ; preds = %487, %410
  %415 = load i32, ptr %45, align 4, !tbaa !9
  %416 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 5
  %417 = load ptr, ptr %416, align 8, !tbaa !18
  %418 = getelementptr inbounds %class.Network, ptr %417, i32 0, i32 3
  %419 = load i32, ptr %418, align 8, !tbaa !42
  %420 = icmp slt i32 %415, %419
  br i1 %420, label %422, label %421

421:                                              ; preds = %414
  store i32 26, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %490

422:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  %423 = load ptr, ptr %44, align 8, !tbaa !5
  %424 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %423) #6
  %425 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.40", ptr %46, i32 0, i32 0
  store ptr %424, ptr %425, align 8
  br label %426

426:                                              ; preds = %483, %422
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  %427 = load ptr, ptr %44, align 8, !tbaa !5
  %428 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %427) #6
  %429 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.40", ptr %47, i32 0, i32 0
  store ptr %428, ptr %429, align 8
  %430 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  br i1 %430, label %432, label %431

431:                                              ; preds = %426
  store i32 29, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  br label %486

432:                                              ; preds = %426
  %433 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  %434 = load ptr, ptr %433, align 8, !tbaa !5
  %435 = call noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16) %434)
  %436 = load i32, ptr %4, align 4, !tbaa !9
  %437 = icmp eq i32 %435, %436
  br i1 %437, label %438, label %482

438:                                              ; preds = %432
  %439 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  %440 = load ptr, ptr %439, align 8, !tbaa !5
  %441 = call noundef i32 @_ZN11SynapseBase8getDelayEv(ptr noundef nonnull align 8 dereferenceable(33) %440)
  %442 = load i32, ptr %45, align 4, !tbaa !9
  %443 = add nsw i32 %442, 1
  %444 = icmp eq i32 %441, %443
  br i1 %444, label %445, label %482

445:                                              ; preds = %438
  %446 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  %447 = load ptr, ptr %446, align 8, !tbaa !5
  %448 = load ptr, ptr %447, align 8, !tbaa !32
  %449 = getelementptr inbounds ptr, ptr %448, i64 2
  %450 = load ptr, ptr %449, align 8
  %451 = call noundef i32 %450(ptr noundef nonnull align 8 dereferenceable(16) %447)
  %452 = load i32, ptr %28, align 4, !tbaa !14
  %453 = icmp eq i32 %451, %452
  br i1 %453, label %454, label %482

454:                                              ; preds = %445
  %455 = load i32, ptr %30, align 4, !tbaa !9
  %456 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  %457 = getelementptr inbounds %"struct.std::pair", ptr %456, i32 0, i32 1
  %458 = load i32, ptr %457, align 4, !tbaa !17
  %459 = icmp slt i32 %455, %458
  br i1 %459, label %460, label %461

460:                                              ; preds = %454
  br label %463

461:                                              ; preds = %454
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 151, ptr noundef @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

462:                                              ; No predecessors!
  br label %463

463:                                              ; preds = %462, %460
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %464 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  %465 = load ptr, ptr %464, align 8, !tbaa !5
  %466 = load ptr, ptr %29, align 8, !tbaa !5
  %467 = load i32, ptr %30, align 4, !tbaa !9
  %468 = load ptr, ptr %7, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.GNetwork, ptr %468, i32 0, i32 4
  %470 = load ptr, ptr %469, align 8, !tbaa !65
  %471 = load i32, ptr %8, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds i32, ptr %470, i64 %472
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = load ptr, ptr %465, align 8, !tbaa !32
  %476 = getelementptr inbounds ptr, ptr %475, i64 8
  %477 = load ptr, ptr %476, align 8
  %478 = call noundef i32 %477(ptr noundef nonnull align 8 dereferenceable(16) %465, ptr noundef %466, i32 noundef %467, i32 noundef %474)
  store i32 %478, ptr %48, align 4, !tbaa !9
  %479 = load i32, ptr %48, align 4, !tbaa !9
  %480 = load i32, ptr %30, align 4, !tbaa !9
  %481 = add nsw i32 %480, %479
  store i32 %481, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %482

482:                                              ; preds = %463, %445, %438, %432
  br label %483

483:                                              ; preds = %482
  %484 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %46, i32 noundef 0) #6
  %485 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.40", ptr %49, i32 0, i32 0
  store ptr %484, ptr %485, align 8
  br label %426, !llvm.loop !70

486:                                              ; preds = %431
  br label %487

487:                                              ; preds = %486
  %488 = load i32, ptr %45, align 4, !tbaa !9
  %489 = add nsw i32 %488, 1
  store i32 %489, ptr %45, align 4, !tbaa !9
  br label %414, !llvm.loop !71

490:                                              ; preds = %421
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  br label %491

491:                                              ; preds = %490
  %492 = call ptr @_ZNSt23_Rb_tree_const_iteratorIP10NeuronBaseEppEi(ptr noundef nonnull align 8 dereferenceable(8) %42, i32 noundef 0) #6
  %493 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.41", ptr %50, i32 0, i32 0
  store ptr %492, ptr %493, align 8
  br label %401, !llvm.loop !72

494:                                              ; preds = %409
  %495 = load i32, ptr %30, align 4, !tbaa !9
  %496 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  %497 = getelementptr inbounds %"struct.std::pair", ptr %496, i32 0, i32 1
  %498 = load i32, ptr %497, align 4, !tbaa !17
  %499 = icmp eq i32 %495, %498
  br i1 %499, label %500, label %501

500:                                              ; preds = %494
  br label %503

501:                                              ; preds = %494
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 160, ptr noundef @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

502:                                              ; No predecessors!
  br label %503

503:                                              ; preds = %502, %500
  %504 = load i32, ptr %30, align 4, !tbaa !9
  %505 = load ptr, ptr %7, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.GNetwork, ptr %505, i32 0, i32 4
  %507 = load ptr, ptr %506, align 8, !tbaa !65
  %508 = load i32, ptr %8, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds i32, ptr %507, i64 %509
  %511 = load i32, ptr %510, align 4, !tbaa !9
  %512 = add nsw i32 %504, %511
  %513 = load ptr, ptr %7, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.GNetwork, ptr %513, i32 0, i32 4
  %515 = load ptr, ptr %514, align 8, !tbaa !65
  %516 = load i32, ptr %8, align 4, !tbaa !9
  %517 = add nsw i32 %516, 1
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds i32, ptr %515, i64 %518
  store i32 %512, ptr %519, align 4, !tbaa !9
  %520 = load ptr, ptr %29, align 8, !tbaa !5
  %521 = load ptr, ptr %7, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.GNetwork, ptr %521, i32 0, i32 1
  %523 = load ptr, ptr %522, align 8, !tbaa !73
  %524 = load i32, ptr %8, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds ptr, ptr %523, i64 %525
  store ptr %520, ptr %526, align 8, !tbaa !5
  %527 = load i32, ptr %8, align 4, !tbaa !9
  %528 = add nsw i32 %527, 1
  store i32 %528, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %529

529:                                              ; preds = %503
  %530 = call ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %24, i32 noundef 0) #6
  %531 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %51, i32 0, i32 0
  store ptr %530, ptr %531, align 8
  br label %227, !llvm.loop !74

532:                                              ; preds = %235
  %533 = load i32, ptr %8, align 4, !tbaa !9
  %534 = load i32, ptr %6, align 4, !tbaa !9
  %535 = icmp eq i32 %533, %534
  br i1 %535, label %536, label %537

536:                                              ; preds = %532
  br label %539

537:                                              ; preds = %532
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 165, ptr noundef @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

538:                                              ; No predecessors!
  br label %539

539:                                              ; preds = %538, %536
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %540 = load ptr, ptr %7, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.GNetwork, ptr %540, i32 0, i32 3
  %542 = load ptr, ptr %541, align 8, !tbaa !34
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.GNetwork, ptr %543, i32 0, i32 5
  %545 = load i32, ptr %544, align 8, !tbaa !75
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds i32, ptr %542, i64 %546
  %548 = load i32, ptr %547, align 4, !tbaa !9
  store i32 %548, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  %549 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 1
  %550 = load i32, ptr %4, align 4, !tbaa !9
  %551 = sext i32 %550 to i64
  %552 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %549, i64 noundef %551) #6
  %553 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %552) #6
  %554 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.41", ptr %53, i32 0, i32 0
  store ptr %553, ptr %554, align 8
  br label %555

555:                                              ; preds = %580, %539
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  %556 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 1
  %557 = load i32, ptr %4, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %556, i64 noundef %558) #6
  %560 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %559) #6
  %561 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.41", ptr %54, i32 0, i32 0
  store ptr %560, ptr %561, align 8
  %562 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIP10NeuronBaseES4_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  br i1 %562, label %564, label %563

563:                                              ; preds = %555
  store i32 32, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  br label %583

564:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  %565 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 2
  %566 = load i32, ptr %4, align 4, !tbaa !9
  %567 = sext i32 %566 to i64
  %568 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %565, i64 noundef %567) #6
  %569 = call noundef i64 @_ZNKSt3mapIP10NeuronBaseiSt4lessIS1_ESaISt4pairIKS1_iEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %568) #6
  %570 = trunc i64 %569 to i32
  store i32 %570, ptr %55, align 4, !tbaa !9
  %571 = load i32, ptr %52, align 4, !tbaa !9
  %572 = load i32, ptr %55, align 4, !tbaa !9
  %573 = add nsw i32 %571, %572
  %574 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 2
  %575 = load i32, ptr %4, align 4, !tbaa !9
  %576 = sext i32 %575 to i64
  %577 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %574, i64 noundef %576) #6
  %578 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIP10NeuronBaseEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #6
  %579 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIP10NeuronBaseiSt4lessIS1_ESaISt4pairIKS1_iEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(48) %577, ptr noundef nonnull align 8 dereferenceable(8) %578)
  store i32 %573, ptr %579, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br label %580

580:                                              ; preds = %564
  %581 = call ptr @_ZNSt23_Rb_tree_const_iteratorIP10NeuronBaseEppEi(ptr noundef nonnull align 8 dereferenceable(8) %53, i32 noundef 0) #6
  %582 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.41", ptr %56, i32 0, i32 0
  store ptr %581, ptr %582, align 8
  br label %555, !llvm.loop !76

583:                                              ; preds = %563
  %584 = getelementptr inbounds %class.MultiNetwork, ptr %57, i32 0, i32 5
  %585 = load ptr, ptr %584, align 8, !tbaa !18
  %586 = getelementptr inbounds %class.Network, ptr %585, i32 0, i32 3
  %587 = load i32, ptr %586, align 8, !tbaa !42
  %588 = load ptr, ptr %7, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.GNetwork, ptr %588, i32 0, i32 9
  store i32 %587, ptr %589, align 8, !tbaa !77
  %590 = load ptr, ptr %7, align 8, !tbaa !5
  store i32 1, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  ret ptr %590

591:                                              ; preds = %388
  unreachable
}

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

declare noundef ptr @_Z12initGNetworkii(i32 noundef, i32 noundef) #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEES6_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEppEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #1 align 2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10NeuronBase11getSynapsesEv(ptr noundef nonnull align 8 dereferenceable(52)) #4

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN11SynapseBase8getDelayEv(ptr noundef nonnull align 8 dereferenceable(33)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #1 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIP10NeuronBaseES4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt23_Rb_tree_const_iteratorIP10NeuronBaseEppEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #1 align 2

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { 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 #6 = { nounwind }
attributes #7 = { 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, !13, i64 0}
!12 = !{!"_ZTSSt4pairIK4TypeiE", !13, i64 0, !10, i64 4}
!13 = !{!"_ZTS4Type", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!16, !6, i64 48}
!16 = !{!"_ZTS8GNetwork", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !10, i64 44, !6, i64 48, !6, i64 56, !10, i64 64}
!17 = !{!12, !10, i64 4}
!18 = !{!19, !6, i64 120}
!19 = !{!"_ZTS12MultiNetwork", !20, i64 0, !20, i64 24, !24, i64 48, !28, i64 72, !28, i64 96, !6, i64 120, !10, i64 128}
!20 = !{!"_ZTSSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!33, !33, i64 0}
!33 = !{!"vtable pointer", !8, i64 0}
!34 = !{!16, !6, i64 24}
!35 = !{!36, !36, i64 0}
!36 = !{!"long", !7, i64 0}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!16, !6, i64 0}
!40 = distinct !{!40, !38}
!41 = !{!16, !6, i64 56}
!42 = !{!43, !10, i64 72}
!43 = !{!"_ZTS7Network", !44, i64 0, !48, i64 24, !52, i64 48, !10, i64 72, !10, i64 76, !10, i64 80, !56, i64 84, !56, i64 88, !57, i64 96, !57, i64 120, !10, i64 144, !61, i64 152, !61, i64 176, !61, i64 200}
!44 = !{!"_ZTSSt6vectorIP10NeuronBaseSaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIP10NeuronBaseSaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIP10NeuronBaseSaIS1_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIP10NeuronBaseSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = !{!"_ZTSSt6vectorIP14PopulationBaseSaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseIP14PopulationBaseSaIS1_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIP14PopulationBaseSaIS1_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIP14PopulationBaseSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{!"_ZTSSt6vectorIP11SynapseBaseSaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIP11SynapseBaseSaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIP11SynapseBaseSaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIP11SynapseBaseSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!56 = !{!"float", !7, i64 0}
!57 = !{!"_ZTSSt6vectorI4TypeSaIS0_EE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseI4TypeSaIS0_EE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseI4TypeSaIS0_EE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseI4TypeSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!61 = !{!"_ZTSSt6vectorIiSaIiEE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!16, !6, i64 32}
!66 = distinct !{!66, !38}
!67 = distinct !{!67, !38}
!68 = distinct !{!68, !38}
!69 = distinct !{!69, !38}
!70 = distinct !{!70, !38}
!71 = distinct !{!71, !38}
!72 = distinct !{!72, !38}
!73 = !{!16, !6, i64 8}
!74 = distinct !{!74, !38}
!75 = !{!16, !10, i64 40}
!76 = distinct !{!76, !38}
!77 = !{!16, !10, i64 64}


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

%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.40" = type { ptr }
%"struct.std::_Rb_tree_const_iterator.41" = type { ptr }

@createType = external local_unnamed_addr global [10 x ptr], align 16
@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [74 x i8], align 1
@__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi = external hidden unnamed_addr constant [41 x i8], align 1
@allocType = external local_unnamed_addr global [10 x ptr], align 16
@.str.2 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN12MultiNetwork11arrangeDataEi(ptr noundef nonnull align 8 dereferenceable(132) %0, i32 noundef %1) local_unnamed_addr #3 align 2 {
  %3 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %4 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %5 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %6 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %10 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %11 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %12 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %17 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %18 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.40", align 8
  %21 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %22 = alloca %"struct.std::_Rb_tree_const_iterator.41", align 8
  %23 = getelementptr inbounds i8, ptr %0, i64 72
  %24 = sext i32 %1 to i64
  %25 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %24) #6
  %26 = tail call noundef i64 @_ZNKSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %25) #6
  %27 = trunc i64 %26 to i32
  %28 = getelementptr inbounds i8, ptr %0, i64 96
  %29 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %24) #6
  %30 = tail call noundef i64 @_ZNKSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %29) #6
  %31 = trunc i64 %30 to i32
  %32 = tail call noundef ptr @_Z12initGNetworkii(i32 noundef %27, i32 noundef %31)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  %33 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %24) #6
  %34 = tail call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %33) #6
  store ptr %34, ptr %4, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  %35 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %24) #6
  %36 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %35) #6
  store ptr %36, ptr %6, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %37 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEES6_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  br i1 %37, label %.lr.ph139, label %._crit_edge140

.lr.ph139:                                        ; preds = %2
  %38 = getelementptr inbounds i8, ptr %32, i64 48
  %39 = getelementptr inbounds i8, ptr %0, i64 120
  %40 = getelementptr inbounds i8, ptr %32, i64 24
  br label %43

._crit_edge140.loopexit:                          ; preds = %99
  %41 = trunc nuw i64 %indvars.iv.next to i32
  br label %._crit_edge140

._crit_edge140:                                   ; preds = %._crit_edge140.loopexit, %2
  %.0.lcssa = phi i32 [ 0, %2 ], [ %41, %._crit_edge140.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  %42 = icmp eq i32 %.0.lcssa, %27
  br i1 %42, label %112, label %111

43:                                               ; preds = %.lr.ph139, %99
  %indvars.iv = phi i64 [ 0, %.lr.ph139 ], [ %indvars.iv.next, %99 ]
  %44 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  %45 = load i32, ptr %44, align 4, !tbaa !5
  %46 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  %47 = load i32, ptr %46, align 4, !tbaa !5
  %48 = load ptr, ptr %38, align 8, !tbaa !11
  %49 = getelementptr inbounds i32, ptr %48, i64 %indvars.iv
  store i32 %47, ptr %49, align 4, !tbaa !14
  %50 = zext i32 %45 to i64
  %51 = getelementptr inbounds [10 x ptr], ptr @createType, i64 0, i64 %50
  %52 = load ptr, ptr %51, align 8, !tbaa !15
  %53 = call noundef ptr %52()
  %.not122 = icmp eq ptr %53, null
  br i1 %.not122, label %54, label %55

54:                                               ; preds = %43
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 84, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

55:                                               ; preds = %43
  %56 = getelementptr inbounds [10 x ptr], ptr @allocType, i64 0, i64 %50
  %57 = load ptr, ptr %56, align 8, !tbaa !15
  %58 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  %59 = getelementptr inbounds i8, ptr %58, i64 4
  %60 = load i32, ptr %59, align 4, !tbaa !16
  %61 = call noundef i32 %57(ptr noundef nonnull %53, i32 noundef %60)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  %62 = load ptr, ptr %39, align 8, !tbaa !17
  %63 = getelementptr inbounds i8, ptr %62, i64 24
  %64 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %63) #6
  store ptr %64, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  %65 = load ptr, ptr %39, align 8, !tbaa !17
  %66 = getelementptr inbounds i8, ptr %65, i64 24
  %67 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #6
  store ptr %67, ptr %8, align 8
  %68 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  br i1 %68, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %92, %55
  %.0111.lcssa = phi i32 [ 0, %55 ], [ %.1112, %92 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  %69 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  %70 = getelementptr inbounds i8, ptr %69, i64 4
  %71 = load i32, ptr %70, align 4, !tbaa !16
  %72 = icmp eq i32 %.0111.lcssa, %71
  br i1 %72, label %99, label %98

.lr.ph:                                           ; preds = %55, %92
  %.0111136 = phi i32 [ %.1112, %92 ], [ 0, %55 ]
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  %74 = load ptr, ptr %73, align 8, !tbaa !15
  %75 = call noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16) %74)
  %76 = icmp eq i32 %75, %1
  br i1 %76, label %77, label %92

77:                                               ; preds = %.lr.ph
  %78 = load ptr, ptr %74, align 8, !tbaa !31
  %79 = getelementptr inbounds i8, ptr %78, i64 16
  %80 = load ptr, ptr %79, align 8
  %81 = call noundef i32 %80(ptr noundef nonnull align 8 dereferenceable(16) %74)
  %82 = icmp eq i32 %81, %45
  br i1 %82, label %83, label %92

83:                                               ; preds = %77
  %84 = load ptr, ptr %40, align 8, !tbaa !33
  %85 = getelementptr inbounds i32, ptr %84, i64 %indvars.iv
  %86 = load i32, ptr %85, align 4, !tbaa !34
  %87 = load ptr, ptr %74, align 8, !tbaa !31
  %88 = getelementptr inbounds i8, ptr %87, i64 64
  %89 = load ptr, ptr %88, align 8
  %90 = call noundef i32 %89(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull %53, i32 noundef %.0111136, i32 noundef %86)
  %91 = add i32 %90, %.0111136
  br label %92

92:                                               ; preds = %83, %77, %.lr.ph
  %.1112 = phi i32 [ %91, %83 ], [ %.0111136, %77 ], [ %.0111136, %.lr.ph ]
  %93 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  %94 = load ptr, ptr %39, align 8, !tbaa !17
  %95 = getelementptr inbounds i8, ptr %94, i64 24
  %96 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %95) #6
  store ptr %96, ptr %8, align 8
  %97 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  br i1 %97, label %.lr.ph, label %._crit_edge, !llvm.loop !35

98:                                               ; preds = %._crit_edge
  call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 98, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

99:                                               ; preds = %._crit_edge
  %100 = load ptr, ptr %40, align 8, !tbaa !33
  %101 = getelementptr inbounds i32, ptr %100, i64 %indvars.iv
  %102 = load i32, ptr %101, align 4, !tbaa !34
  %103 = add nsw i32 %102, %.0111.lcssa
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %104 = getelementptr inbounds i32, ptr %100, i64 %indvars.iv.next
  store i32 %103, ptr %104, align 4, !tbaa !34
  %105 = load ptr, ptr %32, align 8, !tbaa !37
  %106 = getelementptr inbounds ptr, ptr %105, i64 %indvars.iv
  store ptr %53, ptr %106, align 8, !tbaa !15
  %107 = call ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  %108 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %24) #6
  %109 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %108) #6
  store ptr %109, ptr %6, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %110 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEES6_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  br i1 %110, label %43, label %._crit_edge140.loopexit, !llvm.loop !38

111:                                              ; preds = %._crit_edge140
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 103, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

112:                                              ; preds = %._crit_edge140
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  %113 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %24) #6
  %114 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %113) #6
  store ptr %114, ptr %10, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %115 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %24) #6
  %116 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %115) #6
  store ptr %116, ptr %12, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  %117 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEES6_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br i1 %117, label %.lr.ph180, label %._crit_edge181

.lr.ph180:                                        ; preds = %112
  %118 = getelementptr inbounds i8, ptr %32, i64 56
  %119 = getelementptr inbounds i8, ptr %0, i64 120
  %120 = getelementptr inbounds i8, ptr %32, i64 32
  %121 = getelementptr inbounds i8, ptr %0, i64 24
  %122 = getelementptr inbounds i8, ptr %32, i64 8
  br label %125

._crit_edge181.loopexit:                          ; preds = %290
  %123 = trunc nuw i64 %indvars.iv.next189 to i32
  br label %._crit_edge181

._crit_edge181:                                   ; preds = %._crit_edge181.loopexit, %112
  %.1.lcssa = phi i32 [ 0, %112 ], [ %123, %._crit_edge181.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  %124 = icmp eq i32 %.1.lcssa, %31
  br i1 %124, label %303, label %302

125:                                              ; preds = %.lr.ph180, %290
  %indvars.iv188 = phi i64 [ 0, %.lr.ph180 ], [ %indvars.iv.next189, %290 ]
  %126 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %127 = load i32, ptr %126, align 4, !tbaa !5
  %128 = load ptr, ptr %118, align 8, !tbaa !39
  %129 = getelementptr inbounds i32, ptr %128, i64 %indvars.iv188
  store i32 %127, ptr %129, align 4, !tbaa !14
  %130 = zext i32 %127 to i64
  %131 = getelementptr inbounds [10 x ptr], ptr @createType, i64 0, i64 %130
  %132 = load ptr, ptr %131, align 8, !tbaa !15
  %133 = call noundef ptr %132()
  %.not = icmp eq ptr %133, null
  br i1 %.not, label %134, label %135

134:                                              ; preds = %125
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 111, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

135:                                              ; preds = %125
  %136 = getelementptr inbounds [10 x ptr], ptr @allocType, i64 0, i64 %130
  %137 = load ptr, ptr %136, align 8, !tbaa !15
  %138 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %139 = getelementptr inbounds i8, ptr %138, i64 4
  %140 = load i32, ptr %139, align 4, !tbaa !16
  %141 = call noundef i32 %137(ptr noundef nonnull %133, i32 noundef %140)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %142 = load ptr, ptr %119, align 8, !tbaa !17
  %143 = getelementptr inbounds i8, ptr %142, i64 24
  %144 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #6
  store ptr %144, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %145 = load ptr, ptr %119, align 8, !tbaa !17
  %146 = getelementptr inbounds i8, ptr %145, i64 24
  %147 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %146) #6
  store ptr %147, ptr %14, align 8
  %148 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br i1 %148, label %.lr.ph159, label %._crit_edge160

._crit_edge160:                                   ; preds = %.loopexit, %135
  %.0113.lcssa = phi i32 [ 0, %135 ], [ %.5, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %149 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %24) #6
  %150 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %149) #6
  store ptr %150, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  %151 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %24) #6
  %152 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %151) #6
  store ptr %152, ptr %18, align 8
  %153 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIP10NeuronBaseES4_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  br i1 %153, label %.lr.ph175, label %._crit_edge176

.lr.ph159:                                        ; preds = %135, %.loopexit
  %.0113157 = phi i32 [ %.5, %.loopexit ], [ 0, %135 ]
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %155 = load ptr, ptr %154, align 8, !tbaa !15
  %156 = call noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16) %155)
  %.not121 = icmp eq i32 %156, %1
  br i1 %.not121, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %.lr.ph159
  %157 = load ptr, ptr %155, align 8, !tbaa !31
  %158 = getelementptr inbounds i8, ptr %157, i64 80
  %159 = load ptr, ptr %158, align 8
  %160 = call noundef i32 %159(ptr noundef nonnull align 8 dereferenceable(17) %155)
  %161 = icmp sgt i32 %160, 0
  br i1 %161, label %.lr.ph155, label %.loopexit

.lr.ph155:                                        ; preds = %.preheader, %._crit_edge151
  %.1114154 = phi i32 [ %.2.lcssa, %._crit_edge151 ], [ %.0113157, %.preheader ]
  %.0115153 = phi i32 [ %171, %._crit_edge151 ], [ 0, %.preheader ]
  %162 = load ptr, ptr %155, align 8, !tbaa !31
  %163 = getelementptr inbounds i8, ptr %162, i64 96
  %164 = load ptr, ptr %163, align 8
  %165 = call noundef ptr %164(ptr noundef nonnull align 8 dereferenceable(17) %155, i32 noundef %.0115153)
  %166 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10NeuronBase11getSynapsesEv(ptr noundef nonnull align 8 dereferenceable(52) %165)
  %167 = load ptr, ptr %119, align 8, !tbaa !17
  %168 = getelementptr inbounds i8, ptr %167, i64 72
  %169 = load i32, ptr %168, align 8, !tbaa !40
  %170 = icmp sgt i32 %169, 0
  br i1 %170, label %.lr.ph150, label %._crit_edge151

._crit_edge151:                                   ; preds = %._crit_edge145, %.lr.ph155
  %.2.lcssa = phi i32 [ %.1114154, %.lr.ph155 ], [ %.3.lcssa, %._crit_edge145 ]
  %171 = add nuw nsw i32 %.0115153, 1
  %172 = load ptr, ptr %155, align 8, !tbaa !31
  %173 = getelementptr inbounds i8, ptr %172, i64 80
  %174 = load ptr, ptr %173, align 8
  %175 = call noundef i32 %174(ptr noundef nonnull align 8 dereferenceable(17) %155)
  %176 = icmp slt i32 %171, %175
  br i1 %176, label %.lr.ph155, label %.loopexit, !llvm.loop !63

.lr.ph150:                                        ; preds = %.lr.ph155, %._crit_edge145
  %.2148 = phi i32 [ %.3.lcssa, %._crit_edge145 ], [ %.1114154, %.lr.ph155 ]
  %.0116147 = phi i32 [ %180, %._crit_edge145 ], [ 0, %.lr.ph155 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  %177 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %166) #6
  store ptr %177, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %178 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %166) #6
  store ptr %178, ptr %16, align 8
  %179 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  %180 = add nuw nsw i32 %.0116147, 1
  br i1 %179, label %.lr.ph144, label %._crit_edge145

._crit_edge145:                                   ; preds = %219, %.lr.ph150
  %.3.lcssa = phi i32 [ %.2148, %.lr.ph150 ], [ %.4, %219 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  %181 = load ptr, ptr %119, align 8, !tbaa !17
  %182 = getelementptr inbounds i8, ptr %181, i64 72
  %183 = load i32, ptr %182, align 8, !tbaa !40
  %184 = icmp slt i32 %180, %183
  br i1 %184, label %.lr.ph150, label %._crit_edge151, !llvm.loop !64

.lr.ph144:                                        ; preds = %.lr.ph150, %219
  %.3142 = phi i32 [ %.4, %219 ], [ %.2148, %.lr.ph150 ]
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  %186 = load ptr, ptr %185, align 8, !tbaa !15
  %187 = call noundef i32 @_ZN11SynapseBase8getDelayEv(ptr noundef nonnull align 8 dereferenceable(33) %186)
  %188 = icmp eq i32 %187, %180
  br i1 %188, label %189, label %219

189:                                              ; preds = %.lr.ph144
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  %191 = load ptr, ptr %190, align 8, !tbaa !15
  %192 = load ptr, ptr %191, align 8, !tbaa !31
  %193 = getelementptr inbounds i8, ptr %192, i64 16
  %194 = load ptr, ptr %193, align 8
  %195 = call noundef i32 %194(ptr noundef nonnull align 8 dereferenceable(16) %191)
  %196 = icmp eq i32 %195, %127
  br i1 %196, label %197, label %219

197:                                              ; preds = %189
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  %199 = load ptr, ptr %198, align 8, !tbaa !15
  %200 = call noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16) %199)
  %201 = icmp eq i32 %200, %1
  br i1 %201, label %202, label %219

202:                                              ; preds = %197
  %203 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %204 = getelementptr inbounds i8, ptr %203, i64 4
  %205 = load i32, ptr %204, align 4, !tbaa !16
  %206 = icmp slt i32 %.3142, %205
  br i1 %206, label %208, label %207

207:                                              ; preds = %202
  call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 136, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

208:                                              ; preds = %202
  %209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  %210 = load ptr, ptr %209, align 8, !tbaa !15
  %211 = load ptr, ptr %120, align 8, !tbaa !65
  %212 = getelementptr inbounds i32, ptr %211, i64 %indvars.iv188
  %213 = load i32, ptr %212, align 4, !tbaa !34
  %214 = load ptr, ptr %210, align 8, !tbaa !31
  %215 = getelementptr inbounds i8, ptr %214, i64 64
  %216 = load ptr, ptr %215, align 8
  %217 = call noundef i32 %216(ptr noundef nonnull align 8 dereferenceable(16) %210, ptr noundef nonnull %133, i32 noundef %.3142, i32 noundef %213)
  %218 = add nsw i32 %217, %.3142
  br label %219

219:                                              ; preds = %.lr.ph144, %208, %197, %189
  %.4 = phi i32 [ %218, %208 ], [ %.3142, %197 ], [ %.3142, %189 ], [ %.3142, %.lr.ph144 ]
  %220 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %15, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %221 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %166) #6
  store ptr %221, ptr %16, align 8
  %222 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  br i1 %222, label %.lr.ph144, label %._crit_edge145, !llvm.loop !66

.loopexit:                                        ; preds = %._crit_edge151, %.preheader, %.lr.ph159
  %.5 = phi i32 [ %.0113157, %.lr.ph159 ], [ %.0113157, %.preheader ], [ %.2.lcssa, %._crit_edge151 ]
  %223 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %224 = load ptr, ptr %119, align 8, !tbaa !17
  %225 = getelementptr inbounds i8, ptr %224, i64 24
  %226 = call ptr @_ZNSt6vectorIP14PopulationBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %225) #6
  store ptr %226, ptr %14, align 8
  %227 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP14PopulationBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br i1 %227, label %.lr.ph159, label %._crit_edge160, !llvm.loop !67

._crit_edge176:                                   ; preds = %._crit_edge171, %._crit_edge160
  %.6.lcssa = phi i32 [ %.0113.lcssa, %._crit_edge160 ], [ %.7.lcssa, %._crit_edge171 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  %228 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %229 = getelementptr inbounds i8, ptr %228, i64 4
  %230 = load i32, ptr %229, align 4, !tbaa !16
  %231 = icmp eq i32 %.6.lcssa, %230
  br i1 %231, label %290, label %289

.lr.ph175:                                        ; preds = %._crit_edge160, %._crit_edge171
  %.6173 = phi i32 [ %.7.lcssa, %._crit_edge171 ], [ %.0113.lcssa, %._crit_edge160 ]
  %232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIP10NeuronBaseEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  %233 = load ptr, ptr %232, align 8, !tbaa !15
  %234 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10NeuronBase11getSynapsesEv(ptr noundef nonnull align 8 dereferenceable(52) %233)
  %235 = load ptr, ptr %119, align 8, !tbaa !17
  %236 = getelementptr inbounds i8, ptr %235, i64 72
  %237 = load i32, ptr %236, align 8, !tbaa !40
  %238 = icmp sgt i32 %237, 0
  br i1 %238, label %.lr.ph170, label %._crit_edge171

._crit_edge171:                                   ; preds = %._crit_edge165, %.lr.ph175
  %.7.lcssa = phi i32 [ %.6173, %.lr.ph175 ], [ %.8.lcssa, %._crit_edge165 ]
  %239 = call ptr @_ZNSt23_Rb_tree_const_iteratorIP10NeuronBaseEppEi(ptr noundef nonnull align 8 dereferenceable(8) %17, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  %240 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %24) #6
  %241 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %240) #6
  store ptr %241, ptr %18, align 8
  %242 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIP10NeuronBaseES4_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  br i1 %242, label %.lr.ph175, label %._crit_edge176, !llvm.loop !68

.lr.ph170:                                        ; preds = %.lr.ph175, %._crit_edge165
  %.7168 = phi i32 [ %.8.lcssa, %._crit_edge165 ], [ %.6173, %.lr.ph175 ]
  %.0117167 = phi i32 [ %246, %._crit_edge165 ], [ 0, %.lr.ph175 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %243 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #6
  store ptr %243, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  %244 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #6
  store ptr %244, ptr %20, align 8
  %245 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  %246 = add nuw nsw i32 %.0117167, 1
  br i1 %245, label %.lr.ph164, label %._crit_edge165

._crit_edge165:                                   ; preds = %285, %.lr.ph170
  %.8.lcssa = phi i32 [ %.7168, %.lr.ph170 ], [ %.9, %285 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  %247 = load ptr, ptr %119, align 8, !tbaa !17
  %248 = getelementptr inbounds i8, ptr %247, i64 72
  %249 = load i32, ptr %248, align 8, !tbaa !40
  %250 = icmp slt i32 %246, %249
  br i1 %250, label %.lr.ph170, label %._crit_edge171, !llvm.loop !69

.lr.ph164:                                        ; preds = %.lr.ph170, %285
  %.8162 = phi i32 [ %.9, %285 ], [ %.7168, %.lr.ph170 ]
  %251 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #6
  %252 = load ptr, ptr %251, align 8, !tbaa !15
  %253 = call noundef i32 @_ZN4Base7getNodeEv(ptr noundef nonnull align 8 dereferenceable(16) %252)
  %254 = icmp eq i32 %253, %1
  br i1 %254, label %255, label %285

255:                                              ; preds = %.lr.ph164
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #6
  %257 = load ptr, ptr %256, align 8, !tbaa !15
  %258 = call noundef i32 @_ZN11SynapseBase8getDelayEv(ptr noundef nonnull align 8 dereferenceable(33) %257)
  %259 = icmp eq i32 %258, %246
  br i1 %259, label %260, label %285

260:                                              ; preds = %255
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #6
  %262 = load ptr, ptr %261, align 8, !tbaa !15
  %263 = load ptr, ptr %262, align 8, !tbaa !31
  %264 = getelementptr inbounds i8, ptr %263, i64 16
  %265 = load ptr, ptr %264, align 8
  %266 = call noundef i32 %265(ptr noundef nonnull align 8 dereferenceable(16) %262)
  %267 = icmp eq i32 %266, %127
  br i1 %267, label %268, label %285

268:                                              ; preds = %260
  %269 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  %270 = getelementptr inbounds i8, ptr %269, i64 4
  %271 = load i32, ptr %270, align 4, !tbaa !16
  %272 = icmp slt i32 %.8162, %271
  br i1 %272, label %274, label %273

273:                                              ; preds = %268
  call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 151, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

274:                                              ; preds = %268
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #6
  %276 = load ptr, ptr %275, align 8, !tbaa !15
  %277 = load ptr, ptr %120, align 8, !tbaa !65
  %278 = getelementptr inbounds i32, ptr %277, i64 %indvars.iv188
  %279 = load i32, ptr %278, align 4, !tbaa !34
  %280 = load ptr, ptr %276, align 8, !tbaa !31
  %281 = getelementptr inbounds i8, ptr %280, i64 64
  %282 = load ptr, ptr %281, align 8
  %283 = call noundef i32 %282(ptr noundef nonnull align 8 dereferenceable(16) %276, ptr noundef nonnull %133, i32 noundef %.8162, i32 noundef %279)
  %284 = add nsw i32 %283, %.8162
  br label %285

285:                                              ; preds = %.lr.ph164, %255, %260, %274
  %.9 = phi i32 [ %284, %274 ], [ %.8162, %260 ], [ %.8162, %255 ], [ %.8162, %.lr.ph164 ]
  %286 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  %287 = call ptr @_ZNKSt6vectorIP11SynapseBaseSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #6
  store ptr %287, ptr %20, align 8
  %288 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP11SynapseBaseSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  br i1 %288, label %.lr.ph164, label %._crit_edge165, !llvm.loop !70

289:                                              ; preds = %._crit_edge176
  call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 160, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

290:                                              ; preds = %._crit_edge176
  %291 = load ptr, ptr %120, align 8, !tbaa !65
  %292 = getelementptr inbounds i32, ptr %291, i64 %indvars.iv188
  %293 = load i32, ptr %292, align 4, !tbaa !34
  %294 = add nsw i32 %293, %.6.lcssa
  %indvars.iv.next189 = add nuw nsw i64 %indvars.iv188, 1
  %295 = getelementptr inbounds i32, ptr %291, i64 %indvars.iv.next189
  store i32 %294, ptr %295, align 4, !tbaa !34
  %296 = load ptr, ptr %122, align 8, !tbaa !71
  %297 = getelementptr inbounds ptr, ptr %296, i64 %indvars.iv188
  store ptr %133, ptr %297, align 8, !tbaa !15
  %298 = call ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %299 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %24) #6
  %300 = call ptr @_ZNSt3mapI4TypeiSt4lessIS0_ESaISt4pairIKS0_iEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %299) #6
  store ptr %300, ptr %12, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  %301 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEES6_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br i1 %301, label %125, label %._crit_edge181.loopexit, !llvm.loop !72

302:                                              ; preds = %._crit_edge181
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 165, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN12MultiNetwork11arrangeDataEi) #7
  unreachable

303:                                              ; preds = %._crit_edge181
  %304 = getelementptr inbounds i8, ptr %32, i64 24
  %305 = load ptr, ptr %304, align 8, !tbaa !33
  %306 = getelementptr inbounds i8, ptr %32, i64 40
  %307 = load i32, ptr %306, align 8, !tbaa !73
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds i32, ptr %305, i64 %308
  %310 = load i32, ptr %309, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  %311 = getelementptr inbounds i8, ptr %0, i64 24
  %312 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef %24) #6
  %313 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %312) #6
  store ptr %313, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  %314 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef %24) #6
  %315 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %314) #6
  store ptr %315, ptr %22, align 8
  %316 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIP10NeuronBaseES4_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br i1 %316, label %.lr.ph184, label %._crit_edge185

.lr.ph184:                                        ; preds = %303
  %317 = getelementptr inbounds i8, ptr %0, i64 48
  br label %323

._crit_edge185:                                   ; preds = %323, %303
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  %318 = getelementptr inbounds i8, ptr %0, i64 120
  %319 = load ptr, ptr %318, align 8, !tbaa !17
  %320 = getelementptr inbounds i8, ptr %319, i64 72
  %321 = load i32, ptr %320, align 8, !tbaa !40
  %322 = getelementptr inbounds i8, ptr %32, i64 64
  store i32 %321, ptr %322, align 8, !tbaa !74
  ret ptr %32

323:                                              ; preds = %.lr.ph184, %323
  %324 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef %24) #6
  %325 = call noundef i64 @_ZNKSt3mapIP10NeuronBaseiSt4lessIS1_ESaISt4pairIKS1_iEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %324) #6
  %326 = trunc i64 %325 to i32
  %327 = add nsw i32 %310, %326
  %328 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef %24) #6
  %329 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIP10NeuronBaseEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  %330 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIP10NeuronBaseiSt4lessIS1_ESaISt4pairIKS1_iEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(48) %328, ptr noundef nonnull align 8 dereferenceable(8) %329)
  store i32 %327, ptr %330, align 4, !tbaa !34
  %331 = call ptr @_ZNSt23_Rb_tree_const_iteratorIP10NeuronBaseEppEi(ptr noundef nonnull align 8 dereferenceable(8) %21, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  %332 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef %24) #6
  %333 = call ptr @_ZNKSt3setIP10NeuronBaseSt4lessIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %332) #6
  store ptr %333, ptr %22, align 8
  %334 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIP10NeuronBaseES4_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br i1 %334, label %323, label %._crit_edge185, !llvm.loop !75
}

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

declare noundef ptr @_Z12initGNetworkii(i32 noundef, i32 noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK4TypeiEES6_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10NeuronBase11getSynapsesEv(ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #4

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN11SynapseBase8getDelayEv(ptr noundef nonnull align 8 dereferenceable(33)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIP10NeuronBaseES4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { 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 #6 = { nounwind }
attributes #7 = { 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, !7, i64 0}
!6 = !{!"_ZTSSt4pairIK4TypeiE", !7, i64 0, !10, i64 4}
!7 = !{!"_ZTS4Type", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !13, i64 48}
!12 = !{!"_ZTS8GNetwork", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !10, i64 40, !10, i64 44, !13, i64 48, !13, i64 56, !10, i64 64}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!7, !7, i64 0}
!15 = !{!13, !13, i64 0}
!16 = !{!6, !10, i64 4}
!17 = !{!18, !13, i64 120}
!18 = !{!"_ZTS12MultiNetwork", !19, i64 0, !19, i64 24, !23, i64 48, !27, i64 72, !27, i64 96, !13, i64 120, !10, i64 128}
!19 = !{!"_ZTSSt6vectorISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt3setIP10NeuronBaseSt4lessIS2_ESaIS2_EESaIS6_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!23 = !{!"_ZTSSt6vectorISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt3mapIP10NeuronBaseiSt4lessIS2_ESaISt4pairIKS2_iEEESaIS9_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!27 = !{!"_ZTSSt6vectorISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseISt3mapI4TypeiSt4lessIS1_ESaISt4pairIKS1_iEEESaIS8_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!31 = !{!32, !32, i64 0}
!32 = !{!"vtable pointer", !9, i64 0}
!33 = !{!12, !13, i64 24}
!34 = !{!10, !10, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!12, !13, i64 0}
!38 = distinct !{!38, !36}
!39 = !{!12, !13, i64 56}
!40 = !{!41, !10, i64 72}
!41 = !{!"_ZTS7Network", !42, i64 0, !46, i64 24, !50, i64 48, !10, i64 72, !10, i64 76, !10, i64 80, !54, i64 84, !54, i64 88, !55, i64 96, !55, i64 120, !10, i64 144, !59, i64 152, !59, i64 176, !59, i64 200}
!42 = !{!"_ZTSSt6vectorIP10NeuronBaseSaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIP10NeuronBaseSaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIP10NeuronBaseSaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIP10NeuronBaseSaIS1_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!46 = !{!"_ZTSSt6vectorIP14PopulationBaseSaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIP14PopulationBaseSaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIP14PopulationBaseSaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIP14PopulationBaseSaIS1_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!50 = !{!"_ZTSSt6vectorIP11SynapseBaseSaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIP11SynapseBaseSaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIP11SynapseBaseSaIS1_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIP11SynapseBaseSaIS1_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!54 = !{!"float", !8, i64 0}
!55 = !{!"_ZTSSt6vectorI4TypeSaIS0_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseI4TypeSaIS0_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseI4TypeSaIS0_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseI4TypeSaIS0_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!59 = !{!"_ZTSSt6vectorIiSaIiEE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!63 = distinct !{!63, !36}
!64 = distinct !{!64, !36}
!65 = !{!12, !13, i64 32}
!66 = distinct !{!66, !36}
!67 = distinct !{!67, !36}
!68 = distinct !{!68, !36}
!69 = distinct !{!69, !36}
!70 = distinct !{!70, !36}
!71 = !{!12, !13, i64 8}
!72 = distinct !{!72, !36}
!73 = !{!12, !10, i64 40}
!74 = !{!12, !10, i64 64}
!75 = distinct !{!75, !36}


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