; LLVM IR from sp-nitech/SPTK :: src/generation (nonrecursive_maximum_likelihood_parameter_generation)

; 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::vector.16" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.20" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.3" = type { i8 }
%"class.std::allocator" = type { i8 }
%"class.std::vector.6" = type { %"struct.std::_Vector_base.7" }
%"struct.std::_Vector_base.7" = type { %"struct.std::_Vector_base<sptk::SymmetricMatrix, std::allocator<sptk::SymmetricMatrix>>::_Vector_impl" }
%"struct.std::_Vector_base<sptk::SymmetricMatrix, std::allocator<sptk::SymmetricMatrix>>::_Vector_impl" = type { %"struct.std::_Vector_base<sptk::SymmetricMatrix, std::allocator<sptk::SymmetricMatrix>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sptk::SymmetricMatrix, std::allocator<sptk::SymmetricMatrix>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.sptk::SymmetricMatrix" = type { ptr, i32, %"class.std::vector.1", %"class.std::vector.11" }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl" }
%"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl" = type { %"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.8" = type { i8 }
%"class.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>
%"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration" = type { ptr, i32, %"class.std::vector", i8, double, i8, i32 }

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK4sptk48NonrecursiveMaximumLikelihoodParameterGeneration3RunERKSt6vectorIS1_IdSaIdEESaIS3_EERKS1_INS_15SymmetricMatrixESaIS8_EEPS5_(ptr noundef nonnull align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef %3) #3 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::vector.16", align 8
  %16 = alloca i8, align 1
  %17 = alloca %"class.std::allocator.20", align 1
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"struct.std::_Bit_reference", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"struct.std::_Bit_iterator", align 8
  %24 = alloca { ptr, i32 }, align 8
  %25 = alloca %"struct.std::_Bit_iterator", align 8
  %26 = alloca { ptr, i32 }, align 8
  %27 = alloca i8, align 1
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::vector", align 8
  %32 = alloca %"class.std::vector.1", align 8
  %33 = alloca %"class.std::allocator.3", align 1
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"class.std::vector.6", align 8
  %36 = alloca %"class.sptk::SymmetricMatrix", align 8
  %37 = alloca %"class.std::allocator.8", align 1
  %38 = alloca %"class.std::vector.1", align 8
  %39 = alloca %"class.std::allocator.3", align 1
  %40 = alloca %"class.std::vector", align 8
  %41 = alloca %"class.std::vector.1", align 8
  %42 = alloca %"class.std::allocator.3", align 1
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca %"class.std::vector.1", align 8
  %45 = alloca %"class.std::allocator.3", align 1
  %46 = alloca %"class.std::vector.1", align 8
  %47 = alloca %"class.std::allocator.3", align 1
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca %"struct.std::_Bit_reference", align 8
  %52 = alloca %"class.sptk::SymmetricMatrix", align 8
  %53 = alloca ptr, align 8
  %54 = alloca i32, align 4
  %55 = alloca i8, align 1
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca ptr, align 8
  %62 = alloca %"struct.std::_Bit_reference", align 8
  %63 = alloca double, align 8
  %64 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %65 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %66 = alloca i32, align 4
  %67 = alloca double, align 8
  %68 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %69 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca double, align 8
  %80 = alloca i32, align 4
  %81 = alloca double, align 8
  %82 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %83 = alloca i32, align 4
  %84 = alloca ptr, align 8
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca double, align 8
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca ptr, align 8
  %97 = alloca ptr, align 8
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca ptr, align 8
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca ptr, align 8
  %104 = alloca %"struct.std::_Bit_reference", align 8
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %107 = load ptr, ptr %6, align 8
  %108 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 5
  %109 = load i8, ptr %108, align 8, !tbaa !9, !range !18, !noundef !19
  %110 = trunc i8 %109 to i1
  br i1 %110, label %111, label %123

111:                                              ; preds = %4
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = call noundef zeroext i1 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #7
  br i1 %113, label %123, label %114

114:                                              ; preds = %111
  %115 = load ptr, ptr %7, align 8, !tbaa !5
  %116 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #7
  %117 = load ptr, ptr %8, align 8, !tbaa !5
  %118 = call noundef i64 @_ZNKSt6vectorIN4sptk15SymmetricMatrixESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %117) #7
  %119 = icmp ne i64 %116, %118
  br i1 %119, label %123, label %120

120:                                              ; preds = %114
  %121 = load ptr, ptr %9, align 8, !tbaa !5
  %122 = icmp eq ptr null, %121
  br i1 %122, label %123, label %124

123:                                              ; preds = %120, %114, %111, %4
  store i1 false, ptr %5, align 1
  br label %1211

124:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  %125 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 2
  %126 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %125) #7
  %127 = trunc i64 %126 to i32
  store i32 %127, ptr %10, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  %128 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 1
  %129 = load i32, ptr %128, align 8, !tbaa !21
  %130 = add nsw i32 %129, 1
  store i32 %130, ptr %11, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  %131 = load i32, ptr %11, align 4, !tbaa !20
  %132 = load i32, ptr %10, align 4, !tbaa !20
  %133 = mul nsw i32 %131, %132
  store i32 %133, ptr %12, align 4, !tbaa !20
  %134 = load ptr, ptr %7, align 8, !tbaa !5
  %135 = load i32, ptr %12, align 4, !tbaa !20
  %136 = call noundef zeroext i1 @_ZN12_GLOBAL__N_19CheckSizeERKSt6vectorIS0_IdSaIdEESaIS2_EEi(ptr noundef nonnull align 8 dereferenceable(24) %134, i32 noundef %135)
  br i1 %136, label %137, label %141

137:                                              ; preds = %124
  %138 = load ptr, ptr %8, align 8, !tbaa !5
  %139 = load i32, ptr %12, align 4, !tbaa !20
  %140 = call noundef zeroext i1 @_ZN12_GLOBAL__N_19CheckSizeERKSt6vectorIN4sptk15SymmetricMatrixESaIS2_EEi(ptr noundef nonnull align 8 dereferenceable(24) %138, i32 noundef %139)
  br i1 %140, label %142, label %141

141:                                              ; preds = %137, %124
  store i1 false, ptr %5, align 1
  store i32 1, ptr %13, align 4
  br label %1210

142:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #7
  %145 = trunc i64 %144 to i32
  store i32 %145, ptr %14, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 40, ptr %15) #7
  %146 = load i32, ptr %14, align 4, !tbaa !20
  %147 = sext i32 %146 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  store i8 1, ptr %16, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %15, i64 noundef %147, ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %148 unwind label %158

148:                                              ; preds = %142
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  %149 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 3
  %150 = load i8, ptr %149, align 8, !tbaa !23, !range !18, !noundef !19
  %151 = trunc i8 %150 to i1
  br i1 %151, label %152, label %191

152:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !20
  br label %153

153:                                              ; preds = %187, %152
  %154 = load i32, ptr %20, align 4, !tbaa !20
  %155 = load i32, ptr %14, align 4, !tbaa !20
  %156 = icmp slt i32 %154, %155
  br i1 %156, label %162, label %157

157:                                              ; preds = %153
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %190

158:                                              ; preds = %142
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %18, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %19, align 4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %1209

162:                                              ; preds = %153
  %163 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 4
  %164 = load double, ptr %163, align 8, !tbaa !24
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = load i32, ptr %20, align 4, !tbaa !20
  %167 = sext i32 %166 to i64
  %168 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %165, i64 noundef %167) #7
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %168, i64 noundef 0) #7
  %170 = load double, ptr %169, align 8, !tbaa !25
  %171 = fcmp oeq double %164, %170
  br i1 %171, label %172, label %186

172:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #7
  %173 = load i32, ptr %20, align 4, !tbaa !20
  %174 = sext i32 %173 to i64
  %175 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %15, i64 noundef %174)
          to label %176 unwind label %182

176:                                              ; preds = %172
  %177 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 0
  %178 = extractvalue { ptr, i64 } %175, 0
  store ptr %178, ptr %177, align 8
  %179 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 1
  %180 = extractvalue { ptr, i64 } %175, 1
  store i64 %180, ptr %179, align 8
  %181 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %21, i1 noundef zeroext false) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  br label %186

182:                                              ; preds = %172
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %18, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %1208

186:                                              ; preds = %176, %162
  br label %187

187:                                              ; preds = %186
  %188 = load i32, ptr %20, align 4, !tbaa !20
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %20, align 4, !tbaa !20
  br label %153, !llvm.loop !26

190:                                              ; preds = %157
  br label %191

191:                                              ; preds = %190, %148
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %192 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %15) #7
  store { ptr, i32 } %192, ptr %24, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %24, i64 12, i1 false)
  %193 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %15) #7
  store { ptr, i32 } %193, ptr %26, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %25, ptr align 8 %26, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  store i8 1, ptr %27, align 1, !tbaa !22
  %194 = getelementptr inbounds { ptr, i32 }, ptr %23, i32 0, i32 0
  %195 = load ptr, ptr %194, align 8
  %196 = getelementptr inbounds { ptr, i32 }, ptr %23, i32 0, i32 1
  %197 = load i32, ptr %196, align 8
  %198 = getelementptr inbounds { ptr, i32 }, ptr %25, i32 0, i32 0
  %199 = load ptr, ptr %198, align 8
  %200 = getelementptr inbounds { ptr, i32 }, ptr %25, i32 0, i32 1
  %201 = load i32, ptr %200, align 8
  %202 = invoke noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr %195, i32 %197, ptr %199, i32 %201, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %203 unwind label %251

203:                                              ; preds = %191
  %204 = trunc i64 %202 to i32
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  store i32 %204, ptr %22, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %205 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 6
  %206 = load i32, ptr %205, align 4, !tbaa !28
  %207 = mul nsw i32 2, %206
  %208 = add nsw i32 %207, 1
  store i32 %208, ptr %28, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %209 = load i32, ptr %11, align 4, !tbaa !20
  %210 = load i32, ptr %22, align 4, !tbaa !20
  %211 = mul nsw i32 %209, %210
  store i32 %211, ptr %29, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  %212 = load i32, ptr %11, align 4, !tbaa !20
  %213 = load i32, ptr %28, align 4, !tbaa !20
  %214 = mul nsw i32 %212, %213
  store i32 %214, ptr %30, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #7
  %215 = load i32, ptr %22, align 4, !tbaa !20
  %216 = sext i32 %215 to i64
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #7
  %217 = load i32, ptr %12, align 4, !tbaa !20
  %218 = sext i32 %217 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %218, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %219 unwind label %255

219:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %216, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %220 unwind label %259

220:                                              ; preds = %219
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #7
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #7
  %221 = load i32, ptr %22, align 4, !tbaa !20
  %222 = sext i32 %221 to i64
  call void @llvm.lifetime.start.p0(i64 64, ptr %36) #7
  %223 = load i32, ptr %12, align 4, !tbaa !20
  invoke void @_ZN4sptk15SymmetricMatrixC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %36, i32 noundef %223)
          to label %224 unwind label %264

224:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #7
  call void @_ZNSaIN4sptk15SymmetricMatrixEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  invoke void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEC2EmRKS1_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %222, ptr noundef nonnull align 8 dereferenceable(64) %36, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %225 unwind label %268

225:                                              ; preds = %224
  call void @_ZNSt15__new_allocatorIN4sptk15SymmetricMatrixEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %36) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #7
  %226 = load i32, ptr %29, align 4, !tbaa !20
  %227 = sext i32 %226 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %227, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %228 unwind label %273

228:                                              ; preds = %225
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #7
  %229 = load i32, ptr %29, align 4, !tbaa !20
  %230 = sext i32 %229 to i64
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #7
  %231 = load i32, ptr %30, align 4, !tbaa !20
  %232 = sext i32 %231 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %232, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %233 unwind label %277

233:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #7
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %230, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %234 unwind label %281

234:                                              ; preds = %233
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #7
  %235 = load i32, ptr %29, align 4, !tbaa !20
  %236 = sext i32 %235 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %236, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %237 unwind label %286

237:                                              ; preds = %234
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #7
  %238 = load i32, ptr %29, align 4, !tbaa !20
  %239 = sext i32 %238 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %239, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %240 unwind label %290

240:                                              ; preds = %237
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  %241 = load ptr, ptr %9, align 8, !tbaa !5
  %242 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %241) #7
  %243 = load i32, ptr %14, align 4, !tbaa !20
  %244 = sext i32 %243 to i64
  %245 = icmp ne i64 %242, %244
  br i1 %245, label %246, label %298

246:                                              ; preds = %240
  %247 = load ptr, ptr %9, align 8, !tbaa !5
  %248 = load i32, ptr %14, align 4, !tbaa !20
  %249 = sext i32 %248 to i64
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %249)
          to label %250 unwind label %294

250:                                              ; preds = %246
  br label %298

251:                                              ; preds = %191
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %18, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %1207

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

259:                                              ; preds = %219
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %18, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %19, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #7
  br label %263

263:                                              ; preds = %259, %255
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #7
  br label %1206

264:                                              ; preds = %220
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %18, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %19, align 4
  br label %272

268:                                              ; preds = %224
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %18, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %19, align 4
  call void @_ZNSt15__new_allocatorIN4sptk15SymmetricMatrixEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %36) #7
  br label %272

272:                                              ; preds = %268, %264
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #7
  br label %1205

273:                                              ; preds = %225
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %18, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %19, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  br label %1204

277:                                              ; preds = %228
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %18, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %19, align 4
  br label %285

281:                                              ; preds = %233
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %18, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %19, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  br label %285

285:                                              ; preds = %281, %277
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #7
  br label %1203

286:                                              ; preds = %234
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %18, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %19, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  br label %1202

290:                                              ; preds = %237
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %18, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %19, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  br label %1201

294:                                              ; preds = %246
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %18, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %19, align 4
  br label %1200

298:                                              ; preds = %250, %240
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  store i32 0, ptr %48, align 4, !tbaa !20
  br label %299

299:                                              ; preds = %326, %298
  %300 = load i32, ptr %48, align 4, !tbaa !20
  %301 = load i32, ptr %14, align 4, !tbaa !20
  %302 = icmp slt i32 %300, %301
  br i1 %302, label %304, label %303

303:                                              ; preds = %299
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %329

304:                                              ; preds = %299
  %305 = load ptr, ptr %9, align 8, !tbaa !5
  %306 = load i32, ptr %48, align 4, !tbaa !20
  %307 = sext i32 %306 to i64
  %308 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef %307) #7
  %309 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #7
  %310 = load i32, ptr %11, align 4, !tbaa !20
  %311 = sext i32 %310 to i64
  %312 = icmp ne i64 %309, %311
  br i1 %312, label %313, label %325

313:                                              ; preds = %304
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = load i32, ptr %48, align 4, !tbaa !20
  %316 = sext i32 %315 to i64
  %317 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %314, i64 noundef %316) #7
  %318 = load i32, ptr %11, align 4, !tbaa !20
  %319 = sext i32 %318 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef %319)
          to label %320 unwind label %321

320:                                              ; preds = %313
  br label %325

321:                                              ; preds = %313
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %18, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %1200

325:                                              ; preds = %320, %304
  br label %326

326:                                              ; preds = %325
  %327 = load i32, ptr %48, align 4, !tbaa !20
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %48, align 4, !tbaa !20
  br label %299, !llvm.loop !29

329:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  store i32 0, ptr %49, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  store i32 0, ptr %50, align 4, !tbaa !20
  br label %330

330:                                              ; preds = %594, %329
  %331 = load i32, ptr %49, align 4, !tbaa !20
  %332 = load i32, ptr %14, align 4, !tbaa !20
  %333 = icmp slt i32 %331, %332
  br i1 %333, label %335, label %334

334:                                              ; preds = %330
  store i32 8, ptr %13, align 4
  br label %599

335:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #7
  %336 = load i32, ptr %49, align 4, !tbaa !20
  %337 = sext i32 %336 to i64
  %338 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %15, i64 noundef %337)
          to label %339 unwind label %347

339:                                              ; preds = %335
  %340 = getelementptr inbounds { ptr, i64 }, ptr %51, i32 0, i32 0
  %341 = extractvalue { ptr, i64 } %338, 0
  store ptr %341, ptr %340, align 8
  %342 = getelementptr inbounds { ptr, i64 }, ptr %51, i32 0, i32 1
  %343 = extractvalue { ptr, i64 } %338, 1
  store i64 %343, ptr %342, align 8
  %344 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %51) #7
  %345 = xor i1 %344, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #7
  br i1 %345, label %346, label %351

346:                                              ; preds = %339
  br label %594

347:                                              ; preds = %335
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %18, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #7
  br label %601

351:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 64, ptr %52) #7
  invoke void @_ZN4sptk15SymmetricMatrixC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %52, i32 noundef 0)
          to label %352 unwind label %360

352:                                              ; preds = %351
  %353 = load ptr, ptr %8, align 8, !tbaa !5
  %354 = load i32, ptr %49, align 4, !tbaa !20
  %355 = sext i32 %354 to i64
  %356 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %353, i64 noundef %355) #7
  %357 = invoke noundef zeroext i1 @_ZNK4sptk15SymmetricMatrix6InvertEPS0_(ptr noundef nonnull align 8 dereferenceable(64) %356, ptr noundef %52)
          to label %358 unwind label %364

358:                                              ; preds = %352
  br i1 %357, label %368, label %359

359:                                              ; preds = %358
  store i1 false, ptr %5, align 1
  store i32 1, ptr %13, align 4
  br label %591

360:                                              ; preds = %351
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %18, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %19, align 4
  br label %598

364:                                              ; preds = %352
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %18, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %19, align 4
  br label %597

368:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %369 = load ptr, ptr %7, align 8, !tbaa !5
  %370 = load i32, ptr %49, align 4, !tbaa !20
  %371 = sext i32 %370 to i64
  %372 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %369, i64 noundef %371) #7
  %373 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef 0) #7
  store ptr %373, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #7
  store i32 0, ptr %54, align 4, !tbaa !20
  br label %374

374:                                              ; preds = %584, %368
  %375 = load i32, ptr %54, align 4, !tbaa !20
  %376 = load i32, ptr %12, align 4, !tbaa !20
  %377 = icmp slt i32 %375, %376
  br i1 %377, label %379, label %378

378:                                              ; preds = %374
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  br label %588

379:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #7
  store i8 0, ptr %55, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #7
  %380 = load i32, ptr %54, align 4, !tbaa !20
  %381 = load i32, ptr %11, align 4, !tbaa !20
  %382 = sdiv i32 %380, %381
  store i32 %382, ptr %56, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  %383 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 2
  %384 = load i32, ptr %56, align 4, !tbaa !20
  %385 = sext i32 %384 to i64
  %386 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %383, i64 noundef %385) #7
  %387 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %386) #7
  %388 = trunc i64 %387 to i32
  %389 = sub nsw i32 %388, 1
  %390 = sdiv i32 %389, 2
  store i32 %390, ptr %57, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  %391 = load i32, ptr %57, align 4, !tbaa !20
  %392 = sub nsw i32 0, %391
  store i32 %392, ptr %58, align 4, !tbaa !20
  br label %393

393:                                              ; preds = %453, %379
  %394 = load i32, ptr %58, align 4, !tbaa !20
  %395 = load i32, ptr %57, align 4, !tbaa !20
  %396 = icmp sle i32 %394, %395
  br i1 %396, label %398, label %397

397:                                              ; preds = %393
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  br label %456

398:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  %399 = load i32, ptr %50, align 4, !tbaa !20
  %400 = load i32, ptr %58, align 4, !tbaa !20
  %401 = add nsw i32 %399, %400
  store i32 %401, ptr %59, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #7
  %402 = load i32, ptr %49, align 4, !tbaa !20
  %403 = load i32, ptr %58, align 4, !tbaa !20
  %404 = add nsw i32 %402, %403
  store i32 %404, ptr %60, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %405 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 2
  %406 = load i32, ptr %56, align 4, !tbaa !20
  %407 = sext i32 %406 to i64
  %408 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %405, i64 noundef %407) #7
  %409 = load i32, ptr %57, align 4, !tbaa !20
  %410 = sext i32 %409 to i64
  %411 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %408, i64 noundef %410) #7
  store ptr %411, ptr %61, align 8, !tbaa !5
  %412 = load i32, ptr %59, align 4, !tbaa !20
  %413 = icmp slt i32 %412, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #7
  br i1 %413, label %445, label %414

414:                                              ; preds = %398
  %415 = load i32, ptr %22, align 4, !tbaa !20
  %416 = load i32, ptr %59, align 4, !tbaa !20
  %417 = icmp sle i32 %415, %416
  br i1 %417, label %445, label %418

418:                                              ; preds = %414
  %419 = load ptr, ptr %61, align 8, !tbaa !5
  %420 = load i32, ptr %58, align 4, !tbaa !20
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds double, ptr %419, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !25
  %424 = fcmp une double 0.000000e+00, %423
  br i1 %424, label %425, label %443

425:                                              ; preds = %418
  %426 = load i32, ptr %60, align 4, !tbaa !20
  %427 = icmp sle i32 0, %426
  br i1 %427, label %428, label %443

428:                                              ; preds = %425
  %429 = load i32, ptr %60, align 4, !tbaa !20
  %430 = load i32, ptr %14, align 4, !tbaa !20
  %431 = icmp slt i32 %429, %430
  br i1 %431, label %432, label %443

432:                                              ; preds = %428
  %433 = load i32, ptr %60, align 4, !tbaa !20
  %434 = sext i32 %433 to i64
  %435 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %15, i64 noundef %434)
          to label %436 unwind label %448

436:                                              ; preds = %432
  %437 = getelementptr inbounds { ptr, i64 }, ptr %62, i32 0, i32 0
  %438 = extractvalue { ptr, i64 } %435, 0
  store ptr %438, ptr %437, align 8
  %439 = getelementptr inbounds { ptr, i64 }, ptr %62, i32 0, i32 1
  %440 = extractvalue { ptr, i64 } %435, 1
  store i64 %440, ptr %439, align 8
  %441 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %62) #7
  %442 = xor i1 %441, true
  br label %443

443:                                              ; preds = %436, %428, %425, %418
  %444 = phi i1 [ false, %428 ], [ false, %425 ], [ false, %418 ], [ %442, %436 ]
  br label %445

445:                                              ; preds = %443, %414, %398
  %446 = phi i1 [ true, %414 ], [ true, %398 ], [ %444, %443 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #7
  br i1 %446, label %447, label %452

447:                                              ; preds = %445
  store i8 1, ptr %55, align 1, !tbaa !22
  br label %452

448:                                              ; preds = %432
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %18, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  br label %587

452:                                              ; preds = %447, %445
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  br label %453

453:                                              ; preds = %452
  %454 = load i32, ptr %58, align 4, !tbaa !20
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr %58, align 4, !tbaa !20
  br label %393, !llvm.loop !30

456:                                              ; preds = %397
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  %457 = load i8, ptr %55, align 1, !tbaa !22, !range !18, !noundef !19
  %458 = trunc i8 %457 to i1
  br i1 %458, label %583, label %459

459:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %64) #7
  %460 = load i32, ptr %54, align 4, !tbaa !20
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %64, ptr noundef nonnull align 8 dereferenceable(64) %52, i32 noundef %460)
          to label %461 unwind label %493

461:                                              ; preds = %459
  %462 = load i32, ptr %54, align 4, !tbaa !20
  %463 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %64, i32 noundef %462)
          to label %464 unwind label %497

464:                                              ; preds = %461
  %465 = load double, ptr %463, align 8, !tbaa !25
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %64) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %64) #7
  store double %465, ptr %63, align 8, !tbaa !25
  %466 = load double, ptr %63, align 8, !tbaa !25
  %467 = load ptr, ptr %53, align 8, !tbaa !5
  %468 = load i32, ptr %54, align 4, !tbaa !20
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds double, ptr %467, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !25
  %472 = fmul double %466, %471
  %473 = load i32, ptr %50, align 4, !tbaa !20
  %474 = sext i32 %473 to i64
  %475 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %474) #7
  %476 = load i32, ptr %54, align 4, !tbaa !20
  %477 = sext i32 %476 to i64
  %478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %475, i64 noundef %477) #7
  store double %472, ptr %478, align 8, !tbaa !25
  %479 = load double, ptr %63, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 24, ptr %65) #7
  %480 = load i32, ptr %50, align 4, !tbaa !20
  %481 = sext i32 %480 to i64
  %482 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %481) #7
  %483 = load i32, ptr %54, align 4, !tbaa !20
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %65, ptr noundef nonnull align 8 dereferenceable(64) %482, i32 noundef %483)
          to label %484 unwind label %502

484:                                              ; preds = %464
  %485 = load i32, ptr %54, align 4, !tbaa !20
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %65, i32 noundef %485)
          to label %487 unwind label %506

487:                                              ; preds = %484
  store double %479, ptr %486, align 8, !tbaa !25
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %65) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #7
  store i32 0, ptr %66, align 4, !tbaa !20
  br label %488

488:                                              ; preds = %577, %487
  %489 = load i32, ptr %66, align 4, !tbaa !20
  %490 = load i32, ptr %54, align 4, !tbaa !20
  %491 = icmp slt i32 %489, %490
  br i1 %491, label %511, label %492

492:                                              ; preds = %488
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  br label %581

493:                                              ; preds = %459
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %18, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %19, align 4
  br label %501

497:                                              ; preds = %461
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %18, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %64) #7
  br label %501

501:                                              ; preds = %497, %493
  call void @llvm.lifetime.end.p0(i64 24, ptr %64) #7
  br label %582

502:                                              ; preds = %464
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %18, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %19, align 4
  br label %510

506:                                              ; preds = %484
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %18, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %65) #7
  br label %510

510:                                              ; preds = %506, %502
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #7
  br label %582

511:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %68) #7
  %512 = load i32, ptr %54, align 4, !tbaa !20
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %68, ptr noundef nonnull align 8 dereferenceable(64) %52, i32 noundef %512)
          to label %513 unwind label %558

513:                                              ; preds = %511
  %514 = load i32, ptr %66, align 4, !tbaa !20
  %515 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %68, i32 noundef %514)
          to label %516 unwind label %562

516:                                              ; preds = %513
  %517 = load double, ptr %515, align 8, !tbaa !25
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %68) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %68) #7
  store double %517, ptr %67, align 8, !tbaa !25
  %518 = load double, ptr %67, align 8, !tbaa !25
  %519 = fcmp une double 0.000000e+00, %518
  br i1 %519, label %520, label %576

520:                                              ; preds = %516
  %521 = load double, ptr %67, align 8, !tbaa !25
  %522 = load ptr, ptr %53, align 8, !tbaa !5
  %523 = load i32, ptr %66, align 4, !tbaa !20
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds double, ptr %522, i64 %524
  %526 = load double, ptr %525, align 8, !tbaa !25
  %527 = load i32, ptr %50, align 4, !tbaa !20
  %528 = sext i32 %527 to i64
  %529 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %528) #7
  %530 = load i32, ptr %54, align 4, !tbaa !20
  %531 = sext i32 %530 to i64
  %532 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %529, i64 noundef %531) #7
  %533 = load double, ptr %532, align 8, !tbaa !25
  %534 = call double @llvm.fmuladd.f64(double %521, double %526, double %533)
  store double %534, ptr %532, align 8, !tbaa !25
  %535 = load double, ptr %67, align 8, !tbaa !25
  %536 = load ptr, ptr %53, align 8, !tbaa !5
  %537 = load i32, ptr %54, align 4, !tbaa !20
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds double, ptr %536, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !25
  %541 = load i32, ptr %50, align 4, !tbaa !20
  %542 = sext i32 %541 to i64
  %543 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %542) #7
  %544 = load i32, ptr %66, align 4, !tbaa !20
  %545 = sext i32 %544 to i64
  %546 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %543, i64 noundef %545) #7
  %547 = load double, ptr %546, align 8, !tbaa !25
  %548 = call double @llvm.fmuladd.f64(double %535, double %540, double %547)
  store double %548, ptr %546, align 8, !tbaa !25
  %549 = load double, ptr %67, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 24, ptr %69) #7
  %550 = load i32, ptr %50, align 4, !tbaa !20
  %551 = sext i32 %550 to i64
  %552 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %551) #7
  %553 = load i32, ptr %54, align 4, !tbaa !20
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %69, ptr noundef nonnull align 8 dereferenceable(64) %552, i32 noundef %553)
          to label %554 unwind label %567

554:                                              ; preds = %520
  %555 = load i32, ptr %66, align 4, !tbaa !20
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %69, i32 noundef %555)
          to label %557 unwind label %571

557:                                              ; preds = %554
  store double %549, ptr %556, align 8, !tbaa !25
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %69) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #7
  br label %576

558:                                              ; preds = %511
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %18, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %19, align 4
  br label %566

562:                                              ; preds = %513
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %18, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %68) #7
  br label %566

566:                                              ; preds = %562, %558
  call void @llvm.lifetime.end.p0(i64 24, ptr %68) #7
  br label %580

567:                                              ; preds = %520
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %18, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %19, align 4
  br label %575

571:                                              ; preds = %554
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %18, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %69) #7
  br label %575

575:                                              ; preds = %571, %567
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #7
  br label %580

576:                                              ; preds = %557, %516
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  br label %577

577:                                              ; preds = %576
  %578 = load i32, ptr %66, align 4, !tbaa !20
  %579 = add nsw i32 %578, 1
  store i32 %579, ptr %66, align 4, !tbaa !20
  br label %488, !llvm.loop !31

580:                                              ; preds = %575, %566
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  br label %582

581:                                              ; preds = %492
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %583

582:                                              ; preds = %580, %510, %501
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %587

583:                                              ; preds = %581, %456
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  br label %584

584:                                              ; preds = %583
  %585 = load i32, ptr %54, align 4, !tbaa !20
  %586 = add nsw i32 %585, 1
  store i32 %586, ptr %54, align 4, !tbaa !20
  br label %374, !llvm.loop !32

587:                                              ; preds = %582, %448
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %597

588:                                              ; preds = %378
  %589 = load i32, ptr %50, align 4, !tbaa !20
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %50, align 4, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  store i32 0, ptr %13, align 4
  br label %591

591:                                              ; preds = %588, %359
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %52) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %52) #7
  %592 = load i32, ptr %13, align 4
  switch i32 %592, label %599 [
    i32 0, label %593
  ]

593:                                              ; preds = %591
  br label %594

594:                                              ; preds = %593, %346
  %595 = load i32, ptr %49, align 4, !tbaa !20
  %596 = add nsw i32 %595, 1
  store i32 %596, ptr %49, align 4, !tbaa !20
  br label %330, !llvm.loop !33

597:                                              ; preds = %587, %364
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %52) #7
  br label %598

598:                                              ; preds = %597, %360
  call void @llvm.lifetime.end.p0(i64 64, ptr %52) #7
  br label %601

599:                                              ; preds = %591, %334
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  %600 = load i32, ptr %13, align 4
  switch i32 %600, label %1199 [
    i32 8, label %602
  ]

601:                                              ; preds = %598, %347
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  br label %1200

602:                                              ; preds = %599
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #7
  store i32 0, ptr %70, align 4, !tbaa !20
  br label %603

603:                                              ; preds = %861, %602
  %604 = load i32, ptr %70, align 4, !tbaa !20
  %605 = load i32, ptr %22, align 4, !tbaa !20
  %606 = icmp slt i32 %604, %605
  br i1 %606, label %608, label %607

607:                                              ; preds = %603
  store i32 20, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  br label %864

608:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #7
  store i32 0, ptr %71, align 4, !tbaa !20
  br label %609

609:                                              ; preds = %857, %608
  %610 = load i32, ptr %71, align 4, !tbaa !20
  %611 = load i32, ptr %11, align 4, !tbaa !20
  %612 = icmp slt i32 %610, %611
  br i1 %612, label %614, label %613

613:                                              ; preds = %609
  store i32 23, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  br label %860

614:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #7
  %615 = load i32, ptr %11, align 4, !tbaa !20
  %616 = load i32, ptr %70, align 4, !tbaa !20
  %617 = mul nsw i32 %615, %616
  %618 = load i32, ptr %71, align 4, !tbaa !20
  %619 = add nsw i32 %617, %618
  store i32 %619, ptr %72, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #7
  store i32 0, ptr %73, align 4, !tbaa !20
  br label %620

620:                                              ; preds = %853, %614
  %621 = load i32, ptr %73, align 4, !tbaa !20
  %622 = load i32, ptr %11, align 4, !tbaa !20
  %623 = icmp slt i32 %621, %622
  br i1 %623, label %625, label %624

624:                                              ; preds = %620
  store i32 26, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  br label %856

625:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #7
  store i32 0, ptr %74, align 4, !tbaa !20
  br label %626

626:                                              ; preds = %849, %625
  %627 = load i32, ptr %74, align 4, !tbaa !20
  %628 = load i32, ptr %10, align 4, !tbaa !20
  %629 = icmp slt i32 %627, %628
  br i1 %629, label %631, label %630

630:                                              ; preds = %626
  store i32 29, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #7
  br label %852

631:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #7
  %632 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 2
  %633 = load i32, ptr %74, align 4, !tbaa !20
  %634 = sext i32 %633 to i64
  %635 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %632, i64 noundef %634) #7
  %636 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %635) #7
  %637 = trunc i64 %636 to i32
  %638 = sub nsw i32 %637, 1
  %639 = sdiv i32 %638, 2
  store i32 %639, ptr %75, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #7
  %640 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 2
  %641 = load i32, ptr %74, align 4, !tbaa !20
  %642 = sext i32 %641 to i64
  %643 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %640, i64 noundef %642) #7
  %644 = load i32, ptr %75, align 4, !tbaa !20
  %645 = sext i32 %644 to i64
  %646 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %643, i64 noundef %645) #7
  store ptr %646, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #7
  %647 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 6
  %648 = load i32, ptr %647, align 4, !tbaa !28
  %649 = sub nsw i32 0, %648
  store i32 %649, ptr %77, align 4, !tbaa !20
  br label %650

650:                                              ; preds = %843, %631
  %651 = load i32, ptr %77, align 4, !tbaa !20
  %652 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 6
  %653 = load i32, ptr %652, align 4, !tbaa !28
  %654 = icmp sle i32 %651, %653
  br i1 %654, label %656, label %655

655:                                              ; preds = %650
  store i32 32, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #7
  br label %848

656:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #7
  %657 = load i32, ptr %70, align 4, !tbaa !20
  %658 = load i32, ptr %77, align 4, !tbaa !20
  %659 = add nsw i32 %657, %658
  store i32 %659, ptr %78, align 4, !tbaa !20
  %660 = load i32, ptr %78, align 4, !tbaa !20
  %661 = icmp slt i32 %660, 0
  br i1 %661, label %666, label %662

662:                                              ; preds = %656
  %663 = load i32, ptr %22, align 4, !tbaa !20
  %664 = load i32, ptr %78, align 4, !tbaa !20
  %665 = icmp sle i32 %663, %664
  br i1 %665, label %666, label %667

666:                                              ; preds = %662, %656
  store i32 34, ptr %13, align 4
  br label %840

667:                                              ; preds = %662
  %668 = load i32, ptr %73, align 4, !tbaa !20
  %669 = icmp eq i32 0, %668
  br i1 %669, label %670, label %703

670:                                              ; preds = %667
  %671 = load i32, ptr %77, align 4, !tbaa !20
  %672 = load i32, ptr %75, align 4, !tbaa !20
  %673 = load ptr, ptr %76, align 8, !tbaa !5
  %674 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_110CheckRangeEiiPKdb(i32 noundef %671, i32 noundef %672, ptr noundef %673, i1 noundef zeroext true)
          to label %675 unwind label %699

675:                                              ; preds = %670
  br i1 %674, label %676, label %703

676:                                              ; preds = %675
  %677 = load ptr, ptr %76, align 8, !tbaa !5
  %678 = load i32, ptr %77, align 4, !tbaa !20
  %679 = sub nsw i32 0, %678
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %677, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !25
  %683 = load i32, ptr %78, align 4, !tbaa !20
  %684 = sext i32 %683 to i64
  %685 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %684) #7
  %686 = load i32, ptr %74, align 4, !tbaa !20
  %687 = load i32, ptr %11, align 4, !tbaa !20
  %688 = mul nsw i32 %686, %687
  %689 = load i32, ptr %71, align 4, !tbaa !20
  %690 = add nsw i32 %688, %689
  %691 = sext i32 %690 to i64
  %692 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %685, i64 noundef %691) #7
  %693 = load double, ptr %692, align 8, !tbaa !25
  %694 = load i32, ptr %72, align 4, !tbaa !20
  %695 = sext i32 %694 to i64
  %696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %695) #7
  %697 = load double, ptr %696, align 8, !tbaa !25
  %698 = call double @llvm.fmuladd.f64(double %682, double %693, double %697)
  store double %698, ptr %696, align 8, !tbaa !25
  br label %703

699:                                              ; preds = %670
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %18, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %19, align 4
  br label %847

703:                                              ; preds = %676, %675, %667
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  store double 0.000000e+00, ptr %79, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #7
  store i32 0, ptr %80, align 4, !tbaa !20
  br label %704

704:                                              ; preds = %774, %703
  %705 = load i32, ptr %80, align 4, !tbaa !20
  %706 = load i32, ptr %10, align 4, !tbaa !20
  %707 = icmp slt i32 %705, %706
  br i1 %707, label %709, label %708

708:                                              ; preds = %704
  store i32 35, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #7
  br label %778

709:                                              ; preds = %704
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %82) #7
  %710 = load i32, ptr %78, align 4, !tbaa !20
  %711 = sext i32 %710 to i64
  %712 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %711) #7
  %713 = load i32, ptr %11, align 4, !tbaa !20
  %714 = load i32, ptr %80, align 4, !tbaa !20
  %715 = mul nsw i32 %713, %714
  %716 = load i32, ptr %71, align 4, !tbaa !20
  %717 = add nsw i32 %715, %716
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %82, ptr noundef nonnull align 8 dereferenceable(64) %712, i32 noundef %717)
          to label %718 unwind label %760

718:                                              ; preds = %709
  %719 = load i32, ptr %11, align 4, !tbaa !20
  %720 = load i32, ptr %74, align 4, !tbaa !20
  %721 = mul nsw i32 %719, %720
  %722 = load i32, ptr %73, align 4, !tbaa !20
  %723 = add nsw i32 %721, %722
  %724 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %82, i32 noundef %723)
          to label %725 unwind label %764

725:                                              ; preds = %718
  %726 = load double, ptr %724, align 8, !tbaa !25
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %82) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %82) #7
  store double %726, ptr %81, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #7
  %727 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 2
  %728 = load i32, ptr %80, align 4, !tbaa !20
  %729 = sext i32 %728 to i64
  %730 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %727, i64 noundef %729) #7
  %731 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %730) #7
  %732 = trunc i64 %731 to i32
  %733 = sub nsw i32 %732, 1
  %734 = sdiv i32 %733, 2
  store i32 %734, ptr %83, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #7
  %735 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 2
  %736 = load i32, ptr %80, align 4, !tbaa !20
  %737 = sext i32 %736 to i64
  %738 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %735, i64 noundef %737) #7
  %739 = load i32, ptr %83, align 4, !tbaa !20
  %740 = sext i32 %739 to i64
  %741 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %738, i64 noundef %740) #7
  store ptr %741, ptr %84, align 8, !tbaa !5
  %742 = load i32, ptr %77, align 4, !tbaa !20
  %743 = load i32, ptr %83, align 4, !tbaa !20
  %744 = load ptr, ptr %84, align 8, !tbaa !5
  %745 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_110CheckRangeEiiPKdb(i32 noundef %742, i32 noundef %743, ptr noundef %744, i1 noundef zeroext true)
          to label %746 unwind label %769

746:                                              ; preds = %725
  br i1 %745, label %747, label %773

747:                                              ; preds = %746
  %748 = load double, ptr %81, align 8, !tbaa !25
  %749 = fcmp une double 0.000000e+00, %748
  br i1 %749, label %750, label %773

750:                                              ; preds = %747
  %751 = load ptr, ptr %84, align 8, !tbaa !5
  %752 = load i32, ptr %77, align 4, !tbaa !20
  %753 = sub nsw i32 0, %752
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %751, i64 %754
  %756 = load double, ptr %755, align 8, !tbaa !25
  %757 = load double, ptr %81, align 8, !tbaa !25
  %758 = load double, ptr %79, align 8, !tbaa !25
  %759 = call double @llvm.fmuladd.f64(double %756, double %757, double %758)
  store double %759, ptr %79, align 8, !tbaa !25
  br label %773

760:                                              ; preds = %709
  %761 = landingpad { ptr, i32 }
          cleanup
  %762 = extractvalue { ptr, i32 } %761, 0
  store ptr %762, ptr %18, align 8
  %763 = extractvalue { ptr, i32 } %761, 1
  store i32 %763, ptr %19, align 4
  br label %768

764:                                              ; preds = %718
  %765 = landingpad { ptr, i32 }
          cleanup
  %766 = extractvalue { ptr, i32 } %765, 0
  store ptr %766, ptr %18, align 8
  %767 = extractvalue { ptr, i32 } %765, 1
  store i32 %767, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %82) #7
  br label %768

768:                                              ; preds = %764, %760
  call void @llvm.lifetime.end.p0(i64 24, ptr %82) #7
  br label %777

769:                                              ; preds = %725
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %18, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #7
  br label %777

773:                                              ; preds = %750, %747, %746
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  br label %774

774:                                              ; preds = %773
  %775 = load i32, ptr %80, align 4, !tbaa !20
  %776 = add nsw i32 %775, 1
  store i32 %776, ptr %80, align 4, !tbaa !20
  br label %704, !llvm.loop !34

777:                                              ; preds = %769, %768
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #7
  br label %846

778:                                              ; preds = %708
  %779 = load double, ptr %79, align 8, !tbaa !25
  %780 = fcmp une double 0.000000e+00, %779
  br i1 %780, label %781, label %839

781:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #7
  store i32 0, ptr %85, align 4, !tbaa !20
  br label %782

782:                                              ; preds = %835, %781
  %783 = load i32, ptr %85, align 4, !tbaa !20
  %784 = load i32, ptr %28, align 4, !tbaa !20
  %785 = icmp slt i32 %783, %784
  br i1 %785, label %786, label %792

786:                                              ; preds = %782
  %787 = load i32, ptr %70, align 4, !tbaa !20
  %788 = load i32, ptr %85, align 4, !tbaa !20
  %789 = add nsw i32 %787, %788
  %790 = load i32, ptr %22, align 4, !tbaa !20
  %791 = icmp slt i32 %789, %790
  br label %792

792:                                              ; preds = %786, %782
  %793 = phi i1 [ false, %782 ], [ %791, %786 ]
  br i1 %793, label %795, label %794

794:                                              ; preds = %792
  store i32 38, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #7
  br label %838

795:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #7
  %796 = load i32, ptr %11, align 4, !tbaa !20
  %797 = load i32, ptr %85, align 4, !tbaa !20
  %798 = mul nsw i32 %796, %797
  %799 = load i32, ptr %73, align 4, !tbaa !20
  %800 = add nsw i32 %798, %799
  %801 = load i32, ptr %71, align 4, !tbaa !20
  %802 = sub nsw i32 %800, %801
  store i32 %802, ptr %86, align 4, !tbaa !20
  %803 = load i32, ptr %85, align 4, !tbaa !20
  %804 = load i32, ptr %77, align 4, !tbaa !20
  %805 = sub nsw i32 %803, %804
  %806 = load i32, ptr %75, align 4, !tbaa !20
  %807 = load ptr, ptr %76, align 8, !tbaa !5
  %808 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_110CheckRangeEiiPKdb(i32 noundef %805, i32 noundef %806, ptr noundef %807, i1 noundef zeroext false)
          to label %809 unwind label %830

809:                                              ; preds = %795
  br i1 %808, label %810, label %834

810:                                              ; preds = %809
  %811 = load i32, ptr %86, align 4, !tbaa !20
  %812 = icmp sle i32 0, %811
  br i1 %812, label %813, label %834

813:                                              ; preds = %810
  %814 = load double, ptr %79, align 8, !tbaa !25
  %815 = load ptr, ptr %76, align 8, !tbaa !5
  %816 = load i32, ptr %85, align 4, !tbaa !20
  %817 = load i32, ptr %77, align 4, !tbaa !20
  %818 = sub nsw i32 %816, %817
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds double, ptr %815, i64 %819
  %821 = load double, ptr %820, align 8, !tbaa !25
  %822 = load i32, ptr %72, align 4, !tbaa !20
  %823 = sext i32 %822 to i64
  %824 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %823) #7
  %825 = load i32, ptr %86, align 4, !tbaa !20
  %826 = sext i32 %825 to i64
  %827 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %824, i64 noundef %826) #7
  %828 = load double, ptr %827, align 8, !tbaa !25
  %829 = call double @llvm.fmuladd.f64(double %814, double %821, double %828)
  store double %829, ptr %827, align 8, !tbaa !25
  br label %834

830:                                              ; preds = %795
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %18, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #7
  br label %846

834:                                              ; preds = %813, %810, %809
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #7
  br label %835

835:                                              ; preds = %834
  %836 = load i32, ptr %85, align 4, !tbaa !20
  %837 = add nsw i32 %836, 1
  store i32 %837, ptr %85, align 4, !tbaa !20
  br label %782, !llvm.loop !35

838:                                              ; preds = %794
  br label %839

839:                                              ; preds = %838, %778
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  store i32 0, ptr %13, align 4
  br label %840

840:                                              ; preds = %839, %666
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #7
  %841 = load i32, ptr %13, align 4
  switch i32 %841, label %1218 [
    i32 0, label %842
    i32 34, label %843
  ]

842:                                              ; preds = %840
  br label %843

843:                                              ; preds = %842, %840
  %844 = load i32, ptr %77, align 4, !tbaa !20
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %77, align 4, !tbaa !20
  br label %650, !llvm.loop !36

846:                                              ; preds = %830, %777
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  br label %847

847:                                              ; preds = %846, %699
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  br label %1200

848:                                              ; preds = %655
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #7
  br label %849

849:                                              ; preds = %848
  %850 = load i32, ptr %74, align 4, !tbaa !20
  %851 = add nsw i32 %850, 1
  store i32 %851, ptr %74, align 4, !tbaa !20
  br label %626, !llvm.loop !37

852:                                              ; preds = %630
  br label %853

853:                                              ; preds = %852
  %854 = load i32, ptr %73, align 4, !tbaa !20
  %855 = add nsw i32 %854, 1
  store i32 %855, ptr %73, align 4, !tbaa !20
  br label %620, !llvm.loop !38

856:                                              ; preds = %624
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #7
  br label %857

857:                                              ; preds = %856
  %858 = load i32, ptr %71, align 4, !tbaa !20
  %859 = add nsw i32 %858, 1
  store i32 %859, ptr %71, align 4, !tbaa !20
  br label %609, !llvm.loop !39

860:                                              ; preds = %613
  br label %861

861:                                              ; preds = %860
  %862 = load i32, ptr %70, align 4, !tbaa !20
  %863 = add nsw i32 %862, 1
  store i32 %863, ptr %70, align 4, !tbaa !20
  br label %603, !llvm.loop !40

864:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #7
  store i32 0, ptr %87, align 4, !tbaa !20
  br label %865

865:                                              ; preds = %1000, %864
  %866 = load i32, ptr %87, align 4, !tbaa !20
  %867 = load i32, ptr %29, align 4, !tbaa !20
  %868 = icmp slt i32 %866, %867
  br i1 %868, label %870, label %869

869:                                              ; preds = %865
  store i32 41, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  br label %1003

870:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #7
  store i32 1, ptr %88, align 4, !tbaa !20
  br label %871

871:                                              ; preds = %916, %870
  %872 = load i32, ptr %88, align 4, !tbaa !20
  %873 = load i32, ptr %30, align 4, !tbaa !20
  %874 = icmp slt i32 %872, %873
  br i1 %874, label %875, label %879

875:                                              ; preds = %871
  %876 = load i32, ptr %88, align 4, !tbaa !20
  %877 = load i32, ptr %87, align 4, !tbaa !20
  %878 = icmp sle i32 %876, %877
  br label %879

879:                                              ; preds = %875, %871
  %880 = phi i1 [ false, %871 ], [ %878, %875 ]
  br i1 %880, label %882, label %881

881:                                              ; preds = %879
  store i32 44, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  br label %919

882:                                              ; preds = %879
  %883 = load i32, ptr %87, align 4, !tbaa !20
  %884 = load i32, ptr %88, align 4, !tbaa !20
  %885 = sub nsw i32 %883, %884
  %886 = sext i32 %885 to i64
  %887 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %886) #7
  %888 = load i32, ptr %88, align 4, !tbaa !20
  %889 = sext i32 %888 to i64
  %890 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %887, i64 noundef %889) #7
  %891 = load double, ptr %890, align 8, !tbaa !25
  %892 = load i32, ptr %87, align 4, !tbaa !20
  %893 = load i32, ptr %88, align 4, !tbaa !20
  %894 = sub nsw i32 %892, %893
  %895 = sext i32 %894 to i64
  %896 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %895) #7
  %897 = load i32, ptr %88, align 4, !tbaa !20
  %898 = sext i32 %897 to i64
  %899 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %896, i64 noundef %898) #7
  %900 = load double, ptr %899, align 8, !tbaa !25
  %901 = fmul double %891, %900
  %902 = load i32, ptr %87, align 4, !tbaa !20
  %903 = load i32, ptr %88, align 4, !tbaa !20
  %904 = sub nsw i32 %902, %903
  %905 = sext i32 %904 to i64
  %906 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %905) #7
  %907 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %906, i64 noundef 0) #7
  %908 = load double, ptr %907, align 8, !tbaa !25
  %909 = load i32, ptr %87, align 4, !tbaa !20
  %910 = sext i32 %909 to i64
  %911 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %910) #7
  %912 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %911, i64 noundef 0) #7
  %913 = load double, ptr %912, align 8, !tbaa !25
  %914 = fneg double %901
  %915 = call double @llvm.fmuladd.f64(double %914, double %908, double %913)
  store double %915, ptr %912, align 8, !tbaa !25
  br label %916

916:                                              ; preds = %882
  %917 = load i32, ptr %88, align 4, !tbaa !20
  %918 = add nsw i32 %917, 1
  store i32 %918, ptr %88, align 4, !tbaa !20
  br label %871, !llvm.loop !41

919:                                              ; preds = %881
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #7
  %920 = load i32, ptr %87, align 4, !tbaa !20
  %921 = sext i32 %920 to i64
  %922 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %921) #7
  %923 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %922, i64 noundef 0) #7
  %924 = load double, ptr %923, align 8, !tbaa !25
  %925 = fdiv double 1.000000e+00, %924
  store double %925, ptr %89, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #7
  store i32 1, ptr %90, align 4, !tbaa !20
  br label %926

926:                                              ; preds = %996, %919
  %927 = load i32, ptr %90, align 4, !tbaa !20
  %928 = load i32, ptr %30, align 4, !tbaa !20
  %929 = icmp slt i32 %927, %928
  br i1 %929, label %931, label %930

930:                                              ; preds = %926
  store i32 47, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #7
  br label %999

931:                                              ; preds = %926
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #7
  store i32 1, ptr %91, align 4, !tbaa !20
  br label %932

932:                                              ; preds = %983, %931
  %933 = load i32, ptr %90, align 4, !tbaa !20
  %934 = load i32, ptr %91, align 4, !tbaa !20
  %935 = add nsw i32 %933, %934
  %936 = load i32, ptr %30, align 4, !tbaa !20
  %937 = icmp slt i32 %935, %936
  br i1 %937, label %938, label %942

938:                                              ; preds = %932
  %939 = load i32, ptr %91, align 4, !tbaa !20
  %940 = load i32, ptr %87, align 4, !tbaa !20
  %941 = icmp sle i32 %939, %940
  br label %942

942:                                              ; preds = %938, %932
  %943 = phi i1 [ false, %932 ], [ %941, %938 ]
  br i1 %943, label %945, label %944

944:                                              ; preds = %942
  store i32 50, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #7
  br label %986

945:                                              ; preds = %942
  %946 = load i32, ptr %87, align 4, !tbaa !20
  %947 = load i32, ptr %91, align 4, !tbaa !20
  %948 = sub nsw i32 %946, %947
  %949 = sext i32 %948 to i64
  %950 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %949) #7
  %951 = load i32, ptr %91, align 4, !tbaa !20
  %952 = sext i32 %951 to i64
  %953 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %950, i64 noundef %952) #7
  %954 = load double, ptr %953, align 8, !tbaa !25
  %955 = load i32, ptr %87, align 4, !tbaa !20
  %956 = load i32, ptr %91, align 4, !tbaa !20
  %957 = sub nsw i32 %955, %956
  %958 = sext i32 %957 to i64
  %959 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %958) #7
  %960 = load i32, ptr %90, align 4, !tbaa !20
  %961 = load i32, ptr %91, align 4, !tbaa !20
  %962 = add nsw i32 %960, %961
  %963 = sext i32 %962 to i64
  %964 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %959, i64 noundef %963) #7
  %965 = load double, ptr %964, align 8, !tbaa !25
  %966 = fmul double %954, %965
  %967 = load i32, ptr %87, align 4, !tbaa !20
  %968 = load i32, ptr %91, align 4, !tbaa !20
  %969 = sub nsw i32 %967, %968
  %970 = sext i32 %969 to i64
  %971 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %970) #7
  %972 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %971, i64 noundef 0) #7
  %973 = load double, ptr %972, align 8, !tbaa !25
  %974 = load i32, ptr %87, align 4, !tbaa !20
  %975 = sext i32 %974 to i64
  %976 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %975) #7
  %977 = load i32, ptr %90, align 4, !tbaa !20
  %978 = sext i32 %977 to i64
  %979 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %976, i64 noundef %978) #7
  %980 = load double, ptr %979, align 8, !tbaa !25
  %981 = fneg double %966
  %982 = call double @llvm.fmuladd.f64(double %981, double %973, double %980)
  store double %982, ptr %979, align 8, !tbaa !25
  br label %983

983:                                              ; preds = %945
  %984 = load i32, ptr %91, align 4, !tbaa !20
  %985 = add nsw i32 %984, 1
  store i32 %985, ptr %91, align 4, !tbaa !20
  br label %932, !llvm.loop !42

986:                                              ; preds = %944
  %987 = load double, ptr %89, align 8, !tbaa !25
  %988 = load i32, ptr %87, align 4, !tbaa !20
  %989 = sext i32 %988 to i64
  %990 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %989) #7
  %991 = load i32, ptr %90, align 4, !tbaa !20
  %992 = sext i32 %991 to i64
  %993 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %990, i64 noundef %992) #7
  %994 = load double, ptr %993, align 8, !tbaa !25
  %995 = fmul double %994, %987
  store double %995, ptr %993, align 8, !tbaa !25
  br label %996

996:                                              ; preds = %986
  %997 = load i32, ptr %90, align 4, !tbaa !20
  %998 = add nsw i32 %997, 1
  store i32 %998, ptr %90, align 4, !tbaa !20
  br label %926, !llvm.loop !43

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

1000:                                             ; preds = %999
  %1001 = load i32, ptr %87, align 4, !tbaa !20
  %1002 = add nsw i32 %1001, 1
  store i32 %1002, ptr %87, align 4, !tbaa !20
  br label %865, !llvm.loop !44

1003:                                             ; preds = %869
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #7
  %1004 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 0) #7
  store ptr %1004, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #7
  %1005 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef 0) #7
  store ptr %1005, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #7
  store i32 0, ptr %94, align 4, !tbaa !20
  br label %1006

1006:                                             ; preds = %1060, %1003
  %1007 = load i32, ptr %94, align 4, !tbaa !20
  %1008 = load i32, ptr %29, align 4, !tbaa !20
  %1009 = icmp slt i32 %1007, %1008
  br i1 %1009, label %1011, label %1010

1010:                                             ; preds = %1006
  store i32 53, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #7
  br label %1063

1011:                                             ; preds = %1006
  %1012 = load ptr, ptr %92, align 8, !tbaa !5
  %1013 = load i32, ptr %94, align 4, !tbaa !20
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds double, ptr %1012, i64 %1014
  %1016 = load double, ptr %1015, align 8, !tbaa !25
  %1017 = load ptr, ptr %93, align 8, !tbaa !5
  %1018 = load i32, ptr %94, align 4, !tbaa !20
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds double, ptr %1017, i64 %1019
  store double %1016, ptr %1020, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #7
  store i32 1, ptr %95, align 4, !tbaa !20
  br label %1021

1021:                                             ; preds = %1056, %1011
  %1022 = load i32, ptr %95, align 4, !tbaa !20
  %1023 = load i32, ptr %30, align 4, !tbaa !20
  %1024 = icmp slt i32 %1022, %1023
  br i1 %1024, label %1025, label %1029

1025:                                             ; preds = %1021
  %1026 = load i32, ptr %95, align 4, !tbaa !20
  %1027 = load i32, ptr %94, align 4, !tbaa !20
  %1028 = icmp sle i32 %1026, %1027
  br label %1029

1029:                                             ; preds = %1025, %1021
  %1030 = phi i1 [ false, %1021 ], [ %1028, %1025 ]
  br i1 %1030, label %1032, label %1031

1031:                                             ; preds = %1029
  store i32 56, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #7
  br label %1059

1032:                                             ; preds = %1029
  %1033 = load i32, ptr %94, align 4, !tbaa !20
  %1034 = load i32, ptr %95, align 4, !tbaa !20
  %1035 = sub nsw i32 %1033, %1034
  %1036 = sext i32 %1035 to i64
  %1037 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %1036) #7
  %1038 = load i32, ptr %95, align 4, !tbaa !20
  %1039 = sext i32 %1038 to i64
  %1040 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1037, i64 noundef %1039) #7
  %1041 = load double, ptr %1040, align 8, !tbaa !25
  %1042 = load ptr, ptr %93, align 8, !tbaa !5
  %1043 = load i32, ptr %94, align 4, !tbaa !20
  %1044 = load i32, ptr %95, align 4, !tbaa !20
  %1045 = sub nsw i32 %1043, %1044
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds double, ptr %1042, i64 %1046
  %1048 = load double, ptr %1047, align 8, !tbaa !25
  %1049 = load ptr, ptr %93, align 8, !tbaa !5
  %1050 = load i32, ptr %94, align 4, !tbaa !20
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1049, i64 %1051
  %1053 = load double, ptr %1052, align 8, !tbaa !25
  %1054 = fneg double %1041
  %1055 = call double @llvm.fmuladd.f64(double %1054, double %1048, double %1053)
  store double %1055, ptr %1052, align 8, !tbaa !25
  br label %1056

1056:                                             ; preds = %1032
  %1057 = load i32, ptr %95, align 4, !tbaa !20
  %1058 = add nsw i32 %1057, 1
  store i32 %1058, ptr %95, align 4, !tbaa !20
  br label %1021, !llvm.loop !45

1059:                                             ; preds = %1031
  br label %1060

1060:                                             ; preds = %1059
  %1061 = load i32, ptr %94, align 4, !tbaa !20
  %1062 = add nsw i32 %1061, 1
  store i32 %1062, ptr %94, align 4, !tbaa !20
  br label %1006, !llvm.loop !46

1063:                                             ; preds = %1010
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #7
  %1064 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef 0) #7
  store ptr %1064, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #7
  %1065 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef 0) #7
  store ptr %1065, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #7
  %1066 = load i32, ptr %29, align 4, !tbaa !20
  %1067 = sub nsw i32 %1066, 1
  store i32 %1067, ptr %98, align 4, !tbaa !20
  br label %1068

1068:                                             ; preds = %1127, %1063
  %1069 = load i32, ptr %98, align 4, !tbaa !20
  %1070 = icmp sle i32 0, %1069
  br i1 %1070, label %1072, label %1071

1071:                                             ; preds = %1068
  store i32 59, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #7
  br label %1130

1072:                                             ; preds = %1068
  %1073 = load ptr, ptr %96, align 8, !tbaa !5
  %1074 = load i32, ptr %98, align 4, !tbaa !20
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds double, ptr %1073, i64 %1075
  %1077 = load double, ptr %1076, align 8, !tbaa !25
  %1078 = load i32, ptr %98, align 4, !tbaa !20
  %1079 = sext i32 %1078 to i64
  %1080 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %1079) #7
  %1081 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1080, i64 noundef 0) #7
  %1082 = load double, ptr %1081, align 8, !tbaa !25
  %1083 = fdiv double %1077, %1082
  %1084 = load ptr, ptr %97, align 8, !tbaa !5
  %1085 = load i32, ptr %98, align 4, !tbaa !20
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds double, ptr %1084, i64 %1086
  store double %1083, ptr %1087, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #7
  store i32 1, ptr %99, align 4, !tbaa !20
  br label %1088

1088:                                             ; preds = %1123, %1072
  %1089 = load i32, ptr %99, align 4, !tbaa !20
  %1090 = load i32, ptr %30, align 4, !tbaa !20
  %1091 = icmp slt i32 %1089, %1090
  br i1 %1091, label %1092, label %1098

1092:                                             ; preds = %1088
  %1093 = load i32, ptr %98, align 4, !tbaa !20
  %1094 = load i32, ptr %99, align 4, !tbaa !20
  %1095 = add nsw i32 %1093, %1094
  %1096 = load i32, ptr %29, align 4, !tbaa !20
  %1097 = icmp slt i32 %1095, %1096
  br label %1098

1098:                                             ; preds = %1092, %1088
  %1099 = phi i1 [ false, %1088 ], [ %1097, %1092 ]
  br i1 %1099, label %1101, label %1100

1100:                                             ; preds = %1098
  store i32 62, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #7
  br label %1126

1101:                                             ; preds = %1098
  %1102 = load i32, ptr %98, align 4, !tbaa !20
  %1103 = sext i32 %1102 to i64
  %1104 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %1103) #7
  %1105 = load i32, ptr %99, align 4, !tbaa !20
  %1106 = sext i32 %1105 to i64
  %1107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1104, i64 noundef %1106) #7
  %1108 = load double, ptr %1107, align 8, !tbaa !25
  %1109 = load ptr, ptr %97, align 8, !tbaa !5
  %1110 = load i32, ptr %98, align 4, !tbaa !20
  %1111 = load i32, ptr %99, align 4, !tbaa !20
  %1112 = add nsw i32 %1110, %1111
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds double, ptr %1109, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !25
  %1116 = load ptr, ptr %97, align 8, !tbaa !5
  %1117 = load i32, ptr %98, align 4, !tbaa !20
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds double, ptr %1116, i64 %1118
  %1120 = load double, ptr %1119, align 8, !tbaa !25
  %1121 = fneg double %1108
  %1122 = call double @llvm.fmuladd.f64(double %1121, double %1115, double %1120)
  store double %1122, ptr %1119, align 8, !tbaa !25
  br label %1123

1123:                                             ; preds = %1101
  %1124 = load i32, ptr %99, align 4, !tbaa !20
  %1125 = add nsw i32 %1124, 1
  store i32 %1125, ptr %99, align 4, !tbaa !20
  br label %1088, !llvm.loop !47

1126:                                             ; preds = %1100
  br label %1127

1127:                                             ; preds = %1126
  %1128 = load i32, ptr %98, align 4, !tbaa !20
  %1129 = add nsw i32 %1128, -1
  store i32 %1129, ptr %98, align 4, !tbaa !20
  br label %1068, !llvm.loop !48

1130:                                             ; preds = %1071
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #7
  %1131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef 0) #7
  store ptr %1131, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #7
  store i32 0, ptr %101, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #7
  store i32 0, ptr %102, align 4, !tbaa !20
  br label %1132

1132:                                             ; preds = %1195, %1130
  %1133 = load i32, ptr %102, align 4, !tbaa !20
  %1134 = load i32, ptr %14, align 4, !tbaa !20
  %1135 = icmp slt i32 %1133, %1134
  br i1 %1135, label %1137, label %1136

1136:                                             ; preds = %1132
  store i32 65, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #7
  br label %1198

1137:                                             ; preds = %1132
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #7
  %1138 = load ptr, ptr %9, align 8, !tbaa !5
  %1139 = load i32, ptr %102, align 4, !tbaa !20
  %1140 = sext i32 %1139 to i64
  %1141 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1138, i64 noundef %1140) #7
  %1142 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1141, i64 noundef 0) #7
  store ptr %1142, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #7
  %1143 = load i32, ptr %102, align 4, !tbaa !20
  %1144 = sext i32 %1143 to i64
  %1145 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %15, i64 noundef %1144)
          to label %1146 unwind label %1158

1146:                                             ; preds = %1137
  %1147 = getelementptr inbounds { ptr, i64 }, ptr %104, i32 0, i32 0
  %1148 = extractvalue { ptr, i64 } %1145, 0
  store ptr %1148, ptr %1147, align 8
  %1149 = getelementptr inbounds { ptr, i64 }, ptr %104, i32 0, i32 1
  %1150 = extractvalue { ptr, i64 } %1145, 1
  store i64 %1150, ptr %1149, align 8
  %1151 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %104) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #7
  br i1 %1151, label %1152, label %1177

1152:                                             ; preds = %1146
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #7
  store i32 0, ptr %105, align 4, !tbaa !20
  br label %1153

1153:                                             ; preds = %1173, %1152
  %1154 = load i32, ptr %105, align 4, !tbaa !20
  %1155 = load i32, ptr %11, align 4, !tbaa !20
  %1156 = icmp slt i32 %1154, %1155
  br i1 %1156, label %1162, label %1157

1157:                                             ; preds = %1153
  store i32 68, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #7
  br label %1176

1158:                                             ; preds = %1137
  %1159 = landingpad { ptr, i32 }
          cleanup
  %1160 = extractvalue { ptr, i32 } %1159, 0
  store ptr %1160, ptr %18, align 8
  %1161 = extractvalue { ptr, i32 } %1159, 1
  store i32 %1161, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #7
  br label %1200

1162:                                             ; preds = %1153
  %1163 = load ptr, ptr %100, align 8, !tbaa !5
  %1164 = load i32, ptr %101, align 4, !tbaa !20
  %1165 = add nsw i32 %1164, 1
  store i32 %1165, ptr %101, align 4, !tbaa !20
  %1166 = sext i32 %1164 to i64
  %1167 = getelementptr inbounds double, ptr %1163, i64 %1166
  %1168 = load double, ptr %1167, align 8, !tbaa !25
  %1169 = load ptr, ptr %103, align 8, !tbaa !5
  %1170 = load i32, ptr %105, align 4, !tbaa !20
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1169, i64 %1171
  store double %1168, ptr %1172, align 8, !tbaa !25
  br label %1173

1173:                                             ; preds = %1162
  %1174 = load i32, ptr %105, align 4, !tbaa !20
  %1175 = add nsw i32 %1174, 1
  store i32 %1175, ptr %105, align 4, !tbaa !20
  br label %1153, !llvm.loop !49

1176:                                             ; preds = %1157
  br label %1194

1177:                                             ; preds = %1146
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #7
  store i32 0, ptr %106, align 4, !tbaa !20
  br label %1178

1178:                                             ; preds = %1190, %1177
  %1179 = load i32, ptr %106, align 4, !tbaa !20
  %1180 = load i32, ptr %11, align 4, !tbaa !20
  %1181 = icmp slt i32 %1179, %1180
  br i1 %1181, label %1183, label %1182

1182:                                             ; preds = %1178
  store i32 71, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #7
  br label %1193

1183:                                             ; preds = %1178
  %1184 = getelementptr inbounds %"class.sptk::NonrecursiveMaximumLikelihoodParameterGeneration", ptr %107, i32 0, i32 4
  %1185 = load double, ptr %1184, align 8, !tbaa !24
  %1186 = load ptr, ptr %103, align 8, !tbaa !5
  %1187 = load i32, ptr %106, align 4, !tbaa !20
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds double, ptr %1186, i64 %1188
  store double %1185, ptr %1189, align 8, !tbaa !25
  br label %1190

1190:                                             ; preds = %1183
  %1191 = load i32, ptr %106, align 4, !tbaa !20
  %1192 = add nsw i32 %1191, 1
  store i32 %1192, ptr %106, align 4, !tbaa !20
  br label %1178, !llvm.loop !50

1193:                                             ; preds = %1182
  br label %1194

1194:                                             ; preds = %1193, %1176
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  br label %1195

1195:                                             ; preds = %1194
  %1196 = load i32, ptr %102, align 4, !tbaa !20
  %1197 = add nsw i32 %1196, 1
  store i32 %1197, ptr %102, align 4, !tbaa !20
  br label %1132, !llvm.loop !51

1198:                                             ; preds = %1136
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #7
  store i1 true, ptr %5, align 1
  store i32 1, ptr %13, align 4
  br label %1199

1199:                                             ; preds = %1198, %599
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #7
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #7
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #7
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %1210

1200:                                             ; preds = %1158, %847, %601, %321, %294
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  br label %1201

1201:                                             ; preds = %1200, %290
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  br label %1202

1202:                                             ; preds = %1201, %286
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #7
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  br label %1203

1203:                                             ; preds = %1202, %285
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  br label %1204

1204:                                             ; preds = %1203, %273
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #7
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #7
  br label %1205

1205:                                             ; preds = %1204, %272
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #7
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  br label %1206

1206:                                             ; preds = %1205, %263
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %1207

1207:                                             ; preds = %1206, %251
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %1208

1208:                                             ; preds = %1207, %182
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #7
  br label %1209

1209:                                             ; preds = %1208, %158
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %1213

1210:                                             ; preds = %1199, %141
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %1211

1211:                                             ; preds = %1210, %123
  %1212 = load i1, ptr %5, align 1
  ret i1 %1212

1213:                                             ; preds = %1209
  %1214 = load ptr, ptr %18, align 8
  %1215 = load i32, ptr %19, align 4
  %1216 = insertvalue { ptr, i32 } poison, ptr %1214, 0
  %1217 = insertvalue { ptr, i32 } %1216, i32 %1215, 1
  resume { ptr, i32 } %1217

1218:                                             ; preds = %840
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_19CheckSizeERKSt6vectorIS0_IdSaIdEESaIS2_EEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #1

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_19CheckSizeERKSt6vectorIN4sptk15SymmetricMatrixESaIS2_EEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #3

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr, i32, ptr, i32, ptr noundef nonnull align 1 dereferenceable(1)) #4

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK4sptk15SymmetricMatrix6InvertEPS0_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind noalias writable sret(%"class.sptk::SymmetricMatrix::Row") align 8, ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) #3 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_110CheckRangeEiiPKdb(i32 noundef, i32 noundef, ptr noundef, i1 noundef zeroext) #1

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !16, i64 56}
!10 = !{!"_ZTSN4sptk48NonrecursiveMaximumLikelihoodParameterGenerationE", !11, i64 8, !12, i64 16, !16, i64 40, !17, i64 48, !16, i64 56, !11, i64 60}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"double", !7, i64 0}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!11, !11, i64 0}
!21 = !{!10, !11, i64 8}
!22 = !{!16, !16, i64 0}
!23 = !{!10, !16, i64 40}
!24 = !{!10, !17, i64 48}
!25 = !{!17, !17, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!10, !11, i64 60}
!29 = distinct !{!29, !27}
!30 = distinct !{!30, !27}
!31 = distinct !{!31, !27}
!32 = distinct !{!32, !27}
!33 = distinct !{!33, !27}
!34 = distinct !{!34, !27}
!35 = distinct !{!35, !27}
!36 = distinct !{!36, !27}
!37 = distinct !{!37, !27}
!38 = distinct !{!38, !27}
!39 = distinct !{!39, !27}
!40 = distinct !{!40, !27}
!41 = distinct !{!41, !27}
!42 = distinct !{!42, !27}
!43 = distinct !{!43, !27}
!44 = distinct !{!44, !27}
!45 = distinct !{!45, !27}
!46 = distinct !{!46, !27}
!47 = distinct !{!47, !27}
!48 = distinct !{!48, !27}
!49 = distinct !{!49, !27}
!50 = distinct !{!50, !27}
!51 = distinct !{!51, !27}


; 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::vector.16" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.20" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.3" = type { i8 }
%"class.std::allocator" = type { i8 }
%"class.std::vector.6" = type { %"struct.std::_Vector_base.7" }
%"struct.std::_Vector_base.7" = type { %"struct.std::_Vector_base<sptk::SymmetricMatrix, std::allocator<sptk::SymmetricMatrix>>::_Vector_impl" }
%"struct.std::_Vector_base<sptk::SymmetricMatrix, std::allocator<sptk::SymmetricMatrix>>::_Vector_impl" = type { %"struct.std::_Vector_base<sptk::SymmetricMatrix, std::allocator<sptk::SymmetricMatrix>>::_Vector_impl_data" }
%"struct.std::_Vector_base<sptk::SymmetricMatrix, std::allocator<sptk::SymmetricMatrix>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.sptk::SymmetricMatrix" = type { ptr, i32, %"class.std::vector.1", %"class.std::vector.11" }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl" }
%"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl" = type { %"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.8" = type { i8 }
%"class.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK4sptk48NonrecursiveMaximumLikelihoodParameterGeneration3RunERKSt6vectorIS1_IdSaIdEESaIS3_EERKS1_INS_15SymmetricMatrixESaIS8_EEPS5_(ptr noundef nonnull align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef %3) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::vector.16", align 8
  %6 = alloca i8, align 1
  %7 = alloca %"class.std::allocator.20", align 1
  %8 = alloca %"struct.std::_Bit_reference", align 8
  %9 = alloca i8, align 1
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca %"class.std::vector.1", align 8
  %12 = alloca %"class.std::allocator.3", align 1
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca %"class.std::vector.6", align 8
  %15 = alloca %"class.sptk::SymmetricMatrix", align 8
  %16 = alloca %"class.std::allocator.8", align 1
  %17 = alloca %"class.std::vector.1", align 8
  %18 = alloca %"class.std::allocator.3", align 1
  %19 = alloca %"class.std::vector", align 8
  %20 = alloca %"class.std::vector.1", align 8
  %21 = alloca %"class.std::allocator.3", align 1
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca %"class.std::vector.1", align 8
  %24 = alloca %"class.std::allocator.3", align 1
  %25 = alloca %"class.std::vector.1", align 8
  %26 = alloca %"class.std::allocator.3", align 1
  %27 = alloca %"struct.std::_Bit_reference", align 8
  %28 = alloca %"class.sptk::SymmetricMatrix", align 8
  %29 = alloca %"struct.std::_Bit_reference", align 8
  %30 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %31 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %32 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %33 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %34 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %35 = alloca %"struct.std::_Bit_reference", align 8
  %36 = getelementptr inbounds i8, ptr %0, i64 56
  %37 = load i8, ptr %36, align 8, !tbaa !5, !range !17, !noundef !18
  %38 = trunc nuw i8 %37 to i1
  br i1 %38, label %39, label %531

39:                                               ; preds = %4
  %40 = tail call noundef zeroext i1 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  br i1 %40, label %531, label %41

41:                                               ; preds = %39
  %42 = tail call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %43 = tail call noundef i64 @_ZNKSt6vectorIN4sptk15SymmetricMatrixESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #6
  %44 = icmp ne i64 %42, %43
  %45 = icmp eq ptr %3, null
  %or.cond = or i1 %45, %44
  br i1 %or.cond, label %531, label %46

46:                                               ; preds = %41
  %47 = getelementptr inbounds i8, ptr %0, i64 16
  %48 = tail call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %47) #6
  %49 = trunc i64 %48 to i32
  %50 = getelementptr inbounds i8, ptr %0, i64 8
  %51 = load i32, ptr %50, align 8, !tbaa !19
  %52 = add nsw i32 %51, 1
  %53 = mul nsw i32 %52, %49
  %54 = tail call noundef zeroext i1 @_ZN12_GLOBAL__N_19CheckSizeERKSt6vectorIS0_IdSaIdEESaIS2_EEi(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %53)
  br i1 %54, label %55, label %531

55:                                               ; preds = %46
  %56 = tail call noundef zeroext i1 @_ZN12_GLOBAL__N_19CheckSizeERKSt6vectorIN4sptk15SymmetricMatrixESaIS2_EEi(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %53)
  br i1 %56, label %57, label %531

57:                                               ; preds = %55
  %58 = tail call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %59 = trunc i64 %58 to i32
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #6
  %sext = shl i64 %58, 32
  %60 = ashr exact i64 %sext, 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  store i8 1, ptr %6, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %60, ptr noundef nonnull align 1 dereferenceable(1) %6, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %61 unwind label %68

61:                                               ; preds = %57
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  %62 = getelementptr inbounds i8, ptr %0, i64 40
  %63 = load i8, ptr %62, align 8, !tbaa !21, !range !17, !noundef !18
  %64 = trunc nuw i8 %63 to i1
  %65 = icmp sgt i32 %59, 0
  %or.cond587 = and i1 %65, %64
  br i1 %or.cond587, label %.lr.ph, label %.loopexit468

.lr.ph:                                           ; preds = %61
  %66 = getelementptr inbounds i8, ptr %0, i64 48
  %67 = getelementptr inbounds i8, ptr %8, i64 8
  %wide.trip.count = and i64 %58, 2147483647
  br label %70

68:                                               ; preds = %57
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  br label %530

70:                                               ; preds = %.lr.ph, %84
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %84 ]
  %71 = load double, ptr %66, align 8, !tbaa !22
  %72 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #6
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef 0) #6
  %74 = load double, ptr %73, align 8, !tbaa !23
  %75 = fcmp oeq double %71, %74
  br i1 %75, label %76, label %84

76:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #6
  %77 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %indvars.iv)
          to label %78 unwind label %82

78:                                               ; preds = %76
  %79 = extractvalue { ptr, i64 } %77, 0
  store ptr %79, ptr %8, align 8
  %80 = extractvalue { ptr, i64 } %77, 1
  store i64 %80, ptr %67, align 8
  %81 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %8, i1 noundef zeroext false) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  br label %84

82:                                               ; preds = %76
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  br label %529

84:                                               ; preds = %70, %78
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit468, label %70, !llvm.loop !24

.loopexit468:                                     ; preds = %84, %61
  %85 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %5) #6
  %.fca.0.extract247 = extractvalue { ptr, i32 } %85, 0
  %.fca.1.extract248 = extractvalue { ptr, i32 } %85, 1
  %86 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %5) #6
  %.fca.0.extract = extractvalue { ptr, i32 } %86, 0
  %.fca.1.extract = extractvalue { ptr, i32 } %86, 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  store i8 1, ptr %9, align 1, !tbaa !20
  %87 = invoke noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr %.fca.0.extract247, i32 %.fca.1.extract248, ptr %.fca.0.extract, i32 %.fca.1.extract, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %88 unwind label %111

88:                                               ; preds = %.loopexit468
  %89 = trunc i64 %87 to i32
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  %90 = getelementptr inbounds i8, ptr %0, i64 60
  %91 = load i32, ptr %90, align 4, !tbaa !26
  %92 = shl nsw i32 %91, 1
  %93 = or disjoint i32 %92, 1
  %94 = mul i32 %52, %89
  %95 = mul nsw i32 %93, %52
  %.fr = freeze i32 %95
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  %sext401 = shl i64 %87, 32
  %96 = ashr exact i64 %sext401, 32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #6
  %97 = sext i32 %53 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %97, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %98 unwind label %113

98:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %96, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %99 unwind label %115

99:                                               ; preds = %98
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #6
  invoke void @_ZN4sptk15SymmetricMatrixC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %15, i32 noundef %53)
          to label %100 unwind label %118

100:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #6
  call void @_ZNSaIN4sptk15SymmetricMatrixEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEC2EmRKS1_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %96, ptr noundef nonnull align 8 dereferenceable(64) %15, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %101 unwind label %120

101:                                              ; preds = %100
  call void @_ZNSt15__new_allocatorIN4sptk15SymmetricMatrixEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #6
  %102 = sext i32 %94 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %102, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %103 unwind label %123

103:                                              ; preds = %101
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #6
  %104 = sext i32 %.fr to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #6
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %104, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %105 unwind label %125

105:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %102, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %106 unwind label %127

106:                                              ; preds = %105
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %102, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %107 unwind label %130

107:                                              ; preds = %106
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #6
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %102, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %108 unwind label %132

108:                                              ; preds = %107
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #6
  %109 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  %.not = icmp eq i64 %109, %60
  br i1 %.not, label %136, label %110

110:                                              ; preds = %108
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %60)
          to label %136 unwind label %134

111:                                              ; preds = %.loopexit468
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  br label %529

113:                                              ; preds = %88
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %117

115:                                              ; preds = %98
  %116 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  br label %117

117:                                              ; preds = %115, %113
  %.pn = phi { ptr, i32 } [ %116, %115 ], [ %114, %113 ]
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  br label %528

118:                                              ; preds = %99
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %122

120:                                              ; preds = %100
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN4sptk15SymmetricMatrixEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #6
  br label %122

122:                                              ; preds = %120, %118
  %.pn403 = phi { ptr, i32 } [ %121, %120 ], [ %119, %118 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #6
  br label %527

123:                                              ; preds = %101
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  br label %526

125:                                              ; preds = %103
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %129

127:                                              ; preds = %105
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  br label %129

129:                                              ; preds = %127, %125
  %.pn405 = phi { ptr, i32 } [ %128, %127 ], [ %126, %125 ]
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  br label %525

130:                                              ; preds = %106
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  br label %524

132:                                              ; preds = %107
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #6
  br label %523

134:                                              ; preds = %110
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %522

136:                                              ; preds = %110, %108
  br i1 %65, label %.lr.ph489, label %.critedge450.preheader

.lr.ph489:                                        ; preds = %136
  %137 = sext i32 %52 to i64
  %wide.trip.count619 = and i64 %58, 2147483647
  br label %143

.lr.ph506:                                        ; preds = %150
  %138 = getelementptr inbounds i8, ptr %27, i64 8
  %139 = icmp sgt i32 %53, 0
  %140 = getelementptr inbounds i8, ptr %29, i64 8
  %sext736 = shl i64 %87, 32
  %141 = ashr exact i64 %sext736, 32
  %142 = and i64 %58, 2147483647
  %wide.trip.count636 = and i64 %58, 2147483647
  %wide.trip.count632 = zext nneg i32 %53 to i64
  br label %245

143:                                              ; preds = %.lr.ph489, %150
  %indvars.iv616 = phi i64 [ 0, %.lr.ph489 ], [ %indvars.iv.next617, %150 ]
  %144 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv616) #6
  %145 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %144) #6
  %.not434 = icmp eq i64 %145, %137
  br i1 %.not434, label %150, label %146

146:                                              ; preds = %143
  %147 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv616) #6
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %147, i64 noundef %137)
          to label %150 unwind label %148

148:                                              ; preds = %146
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %522

150:                                              ; preds = %143, %146
  %indvars.iv.next617 = add nuw nsw i64 %indvars.iv616, 1
  %exitcond620.not = icmp eq i64 %indvars.iv.next617, %wide.trip.count619
  br i1 %exitcond620.not, label %.lr.ph506, label %143, !llvm.loop !27

.critedge450.preheader:                           ; preds = %357, %136
  %.not407.lcssa = phi i1 [ true, %136 ], [ %.not407, %357 ]
  %151 = icmp sgt i32 %89, 0
  br i1 %151, label %.preheader463.lr.ph, label %.preheader460

.preheader463.lr.ph:                              ; preds = %.critedge450.preheader
  %.not410532 = icmp sgt i32 %51, -1
  %.not414514 = icmp slt i32 %91, 0
  %152 = icmp sgt i32 %49, 0
  %or.cond769 = and i1 %.not410532, %152
  br i1 %or.cond769, label %.preheader463.us542.preheader, label %.preheader460

.preheader463.us542.preheader:                    ; preds = %.preheader463.lr.ph
  %153 = zext nneg i32 %52 to i64
  %154 = and i64 %87, 2147483647
  %155 = sext i32 %92 to i64
  %wide.trip.count667 = and i64 %87, 2147483647
  %wide.trip.count652 = and i64 %48, 2147483647
  br label %.preheader463.us542

.preheader463.us542:                              ; preds = %.preheader463.us542.preheader, %._crit_edge536.split.split.us.us
  %indvars.iv664 = phi i64 [ 0, %.preheader463.us542.preheader ], [ %indvars.iv.next665, %._crit_edge536.split.split.us.us ]
  %156 = trunc i64 %indvars.iv664 to i32
  %157 = mul i32 %52, %156
  %158 = zext i32 %157 to i64
  br label %.preheader462.lr.ph.us.us

.preheader462.lr.ph.us.us:                        ; preds = %._crit_edge528.split.us.us.us, %.preheader463.us542
  %indvars.iv659 = phi i64 [ %indvars.iv.next660, %._crit_edge528.split.us.us.us ], [ 0, %.preheader463.us542 ]
  %159 = add nuw nsw i64 %indvars.iv659, %158
  br label %.preheader462.us.us.us

.preheader462.us.us.us:                           ; preds = %._crit_edge525.us.us.us, %.preheader462.lr.ph.us.us
  %indvars.iv654 = phi i64 [ %indvars.iv.next655, %._crit_edge525.us.us.us ], [ 0, %.preheader462.lr.ph.us.us ]
  %160 = icmp eq i64 %indvars.iv654, 0
  %161 = sub nsw i64 %indvars.iv654, %indvars.iv659
  %162 = trunc nsw i64 %161 to i32
  br label %163

163:                                              ; preds = %._crit_edge522.us.us.us, %.preheader462.us.us.us
  %indvars.iv649 = phi i64 [ %indvars.iv.next650, %._crit_edge522.us.us.us ], [ 0, %.preheader462.us.us.us ]
  %164 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %indvars.iv649) #6
  %165 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #6
  %166 = trunc i64 %165 to i32
  %167 = add nsw i32 %166, -1
  %168 = sdiv i32 %167, 2
  %169 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %indvars.iv649) #6
  %170 = sext i32 %168 to i64
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %169, i64 noundef %170) #6
  %172 = load i32, ptr %90, align 4, !tbaa !26
  %.not412518.us.us.us = icmp slt i32 %172, 0
  br i1 %.not412518.us.us.us, label %._crit_edge522.us.us.us, label %.lr.ph521.us.us.us

173:                                              ; preds = %.lr.ph521.us.us.us, %.critedge10.us.us.us
  %indvars.iv646 = phi i64 [ %241, %.lr.ph521.us.us.us ], [ %indvars.iv.next647, %.critedge10.us.us.us ]
  %174 = add nsw i64 %indvars.iv646, %indvars.iv664
  %175 = trunc nsw i64 %174 to i32
  %or.cond451.us.us.us = icmp ult i32 %175, %89
  br i1 %or.cond451.us.us.us, label %176, label %.critedge10.us.us.us

176:                                              ; preds = %173
  br i1 %160, label %177, label %.lr.ph511.us.us.us

177:                                              ; preds = %176
  %178 = trunc nsw i64 %indvars.iv646 to i32
  %179 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110CheckRangeEiiPKdb(i32 noundef %178, i32 noundef %168, ptr noundef nonnull %171, i1 noundef zeroext true)
  br i1 %179, label %180, label %.lr.ph511.us.us.us

180:                                              ; preds = %177
  %181 = sub nsw i64 0, %indvars.iv646
  %182 = getelementptr inbounds double, ptr %171, i64 %181
  %183 = load double, ptr %182, align 8, !tbaa !23
  %184 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %174) #6
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %184, i64 noundef %239) #6
  %186 = load double, ptr %185, align 8, !tbaa !23
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %159) #6
  %188 = load double, ptr %187, align 8, !tbaa !23
  %189 = call double @llvm.fmuladd.f64(double %183, double %186, double %188)
  store double %189, ptr %187, align 8, !tbaa !23
  br label %.lr.ph511.us.us.us

.lr.ph511.us.us.us:                               ; preds = %180, %177, %176
  %190 = sub nsw i64 0, %indvars.iv646
  %191 = trunc nsw i64 %indvars.iv646 to i32
  br label %212

.critedge10.us.us.us:                             ; preds = %209, %._crit_edge512.us.us.us, %173
  %indvars.iv.next647 = add nsw i64 %indvars.iv646, 1
  %192 = load i32, ptr %90, align 4, !tbaa !26
  %193 = sext i32 %192 to i64
  %.not412.us.us.us.not = icmp slt i64 %indvars.iv646, %193
  br i1 %.not412.us.us.us.not, label %173, label %._crit_edge522.us.us.us, !llvm.loop !28

.lr.ph517.us.us.us:                               ; preds = %._crit_edge512.us.us.us, %209
  %indvars.iv643 = phi i64 [ %indvars.iv.next644, %209 ], [ 0, %._crit_edge512.us.us.us ]
  %194 = trunc i64 %indvars.iv643 to i32
  %195 = mul i32 %52, %194
  %196 = add i32 %195, %162
  %197 = sub nsw i64 %indvars.iv643, %indvars.iv646
  %198 = trunc nsw i64 %197 to i32
  %199 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110CheckRangeEiiPKdb(i32 noundef %198, i32 noundef %168, ptr noundef nonnull %171, i1 noundef zeroext false)
  %200 = icmp sgt i32 %196, -1
  %or.cond12.us.us.us = select i1 %199, i1 %200, i1 false
  br i1 %or.cond12.us.us.us, label %201, label %209

201:                                              ; preds = %.lr.ph517.us.us.us
  %202 = getelementptr inbounds double, ptr %171, i64 %197
  %203 = load double, ptr %202, align 8, !tbaa !23
  %204 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %159) #6
  %205 = zext nneg i32 %196 to i64
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %205) #6
  %207 = load double, ptr %206, align 8, !tbaa !23
  %208 = call double @llvm.fmuladd.f64(double %.1376.us.us.us, double %203, double %207)
  store double %208, ptr %206, align 8, !tbaa !23
  br label %209

209:                                              ; preds = %201, %.lr.ph517.us.us.us
  %indvars.iv.next644 = add nuw nsw i64 %indvars.iv643, 1
  %.not414.us.us.us = icmp slt i64 %indvars.iv643, %155
  %210 = add nuw nsw i64 %indvars.iv.next644, %indvars.iv664
  %211 = icmp ult i64 %210, %154
  %or.cond453.us.us.us = select i1 %.not414.us.us.us, i1 %211, i1 false
  br i1 %or.cond453.us.us.us, label %.lr.ph517.us.us.us, label %.critedge10.us.us.us, !llvm.loop !29

212:                                              ; preds = %235, %.lr.ph511.us.us.us
  %indvars.iv638 = phi i64 [ %indvars.iv.next639, %235 ], [ 0, %.lr.ph511.us.us.us ]
  %.0375508.us.us.us = phi double [ %.1376.us.us.us, %235 ], [ 0.000000e+00, %.lr.ph511.us.us.us ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #6
  %213 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %174) #6
  %214 = mul nuw nsw i64 %indvars.iv638, %153
  %215 = add nuw nsw i64 %214, %indvars.iv659
  %216 = trunc nuw i64 %215 to i32
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %34, ptr noundef nonnull align 8 dereferenceable(64) %213, i32 noundef %216)
          to label %217 unwind label %.split.us.split.us.split.us

217:                                              ; preds = %212
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %34, i32 noundef %242)
          to label %219 unwind label %.split530.us.split.us.split.us

219:                                              ; preds = %217
  %220 = load double, ptr %218, align 8, !tbaa !23
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %34) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #6
  %221 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %indvars.iv638) #6
  %222 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %221) #6
  %223 = trunc i64 %222 to i32
  %224 = add nsw i32 %223, -1
  %225 = sdiv i32 %224, 2
  %226 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %indvars.iv638) #6
  %227 = sext i32 %225 to i64
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %226, i64 noundef %227) #6
  %229 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110CheckRangeEiiPKdb(i32 noundef %191, i32 noundef %225, ptr noundef nonnull %228, i1 noundef zeroext true)
  %230 = fcmp une double %220, 0.000000e+00
  %or.cond8.us.us.us = select i1 %229, i1 %230, i1 false
  br i1 %or.cond8.us.us.us, label %231, label %235

231:                                              ; preds = %219
  %232 = getelementptr inbounds double, ptr %228, i64 %190
  %233 = load double, ptr %232, align 8, !tbaa !23
  %234 = call double @llvm.fmuladd.f64(double %233, double %220, double %.0375508.us.us.us)
  br label %235

235:                                              ; preds = %231, %219
  %.1376.us.us.us = phi double [ %234, %231 ], [ %.0375508.us.us.us, %219 ]
  %indvars.iv.next639 = add nuw nsw i64 %indvars.iv638, 1
  %exitcond642.not = icmp eq i64 %indvars.iv.next639, %wide.trip.count652
  br i1 %exitcond642.not, label %._crit_edge512.us.us.us, label %212, !llvm.loop !30

._crit_edge522.us.us.us:                          ; preds = %.critedge10.us.us.us, %163
  %indvars.iv.next650 = add nuw nsw i64 %indvars.iv649, 1
  %exitcond653.not = icmp eq i64 %indvars.iv.next650, %wide.trip.count652
  br i1 %exitcond653.not, label %._crit_edge525.us.us.us, label %163, !llvm.loop !31

._crit_edge512.us.us.us:                          ; preds = %235
  %236 = fcmp oeq double %.1376.us.us.us, 0.000000e+00
  %brmerge = select i1 %236, i1 true, i1 %.not414514
  br i1 %brmerge, label %.critedge10.us.us.us, label %.lr.ph517.us.us.us

.lr.ph521.us.us.us:                               ; preds = %163
  %237 = sub nsw i32 0, %172
  %238 = mul nuw nsw i64 %indvars.iv649, %153
  %239 = add nuw nsw i64 %238, %indvars.iv659
  %240 = add nuw nsw i64 %238, %indvars.iv654
  %241 = sext i32 %237 to i64
  %242 = trunc nuw i64 %240 to i32
  br label %173

._crit_edge525.us.us.us:                          ; preds = %._crit_edge522.us.us.us
  %indvars.iv.next655 = add nuw nsw i64 %indvars.iv654, 1
  %exitcond658.not = icmp eq i64 %indvars.iv.next655, %153
  br i1 %exitcond658.not, label %._crit_edge528.split.us.us.us, label %.preheader462.us.us.us, !llvm.loop !32

._crit_edge528.split.us.us.us:                    ; preds = %._crit_edge525.us.us.us
  %indvars.iv.next660 = add nuw nsw i64 %indvars.iv659, 1
  %exitcond663.not = icmp eq i64 %indvars.iv.next660, %153
  br i1 %exitcond663.not, label %._crit_edge536.split.split.us.us, label %.preheader462.lr.ph.us.us, !llvm.loop !33

._crit_edge536.split.split.us.us:                 ; preds = %._crit_edge528.split.us.us.us
  %indvars.iv.next665 = add nuw nsw i64 %indvars.iv664, 1
  %exitcond668.not = icmp eq i64 %indvars.iv.next665, %wide.trip.count667
  br i1 %exitcond668.not, label %.preheader460, label %.preheader463.us542, !llvm.loop !34

.split.us.split.us.split.us:                      ; preds = %212
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %362

.split530.us.split.us.split.us:                   ; preds = %217
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %34) #6
  br label %362

245:                                              ; preds = %.lr.ph506, %357
  %indvars.iv634 = phi i64 [ 0, %.lr.ph506 ], [ %indvars.iv.next635, %357 ]
  %.not407505 = phi i1 [ false, %.lr.ph506 ], [ %.not407, %357 ]
  %.0366503 = phi i32 [ 0, %.lr.ph506 ], [ %.2368, %357 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #6
  %246 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %indvars.iv634)
          to label %247 unwind label %251

247:                                              ; preds = %245
  %248 = extractvalue { ptr, i64 } %246, 0
  store ptr %248, ptr %27, align 8
  %249 = extractvalue { ptr, i64 } %246, 1
  store i64 %249, ptr %138, align 8
  %250 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %27) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  br i1 %250, label %253, label %357

251:                                              ; preds = %245
  %252 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  br label %522

253:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %28) #6
  invoke void @_ZN4sptk15SymmetricMatrixC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %28, i32 noundef 0)
          to label %254 unwind label %258

254:                                              ; preds = %253
  %255 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv634) #6
  %256 = invoke noundef zeroext i1 @_ZNK4sptk15SymmetricMatrix6InvertEPS0_(ptr noundef nonnull align 8 dereferenceable(64) %255, ptr noundef nonnull %28)
          to label %257 unwind label %260

257:                                              ; preds = %254
  br i1 %256, label %262, label %.thread

.thread:                                          ; preds = %257
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %28) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %28) #6
  br label %.loopexit457

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

260:                                              ; preds = %254
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %358

262:                                              ; preds = %257
  %263 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv634) #6
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %263, i64 noundef 0) #6
  br i1 %139, label %.lr.ph500, label %._crit_edge501

.lr.ph500:                                        ; preds = %262
  %265 = sext i32 %.0366503 to i64
  br label %266

266:                                              ; preds = %.lr.ph500, %.loopexit464
  %indvars.iv629 = phi i64 [ 0, %.lr.ph500 ], [ %indvars.iv.next630, %.loopexit464 ]
  %267 = trunc nuw nsw i64 %indvars.iv629 to i32
  %268 = sdiv i32 %267, %52
  %269 = sext i32 %268 to i64
  %270 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %269) #6
  %271 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %270) #6
  %272 = trunc i64 %271 to i32
  %.not417490 = icmp slt i32 %272, 0
  br i1 %.not417490, label %.critedge586, label %.lr.ph493

.lr.ph493:                                        ; preds = %266
  %273 = add nsw i32 %272, -1
  %274 = sdiv i32 %273, 2
  %275 = sub nsw i32 0, %274
  %276 = zext nneg i32 %274 to i64
  %277 = sext i32 %275 to i64
  %278 = add nuw nsw i32 %274, 1
  br label %.outer

.outer:                                           ; preds = %.thread738, %.lr.ph493
  %indvars.iv621.ph = phi i64 [ %indvars.iv.next622740, %.thread738 ], [ %277, %.lr.ph493 ]
  %.0371492.ph = phi i1 [ true, %.thread738 ], [ false, %.lr.ph493 ]
  br label %279

._crit_edge:                                      ; preds = %299
  br i1 %.0371492.ph, label %.loopexit464, label %.critedge586

279:                                              ; preds = %.outer, %299
  %indvars.iv621 = phi i64 [ %indvars.iv.next622, %299 ], [ %indvars.iv621.ph, %.outer ]
  %280 = add nsw i64 %indvars.iv621, %265
  %281 = add nsw i64 %indvars.iv621, %indvars.iv634
  %282 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %269) #6
  %283 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %282, i64 noundef %276) #6
  %284 = icmp sgt i64 %280, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #6
  %.not428 = icmp slt i64 %280, %141
  %or.cond447 = and i1 %284, %.not428
  br i1 %or.cond447, label %285, label %.critedge

285:                                              ; preds = %279
  %286 = getelementptr inbounds double, ptr %283, i64 %indvars.iv621
  %287 = load double, ptr %286, align 8, !tbaa !23
  %288 = fcmp une double %287, 0.000000e+00
  %289 = trunc nsw i64 %281 to i32
  %290 = icmp ult i32 %289, %59
  %or.cond448 = select i1 %288, i1 %290, i1 false
  br i1 %or.cond448, label %291, label %.critedge6

291:                                              ; preds = %285
  %292 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %281)
          to label %293 unwind label %297

293:                                              ; preds = %291
  %294 = extractvalue { ptr, i64 } %292, 0
  store ptr %294, ptr %29, align 8
  %295 = extractvalue { ptr, i64 } %292, 1
  store i64 %295, ptr %140, align 8
  %296 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  br i1 %296, label %299, label %.thread738

.critedge:                                        ; preds = %279
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  br label %.thread738

297:                                              ; preds = %291
  %298 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  br label %358

.critedge6:                                       ; preds = %285
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  br label %299

299:                                              ; preds = %.critedge6, %293
  %indvars.iv.next622 = add nsw i64 %indvars.iv621, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next622 to i32
  %exitcond623.not = icmp eq i32 %278, %lftr.wideiv
  br i1 %exitcond623.not, label %._crit_edge, label %279, !llvm.loop !35

.thread738:                                       ; preds = %293, %.critedge
  %indvars.iv.next622740 = add nsw i64 %indvars.iv621, 1
  %lftr.wideiv741 = trunc i64 %indvars.iv.next622740 to i32
  %exitcond623.not742 = icmp eq i32 %278, %lftr.wideiv741
  br i1 %exitcond623.not742, label %.loopexit464, label %.outer, !llvm.loop !35

.critedge586:                                     ; preds = %266, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #6
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %30, ptr noundef nonnull align 8 dereferenceable(64) %28, i32 noundef %267)
          to label %300 unwind label %313

300:                                              ; preds = %.critedge586
  %301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %30, i32 noundef %267)
          to label %302 unwind label %315

302:                                              ; preds = %300
  %303 = load double, ptr %301, align 8, !tbaa !23
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #6
  %304 = getelementptr inbounds double, ptr %264, i64 %indvars.iv629
  %305 = load double, ptr %304, align 8, !tbaa !23
  %306 = fmul double %303, %305
  %307 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %265) #6
  %308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %307, i64 noundef %indvars.iv629) #6
  store double %306, ptr %308, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  %309 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %265) #6
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %31, ptr noundef nonnull align 8 dereferenceable(64) %309, i32 noundef %267)
          to label %310 unwind label %318

310:                                              ; preds = %302
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %31, i32 noundef %267)
          to label %312 unwind label %320

312:                                              ; preds = %310
  store double %303, ptr %311, align 8, !tbaa !23
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %31) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  %.not589 = icmp eq i64 %indvars.iv629, 0
  br i1 %.not589, label %.loopexit464, label %.lr.ph496

313:                                              ; preds = %.critedge586
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %317

315:                                              ; preds = %300
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %30) #6
  br label %317

317:                                              ; preds = %315, %313
  %.pn418 = phi { ptr, i32 } [ %316, %315 ], [ %314, %313 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #6
  br label %358

318:                                              ; preds = %302
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %322

320:                                              ; preds = %310
  %321 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %31) #6
  br label %322

322:                                              ; preds = %320, %318
  %.pn420 = phi { ptr, i32 } [ %321, %320 ], [ %319, %318 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  br label %358

.lr.ph496:                                        ; preds = %312, %355
  %indvars.iv624 = phi i64 [ %indvars.iv.next625, %355 ], [ 0, %312 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #6
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %32, ptr noundef nonnull align 8 dereferenceable(64) %28, i32 noundef %267)
          to label %323 unwind label %345

323:                                              ; preds = %.lr.ph496
  %324 = trunc nuw nsw i64 %indvars.iv624 to i32
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %32, i32 noundef %324)
          to label %326 unwind label %347

326:                                              ; preds = %323
  %327 = load double, ptr %325, align 8, !tbaa !23
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #6
  %328 = fcmp une double %327, 0.000000e+00
  br i1 %328, label %329, label %355

329:                                              ; preds = %326
  %330 = getelementptr inbounds double, ptr %264, i64 %indvars.iv624
  %331 = load double, ptr %330, align 8, !tbaa !23
  %332 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %265) #6
  %333 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %332, i64 noundef %indvars.iv629) #6
  %334 = load double, ptr %333, align 8, !tbaa !23
  %335 = call double @llvm.fmuladd.f64(double %327, double %331, double %334)
  store double %335, ptr %333, align 8, !tbaa !23
  %336 = load double, ptr %304, align 8, !tbaa !23
  %337 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %265) #6
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %337, i64 noundef %indvars.iv624) #6
  %339 = load double, ptr %338, align 8, !tbaa !23
  %340 = call double @llvm.fmuladd.f64(double %327, double %336, double %339)
  store double %340, ptr %338, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #6
  %341 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %265) #6
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %33, ptr noundef nonnull align 8 dereferenceable(64) %341, i32 noundef %267)
          to label %342 unwind label %350

342:                                              ; preds = %329
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %33, i32 noundef %324)
          to label %344 unwind label %352

344:                                              ; preds = %342
  store double %327, ptr %343, align 8, !tbaa !23
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %33) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #6
  br label %355

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

347:                                              ; preds = %323
  %348 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %32) #6
  br label %349

349:                                              ; preds = %347, %345
  %.pn422 = phi { ptr, i32 } [ %348, %347 ], [ %346, %345 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #6
  br label %358

350:                                              ; preds = %329
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %354

352:                                              ; preds = %342
  %353 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %33) #6
  br label %354

354:                                              ; preds = %352, %350
  %.pn424 = phi { ptr, i32 } [ %353, %352 ], [ %351, %350 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #6
  br label %358

355:                                              ; preds = %344, %326
  %indvars.iv.next625 = add nuw nsw i64 %indvars.iv624, 1
  %exitcond628.not = icmp eq i64 %indvars.iv.next625, %indvars.iv629
  br i1 %exitcond628.not, label %.loopexit464, label %.lr.ph496, !llvm.loop !36

.loopexit464:                                     ; preds = %.thread738, %355, %312, %._crit_edge
  %indvars.iv.next630 = add nuw nsw i64 %indvars.iv629, 1
  %exitcond633.not = icmp eq i64 %indvars.iv.next630, %wide.trip.count632
  br i1 %exitcond633.not, label %._crit_edge501, label %266, !llvm.loop !37

._crit_edge501:                                   ; preds = %.loopexit464, %262
  %356 = add nsw i32 %.0366503, 1
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %28) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %28) #6
  br label %357

357:                                              ; preds = %._crit_edge501, %247
  %.2368 = phi i32 [ %.0366503, %247 ], [ %356, %._crit_edge501 ]
  %indvars.iv.next635 = add nuw nsw i64 %indvars.iv634, 1
  %.not407 = icmp uge i64 %indvars.iv.next635, %142
  %exitcond637 = icmp eq i64 %indvars.iv.next635, %wide.trip.count636
  br i1 %exitcond637, label %.critedge450.preheader, label %245, !llvm.loop !38

358:                                              ; preds = %297, %349, %354, %322, %317, %260
  %.pn429.pn = phi { ptr, i32 } [ %261, %260 ], [ %298, %297 ], [ %.pn420, %322 ], [ %.pn418, %317 ], [ %.pn424, %354 ], [ %.pn422, %349 ]
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %28) #6
  br label %359

359:                                              ; preds = %358, %258
  %.pn429.pn.pn = phi { ptr, i32 } [ %.pn429.pn, %358 ], [ %259, %258 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %28) #6
  br label %522

.preheader460:                                    ; preds = %._crit_edge536.split.split.us.us, %.preheader463.lr.ph, %.critedge450.preheader
  %360 = icmp sgt i32 %94, 0
  br i1 %360, label %.preheader459.lr.ph, label %._crit_edge555

.preheader459.lr.ph:                              ; preds = %.preheader460
  %361 = icmp sgt i32 %.fr, 1
  %wide.trip.count694 = zext nneg i32 %94 to i64
  %wide.trip.count684 = zext nneg i32 %.fr to i64
  %wide.trip.count689 = zext nneg i32 %.fr to i64
  br label %.preheader459

362:                                              ; preds = %.split530.us.split.us.split.us, %.split.us.split.us.split.us
  %.pn415 = phi { ptr, i32 } [ %244, %.split530.us.split.us.split.us ], [ %243, %.split.us.split.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #6
  br label %522

.preheader459:                                    ; preds = %.preheader459.lr.ph, %._crit_edge552
  %indvars.iv691 = phi i64 [ 0, %.preheader459.lr.ph ], [ %indvars.iv.next692, %._crit_edge552 ]
  %363 = icmp ne i64 %indvars.iv691, 0
  %364 = and i1 %361, %363
  br i1 %364, label %.lr.ph546, label %._crit_edge547

._crit_edge555:                                   ; preds = %._crit_edge552, %.preheader460
  %365 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef 0) #6
  %366 = ptrtoint ptr %365 to i64
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef 0) #6
  %368 = ptrtoint ptr %367 to i64
  br i1 %360, label %.lr.ph562, label %._crit_edge563

.lr.ph562:                                        ; preds = %._crit_edge555
  %369 = icmp sgt i32 %.fr, 1
  %wide.trip.count707 = zext nneg i32 %94 to i64
  br i1 %369, label %.lr.ph562.split, label %.lr.ph562.split.us.preheader

.lr.ph562.split.us.preheader:                     ; preds = %.lr.ph562
  %min.iters.check = icmp ult i32 %94, 6
  %370 = sub i64 %368, %366
  %diff.check = icmp ult i64 %370, 32
  %or.cond822 = or i1 %min.iters.check, %diff.check
  br i1 %or.cond822, label %.lr.ph562.split.us.preheader827, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph562.split.us.preheader
  %n.vec = and i64 %wide.trip.count707, 2147483644
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %371 = getelementptr inbounds double, ptr %365, i64 %index
  %372 = getelementptr inbounds i8, ptr %371, i64 16
  %wide.load = load <2 x double>, ptr %371, align 8, !tbaa !23
  %wide.load794 = load <2 x double>, ptr %372, align 8, !tbaa !23
  %373 = getelementptr inbounds double, ptr %367, i64 %index
  %374 = getelementptr inbounds i8, ptr %373, i64 16
  store <2 x double> %wide.load, ptr %373, align 8, !tbaa !23
  store <2 x double> %wide.load794, ptr %374, align 8, !tbaa !23
  %index.next = add nuw i64 %index, 4
  %375 = icmp eq i64 %index.next, %n.vec
  br i1 %375, label %middle.block, label %vector.body, !llvm.loop !39

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count707
  br i1 %cmp.n, label %._crit_edge563, label %.lr.ph562.split.us.preheader827

.lr.ph562.split.us.preheader827:                  ; preds = %middle.block, %.lr.ph562.split.us.preheader
  %indvars.iv696.ph = phi i64 [ 0, %.lr.ph562.split.us.preheader ], [ %n.vec, %middle.block ]
  %xtraiter = and i64 %wide.trip.count707, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph562.split.us.prol.loopexit, label %.lr.ph562.split.us.prol

.lr.ph562.split.us.prol:                          ; preds = %.lr.ph562.split.us.preheader827, %.lr.ph562.split.us.prol
  %indvars.iv696.prol = phi i64 [ %indvars.iv.next697.prol, %.lr.ph562.split.us.prol ], [ %indvars.iv696.ph, %.lr.ph562.split.us.preheader827 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph562.split.us.prol ], [ 0, %.lr.ph562.split.us.preheader827 ]
  %376 = getelementptr inbounds double, ptr %365, i64 %indvars.iv696.prol
  %377 = load double, ptr %376, align 8, !tbaa !23
  %378 = getelementptr inbounds double, ptr %367, i64 %indvars.iv696.prol
  store double %377, ptr %378, align 8, !tbaa !23
  %indvars.iv.next697.prol = add nuw nsw i64 %indvars.iv696.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph562.split.us.prol.loopexit, label %.lr.ph562.split.us.prol, !llvm.loop !42

.lr.ph562.split.us.prol.loopexit:                 ; preds = %.lr.ph562.split.us.prol, %.lr.ph562.split.us.preheader827
  %indvars.iv696.unr = phi i64 [ %indvars.iv696.ph, %.lr.ph562.split.us.preheader827 ], [ %indvars.iv.next697.prol, %.lr.ph562.split.us.prol ]
  %379 = sub nsw i64 %indvars.iv696.ph, %wide.trip.count707
  %380 = icmp ugt i64 %379, -4
  br i1 %380, label %._crit_edge563, label %.lr.ph562.split.us

.lr.ph562.split.us:                               ; preds = %.lr.ph562.split.us.prol.loopexit, %.lr.ph562.split.us
  %indvars.iv696 = phi i64 [ %indvars.iv.next697.3, %.lr.ph562.split.us ], [ %indvars.iv696.unr, %.lr.ph562.split.us.prol.loopexit ]
  %381 = getelementptr inbounds double, ptr %365, i64 %indvars.iv696
  %382 = load double, ptr %381, align 8, !tbaa !23
  %383 = getelementptr inbounds double, ptr %367, i64 %indvars.iv696
  store double %382, ptr %383, align 8, !tbaa !23
  %indvars.iv.next697 = add nuw nsw i64 %indvars.iv696, 1
  %384 = getelementptr inbounds double, ptr %365, i64 %indvars.iv.next697
  %385 = load double, ptr %384, align 8, !tbaa !23
  %386 = getelementptr inbounds double, ptr %367, i64 %indvars.iv.next697
  store double %385, ptr %386, align 8, !tbaa !23
  %indvars.iv.next697.1 = add nuw nsw i64 %indvars.iv696, 2
  %387 = getelementptr inbounds double, ptr %365, i64 %indvars.iv.next697.1
  %388 = load double, ptr %387, align 8, !tbaa !23
  %389 = getelementptr inbounds double, ptr %367, i64 %indvars.iv.next697.1
  store double %388, ptr %389, align 8, !tbaa !23
  %indvars.iv.next697.2 = add nuw nsw i64 %indvars.iv696, 3
  %390 = getelementptr inbounds double, ptr %365, i64 %indvars.iv.next697.2
  %391 = load double, ptr %390, align 8, !tbaa !23
  %392 = getelementptr inbounds double, ptr %367, i64 %indvars.iv.next697.2
  store double %391, ptr %392, align 8, !tbaa !23
  %indvars.iv.next697.3 = add nuw nsw i64 %indvars.iv696, 4
  %exitcond700.not.3 = icmp eq i64 %indvars.iv.next697.3, %wide.trip.count707
  br i1 %exitcond700.not.3, label %._crit_edge563, label %.lr.ph562.split.us, !llvm.loop !44

._crit_edge547:                                   ; preds = %.lr.ph546, %.preheader459
  %393 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv691) #6
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %393, i64 noundef 0) #6
  %395 = load double, ptr %394, align 8, !tbaa !23
  %396 = fdiv double 1.000000e+00, %395
  br i1 %361, label %.preheader458.lr.ph, label %._crit_edge552

.preheader458.lr.ph:                              ; preds = %._crit_edge547
  %.not592 = icmp eq i64 %indvars.iv691, 0
  br i1 %.not592, label %.preheader458.us, label %.preheader458

.preheader458.us:                                 ; preds = %.preheader458.lr.ph, %.preheader458.us
  %indvars.iv686 = phi i64 [ %indvars.iv.next687, %.preheader458.us ], [ 1, %.preheader458.lr.ph ]
  %397 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef 0) #6
  %398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %397, i64 noundef %indvars.iv686) #6
  %399 = load double, ptr %398, align 8, !tbaa !23
  %400 = fmul double %396, %399
  store double %400, ptr %398, align 8, !tbaa !23
  %indvars.iv.next687 = add nuw nsw i64 %indvars.iv686, 1
  %exitcond690.not = icmp eq i64 %indvars.iv.next687, %wide.trip.count689
  br i1 %exitcond690.not, label %._crit_edge552, label %.preheader458.us, !llvm.loop !45

.lr.ph546:                                        ; preds = %.preheader459, %.lr.ph546
  %indvars.iv669 = phi i64 [ %indvars.iv.next670, %.lr.ph546 ], [ 1, %.preheader459 ]
  %401 = sub nsw i64 %indvars.iv691, %indvars.iv669
  %402 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %401) #6
  %403 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %402, i64 noundef %indvars.iv669) #6
  %404 = load double, ptr %403, align 8, !tbaa !23
  %405 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %401) #6
  %406 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %405, i64 noundef %indvars.iv669) #6
  %407 = load double, ptr %406, align 8, !tbaa !23
  %408 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %401) #6
  %409 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %408, i64 noundef 0) #6
  %410 = load double, ptr %409, align 8, !tbaa !23
  %411 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv691) #6
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %411, i64 noundef 0) #6
  %413 = load double, ptr %412, align 8, !tbaa !23
  %414 = fneg double %404
  %415 = fmul double %407, %414
  %416 = call double @llvm.fmuladd.f64(double %415, double %410, double %413)
  store double %416, ptr %412, align 8, !tbaa !23
  %indvars.iv.next670 = add nuw nsw i64 %indvars.iv669, 1
  %417 = icmp slt i64 %indvars.iv.next670, %104
  %418 = icmp ult i64 %indvars.iv669, %indvars.iv691
  %419 = and i1 %417, %418
  br i1 %419, label %.lr.ph546, label %._crit_edge547, !llvm.loop !46

.preheader458:                                    ; preds = %.preheader458.lr.ph, %._crit_edge550
  %indvars.iv681 = phi i64 [ %indvars.iv.next682, %._crit_edge550 ], [ 1, %.preheader458.lr.ph ]
  %indvars.iv672 = phi i64 [ %indvars.iv.next673, %._crit_edge550 ], [ 2, %.preheader458.lr.ph ]
  %indvars.iv.next682 = add nuw nsw i64 %indvars.iv681, 1
  %420 = icmp slt i64 %indvars.iv.next682, %104
  br i1 %420, label %.lr.ph549, label %._crit_edge550

._crit_edge552:                                   ; preds = %._crit_edge550, %.preheader458.us, %._crit_edge547
  %indvars.iv.next692 = add nuw nsw i64 %indvars.iv691, 1
  %exitcond695.not = icmp eq i64 %indvars.iv.next692, %wide.trip.count694
  br i1 %exitcond695.not, label %._crit_edge555, label %.preheader459, !llvm.loop !47

._crit_edge550:                                   ; preds = %.lr.ph549, %.preheader458
  %421 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv691) #6
  %422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %421, i64 noundef %indvars.iv681) #6
  %423 = load double, ptr %422, align 8, !tbaa !23
  %424 = fmul double %396, %423
  store double %424, ptr %422, align 8, !tbaa !23
  %indvars.iv.next673 = add nuw nsw i64 %indvars.iv672, 1
  %exitcond685.not = icmp eq i64 %indvars.iv.next682, %wide.trip.count684
  br i1 %exitcond685.not, label %._crit_edge552, label %.preheader458, !llvm.loop !45

.lr.ph549:                                        ; preds = %.preheader458, %.lr.ph549
  %indvars.iv676 = phi i64 [ %indvars.iv.next677, %.lr.ph549 ], [ 1, %.preheader458 ]
  %indvars.iv674 = phi i64 [ %indvars.iv.next675, %.lr.ph549 ], [ %indvars.iv672, %.preheader458 ]
  %425 = sub nsw i64 %indvars.iv691, %indvars.iv676
  %426 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %425) #6
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %426, i64 noundef %indvars.iv676) #6
  %428 = load double, ptr %427, align 8, !tbaa !23
  %429 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %425) #6
  %430 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %429, i64 noundef %indvars.iv674) #6
  %431 = load double, ptr %430, align 8, !tbaa !23
  %432 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %425) #6
  %433 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %432, i64 noundef 0) #6
  %434 = load double, ptr %433, align 8, !tbaa !23
  %435 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv691) #6
  %436 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %indvars.iv681) #6
  %437 = load double, ptr %436, align 8, !tbaa !23
  %438 = fneg double %428
  %439 = fmul double %431, %438
  %440 = call double @llvm.fmuladd.f64(double %439, double %434, double %437)
  store double %440, ptr %436, align 8, !tbaa !23
  %indvars.iv.next677 = add nuw nsw i64 %indvars.iv676, 1
  %441 = add nuw nsw i64 %indvars.iv.next677, %indvars.iv681
  %442 = icmp slt i64 %441, %104
  %443 = icmp ult i64 %indvars.iv676, %indvars.iv691
  %444 = and i1 %443, %442
  %indvars.iv.next675 = add nuw nsw i64 %indvars.iv674, 1
  br i1 %444, label %.lr.ph549, label %._crit_edge550, !llvm.loop !48

._crit_edge563:                                   ; preds = %.lr.ph562.split.us.prol.loopexit, %.lr.ph562.split.us, %._crit_edge559, %middle.block, %._crit_edge555
  %445 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef 0) #6
  %446 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef 0) #6
  br i1 %360, label %.lr.ph572, label %._crit_edge573

.lr.ph572:                                        ; preds = %._crit_edge563
  %447 = icmp sgt i32 %.fr, 1
  %wide.trip.count712 = zext nneg i32 %.fr to i64
  br label %467

.lr.ph562.split:                                  ; preds = %.lr.ph562, %._crit_edge559
  %indvars.iv704 = phi i64 [ %indvars.iv.next705, %._crit_edge559 ], [ 0, %.lr.ph562 ]
  %448 = getelementptr inbounds double, ptr %365, i64 %indvars.iv704
  %449 = load double, ptr %448, align 8, !tbaa !23
  %450 = getelementptr inbounds double, ptr %367, i64 %indvars.iv704
  store double %449, ptr %450, align 8, !tbaa !23
  %.not593 = icmp eq i64 %indvars.iv704, 0
  br i1 %.not593, label %._crit_edge559, label %.lr.ph558

._crit_edge559:                                   ; preds = %.lr.ph558, %.lr.ph562.split
  %indvars.iv.next705 = add nuw nsw i64 %indvars.iv704, 1
  %exitcond708.not = icmp eq i64 %indvars.iv.next705, %wide.trip.count707
  br i1 %exitcond708.not, label %._crit_edge563, label %.lr.ph562.split, !llvm.loop !49

.lr.ph558:                                        ; preds = %.lr.ph562.split, %.lr.ph558
  %indvars.iv701 = phi i64 [ %indvars.iv.next702, %.lr.ph558 ], [ 1, %.lr.ph562.split ]
  %451 = sub nsw i64 %indvars.iv704, %indvars.iv701
  %452 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %451) #6
  %453 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %452, i64 noundef %indvars.iv701) #6
  %454 = load double, ptr %453, align 8, !tbaa !23
  %455 = getelementptr inbounds double, ptr %367, i64 %451
  %456 = load double, ptr %455, align 8, !tbaa !23
  %457 = load double, ptr %450, align 8, !tbaa !23
  %458 = fneg double %454
  %459 = call double @llvm.fmuladd.f64(double %458, double %456, double %457)
  store double %459, ptr %450, align 8, !tbaa !23
  %indvars.iv.next702 = add nuw nsw i64 %indvars.iv701, 1
  %460 = icmp slt i64 %indvars.iv.next702, %104
  %461 = icmp ult i64 %indvars.iv701, %indvars.iv704
  %462 = and i1 %460, %461
  br i1 %462, label %.lr.ph558, label %._crit_edge559, !llvm.loop !50

._crit_edge573:                                   ; preds = %.critedge14, %._crit_edge563
  %463 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef 0) #6
  br i1 %65, label %.lr.ph585, label %.loopexit457

.lr.ph585:                                        ; preds = %._crit_edge573
  %464 = ptrtoint ptr %463 to i64
  %465 = getelementptr inbounds i8, ptr %35, i64 8
  %.not408574 = icmp slt i32 %51, 0
  %466 = getelementptr inbounds i8, ptr %0, i64 48
  %wide.trip.count734 = and i64 %58, 2147483647
  %wide.trip.count720 = zext i32 %52 to i64
  %wide.trip.count729 = zext nneg i32 %52 to i64
  %min.iters.check813 = icmp ult i32 %52, 4
  %n.vec816 = and i64 %wide.trip.count720, 2147483644
  %cmp.n821 = icmp eq i64 %n.vec816, %wide.trip.count720
  %min.iters.check799 = icmp ult i32 %52, 4
  %n.vec802 = and i64 %wide.trip.count720, 2147483644
  %cmp.n810 = icmp eq i64 %n.vec802, %wide.trip.count720
  %xtraiter851 = and i64 %wide.trip.count720, 3
  %lcmp.mod852.not = icmp eq i64 %xtraiter851, 0
  %invariant.gep874 = getelementptr i8, ptr %463, i64 8
  %invariant.gep878 = getelementptr i8, ptr %463, i64 16
  %invariant.gep882 = getelementptr i8, ptr %463, i64 24
  br label %487

467:                                              ; preds = %.lr.ph572, %.critedge14
  %indvars.iv714 = phi i64 [ %102, %.lr.ph572 ], [ %indvars.iv.next715, %.critedge14 ]
  %indvars.iv.next715 = add nsw i64 %indvars.iv714, -1
  %468 = getelementptr inbounds double, ptr %445, i64 %indvars.iv.next715
  %469 = load double, ptr %468, align 8, !tbaa !23
  %470 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv.next715) #6
  %471 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %470, i64 noundef 0) #6
  %472 = load double, ptr %471, align 8, !tbaa !23
  %473 = fdiv double %469, %472
  %474 = getelementptr inbounds double, ptr %446, i64 %indvars.iv.next715
  store double %473, ptr %474, align 8, !tbaa !23
  br i1 %447, label %.lr.ph567, label %.critedge14

.lr.ph567:                                        ; preds = %467, %478
  %indvars.iv709 = phi i64 [ %indvars.iv.next710, %478 ], [ 1, %467 ]
  %475 = add nsw i64 %indvars.iv709, %indvars.iv.next715
  %476 = icmp slt i64 %475, %102
  br i1 %476, label %478, label %.critedge14

.critedge14:                                      ; preds = %.lr.ph567, %478, %467
  %477 = icmp sgt i64 %indvars.iv714, 1
  br i1 %477, label %467, label %._crit_edge573, !llvm.loop !51

478:                                              ; preds = %.lr.ph567
  %479 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv.next715) #6
  %480 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef %indvars.iv709) #6
  %481 = load double, ptr %480, align 8, !tbaa !23
  %482 = getelementptr inbounds double, ptr %446, i64 %475
  %483 = load double, ptr %482, align 8, !tbaa !23
  %484 = load double, ptr %474, align 8, !tbaa !23
  %485 = fneg double %481
  %486 = call double @llvm.fmuladd.f64(double %485, double %483, double %484)
  store double %486, ptr %474, align 8, !tbaa !23
  %indvars.iv.next710 = add nuw nsw i64 %indvars.iv709, 1
  %exitcond713.not = icmp eq i64 %indvars.iv.next710, %wide.trip.count712
  br i1 %exitcond713.not, label %.critedge14, label %.lr.ph567, !llvm.loop !52

487:                                              ; preds = %.lr.ph585, %.loopexit
  %indvars.iv731 = phi i64 [ 0, %.lr.ph585 ], [ %indvars.iv.next732, %.loopexit ]
  %.0319582 = phi i32 [ 0, %.lr.ph585 ], [ %.2321, %.loopexit ]
  %488 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv731) #6
  %489 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %488, i64 noundef 0) #6
  %490 = ptrtoint ptr %489 to i64
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #6
  %491 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %indvars.iv731)
          to label %492 unwind label %512

492:                                              ; preds = %487
  %493 = extractvalue { ptr, i64 } %491, 0
  store ptr %493, ptr %35, align 8
  %494 = extractvalue { ptr, i64 } %491, 1
  store i64 %494, ptr %465, align 8
  %495 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  br i1 %495, label %.preheader, label %.preheader455

.preheader455:                                    ; preds = %492
  br i1 %.not408574, label %.loopexit, label %.lr.ph576.preheader

.lr.ph576.preheader:                              ; preds = %.preheader455
  %.pre = load double, ptr %466, align 8, !tbaa !22
  br i1 %min.iters.check813, label %.lr.ph576.preheader824, label %vector.ph814

.lr.ph576.preheader824:                           ; preds = %middle.block811, %.lr.ph576.preheader
  %indvars.iv717.ph = phi i64 [ 0, %.lr.ph576.preheader ], [ %n.vec816, %middle.block811 ]
  br label %.lr.ph576

vector.ph814:                                     ; preds = %.lr.ph576.preheader
  %broadcast.splatinsert = insertelement <2 x double> poison, double %.pre, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body818

vector.body818:                                   ; preds = %vector.body818, %vector.ph814
  %index819 = phi i64 [ 0, %vector.ph814 ], [ %index.next820, %vector.body818 ]
  %496 = getelementptr inbounds double, ptr %489, i64 %index819
  %497 = getelementptr inbounds i8, ptr %496, i64 16
  store <2 x double> %broadcast.splat, ptr %496, align 8, !tbaa !23
  store <2 x double> %broadcast.splat, ptr %497, align 8, !tbaa !23
  %index.next820 = add nuw i64 %index819, 4
  %498 = icmp eq i64 %index.next820, %n.vec816
  br i1 %498, label %middle.block811, label %vector.body818, !llvm.loop !53

middle.block811:                                  ; preds = %vector.body818
  br i1 %cmp.n821, label %.loopexit, label %.lr.ph576.preheader824

.preheader:                                       ; preds = %492
  br i1 %.not408574, label %.loopexit, label %.lr.ph580.preheader

.lr.ph580.preheader:                              ; preds = %.preheader
  %499 = sext i32 %.0319582 to i64
  br i1 %min.iters.check799, label %.lr.ph580.preheader823, label %vector.memcheck795

.lr.ph580.preheader823:                           ; preds = %middle.block797, %vector.memcheck795, %.lr.ph580.preheader
  %indvars.iv724.ph = phi i64 [ %499, %vector.memcheck795 ], [ %499, %.lr.ph580.preheader ], [ %ind.end, %middle.block797 ]
  %indvars.iv722.ph = phi i64 [ 0, %vector.memcheck795 ], [ 0, %.lr.ph580.preheader ], [ %n.vec802, %middle.block797 ]
  br i1 %lcmp.mod852.not, label %.lr.ph580.prol.loopexit, label %.lr.ph580.prol

.lr.ph580.prol:                                   ; preds = %.lr.ph580.preheader823, %.lr.ph580.prol
  %indvars.iv724.prol = phi i64 [ %indvars.iv.next725.prol, %.lr.ph580.prol ], [ %indvars.iv724.ph, %.lr.ph580.preheader823 ]
  %indvars.iv722.prol = phi i64 [ %indvars.iv.next723.prol, %.lr.ph580.prol ], [ %indvars.iv722.ph, %.lr.ph580.preheader823 ]
  %prol.iter853 = phi i64 [ %prol.iter853.next, %.lr.ph580.prol ], [ 0, %.lr.ph580.preheader823 ]
  %indvars.iv.next725.prol = add nsw i64 %indvars.iv724.prol, 1
  %500 = getelementptr inbounds double, ptr %463, i64 %indvars.iv724.prol
  %501 = load double, ptr %500, align 8, !tbaa !23
  %502 = getelementptr inbounds double, ptr %489, i64 %indvars.iv722.prol
  store double %501, ptr %502, align 8, !tbaa !23
  %indvars.iv.next723.prol = add nuw nsw i64 %indvars.iv722.prol, 1
  %prol.iter853.next = add i64 %prol.iter853, 1
  %prol.iter853.cmp.not = icmp eq i64 %prol.iter853.next, %xtraiter851
  br i1 %prol.iter853.cmp.not, label %.lr.ph580.prol.loopexit, label %.lr.ph580.prol, !llvm.loop !54

.lr.ph580.prol.loopexit:                          ; preds = %.lr.ph580.prol, %.lr.ph580.preheader823
  %indvars.iv.next725.lcssa826.unr = phi i64 [ poison, %.lr.ph580.preheader823 ], [ %indvars.iv.next725.prol, %.lr.ph580.prol ]
  %indvars.iv724.unr = phi i64 [ %indvars.iv724.ph, %.lr.ph580.preheader823 ], [ %indvars.iv.next725.prol, %.lr.ph580.prol ]
  %indvars.iv722.unr = phi i64 [ %indvars.iv722.ph, %.lr.ph580.preheader823 ], [ %indvars.iv.next723.prol, %.lr.ph580.prol ]
  %503 = sub nsw i64 %indvars.iv722.ph, %wide.trip.count720
  %504 = icmp ugt i64 %503, -4
  br i1 %504, label %.loopexit.loopexit, label %.lr.ph580.preheader823.new

.lr.ph580.preheader823.new:                       ; preds = %.lr.ph580.prol.loopexit
  %invariant.gep876 = getelementptr i8, ptr %489, i64 8
  %invariant.gep880 = getelementptr i8, ptr %489, i64 16
  %invariant.gep884 = getelementptr i8, ptr %489, i64 24
  br label %.lr.ph580

vector.memcheck795:                               ; preds = %.lr.ph580.preheader
  %505 = shl nsw i64 %499, 3
  %506 = add i64 %505, %464
  %507 = sub i64 %490, %506
  %diff.check796 = icmp ult i64 %507, 32
  br i1 %diff.check796, label %.lr.ph580.preheader823, label %vector.ph800

vector.ph800:                                     ; preds = %vector.memcheck795
  %ind.end = add nsw i64 %n.vec802, %499
  %invariant.gep = getelementptr double, ptr %463, i64 %499
  br label %vector.body805

vector.body805:                                   ; preds = %vector.body805, %vector.ph800
  %index806 = phi i64 [ 0, %vector.ph800 ], [ %index.next809, %vector.body805 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %index806
  %508 = getelementptr inbounds i8, ptr %gep, i64 16
  %wide.load807 = load <2 x double>, ptr %gep, align 8, !tbaa !23
  %wide.load808 = load <2 x double>, ptr %508, align 8, !tbaa !23
  %509 = getelementptr inbounds double, ptr %489, i64 %index806
  %510 = getelementptr inbounds i8, ptr %509, i64 16
  store <2 x double> %wide.load807, ptr %509, align 8, !tbaa !23
  store <2 x double> %wide.load808, ptr %510, align 8, !tbaa !23
  %index.next809 = add nuw i64 %index806, 4
  %511 = icmp eq i64 %index.next809, %n.vec802
  br i1 %511, label %middle.block797, label %vector.body805, !llvm.loop !55

middle.block797:                                  ; preds = %vector.body805
  br i1 %cmp.n810, label %.loopexit.loopexit, label %.lr.ph580.preheader823

512:                                              ; preds = %487
  %513 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  br label %522

.lr.ph580:                                        ; preds = %.lr.ph580, %.lr.ph580.preheader823.new
  %indvars.iv724 = phi i64 [ %indvars.iv724.unr, %.lr.ph580.preheader823.new ], [ %indvars.iv.next725.3, %.lr.ph580 ]
  %indvars.iv722 = phi i64 [ %indvars.iv722.unr, %.lr.ph580.preheader823.new ], [ %indvars.iv.next723.3, %.lr.ph580 ]
  %514 = getelementptr inbounds double, ptr %463, i64 %indvars.iv724
  %515 = load double, ptr %514, align 8, !tbaa !23
  %516 = getelementptr inbounds double, ptr %489, i64 %indvars.iv722
  store double %515, ptr %516, align 8, !tbaa !23
  %gep875 = getelementptr double, ptr %invariant.gep874, i64 %indvars.iv724
  %517 = load double, ptr %gep875, align 8, !tbaa !23
  %gep877 = getelementptr double, ptr %invariant.gep876, i64 %indvars.iv722
  store double %517, ptr %gep877, align 8, !tbaa !23
  %gep879 = getelementptr double, ptr %invariant.gep878, i64 %indvars.iv724
  %518 = load double, ptr %gep879, align 8, !tbaa !23
  %gep881 = getelementptr double, ptr %invariant.gep880, i64 %indvars.iv722
  store double %518, ptr %gep881, align 8, !tbaa !23
  %indvars.iv.next725.3 = add nsw i64 %indvars.iv724, 4
  %gep883 = getelementptr double, ptr %invariant.gep882, i64 %indvars.iv724
  %519 = load double, ptr %gep883, align 8, !tbaa !23
  %gep885 = getelementptr double, ptr %invariant.gep884, i64 %indvars.iv722
  store double %519, ptr %gep885, align 8, !tbaa !23
  %indvars.iv.next723.3 = add nuw nsw i64 %indvars.iv722, 4
  %exitcond730.not.3 = icmp eq i64 %indvars.iv.next723.3, %wide.trip.count729
  br i1 %exitcond730.not.3, label %.loopexit.loopexit, label %.lr.ph580, !llvm.loop !56

.lr.ph576:                                        ; preds = %.lr.ph576.preheader824, %.lr.ph576
  %indvars.iv717 = phi i64 [ %indvars.iv.next718, %.lr.ph576 ], [ %indvars.iv717.ph, %.lr.ph576.preheader824 ]
  %520 = getelementptr inbounds double, ptr %489, i64 %indvars.iv717
  store double %.pre, ptr %520, align 8, !tbaa !23
  %indvars.iv.next718 = add nuw nsw i64 %indvars.iv717, 1
  %exitcond721.not = icmp eq i64 %indvars.iv.next718, %wide.trip.count720
  br i1 %exitcond721.not, label %.loopexit, label %.lr.ph576, !llvm.loop !57

.loopexit.loopexit:                               ; preds = %.lr.ph580.prol.loopexit, %.lr.ph580, %middle.block797
  %indvars.iv.next725.lcssa = phi i64 [ %ind.end, %middle.block797 ], [ %indvars.iv.next725.lcssa826.unr, %.lr.ph580.prol.loopexit ], [ %indvars.iv.next725.3, %.lr.ph580 ]
  %521 = trunc nsw i64 %indvars.iv.next725.lcssa to i32
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph576, %middle.block811, %.loopexit.loopexit, %.preheader455, %.preheader
  %.2321 = phi i32 [ %.0319582, %.preheader ], [ %.0319582, %.preheader455 ], [ %521, %.loopexit.loopexit ], [ %.0319582, %middle.block811 ], [ %.0319582, %.lr.ph576 ]
  %indvars.iv.next732 = add nuw nsw i64 %indvars.iv731, 1
  %exitcond735.not = icmp eq i64 %indvars.iv.next732, %wide.trip.count734
  br i1 %exitcond735.not, label %.loopexit457, label %487, !llvm.loop !58

.loopexit457:                                     ; preds = %.loopexit, %._crit_edge573, %.thread
  %.not407486 = phi i1 [ %.not407505, %.thread ], [ %.not407.lcssa, %._crit_edge573 ], [ %.not407.lcssa, %.loopexit ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #6
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #6
  br label %531

522:                                              ; preds = %251, %359, %512, %362, %148, %134
  %.pn435 = phi { ptr, i32 } [ %149, %148 ], [ %.pn415, %362 ], [ %513, %512 ], [ %135, %134 ], [ %.pn429.pn.pn, %359 ], [ %252, %251 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  br label %523

523:                                              ; preds = %522, %132
  %.pn435.pn = phi { ptr, i32 } [ %.pn435, %522 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #6
  br label %524

524:                                              ; preds = %523, %130
  %.pn435.pn.pn = phi { ptr, i32 } [ %.pn435.pn, %523 ], [ %131, %130 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  br label %525

525:                                              ; preds = %524, %129
  %.pn435.pn.pn.pn = phi { ptr, i32 } [ %.pn435.pn.pn, %524 ], [ %.pn405, %129 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  br label %526

526:                                              ; preds = %525, %123
  %.pn435.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn435.pn.pn.pn, %525 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #6
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  br label %527

527:                                              ; preds = %526, %122
  %.pn435.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn435.pn.pn.pn.pn, %526 ], [ %.pn403, %122 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  br label %528

528:                                              ; preds = %527, %117
  %.pn435.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn435.pn.pn.pn.pn.pn, %527 ], [ %.pn, %117 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %529

529:                                              ; preds = %111, %528, %82
  %.pn444 = phi { ptr, i32 } [ %83, %82 ], [ %.pn435.pn.pn.pn.pn.pn.pn, %528 ], [ %112, %111 ]
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #6
  br label %530

530:                                              ; preds = %529, %68
  %.pn444.pn = phi { ptr, i32 } [ %.pn444, %529 ], [ %69, %68 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #6
  resume { ptr, i32 } %.pn444.pn

531:                                              ; preds = %.loopexit457, %55, %46, %4, %39, %41
  %.6 = phi i1 [ false, %41 ], [ false, %39 ], [ false, %4 ], [ %.not407486, %.loopexit457 ], [ false, %55 ], [ false, %46 ]
  ret i1 %.6
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_19CheckSizeERKSt6vectorIS0_IdSaIdEESaIS2_EEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_19CheckSizeERKSt6vectorIN4sptk15SymmetricMatrixESaIS2_EEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr, i32, ptr, i32, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #4

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE6resizeEm(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 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

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

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

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

declare noundef zeroext i1 @_ZNK4sptk15SymmetricMatrix6InvertEPS0_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind noalias writable sret(%"class.sptk::SymmetricMatrix::Row") align 8, ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) local_unnamed_addr #3 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20)) unnamed_addr #1 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 #1 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 nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_110CheckRangeEiiPKdb(i32 noundef, i32 noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #1

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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, !15, i64 56}
!6 = !{!"_ZTSN4sptk48NonrecursiveMaximumLikelihoodParameterGenerationE", !7, i64 8, !10, i64 16, !15, i64 40, !16, i64 48, !15, i64 56, !7, i64 60}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !11, i64 0}
!11 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !12, i64 0}
!12 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"bool", !8, i64 0}
!16 = !{!"double", !8, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!6, !7, i64 8}
!20 = !{!15, !15, i64 0}
!21 = !{!6, !15, i64 40}
!22 = !{!6, !16, i64 48}
!23 = !{!16, !16, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!6, !7, i64 60}
!27 = distinct !{!27, !25}
!28 = distinct !{!28, !25}
!29 = distinct !{!29, !25}
!30 = distinct !{!30, !25}
!31 = distinct !{!31, !25}
!32 = distinct !{!32, !25}
!33 = distinct !{!33, !25}
!34 = distinct !{!34, !25}
!35 = distinct !{!35, !25}
!36 = distinct !{!36, !25}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}
!39 = distinct !{!39, !25, !40, !41}
!40 = !{!"llvm.loop.isvectorized", i32 1}
!41 = !{!"llvm.loop.unroll.runtime.disable"}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.unroll.disable"}
!44 = distinct !{!44, !25, !40}
!45 = distinct !{!45, !25}
!46 = distinct !{!46, !25}
!47 = distinct !{!47, !25}
!48 = distinct !{!48, !25}
!49 = distinct !{!49, !25}
!50 = distinct !{!50, !25}
!51 = distinct !{!51, !25}
!52 = distinct !{!52, !25}
!53 = distinct !{!53, !25, !40, !41}
!54 = distinct !{!54, !43}
!55 = distinct !{!55, !25, !40, !41}
!56 = distinct !{!56, !25, !40}
!57 = distinct !{!57, !25, !41, !40}
!58 = distinct !{!58, !25}


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