; 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.__gnu_cxx::__normal_iterator" = type { ptr }
%"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.std::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.20" = type { ptr }
%"class.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>
%"class.__gnu_cxx::__normal_iterator.22" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.21" = type { ptr }
%class.anon = type { double }
%"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.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::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.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 }
%"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 }

@_ZTVN4sptk23GaussianMixtureModelingE = external dso_local unnamed_addr constant { [4 x ptr] }, align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4sptk23GaussianMixtureModelingC2EiiidNS0_14CovarianceTypeESt6vectorIiSaIiEEddNS0_18InitializationTypeEidRKS2_IdSaIdEERKS2_IS7_SaIS7_EERKS2_INS_15SymmetricMatrixESaISE_EE(ptr noundef nonnull align 8 dereferenceable(264) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, double noundef %4, i32 noundef %5, ptr noundef %6, double noundef %7, double noundef %8, i32 noundef %9, i32 noundef %10, double noundef %11, ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %14) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %"class.std::vector", align 8
  %42 = alloca %"class.std::allocator", align 1
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %57 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %58 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %59 = alloca %"class.__gnu_cxx::__normal_iterator.22", align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.22", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %62 = alloca %class.anon, align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  store ptr %0, ptr %16, align 8, !tbaa !5
  store i32 %1, ptr %17, align 4, !tbaa !9
  store i32 %2, ptr %18, align 4, !tbaa !9
  store i32 %3, ptr %19, align 4, !tbaa !9
  store double %4, ptr %20, align 8, !tbaa !11
  store i32 %5, ptr %21, align 4, !tbaa !13
  store ptr %6, ptr %22, align 8, !tbaa !5
  store double %7, ptr %23, align 8, !tbaa !11
  store double %8, ptr %24, align 8, !tbaa !11
  store i32 %9, ptr %25, align 4, !tbaa !15
  store i32 %10, ptr %26, align 4, !tbaa !9
  store double %11, ptr %27, align 8, !tbaa !11
  store ptr %12, ptr %28, align 8, !tbaa !5
  store ptr %13, ptr %29, align 8, !tbaa !5
  store ptr %14, ptr %30, align 8, !tbaa !5
  %64 = load ptr, ptr %16, align 8
  store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTVN4sptk23GaussianMixtureModelingE, i32 0, i32 0, i32 2), ptr %64, align 8, !tbaa !17
  %65 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 1
  %66 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %66, ptr %65, align 8, !tbaa !19
  %67 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 2
  %68 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %68, ptr %67, align 4, !tbaa !43
  %69 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 3
  %70 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %70, ptr %69, align 8, !tbaa !44
  %71 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 4
  %72 = load double, ptr %20, align 8, !tbaa !11
  store double %72, ptr %71, align 8, !tbaa !45
  %73 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 5
  %74 = load i32, ptr %21, align 4, !tbaa !13
  store i32 %74, ptr %73, align 8, !tbaa !46
  %75 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  call void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 8 dereferenceable(24) %6)
  %76 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 7
  %77 = load double, ptr %23, align 8, !tbaa !11
  store double %77, ptr %76, align 8, !tbaa !47
  %78 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 8
  %79 = load double, ptr %24, align 8, !tbaa !11
  store double %79, ptr %78, align 8, !tbaa !48
  %80 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 9
  %81 = load i32, ptr %25, align 4, !tbaa !15
  store i32 %81, ptr %80, align 8, !tbaa !49
  %82 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 10
  %83 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %83, ptr %82, align 4, !tbaa !50
  %84 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 11
  %85 = load double, ptr %27, align 8, !tbaa !11
  store double %85, ptr %84, align 8, !tbaa !51
  %86 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 12
  %87 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIdSaIdEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %86, ptr noundef nonnull align 8 dereferenceable(24) %87)
          to label %88 unwind label %163

88:                                               ; preds = %15
  %89 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 13
  %90 = load ptr, ptr %29, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %89, ptr noundef nonnull align 8 dereferenceable(24) %90)
          to label %91 unwind label %167

91:                                               ; preds = %88
  %92 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 14
  %93 = load ptr, ptr %30, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 8 dereferenceable(24) %93)
          to label %94 unwind label %171

94:                                               ; preds = %91
  %95 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 15
  %96 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 5
  %97 = load i32, ptr %96, align 8, !tbaa !46
  %98 = icmp eq i32 0, %97
  br i1 %98, label %99, label %103

99:                                               ; preds = %94
  %100 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  %101 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %100) #5
  %102 = icmp eq i64 1, %101
  br label %103

103:                                              ; preds = %99, %94
  %104 = phi i1 [ false, %94 ], [ %102, %99 ]
  %105 = zext i1 %104 to i8
  store i8 %105, ptr %95, align 8, !tbaa !52
  %106 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 16
  store i8 1, ptr %106, align 1, !tbaa !53
  %107 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 17
  invoke void @_ZN4sptk15SymmetricMatrixC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %107, i32 noundef 0)
          to label %108 unwind label %175

108:                                              ; preds = %103
  %109 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 18
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #5
  %110 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 1
  %111 = load i32, ptr %110, align 8, !tbaa !19
  %112 = icmp slt i32 %111, 0
  br i1 %112, label %161, label %113

113:                                              ; preds = %108
  %114 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 2
  %115 = load i32, ptr %114, align 4, !tbaa !43
  %116 = icmp sle i32 %115, 0
  br i1 %116, label %161, label %117

117:                                              ; preds = %113
  %118 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 9
  %119 = load i32, ptr %118, align 8, !tbaa !49
  %120 = icmp eq i32 1, %119
  br i1 %120, label %121, label %126

121:                                              ; preds = %117
  %122 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 2
  %123 = load i32, ptr %122, align 4, !tbaa !43
  %124 = invoke noundef zeroext i1 @_ZN4sptk12IsPowerOfTwoEi(i32 noundef %123)
          to label %125 unwind label %179

125:                                              ; preds = %121
  br i1 %124, label %126, label %161

126:                                              ; preds = %125, %117
  %127 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 3
  %128 = load i32, ptr %127, align 8, !tbaa !44
  %129 = icmp sle i32 %128, 0
  br i1 %129, label %161, label %130

130:                                              ; preds = %126
  %131 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 4
  %132 = load double, ptr %131, align 8, !tbaa !45
  %133 = fcmp olt double %132, 0.000000e+00
  br i1 %133, label %161, label %134

134:                                              ; preds = %130
  %135 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 7
  %136 = load double, ptr %135, align 8, !tbaa !47
  %137 = fcmp olt double %136, 0.000000e+00
  br i1 %137, label %161, label %138

138:                                              ; preds = %134
  %139 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 2
  %140 = load i32, ptr %139, align 4, !tbaa !43
  %141 = sitofp i32 %140 to double
  %142 = fdiv double 1.000000e+00, %141
  %143 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 7
  %144 = load double, ptr %143, align 8, !tbaa !47
  %145 = fcmp olt double %142, %144
  br i1 %145, label %161, label %146

146:                                              ; preds = %138
  %147 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 8
  %148 = load double, ptr %147, align 8, !tbaa !48
  %149 = fcmp olt double %148, 0.000000e+00
  br i1 %149, label %161, label %150

150:                                              ; preds = %146
  %151 = load i32, ptr %26, align 4, !tbaa !9
  %152 = icmp sle i32 %151, 0
  br i1 %152, label %161, label %153

153:                                              ; preds = %150
  %154 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 11
  %155 = load double, ptr %154, align 8, !tbaa !51
  %156 = fcmp olt double %155, 0.000000e+00
  br i1 %156, label %161, label %157

157:                                              ; preds = %153
  %158 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 11
  %159 = load double, ptr %158, align 8, !tbaa !51
  %160 = fcmp olt double 1.000000e+00, %159
  br i1 %160, label %161, label %183

161:                                              ; preds = %157, %153, %150, %146, %138, %134, %130, %126, %125, %113, %108
  %162 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 16
  store i8 0, ptr %162, align 1, !tbaa !53
  br label %489

163:                                              ; preds = %15
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %31, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %32, align 4
  br label %495

167:                                              ; preds = %88
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %31, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %32, align 4
  br label %494

171:                                              ; preds = %91
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %31, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %32, align 4
  br label %493

175:                                              ; preds = %103
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %31, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %32, align 4
  br label %492

179:                                              ; preds = %121
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %31, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %32, align 4
  br label %491

183:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  %184 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 1
  %185 = load i32, ptr %184, align 8, !tbaa !19
  %186 = add nsw i32 %185, 1
  store i32 %186, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  store ptr %6, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %187 = load ptr, ptr %35, align 8, !tbaa !5
  %188 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %187) #5
  %189 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  store ptr %188, ptr %189, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %190 = load ptr, ptr %35, align 8, !tbaa !5
  %191 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %190) #5
  %192 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  store ptr %191, ptr %192, align 8
  br label %193

193:                                              ; preds = %210, %183
  %194 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #5
  br i1 %194, label %196, label %195

195:                                              ; preds = %193
  store i32 2, ptr %38, align 4
  br label %212

196:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  %197 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  store i32 %198, ptr %39, align 4, !tbaa !9
  %199 = load i32, ptr %39, align 4, !tbaa !9
  %200 = icmp sle i32 %199, 0
  br i1 %200, label %201, label %203

201:                                              ; preds = %196
  %202 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 16
  store i8 0, ptr %202, align 1, !tbaa !53
  store i32 1, ptr %38, align 4
  br label %207

203:                                              ; preds = %196
  %204 = load i32, ptr %39, align 4, !tbaa !9
  %205 = load i32, ptr %34, align 4, !tbaa !9
  %206 = add nsw i32 %205, %204
  store i32 %206, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %38, align 4
  br label %207

207:                                              ; preds = %203, %201
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  %208 = load i32, ptr %38, align 4
  switch i32 %208, label %212 [
    i32 0, label %209
  ]

209:                                              ; preds = %207
  br label %210

210:                                              ; preds = %209
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #5
  br label %193

212:                                              ; preds = %207, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  %213 = load i32, ptr %38, align 4
  switch i32 %213, label %221 [
    i32 2, label %214
  ]

214:                                              ; preds = %212
  %215 = load i32, ptr %34, align 4, !tbaa !9
  %216 = load i32, ptr %33, align 4, !tbaa !9
  %217 = icmp ne i32 %215, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %214
  %219 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 16
  store i8 0, ptr %219, align 1, !tbaa !53
  store i32 1, ptr %38, align 4
  br label %221

220:                                              ; preds = %214
  store i32 0, ptr %38, align 4
  br label %221

221:                                              ; preds = %220, %218, %212
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  %222 = load i32, ptr %38, align 4
  switch i32 %222, label %487 [
    i32 0, label %223
  ]

223:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  %224 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  %225 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %224) #5
  %226 = trunc i64 %225 to i32
  store i32 %226, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #5
  %227 = load i32, ptr %40, align 4, !tbaa !9
  %228 = add nsw i32 %227, 1
  %229 = sext i32 %228 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #5
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #5
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %229, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %230 unwind label %260

230:                                              ; preds = %223
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #5
  %231 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  %232 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %231) #5
  %233 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %43, i32 0, i32 0
  store ptr %232, ptr %233, align 8
  %234 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  %235 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #5
  %236 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %44, i32 0, i32 0
  store ptr %235, ptr %236, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %237 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #5
  %238 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %46, i32 0, i32 0
  store ptr %237, ptr %238, align 8
  %239 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %46, i64 noundef 1) #5
  %240 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %45, i32 0, i32 0
  store ptr %239, ptr %240, align 8
  %241 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %43, i32 0, i32 0
  %242 = load ptr, ptr %241, align 8
  %243 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %44, i32 0, i32 0
  %244 = load ptr, ptr %243, align 8
  %245 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %45, i32 0, i32 0
  %246 = load ptr, ptr %245, align 8
  %247 = invoke ptr @_ZSt11partial_sumIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEENS1_IPiS6_EEET0_T_SB_SA_(ptr %242, ptr %244, ptr %246)
          to label %248 unwind label %264

248:                                              ; preds = %230
  %249 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %47, i32 0, i32 0
  store ptr %247, ptr %249, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  %250 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 17
  %251 = load i32, ptr %33, align 4, !tbaa !9
  invoke void @_ZN4sptk15SymmetricMatrix6ResizeEi(ptr noundef nonnull align 8 dereferenceable(64) %250, i32 noundef %251)
          to label %252 unwind label %268

252:                                              ; preds = %248
  %253 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 17
  invoke void @_ZN4sptk15SymmetricMatrix4FillEd(ptr noundef nonnull align 8 dereferenceable(64) %253, double noundef 1.000000e+00)
          to label %254 unwind label %268

254:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %255

255:                                              ; preds = %426, %254
  %256 = load i32, ptr %48, align 4, !tbaa !9
  %257 = load i32, ptr %40, align 4, !tbaa !9
  %258 = icmp slt i32 %256, %257
  br i1 %258, label %272, label %259

259:                                              ; preds = %255
  store i32 4, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  br label %429

260:                                              ; preds = %223
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %31, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %32, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #5
  br label %448

264:                                              ; preds = %230
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %31, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  br label %447

268:                                              ; preds = %252, %248
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %31, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %32, align 4
  br label %447

272:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  %273 = load i32, ptr %48, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %274) #5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  store i32 %276, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  %277 = load i32, ptr %48, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %278) #5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  %282 = load i32, ptr %48, align 4, !tbaa !9
  %283 = sext i32 %282 to i64
  %284 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %281, i64 noundef %283) #5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = add nsw i32 %280, %285
  store i32 %286, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #5
  store i32 0, ptr %51, align 4, !tbaa !9
  br label %287

287:                                              ; preds = %422, %272
  %288 = load i32, ptr %51, align 4, !tbaa !9
  %289 = load i32, ptr %40, align 4, !tbaa !9
  %290 = icmp slt i32 %288, %289
  br i1 %290, label %292, label %291

291:                                              ; preds = %287
  store i32 7, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  br label %425

292:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #5
  %293 = load i32, ptr %51, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %294) #5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  store i32 %296, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #5
  %297 = load i32, ptr %51, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %298) #5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  %302 = load i32, ptr %51, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %301, i64 noundef %303) #5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = add nsw i32 %300, %305
  store i32 %306, ptr %53, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #5
  %307 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %307, ptr %54, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %418, %292
  %309 = load i32, ptr %54, align 4, !tbaa !9
  %310 = load i32, ptr %50, align 4, !tbaa !9
  %311 = icmp slt i32 %309, %310
  br i1 %311, label %313, label %312

312:                                              ; preds = %308
  store i32 10, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  br label %421

313:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #5
  %314 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %314, ptr %55, align 4, !tbaa !9
  br label %315

315:                                              ; preds = %413, %313
  %316 = load i32, ptr %55, align 4, !tbaa !9
  %317 = load i32, ptr %53, align 4, !tbaa !9
  %318 = icmp slt i32 %316, %317
  br i1 %318, label %320, label %319

319:                                              ; preds = %315
  store i32 13, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  br label %417

320:                                              ; preds = %315
  %321 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 5
  %322 = load i32, ptr %321, align 8, !tbaa !46
  %323 = icmp eq i32 0, %322
  br i1 %323, label %324, label %386

324:                                              ; preds = %320
  %325 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  %326 = load i32, ptr %48, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %325, i64 noundef %327) #5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 6
  %331 = load i32, ptr %51, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %332) #5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = icmp ne i32 %329, %334
  br i1 %335, label %336, label %352

336:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #5
  %337 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 17
  %338 = load i32, ptr %54, align 4, !tbaa !9
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %56, ptr noundef nonnull align 8 dereferenceable(64) %337, i32 noundef %338)
          to label %339 unwind label %343

339:                                              ; preds = %336
  %340 = load i32, ptr %55, align 4, !tbaa !9
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %56, i32 noundef %340)
          to label %342 unwind label %347

342:                                              ; preds = %339
  store double 0.000000e+00, ptr %341, align 8, !tbaa !11
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %56) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #5
  br label %385

343:                                              ; preds = %336
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %31, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %32, align 4
  br label %351

347:                                              ; preds = %339
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %31, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %32, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %56) #5
  br label %351

351:                                              ; preds = %347, %343
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #5
  br label %416

352:                                              ; preds = %324
  %353 = load i32, ptr %48, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  %355 = sext i32 %354 to i64
  %356 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %355) #5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = load i32, ptr %54, align 4, !tbaa !9
  %359 = sub nsw i32 %357, %358
  %360 = load i32, ptr %51, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  %362 = sext i32 %361 to i64
  %363 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %362) #5
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = load i32, ptr %55, align 4, !tbaa !9
  %366 = sub nsw i32 %364, %365
  %367 = icmp ne i32 %359, %366
  br i1 %367, label %368, label %384

368:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #5
  %369 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 17
  %370 = load i32, ptr %54, align 4, !tbaa !9
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %57, ptr noundef nonnull align 8 dereferenceable(64) %369, i32 noundef %370)
          to label %371 unwind label %375

371:                                              ; preds = %368
  %372 = load i32, ptr %55, align 4, !tbaa !9
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %57, i32 noundef %372)
          to label %374 unwind label %379

374:                                              ; preds = %371
  store double 0.000000e+00, ptr %373, align 8, !tbaa !11
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %57) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #5
  br label %384

375:                                              ; preds = %368
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %31, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %32, align 4
  br label %383

379:                                              ; preds = %371
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %31, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %32, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %57) #5
  br label %383

383:                                              ; preds = %379, %375
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #5
  br label %416

384:                                              ; preds = %374, %352
  br label %385

385:                                              ; preds = %384, %342
  br label %412

386:                                              ; preds = %320
  %387 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 5
  %388 = load i32, ptr %387, align 8, !tbaa !46
  %389 = icmp eq i32 1, %388
  br i1 %389, label %390, label %411

390:                                              ; preds = %386
  %391 = load i32, ptr %48, align 4, !tbaa !9
  %392 = load i32, ptr %51, align 4, !tbaa !9
  %393 = icmp ne i32 %391, %392
  br i1 %393, label %394, label %410

394:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #5
  %395 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 17
  %396 = load i32, ptr %54, align 4, !tbaa !9
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %58, ptr noundef nonnull align 8 dereferenceable(64) %395, i32 noundef %396)
          to label %397 unwind label %401

397:                                              ; preds = %394
  %398 = load i32, ptr %55, align 4, !tbaa !9
  %399 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %58, i32 noundef %398)
          to label %400 unwind label %405

400:                                              ; preds = %397
  store double 0.000000e+00, ptr %399, align 8, !tbaa !11
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %58) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #5
  br label %410

401:                                              ; preds = %394
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %31, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %32, align 4
  br label %409

405:                                              ; preds = %397
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %31, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %32, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %58) #5
  br label %409

409:                                              ; preds = %405, %401
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #5
  br label %416

410:                                              ; preds = %400, %390
  br label %411

411:                                              ; preds = %410, %386
  br label %412

412:                                              ; preds = %411, %385
  br label %413

413:                                              ; preds = %412
  %414 = load i32, ptr %55, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  store i32 %415, ptr %55, align 4, !tbaa !9
  br label %315, !llvm.loop !54

416:                                              ; preds = %409, %383, %351
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  br label %447

417:                                              ; preds = %319
  br label %418

418:                                              ; preds = %417
  %419 = load i32, ptr %54, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %54, align 4, !tbaa !9
  br label %308, !llvm.loop !56

421:                                              ; preds = %312
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  br label %422

422:                                              ; preds = %421
  %423 = load i32, ptr %51, align 4, !tbaa !9
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr %51, align 4, !tbaa !9
  br label %287, !llvm.loop !57

425:                                              ; preds = %291
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  br label %426

426:                                              ; preds = %425
  %427 = load i32, ptr %48, align 4, !tbaa !9
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr %48, align 4, !tbaa !9
  br label %255, !llvm.loop !58

429:                                              ; preds = %259
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  %430 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 9
  %431 = load i32, ptr %430, align 8, !tbaa !49
  %432 = icmp eq i32 2, %431
  br i1 %432, label %437, label %433

433:                                              ; preds = %429
  %434 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 11
  %435 = load double, ptr %434, align 8, !tbaa !51
  %436 = fcmp olt double 0.000000e+00, %435
  br i1 %436, label %437, label %454

437:                                              ; preds = %433, %429
  %438 = load i32, ptr %18, align 4, !tbaa !9
  %439 = load i32, ptr %33, align 4, !tbaa !9
  %440 = load ptr, ptr %28, align 8, !tbaa !5
  %441 = load ptr, ptr %29, align 8, !tbaa !5
  %442 = load ptr, ptr %30, align 8, !tbaa !5
  %443 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_18CheckGmmEiiRKSt6vectorIdSaIdEERKS0_IS2_SaIS2_EERKS0_IN4sptk15SymmetricMatrixESaISA_EE(i32 noundef %438, i32 noundef %439, ptr noundef nonnull align 8 dereferenceable(24) %440, ptr noundef nonnull align 8 dereferenceable(24) %441, ptr noundef nonnull align 8 dereferenceable(24) %442)
          to label %444 unwind label %449

444:                                              ; preds = %437
  br i1 %443, label %453, label %445

445:                                              ; preds = %444
  %446 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 16
  store i8 0, ptr %446, align 1, !tbaa !53
  store i32 1, ptr %38, align 4
  br label %487

447:                                              ; preds = %416, %268, %264
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #5
  br label %448

448:                                              ; preds = %447, %260
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  br label %490

449:                                              ; preds = %463, %458, %437
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %31, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %32, align 4
  br label %490

453:                                              ; preds = %444
  br label %454

454:                                              ; preds = %453, %433
  %455 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 11
  %456 = load double, ptr %455, align 8, !tbaa !51
  %457 = fcmp olt double 0.000000e+00, %456
  br i1 %457, label %458, label %486

458:                                              ; preds = %454
  %459 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 18
  %460 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 2
  %461 = load i32, ptr %460, align 4, !tbaa !43
  %462 = sext i32 %461 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %459, i64 noundef %462)
          to label %463 unwind label %449

463:                                              ; preds = %458
  %464 = load ptr, ptr %28, align 8, !tbaa !5
  %465 = call ptr @_ZNKSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %464) #5
  %466 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.22", ptr %59, i32 0, i32 0
  store ptr %465, ptr %466, align 8
  %467 = load ptr, ptr %28, align 8, !tbaa !5
  %468 = call ptr @_ZNKSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %467) #5
  %469 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.22", ptr %60, i32 0, i32 0
  store ptr %468, ptr %469, align 8
  %470 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %64, i32 0, i32 18
  %471 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %470) #5
  %472 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %61, i32 0, i32 0
  store ptr %471, ptr %472, align 8
  %473 = getelementptr inbounds %class.anon, ptr %62, i32 0, i32 0
  %474 = load double, ptr %27, align 8, !tbaa !11
  store double %474, ptr %473, align 8, !tbaa !59
  %475 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.22", ptr %59, i32 0, i32 0
  %476 = load ptr, ptr %475, align 8
  %477 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.22", ptr %60, i32 0, i32 0
  %478 = load ptr, ptr %477, align 8
  %479 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %61, i32 0, i32 0
  %480 = load ptr, ptr %479, align 8
  %481 = getelementptr inbounds %class.anon, ptr %62, i32 0, i32 0
  %482 = load double, ptr %481, align 8
  %483 = invoke ptr @"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEZN4sptk23GaussianMixtureModelingC1EiiidNSB_14CovarianceTypeES4_IiSaIiEEddNSB_18InitializationTypeEidRKS6_RKS4_IS6_SaIS6_EERKS4_INSA_15SymmetricMatrixESaISM_EEE3$_0ET0_T_ST_SS_T1_"(ptr %476, ptr %478, ptr %480, double %482)
          to label %484 unwind label %449

484:                                              ; preds = %463
  %485 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %63, i32 0, i32 0
  store ptr %483, ptr %485, align 8
  br label %486

486:                                              ; preds = %484, %454
  store i32 0, ptr %38, align 4
  br label %487

487:                                              ; preds = %486, %445, %221
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  %488 = load i32, ptr %38, align 4
  switch i32 %488, label %501 [
    i32 0, label %489
    i32 1, label %489
  ]

489:                                              ; preds = %487, %487, %161
  ret void

490:                                              ; preds = %449, %448
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  br label %491

491:                                              ; preds = %490, %179
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #5
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %107) #5
  br label %492

492:                                              ; preds = %491, %175
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #5
  br label %493

493:                                              ; preds = %492, %171
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #5
  br label %494

494:                                              ; preds = %493, %167
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #5
  br label %495

495:                                              ; preds = %494, %163
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #5
  br label %496

496:                                              ; preds = %495
  %497 = load ptr, ptr %31, align 8
  %498 = load i32, ptr %32, align 4
  %499 = insertvalue { ptr, i32 } poison, ptr %497, 0
  %500 = insertvalue { ptr, i32 } %499, i32 %498, 1
  resume { ptr, i32 } %500

501:                                              ; preds = %487
  unreachable
}

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare noundef zeroext i1 @_ZN4sptk12IsPowerOfTwoEi(i32 noundef) #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZSt11partial_sumIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEENS1_IPiS6_EEET0_T_SB_SA_(ptr, ptr, ptr) #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden ptr @"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEZN4sptk23GaussianMixtureModelingC1EiiidNSB_14CovarianceTypeES4_IiSaIiEEddNSB_18InitializationTypeEidRKS6_RKS4_IS6_SaIS6_EERKS4_INSA_15SymmetricMatrixESaISM_EEE3$_0ET0_T_ST_SS_T1_"(ptr, ptr, ptr, double) #0

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

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

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

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

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

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

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

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

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

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


; 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.__gnu_cxx::__normal_iterator" = type { ptr }
%"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.std::allocator" = type { i8 }
%"class.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>

@_ZTVN4sptk23GaussianMixtureModelingE = external dso_local unnamed_addr constant { [4 x ptr] }, align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4sptk23GaussianMixtureModelingC2EiiidNS0_14CovarianceTypeESt6vectorIiSaIiEEddNS0_18InitializationTypeEidRKS2_IdSaIdEERKS2_IS7_SaIS7_EERKS2_INS_15SymmetricMatrixESaISE_EE(ptr noundef nonnull align 8 dereferenceable(264) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, double noundef %4, i32 noundef %5, ptr noundef nonnull %6, double noundef %7, double noundef %8, i32 noundef %9, i32 noundef %10, double noundef %11, ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %14) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.std::vector", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", 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
  store ptr getelementptr inbounds inrange(-16, 16) (i8, ptr @_ZTVN4sptk23GaussianMixtureModelingE, i64 16), ptr %0, align 8, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %0, i64 8
  store i32 %1, ptr %24, align 8, !tbaa !8
  %25 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 %2, ptr %25, align 4, !tbaa !38
  %26 = getelementptr inbounds i8, ptr %0, i64 16
  store i32 %3, ptr %26, align 8, !tbaa !39
  %27 = getelementptr inbounds i8, ptr %0, i64 24
  store double %4, ptr %27, align 8, !tbaa !40
  %28 = getelementptr inbounds i8, ptr %0, i64 32
  store i32 %5, ptr %28, align 8, !tbaa !41
  %29 = getelementptr inbounds i8, ptr %0, i64 40
  tail call void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %6)
  %30 = getelementptr inbounds i8, ptr %0, i64 64
  store double %7, ptr %30, align 8, !tbaa !42
  %31 = getelementptr inbounds i8, ptr %0, i64 72
  store double %8, ptr %31, align 8, !tbaa !43
  %32 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 %9, ptr %32, align 8, !tbaa !44
  %33 = getelementptr inbounds i8, ptr %0, i64 84
  store i32 %10, ptr %33, align 4, !tbaa !45
  %34 = getelementptr inbounds i8, ptr %0, i64 88
  store double %11, ptr %34, align 8, !tbaa !46
  %35 = getelementptr inbounds i8, ptr %0, i64 96
  invoke void @_ZNSt6vectorIdSaIdEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %36 unwind label %88

36:                                               ; preds = %15
  %37 = getelementptr inbounds i8, ptr %0, i64 120
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %38 unwind label %90

38:                                               ; preds = %36
  %39 = getelementptr inbounds i8, ptr %0, i64 144
  invoke void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %40 unwind label %92

40:                                               ; preds = %38
  %41 = getelementptr inbounds i8, ptr %0, i64 168
  %42 = load i32, ptr %28, align 8, !tbaa !41
  %43 = icmp eq i32 %42, 0
  br i1 %43, label %44, label %47

44:                                               ; preds = %40
  %45 = tail call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  %46 = icmp eq i64 %45, 1
  br label %47

47:                                               ; preds = %44, %40
  %48 = phi i1 [ false, %40 ], [ %46, %44 ]
  %49 = zext i1 %48 to i8
  store i8 %49, ptr %41, align 8, !tbaa !47
  %50 = getelementptr inbounds i8, ptr %0, i64 169
  store i8 1, ptr %50, align 1, !tbaa !48
  %51 = getelementptr inbounds i8, ptr %0, i64 176
  invoke void @_ZN4sptk15SymmetricMatrixC1Ei(ptr noundef nonnull align 8 dereferenceable(64) %51, i32 noundef 0)
          to label %52 unwind label %94

52:                                               ; preds = %47
  %53 = getelementptr inbounds i8, ptr %0, i64 240
  tail call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #5
  %54 = load i32, ptr %24, align 8, !tbaa !8
  %55 = icmp slt i32 %54, 0
  br i1 %55, label %87, label %56

56:                                               ; preds = %52
  %57 = load i32, ptr %25, align 4, !tbaa !38
  %58 = icmp slt i32 %57, 1
  br i1 %58, label %87, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %32, align 8, !tbaa !44
  %61 = icmp eq i32 %60, 1
  br i1 %61, label %62, label %67

62:                                               ; preds = %59
  %63 = invoke noundef zeroext i1 @_ZN4sptk12IsPowerOfTwoEi(i32 noundef %57)
          to label %64 unwind label %96

64:                                               ; preds = %62
  %65 = load i32, ptr %26, align 8
  %66 = icmp sgt i32 %65, 0
  %or.cond128.not = select i1 %63, i1 %66, i1 false
  br i1 %or.cond128.not, label %68, label %87

67:                                               ; preds = %59
  %.old = load i32, ptr %26, align 8, !tbaa !39
  %.old127 = icmp slt i32 %.old, 1
  br i1 %.old127, label %87, label %68

68:                                               ; preds = %64, %67
  %69 = load double, ptr %27, align 8, !tbaa !40
  %70 = fcmp olt double %69, 0.000000e+00
  br i1 %70, label %87, label %71

71:                                               ; preds = %68
  %72 = load double, ptr %30, align 8, !tbaa !42
  %73 = fcmp olt double %72, 0.000000e+00
  br i1 %73, label %87, label %74

74:                                               ; preds = %71
  %75 = load i32, ptr %25, align 4, !tbaa !38
  %76 = sitofp i32 %75 to double
  %77 = fdiv double 1.000000e+00, %76
  %78 = fcmp olt double %77, %72
  br i1 %78, label %87, label %79

79:                                               ; preds = %74
  %80 = load double, ptr %31, align 8, !tbaa !43
  %81 = fcmp olt double %80, 0.000000e+00
  %82 = icmp slt i32 %10, 1
  %or.cond = or i1 %82, %81
  br i1 %or.cond, label %87, label %83

83:                                               ; preds = %79
  %84 = load double, ptr %34, align 8, !tbaa !46
  %85 = fcmp olt double %84, 0.000000e+00
  %86 = fcmp ogt double %84, 1.000000e+00
  %or.cond130 = or i1 %85, %86
  br i1 %or.cond130, label %87, label %98

87:                                               ; preds = %83, %79, %74, %71, %68, %67, %64, %56, %52
  store i8 0, ptr %50, align 1, !tbaa !48
  br label %.critedge

88:                                               ; preds = %15
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %215

90:                                               ; preds = %36
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %214

92:                                               ; preds = %38
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %213

94:                                               ; preds = %47
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %212

96:                                               ; preds = %62
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %211

98:                                               ; preds = %83
  %99 = load i32, ptr %24, align 8, !tbaa !8
  %100 = add nsw i32 %99, 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  %101 = tail call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  store ptr %101, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  %102 = tail call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  store ptr %102, ptr %17, align 8
  %103 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #5
  br i1 %103, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %98, %107
  %.093141 = phi i32 [ %108, %107 ], [ 0, %98 ]
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #5
  %105 = load i32, ptr %104, align 4, !tbaa !49
  %106 = icmp sgt i32 %105, 0
  br i1 %106, label %107, label %.thread136

.thread136:                                       ; preds = %.lr.ph
  store i8 0, ptr %50, align 1, !tbaa !48
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  br label %.critedge

107:                                              ; preds = %.lr.ph
  %108 = add nuw nsw i32 %105, %.093141
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #5
  %110 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #5
  br i1 %110, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %107, %98
  %.093.lcssa = phi i32 [ 0, %98 ], [ %108, %107 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  %.not = icmp eq i32 %.093.lcssa, %100
  br i1 %.not, label %112, label %111

111:                                              ; preds = %._crit_edge
  store i8 0, ptr %50, align 1, !tbaa !48
  br label %.critedge

112:                                              ; preds = %._crit_edge
  %113 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  %114 = trunc i64 %113 to i32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #5
  %115 = shl i64 %113, 32
  %sext = add i64 %115, 4294967296
  %116 = ashr exact i64 %sext, 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #5
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %116, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %117 unwind label %185

117:                                              ; preds = %112
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #5
  %118 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  %119 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  %120 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  store ptr %120, ptr %20, align 8
  %121 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %20, i64 noundef 1) #5
  %122 = call ptr @_ZSt11partial_sumIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEENS1_IPiS6_EEET0_T_SB_SA_(ptr %118, ptr %119, ptr %121)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  invoke void @_ZN4sptk15SymmetricMatrix6ResizeEi(ptr noundef nonnull align 8 dereferenceable(64) %51, i32 noundef %100)
          to label %123 unwind label %187

123:                                              ; preds = %117
  invoke void @_ZN4sptk15SymmetricMatrix4FillEd(ptr noundef nonnull align 8 dereferenceable(64) %51, double noundef 1.000000e+00)
          to label %.preheader139 unwind label %187

.preheader139:                                    ; preds = %123
  %124 = icmp sgt i32 %114, 0
  br i1 %124, label %.lr.ph164.us.preheader, label %._crit_edge178

.lr.ph164.us.preheader:                           ; preds = %.preheader139
  %wide.trip.count199 = and i64 %113, 2147483647
  br label %.lr.ph164.us

.lr.ph164.us:                                     ; preds = %.lr.ph164.us.preheader, %._crit_edge165.us
  %indvars.iv196 = phi i64 [ 0, %.lr.ph164.us.preheader ], [ %indvars.iv.next197, %._crit_edge165.us ]
  %125 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv196) #5
  %126 = load i32, ptr %125, align 4, !tbaa !49
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv196) #5
  %128 = load i32, ptr %127, align 4, !tbaa !49
  %129 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv196) #5
  %130 = load i32, ptr %129, align 4, !tbaa !49
  %131 = add nsw i32 %130, %128
  %132 = icmp slt i32 %126, %131
  %indvars.iv.next197 = add nuw nsw i64 %indvars.iv196, 1
  %.fr.us = freeze i1 %132
  br i1 %.fr.us, label %.preheader.lr.ph.us.us, label %.lr.ph164.split.us181

.lr.ph164.split.us181:                            ; preds = %.lr.ph164.us, %.lr.ph164.split.us181
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph164.split.us181 ], [ 0, %.lr.ph164.us ]
  %133 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv) #5
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv) #5
  %135 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv) #5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count199
  br i1 %exitcond.not, label %._crit_edge165.us, label %.lr.ph164.split.us181, !llvm.loop !50

._crit_edge165.us:                                ; preds = %.lr.ph164.split.us181, %._crit_edge146.us.us
  %exitcond200.not = icmp eq i64 %indvars.iv.next197, %wide.trip.count199
  br i1 %exitcond200.not, label %._crit_edge178, label %.lr.ph164.us, !llvm.loop !52

.preheader.lr.ph.us.us:                           ; preds = %.lr.ph164.us, %._crit_edge146.us.us
  %indvars.iv191 = phi i64 [ %indvars.iv.next192, %._crit_edge146.us.us ], [ 0, %.lr.ph164.us ]
  %136 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv191) #5
  %137 = load i32, ptr %136, align 4, !tbaa !49
  %138 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv191) #5
  %139 = load i32, ptr %138, align 4, !tbaa !49
  %140 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv191) #5
  %141 = load i32, ptr %140, align 4, !tbaa !49
  %142 = add nsw i32 %141, %139
  %143 = icmp slt i32 %137, %142
  %.not109.us.us = icmp eq i64 %indvars.iv196, %indvars.iv191
  %indvars.iv.next192 = add nuw nsw i64 %indvars.iv191, 1
  br i1 %143, label %.preheader.us.us.us, label %._crit_edge146.us.us

._crit_edge146.us.us:                             ; preds = %._crit_edge144.us.us.us, %.preheader.lr.ph.us.us
  %exitcond195.not = icmp eq i64 %indvars.iv.next192, %wide.trip.count199
  br i1 %exitcond195.not, label %._crit_edge165.us, label %.preheader.lr.ph.us.us, !llvm.loop !50

.preheader.us.us.us:                              ; preds = %.preheader.lr.ph.us.us, %._crit_edge144.us.us.us
  %.0101145.us.us.us = phi i32 [ %173, %._crit_edge144.us.us.us ], [ %126, %.preheader.lr.ph.us.us ]
  br label %144

144:                                              ; preds = %171, %.preheader.us.us.us
  %.0100142.us.us.us = phi i32 [ %137, %.preheader.us.us.us ], [ %172, %171 ]
  %145 = load i32, ptr %28, align 8, !tbaa !41
  switch i32 %145, label %171 [
    i32 0, label %151
    i32 1, label %146
  ]

146:                                              ; preds = %144
  br i1 %.not109.us.us, label %171, label %147

147:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #5
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %23, ptr noundef nonnull align 8 dereferenceable(64) %51, i32 noundef %.0101145.us.us.us)
          to label %148 unwind label %.split.us.split.us.split.us

148:                                              ; preds = %147
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %23, i32 noundef %.0100142.us.us.us)
          to label %150 unwind label %.split148.us.split.us.split.us

150:                                              ; preds = %148
  store double 0.000000e+00, ptr %149, align 8, !tbaa !53
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %23) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #5
  br label %171

151:                                              ; preds = %144
  %152 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv196) #5
  %153 = load i32, ptr %152, align 4, !tbaa !49
  %154 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv191) #5
  %155 = load i32, ptr %154, align 4, !tbaa !49
  %.not111.us.us.us = icmp eq i32 %153, %155
  br i1 %.not111.us.us.us, label %160, label %156

156:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #5
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %21, ptr noundef nonnull align 8 dereferenceable(64) %51, i32 noundef %.0101145.us.us.us)
          to label %157 unwind label %.split151.us.split.us.split.us

157:                                              ; preds = %156
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %.0100142.us.us.us)
          to label %159 unwind label %.split154.us.split.us.split.us

159:                                              ; preds = %157
  store double 0.000000e+00, ptr %158, align 8, !tbaa !53
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %21) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #5
  br label %171

160:                                              ; preds = %151
  %161 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv.next197) #5
  %162 = load i32, ptr %161, align 4, !tbaa !49
  %163 = sub nsw i32 %162, %.0101145.us.us.us
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv.next192) #5
  %165 = load i32, ptr %164, align 4, !tbaa !49
  %166 = sub nsw i32 %165, %.0100142.us.us.us
  %.not112.us.us.us = icmp eq i32 %163, %166
  br i1 %.not112.us.us.us, label %171, label %167

167:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #5
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %22, ptr noundef nonnull align 8 dereferenceable(64) %51, i32 noundef %.0101145.us.us.us)
          to label %168 unwind label %.split157.us.split.us.split.us

168:                                              ; preds = %167
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %22, i32 noundef %.0100142.us.us.us)
          to label %170 unwind label %.split160.us.split.us.split.us

170:                                              ; preds = %168
  store double 0.000000e+00, ptr %169, align 8, !tbaa !53
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %22) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #5
  br label %171

171:                                              ; preds = %170, %160, %159, %150, %146, %144
  %172 = add i32 %.0100142.us.us.us, 1
  %exitcond190.not = icmp eq i32 %172, %142
  br i1 %exitcond190.not, label %._crit_edge144.us.us.us, label %144, !llvm.loop !54

._crit_edge144.us.us.us:                          ; preds = %171
  %173 = add nsw i32 %.0101145.us.us.us, 1
  %174 = icmp slt i32 %173, %131
  br i1 %174, label %.preheader.us.us.us, label %._crit_edge146.us.us, !llvm.loop !55

.split.us.split.us.split.us:                      ; preds = %147
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %191

.split148.us.split.us.split.us:                   ; preds = %148
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %23) #5
  br label %191

.split151.us.split.us.split.us:                   ; preds = %156
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %189

.split154.us.split.us.split.us:                   ; preds = %157
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %21) #5
  br label %189

.split157.us.split.us.split.us:                   ; preds = %167
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %190

.split160.us.split.us.split.us:                   ; preds = %168
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %22) #5
  br label %190

._crit_edge178:                                   ; preds = %._crit_edge165.us, %.preheader139
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #5
  %181 = load i32, ptr %32, align 8, !tbaa !44
  %182 = icmp eq i32 %181, 2
  %183 = load double, ptr %34, align 8
  %184 = fcmp ogt double %183, 0.000000e+00
  %or.cond133 = select i1 %182, i1 true, i1 %184
  br i1 %or.cond133, label %192, label %200

185:                                              ; preds = %112
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #5
  br label %197

187:                                              ; preds = %123, %117
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %196

189:                                              ; preds = %.split154.us.split.us.split.us, %.split151.us.split.us.split.us
  %.pn115 = phi { ptr, i32 } [ %178, %.split154.us.split.us.split.us ], [ %177, %.split151.us.split.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #5
  br label %196

190:                                              ; preds = %.split160.us.split.us.split.us, %.split157.us.split.us.split.us
  %.pn113 = phi { ptr, i32 } [ %180, %.split160.us.split.us.split.us ], [ %179, %.split157.us.split.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #5
  br label %196

191:                                              ; preds = %.split148.us.split.us.split.us, %.split.us.split.us.split.us
  %.pn = phi { ptr, i32 } [ %176, %.split148.us.split.us.split.us ], [ %175, %.split.us.split.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #5
  br label %196

192:                                              ; preds = %._crit_edge178
  %193 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_18CheckGmmEiiRKSt6vectorIdSaIdEERKS0_IS2_SaIS2_EERKS0_IN4sptk15SymmetricMatrixESaISA_EE(i32 noundef %2, i32 noundef %100, ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %194 unwind label %198

194:                                              ; preds = %192
  br i1 %193, label %thread-pre-split, label %195

195:                                              ; preds = %194
  store i8 0, ptr %50, align 1, !tbaa !48
  br label %.critedge

196:                                              ; preds = %189, %190, %191, %187
  %.pn115.pn.pn = phi { ptr, i32 } [ %188, %187 ], [ %.pn115, %189 ], [ %.pn113, %190 ], [ %.pn, %191 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  br label %197

197:                                              ; preds = %196, %185
  %.pn115.pn.pn.pn = phi { ptr, i32 } [ %.pn115.pn.pn, %196 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #5
  br label %211

198:                                              ; preds = %206, %203, %192
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %211

thread-pre-split:                                 ; preds = %194
  %.pr = load double, ptr %34, align 8, !tbaa !46
  br label %200

200:                                              ; preds = %thread-pre-split, %._crit_edge178
  %201 = phi double [ %.pr, %thread-pre-split ], [ %183, %._crit_edge178 ]
  %202 = fcmp ogt double %201, 0.000000e+00
  br i1 %202, label %203, label %.critedge

203:                                              ; preds = %200
  %204 = load i32, ptr %25, align 4, !tbaa !38
  %205 = sext i32 %204 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %205)
          to label %206 unwind label %198

206:                                              ; preds = %203
  %207 = call ptr @_ZNKSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  %208 = call ptr @_ZNKSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  %209 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #5
  %210 = invoke ptr @"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEZN4sptk23GaussianMixtureModelingC1EiiidNSB_14CovarianceTypeES4_IiSaIiEEddNSB_18InitializationTypeEidRKS6_RKS4_IS6_SaIS6_EERKS4_INSA_15SymmetricMatrixESaISM_EEE3$_0ET0_T_ST_SS_T1_"(ptr %207, ptr %208, ptr %209, double %11)
          to label %.critedge unwind label %198

.critedge:                                        ; preds = %.thread136, %195, %206, %200, %111, %87
  ret void

211:                                              ; preds = %197, %198, %96
  %.pn115.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %97, %96 ], [ %.pn115.pn.pn.pn, %197 ], [ %199, %198 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #5
  call void @_ZN4sptk15SymmetricMatrixD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %51) #5
  br label %212

212:                                              ; preds = %211, %94
  %.pn115.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn115.pn.pn.pn.pn.pn, %211 ], [ %95, %94 ]
  call void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #5
  br label %213

213:                                              ; preds = %212, %92
  %.pn115.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn115.pn.pn.pn.pn.pn.pn, %212 ], [ %93, %92 ]
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #5
  br label %214

214:                                              ; preds = %213, %90
  %.pn115.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn115.pn.pn.pn.pn.pn.pn.pn, %213 ], [ %91, %90 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #5
  br label %215

215:                                              ; preds = %214, %88
  %.pn115.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn115.pn.pn.pn.pn.pn.pn.pn.pn, %214 ], [ %89, %88 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  resume { ptr, i32 } %.pn115.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare noundef zeroext i1 @_ZN4sptk12IsPowerOfTwoEi(i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZSt11partial_sumIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEENS1_IPiS6_EEET0_T_SB_SA_(ptr, ptr, ptr) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden ptr @"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEZN4sptk23GaussianMixtureModelingC1EiiidNSB_14CovarianceTypeES4_IiSaIiEEddNSB_18InitializationTypeEidRKS6_RKS4_IS6_SaIS6_EERKS4_INSA_15SymmetricMatrixESaISM_EEE3$_0ET0_T_ST_SS_T1_"(ptr, ptr, ptr, double) local_unnamed_addr #0

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

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

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

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

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

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

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

attributes #0 = { 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 #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !10, i64 8}
!9 = !{!"_ZTSN4sptk23GaussianMixtureModelingE", !10, i64 8, !10, i64 12, !10, i64 16, !12, i64 24, !13, i64 32, !14, i64 40, !12, i64 64, !12, i64 72, !19, i64 80, !10, i64 84, !12, i64 88, !20, i64 96, !24, i64 120, !28, i64 144, !32, i64 168, !32, i64 169, !33, i64 176, !20, i64 240}
!10 = !{!"int", !11, i64 0}
!11 = !{!"omnipotent char", !7, i64 0}
!12 = !{!"double", !11, i64 0}
!13 = !{!"_ZTSN4sptk23GaussianMixtureModeling14CovarianceTypeE", !11, 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", !18, i64 0, !18, i64 8, !18, i64 16}
!18 = !{!"any pointer", !11, i64 0}
!19 = !{!"_ZTSN4sptk23GaussianMixtureModeling18InitializationTypeE", !11, i64 0}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!24 = !{!"_ZTSSt6vectorIS_IdSaIdEESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!28 = !{!"_ZTSSt6vectorIN4sptk15SymmetricMatrixESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN4sptk15SymmetricMatrixESaIS1_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!32 = !{!"bool", !11, i64 0}
!33 = !{!"_ZTSN4sptk15SymmetricMatrixE", !10, i64 8, !20, i64 16, !34, i64 40}
!34 = !{!"_ZTSSt6vectorIPdSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIPdSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!38 = !{!9, !10, i64 12}
!39 = !{!9, !10, i64 16}
!40 = !{!9, !12, i64 24}
!41 = !{!9, !13, i64 32}
!42 = !{!9, !12, i64 64}
!43 = !{!9, !12, i64 72}
!44 = !{!9, !19, i64 80}
!45 = !{!9, !10, i64 84}
!46 = !{!9, !12, i64 88}
!47 = !{!9, !32, i64 168}
!48 = !{!9, !32, i64 169}
!49 = !{!10, !10, i64 0}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.mustprogress"}
!52 = distinct !{!52, !51}
!53 = !{!12, !12, i64 0}
!54 = distinct !{!54, !51}
!55 = distinct !{!55, !51}


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