; LLVM IR from sp-nitech/SPTK :: src/math (gaussian_mixture_modeling)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.2" = type { i8 }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = 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::allocator.7" = type { i8 }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = 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.std::allocator.12" = type { i8 }
%"class.sptk::GaussianMixtureModeling::Buffer" = type <{ ptr, %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.10", i8, [7 x i8] }>
%"class.__gnu_cxx::__normal_iterator.21" = type { ptr }
%"struct.std::_Setw" = type { i32 }
%"class.sptk::GaussianMixtureModeling" = type { ptr, i32, i32, i32, double, i32, %"class.std::vector", double, double, i32, i32, double, %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.10", i8, i8, %"class.sptk::SymmetricMatrix", %"class.std::vector.0" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.sptk::SymmetricMatrix" = type { ptr, i32, %"class.std::vector.0", %"class.std::vector.15" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = 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 }

@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [6 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

declare void @_ZN4sptk15SymmetricMatrix6ResizeEi(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) #1

declare void @_ZN4sptk15SymmetricMatrix4FillEd(ptr noundef nonnull align 8 dereferenceable(64), double noundef) #1

; 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) #2 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK4sptk23GaussianMixtureModeling3RunERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_PS5_PS1_INS_15SymmetricMatrixESaISA_EEPd(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #2 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::vector.0", align 8
  %17 = alloca %"class.std::allocator.2", align 1
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::vector.5", align 8
  %21 = alloca %"class.std::allocator.7", align 1
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::vector.10", align 8
  %24 = alloca %"class.std::allocator.12", align 1
  %25 = alloca i32, align 4
  %26 = alloca %"class.sptk::GaussianMixtureModeling::Buffer", align 8
  %27 = alloca %"class.std::vector.0", align 8
  %28 = alloca %"class.std::allocator.2", align 1
  %29 = alloca double, align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %33 = alloca double, align 8
  %34 = alloca i32, align 4
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca double, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %49 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %50 = alloca double, align 8
  %51 = alloca i32, align 4
  %52 = alloca double, align 8
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca ptr, align 8
  %56 = alloca double, align 8
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca double, align 8
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca ptr, align 8
  %64 = alloca double, align 8
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca %"class.sptk::SymmetricMatrix::Row", 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 ptr, align 8
  %72 = alloca double, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %80 = alloca double, align 8
  %81 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %82 = alloca double, align 8
  %83 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %84 = alloca double, align 8
  %85 = alloca %"struct.std::_Setw", align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  %86 = load ptr, ptr %8, align 8
  %87 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 16
  %88 = load i8, ptr %87, align 1, !tbaa !9, !range !37, !noundef !38
  %89 = trunc i8 %88 to i1
  br i1 %89, label %90, label %105

90:                                               ; preds = %6
  %91 = load ptr, ptr %9, align 8, !tbaa !5
  %92 = call noundef zeroext i1 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %91) #8
  br i1 %92, label %105, label %93

93:                                               ; preds = %90
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = icmp eq ptr null, %94
  br i1 %95, label %105, label %96

96:                                               ; preds = %93
  %97 = load ptr, ptr %11, align 8, !tbaa !5
  %98 = icmp eq ptr null, %97
  br i1 %98, label %105, label %99

99:                                               ; preds = %96
  %100 = load ptr, ptr %12, align 8, !tbaa !5
  %101 = icmp eq ptr null, %100
  br i1 %101, label %105, label %102

102:                                              ; preds = %99
  %103 = load ptr, ptr %13, align 8, !tbaa !5
  %104 = icmp eq ptr null, %103
  br i1 %104, label %105, label %106

105:                                              ; preds = %102, %99, %96, %93, %90, %6
  store i1 false, ptr %7, align 1
  br label %1090

106:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %107 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 1
  %108 = load i32, ptr %107, align 8, !tbaa !39
  %109 = add nsw i32 %108, 1
  store i32 %109, ptr %14, align 4, !tbaa !40
  %110 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 9
  %111 = load i32, ptr %110, align 8, !tbaa !41
  switch i32 %111, label %140 [
    i32 0, label %112
    i32 1, label %122
    i32 2, label %130
  ]

112:                                              ; preds = %106
  %113 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %114 = load i32, ptr %113, align 4, !tbaa !42
  %115 = load i32, ptr %14, align 4, !tbaa !40
  %116 = load ptr, ptr %10, align 8, !tbaa !5
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load ptr, ptr %12, align 8, !tbaa !5
  %119 = call noundef zeroext i1 @_ZN12_GLOBAL__N_18CheckGmmEiiRKSt6vectorIdSaIdEERKS0_IS2_SaIS2_EERKS0_IN4sptk15SymmetricMatrixESaISA_EE(i32 noundef %114, i32 noundef %115, ptr noundef nonnull align 8 dereferenceable(24) %116, ptr noundef nonnull align 8 dereferenceable(24) %117, ptr noundef nonnull align 8 dereferenceable(24) %118)
  br i1 %119, label %121, label %120

120:                                              ; preds = %112
  store i1 false, ptr %7, align 1
  store i32 1, ptr %15, align 4
  br label %1089

121:                                              ; preds = %112
  br label %141

122:                                              ; preds = %106
  %123 = load ptr, ptr %9, align 8, !tbaa !5
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  %125 = load ptr, ptr %11, align 8, !tbaa !5
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  %127 = call noundef zeroext i1 @_ZNK4sptk23GaussianMixtureModeling10InitializeERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_PS5_PS1_INS_15SymmetricMatrixESaISA_EE(ptr noundef nonnull align 8 dereferenceable(264) %86, ptr noundef nonnull align 8 dereferenceable(24) %123, ptr noundef %124, ptr noundef %125, ptr noundef %126)
  br i1 %127, label %129, label %128

128:                                              ; preds = %122
  store i1 false, ptr %7, align 1
  store i32 1, ptr %15, align 4
  br label %1089

129:                                              ; preds = %122
  br label %141

130:                                              ; preds = %106
  %131 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 12
  %132 = load ptr, ptr %10, align 8, !tbaa !5
  %133 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIdSaIdEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr noundef nonnull align 8 dereferenceable(24) %131)
  %134 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 13
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(24) %134)
  %137 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 14
  %138 = load ptr, ptr %12, align 8, !tbaa !5
  %139 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %138, ptr noundef nonnull align 8 dereferenceable(24) %137)
  br label %141

140:                                              ; preds = %106
  store i1 false, ptr %7, align 1
  store i32 1, ptr %15, align 4
  br label %1089

141:                                              ; preds = %130, %129, %121
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #8
  %142 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %143 = load i32, ptr %142, align 4, !tbaa !42
  %144 = sext i32 %143 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %144, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %145 unwind label %156

145:                                              ; preds = %141
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #8
  %146 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %147 = load i32, ptr %146, align 4, !tbaa !42
  %148 = sext i32 %147 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %148, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %149 unwind label %160

149:                                              ; preds = %145
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !40
  br label %150

150:                                              ; preds = %171, %149
  %151 = load i32, ptr %22, align 4, !tbaa !40
  %152 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %153 = load i32, ptr %152, align 4, !tbaa !42
  %154 = icmp slt i32 %151, %153
  br i1 %154, label %164, label %155

155:                                              ; preds = %150
  store i32 3, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %178

156:                                              ; preds = %141
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %18, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %19, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  br label %1088

160:                                              ; preds = %145
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %18, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %19, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  br label %1087

164:                                              ; preds = %150
  %165 = load i32, ptr %22, align 4, !tbaa !40
  %166 = sext i32 %165 to i64
  %167 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %166) #8
  %168 = load i32, ptr %14, align 4, !tbaa !40
  %169 = sext i32 %168 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %167, i64 noundef %169)
          to label %170 unwind label %174

170:                                              ; preds = %164
  br label %171

171:                                              ; preds = %170
  %172 = load i32, ptr %22, align 4, !tbaa !40
  %173 = add nsw i32 %172, 1
  store i32 %173, ptr %22, align 4, !tbaa !40
  br label %150, !llvm.loop !43

174:                                              ; preds = %164
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %18, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %1086

178:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #8
  %179 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %180 = load i32, ptr %179, align 4, !tbaa !42
  %181 = sext i32 %180 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #8
  call void @_ZNSaIN4sptk15SymmetricMatrixEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  invoke void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %181, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %182 unwind label %189

182:                                              ; preds = %178
  call void @_ZNSt15__new_allocatorIN4sptk15SymmetricMatrixEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  store i32 0, ptr %25, align 4, !tbaa !40
  br label %183

183:                                              ; preds = %199, %182
  %184 = load i32, ptr %25, align 4, !tbaa !40
  %185 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %186 = load i32, ptr %185, align 4, !tbaa !42
  %187 = icmp slt i32 %184, %186
  br i1 %187, label %193, label %188

188:                                              ; preds = %183
  store i32 6, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %206

189:                                              ; preds = %178
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %18, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %19, align 4
  call void @_ZNSt15__new_allocatorIN4sptk15SymmetricMatrixEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  br label %1085

193:                                              ; preds = %183
  %194 = load i32, ptr %25, align 4, !tbaa !40
  %195 = sext i32 %194 to i64
  %196 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %195) #8
  %197 = load i32, ptr %14, align 4, !tbaa !40
  invoke void @_ZN4sptk15SymmetricMatrix6ResizeEi(ptr noundef nonnull align 8 dereferenceable(64) %196, i32 noundef %197)
          to label %198 unwind label %202

198:                                              ; preds = %193
  br label %199

199:                                              ; preds = %198
  %200 = load i32, ptr %25, align 4, !tbaa !40
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %25, align 4, !tbaa !40
  br label %183, !llvm.loop !45

202:                                              ; preds = %193
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %18, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %1084

206:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 88, ptr %26) #8
  invoke void @_ZN4sptk23GaussianMixtureModeling6BufferC2Ev(ptr noundef nonnull align 8 dereferenceable(81) %26)
          to label %207 unwind label %218

207:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #8
  %208 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %209 = load i32, ptr %208, align 4, !tbaa !42
  %210 = sext i32 %209 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %210, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %211 unwind label %222

211:                                              ; preds = %207
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  store double 0xFFEFFFFFFFFFFFFF, ptr %29, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  store i32 1, ptr %30, align 4, !tbaa !40
  br label %212

212:                                              ; preds = %1073, %211
  %213 = load i32, ptr %30, align 4, !tbaa !40
  %214 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 3
  %215 = load i32, ptr %214, align 8, !tbaa !47
  %216 = icmp sle i32 %213, %215
  br i1 %216, label %226, label %217

217:                                              ; preds = %212
  store i32 9, ptr %15, align 4
  br label %1077

218:                                              ; preds = %206
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %18, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %19, align 4
  br label %1083

222:                                              ; preds = %207
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %18, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %19, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #8
  br label %1082

226:                                              ; preds = %212
  %227 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  %228 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %31, i32 0, i32 0
  store ptr %227, ptr %228, align 8
  %229 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  %230 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %32, i32 0, i32 0
  store ptr %229, ptr %230, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  store double 0.000000e+00, ptr %33, align 8, !tbaa !46
  %231 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %31, i32 0, i32 0
  %232 = load ptr, ptr %231, align 8
  %233 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %32, i32 0, i32 0
  %234 = load ptr, ptr %233, align 8
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdEvT_S7_RKT0_(ptr %232, ptr %234, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %235 unwind label %242

235:                                              ; preds = %226
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 0, ptr %34, align 4, !tbaa !40
  br label %236

236:                                              ; preds = %266, %235
  %237 = load i32, ptr %34, align 4, !tbaa !40
  %238 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %239 = load i32, ptr %238, align 4, !tbaa !42
  %240 = icmp slt i32 %237, %239
  br i1 %240, label %246, label %241

241:                                              ; preds = %236
  store i32 12, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %278

242:                                              ; preds = %226
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %18, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %1079

246:                                              ; preds = %236
  %247 = load i32, ptr %34, align 4, !tbaa !40
  %248 = sext i32 %247 to i64
  %249 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %248) #8
  %250 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %249) #8
  %251 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %35, i32 0, i32 0
  store ptr %250, ptr %251, align 8
  %252 = load i32, ptr %34, align 4, !tbaa !40
  %253 = sext i32 %252 to i64
  %254 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %253) #8
  %255 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %254) #8
  %256 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %36, i32 0, i32 0
  store ptr %255, ptr %256, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  store double 0.000000e+00, ptr %37, align 8, !tbaa !46
  %257 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %35, i32 0, i32 0
  %258 = load ptr, ptr %257, align 8
  %259 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %36, i32 0, i32 0
  %260 = load ptr, ptr %259, align 8
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdEvT_S7_RKT0_(ptr %258, ptr %260, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %261 unwind label %269

261:                                              ; preds = %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  %262 = load i32, ptr %34, align 4, !tbaa !40
  %263 = sext i32 %262 to i64
  %264 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %263) #8
  invoke void @_ZN4sptk15SymmetricMatrix4FillEd(ptr noundef nonnull align 8 dereferenceable(64) %264, double noundef 0.000000e+00)
          to label %265 unwind label %273

265:                                              ; preds = %261
  br label %266

266:                                              ; preds = %265
  %267 = load i32, ptr %34, align 4, !tbaa !40
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr %34, align 4, !tbaa !40
  br label %236, !llvm.loop !48

269:                                              ; preds = %246
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %18, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %277

273:                                              ; preds = %261
  %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
  br label %277

277:                                              ; preds = %273, %269
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %1079

278:                                              ; preds = %241
  %279 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling::Buffer", ptr %26, i32 0, i32 4
  store i8 0, ptr %279, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  store double 0.000000e+00, ptr %38, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  %280 = load ptr, ptr %9, align 8, !tbaa !5
  %281 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %280) #8
  %282 = trunc i64 %281 to i32
  store i32 %282, ptr %39, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  store i32 0, ptr %40, align 4, !tbaa !40
  br label %283

283:                                              ; preds = %451, %278
  %284 = load i32, ptr %40, align 4, !tbaa !40
  %285 = load i32, ptr %39, align 4, !tbaa !40
  %286 = icmp slt i32 %284, %285
  br i1 %286, label %288, label %287

287:                                              ; preds = %283
  store i32 15, ptr %15, align 4
  br label %455

288:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %289 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 1
  %290 = load i32, ptr %289, align 8, !tbaa !39
  %291 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %292 = load i32, ptr %291, align 4, !tbaa !42
  %293 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 15
  %294 = load i8, ptr %293, align 8, !tbaa !51, !range !37, !noundef !38
  %295 = trunc i8 %294 to i1
  %296 = load ptr, ptr %9, align 8, !tbaa !5
  %297 = load i32, ptr %40, align 4, !tbaa !40
  %298 = sext i32 %297 to i64
  %299 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %296, i64 noundef %298) #8
  %300 = load ptr, ptr %10, align 8, !tbaa !5
  %301 = load ptr, ptr %11, align 8, !tbaa !5
  %302 = load ptr, ptr %12, align 8, !tbaa !5
  %303 = invoke noundef zeroext i1 @_ZN4sptk23GaussianMixtureModeling23CalculateLogProbabilityEiibbRKSt6vectorIdSaIdEES5_RKS1_IS3_SaIS3_EERKS1_INS_15SymmetricMatrixESaISA_EEPS3_PdPNS0_6BufferE(i32 noundef %290, i32 noundef %292, i1 noundef zeroext %295, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(24) %299, ptr noundef nonnull align 8 dereferenceable(24) %300, ptr noundef nonnull align 8 dereferenceable(24) %301, ptr noundef nonnull align 8 dereferenceable(24) %302, ptr noundef %27, ptr noundef %41, ptr noundef %26)
          to label %304 unwind label %306

304:                                              ; preds = %288
  br i1 %303, label %310, label %305

305:                                              ; preds = %304
  store i1 false, ptr %7, align 1
  store i32 1, ptr %15, align 4
  br label %448

306:                                              ; preds = %288
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %18, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %19, align 4
  br label %454

310:                                              ; preds = %304
  %311 = load double, ptr %41, align 8, !tbaa !46
  %312 = load double, ptr %38, align 8, !tbaa !46
  %313 = fadd double %312, %311
  store double %313, ptr %38, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = load i32, ptr %40, align 4, !tbaa !40
  %316 = sext i32 %315 to i64
  %317 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %314, i64 noundef %316) #8
  %318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef 0) #8
  store ptr %318, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  store i32 0, ptr %43, align 4, !tbaa !40
  br label %319

319:                                              ; preds = %444, %310
  %320 = load i32, ptr %43, align 4, !tbaa !40
  %321 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %322 = load i32, ptr %321, align 4, !tbaa !42
  %323 = icmp slt i32 %320, %322
  br i1 %323, label %325, label %324

324:                                              ; preds = %319
  store i32 18, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %447

325:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %326 = load i32, ptr %43, align 4, !tbaa !40
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %327) #8
  %329 = load double, ptr %328, align 8, !tbaa !46
  %330 = load double, ptr %41, align 8, !tbaa !46
  %331 = fsub double %329, %330
  %332 = call double @exp(double noundef %331) #8
  store double %332, ptr %44, align 8, !tbaa !46
  %333 = load double, ptr %44, align 8, !tbaa !46
  %334 = load i32, ptr %43, align 4, !tbaa !40
  %335 = sext i32 %334 to i64
  %336 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %335) #8
  %337 = load double, ptr %336, align 8, !tbaa !46
  %338 = fadd double %337, %333
  store double %338, ptr %336, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  store i32 0, ptr %45, align 4, !tbaa !40
  br label %339

339:                                              ; preds = %360, %325
  %340 = load i32, ptr %45, align 4, !tbaa !40
  %341 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 1
  %342 = load i32, ptr %341, align 8, !tbaa !39
  %343 = icmp sle i32 %340, %342
  br i1 %343, label %345, label %344

344:                                              ; preds = %339
  store i32 21, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %363

345:                                              ; preds = %339
  %346 = load double, ptr %44, align 8, !tbaa !46
  %347 = load ptr, ptr %42, align 8, !tbaa !5
  %348 = load i32, ptr %45, align 4, !tbaa !40
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds double, ptr %347, i64 %349
  %351 = load double, ptr %350, align 8, !tbaa !46
  %352 = load i32, ptr %43, align 4, !tbaa !40
  %353 = sext i32 %352 to i64
  %354 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %353) #8
  %355 = load i32, ptr %45, align 4, !tbaa !40
  %356 = sext i32 %355 to i64
  %357 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %354, i64 noundef %356) #8
  %358 = load double, ptr %357, align 8, !tbaa !46
  %359 = call double @llvm.fmuladd.f64(double %346, double %351, double %358)
  store double %359, ptr %357, align 8, !tbaa !46
  br label %360

360:                                              ; preds = %345
  %361 = load i32, ptr %45, align 4, !tbaa !40
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %45, align 4, !tbaa !40
  br label %339, !llvm.loop !52

363:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  store i32 0, ptr %46, align 4, !tbaa !40
  br label %364

364:                                              ; preds = %440, %363
  %365 = load i32, ptr %46, align 4, !tbaa !40
  %366 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 1
  %367 = load i32, ptr %366, align 8, !tbaa !39
  %368 = icmp sle i32 %365, %367
  br i1 %368, label %370, label %369

369:                                              ; preds = %364
  store i32 24, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %443

370:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  %371 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 15
  %372 = load i8, ptr %371, align 8, !tbaa !51, !range !37, !noundef !38
  %373 = trunc i8 %372 to i1
  br i1 %373, label %374, label %376

374:                                              ; preds = %370
  %375 = load i32, ptr %46, align 4, !tbaa !40
  br label %377

376:                                              ; preds = %370
  br label %377

377:                                              ; preds = %376, %374
  %378 = phi i32 [ %375, %374 ], [ 0, %376 ]
  store i32 %378, ptr %47, align 4, !tbaa !40
  br label %379

379:                                              ; preds = %435, %377
  %380 = load i32, ptr %47, align 4, !tbaa !40
  %381 = load i32, ptr %46, align 4, !tbaa !40
  %382 = icmp sle i32 %380, %381
  br i1 %382, label %384, label %383

383:                                              ; preds = %379
  store i32 27, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  br label %439

384:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #8
  %385 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 17
  %386 = load i32, ptr %46, align 4, !tbaa !40
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %48, ptr noundef nonnull align 8 dereferenceable(64) %385, i32 noundef %386)
          to label %387 unwind label %416

387:                                              ; preds = %384
  %388 = load i32, ptr %47, align 4, !tbaa !40
  %389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %48, i32 noundef %388)
          to label %390 unwind label %420

390:                                              ; preds = %387
  %391 = load double, ptr %389, align 8, !tbaa !46
  %392 = fcmp une double 0.000000e+00, %391
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %48) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  br i1 %392, label %393, label %434

393:                                              ; preds = %390
  %394 = load double, ptr %44, align 8, !tbaa !46
  %395 = load ptr, ptr %42, align 8, !tbaa !5
  %396 = load i32, ptr %46, align 4, !tbaa !40
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !46
  %400 = fmul double %394, %399
  %401 = load ptr, ptr %42, align 8, !tbaa !5
  %402 = load i32, ptr %47, align 4, !tbaa !40
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %401, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #8
  %406 = load i32, ptr %43, align 4, !tbaa !40
  %407 = sext i32 %406 to i64
  %408 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %407) #8
  %409 = load i32, ptr %46, align 4, !tbaa !40
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %49, ptr noundef nonnull align 8 dereferenceable(64) %408, i32 noundef %409)
          to label %410 unwind label %425

410:                                              ; preds = %393
  %411 = load i32, ptr %47, align 4, !tbaa !40
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %49, i32 noundef %411)
          to label %413 unwind label %429

413:                                              ; preds = %410
  %414 = load double, ptr %412, align 8, !tbaa !46
  %415 = call double @llvm.fmuladd.f64(double %400, double %405, double %414)
  store double %415, ptr %412, align 8, !tbaa !46
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  br label %434

416:                                              ; preds = %384
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %18, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %19, align 4
  br label %424

420:                                              ; preds = %387
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %18, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %48) #8
  br label %424

424:                                              ; preds = %420, %416
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  br label %438

425:                                              ; preds = %393
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %18, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %19, align 4
  br label %433

429:                                              ; preds = %410
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %18, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %49) #8
  br label %433

433:                                              ; preds = %429, %425
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  br label %438

434:                                              ; preds = %413, %390
  br label %435

435:                                              ; preds = %434
  %436 = load i32, ptr %47, align 4, !tbaa !40
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr %47, align 4, !tbaa !40
  br label %379, !llvm.loop !53

438:                                              ; preds = %433, %424
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %454

439:                                              ; preds = %383
  br label %440

440:                                              ; preds = %439
  %441 = load i32, ptr %46, align 4, !tbaa !40
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr %46, align 4, !tbaa !40
  br label %364, !llvm.loop !54

443:                                              ; preds = %369
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %444

444:                                              ; preds = %443
  %445 = load i32, ptr %43, align 4, !tbaa !40
  %446 = add nsw i32 %445, 1
  store i32 %446, ptr %43, align 4, !tbaa !40
  br label %319, !llvm.loop !55

447:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  store i32 0, ptr %15, align 4
  br label %448

448:                                              ; preds = %447, %305
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  %449 = load i32, ptr %15, align 4
  switch i32 %449, label %455 [
    i32 0, label %450
  ]

450:                                              ; preds = %448
  br label %451

451:                                              ; preds = %450
  %452 = load i32, ptr %40, align 4, !tbaa !40
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %40, align 4, !tbaa !40
  br label %283, !llvm.loop !56

454:                                              ; preds = %438, %306
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  br label %1076

455:                                              ; preds = %448, %287
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  %456 = load i32, ptr %15, align 4
  switch i32 %456, label %1070 [
    i32 15, label %457
  ]

457:                                              ; preds = %455
  %458 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 11
  %459 = load double, ptr %458, align 8, !tbaa !57
  %460 = fcmp oeq double 0.000000e+00, %459
  br i1 %460, label %461, label %486

461:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %462 = load i32, ptr %39, align 4, !tbaa !40
  %463 = sitofp i32 %462 to double
  %464 = fdiv double 1.000000e+00, %463
  store double %464, ptr %50, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  store i32 0, ptr %51, align 4, !tbaa !40
  br label %465

465:                                              ; preds = %482, %461
  %466 = load i32, ptr %51, align 4, !tbaa !40
  %467 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %468 = load i32, ptr %467, align 4, !tbaa !42
  %469 = icmp slt i32 %466, %468
  br i1 %469, label %471, label %470

470:                                              ; preds = %465
  store i32 30, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br label %485

471:                                              ; preds = %465
  %472 = load i32, ptr %51, align 4, !tbaa !40
  %473 = sext i32 %472 to i64
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %473) #8
  %475 = load double, ptr %474, align 8, !tbaa !46
  %476 = load double, ptr %50, align 8, !tbaa !46
  %477 = fmul double %475, %476
  %478 = load ptr, ptr %10, align 8, !tbaa !5
  %479 = load i32, ptr %51, align 4, !tbaa !40
  %480 = sext i32 %479 to i64
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %478, i64 noundef %480) #8
  store double %477, ptr %481, align 8, !tbaa !46
  br label %482

482:                                              ; preds = %471
  %483 = load i32, ptr %51, align 4, !tbaa !40
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %51, align 4, !tbaa !40
  br label %465, !llvm.loop !58

485:                                              ; preds = %470
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %520

486:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %487 = load i32, ptr %39, align 4, !tbaa !40
  %488 = sitofp i32 %487 to double
  %489 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 11
  %490 = load double, ptr %489, align 8, !tbaa !57
  %491 = fadd double %488, %490
  %492 = fdiv double 1.000000e+00, %491
  store double %492, ptr %52, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  store i32 0, ptr %53, align 4, !tbaa !40
  br label %493

493:                                              ; preds = %516, %486
  %494 = load i32, ptr %53, align 4, !tbaa !40
  %495 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %496 = load i32, ptr %495, align 4, !tbaa !42
  %497 = icmp slt i32 %494, %496
  br i1 %497, label %499, label %498

498:                                              ; preds = %493
  store i32 33, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  br label %519

499:                                              ; preds = %493
  %500 = load i32, ptr %53, align 4, !tbaa !40
  %501 = sext i32 %500 to i64
  %502 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %501) #8
  %503 = load double, ptr %502, align 8, !tbaa !46
  %504 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 18
  %505 = load i32, ptr %53, align 4, !tbaa !40
  %506 = sext i32 %505 to i64
  %507 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %504, i64 noundef %506) #8
  %508 = load double, ptr %507, align 8, !tbaa !46
  %509 = fadd double %503, %508
  %510 = load double, ptr %52, align 8, !tbaa !46
  %511 = fmul double %509, %510
  %512 = load ptr, ptr %10, align 8, !tbaa !5
  %513 = load i32, ptr %53, align 4, !tbaa !40
  %514 = sext i32 %513 to i64
  %515 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %512, i64 noundef %514) #8
  store double %511, ptr %515, align 8, !tbaa !46
  br label %516

516:                                              ; preds = %499
  %517 = load i32, ptr %53, align 4, !tbaa !40
  %518 = add nsw i32 %517, 1
  store i32 %518, ptr %53, align 4, !tbaa !40
  br label %493, !llvm.loop !59

519:                                              ; preds = %498
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  br label %520

520:                                              ; preds = %519, %485
  %521 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK4sptk23GaussianMixtureModeling11FloorWeightEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(264) %86, ptr noundef %521)
          to label %522 unwind label %533

522:                                              ; preds = %520
  %523 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 11
  %524 = load double, ptr %523, align 8, !tbaa !57
  %525 = fcmp oeq double 0.000000e+00, %524
  br i1 %525, label %526, label %576

526:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #8
  store i32 0, ptr %54, align 4, !tbaa !40
  br label %527

527:                                              ; preds = %572, %526
  %528 = load i32, ptr %54, align 4, !tbaa !40
  %529 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %530 = load i32, ptr %529, align 4, !tbaa !42
  %531 = icmp slt i32 %528, %530
  br i1 %531, label %537, label %532

532:                                              ; preds = %527
  store i32 36, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  br label %575

533:                                              ; preds = %1006, %520
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %18, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %19, align 4
  br label %1076

537:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %538 = load ptr, ptr %11, align 8, !tbaa !5
  %539 = load i32, ptr %54, align 4, !tbaa !40
  %540 = sext i32 %539 to i64
  %541 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %538, i64 noundef %540) #8
  %542 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %541, i64 noundef 0) #8
  store ptr %542, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %543 = load i32, ptr %54, align 4, !tbaa !40
  %544 = sext i32 %543 to i64
  %545 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %544) #8
  %546 = load double, ptr %545, align 8, !tbaa !46
  %547 = fdiv double 1.000000e+00, %546
  store double %547, ptr %56, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  store i32 0, ptr %57, align 4, !tbaa !40
  br label %548

548:                                              ; preds = %568, %537
  %549 = load i32, ptr %57, align 4, !tbaa !40
  %550 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 1
  %551 = load i32, ptr %550, align 8, !tbaa !39
  %552 = icmp sle i32 %549, %551
  br i1 %552, label %554, label %553

553:                                              ; preds = %548
  store i32 39, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %571

554:                                              ; preds = %548
  %555 = load i32, ptr %54, align 4, !tbaa !40
  %556 = sext i32 %555 to i64
  %557 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %556) #8
  %558 = load i32, ptr %57, align 4, !tbaa !40
  %559 = sext i32 %558 to i64
  %560 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %557, i64 noundef %559) #8
  %561 = load double, ptr %560, align 8, !tbaa !46
  %562 = load double, ptr %56, align 8, !tbaa !46
  %563 = fmul double %561, %562
  %564 = load ptr, ptr %55, align 8, !tbaa !5
  %565 = load i32, ptr %57, align 4, !tbaa !40
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds double, ptr %564, i64 %566
  store double %563, ptr %567, align 8, !tbaa !46
  br label %568

568:                                              ; preds = %554
  %569 = load i32, ptr %57, align 4, !tbaa !40
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %57, align 4, !tbaa !40
  br label %548, !llvm.loop !60

571:                                              ; preds = %553
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %572

572:                                              ; preds = %571
  %573 = load i32, ptr %54, align 4, !tbaa !40
  %574 = add nsw i32 %573, 1
  store i32 %574, ptr %54, align 4, !tbaa !40
  br label %527, !llvm.loop !61

575:                                              ; preds = %532
  br label %642

576:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  store i32 0, ptr %58, align 4, !tbaa !40
  br label %577

577:                                              ; preds = %638, %576
  %578 = load i32, ptr %58, align 4, !tbaa !40
  %579 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %580 = load i32, ptr %579, align 4, !tbaa !42
  %581 = icmp slt i32 %578, %580
  br i1 %581, label %583, label %582

582:                                              ; preds = %577
  store i32 42, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %641

583:                                              ; preds = %577
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %584 = load ptr, ptr %11, align 8, !tbaa !5
  %585 = load i32, ptr %58, align 4, !tbaa !40
  %586 = sext i32 %585 to i64
  %587 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %584, i64 noundef %586) #8
  %588 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %587, i64 noundef 0) #8
  store ptr %588, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %589 = load i32, ptr %58, align 4, !tbaa !40
  %590 = sext i32 %589 to i64
  %591 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %590) #8
  %592 = load double, ptr %591, align 8, !tbaa !46
  %593 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 18
  %594 = load i32, ptr %58, align 4, !tbaa !40
  %595 = sext i32 %594 to i64
  %596 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %593, i64 noundef %595) #8
  %597 = load double, ptr %596, align 8, !tbaa !46
  %598 = fadd double %592, %597
  %599 = fdiv double 1.000000e+00, %598
  store double %599, ptr %60, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #8
  store i32 0, ptr %61, align 4, !tbaa !40
  br label %600

600:                                              ; preds = %634, %583
  %601 = load i32, ptr %61, align 4, !tbaa !40
  %602 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 1
  %603 = load i32, ptr %602, align 8, !tbaa !39
  %604 = icmp sle i32 %601, %603
  br i1 %604, label %606, label %605

605:                                              ; preds = %600
  store i32 45, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #8
  br label %637

606:                                              ; preds = %600
  %607 = load i32, ptr %58, align 4, !tbaa !40
  %608 = sext i32 %607 to i64
  %609 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %608) #8
  %610 = load i32, ptr %61, align 4, !tbaa !40
  %611 = sext i32 %610 to i64
  %612 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %609, i64 noundef %611) #8
  %613 = load double, ptr %612, align 8, !tbaa !46
  %614 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 18
  %615 = load i32, ptr %58, align 4, !tbaa !40
  %616 = sext i32 %615 to i64
  %617 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %614, i64 noundef %616) #8
  %618 = load double, ptr %617, align 8, !tbaa !46
  %619 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 13
  %620 = load i32, ptr %58, align 4, !tbaa !40
  %621 = sext i32 %620 to i64
  %622 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %619, i64 noundef %621) #8
  %623 = load i32, ptr %61, align 4, !tbaa !40
  %624 = sext i32 %623 to i64
  %625 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %622, i64 noundef %624) #8
  %626 = load double, ptr %625, align 8, !tbaa !46
  %627 = call double @llvm.fmuladd.f64(double %618, double %626, double %613)
  %628 = load double, ptr %60, align 8, !tbaa !46
  %629 = fmul double %627, %628
  %630 = load ptr, ptr %59, align 8, !tbaa !5
  %631 = load i32, ptr %61, align 4, !tbaa !40
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds double, ptr %630, i64 %632
  store double %629, ptr %633, align 8, !tbaa !46
  br label %634

634:                                              ; preds = %606
  %635 = load i32, ptr %61, align 4, !tbaa !40
  %636 = add nsw i32 %635, 1
  store i32 %636, ptr %61, align 4, !tbaa !40
  br label %600, !llvm.loop !62

637:                                              ; preds = %605
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %638

638:                                              ; preds = %637
  %639 = load i32, ptr %58, align 4, !tbaa !40
  %640 = add nsw i32 %639, 1
  store i32 %640, ptr %58, align 4, !tbaa !40
  br label %577, !llvm.loop !63

641:                                              ; preds = %582
  br label %642

642:                                              ; preds = %641, %575
  %643 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 11
  %644 = load double, ptr %643, align 8, !tbaa !57
  %645 = fcmp oeq double 0.000000e+00, %644
  br i1 %645, label %646, label %768

646:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  store i32 0, ptr %62, align 4, !tbaa !40
  br label %647

647:                                              ; preds = %764, %646
  %648 = load i32, ptr %62, align 4, !tbaa !40
  %649 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %650 = load i32, ptr %649, align 4, !tbaa !42
  %651 = icmp slt i32 %648, %650
  br i1 %651, label %653, label %652

652:                                              ; preds = %647
  store i32 48, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  br label %767

653:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %654 = load ptr, ptr %11, align 8, !tbaa !5
  %655 = load i32, ptr %62, align 4, !tbaa !40
  %656 = sext i32 %655 to i64
  %657 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %654, i64 noundef %656) #8
  %658 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %657, i64 noundef 0) #8
  store ptr %658, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %659 = load i32, ptr %62, align 4, !tbaa !40
  %660 = sext i32 %659 to i64
  %661 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %660) #8
  %662 = load double, ptr %661, align 8, !tbaa !46
  %663 = fdiv double 1.000000e+00, %662
  store double %663, ptr %64, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #8
  store i32 0, ptr %65, align 4, !tbaa !40
  br label %664

664:                                              ; preds = %760, %653
  %665 = load i32, ptr %65, align 4, !tbaa !40
  %666 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 1
  %667 = load i32, ptr %666, align 8, !tbaa !39
  %668 = icmp sle i32 %665, %667
  br i1 %668, label %670, label %669

669:                                              ; preds = %664
  store i32 51, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #8
  br label %763

670:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #8
  %671 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 15
  %672 = load i8, ptr %671, align 8, !tbaa !51, !range !37, !noundef !38
  %673 = trunc i8 %672 to i1
  br i1 %673, label %674, label %676

674:                                              ; preds = %670
  %675 = load i32, ptr %65, align 4, !tbaa !40
  br label %677

676:                                              ; preds = %670
  br label %677

677:                                              ; preds = %676, %674
  %678 = phi i32 [ %675, %674 ], [ 0, %676 ]
  store i32 %678, ptr %66, align 4, !tbaa !40
  br label %679

679:                                              ; preds = %755, %677
  %680 = load i32, ptr %66, align 4, !tbaa !40
  %681 = load i32, ptr %65, align 4, !tbaa !40
  %682 = icmp sle i32 %680, %681
  br i1 %682, label %684, label %683

683:                                              ; preds = %679
  store i32 54, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #8
  br label %759

684:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 24, ptr %67) #8
  %685 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 17
  %686 = load i32, ptr %65, align 4, !tbaa !40
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %67, ptr noundef nonnull align 8 dereferenceable(64) %685, i32 noundef %686)
          to label %687 unwind label %726

687:                                              ; preds = %684
  %688 = load i32, ptr %66, align 4, !tbaa !40
  %689 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %67, i32 noundef %688)
          to label %690 unwind label %730

690:                                              ; preds = %687
  %691 = load double, ptr %689, align 8, !tbaa !46
  %692 = fcmp une double 0.000000e+00, %691
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %67) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %67) #8
  br i1 %692, label %693, label %754

693:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 24, ptr %68) #8
  %694 = load i32, ptr %62, align 4, !tbaa !40
  %695 = sext i32 %694 to i64
  %696 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %695) #8
  %697 = load i32, ptr %65, align 4, !tbaa !40
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %68, ptr noundef nonnull align 8 dereferenceable(64) %696, i32 noundef %697)
          to label %698 unwind label %735

698:                                              ; preds = %693
  %699 = load i32, ptr %66, align 4, !tbaa !40
  %700 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %68, i32 noundef %699)
          to label %701 unwind label %739

701:                                              ; preds = %698
  %702 = load double, ptr %700, align 8, !tbaa !46
  %703 = load double, ptr %64, align 8, !tbaa !46
  %704 = load ptr, ptr %63, align 8, !tbaa !5
  %705 = load i32, ptr %65, align 4, !tbaa !40
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %704, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !46
  %709 = load ptr, ptr %63, align 8, !tbaa !5
  %710 = load i32, ptr %66, align 4, !tbaa !40
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds double, ptr %709, i64 %711
  %713 = load double, ptr %712, align 8, !tbaa !46
  %714 = fmul double %708, %713
  %715 = fneg double %714
  %716 = call double @llvm.fmuladd.f64(double %702, double %703, double %715)
  call void @llvm.lifetime.start.p0(i64 24, ptr %69) #8
  %717 = load ptr, ptr %12, align 8, !tbaa !5
  %718 = load i32, ptr %62, align 4, !tbaa !40
  %719 = sext i32 %718 to i64
  %720 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %717, i64 noundef %719) #8
  %721 = load i32, ptr %65, align 4, !tbaa !40
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %69, ptr noundef nonnull align 8 dereferenceable(64) %720, i32 noundef %721)
          to label %722 unwind label %743

722:                                              ; preds = %701
  %723 = load i32, ptr %66, align 4, !tbaa !40
  %724 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %69, i32 noundef %723)
          to label %725 unwind label %747

725:                                              ; preds = %722
  store double %716, ptr %724, align 8, !tbaa !46
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %69) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #8
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %68) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %68) #8
  br label %754

726:                                              ; preds = %684
  %727 = landingpad { ptr, i32 }
          cleanup
  %728 = extractvalue { ptr, i32 } %727, 0
  store ptr %728, ptr %18, align 8
  %729 = extractvalue { ptr, i32 } %727, 1
  store i32 %729, ptr %19, align 4
  br label %734

730:                                              ; preds = %687
  %731 = landingpad { ptr, i32 }
          cleanup
  %732 = extractvalue { ptr, i32 } %731, 0
  store ptr %732, ptr %18, align 8
  %733 = extractvalue { ptr, i32 } %731, 1
  store i32 %733, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %67) #8
  br label %734

734:                                              ; preds = %730, %726
  call void @llvm.lifetime.end.p0(i64 24, ptr %67) #8
  br label %758

735:                                              ; preds = %693
  %736 = landingpad { ptr, i32 }
          cleanup
  %737 = extractvalue { ptr, i32 } %736, 0
  store ptr %737, ptr %18, align 8
  %738 = extractvalue { ptr, i32 } %736, 1
  store i32 %738, ptr %19, align 4
  br label %753

739:                                              ; preds = %698
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %18, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %19, align 4
  br label %752

743:                                              ; preds = %701
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %18, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %19, align 4
  br label %751

747:                                              ; preds = %722
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %18, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %69) #8
  br label %751

751:                                              ; preds = %747, %743
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #8
  br label %752

752:                                              ; preds = %751, %739
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %68) #8
  br label %753

753:                                              ; preds = %752, %735
  call void @llvm.lifetime.end.p0(i64 24, ptr %68) #8
  br label %758

754:                                              ; preds = %725, %690
  br label %755

755:                                              ; preds = %754
  %756 = load i32, ptr %66, align 4, !tbaa !40
  %757 = add nsw i32 %756, 1
  store i32 %757, ptr %66, align 4, !tbaa !40
  br label %679, !llvm.loop !64

758:                                              ; preds = %753, %734
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  br label %1076

759:                                              ; preds = %683
  br label %760

760:                                              ; preds = %759
  %761 = load i32, ptr %65, align 4, !tbaa !40
  %762 = add nsw i32 %761, 1
  store i32 %762, ptr %65, align 4, !tbaa !40
  br label %664, !llvm.loop !65

763:                                              ; preds = %669
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  br label %764

764:                                              ; preds = %763
  %765 = load i32, ptr %62, align 4, !tbaa !40
  %766 = add nsw i32 %765, 1
  store i32 %766, ptr %62, align 4, !tbaa !40
  br label %647, !llvm.loop !66

767:                                              ; preds = %652
  br label %1006

768:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #8
  store i32 0, ptr %70, align 4, !tbaa !40
  br label %769

769:                                              ; preds = %1002, %768
  %770 = load i32, ptr %70, align 4, !tbaa !40
  %771 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 2
  %772 = load i32, ptr %771, align 4, !tbaa !42
  %773 = icmp slt i32 %770, %772
  br i1 %773, label %775, label %774

774:                                              ; preds = %769
  store i32 57, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #8
  br label %1005

775:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %776 = load ptr, ptr %11, align 8, !tbaa !5
  %777 = load i32, ptr %70, align 4, !tbaa !40
  %778 = sext i32 %777 to i64
  %779 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %776, i64 noundef %778) #8
  %780 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %779, i64 noundef 0) #8
  store ptr %780, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %781 = load i32, ptr %70, align 4, !tbaa !40
  %782 = sext i32 %781 to i64
  %783 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %782) #8
  %784 = load double, ptr %783, align 8, !tbaa !46
  %785 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 18
  %786 = load i32, ptr %70, align 4, !tbaa !40
  %787 = sext i32 %786 to i64
  %788 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %785, i64 noundef %787) #8
  %789 = load double, ptr %788, align 8, !tbaa !46
  %790 = fadd double %784, %789
  %791 = fdiv double 1.000000e+00, %790
  store double %791, ptr %72, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #8
  store i32 0, ptr %73, align 4, !tbaa !40
  br label %792

792:                                              ; preds = %998, %775
  %793 = load i32, ptr %73, align 4, !tbaa !40
  %794 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 1
  %795 = load i32, ptr %794, align 8, !tbaa !39
  %796 = icmp sle i32 %793, %795
  br i1 %796, label %798, label %797

797:                                              ; preds = %792
  store i32 60, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #8
  br label %1001

798:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #8
  %799 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 15
  %800 = load i8, ptr %799, align 8, !tbaa !51, !range !37, !noundef !38
  %801 = trunc i8 %800 to i1
  br i1 %801, label %802, label %804

802:                                              ; preds = %798
  %803 = load i32, ptr %73, align 4, !tbaa !40
  br label %805

804:                                              ; preds = %798
  br label %805

805:                                              ; preds = %804, %802
  %806 = phi i32 [ %803, %802 ], [ 0, %804 ]
  store i32 %806, ptr %74, align 4, !tbaa !40
  br label %807

807:                                              ; preds = %993, %805
  %808 = load i32, ptr %74, align 4, !tbaa !40
  %809 = load i32, ptr %73, align 4, !tbaa !40
  %810 = icmp sle i32 %808, %809
  br i1 %810, label %812, label %811

811:                                              ; preds = %807
  store i32 63, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #8
  br label %997

812:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 24, ptr %75) #8
  %813 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 17
  %814 = load i32, ptr %73, align 4, !tbaa !40
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %75, ptr noundef nonnull align 8 dereferenceable(64) %813, i32 noundef %814)
          to label %815 unwind label %954

815:                                              ; preds = %812
  %816 = load i32, ptr %74, align 4, !tbaa !40
  %817 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %75, i32 noundef %816)
          to label %818 unwind label %958

818:                                              ; preds = %815
  %819 = load double, ptr %817, align 8, !tbaa !46
  %820 = fcmp une double 0.000000e+00, %819
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %75) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #8
  br i1 %820, label %821, label %992

821:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %822 = load i32, ptr %70, align 4, !tbaa !40
  %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) %20, i64 noundef %823) #8
  %825 = load i32, ptr %73, align 4, !tbaa !40
  %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) #8
  %828 = load double, ptr %827, align 8, !tbaa !46
  %829 = load i32, ptr %70, align 4, !tbaa !40
  %830 = sext i32 %829 to i64
  %831 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %830) #8
  %832 = load double, ptr %831, align 8, !tbaa !46
  %833 = fdiv double %828, %832
  store double %833, ptr %76, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %834 = load i32, ptr %70, align 4, !tbaa !40
  %835 = sext i32 %834 to i64
  %836 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %835) #8
  %837 = load i32, ptr %74, align 4, !tbaa !40
  %838 = sext i32 %837 to i64
  %839 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %836, i64 noundef %838) #8
  %840 = load double, ptr %839, align 8, !tbaa !46
  %841 = load i32, ptr %70, align 4, !tbaa !40
  %842 = sext i32 %841 to i64
  %843 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %842) #8
  %844 = load double, ptr %843, align 8, !tbaa !46
  %845 = fdiv double %840, %844
  store double %845, ptr %77, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %79) #8
  %846 = load i32, ptr %70, align 4, !tbaa !40
  %847 = sext i32 %846 to i64
  %848 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %847) #8
  %849 = load i32, ptr %73, align 4, !tbaa !40
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %79, ptr noundef nonnull align 8 dereferenceable(64) %848, i32 noundef %849)
          to label %850 unwind label %963

850:                                              ; preds = %821
  %851 = load i32, ptr %74, align 4, !tbaa !40
  %852 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %79, i32 noundef %851)
          to label %853 unwind label %967

853:                                              ; preds = %850
  %854 = load double, ptr %852, align 8, !tbaa !46
  %855 = load i32, ptr %70, align 4, !tbaa !40
  %856 = sext i32 %855 to i64
  %857 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %856) #8
  %858 = load double, ptr %857, align 8, !tbaa !46
  %859 = load double, ptr %76, align 8, !tbaa !46
  %860 = load ptr, ptr %71, align 8, !tbaa !5
  %861 = load i32, ptr %74, align 4, !tbaa !40
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %860, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !46
  %865 = load ptr, ptr %71, align 8, !tbaa !5
  %866 = load i32, ptr %73, align 4, !tbaa !40
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds double, ptr %865, i64 %867
  %869 = load double, ptr %868, align 8, !tbaa !46
  %870 = load double, ptr %77, align 8, !tbaa !46
  %871 = fmul double %869, %870
  %872 = call double @llvm.fmuladd.f64(double %859, double %864, double %871)
  %873 = load ptr, ptr %71, align 8, !tbaa !5
  %874 = load i32, ptr %73, align 4, !tbaa !40
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds double, ptr %873, i64 %875
  %877 = load double, ptr %876, align 8, !tbaa !46
  %878 = load ptr, ptr %71, align 8, !tbaa !5
  %879 = load i32, ptr %74, align 4, !tbaa !40
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %878, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !46
  %883 = fneg double %877
  %884 = call double @llvm.fmuladd.f64(double %883, double %882, double %872)
  %885 = fneg double %858
  %886 = call double @llvm.fmuladd.f64(double %885, double %884, double %854)
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %79) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #8
  store double %886, ptr %78, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %887 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 18
  %888 = load i32, ptr %70, align 4, !tbaa !40
  %889 = sext i32 %888 to i64
  %890 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %887, i64 noundef %889) #8
  %891 = load double, ptr %890, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #8
  %892 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 14
  %893 = load i32, ptr %70, align 4, !tbaa !40
  %894 = sext i32 %893 to i64
  %895 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %892, i64 noundef %894) #8
  %896 = load i32, ptr %73, align 4, !tbaa !40
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %81, ptr noundef nonnull align 8 dereferenceable(64) %895, i32 noundef %896)
          to label %897 unwind label %972

897:                                              ; preds = %853
  %898 = load i32, ptr %74, align 4, !tbaa !40
  %899 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %81, i32 noundef %898)
          to label %900 unwind label %976

900:                                              ; preds = %897
  %901 = load double, ptr %899, align 8, !tbaa !46
  %902 = fmul double %891, %901
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %81) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #8
  store double %902, ptr %80, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %903 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 18
  %904 = load i32, ptr %70, align 4, !tbaa !40
  %905 = sext i32 %904 to i64
  %906 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %903, i64 noundef %905) #8
  %907 = load double, ptr %906, align 8, !tbaa !46
  %908 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 13
  %909 = load i32, ptr %70, align 4, !tbaa !40
  %910 = sext i32 %909 to i64
  %911 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %908, i64 noundef %910) #8
  %912 = load i32, ptr %73, align 4, !tbaa !40
  %913 = sext i32 %912 to i64
  %914 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %911, i64 noundef %913) #8
  %915 = load double, ptr %914, align 8, !tbaa !46
  %916 = load ptr, ptr %71, align 8, !tbaa !5
  %917 = load i32, ptr %73, align 4, !tbaa !40
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds double, ptr %916, i64 %918
  %920 = load double, ptr %919, align 8, !tbaa !46
  %921 = fsub double %915, %920
  %922 = fmul double %907, %921
  %923 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 13
  %924 = load i32, ptr %70, align 4, !tbaa !40
  %925 = sext i32 %924 to i64
  %926 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %923, i64 noundef %925) #8
  %927 = load i32, ptr %74, align 4, !tbaa !40
  %928 = sext i32 %927 to i64
  %929 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %926, i64 noundef %928) #8
  %930 = load double, ptr %929, align 8, !tbaa !46
  %931 = load ptr, ptr %71, align 8, !tbaa !5
  %932 = load i32, ptr %74, align 4, !tbaa !40
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds double, ptr %931, i64 %933
  %935 = load double, ptr %934, align 8, !tbaa !46
  %936 = fsub double %930, %935
  %937 = fmul double %922, %936
  store double %937, ptr %82, align 8, !tbaa !46
  %938 = load double, ptr %78, align 8, !tbaa !46
  %939 = load double, ptr %80, align 8, !tbaa !46
  %940 = fadd double %938, %939
  %941 = load double, ptr %82, align 8, !tbaa !46
  %942 = fadd double %940, %941
  %943 = load double, ptr %72, align 8, !tbaa !46
  %944 = fmul double %942, %943
  call void @llvm.lifetime.start.p0(i64 24, ptr %83) #8
  %945 = load ptr, ptr %12, align 8, !tbaa !5
  %946 = load i32, ptr %70, align 4, !tbaa !40
  %947 = sext i32 %946 to i64
  %948 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %945, i64 noundef %947) #8
  %949 = load i32, ptr %73, align 4, !tbaa !40
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %83, ptr noundef nonnull align 8 dereferenceable(64) %948, i32 noundef %949)
          to label %950 unwind label %981

950:                                              ; preds = %900
  %951 = load i32, ptr %74, align 4, !tbaa !40
  %952 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %83, i32 noundef %951)
          to label %953 unwind label %985

953:                                              ; preds = %950
  store double %944, ptr %952, align 8, !tbaa !46
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %83) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %992

954:                                              ; preds = %812
  %955 = landingpad { ptr, i32 }
          cleanup
  %956 = extractvalue { ptr, i32 } %955, 0
  store ptr %956, ptr %18, align 8
  %957 = extractvalue { ptr, i32 } %955, 1
  store i32 %957, ptr %19, align 4
  br label %962

958:                                              ; preds = %815
  %959 = landingpad { ptr, i32 }
          cleanup
  %960 = extractvalue { ptr, i32 } %959, 0
  store ptr %960, ptr %18, align 8
  %961 = extractvalue { ptr, i32 } %959, 1
  store i32 %961, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %75) #8
  br label %962

962:                                              ; preds = %958, %954
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #8
  br label %996

963:                                              ; preds = %821
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %18, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %19, align 4
  br label %971

967:                                              ; preds = %850
  %968 = landingpad { ptr, i32 }
          cleanup
  %969 = extractvalue { ptr, i32 } %968, 0
  store ptr %969, ptr %18, align 8
  %970 = extractvalue { ptr, i32 } %968, 1
  store i32 %970, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %79) #8
  br label %971

971:                                              ; preds = %967, %963
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #8
  br label %991

972:                                              ; preds = %853
  %973 = landingpad { ptr, i32 }
          cleanup
  %974 = extractvalue { ptr, i32 } %973, 0
  store ptr %974, ptr %18, align 8
  %975 = extractvalue { ptr, i32 } %973, 1
  store i32 %975, ptr %19, align 4
  br label %980

976:                                              ; preds = %897
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %18, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %81) #8
  br label %980

980:                                              ; preds = %976, %972
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #8
  br label %990

981:                                              ; preds = %900
  %982 = landingpad { ptr, i32 }
          cleanup
  %983 = extractvalue { ptr, i32 } %982, 0
  store ptr %983, ptr %18, align 8
  %984 = extractvalue { ptr, i32 } %982, 1
  store i32 %984, ptr %19, align 4
  br label %989

985:                                              ; preds = %950
  %986 = landingpad { ptr, i32 }
          cleanup
  %987 = extractvalue { ptr, i32 } %986, 0
  store ptr %987, ptr %18, align 8
  %988 = extractvalue { ptr, i32 } %986, 1
  store i32 %988, ptr %19, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %83) #8
  br label %989

989:                                              ; preds = %985, %981
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %990

990:                                              ; preds = %989, %980
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %991

991:                                              ; preds = %990, %971
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %996

992:                                              ; preds = %953, %818
  br label %993

993:                                              ; preds = %992
  %994 = load i32, ptr %74, align 4, !tbaa !40
  %995 = add nsw i32 %994, 1
  store i32 %995, ptr %74, align 4, !tbaa !40
  br label %807, !llvm.loop !67

996:                                              ; preds = %991, %962
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #8
  br label %1076

997:                                              ; preds = %811
  br label %998

998:                                              ; preds = %997
  %999 = load i32, ptr %73, align 4, !tbaa !40
  %1000 = add nsw i32 %999, 1
  store i32 %1000, ptr %73, align 4, !tbaa !40
  br label %792, !llvm.loop !68

1001:                                             ; preds = %797
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  br label %1002

1002:                                             ; preds = %1001
  %1003 = load i32, ptr %70, align 4, !tbaa !40
  %1004 = add nsw i32 %1003, 1
  store i32 %1004, ptr %70, align 4, !tbaa !40
  br label %769, !llvm.loop !69

1005:                                             ; preds = %774
  br label %1006

1006:                                             ; preds = %1005, %767
  %1007 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNK4sptk23GaussianMixtureModeling13FloorVarianceEPSt6vectorINS_15SymmetricMatrixESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(264) %86, ptr noundef %1007)
          to label %1008 unwind label %533

1008:                                             ; preds = %1006
  %1009 = load double, ptr %38, align 8, !tbaa !46
  %1010 = load ptr, ptr %13, align 8, !tbaa !5
  store double %1009, ptr %1010, align 8, !tbaa !46
  %1011 = load i32, ptr %39, align 4, !tbaa !40
  %1012 = sitofp i32 %1011 to double
  %1013 = load double, ptr %38, align 8, !tbaa !46
  %1014 = fdiv double %1013, %1012
  store double %1014, ptr %38, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %1015 = load double, ptr %38, align 8, !tbaa !46
  %1016 = load double, ptr %29, align 8, !tbaa !46
  %1017 = fsub double %1015, %1016
  store double %1017, ptr %84, align 8, !tbaa !46
  %1018 = load i32, ptr %30, align 4, !tbaa !40
  %1019 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 10
  %1020 = load i32, ptr %1019, align 4, !tbaa !70
  %1021 = srem i32 %1018, %1020
  %1022 = icmp eq i32 0, %1021
  br i1 %1022, label %1023, label %1061

1023:                                             ; preds = %1008
  %1024 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str)
          to label %1025 unwind label %1048

1025:                                             ; preds = %1023
  %1026 = invoke i32 @_ZSt4setwi(i32 noundef 3)
          to label %1027 unwind label %1048

1027:                                             ; preds = %1025
  %1028 = getelementptr inbounds %"struct.std::_Setw", ptr %85, i32 0, i32 0
  store i32 %1026, ptr %1028, align 4
  %1029 = getelementptr inbounds %"struct.std::_Setw", ptr %85, i32 0, i32 0
  %1030 = load i32, ptr %1029, align 4
  %1031 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8) %1024, i32 %1030)
          to label %1032 unwind label %1048

1032:                                             ; preds = %1027
  %1033 = load i32, ptr %30, align 4, !tbaa !40
  %1034 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1031, i32 noundef %1033)
          to label %1035 unwind label %1048

1035:                                             ; preds = %1032
  %1036 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1034, ptr noundef @.str.1)
          to label %1037 unwind label %1048

1037:                                             ; preds = %1035
  %1038 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.2)
          to label %1039 unwind label %1048

1039:                                             ; preds = %1037
  %1040 = load double, ptr %38, align 8, !tbaa !46
  %1041 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %1038, double noundef %1040)
          to label %1042 unwind label %1048

1042:                                             ; preds = %1039
  %1043 = load i32, ptr %30, align 4, !tbaa !40
  %1044 = icmp eq i32 1, %1043
  br i1 %1044, label %1045, label %1052

1045:                                             ; preds = %1042
  %1046 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1047 unwind label %1048

1047:                                             ; preds = %1045
  br label %1060

1048:                                             ; preds = %1057, %1054, %1052, %1045, %1039, %1037, %1035, %1032, %1027, %1025, %1023
  %1049 = landingpad { ptr, i32 }
          cleanup
  %1050 = extractvalue { ptr, i32 } %1049, 0
  store ptr %1050, ptr %18, align 8
  %1051 = extractvalue { ptr, i32 } %1049, 1
  store i32 %1051, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %1076

1052:                                             ; preds = %1042
  %1053 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.3)
          to label %1054 unwind label %1048

1054:                                             ; preds = %1052
  %1055 = load double, ptr %84, align 8, !tbaa !46
  %1056 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %1053, double noundef %1055)
          to label %1057 unwind label %1048

1057:                                             ; preds = %1054
  %1058 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1056, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1059 unwind label %1048

1059:                                             ; preds = %1057
  br label %1060

1060:                                             ; preds = %1059, %1047
  br label %1061

1061:                                             ; preds = %1060, %1008
  %1062 = load double, ptr %84, align 8, !tbaa !46
  %1063 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %86, i32 0, i32 4
  %1064 = load double, ptr %1063, align 8, !tbaa !71
  %1065 = fcmp olt double %1062, %1064
  br i1 %1065, label %1066, label %1067

1066:                                             ; preds = %1061
  store i32 9, ptr %15, align 4
  br label %1069

1067:                                             ; preds = %1061
  %1068 = load double, ptr %38, align 8, !tbaa !46
  store double %1068, ptr %29, align 8, !tbaa !46
  store i32 0, ptr %15, align 4
  br label %1069

1069:                                             ; preds = %1067, %1066
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %1070

1070:                                             ; preds = %1069, %455
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  %1071 = load i32, ptr %15, align 4
  switch i32 %1071, label %1077 [
    i32 0, label %1072
  ]

1072:                                             ; preds = %1070
  br label %1073

1073:                                             ; preds = %1072
  %1074 = load i32, ptr %30, align 4, !tbaa !40
  %1075 = add nsw i32 %1074, 1
  store i32 %1075, ptr %30, align 4, !tbaa !40
  br label %212, !llvm.loop !72

1076:                                             ; preds = %1048, %996, %758, %533, %454
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %1079

1077:                                             ; preds = %1070, %217
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  %1078 = load i32, ptr %15, align 4
  switch i32 %1078, label %1081 [
    i32 9, label %1080
  ]

1079:                                             ; preds = %1076, %277, %242
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  br label %1082

1080:                                             ; preds = %1077
  store i1 true, ptr %7, align 1
  store i32 1, ptr %15, align 4
  br label %1081

1081:                                             ; preds = %1080, %1077
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  call void @_ZN4sptk23GaussianMixtureModeling6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %26) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %26) #8
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #8
  br label %1089

1082:                                             ; preds = %1079, %222
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  call void @_ZN4sptk23GaussianMixtureModeling6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %26) #8
  br label %1083

1083:                                             ; preds = %1082, %218
  call void @llvm.lifetime.end.p0(i64 88, ptr %26) #8
  br label %1084

1084:                                             ; preds = %1083, %202
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  br label %1085

1085:                                             ; preds = %1084, %189
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  br label %1086

1086:                                             ; preds = %1085, %174
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  br label %1087

1087:                                             ; preds = %1086, %160
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  br label %1088

1088:                                             ; preds = %1087, %156
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %1092

1089:                                             ; preds = %1081, %140, %128, %120
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %1090

1090:                                             ; preds = %1089, %105
  %1091 = load i1, ptr %7, align 1
  ret i1 %1091

1092:                                             ; preds = %1088
  %1093 = load ptr, ptr %18, align 8
  %1094 = load i32, ptr %19, align 4
  %1095 = insertvalue { ptr, i32 } poison, ptr %1093, 0
  %1096 = insertvalue { ptr, i32 } %1095, i32 %1094, 1
  resume { ptr, i32 } %1096
}

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4sptk23GaussianMixtureModeling10InitializeERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_PS5_PS1_INS_15SymmetricMatrixESaISA_EE(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ptr noundef) #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIdED2Ev(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 #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4sptk23GaussianMixtureModeling23CalculateLogProbabilityEiibbRKSt6vectorIdSaIdEES5_RKS1_IS3_SaIS3_EERKS1_INS_15SymmetricMatrixESaISA_EEPS3_PdPNS0_6BufferE(i32 noundef, i32 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ptr noundef) #2 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) #3 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) #3 align 2

; Function Attrs: nounwind
declare double @exp(double noundef) #5

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNK4sptk23GaussianMixtureModeling11FloorWeightEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef) #3 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) #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local i32 @_ZSt4setwi(i32 noundef) #7

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #1

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !31, i64 169}
!10 = !{!"_ZTSN4sptk23GaussianMixtureModelingE", !11, i64 8, !11, i64 12, !11, i64 16, !12, i64 24, !13, i64 32, !14, i64 40, !12, i64 64, !12, i64 72, !18, i64 80, !11, i64 84, !12, i64 88, !19, i64 96, !23, i64 120, !27, i64 144, !31, i64 168, !31, i64 169, !32, i64 176, !19, i64 240}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"_ZTSN4sptk23GaussianMixtureModeling14CovarianceTypeE", !7, i64 0}
!14 = !{!"_ZTSSt6vectorIiSaIiEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSN4sptk23GaussianMixtureModeling18InitializationTypeE", !7, i64 0}
!19 = !{!"_ZTSSt6vectorIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIN4sptk15SymmetricMatrixESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"bool", !7, i64 0}
!32 = !{!"_ZTSN4sptk15SymmetricMatrixE", !11, i64 8, !19, i64 16, !33, i64 40}
!33 = !{!"_ZTSSt6vectorIPdSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIPdSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!10, !11, i64 8}
!40 = !{!11, !11, i64 0}
!41 = !{!10, !18, i64 80}
!42 = !{!10, !11, i64 12}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = distinct !{!45, !44}
!46 = !{!12, !12, i64 0}
!47 = !{!10, !11, i64 16}
!48 = distinct !{!48, !44}
!49 = !{!50, !31, i64 80}
!50 = !{!"_ZTSN4sptk23GaussianMixtureModeling6BufferE", !19, i64 8, !19, i64 32, !27, i64 56, !31, i64 80}
!51 = !{!10, !31, i64 168}
!52 = distinct !{!52, !44}
!53 = distinct !{!53, !44}
!54 = distinct !{!54, !44}
!55 = distinct !{!55, !44}
!56 = distinct !{!56, !44}
!57 = !{!10, !12, i64 88}
!58 = distinct !{!58, !44}
!59 = distinct !{!59, !44}
!60 = distinct !{!60, !44}
!61 = distinct !{!61, !44}
!62 = distinct !{!62, !44}
!63 = distinct !{!63, !44}
!64 = distinct !{!64, !44}
!65 = distinct !{!65, !44}
!66 = distinct !{!66, !44}
!67 = distinct !{!67, !44}
!68 = distinct !{!68, !44}
!69 = distinct !{!69, !44}
!70 = !{!10, !11, i64 84}
!71 = !{!10, !12, i64 24}
!72 = distinct !{!72, !44}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.2" = type { i8 }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = 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::allocator.7" = type { i8 }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = 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.std::allocator.12" = type { i8 }
%"class.sptk::GaussianMixtureModeling::Buffer" = type <{ ptr, %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.10", i8, [7 x i8] }>

@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [6 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @_ZN4sptk15SymmetricMatrix6ResizeEi(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) local_unnamed_addr #1

declare void @_ZN4sptk15SymmetricMatrix4FillEd(ptr noundef nonnull align 8 dereferenceable(64), double noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK4sptk23GaussianMixtureModeling3RunERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_PS5_PS1_INS_15SymmetricMatrixESaISA_EEPd(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef writeonly %5) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.std::vector.0", align 8
  %8 = alloca %"class.std::allocator.2", align 1
  %9 = alloca %"class.std::vector.5", align 8
  %10 = alloca %"class.std::allocator.7", align 1
  %11 = alloca %"class.std::vector.10", align 8
  %12 = alloca %"class.std::allocator.12", align 1
  %13 = alloca %"class.sptk::GaussianMixtureModeling::Buffer", align 8
  %14 = alloca %"class.std::vector.0", align 8
  %15 = alloca %"class.std::allocator.2", align 1
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %20 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %21 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %22 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %23 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %24 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %25 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %26 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %27 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %28 = getelementptr inbounds i8, ptr %0, i64 169
  %29 = load i8, ptr %28, align 1, !tbaa !5, !range !36, !noundef !37
  %30 = trunc nuw i8 %29 to i1
  br i1 %30, label %31, label %501

31:                                               ; preds = %6
  %32 = tail call noundef zeroext i1 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %33 = insertelement <4 x ptr> poison, ptr %2, i64 0
  %34 = insertelement <4 x ptr> %33, ptr %3, i64 1
  %35 = insertelement <4 x ptr> %34, ptr %4, i64 2
  %36 = insertelement <4 x ptr> %35, ptr %5, i64 3
  %37 = icmp eq <4 x ptr> %36, zeroinitializer
  %38 = bitcast <4 x i1> %37 to i4
  %39 = icmp ne i4 %38, 0
  %op.rdx = or i1 %39, %32
  br i1 %op.rdx, label %501, label %40

40:                                               ; preds = %31
  %41 = getelementptr inbounds i8, ptr %0, i64 8
  %42 = load i32, ptr %41, align 8, !tbaa !38
  %43 = add nsw i32 %42, 1
  %44 = getelementptr inbounds i8, ptr %0, i64 80
  %45 = load i32, ptr %44, align 8, !tbaa !39
  switch i32 %45, label %501 [
    i32 0, label %46
    i32 1, label %50
    i32 2, label %52
  ]

46:                                               ; preds = %40
  %47 = getelementptr inbounds i8, ptr %0, i64 12
  %48 = load i32, ptr %47, align 4, !tbaa !40
  %49 = tail call noundef zeroext i1 @_ZN12_GLOBAL__N_18CheckGmmEiiRKSt6vectorIdSaIdEERKS0_IS2_SaIS2_EERKS0_IN4sptk15SymmetricMatrixESaISA_EE(i32 noundef %48, i32 noundef %43, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4)
  br i1 %49, label %59, label %501

50:                                               ; preds = %40
  %51 = tail call noundef zeroext i1 @_ZNK4sptk23GaussianMixtureModeling10InitializeERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_PS5_PS1_INS_15SymmetricMatrixESaISA_EE(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br i1 %51, label %59, label %501

52:                                               ; preds = %40
  %53 = getelementptr inbounds i8, ptr %0, i64 96
  %54 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIdSaIdEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %53)
  %55 = getelementptr inbounds i8, ptr %0, i64 120
  %56 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %55)
  %57 = getelementptr inbounds i8, ptr %0, i64 144
  %58 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %57)
  br label %59

59:                                               ; preds = %50, %46, %52
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #8
  %60 = getelementptr inbounds i8, ptr %0, i64 12
  %61 = load i32, ptr %60, align 4, !tbaa !40
  %62 = sext i32 %61 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %62, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %63 unwind label %70

63:                                               ; preds = %59
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  %64 = load i32, ptr %60, align 4, !tbaa !40
  %65 = sext i32 %64 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %65, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %66 unwind label %72

66:                                               ; preds = %63
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  %67 = load i32, ptr %60, align 4, !tbaa !40
  %68 = icmp sgt i32 %67, 0
  br i1 %68, label %.lr.ph, label %.._crit_edge_crit_edge

.._crit_edge_crit_edge:                           ; preds = %66
  %.pre527 = sext i32 %67 to i64
  br label %._crit_edge

.lr.ph:                                           ; preds = %66
  %69 = sext i32 %43 to i64
  br label %74

._crit_edge:                                      ; preds = %76, %.._crit_edge_crit_edge
  %.pre-phi = phi i64 [ %.pre527, %.._crit_edge_crit_edge ], [ %78, %76 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  call void @_ZNSaIN4sptk15SymmetricMatrixEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  invoke void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %.pre-phi, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %82 unwind label %87

70:                                               ; preds = %59
  %71 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  br label %500

72:                                               ; preds = %63
  %73 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  br label %499

74:                                               ; preds = %.lr.ph, %76
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %76 ]
  %75 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv) #8
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef %69)
          to label %76 unwind label %80

76:                                               ; preds = %74
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %77 = load i32, ptr %60, align 4, !tbaa !40
  %78 = sext i32 %77 to i64
  %79 = icmp slt i64 %indvars.iv.next, %78
  br i1 %79, label %74, label %._crit_edge, !llvm.loop !41

80:                                               ; preds = %74
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %498

82:                                               ; preds = %._crit_edge
  call void @_ZNSt15__new_allocatorIN4sptk15SymmetricMatrixEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  %83 = load i32, ptr %60, align 4, !tbaa !40
  %84 = icmp sgt i32 %83, 0
  br i1 %84, label %.lr.ph381, label %._crit_edge382

._crit_edge382:                                   ; preds = %90, %82
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %13) #8
  call void @_ZN4sptk23GaussianMixtureModeling6BufferC2Ev(ptr noundef nonnull align 8 dereferenceable(81) %13)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #8
  %85 = load i32, ptr %60, align 4, !tbaa !40
  %86 = sext i32 %85 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %86, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %96 unwind label %111

87:                                               ; preds = %._crit_edge
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN4sptk15SymmetricMatrixEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  br label %497

.lr.ph381:                                        ; preds = %82, %90
  %indvars.iv462 = phi i64 [ %indvars.iv.next463, %90 ], [ 0, %82 ]
  %89 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv462) #8
  invoke void @_ZN4sptk15SymmetricMatrix6ResizeEi(ptr noundef nonnull align 8 dereferenceable(64) %89, i32 noundef %43)
          to label %90 unwind label %94

90:                                               ; preds = %.lr.ph381
  %indvars.iv.next463 = add nuw nsw i64 %indvars.iv462, 1
  %91 = load i32, ptr %60, align 4, !tbaa !40
  %92 = sext i32 %91 to i64
  %93 = icmp slt i64 %indvars.iv.next463, %92
  br i1 %93, label %.lr.ph381, label %._crit_edge382, !llvm.loop !43

94:                                               ; preds = %.lr.ph381
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %496

96:                                               ; preds = %._crit_edge382
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  %97 = getelementptr inbounds i8, ptr %0, i64 16
  %98 = load i32, ptr %97, align 8, !tbaa !44
  %.not442 = icmp slt i32 %98, 1
  br i1 %.not442, label %.thread352, label %.lr.ph446

.lr.ph446:                                        ; preds = %96
  %99 = getelementptr inbounds i8, ptr %13, i64 80
  %100 = getelementptr inbounds i8, ptr %0, i64 168
  %101 = getelementptr inbounds i8, ptr %0, i64 176
  %102 = getelementptr inbounds i8, ptr %0, i64 88
  %103 = getelementptr inbounds i8, ptr %0, i64 240
  %104 = getelementptr inbounds i8, ptr %0, i64 120
  %105 = getelementptr inbounds i8, ptr %0, i64 144
  %106 = getelementptr inbounds i8, ptr %0, i64 84
  %107 = getelementptr inbounds i8, ptr %0, i64 24
  br label %113

108:                                              ; preds = %491
  %109 = add nuw nsw i32 %.0275443, 1
  %110 = load i32, ptr %97, align 8, !tbaa !44
  %.not.not = icmp slt i32 %.0275443, %110
  br i1 %.not.not, label %113, label %.thread352, !llvm.loop !45

111:                                              ; preds = %._crit_edge382
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  br label %495

113:                                              ; preds = %.lr.ph446, %108
  %.0270444 = phi double [ 0xFFEFFFFFFFFFFFFF, %.lr.ph446 ], [ %463, %108 ]
  %.0275443 = phi i32 [ 1, %.lr.ph446 ], [ %109, %108 ]
  %114 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %115 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  store double 0.000000e+00, ptr %16, align 8, !tbaa !46
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdEvT_S7_RKT0_(ptr %114, ptr %115, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %116 unwind label %121

116:                                              ; preds = %113
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  %117 = load i32, ptr %60, align 4, !tbaa !40
  %118 = icmp sgt i32 %117, 0
  br i1 %118, label %.lr.ph385, label %._crit_edge386

._crit_edge386:                                   ; preds = %129, %116
  store i8 0, ptr %99, align 8, !tbaa !47
  %119 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %120 = trunc i64 %119 to i32
  %.not299400 = icmp sgt i32 %120, 0
  br i1 %.not299400, label %.lr.ph404.preheader, label %.thread348

.lr.ph404.preheader:                              ; preds = %._crit_edge386
  %wide.trip.count483 = and i64 %119, 2147483647
  %.pre = load i32, ptr %60, align 4, !tbaa !40
  br label %.lr.ph404

121:                                              ; preds = %113
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %494

.lr.ph385:                                        ; preds = %116, %129
  %indvars.iv465 = phi i64 [ %indvars.iv.next466, %129 ], [ 0, %116 ]
  %123 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv465) #8
  %124 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %123) #8
  %125 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv465) #8
  %126 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %125) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  store double 0.000000e+00, ptr %17, align 8, !tbaa !46
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdEvT_S7_RKT0_(ptr %124, ptr %126, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %127 unwind label %133

127:                                              ; preds = %.lr.ph385
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  %128 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv465) #8
  invoke void @_ZN4sptk15SymmetricMatrix4FillEd(ptr noundef nonnull align 8 dereferenceable(64) %128, double noundef 0.000000e+00)
          to label %129 unwind label %135

129:                                              ; preds = %127
  %indvars.iv.next466 = add nuw nsw i64 %indvars.iv465, 1
  %130 = load i32, ptr %60, align 4, !tbaa !40
  %131 = sext i32 %130 to i64
  %132 = icmp slt i64 %indvars.iv.next466, %131
  br i1 %132, label %.lr.ph385, label %._crit_edge386, !llvm.loop !49

133:                                              ; preds = %.lr.ph385
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %494

135:                                              ; preds = %127
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %494

._crit_edge399.loopexit:                          ; preds = %._crit_edge395, %147
  %137 = phi i32 [ %152, %147 ], [ %171, %._crit_edge395 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  %indvars.iv.next481 = add nuw nsw i64 %indvars.iv480, 1
  %exitcond484.not = icmp eq i64 %indvars.iv.next481, %wide.trip.count483
  br i1 %exitcond484.not, label %.thread348, label %.lr.ph404, !llvm.loop !50

.lr.ph404:                                        ; preds = %.lr.ph404.preheader, %._crit_edge399.loopexit
  %138 = phi i32 [ %.pre, %.lr.ph404.preheader ], [ %137, %._crit_edge399.loopexit ]
  %indvars.iv480 = phi i64 [ 0, %.lr.ph404.preheader ], [ %indvars.iv.next481, %._crit_edge399.loopexit ]
  %.0280402 = phi double [ 0.000000e+00, %.lr.ph404.preheader ], [ %149, %._crit_edge399.loopexit ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %139 = load i32, ptr %41, align 8, !tbaa !38
  %140 = load i8, ptr %100, align 8, !tbaa !51, !range !36, !noundef !37
  %141 = trunc nuw i8 %140 to i1
  %142 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv480) #8
  %143 = invoke noundef zeroext i1 @_ZN4sptk23GaussianMixtureModeling23CalculateLogProbabilityEiibbRKSt6vectorIdSaIdEES5_RKS1_IS3_SaIS3_EERKS1_INS_15SymmetricMatrixESaISA_EEPS3_PdPNS0_6BufferE(i32 noundef %139, i32 noundef %138, i1 noundef zeroext %141, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(24) %142, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull %14, ptr noundef nonnull %18, ptr noundef nonnull %13)
          to label %144 unwind label %145

144:                                              ; preds = %.lr.ph404
  br i1 %143, label %147, label %.thread345

.thread345:                                       ; preds = %144
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %.thread352

145:                                              ; preds = %.lr.ph404
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %213

147:                                              ; preds = %144
  %148 = load double, ptr %18, align 8, !tbaa !46
  %149 = fadd double %.0280402, %148
  %150 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv480) #8
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef 0) #8
  %152 = load i32, ptr %60, align 4, !tbaa !40
  %153 = icmp sgt i32 %152, 0
  br i1 %153, label %.lr.ph398, label %._crit_edge399.loopexit

.lr.ph398:                                        ; preds = %147, %._crit_edge395
  %indvars.iv477 = phi i64 [ %indvars.iv.next478, %._crit_edge395 ], [ 0, %147 ]
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %indvars.iv477) #8
  %155 = load double, ptr %154, align 8, !tbaa !46
  %156 = load double, ptr %18, align 8, !tbaa !46
  %157 = fsub double %155, %156
  %158 = call double @exp(double noundef %157) #8
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv477) #8
  %160 = load double, ptr %159, align 8, !tbaa !46
  %161 = fadd double %158, %160
  store double %161, ptr %159, align 8, !tbaa !46
  %162 = load i32, ptr %41, align 8, !tbaa !38
  %.not323387 = icmp slt i32 %162, 0
  br i1 %.not323387, label %._crit_edge395, label %.lr.ph390

.preheader:                                       ; preds = %.lr.ph390
  %.not324392 = icmp slt i32 %169, 0
  br i1 %.not324392, label %._crit_edge395, label %.lr.ph394

.lr.ph390:                                        ; preds = %.lr.ph398, %.lr.ph390
  %indvars.iv468 = phi i64 [ %indvars.iv.next469, %.lr.ph390 ], [ 0, %.lr.ph398 ]
  %163 = getelementptr inbounds double, ptr %151, i64 %indvars.iv468
  %164 = load double, ptr %163, align 8, !tbaa !46
  %165 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv477) #8
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %165, i64 noundef %indvars.iv468) #8
  %167 = load double, ptr %166, align 8, !tbaa !46
  %168 = call double @llvm.fmuladd.f64(double %158, double %164, double %167)
  store double %168, ptr %166, align 8, !tbaa !46
  %indvars.iv.next469 = add nuw nsw i64 %indvars.iv468, 1
  %169 = load i32, ptr %41, align 8, !tbaa !38
  %170 = sext i32 %169 to i64
  %.not323.not = icmp slt i64 %indvars.iv468, %170
  br i1 %.not323.not, label %.lr.ph390, label %.preheader, !llvm.loop !52

._crit_edge395:                                   ; preds = %181, %.lr.ph398, %.preheader
  %indvars.iv.next478 = add nuw nsw i64 %indvars.iv477, 1
  %171 = load i32, ptr %60, align 4, !tbaa !40
  %172 = sext i32 %171 to i64
  %173 = icmp slt i64 %indvars.iv.next478, %172
  br i1 %173, label %.lr.ph398, label %._crit_edge399.loopexit, !llvm.loop !53

.lr.ph394:                                        ; preds = %.preheader, %181
  %indvars.iv474 = phi i64 [ %indvars.iv.next475, %181 ], [ 0, %.preheader ]
  %174 = load i8, ptr %100, align 8, !tbaa !51, !range !36, !noundef !37
  %175 = trunc nuw i8 %174 to i1
  %176 = trunc nuw nsw i64 %indvars.iv474 to i32
  %177 = and i64 %indvars.iv474, 4294967295
  %178 = getelementptr inbounds double, ptr %151, i64 %indvars.iv474
  %179 = select i1 %175, i64 %177, i64 0
  %180 = add nuw nsw i64 %indvars.iv474, 1
  %wide.trip.count = and i64 %180, 4294967295
  br label %184

181:                                              ; preds = %212
  %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 1
  %182 = load i32, ptr %41, align 8, !tbaa !38
  %183 = sext i32 %182 to i64
  %.not324.not = icmp slt i64 %indvars.iv474, %183
  br i1 %.not324.not, label %.lr.ph394, label %._crit_edge395, !llvm.loop !54

184:                                              ; preds = %.lr.ph394, %212
  %indvars.iv471 = phi i64 [ %179, %.lr.ph394 ], [ %indvars.iv.next472, %212 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #8
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %19, ptr noundef nonnull align 8 dereferenceable(64) %101, i32 noundef %176)
          to label %185 unwind label %202

185:                                              ; preds = %184
  %186 = trunc nuw nsw i64 %indvars.iv471 to i32
  %187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %19, i32 noundef %186)
          to label %188 unwind label %204

188:                                              ; preds = %185
  %189 = load double, ptr %187, align 8, !tbaa !46
  %190 = fcmp une double %189, 0.000000e+00
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  br i1 %190, label %191, label %212

191:                                              ; preds = %188
  %192 = load double, ptr %178, align 8, !tbaa !46
  %193 = fmul double %158, %192
  %194 = getelementptr inbounds double, ptr %151, i64 %indvars.iv471
  %195 = load double, ptr %194, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #8
  %196 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv477) #8
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %20, ptr noundef nonnull align 8 dereferenceable(64) %196, i32 noundef %176)
          to label %197 unwind label %207

197:                                              ; preds = %191
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %20, i32 noundef %186)
          to label %199 unwind label %209

199:                                              ; preds = %197
  %200 = load double, ptr %198, align 8, !tbaa !46
  %201 = call double @llvm.fmuladd.f64(double %193, double %195, double %200)
  store double %201, ptr %198, align 8, !tbaa !46
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %20) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  br label %212

202:                                              ; preds = %184
  %203 = landingpad { ptr, i32 }
          cleanup
  br label %206

204:                                              ; preds = %185
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %19) #8
  br label %206

206:                                              ; preds = %204, %202
  %.pn326 = phi { ptr, i32 } [ %205, %204 ], [ %203, %202 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  br label %213

207:                                              ; preds = %191
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %211

209:                                              ; preds = %197
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %20) #8
  br label %211

211:                                              ; preds = %209, %207
  %.pn328 = phi { ptr, i32 } [ %210, %209 ], [ %208, %207 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  br label %213

212:                                              ; preds = %188, %199
  %indvars.iv.next472 = add nuw nsw i64 %indvars.iv471, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next472, %wide.trip.count
  br i1 %exitcond.not, label %181, label %184, !llvm.loop !55

213:                                              ; preds = %206, %211, %145
  %.pn328.pn.pn = phi { ptr, i32 } [ %146, %145 ], [ %.pn328, %211 ], [ %.pn326, %206 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %494

.thread348:                                       ; preds = %._crit_edge399.loopexit, %._crit_edge386
  %.0280.lcssa = phi double [ 0.000000e+00, %._crit_edge386 ], [ %149, %._crit_edge399.loopexit ]
  %214 = load double, ptr %102, align 8, !tbaa !56
  %215 = fcmp oeq double %214, 0.000000e+00
  %216 = sitofp i32 %120 to double
  br i1 %215, label %217, label %228

217:                                              ; preds = %.thread348
  %218 = fdiv double 1.000000e+00, %216
  %219 = load i32, ptr %60, align 4, !tbaa !40
  %220 = icmp sgt i32 %219, 0
  br i1 %220, label %.lr.ph411, label %.loopexit363

.lr.ph411:                                        ; preds = %217, %.lr.ph411
  %indvars.iv488 = phi i64 [ %indvars.iv.next489, %.lr.ph411 ], [ 0, %217 ]
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv488) #8
  %222 = load double, ptr %221, align 8, !tbaa !46
  %223 = fmul double %218, %222
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv488) #8
  store double %223, ptr %224, align 8, !tbaa !46
  %indvars.iv.next489 = add nuw nsw i64 %indvars.iv488, 1
  %225 = load i32, ptr %60, align 4, !tbaa !40
  %226 = sext i32 %225 to i64
  %227 = icmp slt i64 %indvars.iv.next489, %226
  br i1 %227, label %.lr.ph411, label %.loopexit363, !llvm.loop !57

228:                                              ; preds = %.thread348
  %229 = fadd double %214, %216
  %230 = fdiv double 1.000000e+00, %229
  %231 = load i32, ptr %60, align 4, !tbaa !40
  %232 = icmp sgt i32 %231, 0
  br i1 %232, label %.lr.ph408, label %.loopexit363

.lr.ph408:                                        ; preds = %228, %.lr.ph408
  %indvars.iv485 = phi i64 [ %indvars.iv.next486, %.lr.ph408 ], [ 0, %228 ]
  %233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv485) #8
  %234 = load double, ptr %233, align 8, !tbaa !46
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv485) #8
  %236 = load double, ptr %235, align 8, !tbaa !46
  %237 = fadd double %234, %236
  %238 = fmul double %230, %237
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv485) #8
  store double %238, ptr %239, align 8, !tbaa !46
  %indvars.iv.next486 = add nuw nsw i64 %indvars.iv485, 1
  %240 = load i32, ptr %60, align 4, !tbaa !40
  %241 = sext i32 %240 to i64
  %242 = icmp slt i64 %indvars.iv.next486, %241
  br i1 %242, label %.lr.ph408, label %.loopexit363, !llvm.loop !58

.loopexit363:                                     ; preds = %.lr.ph408, %.lr.ph411, %228, %217
  call void @_ZNK4sptk23GaussianMixtureModeling11FloorWeightEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef %2)
  %243 = load double, ptr %102, align 8, !tbaa !56
  %244 = fcmp oeq double %243, 0.000000e+00
  %245 = load i32, ptr %60, align 4, !tbaa !40
  %246 = icmp sgt i32 %245, 0
  br i1 %244, label %.preheader359, label %.preheader361

.preheader361:                                    ; preds = %.loopexit363
  br i1 %246, label %.lr.ph418, label %.loopexit360

.preheader359:                                    ; preds = %.loopexit363
  br i1 %246, label %.lr.ph425, label %.loopexit360

247:                                              ; preds = %.loopexit
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %494

.lr.ph425:                                        ; preds = %.preheader359, %._crit_edge423
  %indvars.iv500 = phi i64 [ %indvars.iv.next501, %._crit_edge423 ], [ 0, %.preheader359 ]
  %249 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv500) #8
  %250 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef 0) #8
  %251 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv500) #8
  %252 = load double, ptr %251, align 8, !tbaa !46
  %253 = fdiv double 1.000000e+00, %252
  %254 = load i32, ptr %41, align 8, !tbaa !38
  %.not322419 = icmp slt i32 %254, 0
  br i1 %.not322419, label %._crit_edge423, label %.lr.ph422

._crit_edge423:                                   ; preds = %.lr.ph422, %.lr.ph425
  %indvars.iv.next501 = add nuw nsw i64 %indvars.iv500, 1
  %255 = load i32, ptr %60, align 4, !tbaa !40
  %256 = sext i32 %255 to i64
  %257 = icmp slt i64 %indvars.iv.next501, %256
  br i1 %257, label %.lr.ph425, label %.loopexit360thread-pre-split, !llvm.loop !59

.lr.ph422:                                        ; preds = %.lr.ph425, %.lr.ph422
  %indvars.iv497 = phi i64 [ %indvars.iv.next498, %.lr.ph422 ], [ 0, %.lr.ph425 ]
  %258 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv500) #8
  %259 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %258, i64 noundef %indvars.iv497) #8
  %260 = load double, ptr %259, align 8, !tbaa !46
  %261 = fmul double %253, %260
  %262 = getelementptr inbounds double, ptr %250, i64 %indvars.iv497
  store double %261, ptr %262, align 8, !tbaa !46
  %indvars.iv.next498 = add nuw nsw i64 %indvars.iv497, 1
  %263 = load i32, ptr %41, align 8, !tbaa !38
  %264 = sext i32 %263 to i64
  %.not322.not = icmp slt i64 %indvars.iv497, %264
  br i1 %.not322.not, label %.lr.ph422, label %._crit_edge423, !llvm.loop !60

.lr.ph418:                                        ; preds = %.preheader361, %._crit_edge416
  %indvars.iv494 = phi i64 [ %indvars.iv.next495, %._crit_edge416 ], [ 0, %.preheader361 ]
  %265 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv494) #8
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %265, i64 noundef 0) #8
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv494) #8
  %268 = load double, ptr %267, align 8, !tbaa !46
  %269 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv494) #8
  %270 = load double, ptr %269, align 8, !tbaa !46
  %271 = fadd double %268, %270
  %272 = fdiv double 1.000000e+00, %271
  %273 = load i32, ptr %41, align 8, !tbaa !38
  %.not300412 = icmp slt i32 %273, 0
  br i1 %.not300412, label %._crit_edge416, label %.lr.ph415

._crit_edge416:                                   ; preds = %.lr.ph415, %.lr.ph418
  %indvars.iv.next495 = add nuw nsw i64 %indvars.iv494, 1
  %274 = load i32, ptr %60, align 4, !tbaa !40
  %275 = sext i32 %274 to i64
  %276 = icmp slt i64 %indvars.iv.next495, %275
  br i1 %276, label %.lr.ph418, label %.loopexit360thread-pre-split, !llvm.loop !61

.lr.ph415:                                        ; preds = %.lr.ph418, %.lr.ph415
  %indvars.iv491 = phi i64 [ %indvars.iv.next492, %.lr.ph415 ], [ 0, %.lr.ph418 ]
  %277 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv494) #8
  %278 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %277, i64 noundef %indvars.iv491) #8
  %279 = load double, ptr %278, align 8, !tbaa !46
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv494) #8
  %281 = load double, ptr %280, align 8, !tbaa !46
  %282 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %indvars.iv494) #8
  %283 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %282, i64 noundef %indvars.iv491) #8
  %284 = load double, ptr %283, align 8, !tbaa !46
  %285 = call double @llvm.fmuladd.f64(double %281, double %284, double %279)
  %286 = fmul double %272, %285
  %287 = getelementptr inbounds double, ptr %266, i64 %indvars.iv491
  store double %286, ptr %287, align 8, !tbaa !46
  %indvars.iv.next492 = add nuw nsw i64 %indvars.iv491, 1
  %288 = load i32, ptr %41, align 8, !tbaa !38
  %289 = sext i32 %288 to i64
  %.not300.not = icmp slt i64 %indvars.iv491, %289
  br i1 %.not300.not, label %.lr.ph415, label %._crit_edge416, !llvm.loop !62

.loopexit360thread-pre-split:                     ; preds = %._crit_edge416, %._crit_edge423
  %.ph = phi i32 [ %255, %._crit_edge423 ], [ %274, %._crit_edge416 ]
  %.pr = load double, ptr %102, align 8, !tbaa !56
  br label %.loopexit360

.loopexit360:                                     ; preds = %.loopexit360thread-pre-split, %.preheader361, %.preheader359
  %290 = phi double [ %.pr, %.loopexit360thread-pre-split ], [ %243, %.preheader361 ], [ %243, %.preheader359 ]
  %291 = phi i32 [ %.ph, %.loopexit360thread-pre-split ], [ %245, %.preheader361 ], [ %245, %.preheader359 ]
  %292 = fcmp oeq double %290, 0.000000e+00
  %293 = icmp sgt i32 %291, 0
  br i1 %292, label %.preheader356, label %.preheader357

.preheader357:                                    ; preds = %.loopexit360
  br i1 %293, label %.lr.ph433, label %.loopexit

.preheader356:                                    ; preds = %.loopexit360
  br i1 %293, label %.lr.ph441, label %.loopexit

.lr.ph441:                                        ; preds = %.preheader356, %._crit_edge439
  %indvars.iv524 = phi i64 [ %indvars.iv.next525, %._crit_edge439 ], [ 0, %.preheader356 ]
  %294 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv524) #8
  %295 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %294, i64 noundef 0) #8
  %296 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv524) #8
  %297 = load double, ptr %296, align 8, !tbaa !46
  %298 = fdiv double 1.000000e+00, %297
  %299 = load i32, ptr %41, align 8, !tbaa !38
  %.not313435 = icmp slt i32 %299, 0
  br i1 %.not313435, label %._crit_edge439, label %.lr.ph438

._crit_edge439:                                   ; preds = %310, %.lr.ph441
  %indvars.iv.next525 = add nuw nsw i64 %indvars.iv524, 1
  %300 = load i32, ptr %60, align 4, !tbaa !40
  %301 = sext i32 %300 to i64
  %302 = icmp slt i64 %indvars.iv.next525, %301
  br i1 %302, label %.lr.ph441, label %.loopexit, !llvm.loop !63

.lr.ph438:                                        ; preds = %.lr.ph441, %310
  %indvars.iv521 = phi i64 [ %indvars.iv.next522, %310 ], [ 0, %.lr.ph441 ]
  %303 = load i8, ptr %100, align 8, !tbaa !51, !range !36, !noundef !37
  %304 = trunc nuw i8 %303 to i1
  %305 = trunc nuw nsw i64 %indvars.iv521 to i32
  %306 = and i64 %indvars.iv521, 4294967295
  %307 = getelementptr inbounds double, ptr %295, i64 %indvars.iv521
  %308 = select i1 %304, i64 %306, i64 0
  %309 = add nuw nsw i64 %indvars.iv521, 1
  %wide.trip.count519 = and i64 %309, 4294967295
  br label %313

310:                                              ; preds = %352
  %indvars.iv.next522 = add nuw nsw i64 %indvars.iv521, 1
  %311 = load i32, ptr %41, align 8, !tbaa !38
  %312 = sext i32 %311 to i64
  %.not313.not = icmp slt i64 %indvars.iv521, %312
  br i1 %.not313.not, label %.lr.ph438, label %._crit_edge439, !llvm.loop !64

313:                                              ; preds = %.lr.ph438, %352
  %indvars.iv515 = phi i64 [ %308, %.lr.ph438 ], [ %indvars.iv.next516, %352 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #8
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %21, ptr noundef nonnull align 8 dereferenceable(64) %101, i32 noundef %305)
          to label %314 unwind label %336

314:                                              ; preds = %313
  %315 = trunc nuw nsw i64 %indvars.iv515 to i32
  %316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %315)
          to label %317 unwind label %338

317:                                              ; preds = %314
  %318 = load double, ptr %316, align 8, !tbaa !46
  %319 = fcmp une double %318, 0.000000e+00
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  br i1 %319, label %320, label %352

320:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #8
  %321 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv524) #8
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %22, ptr noundef nonnull align 8 dereferenceable(64) %321, i32 noundef %305)
          to label %322 unwind label %341

322:                                              ; preds = %320
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %22, i32 noundef %315)
          to label %324 unwind label %343

324:                                              ; preds = %322
  %325 = load double, ptr %323, align 8, !tbaa !46
  %326 = load double, ptr %307, align 8, !tbaa !46
  %327 = getelementptr inbounds double, ptr %295, i64 %indvars.iv515
  %328 = load double, ptr %327, align 8, !tbaa !46
  %329 = fneg double %326
  %330 = fmul double %328, %329
  %331 = call double @llvm.fmuladd.f64(double %325, double %298, double %330)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #8
  %332 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv524) #8
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %23, ptr noundef nonnull align 8 dereferenceable(64) %332, i32 noundef %305)
          to label %333 unwind label %345

333:                                              ; preds = %324
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %23, i32 noundef %315)
          to label %335 unwind label %347

335:                                              ; preds = %333
  store double %331, ptr %334, align 8, !tbaa !46
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  br label %352

336:                                              ; preds = %313
  %337 = landingpad { ptr, i32 }
          cleanup
  br label %340

338:                                              ; preds = %314
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %21) #8
  br label %340

340:                                              ; preds = %338, %336
  %.pn315 = phi { ptr, i32 } [ %339, %338 ], [ %337, %336 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  br label %494

341:                                              ; preds = %320
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %351

343:                                              ; preds = %322
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %350

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

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

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

350:                                              ; preds = %349, %343
  %.pn317.pn = phi { ptr, i32 } [ %.pn317, %349 ], [ %344, %343 ]
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %22) #8
  br label %351

351:                                              ; preds = %350, %341
  %.pn317.pn.pn = phi { ptr, i32 } [ %.pn317.pn, %350 ], [ %342, %341 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  br label %494

352:                                              ; preds = %317, %335
  %indvars.iv.next516 = add nuw nsw i64 %indvars.iv515, 1
  %exitcond520.not = icmp eq i64 %indvars.iv.next516, %wide.trip.count519
  br i1 %exitcond520.not, label %310, label %313, !llvm.loop !65

.lr.ph433:                                        ; preds = %.preheader357, %._crit_edge431
  %indvars.iv512 = phi i64 [ %indvars.iv.next513, %._crit_edge431 ], [ 0, %.preheader357 ]
  %353 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv512) #8
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %353, i64 noundef 0) #8
  %355 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv512) #8
  %356 = load double, ptr %355, align 8, !tbaa !46
  %357 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv512) #8
  %358 = load double, ptr %357, align 8, !tbaa !46
  %359 = fadd double %356, %358
  %360 = fdiv double 1.000000e+00, %359
  %361 = load i32, ptr %41, align 8, !tbaa !38
  %.not301427 = icmp slt i32 %361, 0
  br i1 %.not301427, label %._crit_edge431, label %.lr.ph430

._crit_edge431:                                   ; preds = %372, %.lr.ph433
  %indvars.iv.next513 = add nuw nsw i64 %indvars.iv512, 1
  %362 = load i32, ptr %60, align 4, !tbaa !40
  %363 = sext i32 %362 to i64
  %364 = icmp slt i64 %indvars.iv.next513, %363
  br i1 %364, label %.lr.ph433, label %.loopexit, !llvm.loop !66

.lr.ph430:                                        ; preds = %.lr.ph433, %372
  %indvars.iv509 = phi i64 [ %indvars.iv.next510, %372 ], [ 0, %.lr.ph433 ]
  %365 = load i8, ptr %100, align 8, !tbaa !51, !range !36, !noundef !37
  %366 = trunc nuw i8 %365 to i1
  %367 = trunc nuw nsw i64 %indvars.iv509 to i32
  %368 = and i64 %indvars.iv509, 4294967295
  %369 = getelementptr inbounds double, ptr %354, i64 %indvars.iv509
  %370 = select i1 %366, i64 %368, i64 0
  %371 = add nuw nsw i64 %indvars.iv509, 1
  %wide.trip.count507 = and i64 %371, 4294967295
  br label %375

372:                                              ; preds = %460
  %indvars.iv.next510 = add nuw nsw i64 %indvars.iv509, 1
  %373 = load i32, ptr %41, align 8, !tbaa !38
  %374 = sext i32 %373 to i64
  %.not301.not = icmp slt i64 %indvars.iv509, %374
  br i1 %.not301.not, label %.lr.ph430, label %._crit_edge431, !llvm.loop !67

375:                                              ; preds = %.lr.ph430, %460
  %indvars.iv503 = phi i64 [ %370, %.lr.ph430 ], [ %indvars.iv.next504, %460 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #8
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %24, ptr noundef nonnull align 8 dereferenceable(64) %101, i32 noundef %367)
          to label %376 unwind label %440

376:                                              ; preds = %375
  %377 = trunc nuw nsw i64 %indvars.iv503 to i32
  %378 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %24, i32 noundef %377)
          to label %379 unwind label %442

379:                                              ; preds = %376
  %380 = load double, ptr %378, align 8, !tbaa !46
  %381 = fcmp une double %380, 0.000000e+00
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %24) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #8
  br i1 %381, label %382, label %460

382:                                              ; preds = %379
  %383 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv512) #8
  %384 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %383, i64 noundef %indvars.iv509) #8
  %385 = load double, ptr %384, align 8, !tbaa !46
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv512) #8
  %387 = load double, ptr %386, align 8, !tbaa !46
  %388 = fdiv double %385, %387
  %389 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv512) #8
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %389, i64 noundef %indvars.iv503) #8
  %391 = load double, ptr %390, align 8, !tbaa !46
  %392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv512) #8
  %393 = load double, ptr %392, align 8, !tbaa !46
  %394 = fdiv double %391, %393
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #8
  %395 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv512) #8
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %25, ptr noundef nonnull align 8 dereferenceable(64) %395, i32 noundef %367)
          to label %396 unwind label %445

396:                                              ; preds = %382
  %397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %25, i32 noundef %377)
          to label %398 unwind label %447

398:                                              ; preds = %396
  %399 = load double, ptr %397, align 8, !tbaa !46
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv512) #8
  %401 = load double, ptr %400, align 8, !tbaa !46
  %402 = getelementptr inbounds double, ptr %354, i64 %indvars.iv503
  %403 = load double, ptr %402, align 8, !tbaa !46
  %404 = load double, ptr %369, align 8, !tbaa !46
  %405 = fmul double %394, %404
  %406 = call double @llvm.fmuladd.f64(double %388, double %403, double %405)
  %407 = fneg double %404
  %408 = call double @llvm.fmuladd.f64(double %407, double %403, double %406)
  %409 = fneg double %401
  %410 = call double @llvm.fmuladd.f64(double %409, double %408, double %399)
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  %411 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv512) #8
  %412 = load double, ptr %411, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #8
  %413 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %105, i64 noundef %indvars.iv512) #8
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %26, ptr noundef nonnull align 8 dereferenceable(64) %413, i32 noundef %367)
          to label %414 unwind label %450

414:                                              ; preds = %398
  %415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %26, i32 noundef %377)
          to label %416 unwind label %452

416:                                              ; preds = %414
  %417 = load double, ptr %415, align 8, !tbaa !46
  %418 = fmul double %412, %417
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #8
  %419 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv512) #8
  %420 = load double, ptr %419, align 8, !tbaa !46
  %421 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %indvars.iv512) #8
  %422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %421, i64 noundef %indvars.iv509) #8
  %423 = load double, ptr %422, align 8, !tbaa !46
  %424 = load double, ptr %369, align 8, !tbaa !46
  %425 = fsub double %423, %424
  %426 = fmul double %420, %425
  %427 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %indvars.iv512) #8
  %428 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %427, i64 noundef %indvars.iv503) #8
  %429 = load double, ptr %428, align 8, !tbaa !46
  %430 = load double, ptr %402, align 8, !tbaa !46
  %431 = fsub double %429, %430
  %432 = fmul double %426, %431
  %433 = fadd double %410, %418
  %434 = fadd double %433, %432
  %435 = fmul double %360, %434
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #8
  %436 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv512) #8
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %27, ptr noundef nonnull align 8 dereferenceable(64) %436, i32 noundef %367)
          to label %437 unwind label %455

437:                                              ; preds = %416
  %438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %27, i32 noundef %377)
          to label %439 unwind label %457

439:                                              ; preds = %437
  store double %435, ptr %438, align 8, !tbaa !46
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #8
  br label %460

440:                                              ; preds = %375
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %444

442:                                              ; preds = %376
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %24) #8
  br label %444

444:                                              ; preds = %442, %440
  %.pn = phi { ptr, i32 } [ %443, %442 ], [ %441, %440 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #8
  br label %494

445:                                              ; preds = %382
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %449

447:                                              ; preds = %396
  %448 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %25) #8
  br label %449

449:                                              ; preds = %447, %445
  %.pn304 = phi { ptr, i32 } [ %448, %447 ], [ %446, %445 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  br label %494

450:                                              ; preds = %398
  %451 = landingpad { ptr, i32 }
          cleanup
  br label %454

452:                                              ; preds = %414
  %453 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %26) #8
  br label %454

454:                                              ; preds = %452, %450
  %.pn306 = phi { ptr, i32 } [ %453, %452 ], [ %451, %450 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #8
  br label %494

455:                                              ; preds = %416
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %459

457:                                              ; preds = %437
  %458 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %27) #8
  br label %459

459:                                              ; preds = %457, %455
  %.pn308 = phi { ptr, i32 } [ %458, %457 ], [ %456, %455 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #8
  br label %494

460:                                              ; preds = %379, %439
  %indvars.iv.next504 = add nuw nsw i64 %indvars.iv503, 1
  %exitcond508.not = icmp eq i64 %indvars.iv.next504, %wide.trip.count507
  br i1 %exitcond508.not, label %372, label %375, !llvm.loop !68

.loopexit:                                        ; preds = %._crit_edge431, %._crit_edge439, %.preheader357, %.preheader356
  invoke void @_ZNK4sptk23GaussianMixtureModeling13FloorVarianceEPSt6vectorINS_15SymmetricMatrixESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef %4)
          to label %461 unwind label %247

461:                                              ; preds = %.loopexit
  store double %.0280.lcssa, ptr %5, align 8, !tbaa !46
  %462 = sitofp i32 %120 to double
  %463 = fdiv double %.0280.lcssa, %462
  %464 = fsub double %463, %.0270444
  %465 = load i32, ptr %106, align 4, !tbaa !69
  %466 = srem i32 %.0275443, %465
  %467 = icmp eq i32 %466, 0
  br i1 %467, label %468, label %491

468:                                              ; preds = %461
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str)
          to label %470 unwind label %483

470:                                              ; preds = %468
  %471 = call i32 @_ZSt4setwi(i32 noundef 3)
  %472 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8) %469, i32 %471)
          to label %473 unwind label %483

473:                                              ; preds = %470
  %474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %472, i32 noundef %.0275443)
          to label %475 unwind label %483

475:                                              ; preds = %473
  %476 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %474, ptr noundef nonnull @.str.1)
          to label %477 unwind label %483

477:                                              ; preds = %475
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.2)
          to label %479 unwind label %483

479:                                              ; preds = %477
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %478, double noundef %463)
          to label %481 unwind label %483

481:                                              ; preds = %479
  %482 = icmp eq i32 %.0275443, 1
  br i1 %482, label %.invoke, label %485

483:                                              ; preds = %.invoke, %487, %485, %479, %477, %475, %473, %470, %468
  %484 = landingpad { ptr, i32 }
          cleanup
  br label %494

485:                                              ; preds = %481
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.3)
          to label %487 unwind label %483

487:                                              ; preds = %485
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %486, double noundef %464)
          to label %.invoke unwind label %483

.invoke:                                          ; preds = %481, %487
  %489 = phi ptr [ %488, %487 ], [ @_ZSt4cerr, %481 ]
  %490 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %489, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %491 unwind label %483

491:                                              ; preds = %.invoke, %461
  %492 = load double, ptr %107, align 8, !tbaa !70
  %493 = fcmp olt double %464, %492
  br i1 %493, label %.thread352, label %108

.thread352:                                       ; preds = %108, %491, %96, %.thread345
  %cond = phi i1 [ false, %.thread345 ], [ true, %96 ], [ true, %491 ], [ true, %108 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  call void @_ZN4sptk23GaussianMixtureModeling6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %13) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %13) #8
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  br label %501

494:                                              ; preds = %213, %247, %483, %351, %340, %449, %459, %454, %444, %133, %135, %121
  %.pn333.pn = phi { ptr, i32 } [ %122, %121 ], [ %136, %135 ], [ %134, %133 ], [ %.pn328.pn.pn, %213 ], [ %484, %483 ], [ %248, %247 ], [ %.pn317.pn.pn, %351 ], [ %.pn315, %340 ], [ %.pn, %444 ], [ %.pn304, %449 ], [ %.pn308, %459 ], [ %.pn306, %454 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  br label %495

495:                                              ; preds = %494, %111
  %.pn333.pn.pn = phi { ptr, i32 } [ %.pn333.pn, %494 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  call void @_ZN4sptk23GaussianMixtureModeling6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %13) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %13) #8
  br label %496

496:                                              ; preds = %495, %94
  %.pn337 = phi { ptr, i32 } [ %95, %94 ], [ %.pn333.pn.pn, %495 ]
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  br label %497

497:                                              ; preds = %496, %87
  %.pn337.pn = phi { ptr, i32 } [ %.pn337, %496 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  br label %498

498:                                              ; preds = %497, %80
  %.pn340 = phi { ptr, i32 } [ %81, %80 ], [ %.pn337.pn, %497 ]
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  br label %499

499:                                              ; preds = %498, %72
  %.pn340.pn = phi { ptr, i32 } [ %.pn340, %498 ], [ %73, %72 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  br label %500

500:                                              ; preds = %499, %70
  %.pn340.pn.pn = phi { ptr, i32 } [ %.pn340.pn, %499 ], [ %71, %70 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  resume { ptr, i32 } %.pn340.pn.pn

501:                                              ; preds = %.thread352, %46, %50, %40, %6, %31
  %.7 = phi i1 [ false, %31 ], [ false, %6 ], [ %cond, %.thread352 ], [ false, %46 ], [ false, %50 ], [ false, %40 ]
  ret i1 %.7
}

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4sptk23GaussianMixtureModeling10InitializeERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_PS5_PS1_INS_15SymmetricMatrixESaISA_EE(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIdED2Ev(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 #3 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4sptk23GaussianMixtureModeling23CalculateLogProbabilityEiibbRKSt6vectorIdSaIdEES5_RKS1_IS3_SaIS3_EERKS1_INS_15SymmetricMatrixESaISA_EEPS3_PdPNS0_6BufferE(i32 noundef, i32 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2 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 #3 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 #3 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @exp(double noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4sptk15SymmetricMatrixixEi(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 #2 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNK4sptk23GaussianMixtureModeling11FloorWeightEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef) local_unnamed_addr #3 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 #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local i32 @_ZSt4setwi(i32 noundef) local_unnamed_addr #7

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #1

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !30, i64 169}
!6 = !{!"_ZTSN4sptk23GaussianMixtureModelingE", !7, i64 8, !7, i64 12, !7, i64 16, !10, i64 24, !11, i64 32, !12, i64 40, !10, i64 64, !10, i64 72, !17, i64 80, !7, i64 84, !10, i64 88, !18, i64 96, !22, i64 120, !26, i64 144, !30, i64 168, !30, i64 169, !31, i64 176, !18, i64 240}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"_ZTSN4sptk23GaussianMixtureModeling14CovarianceTypeE", !8, i64 0}
!12 = !{!"_ZTSSt6vectorIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!"_ZTSN4sptk23GaussianMixtureModeling18InitializationTypeE", !8, i64 0}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!22 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!26 = !{!"_ZTSSt6vectorIN4sptk15SymmetricMatrixESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!30 = !{!"bool", !8, i64 0}
!31 = !{!"_ZTSN4sptk15SymmetricMatrixE", !7, i64 8, !18, i64 16, !32, i64 40}
!32 = !{!"_ZTSSt6vectorIPdSaIS0_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIPdSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!36 = !{i8 0, i8 2}
!37 = !{}
!38 = !{!6, !7, i64 8}
!39 = !{!6, !17, i64 80}
!40 = !{!6, !7, i64 12}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}
!44 = !{!6, !7, i64 16}
!45 = distinct !{!45, !42}
!46 = !{!10, !10, i64 0}
!47 = !{!48, !30, i64 80}
!48 = !{!"_ZTSN4sptk23GaussianMixtureModeling6BufferE", !18, i64 8, !18, i64 32, !26, i64 56, !30, i64 80}
!49 = distinct !{!49, !42}
!50 = distinct !{!50, !42}
!51 = !{!6, !30, i64 168}
!52 = distinct !{!52, !42}
!53 = distinct !{!53, !42}
!54 = distinct !{!54, !42}
!55 = distinct !{!55, !42}
!56 = !{!6, !10, i64 88}
!57 = distinct !{!57, !42}
!58 = distinct !{!58, !42}
!59 = distinct !{!59, !42}
!60 = distinct !{!60, !42}
!61 = distinct !{!61, !42}
!62 = distinct !{!62, !42}
!63 = distinct !{!63, !42}
!64 = distinct !{!64, !42}
!65 = distinct !{!65, !42}
!66 = distinct !{!66, !42}
!67 = distinct !{!67, !42}
!68 = distinct !{!68, !42}
!69 = !{!6, !7, i64 84}
!70 = !{!6, !10, i64 24}


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