; LLVM IR from CWI-EvolutionaryIntelligence/GOMEA :: gomea/src/common (linkage_model)

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

%"class.std::mersenne_twister_engine" = type { [624 x i64], i64 }
%"class.std::vector.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = 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 }
%"class.std::allocator.6" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.19" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"class.std::vector.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.gomea::linkage_model_t" = type { ptr, %"class.std::vector", i64, %"class.std::vector", %"class.std::vector.4", %"class.std::vector.4", %"class.std::vector.4", i32, i8, i32, %"class.std::vector.4", %"class.std::vector.9", %"class.std::vector.14", i8, i32 }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::set<int>, std::allocator<std::set<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.8 = external hidden unnamed_addr constant [103 x i8], align 1
@_ZN5gomea5utils3rngE = external global %"class.std::mersenne_twister_engine", align 8
@.str.39 = external hidden unnamed_addr constant [30 x i8], align 1
@__PRETTY_FUNCTION__._ZN5gomea15linkage_model_t19learnLinkageTreeFOSESt6vectorIS1_IdSaIdEESaIS3_EEb = external hidden unnamed_addr constant [77 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [33 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

declare i32 @__gxx_personality_v0(...)

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

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

declare i32 @printf(ptr noundef, ...) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_(ptr, ptr, i32 noundef) #3

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5gomea15linkage_model_t19learnLinkageTreeFOSESt6vectorIS1_IdSaIdEESaIS3_EEb(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef %1, i1 noundef zeroext %2) #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca %"class.std::vector.4", align 8
  %8 = alloca %"class.std::vector.4", align 8
  %9 = alloca %"class.std::vector.4", align 8
  %10 = alloca %"class.std::allocator.6", align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.19", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.19", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.19", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.19", align 8
  %17 = alloca %"class.std::vector", align 8
  %18 = alloca %"class.std::allocator.0", align 1
  %19 = alloca %"class.std::vector", align 8
  %20 = alloca %"class.std::allocator.0", align 1
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %24 = alloca i32, align 4
  %25 = alloca i64, align 8
  %26 = alloca i32, align 4
  %27 = alloca i64, align 8
  %28 = alloca %"class.std::vector.45", align 8
  %29 = alloca i64, align 8
  %30 = alloca i8, align 1
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i8, align 1
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::vector.4", align 8
  %37 = alloca %"class.std::allocator.6", align 1
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %47 = zext i1 %2 to i8
  store i8 %47, ptr %6, align 1, !tbaa !9
  %48 = load ptr, ptr %4, align 8
  %49 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 7
  %50 = load i32, ptr %49, align 8, !tbaa !11
  %51 = icmp eq i32 %50, 3
  br i1 %51, label %52, label %53

52:                                               ; preds = %3
  br label %55

53:                                               ; preds = %3
  call void @__assert_fail(ptr noundef @.str.39, ptr noundef @.str.8, i32 noundef 498, ptr noundef @__PRETTY_FUNCTION__._ZN5gomea15linkage_model_t19learnLinkageTreeFOSESt6vectorIS1_IdSaIdEESaIS3_EEb) #6
  unreachable

54:                                               ; No predecessors!
  br label %55

55:                                               ; preds = %54, %52
  %56 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 1
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #7
  %57 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %58 = load i64, ptr %57, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %58, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %59 unwind label %90

59:                                               ; preds = %55
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  %60 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %61 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.19", ptr %13, i32 0, i32 0
  store ptr %60, ptr %61, align 8
  %62 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %63 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.19", ptr %14, i32 0, i32 0
  store ptr %62, ptr %63, align 8
  %64 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.19", ptr %13, i32 0, i32 0
  %65 = load ptr, ptr %64, align 8
  %66 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.19", ptr %14, i32 0, i32 0
  %67 = load ptr, ptr %66, align 8
  invoke void @_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_(ptr %65, ptr %67, i32 noundef 0)
          to label %68 unwind label %94

68:                                               ; preds = %59
  %69 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %70 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.19", ptr %15, i32 0, i32 0
  store ptr %69, ptr %70, align 8
  %71 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %72 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.19", ptr %16, i32 0, i32 0
  store ptr %71, ptr %72, align 8
  %73 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.19", ptr %15, i32 0, i32 0
  %74 = load ptr, ptr %73, align 8
  %75 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.19", ptr %16, i32 0, i32 0
  %76 = load ptr, ptr %75, align 8
  invoke void @_ZSt7shuffleIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEERSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEvT_SA_OT0_(ptr %74, ptr %76, ptr noundef nonnull align 8 dereferenceable(5000) @_ZN5gomea5utils3rngE)
          to label %77 unwind label %94

77:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #7
  %78 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %79 = load i64, ptr %78, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  call void @_ZNSaISt6vectorIiSaIiEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %79, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %80 unwind label %98

80:                                               ; preds = %77
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  %81 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %82 = load i64, ptr %81, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #7
  call void @_ZNSaISt6vectorIiSaIiEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %82, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %83 unwind label %102

83:                                               ; preds = %80
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  store i64 0, ptr %21, align 8, !tbaa !33
  br label %84

84:                                               ; preds = %112, %83
  %85 = load i64, ptr %21, align 8, !tbaa !33
  %86 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %87 = load i64, ptr %86, align 8, !tbaa !32
  %88 = icmp ult i64 %85, %87
  br i1 %88, label %106, label %89

89:                                               ; preds = %84
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %119

90:                                               ; preds = %55
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %11, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  br label %816

94:                                               ; preds = %68, %59
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %11, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %12, align 4
  br label %815

98:                                               ; preds = %77
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %11, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %12, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  br label %814

102:                                              ; preds = %80
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %11, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %12, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  br label %813

106:                                              ; preds = %84
  %107 = load i64, ptr %21, align 8, !tbaa !33
  %108 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %107) #7
  %109 = load i64, ptr %21, align 8, !tbaa !33
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %109) #7
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %108, ptr noundef nonnull align 4 dereferenceable(4) %110)
          to label %111 unwind label %115

111:                                              ; preds = %106
  br label %112

112:                                              ; preds = %111
  %113 = load i64, ptr %21, align 8, !tbaa !33
  %114 = add i64 %113, 1
  store i64 %114, ptr %21, align 8, !tbaa !33
  br label %84, !llvm.loop !34

115:                                              ; preds = %106
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %11, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %812

119:                                              ; preds = %89
  %120 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 1
  %121 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %122 = load i64, ptr %121, align 8, !tbaa !32
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %122)
          to label %123 unwind label %130

123:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 0, ptr %22, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  store i64 0, ptr %23, align 8, !tbaa !33
  br label %124

124:                                              ; preds = %147, %123
  %125 = load i64, ptr %23, align 8, !tbaa !33
  %126 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %127 = load i64, ptr %126, align 8, !tbaa !32
  %128 = icmp ult i64 %125, %127
  br i1 %128, label %134, label %129

129:                                              ; preds = %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %159

130:                                              ; preds = %119
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %11, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %12, align 4
  br label %812

134:                                              ; preds = %124
  %135 = load i64, ptr %23, align 8, !tbaa !33
  %136 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %135) #7
  %137 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 1
  %138 = load i64, ptr %23, align 8, !tbaa !33
  %139 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef %138) #7
  %140 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %139, ptr noundef nonnull align 8 dereferenceable(24) %136)
          to label %141 unwind label %150

141:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %142 = load i64, ptr %23, align 8, !tbaa !33
  %143 = trunc i64 %142 to i32
  store i32 %143, ptr %24, align 4, !tbaa !36
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %144 unwind label %154

144:                                              ; preds = %141
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  %145 = load i32, ptr %22, align 4, !tbaa !36
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %22, align 4, !tbaa !36
  br label %147

147:                                              ; preds = %144
  %148 = load i64, ptr %23, align 8, !tbaa !33
  %149 = add i64 %148, 1
  store i64 %149, ptr %23, align 8, !tbaa !33
  br label %124, !llvm.loop !37

150:                                              ; preds = %134
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %11, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %12, align 4
  br label %158

154:                                              ; preds = %141
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %11, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %158

158:                                              ; preds = %154, %150
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %811

159:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  store i64 0, ptr %25, align 8, !tbaa !33
  br label %160

160:                                              ; preds = %201, %159
  %161 = load i64, ptr %25, align 8, !tbaa !33
  %162 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %163 = load i64, ptr %162, align 8, !tbaa !32
  %164 = icmp ult i64 %161, %163
  br i1 %164, label %166, label %165

165:                                              ; preds = %160
  store i32 8, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %204

166:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  store i64 0, ptr %27, align 8, !tbaa !33
  br label %167

167:                                              ; preds = %192, %166
  %168 = load i64, ptr %27, align 8, !tbaa !33
  %169 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %170 = load i64, ptr %169, align 8, !tbaa !32
  %171 = icmp ult i64 %168, %170
  br i1 %171, label %173, label %172

172:                                              ; preds = %167
  store i32 11, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %195

173:                                              ; preds = %167
  %174 = load i64, ptr %25, align 8, !tbaa !33
  %175 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %174) #7
  %176 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %175, i64 noundef 0) #7
  %177 = load i32, ptr %176, align 4, !tbaa !36
  %178 = sext i32 %177 to i64
  %179 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %178) #7
  %180 = load i64, ptr %27, align 8, !tbaa !33
  %181 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %180) #7
  %182 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 noundef 0) #7
  %183 = load i32, ptr %182, align 4, !tbaa !36
  %184 = sext i32 %183 to i64
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %179, i64 noundef %184) #7
  %186 = load double, ptr %185, align 8, !tbaa !38
  %187 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %188 = load i64, ptr %25, align 8, !tbaa !33
  %189 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %187, i64 noundef %188) #7
  %190 = load i64, ptr %27, align 8, !tbaa !33
  %191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %189, i64 noundef %190) #7
  store double %186, ptr %191, align 8, !tbaa !38
  br label %192

192:                                              ; preds = %173
  %193 = load i64, ptr %27, align 8, !tbaa !33
  %194 = add i64 %193, 1
  store i64 %194, ptr %27, align 8, !tbaa !33
  br label %167, !llvm.loop !40

195:                                              ; preds = %172
  %196 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %197 = load i64, ptr %25, align 8, !tbaa !33
  %198 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %196, i64 noundef %197) #7
  %199 = load i64, ptr %25, align 8, !tbaa !33
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %198, i64 noundef %199) #7
  store double 0.000000e+00, ptr %200, align 8, !tbaa !38
  br label %201

201:                                              ; preds = %195
  %202 = load i64, ptr %25, align 8, !tbaa !33
  %203 = add i64 %202, 1
  store i64 %203, ptr %25, align 8, !tbaa !33
  br label %160, !llvm.loop !41

204:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #7
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  %205 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %206 = load i64, ptr %205, align 8, !tbaa !32
  %207 = add i64 %206, 2
  invoke void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %207)
          to label %208 unwind label %225

208:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store i64 0, ptr %29, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #7
  store i8 0, ptr %30, align 1, !tbaa !9
  br label %209

209:                                              ; preds = %806, %804, %208
  %210 = load i8, ptr %30, align 1, !tbaa !9, !range !42, !noundef !43
  %211 = trunc i8 %210 to i1
  %212 = xor i1 %211, true
  br i1 %212, label %213, label %808

213:                                              ; preds = %209
  %214 = load i64, ptr %29, align 8, !tbaa !33
  %215 = icmp eq i64 %214, 0
  br i1 %215, label %216, label %233

216:                                              ; preds = %213
  %217 = invoke noundef i64 @_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEclEv(ptr noundef nonnull align 8 dereferenceable(5000) @_ZN5gomea5utils3rngE)
          to label %218 unwind label %229

218:                                              ; preds = %216
  %219 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %220 = urem i64 %217, %219
  %221 = load i64, ptr %29, align 8, !tbaa !33
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %221) #7
  store i64 %220, ptr %222, align 8, !tbaa !33
  %223 = load i64, ptr %29, align 8, !tbaa !33
  %224 = add i64 %223, 1
  store i64 %224, ptr %29, align 8, !tbaa !33
  br label %233

225:                                              ; preds = %204
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %11, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %12, align 4
  br label %810

229:                                              ; preds = %260, %237, %216
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %11, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %12, align 4
  br label %809

233:                                              ; preds = %218, %213
  br label %234

234:                                              ; preds = %243, %233
  %235 = load i64, ptr %29, align 8, !tbaa !33
  %236 = icmp ult i64 %235, 3
  br i1 %236, label %237, label %249

237:                                              ; preds = %234
  %238 = load i64, ptr %29, align 8, !tbaa !33
  %239 = sub i64 %238, 1
  %240 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %239) #7
  %241 = load i64, ptr %240, align 8, !tbaa !33
  %242 = invoke noundef i32 @_ZN5gomea15linkage_model_t25determineNearestNeighbourEmRKSt6vectorIS1_IiSaIiEESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(232) %48, i64 noundef %241, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %243 unwind label %229

243:                                              ; preds = %237
  %244 = sext i32 %242 to i64
  %245 = load i64, ptr %29, align 8, !tbaa !33
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %245) #7
  store i64 %244, ptr %246, align 8, !tbaa !33
  %247 = load i64, ptr %29, align 8, !tbaa !33
  %248 = add i64 %247, 1
  store i64 %248, ptr %29, align 8, !tbaa !33
  br label %234, !llvm.loop !44

249:                                              ; preds = %234
  br label %250

250:                                              ; preds = %318, %249
  %251 = load i64, ptr %29, align 8, !tbaa !33
  %252 = sub i64 %251, 3
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %252) #7
  %254 = load i64, ptr %253, align 8, !tbaa !33
  %255 = load i64, ptr %29, align 8, !tbaa !33
  %256 = sub i64 %255, 1
  %257 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %256) #7
  %258 = load i64, ptr %257, align 8, !tbaa !33
  %259 = icmp ne i64 %254, %258
  br i1 %259, label %260, label %319

260:                                              ; preds = %250
  %261 = load i64, ptr %29, align 8, !tbaa !33
  %262 = sub i64 %261, 1
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %262) #7
  %264 = load i64, ptr %263, align 8, !tbaa !33
  %265 = invoke noundef i32 @_ZN5gomea15linkage_model_t25determineNearestNeighbourEmRKSt6vectorIS1_IiSaIiEESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(232) %48, i64 noundef %264, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %266 unwind label %229

266:                                              ; preds = %260
  %267 = sext i32 %265 to i64
  %268 = load i64, ptr %29, align 8, !tbaa !33
  %269 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %268) #7
  store i64 %267, ptr %269, align 8, !tbaa !33
  %270 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %271 = load i64, ptr %29, align 8, !tbaa !33
  %272 = sub i64 %271, 1
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %272) #7
  %274 = load i64, ptr %273, align 8, !tbaa !33
  %275 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %270, i64 noundef %274) #7
  %276 = load i64, ptr %29, align 8, !tbaa !33
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %276) #7
  %278 = load i64, ptr %277, align 8, !tbaa !33
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %275, i64 noundef %278) #7
  %280 = load double, ptr %279, align 8, !tbaa !38
  %281 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %282 = load i64, ptr %29, align 8, !tbaa !33
  %283 = sub i64 %282, 1
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %283) #7
  %285 = load i64, ptr %284, align 8, !tbaa !33
  %286 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %281, i64 noundef %285) #7
  %287 = load i64, ptr %29, align 8, !tbaa !33
  %288 = sub i64 %287, 2
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %288) #7
  %290 = load i64, ptr %289, align 8, !tbaa !33
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %286, i64 noundef %290) #7
  %292 = load double, ptr %291, align 8, !tbaa !38
  %293 = fcmp oeq double %280, %292
  br i1 %293, label %294, label %310

294:                                              ; preds = %266
  %295 = load i64, ptr %29, align 8, !tbaa !33
  %296 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %295) #7
  %297 = load i64, ptr %296, align 8, !tbaa !33
  %298 = load i64, ptr %29, align 8, !tbaa !33
  %299 = sub i64 %298, 2
  %300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %299) #7
  %301 = load i64, ptr %300, align 8, !tbaa !33
  %302 = icmp ne i64 %297, %301
  br i1 %302, label %303, label %310

303:                                              ; preds = %294
  %304 = load i64, ptr %29, align 8, !tbaa !33
  %305 = sub i64 %304, 2
  %306 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %305) #7
  %307 = load i64, ptr %306, align 8, !tbaa !33
  %308 = load i64, ptr %29, align 8, !tbaa !33
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %308) #7
  store i64 %307, ptr %309, align 8, !tbaa !33
  br label %310

310:                                              ; preds = %303, %294, %266
  %311 = load i64, ptr %29, align 8, !tbaa !33
  %312 = add i64 %311, 1
  store i64 %312, ptr %29, align 8, !tbaa !33
  %313 = load i64, ptr %29, align 8, !tbaa !33
  %314 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %315 = load i64, ptr %314, align 8, !tbaa !32
  %316 = icmp ugt i64 %313, %315
  br i1 %316, label %317, label %318

317:                                              ; preds = %310
  br label %319

318:                                              ; preds = %310
  br label %250, !llvm.loop !45

319:                                              ; preds = %317, %250
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %320 = load i64, ptr %29, align 8, !tbaa !33
  %321 = sub i64 %320, 2
  %322 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %321) #7
  %323 = load i64, ptr %322, align 8, !tbaa !33
  store i64 %323, ptr %31, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %324 = load i64, ptr %29, align 8, !tbaa !33
  %325 = sub i64 %324, 1
  %326 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %325) #7
  %327 = load i64, ptr %326, align 8, !tbaa !33
  store i64 %327, ptr %32, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #7
  store i8 0, ptr %33, align 1, !tbaa !9
  %328 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 13
  %329 = load i8, ptr %328, align 8, !tbaa !46, !range !42, !noundef !43
  %330 = trunc i8 %329 to i1
  br i1 %330, label %331, label %360

331:                                              ; preds = %319
  %332 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 14
  %333 = load i32, ptr %332, align 4, !tbaa !47
  %334 = icmp eq i32 %333, 0
  br i1 %334, label %339, label %335

335:                                              ; preds = %331
  %336 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 14
  %337 = load i32, ptr %336, align 4, !tbaa !47
  %338 = icmp eq i32 %337, 1
  br i1 %338, label %339, label %349

339:                                              ; preds = %335, %331
  %340 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %341 = load i64, ptr %32, align 8, !tbaa !33
  %342 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %340, i64 noundef %341) #7
  %343 = load i64, ptr %31, align 8, !tbaa !33
  %344 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %342, i64 noundef %343) #7
  %345 = load double, ptr %344, align 8, !tbaa !38
  %346 = fcmp oge double %345, 0x3FEFFFFDE7210BE9
  br i1 %346, label %347, label %348

347:                                              ; preds = %339
  store i8 1, ptr %33, align 1, !tbaa !9
  br label %348

348:                                              ; preds = %347, %339
  br label %359

349:                                              ; preds = %335
  %350 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %351 = load i64, ptr %32, align 8, !tbaa !33
  %352 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %350, i64 noundef %351) #7
  %353 = load i64, ptr %31, align 8, !tbaa !33
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %352, i64 noundef %353) #7
  %355 = load double, ptr %354, align 8, !tbaa !38
  %356 = fcmp oeq double %355, 0.000000e+00
  br i1 %356, label %357, label %358

357:                                              ; preds = %349
  store i8 1, ptr %33, align 1, !tbaa !9
  br label %358

358:                                              ; preds = %357, %349
  br label %359

359:                                              ; preds = %358, %348
  br label %360

360:                                              ; preds = %359, %319
  %361 = load i64, ptr %32, align 8, !tbaa !33
  %362 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %363 = icmp uge i64 %361, %362
  br i1 %363, label %380, label %364

364:                                              ; preds = %360
  %365 = load i64, ptr %31, align 8, !tbaa !33
  %366 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %367 = icmp uge i64 %365, %366
  br i1 %367, label %380, label %368

368:                                              ; preds = %364
  %369 = load i64, ptr %31, align 8, !tbaa !33
  %370 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %369) #7
  %371 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %370) #7
  %372 = load i64, ptr %32, align 8, !tbaa !33
  %373 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %372) #7
  %374 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %373) #7
  %375 = add i64 %371, %374
  %376 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 9
  %377 = load i32, ptr %376, align 8, !tbaa !48
  %378 = sext i32 %377 to i64
  %379 = icmp ugt i64 %375, %378
  br i1 %379, label %380, label %451

380:                                              ; preds = %368, %364, %360
  store i64 1, ptr %29, align 8, !tbaa !33
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef 0) #7
  store i64 0, ptr %381, align 8, !tbaa !33
  %382 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 9
  %383 = load i32, ptr %382, align 8, !tbaa !48
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 2
  %386 = load i64, ptr %385, align 8, !tbaa !32
  %387 = icmp ult i64 %384, %386
  br i1 %387, label %388, label %450

388:                                              ; preds = %380
  store i8 1, ptr %30, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 1, ptr %34, align 4, !tbaa !36
  br label %389

389:                                              ; preds = %442, %388
  %390 = load i32, ptr %34, align 4, !tbaa !36
  %391 = sext i32 %390 to i64
  %392 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %393 = icmp ult i64 %391, %392
  br i1 %393, label %395, label %394

394:                                              ; preds = %389
  store i32 20, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %445

395:                                              ; preds = %389
  %396 = load i32, ptr %34, align 4, !tbaa !36
  %397 = sext i32 %396 to i64
  %398 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %397) #7
  %399 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %398) #7
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef 0) #7
  %401 = load i64, ptr %400, align 8, !tbaa !33
  %402 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %401) #7
  %403 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %402) #7
  %404 = add i64 %399, %403
  %405 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 9
  %406 = load i32, ptr %405, align 8, !tbaa !48
  %407 = sext i32 %406 to i64
  %408 = icmp ule i64 %404, %407
  br i1 %408, label %409, label %427

409:                                              ; preds = %395
  store i8 0, ptr %30, align 1, !tbaa !9
  %410 = load i32, ptr %34, align 4, !tbaa !36
  %411 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef 0) #7
  %412 = load i64, ptr %411, align 8, !tbaa !33
  %413 = load i32, ptr %34, align 4, !tbaa !36
  %414 = sext i32 %413 to i64
  %415 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %414) #7
  %416 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %415) #7
  %417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef 0) #7
  %418 = load i64, ptr %417, align 8, !tbaa !33
  %419 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %418) #7
  %420 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %419) #7
  %421 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.40, i32 noundef %410, i64 noundef %412, i64 noundef %416, i64 noundef %420)
          to label %422 unwind label %423

422:                                              ; preds = %409
  br label %427

423:                                              ; preds = %409
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %11, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %807

427:                                              ; preds = %422, %395
  %428 = load i32, ptr %34, align 4, !tbaa !36
  %429 = sext i32 %428 to i64
  %430 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %429) #7
  %431 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %430) #7
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef 0) #7
  %433 = load i64, ptr %432, align 8, !tbaa !33
  %434 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %433) #7
  %435 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %434) #7
  %436 = icmp ult i64 %431, %435
  br i1 %436, label %437, label %441

437:                                              ; preds = %427
  %438 = load i32, ptr %34, align 4, !tbaa !36
  %439 = sext i32 %438 to i64
  %440 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef 0) #7
  store i64 %439, ptr %440, align 8, !tbaa !33
  br label %441

441:                                              ; preds = %437, %427
  br label %442

442:                                              ; preds = %441
  %443 = load i32, ptr %34, align 4, !tbaa !36
  %444 = add nsw i32 %443, 1
  store i32 %444, ptr %34, align 4, !tbaa !36
  br label %389, !llvm.loop !49

445:                                              ; preds = %394
  %446 = load i8, ptr %30, align 1, !tbaa !9, !range !42, !noundef !43
  %447 = trunc i8 %446 to i1
  br i1 %447, label %448, label %449

448:                                              ; preds = %445
  store i32 15, ptr %26, align 4
  br label %804

449:                                              ; preds = %445
  br label %450

450:                                              ; preds = %449, %380
  store i32 14, ptr %26, align 4
  br label %804, !llvm.loop !50

451:                                              ; preds = %368
  %452 = load i64, ptr %31, align 8, !tbaa !33
  %453 = load i64, ptr %32, align 8, !tbaa !33
  %454 = icmp ugt i64 %452, %453
  br i1 %454, label %455, label %461

455:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  %456 = load i64, ptr %31, align 8, !tbaa !33
  %457 = trunc i64 %456 to i32
  store i32 %457, ptr %35, align 4, !tbaa !36
  %458 = load i64, ptr %32, align 8, !tbaa !33
  store i64 %458, ptr %31, align 8, !tbaa !33
  %459 = load i32, ptr %35, align 4, !tbaa !36
  %460 = sext i32 %459 to i64
  store i64 %460, ptr %32, align 8, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %461

461:                                              ; preds = %455, %451
  %462 = load i64, ptr %29, align 8, !tbaa !33
  %463 = sub i64 %462, 3
  store i64 %463, ptr %29, align 8, !tbaa !33
  %464 = load i64, ptr %32, align 8, !tbaa !33
  %465 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %466 = icmp ult i64 %464, %465
  br i1 %466, label %467, label %803

467:                                              ; preds = %461
  %468 = load i64, ptr %31, align 8, !tbaa !33
  %469 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %468) #7
  %470 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %469) #7
  %471 = load i64, ptr %32, align 8, !tbaa !33
  %472 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %471) #7
  %473 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %472) #7
  %474 = add i64 %470, %473
  %475 = trunc i64 %474 to i32
  %476 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 9
  %477 = load i32, ptr %476, align 8, !tbaa !48
  %478 = icmp sgt i32 %475, %477
  br i1 %478, label %479, label %480

479:                                              ; preds = %467
  store i8 1, ptr %30, align 1, !tbaa !9
  store i32 15, ptr %26, align 4
  br label %804

480:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #7
  %481 = load i64, ptr %31, align 8, !tbaa !33
  %482 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %481) #7
  %483 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %482) #7
  %484 = load i64, ptr %32, align 8, !tbaa !33
  %485 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %484) #7
  %486 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %485) #7
  %487 = add i64 %483, %486
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %487, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %488 unwind label %496

488:                                              ; preds = %480
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store i64 0, ptr %38, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  store i64 0, ptr %39, align 8, !tbaa !33
  br label %489

489:                                              ; preds = %510, %488
  %490 = load i64, ptr %39, align 8, !tbaa !33
  %491 = load i64, ptr %31, align 8, !tbaa !33
  %492 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %491) #7
  %493 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %492) #7
  %494 = icmp ult i64 %490, %493
  br i1 %494, label %500, label %495

495:                                              ; preds = %489
  store i32 23, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %513

496:                                              ; preds = %480
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %11, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  br label %802

500:                                              ; preds = %489
  %501 = load i64, ptr %31, align 8, !tbaa !33
  %502 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %501) #7
  %503 = load i64, ptr %39, align 8, !tbaa !33
  %504 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %502, i64 noundef %503) #7
  %505 = load i32, ptr %504, align 4, !tbaa !36
  %506 = load i64, ptr %38, align 8, !tbaa !33
  %507 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %506) #7
  store i32 %505, ptr %507, align 4, !tbaa !36
  %508 = load i64, ptr %38, align 8, !tbaa !33
  %509 = add i64 %508, 1
  store i64 %509, ptr %38, align 8, !tbaa !33
  br label %510

510:                                              ; preds = %500
  %511 = load i64, ptr %39, align 8, !tbaa !33
  %512 = add i64 %511, 1
  store i64 %512, ptr %39, align 8, !tbaa !33
  br label %489, !llvm.loop !51

513:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  store i64 0, ptr %40, align 8, !tbaa !33
  br label %514

514:                                              ; preds = %531, %513
  %515 = load i64, ptr %40, align 8, !tbaa !33
  %516 = load i64, ptr %32, align 8, !tbaa !33
  %517 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %516) #7
  %518 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %517) #7
  %519 = icmp ult i64 %515, %518
  br i1 %519, label %521, label %520

520:                                              ; preds = %514
  store i32 26, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %534

521:                                              ; preds = %514
  %522 = load i64, ptr %32, align 8, !tbaa !33
  %523 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %522) #7
  %524 = load i64, ptr %40, align 8, !tbaa !33
  %525 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %523, i64 noundef %524) #7
  %526 = load i32, ptr %525, align 4, !tbaa !36
  %527 = load i64, ptr %38, align 8, !tbaa !33
  %528 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %527) #7
  store i32 %526, ptr %528, align 4, !tbaa !36
  %529 = load i64, ptr %38, align 8, !tbaa !33
  %530 = add i64 %529, 1
  store i64 %530, ptr %38, align 8, !tbaa !33
  br label %531

531:                                              ; preds = %521
  %532 = load i64, ptr %40, align 8, !tbaa !33
  %533 = add i64 %532, 1
  store i64 %533, ptr %40, align 8, !tbaa !33
  br label %514, !llvm.loop !52

534:                                              ; preds = %520
  %535 = load i8, ptr %33, align 1, !tbaa !9, !range !42, !noundef !43
  %536 = trunc i8 %535 to i1
  br i1 %536, label %555, label %537

537:                                              ; preds = %534
  %538 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 1
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %538, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %539 unwind label %549

539:                                              ; preds = %537
  %540 = load i32, ptr %22, align 4, !tbaa !36
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %22, align 4, !tbaa !36
  %542 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 1
  %543 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %542) #7
  %544 = load i32, ptr %22, align 4, !tbaa !36
  %545 = sext i32 %544 to i64
  %546 = icmp eq i64 %543, %545
  br i1 %546, label %547, label %548

547:                                              ; preds = %539
  br label %554

548:                                              ; preds = %539
  call void @__assert_fail(ptr noundef @.str.41, ptr noundef @.str.8, i32 noundef 641, ptr noundef @__PRETTY_FUNCTION__._ZN5gomea15linkage_model_t19learnLinkageTreeFOSESt6vectorIS1_IdSaIdEESaIS3_EEb) #6
  unreachable

549:                                              ; preds = %537
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %11, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %12, align 4
  br label %801

553:                                              ; No predecessors!
  br label %554

554:                                              ; preds = %553, %547
  br label %555

555:                                              ; preds = %554, %534
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %556 = load i64, ptr %31, align 8, !tbaa !33
  %557 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %556) #7
  %558 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %557) #7
  %559 = uitofp i64 %558 to double
  %560 = load i64, ptr %31, align 8, !tbaa !33
  %561 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %560) #7
  %562 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %561) #7
  %563 = load i64, ptr %32, align 8, !tbaa !33
  %564 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %563) #7
  %565 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %564) #7
  %566 = add i64 %562, %565
  %567 = uitofp i64 %566 to double
  %568 = fdiv double %559, %567
  store double %568, ptr %41, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %569 = load i64, ptr %32, align 8, !tbaa !33
  %570 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %569) #7
  %571 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %570) #7
  %572 = uitofp i64 %571 to double
  %573 = load i64, ptr %31, align 8, !tbaa !33
  %574 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %573) #7
  %575 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %574) #7
  %576 = load i64, ptr %32, align 8, !tbaa !33
  %577 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %576) #7
  %578 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %577) #7
  %579 = add i64 %575, %578
  %580 = uitofp i64 %579 to double
  %581 = fdiv double %572, %580
  store double %581, ptr %42, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  store i64 0, ptr %43, align 8, !tbaa !33
  br label %582

582:                                              ; preds = %629, %555
  %583 = load i64, ptr %43, align 8, !tbaa !33
  %584 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %585 = icmp ult i64 %583, %584
  br i1 %585, label %587, label %586

586:                                              ; preds = %582
  store i32 29, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %632

587:                                              ; preds = %582
  %588 = load i64, ptr %43, align 8, !tbaa !33
  %589 = load i64, ptr %31, align 8, !tbaa !33
  %590 = icmp ne i64 %588, %589
  br i1 %590, label %591, label %628

591:                                              ; preds = %587
  %592 = load i64, ptr %43, align 8, !tbaa !33
  %593 = load i64, ptr %32, align 8, !tbaa !33
  %594 = icmp ne i64 %592, %593
  br i1 %594, label %595, label %628

595:                                              ; preds = %591
  %596 = load double, ptr %41, align 8, !tbaa !38
  %597 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %598 = load i64, ptr %43, align 8, !tbaa !33
  %599 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %597, i64 noundef %598) #7
  %600 = load i64, ptr %31, align 8, !tbaa !33
  %601 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %599, i64 noundef %600) #7
  %602 = load double, ptr %601, align 8, !tbaa !38
  %603 = load double, ptr %42, align 8, !tbaa !38
  %604 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %605 = load i64, ptr %43, align 8, !tbaa !33
  %606 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %604, i64 noundef %605) #7
  %607 = load i64, ptr %32, align 8, !tbaa !33
  %608 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %606, i64 noundef %607) #7
  %609 = load double, ptr %608, align 8, !tbaa !38
  %610 = fmul double %603, %609
  %611 = call double @llvm.fmuladd.f64(double %596, double %602, double %610)
  %612 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %613 = load i64, ptr %43, align 8, !tbaa !33
  %614 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %612, i64 noundef %613) #7
  %615 = load i64, ptr %31, align 8, !tbaa !33
  %616 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %614, i64 noundef %615) #7
  store double %611, ptr %616, align 8, !tbaa !38
  %617 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %618 = load i64, ptr %43, align 8, !tbaa !33
  %619 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %617, i64 noundef %618) #7
  %620 = load i64, ptr %31, align 8, !tbaa !33
  %621 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %619, i64 noundef %620) #7
  %622 = load double, ptr %621, align 8, !tbaa !38
  %623 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %624 = load i64, ptr %31, align 8, !tbaa !33
  %625 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %623, i64 noundef %624) #7
  %626 = load i64, ptr %43, align 8, !tbaa !33
  %627 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %625, i64 noundef %626) #7
  store double %622, ptr %627, align 8, !tbaa !38
  br label %628

628:                                              ; preds = %595, %591, %587
  br label %629

629:                                              ; preds = %628
  %630 = load i64, ptr %43, align 8, !tbaa !33
  %631 = add i64 %630, 1
  store i64 %631, ptr %43, align 8, !tbaa !33
  br label %582, !llvm.loop !53

632:                                              ; preds = %586
  %633 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %634 = sub i64 %633, 1
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %634)
          to label %635 unwind label %644

635:                                              ; preds = %632
  %636 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  %637 = sub i64 %636, 1
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %637)
          to label %638 unwind label %644

638:                                              ; preds = %635
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  store i64 0, ptr %44, align 8, !tbaa !33
  br label %639

639:                                              ; preds = %660, %638
  %640 = load i64, ptr %44, align 8, !tbaa !33
  %641 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %642 = icmp ult i64 %640, %641
  br i1 %642, label %648, label %643

643:                                              ; preds = %639
  store i32 32, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %667

644:                                              ; preds = %784, %782, %680, %667, %635, %632
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %11, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %12, align 4
  br label %800

648:                                              ; preds = %639
  %649 = load i64, ptr %44, align 8, !tbaa !33
  %650 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %649) #7
  %651 = load i64, ptr %44, align 8, !tbaa !33
  %652 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %651) #7
  %653 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %652, ptr noundef nonnull align 8 dereferenceable(24) %650)
          to label %654 unwind label %663

654:                                              ; preds = %648
  %655 = load i64, ptr %44, align 8, !tbaa !33
  %656 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %655) #7
  %657 = load i32, ptr %656, align 4, !tbaa !36
  %658 = load i64, ptr %44, align 8, !tbaa !33
  %659 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %658) #7
  store i32 %657, ptr %659, align 4, !tbaa !36
  br label %660

660:                                              ; preds = %654
  %661 = load i64, ptr %44, align 8, !tbaa !33
  %662 = add i64 %661, 1
  store i64 %662, ptr %44, align 8, !tbaa !33
  br label %639, !llvm.loop !54

663:                                              ; preds = %648
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %11, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %800

667:                                              ; preds = %643
  %668 = load i64, ptr %31, align 8, !tbaa !33
  %669 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %668) #7
  %670 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %669, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %671 unwind label %644

671:                                              ; preds = %667
  %672 = load i32, ptr %22, align 4, !tbaa !36
  %673 = sub nsw i32 %672, 1
  %674 = load i64, ptr %31, align 8, !tbaa !33
  %675 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %674) #7
  store i32 %673, ptr %675, align 4, !tbaa !36
  %676 = load i64, ptr %32, align 8, !tbaa !33
  %677 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %678 = sub i64 %677, 1
  %679 = icmp ult i64 %676, %678
  br i1 %679, label %680, label %762

680:                                              ; preds = %671
  %681 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %682 = sub i64 %681, 1
  %683 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %682) #7
  %684 = load i64, ptr %32, align 8, !tbaa !33
  %685 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %684) #7
  %686 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %685, ptr noundef nonnull align 8 dereferenceable(24) %683)
          to label %687 unwind label %644

687:                                              ; preds = %680
  %688 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %689 = sub i64 %688, 1
  %690 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %689) #7
  %691 = load i32, ptr %690, align 4, !tbaa !36
  %692 = load i64, ptr %32, align 8, !tbaa !33
  %693 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %692) #7
  store i32 %691, ptr %693, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  store i64 0, ptr %45, align 8, !tbaa !33
  br label %694

694:                                              ; preds = %723, %687
  %695 = load i64, ptr %45, align 8, !tbaa !33
  %696 = load i64, ptr %32, align 8, !tbaa !33
  %697 = icmp ult i64 %695, %696
  br i1 %697, label %699, label %698

698:                                              ; preds = %694
  store i32 35, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %726

699:                                              ; preds = %694
  %700 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %701 = load i64, ptr %45, align 8, !tbaa !33
  %702 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %700, i64 noundef %701) #7
  %703 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %704 = sub i64 %703, 1
  %705 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %702, i64 noundef %704) #7
  %706 = load double, ptr %705, align 8, !tbaa !38
  %707 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %708 = load i64, ptr %45, align 8, !tbaa !33
  %709 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %707, i64 noundef %708) #7
  %710 = load i64, ptr %32, align 8, !tbaa !33
  %711 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %709, i64 noundef %710) #7
  store double %706, ptr %711, align 8, !tbaa !38
  %712 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %713 = load i64, ptr %45, align 8, !tbaa !33
  %714 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %712, i64 noundef %713) #7
  %715 = load i64, ptr %32, align 8, !tbaa !33
  %716 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %714, i64 noundef %715) #7
  %717 = load double, ptr %716, align 8, !tbaa !38
  %718 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %719 = load i64, ptr %32, align 8, !tbaa !33
  %720 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %718, i64 noundef %719) #7
  %721 = load i64, ptr %45, align 8, !tbaa !33
  %722 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %720, i64 noundef %721) #7
  store double %717, ptr %722, align 8, !tbaa !38
  br label %723

723:                                              ; preds = %699
  %724 = load i64, ptr %45, align 8, !tbaa !33
  %725 = add i64 %724, 1
  store i64 %725, ptr %45, align 8, !tbaa !33
  br label %694, !llvm.loop !55

726:                                              ; preds = %698
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %727 = load i64, ptr %32, align 8, !tbaa !33
  %728 = add i64 %727, 1
  store i64 %728, ptr %46, align 8, !tbaa !33
  br label %729

729:                                              ; preds = %758, %726
  %730 = load i64, ptr %46, align 8, !tbaa !33
  %731 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %732 = icmp ult i64 %730, %731
  br i1 %732, label %734, label %733

733:                                              ; preds = %729
  store i32 38, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %761

734:                                              ; preds = %729
  %735 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %736 = load i64, ptr %46, align 8, !tbaa !33
  %737 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %735, i64 noundef %736) #7
  %738 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %739 = sub i64 %738, 1
  %740 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %737, i64 noundef %739) #7
  %741 = load double, ptr %740, align 8, !tbaa !38
  %742 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %743 = load i64, ptr %32, align 8, !tbaa !33
  %744 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %742, i64 noundef %743) #7
  %745 = load i64, ptr %46, align 8, !tbaa !33
  %746 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %744, i64 noundef %745) #7
  store double %741, ptr %746, align 8, !tbaa !38
  %747 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %748 = load i64, ptr %32, align 8, !tbaa !33
  %749 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %747, i64 noundef %748) #7
  %750 = load i64, ptr %46, align 8, !tbaa !33
  %751 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %749, i64 noundef %750) #7
  %752 = load double, ptr %751, align 8, !tbaa !38
  %753 = getelementptr inbounds %"class.gomea::linkage_model_t", ptr %48, i32 0, i32 11
  %754 = load i64, ptr %46, align 8, !tbaa !33
  %755 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %753, i64 noundef %754) #7
  %756 = load i64, ptr %32, align 8, !tbaa !33
  %757 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %755, i64 noundef %756) #7
  store double %752, ptr %757, align 8, !tbaa !38
  br label %758

758:                                              ; preds = %734
  %759 = load i64, ptr %46, align 8, !tbaa !33
  %760 = add i64 %759, 1
  store i64 %760, ptr %46, align 8, !tbaa !33
  br label %729, !llvm.loop !56

761:                                              ; preds = %733
  br label %762

762:                                              ; preds = %761, %671
  store i64 0, ptr %38, align 8, !tbaa !33
  br label %763

763:                                              ; preds = %779, %762
  %764 = load i64, ptr %38, align 8, !tbaa !33
  %765 = load i64, ptr %29, align 8, !tbaa !33
  %766 = icmp ult i64 %764, %765
  br i1 %766, label %767, label %782

767:                                              ; preds = %763
  %768 = load i64, ptr %38, align 8, !tbaa !33
  %769 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %768) #7
  %770 = load i64, ptr %769, align 8, !tbaa !33
  %771 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %772 = sub i64 %771, 1
  %773 = icmp eq i64 %770, %772
  br i1 %773, label %774, label %778

774:                                              ; preds = %767
  %775 = load i64, ptr %32, align 8, !tbaa !33
  %776 = load i64, ptr %38, align 8, !tbaa !33
  %777 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %776) #7
  store i64 %775, ptr %777, align 8, !tbaa !33
  br label %782

778:                                              ; preds = %767
  br label %779

779:                                              ; preds = %778
  %780 = load i64, ptr %38, align 8, !tbaa !33
  %781 = add i64 %780, 1
  store i64 %781, ptr %38, align 8, !tbaa !33
  br label %763, !llvm.loop !57

782:                                              ; preds = %774, %763
  %783 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %784 unwind label %644

784:                                              ; preds = %782
  %785 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %786 unwind label %644

786:                                              ; preds = %784
  %787 = load i8, ptr %6, align 1, !tbaa !9, !range !42, !noundef !43
  %788 = trunc i8 %787 to i1
  br i1 %788, label %789, label %794

789:                                              ; preds = %786
  %790 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %791 = icmp eq i64 %790, 1
  br i1 %791, label %792, label %793

792:                                              ; preds = %789
  store i8 1, ptr %30, align 1, !tbaa !9
  br label %793

793:                                              ; preds = %792, %789
  br label %799

794:                                              ; preds = %786
  %795 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %796 = icmp eq i64 %795, 2
  br i1 %796, label %797, label %798

797:                                              ; preds = %794
  store i8 1, ptr %30, align 1, !tbaa !9
  br label %798

798:                                              ; preds = %797, %794
  br label %799

799:                                              ; preds = %798, %793
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #7
  br label %803

800:                                              ; preds = %663, %644
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %801

801:                                              ; preds = %800, %549
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #7
  br label %802

802:                                              ; preds = %801, %496
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #7
  br label %807

803:                                              ; preds = %799, %461
  store i32 0, ptr %26, align 4
  br label %804

804:                                              ; preds = %803, %479, %450, %448
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  %805 = load i32, ptr %26, align 4
  switch i32 %805, label %822 [
    i32 0, label %806
    i32 15, label %808
    i32 14, label %209
  ]

806:                                              ; preds = %804
  br label %209, !llvm.loop !50

807:                                              ; preds = %802, %423
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %809

808:                                              ; preds = %804, %209
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #7
  ret void

809:                                              ; preds = %807, %229
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %810

810:                                              ; preds = %809, %225
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #7
  br label %811

811:                                              ; preds = %810, %158
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %812

812:                                              ; preds = %811, %130, %115
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  br label %813

813:                                              ; preds = %812, %102
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  br label %814

814:                                              ; preds = %813, %98
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #7
  br label %815

815:                                              ; preds = %814, %94
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  br label %816

816:                                              ; preds = %815, %90
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #7
  br label %817

817:                                              ; preds = %816
  %818 = load ptr, ptr %11, align 8
  %819 = load i32, ptr %12, align 4
  %820 = insertvalue { ptr, i32 } poison, ptr %818, 0
  %821 = insertvalue { ptr, i32 } %820, i32 %819, 1
  resume { ptr, i32 } %821

822:                                              ; preds = %804
  unreachable
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEclEv(ptr noundef nonnull align 8 dereferenceable(5000)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN5gomea15linkage_model_t25determineNearestNeighbourEmRKSt6vectorIS1_IiSaIiEESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(232), i64 noundef, ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { noreturn nounwind }
attributes #7 = { 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 = !{!"bool", !7, i64 0}
!11 = !{!12, !22, i64 136}
!12 = !{!"_ZTSN5gomea15linkage_model_tE", !13, i64 8, !17, i64 32, !13, i64 40, !18, i64 64, !18, i64 88, !18, i64 112, !22, i64 136, !10, i64 140, !23, i64 144, !18, i64 152, !24, i64 176, !28, i64 200, !10, i64 224, !23, i64 228}
!13 = !{!"_ZTSSt6vectorIS_IiSaIiEESaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"long", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSN5gomea7linkage18linkage_model_typeE", !7, i64 0}
!23 = !{!"int", !7, i64 0}
!24 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorISt3setIiSt4lessIiESaIiEESaIS4_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!12, !17, i64 32}
!33 = !{!17, !17, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!23, !23, i64 0}
!37 = distinct !{!37, !35}
!38 = !{!39, !39, i64 0}
!39 = !{!"double", !7, i64 0}
!40 = distinct !{!40, !35}
!41 = distinct !{!41, !35}
!42 = !{i8 0, i8 2}
!43 = !{}
!44 = distinct !{!44, !35}
!45 = distinct !{!45, !35}
!46 = !{!12, !10, i64 224}
!47 = !{!12, !23, i64 228}
!48 = !{!12, !23, i64 144}
!49 = distinct !{!49, !35}
!50 = distinct !{!50, !35}
!51 = distinct !{!51, !35}
!52 = distinct !{!52, !35}
!53 = distinct !{!53, !35}
!54 = distinct !{!54, !35}
!55 = distinct !{!55, !35}
!56 = distinct !{!56, !35}
!57 = distinct !{!57, !35}


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

%"class.std::mersenne_twister_engine" = type { [624 x i64], i64 }
%"class.std::vector.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = 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 }
%"class.std::allocator.6" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"class.std::vector.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.8 = external hidden unnamed_addr constant [103 x i8], align 1
@_ZN5gomea5utils3rngE = external global %"class.std::mersenne_twister_engine", align 8
@.str.39 = external hidden unnamed_addr constant [30 x i8], align 1
@__PRETTY_FUNCTION__._ZN5gomea15linkage_model_t19learnLinkageTreeFOSESt6vectorIS1_IdSaIdEESaIS3_EEb = external hidden unnamed_addr constant [77 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [33 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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_(ptr, ptr, i32 noundef) local_unnamed_addr #3

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5gomea15linkage_model_t19learnLinkageTreeFOSESt6vectorIS1_IdSaIdEESaIS3_EEb(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef %1, i1 noundef zeroext %2) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::vector.4", align 8
  %5 = alloca %"class.std::vector.4", align 8
  %6 = alloca %"class.std::vector.4", align 8
  %7 = alloca %"class.std::allocator.6", align 1
  %8 = alloca %"class.std::vector", align 8
  %9 = alloca %"class.std::allocator.0", align 1
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca %"class.std::allocator.0", align 1
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::vector.45", align 8
  %14 = alloca %"class.std::vector.4", align 8
  %15 = alloca %"class.std::allocator.6", align 1
  %16 = getelementptr inbounds i8, ptr %0, i64 136
  %17 = load i32, ptr %16, align 8, !tbaa !5
  %18 = icmp eq i32 %17, 3
  br i1 %18, label %20, label %19

19:                                               ; preds = %3
  tail call void @__assert_fail(ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.8, i32 noundef 498, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5gomea15linkage_model_t19learnLinkageTreeFOSESt6vectorIS1_IdSaIdEESaIS3_EEb) #7
  unreachable

20:                                               ; preds = %3
  %21 = getelementptr inbounds i8, ptr %0, i64 8
  tail call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #8
  %22 = getelementptr inbounds i8, ptr %0, i64 32
  %23 = load i64, ptr %22, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %23, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %24 unwind label %36

24:                                               ; preds = %20
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  %25 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %26 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_(ptr %25, ptr %26, i32 noundef 0)
  %27 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %28 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  invoke void @_ZSt7shuffleIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEERSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEvT_SA_OT0_(ptr %27, ptr %28, ptr noundef nonnull align 8 dereferenceable(5000) @_ZN5gomea5utils3rngE)
          to label %29 unwind label %38

29:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #8
  %30 = load i64, ptr %22, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #8
  call void @_ZNSaISt6vectorIiSaIiEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %30, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %31 unwind label %40

31:                                               ; preds = %29
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #8
  %32 = load i64, ptr %22, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  call void @_ZNSaISt6vectorIiSaIiEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %32, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %33 unwind label %42

33:                                               ; preds = %31
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  %34 = load i64, ptr %22, align 8, !tbaa !30
  %.not298 = icmp eq i64 %34, 0
  br i1 %.not298, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %46, %33
  %.lcssa = phi i64 [ 0, %33 ], [ %48, %46 ]
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %.lcssa)
          to label %.preheader249 unwind label %53

.preheader249:                                    ; preds = %._crit_edge
  %35 = load i64, ptr %22, align 8, !tbaa !30
  %.not299 = icmp eq i64 %35, 0
  br i1 %.not299, label %._crit_edge263, label %.lr.ph257

36:                                               ; preds = %20
  %37 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  br label %417

38:                                               ; preds = %24
  %39 = landingpad { ptr, i32 }
          cleanup
  br label %416

40:                                               ; preds = %29
  %41 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  br label %415

42:                                               ; preds = %31
  %43 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  br label %414

.lr.ph:                                           ; preds = %33, %46
  %.0178254 = phi i64 [ %47, %46 ], [ 0, %33 ]
  %44 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0178254) #8
  %45 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0178254) #8
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 4 dereferenceable(4) %45)
          to label %46 unwind label %50

46:                                               ; preds = %.lr.ph
  %47 = add nuw i64 %.0178254, 1
  %48 = load i64, ptr %22, align 8, !tbaa !30
  %49 = icmp ult i64 %47, %48
  br i1 %49, label %.lr.ph, label %._crit_edge, !llvm.loop !31

50:                                               ; preds = %.lr.ph
  %51 = landingpad { ptr, i32 }
          cleanup
  br label %413

.preheader248:                                    ; preds = %60
  %indvars = trunc i64 %61 to i32
  %.not300 = icmp eq i64 %62, 0
  br i1 %.not300, label %._crit_edge263, label %.preheader247.lr.ph

.preheader247.lr.ph:                              ; preds = %.preheader248
  %52 = getelementptr inbounds i8, ptr %0, i64 176
  br label %.lr.ph260.preheader

53:                                               ; preds = %._crit_edge
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %413

.lr.ph257:                                        ; preds = %.preheader249, %60
  %.0199256 = phi i64 [ %61, %60 ], [ 0, %.preheader249 ]
  %55 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0199256) #8
  %56 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %.0199256) #8
  %57 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(24) %55)
          to label %58 unwind label %64

58:                                               ; preds = %.lr.ph257
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #8
  %59 = trunc i64 %.0199256 to i32
  store i32 %59, ptr %12, align 4, !tbaa !33
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %60 unwind label %66

60:                                               ; preds = %58
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  %61 = add nuw i64 %.0199256, 1
  %62 = load i64, ptr %22, align 8, !tbaa !30
  %63 = icmp ult i64 %61, %62
  br i1 %63, label %.lr.ph257, label %.preheader248, !llvm.loop !34

64:                                               ; preds = %.lr.ph257
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %413

66:                                               ; preds = %58
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  br label %413

.lr.ph260.preheader:                              ; preds = %._crit_edge261, %.preheader247.lr.ph
  %.0198262 = phi i64 [ 0, %.preheader247.lr.ph ], [ %76, %._crit_edge261 ]
  br label %.lr.ph260

._crit_edge263:                                   ; preds = %._crit_edge261, %.preheader249, %.preheader248
  %.0200.lcssa319 = phi i32 [ %indvars, %.preheader248 ], [ 0, %.preheader249 ], [ %indvars, %._crit_edge261 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #8
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %68 = load i64, ptr %22, align 8, !tbaa !30
  %69 = add i64 %68, 2
  invoke void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %69)
          to label %.preheader246 unwind label %101

.preheader246:                                    ; preds = %._crit_edge263
  %70 = getelementptr inbounds i8, ptr %0, i64 176
  %71 = getelementptr inbounds i8, ptr %0, i64 224
  %72 = getelementptr inbounds i8, ptr %0, i64 228
  %73 = getelementptr inbounds i8, ptr %0, i64 144
  %. = select i1 %2, i64 1, i64 2
  br label %.outer

.outer:                                           ; preds = %406, %.preheader246
  %.1201.ph = phi i32 [ %.2202, %406 ], [ %.0200.lcssa319, %.preheader246 ]
  %.0190.ph = phi i64 [ %232, %406 ], [ 0, %.preheader246 ]
  %.0183.ph = phi i8 [ %spec.select232, %406 ], [ 0, %.preheader246 ]
  br label %.outer324

._crit_edge261:                                   ; preds = %.lr.ph260
  %74 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %.0198262) #8
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %.0198262) #8
  store double 0.000000e+00, ptr %75, align 8, !tbaa !35
  %76 = add nuw i64 %.0198262, 1
  %77 = load i64, ptr %22, align 8, !tbaa !30
  %78 = icmp ult i64 %76, %77
  br i1 %78, label %.lr.ph260.preheader, label %._crit_edge263, !llvm.loop !37

.lr.ph260:                                        ; preds = %.lr.ph260.preheader, %.lr.ph260
  %.0196259 = phi i64 [ %92, %.lr.ph260 ], [ 0, %.lr.ph260.preheader ]
  %79 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0198262) #8
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef 0) #8
  %81 = load i32, ptr %80, align 4, !tbaa !33
  %82 = sext i32 %81 to i64
  %83 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %82) #8
  %84 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0196259) #8
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef 0) #8
  %86 = load i32, ptr %85, align 4, !tbaa !33
  %87 = sext i32 %86 to i64
  %88 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %87) #8
  %89 = load double, ptr %88, align 8, !tbaa !35
  %90 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %.0198262) #8
  %91 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %.0196259) #8
  store double %89, ptr %91, align 8, !tbaa !35
  %92 = add nuw i64 %.0196259, 1
  %93 = load i64, ptr %22, align 8, !tbaa !30
  %94 = icmp ult i64 %92, %93
  br i1 %94, label %.lr.ph260, label %._crit_edge261, !llvm.loop !38

.lr.ph360:                                        ; preds = %.outer324, %411
  %.0190359 = phi i64 [ %.5195, %411 ], [ %.0190.ph325, %.outer324 ]
  %95 = icmp eq i64 %.0190359, 0
  br i1 %95, label %96, label %105

96:                                               ; preds = %.lr.ph360
  %97 = invoke noundef i64 @_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEclEv(ptr noundef nonnull align 8 dereferenceable(5000) @_ZN5gomea5utils3rngE)
          to label %.thread320 unwind label %103

.thread320:                                       ; preds = %96
  %98 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %99 = urem i64 %97, %98
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  store i64 %99, ptr %100, align 8, !tbaa !39
  br label %.lr.ph266.preheader

101:                                              ; preds = %._crit_edge263
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %412

103:                                              ; preds = %96
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %412

105:                                              ; preds = %.lr.ph360
  %106 = icmp ult i64 %.0190359, 3
  br i1 %106, label %.lr.ph266.preheader, label %.preheader245.preheader

.lr.ph266.preheader:                              ; preds = %.thread320, %105
  %.2192264.ph = phi i64 [ %.0190359, %105 ], [ 1, %.thread320 ]
  br label %.lr.ph266

.lr.ph266:                                        ; preds = %.lr.ph266.preheader, %.lr.ph266
  %.2192264 = phi i64 [ %113, %.lr.ph266 ], [ %.2192264.ph, %.lr.ph266.preheader ]
  %107 = add nsw i64 %.2192264, -1
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %107) #8
  %109 = load i64, ptr %108, align 8, !tbaa !39
  %110 = call noundef i32 @_ZN5gomea15linkage_model_t25determineNearestNeighbourEmRKSt6vectorIS1_IiSaIiEESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(232) %0, i64 noundef %109, ptr noundef nonnull align 8 dereferenceable(24) %8)
  %111 = sext i32 %110 to i64
  %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.2192264) #8
  store i64 %111, ptr %112, align 8, !tbaa !39
  %113 = add i64 %.2192264, 1
  %exitcond.not = icmp eq i64 %113, 3
  br i1 %exitcond.not, label %.preheader245.preheader, label %.lr.ph266, !llvm.loop !40

.preheader245.preheader:                          ; preds = %.lr.ph266, %105
  %.3193.ph = phi i64 [ %.0190359, %105 ], [ 3, %.lr.ph266 ]
  br label %.preheader245

.preheader245:                                    ; preds = %.preheader245.preheader, %151
  %.3193 = phi i64 [ %152, %151 ], [ %.3193.ph, %.preheader245.preheader ]
  %114 = add i64 %.3193, -3
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %114) #8
  %116 = load i64, ptr %115, align 8, !tbaa !39
  %117 = add i64 %.3193, -1
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %117) #8
  %119 = load i64, ptr %118, align 8, !tbaa !39
  %.not = icmp eq i64 %116, %119
  br i1 %.not, label %._crit_edge316, label %120

120:                                              ; preds = %.preheader245
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %117) #8
  %122 = load i64, ptr %121, align 8, !tbaa !39
  %123 = call noundef i32 @_ZN5gomea15linkage_model_t25determineNearestNeighbourEmRKSt6vectorIS1_IiSaIiEESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(232) %0, i64 noundef %122, ptr noundef nonnull align 8 dereferenceable(24) %8)
  %124 = sext i32 %123 to i64
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.3193) #8
  store i64 %124, ptr %125, align 8, !tbaa !39
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %117) #8
  %127 = load i64, ptr %126, align 8, !tbaa !39
  %128 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %127) #8
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.3193) #8
  %130 = load i64, ptr %129, align 8, !tbaa !39
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %130) #8
  %132 = load double, ptr %131, align 8, !tbaa !35
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %117) #8
  %134 = load i64, ptr %133, align 8, !tbaa !39
  %135 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %134) #8
  %136 = add i64 %.3193, -2
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %136) #8
  %138 = load i64, ptr %137, align 8, !tbaa !39
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %135, i64 noundef %138) #8
  %140 = load double, ptr %139, align 8, !tbaa !35
  %141 = fcmp oeq double %132, %140
  br i1 %141, label %142, label %151

142:                                              ; preds = %120
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.3193) #8
  %144 = load i64, ptr %143, align 8, !tbaa !39
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %136) #8
  %146 = load i64, ptr %145, align 8, !tbaa !39
  %.not212 = icmp eq i64 %144, %146
  br i1 %.not212, label %151, label %147

147:                                              ; preds = %142
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %136) #8
  %149 = load i64, ptr %148, align 8, !tbaa !39
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.3193) #8
  store i64 %149, ptr %150, align 8, !tbaa !39
  br label %151

151:                                              ; preds = %147, %142, %120
  %152 = add i64 %.3193, 1
  %153 = load i64, ptr %22, align 8, !tbaa !30
  %154 = icmp ugt i64 %152, %153
  br i1 %154, label %._crit_edge316, label %.preheader245, !llvm.loop !41

._crit_edge316:                                   ; preds = %.preheader245, %151
  %.pre-phi = phi i64 [ %.3193, %151 ], [ %117, %.preheader245 ]
  %.4194 = phi i64 [ %152, %151 ], [ %.3193, %.preheader245 ]
  %155 = add i64 %.4194, -2
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %155) #8
  %157 = load i64, ptr %156, align 8, !tbaa !39
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.pre-phi) #8
  %159 = load i64, ptr %158, align 8, !tbaa !39
  %160 = load i8, ptr %71, align 8, !tbaa !42, !range !43, !noundef !44
  %161 = trunc nuw i8 %160 to i1
  br i1 %161, label %162, label %173

162:                                              ; preds = %._crit_edge316
  %163 = load i32, ptr %72, align 4, !tbaa !45
  %switch233 = icmp ult i32 %163, 2
  %164 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %159) #8
  %165 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %157) #8
  %166 = load double, ptr %165, align 8, !tbaa !35
  br i1 %switch233, label %167, label %170

167:                                              ; preds = %162
  %168 = fcmp ult double %166, 0x3FEFFFFDE7210BE9
  br i1 %168, label %173, label %169

169:                                              ; preds = %167
  br label %173

170:                                              ; preds = %162
  %171 = fcmp oeq double %166, 0.000000e+00
  br i1 %171, label %172, label %173

172:                                              ; preds = %170
  br label %173

173:                                              ; preds = %169, %167, %172, %170, %._crit_edge316
  %.0180 = phi i1 [ true, %169 ], [ false, %167 ], [ true, %172 ], [ false, %170 ], [ false, %._crit_edge316 ]
  %174 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %.not213 = icmp ult i64 %159, %174
  br i1 %.not213, label %175, label %186

175:                                              ; preds = %173
  %176 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %.not214 = icmp ult i64 %157, %176
  br i1 %.not214, label %177, label %186

177:                                              ; preds = %175
  %178 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %157) #8
  %179 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %178) #8
  %180 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %159) #8
  %181 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %180) #8
  %182 = add i64 %181, %179
  %183 = load i32, ptr %73, align 8, !tbaa !46
  %184 = sext i32 %183 to i64
  %185 = icmp ugt i64 %182, %184
  br i1 %185, label %186, label %229

186:                                              ; preds = %177, %175, %173
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  store i64 0, ptr %187, align 8, !tbaa !39
  %188 = load i32, ptr %73, align 8, !tbaa !46
  %189 = sext i32 %188 to i64
  %190 = load i64, ptr %22, align 8, !tbaa !30
  %191 = icmp ugt i64 %190, %189
  br i1 %191, label %.preheader, label %411, !llvm.loop !47

.preheader:                                       ; preds = %186
  %192 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %193 = icmp ugt i64 %192, 1
  br i1 %193, label %.lr.ph295, label %.thread

._crit_edge296:                                   ; preds = %226
  %194 = trunc nuw i8 %.2185 to i1
  br i1 %194, label %.thread, label %.outer324

.outer324:                                        ; preds = %.outer, %._crit_edge296
  %.0190.ph325 = phi i64 [ %.0190.ph, %.outer ], [ 1, %._crit_edge296 ]
  %.0183.ph326 = phi i8 [ %.0183.ph, %.outer ], [ %.2185, %._crit_edge296 ]
  %195 = trunc nuw i8 %.0183.ph326 to i1
  br i1 %195, label %.thread, label %.lr.ph360

.lr.ph295:                                        ; preds = %.preheader, %226
  %indvars.iv = phi i64 [ %indvars.iv.next, %226 ], [ 1, %.preheader ]
  %.1184293 = phi i8 [ %.2185, %226 ], [ 1, %.preheader ]
  %196 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv) #8
  %197 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %196) #8
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  %199 = load i64, ptr %198, align 8, !tbaa !39
  %200 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %199) #8
  %201 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %200) #8
  %202 = add i64 %201, %197
  %203 = load i32, ptr %73, align 8, !tbaa !46
  %204 = sext i32 %203 to i64
  %.not222 = icmp ugt i64 %202, %204
  br i1 %.not222, label %216, label %205

205:                                              ; preds = %.lr.ph295
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  %207 = load i64, ptr %206, align 8, !tbaa !39
  %208 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv) #8
  %209 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %208) #8
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  %211 = load i64, ptr %210, align 8, !tbaa !39
  %212 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %211) #8
  %213 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %212) #8
  %214 = trunc nuw nsw i64 %indvars.iv to i32
  %215 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, i32 noundef %214, i64 noundef %207, i64 noundef %209, i64 noundef %213)
  br label %216

216:                                              ; preds = %205, %.lr.ph295
  %.2185 = phi i8 [ 0, %205 ], [ %.1184293, %.lr.ph295 ]
  %217 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv) #8
  %218 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #8
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  %220 = load i64, ptr %219, align 8, !tbaa !39
  %221 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %220) #8
  %222 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %221) #8
  %223 = icmp ult i64 %218, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %216
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  store i64 %indvars.iv, ptr %225, align 8, !tbaa !39
  br label %226

226:                                              ; preds = %216, %224
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %227 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %228 = icmp ugt i64 %227, %indvars.iv.next
  br i1 %228, label %.lr.ph295, label %._crit_edge296, !llvm.loop !48

229:                                              ; preds = %177
  %230 = icmp ugt i64 %157, %159
  %sext = shl i64 %157, 32
  %231 = ashr exact i64 %sext, 32
  %.0181 = select i1 %230, i64 %231, i64 %159
  %232 = add i64 %.4194, -3
  %233 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %234 = icmp ult i64 %.0181, %233
  br i1 %234, label %235, label %411

235:                                              ; preds = %229
  %.0182.le = call i64 @llvm.umin.i64(i64 %157, i64 %159)
  %236 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0182.le) #8
  %237 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %236) #8
  %238 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0181) #8
  %239 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %238) #8
  %240 = add i64 %239, %237
  %241 = trunc i64 %240 to i32
  %242 = load i32, ptr %73, align 8, !tbaa !46
  %243 = icmp slt i32 %242, %241
  br i1 %243, label %.thread, label %244

244:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #8
  %245 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0182.le) #8
  %246 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %245) #8
  %247 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0181) #8
  %248 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %247) #8
  %249 = add i64 %248, %246
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %249, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %250 unwind label %255

250:                                              ; preds = %244
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  %251 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0182.le) #8
  %252 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %251) #8
  %.not302 = icmp eq i64 %252, 0
  br i1 %.not302, label %.preheader244, label %.lr.ph271

.preheader244:                                    ; preds = %.lr.ph271, %250
  %.0175.lcssa = phi i64 [ 0, %250 ], [ %261, %.lr.ph271 ]
  %253 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0181) #8
  %254 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %253) #8
  %.not303 = icmp eq i64 %254, 0
  br i1 %.not303, label %._crit_edge276, label %.lr.ph275

255:                                              ; preds = %244
  %256 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  br label %410

.lr.ph271:                                        ; preds = %250, %.lr.ph271
  %.0174269 = phi i64 [ %261, %.lr.ph271 ], [ 0, %250 ]
  %257 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0182.le) #8
  %258 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef %.0174269) #8
  %259 = load i32, ptr %258, align 4, !tbaa !33
  %260 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %.0174269) #8
  store i32 %259, ptr %260, align 4, !tbaa !33
  %261 = add nuw i64 %.0174269, 1
  %262 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0182.le) #8
  %263 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %262) #8
  %264 = icmp ult i64 %261, %263
  br i1 %264, label %.lr.ph271, label %.preheader244, !llvm.loop !49

._crit_edge276:                                   ; preds = %.lr.ph275, %.preheader244
  br i1 %.0180, label %283, label %274

.lr.ph275:                                        ; preds = %.preheader244, %.lr.ph275
  %.0173274 = phi i64 [ %270, %.lr.ph275 ], [ 0, %.preheader244 ]
  %.1176273 = phi i64 [ %269, %.lr.ph275 ], [ %.0175.lcssa, %.preheader244 ]
  %265 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0181) #8
  %266 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %265, i64 noundef %.0173274) #8
  %267 = load i32, ptr %266, align 4, !tbaa !33
  %268 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %.1176273) #8
  store i32 %267, ptr %268, align 4, !tbaa !33
  %269 = add i64 %.1176273, 1
  %270 = add nuw i64 %.0173274, 1
  %271 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0181) #8
  %272 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %271) #8
  %273 = icmp ult i64 %270, %272
  br i1 %273, label %.lr.ph275, label %._crit_edge276, !llvm.loop !50

274:                                              ; preds = %._crit_edge276
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %275 unwind label %281

275:                                              ; preds = %274
  %276 = add nsw i32 %.1201.ph, 1
  %277 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %278 = sext i32 %276 to i64
  %279 = icmp eq i64 %277, %278
  br i1 %279, label %283, label %280

280:                                              ; preds = %275
  call void @__assert_fail(ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.8, i32 noundef 641, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5gomea15linkage_model_t19learnLinkageTreeFOSESt6vectorIS1_IdSaIdEESaIS3_EEb) #7
  unreachable

281:                                              ; preds = %274
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %409

283:                                              ; preds = %275, %._crit_edge276
  %.2202 = phi i32 [ %.1201.ph, %._crit_edge276 ], [ %276, %275 ]
  %284 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0182.le) #8
  %285 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %284) #8
  %286 = uitofp i64 %285 to double
  %287 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0182.le) #8
  %288 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %287) #8
  %289 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0181) #8
  %290 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %289) #8
  %291 = add i64 %290, %288
  %292 = uitofp i64 %291 to double
  %293 = fdiv double %286, %292
  %294 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0181) #8
  %295 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %294) #8
  %296 = uitofp i64 %295 to double
  %297 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0182.le) #8
  %298 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %297) #8
  %299 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0181) #8
  %300 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %299) #8
  %301 = add i64 %300, %298
  %302 = uitofp i64 %301 to double
  %303 = fdiv double %296, %302
  %304 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %.not304 = icmp eq i64 %304, 0
  br i1 %.not304, label %._crit_edge280, label %.lr.ph279

._crit_edge280:                                   ; preds = %323, %283
  %305 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %306 = add i64 %305, -1
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %306)
          to label %327 unwind label %333

.lr.ph279:                                        ; preds = %283, %323
  %.0159277 = phi i64 [ %324, %323 ], [ 0, %283 ]
  %.not220 = icmp eq i64 %.0159277, %.0182.le
  %.not221 = icmp eq i64 %.0159277, %.0181
  %or.cond = select i1 %.not220, i1 true, i1 %.not221
  br i1 %or.cond, label %323, label %307

307:                                              ; preds = %.lr.ph279
  %308 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0159277) #8
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %308, i64 noundef %.0182.le) #8
  %310 = load double, ptr %309, align 8, !tbaa !35
  %311 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0159277) #8
  %312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef %.0181) #8
  %313 = load double, ptr %312, align 8, !tbaa !35
  %314 = fmul double %303, %313
  %315 = call double @llvm.fmuladd.f64(double %293, double %310, double %314)
  %316 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0159277) #8
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %316, i64 noundef %.0182.le) #8
  store double %315, ptr %317, align 8, !tbaa !35
  %318 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0159277) #8
  %319 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %318, i64 noundef %.0182.le) #8
  %320 = load double, ptr %319, align 8, !tbaa !35
  %321 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0182.le) #8
  %322 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %321, i64 noundef %.0159277) #8
  store double %320, ptr %322, align 8, !tbaa !35
  br label %323

323:                                              ; preds = %.lr.ph279, %307
  %324 = add nuw i64 %.0159277, 1
  %325 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %326 = icmp ult i64 %324, %325
  br i1 %326, label %.lr.ph279, label %._crit_edge280, !llvm.loop !51

327:                                              ; preds = %._crit_edge280
  %328 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %329 = add i64 %328, -1
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %329)
          to label %.preheader243 unwind label %333

.preheader243:                                    ; preds = %327
  %330 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  %.not305 = icmp eq i64 %330, 0
  br i1 %.not305, label %._crit_edge283, label %.lr.ph282

._crit_edge283:                                   ; preds = %338, %.preheader243
  %331 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0182.le) #8
  %332 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %331, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %347 unwind label %333

333:                                              ; preds = %404, %.loopexit, %353, %._crit_edge283, %327, %._crit_edge280
  %334 = landingpad { ptr, i32 }
          cleanup
  br label %409

.lr.ph282:                                        ; preds = %.preheader243, %338
  %.0158281 = phi i64 [ %342, %338 ], [ 0, %.preheader243 ]
  %335 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0158281) #8
  %336 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0158281) #8
  %337 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %336, ptr noundef nonnull align 8 dereferenceable(24) %335)
          to label %338 unwind label %345

338:                                              ; preds = %.lr.ph282
  %339 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %.0158281) #8
  %340 = load i32, ptr %339, align 4, !tbaa !33
  %341 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0158281) #8
  store i32 %340, ptr %341, align 4, !tbaa !33
  %342 = add nuw i64 %.0158281, 1
  %343 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  %344 = icmp ult i64 %342, %343
  br i1 %344, label %.lr.ph282, label %._crit_edge283, !llvm.loop !52

345:                                              ; preds = %.lr.ph282
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %409

347:                                              ; preds = %._crit_edge283
  %348 = add nsw i32 %.2202, -1
  %349 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0182.le) #8
  store i32 %348, ptr %349, align 4, !tbaa !33
  %350 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %351 = add i64 %350, -1
  %352 = icmp ult i64 %.0181, %351
  br i1 %352, label %353, label %.loopexit242

353:                                              ; preds = %347
  %354 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %355 = add i64 %354, -1
  %356 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %355) #8
  %357 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0181) #8
  %358 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %357, ptr noundef nonnull align 8 dereferenceable(24) %356)
          to label %359 unwind label %333

359:                                              ; preds = %353
  %360 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %361 = add i64 %360, -1
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %361) #8
  %363 = load i32, ptr %362, align 4, !tbaa !33
  %364 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0181) #8
  store i32 %363, ptr %364, align 4, !tbaa !33
  %.not306 = icmp eq i64 %.0181, 0
  br i1 %.not306, label %.preheader241, label %.lr.ph286

.preheader241:                                    ; preds = %.lr.ph286, %359
  %.0287 = add i64 %.0181, 1
  %365 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  %366 = icmp ult i64 %.0287, %365
  br i1 %366, label %.lr.ph289, label %.loopexit242

.lr.ph286:                                        ; preds = %359, %.lr.ph286
  %.0157284 = phi i64 [ %379, %.lr.ph286 ], [ 0, %359 ]
  %367 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0157284) #8
  %368 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %369 = add i64 %368, -1
  %370 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %369) #8
  %371 = load double, ptr %370, align 8, !tbaa !35
  %372 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0157284) #8
  %373 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef %.0181) #8
  store double %371, ptr %373, align 8, !tbaa !35
  %374 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0157284) #8
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %374, i64 noundef %.0181) #8
  %376 = load double, ptr %375, align 8, !tbaa !35
  %377 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0181) #8
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %377, i64 noundef %.0157284) #8
  store double %376, ptr %378, align 8, !tbaa !35
  %379 = add nuw i64 %.0157284, 1
  %exitcond314.not = icmp eq i64 %379, %.0181
  br i1 %exitcond314.not, label %.preheader241, label %.lr.ph286, !llvm.loop !53

.lr.ph289:                                        ; preds = %.preheader241, %.lr.ph289
  %.0288 = phi i64 [ %.0, %.lr.ph289 ], [ %.0287, %.preheader241 ]
  %380 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0288) #8
  %381 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %382 = add i64 %381, -1
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %380, i64 noundef %382) #8
  %384 = load double, ptr %383, align 8, !tbaa !35
  %385 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0181) #8
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %385, i64 noundef %.0288) #8
  store double %384, ptr %386, align 8, !tbaa !35
  %387 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0181) #8
  %388 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %387, i64 noundef %.0288) #8
  %389 = load double, ptr %388, align 8, !tbaa !35
  %390 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0288) #8
  %391 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %390, i64 noundef %.0181) #8
  store double %389, ptr %391, align 8, !tbaa !35
  %.0 = add nuw i64 %.0288, 1
  %392 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  %393 = icmp ult i64 %.0, %392
  br i1 %393, label %.lr.ph289, label %.loopexit242, !llvm.loop !54

.loopexit242:                                     ; preds = %.lr.ph289, %.preheader241, %347
  %.not307 = icmp eq i64 %232, 0
  br i1 %.not307, label %.loopexit, label %.lr.ph292

.lr.ph292:                                        ; preds = %.loopexit242, %401
  %.2177290 = phi i64 [ %402, %401 ], [ 0, %.loopexit242 ]
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.2177290) #8
  %395 = load i64, ptr %394, align 8, !tbaa !39
  %396 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %397 = add i64 %396, -1
  %398 = icmp eq i64 %395, %397
  br i1 %398, label %399, label %401

399:                                              ; preds = %.lr.ph292
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.2177290) #8
  store i64 %.0181, ptr %400, align 8, !tbaa !39
  br label %.loopexit

401:                                              ; preds = %.lr.ph292
  %402 = add nuw i64 %.2177290, 1
  %exitcond315.not = icmp eq i64 %402, %232
  br i1 %exitcond315.not, label %.loopexit, label %.lr.ph292, !llvm.loop !55

.loopexit:                                        ; preds = %401, %.loopexit242, %399
  %403 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %404 unwind label %333

404:                                              ; preds = %.loopexit
  %405 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %406 unwind label %333

406:                                              ; preds = %404
  %407 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %408 = icmp eq i64 %407, %.
  %spec.select232 = select i1 %408, i8 1, i8 %.0183.ph326
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  br label %.outer

409:                                              ; preds = %333, %345, %281
  %.pn.pn = phi { ptr, i32 } [ %282, %281 ], [ %346, %345 ], [ %334, %333 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  br label %410

410:                                              ; preds = %409, %255
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %409 ], [ %256, %255 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  br label %412

411:                                              ; preds = %229, %186
  %.5195 = phi i64 [ 1, %186 ], [ %232, %229 ]
  br i1 %195, label %.thread, label %.lr.ph360

.thread:                                          ; preds = %235, %.preheader, %._crit_edge296, %.outer324, %411
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  ret void

412:                                              ; preds = %103, %410, %101
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %102, %101 ], [ %.pn.pn.pn, %410 ], [ %104, %103 ]
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  br label %413

413:                                              ; preds = %412, %66, %64, %53, %50
  %.pn226 = phi { ptr, i32 } [ %51, %50 ], [ %54, %53 ], [ %.pn.pn.pn.pn.pn, %412 ], [ %67, %66 ], [ %65, %64 ]
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  br label %414

414:                                              ; preds = %413, %42
  %.pn226.pn = phi { ptr, i32 } [ %.pn226, %413 ], [ %43, %42 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  br label %415

415:                                              ; preds = %414, %40
  %.pn226.pn.pn = phi { ptr, i32 } [ %.pn226.pn, %414 ], [ %41, %40 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  br label %416

416:                                              ; preds = %415, %38
  %.pn226.pn.pn.pn = phi { ptr, i32 } [ %.pn226.pn.pn, %415 ], [ %39, %38 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  br label %417

417:                                              ; preds = %416, %36
  %.pn226.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn226.pn.pn.pn, %416 ], [ %37, %36 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  resume { ptr, i32 } %.pn226.pn.pn.pn.pn
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEclEv(ptr noundef nonnull align 8 dereferenceable(5000)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umin.i64(i64, i64) #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind }
attributes #8 = { 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, !19, i64 136}
!6 = !{!"_ZTSN5gomea15linkage_model_tE", !7, i64 8, !14, i64 32, !7, i64 40, !15, i64 64, !15, i64 88, !15, i64 112, !19, i64 136, !20, i64 140, !21, i64 144, !15, i64 152, !22, i64 176, !26, i64 200, !20, i64 224, !21, i64 228}
!7 = !{!"_ZTSSt6vectorIS_IiSaIiEESaIS1_EE", !8, i64 0}
!8 = !{!"_ZTSSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE", !9, i64 0}
!9 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE12_Vector_implE", !10, i64 0}
!10 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"long", !12, i64 0}
!15 = !{!"_ZTSSt6vectorIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!19 = !{!"_ZTSN5gomea7linkage18linkage_model_typeE", !12, i64 0}
!20 = !{!"bool", !12, i64 0}
!21 = !{!"int", !12, i64 0}
!22 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!26 = !{!"_ZTSSt6vectorISt3setIiSt4lessIiESaIiEESaIS4_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt3setIiSt4lessIiESaIiEESaIS4_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!30 = !{!6, !14, i64 32}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!21, !21, i64 0}
!34 = distinct !{!34, !32}
!35 = !{!36, !36, i64 0}
!36 = !{!"double", !12, i64 0}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !32}
!39 = !{!14, !14, i64 0}
!40 = distinct !{!40, !32}
!41 = distinct !{!41, !32}
!42 = !{!6, !20, i64 224}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!6, !21, i64 228}
!46 = !{!6, !21, i64 144}
!47 = distinct !{!47, !32}
!48 = distinct !{!48, !32}
!49 = distinct !{!49, !32}
!50 = distinct !{!50, !32}
!51 = distinct !{!51, !32}
!52 = distinct !{!52, !32}
!53 = distinct !{!53, !32}
!54 = distinct !{!54, !32}
!55 = distinct !{!55, !32}


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