; 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.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>
%"class.sptk::StatisticsAccumulation" = type <{ ptr, i32, i32, i8, i8, i8, [5 x i8] }>
%"class.sptk::StatisticsAccumulation::Buffer" = type { ptr, i32, %"class.std::vector.0", %"class.sptk::SymmetricMatrix", %"class.std::vector.0" }
%"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 }
%"class.__gnu_cxx::__normal_iterator.24" = 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::LindeBuzoGrayAlgorithm" = type <{ ptr, i32, i32, i32, i32, i32, [4 x i8], double, double, i32, [4 x i8], %"class.sptk::DistanceCalculation", %"class.sptk::StatisticsAccumulation", %"class.sptk::VectorQuantization", i8, [7 x i8] }>
%"class.sptk::DistanceCalculation" = type <{ ptr, i32, i32, i8, [7 x i8] }>
%"class.sptk::VectorQuantization" = type <{ ptr, i32, [4 x i8], %"class.sptk::DistanceCalculation", i8, [7 x i8] }>
%"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 }

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK4sptk23GaussianMixtureModeling10InitializeERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_PS5_PS1_INS_15SymmetricMatrixESaISA_EE(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i1, align 1
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.sptk::StatisticsAccumulation", align 8
  %13 = alloca %"class.sptk::StatisticsAccumulation::Buffer", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.24", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.24", align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::vector.0", align 8
  %22 = alloca %"class.std::vector", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca %"class.sptk::LindeBuzoGrayAlgorithm", align 8
  %31 = alloca i32, align 4
  %32 = alloca %"class.std::vector", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca ptr, align 8
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %47 = alloca double, align 8
  %48 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %53 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  %54 = load ptr, ptr %7, align 8
  %55 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %55) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #6
  %56 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 1
  %57 = load i32, ptr %56, align 8, !tbaa !9
  call void @_ZN4sptk22StatisticsAccumulationC1Eiibb(ptr noundef nonnull align 8 dereferenceable(19) %12, i32 noundef %57, i32 noundef 1, i1 noundef zeroext false, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 128, ptr %13) #6
  invoke void @_ZN4sptk22StatisticsAccumulation6BufferC2Ev(ptr noundef nonnull align 8 dereferenceable(128) %13)
          to label %58 unwind label %69

58:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %59, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %60 = load ptr, ptr %16, align 8, !tbaa !5
  %61 = call ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %60) #6
  %62 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.24", ptr %17, i32 0, i32 0
  store ptr %61, ptr %62, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %63 = load ptr, ptr %16, align 8, !tbaa !5
  %64 = call ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %63) #6
  %65 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.24", ptr %18, i32 0, i32 0
  store ptr %64, ptr %65, align 8
  br label %66

66:                                               ; preds = %87, %58
  %67 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #6
  br i1 %67, label %73, label %68

68:                                               ; preds = %66
  store i32 2, ptr %19, align 4
  br label %89

69:                                               ; preds = %5
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %14, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %15, align 4
  br label %124

73:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %74 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  store ptr %74, ptr %20, align 8, !tbaa !5
  %75 = load ptr, ptr %20, align 8, !tbaa !5
  %76 = invoke noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation3RunERKSt6vectorIdSaIdEEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19) %12, ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef %13)
          to label %77 unwind label %79

77:                                               ; preds = %73
  br i1 %76, label %83, label %78

78:                                               ; preds = %77
  store i1 false, ptr %6, align 1
  store i32 1, ptr %19, align 4
  br label %84

79:                                               ; preds = %73
  %80 = landingpad { ptr, i32 }
          cleanup
  %81 = extractvalue { ptr, i32 } %80, 0
  store ptr %81, ptr %14, align 8
  %82 = extractvalue { ptr, i32 } %80, 1
  store i32 %82, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  br label %123

83:                                               ; preds = %77
  store i32 0, ptr %19, align 4
  br label %84

84:                                               ; preds = %83, %78
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  %85 = load i32, ptr %19, align 4
  switch i32 %85, label %89 [
    i32 0, label %86
  ]

86:                                               ; preds = %84
  br label %87

87:                                               ; preds = %86
  %88 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  br label %66

89:                                               ; preds = %84, %68
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  %90 = load i32, ptr %19, align 4
  switch i32 %90, label %103 [
    i32 2, label %91
  ]

91:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #6
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  %92 = invoke noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation7GetMeanERKNS0_6BufferEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(19) %12, ptr noundef nonnull align 8 dereferenceable(128) %13, ptr noundef %21)
          to label %93 unwind label %95

93:                                               ; preds = %91
  br i1 %92, label %99, label %94

94:                                               ; preds = %93
  store i1 false, ptr %6, align 1
  store i32 1, ptr %19, align 4
  br label %102

95:                                               ; preds = %99, %91
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %14, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %15, align 4
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #6
  br label %123

99:                                               ; preds = %93
  %100 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %101 unwind label %95

101:                                              ; preds = %99
  store i32 0, ptr %19, align 4
  br label %102

102:                                              ; preds = %101, %94
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #6
  br label %103

103:                                              ; preds = %102, %89
  call void @_ZN4sptk22StatisticsAccumulation6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %13) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr %13) #6
  call void @_ZN4sptk22StatisticsAccumulationD2Ev(ptr noundef nonnull align 8 dereferenceable(19) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #6
  %104 = load i32, ptr %19, align 4
  switch i32 %104, label %458 [
    i32 0, label %105
    i32 1, label %451
  ]

105:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #6
  %106 = load ptr, ptr %8, align 8, !tbaa !5
  %107 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %107, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %108 unwind label %125

108:                                              ; preds = %105
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  %109 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 2
  %110 = load i32, ptr %109, align 4, !tbaa !38
  %111 = icmp sle i32 2, %110
  br i1 %111, label %112, label %142

112:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 1000, ptr %25, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  store double 1.000000e-05, ptr %26, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  store double 1.000000e-05, ptr %27, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 1, ptr %28, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 160, ptr %30) #6
  %113 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 1
  %114 = load i32, ptr %113, align 8, !tbaa !9
  %115 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 2
  %116 = load i32, ptr %115, align 4, !tbaa !38
  invoke void @_ZN4sptk22LindeBuzoGrayAlgorithmC1Eiiiiiddi(ptr noundef nonnull align 8 dereferenceable(153) %30, i32 noundef %114, i32 noundef 1, i32 noundef %116, i32 noundef 1, i32 noundef 1000, double noundef 1.000000e-05, double noundef 1.000000e-05, i32 noundef 1)
          to label %117 unwind label %129

117:                                              ; preds = %112
  %118 = load ptr, ptr %8, align 8, !tbaa !5
  %119 = load ptr, ptr %10, align 8, !tbaa !5
  %120 = invoke noundef zeroext i1 @_ZNK4sptk22LindeBuzoGrayAlgorithm3RunERKSt6vectorIS1_IdSaIdEESaIS3_EEPS5_PS1_IiSaIiEEPd(ptr noundef nonnull align 8 dereferenceable(153) %30, ptr noundef nonnull align 8 dereferenceable(24) %118, ptr noundef %119, ptr noundef %22, ptr noundef %29)
          to label %121 unwind label %133

121:                                              ; preds = %117
  br i1 %120, label %137, label %122

122:                                              ; preds = %121
  store i1 false, ptr %6, align 1
  store i32 1, ptr %19, align 4
  br label %138

123:                                              ; preds = %95, %79
  call void @_ZN4sptk22StatisticsAccumulation6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %13) #6
  br label %124

124:                                              ; preds = %123, %69
  call void @llvm.lifetime.end.p0(i64 128, ptr %13) #6
  call void @_ZN4sptk22StatisticsAccumulationD2Ev(ptr noundef nonnull align 8 dereferenceable(19) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #6
  br label %453

125:                                              ; preds = %105
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %14, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %450

129:                                              ; preds = %112
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %14, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %15, align 4
  br label %141

133:                                              ; preds = %117
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %14, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %15, align 4
  call void @_ZN4sptk22LindeBuzoGrayAlgorithmD2Ev(ptr noundef nonnull align 8 dereferenceable(153) %30) #6
  br label %141

137:                                              ; preds = %121
  store i32 0, ptr %19, align 4
  br label %138

138:                                              ; preds = %137, %122
  call void @_ZN4sptk22LindeBuzoGrayAlgorithmD2Ev(ptr noundef nonnull align 8 dereferenceable(153) %30) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  %139 = load i32, ptr %19, align 4
  switch i32 %139, label %448 [
    i32 0, label %140
  ]

140:                                              ; preds = %138
  br label %142

141:                                              ; preds = %133, %129
  call void @llvm.lifetime.end.p0(i64 160, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %449

142:                                              ; preds = %140, %108
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %143 = load ptr, ptr %8, align 8, !tbaa !5
  %144 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #6
  %145 = trunc i64 %144 to i32
  store i32 %145, ptr %31, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #6
  %146 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 2
  %147 = load i32, ptr %146, align 4, !tbaa !38
  %148 = sext i32 %147 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %148, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %149 unwind label %157

149:                                              ; preds = %142
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %150 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #6
  store ptr %150, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef 0) #6
  store ptr %151, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  store i32 0, ptr %36, align 4, !tbaa !37
  br label %152

152:                                              ; preds = %172, %149
  %153 = load i32, ptr %36, align 4, !tbaa !37
  %154 = load i32, ptr %31, align 4, !tbaa !37
  %155 = icmp slt i32 %153, %154
  br i1 %155, label %161, label %156

156:                                              ; preds = %152
  store i32 4, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %175

157:                                              ; preds = %142
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %14, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  br label %447

161:                                              ; preds = %152
  %162 = load ptr, ptr %35, align 8, !tbaa !5
  %163 = load ptr, ptr %34, align 8, !tbaa !5
  %164 = load i32, ptr %36, align 4, !tbaa !37
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds i32, ptr %163, i64 %165
  %167 = load i32, ptr %166, align 4, !tbaa !37
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds i32, ptr %162, i64 %168
  %170 = load i32, ptr %169, align 4, !tbaa !37
  %171 = add nsw i32 %170, 1
  store i32 %171, ptr %169, align 4, !tbaa !37
  br label %172

172:                                              ; preds = %161
  %173 = load i32, ptr %36, align 4, !tbaa !37
  %174 = add nsw i32 %173, 1
  store i32 %174, ptr %36, align 4, !tbaa !37
  br label %152, !llvm.loop !40

175:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 2
  %178 = load i32, ptr %177, align 4, !tbaa !38
  %179 = sext i32 %178 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %176, i64 noundef %179)
          to label %180 unwind label %187

180:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 0, ptr %37, align 4, !tbaa !37
  br label %181

181:                                              ; preds = %204, %180
  %182 = load i32, ptr %37, align 4, !tbaa !37
  %183 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 2
  %184 = load i32, ptr %183, align 4, !tbaa !38
  %185 = icmp slt i32 %182, %184
  br i1 %185, label %191, label %186

186:                                              ; preds = %181
  store i32 7, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %207

187:                                              ; preds = %443, %207, %175
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %14, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %15, align 4
  br label %446

191:                                              ; preds = %181
  %192 = load i32, ptr %37, align 4, !tbaa !37
  %193 = sext i32 %192 to i64
  %194 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %193) #6
  %195 = load i32, ptr %194, align 4, !tbaa !37
  %196 = sitofp i32 %195 to double
  %197 = load i32, ptr %31, align 4, !tbaa !37
  %198 = sitofp i32 %197 to double
  %199 = fdiv double %196, %198
  %200 = load ptr, ptr %9, align 8, !tbaa !5
  %201 = load i32, ptr %37, align 4, !tbaa !37
  %202 = sext i32 %201 to i64
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %200, i64 noundef %202) #6
  store double %199, ptr %203, align 8, !tbaa !39
  br label %204

204:                                              ; preds = %191
  %205 = load i32, ptr %37, align 4, !tbaa !37
  %206 = add nsw i32 %205, 1
  store i32 %206, ptr %37, align 4, !tbaa !37
  br label %181, !llvm.loop !42

207:                                              ; preds = %186
  %208 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZNK4sptk23GaussianMixtureModeling11FloorWeightEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(264) %54, ptr noundef %208)
  %209 = load ptr, ptr %11, align 8, !tbaa !5
  %210 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 2
  %211 = load i32, ptr %210, align 4, !tbaa !38
  %212 = sext i32 %211 to i64
  invoke void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %209, i64 noundef %212)
          to label %213 unwind label %187

213:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  store i32 0, ptr %38, align 4, !tbaa !37
  br label %214

214:                                              ; preds = %234, %213
  %215 = load i32, ptr %38, align 4, !tbaa !37
  %216 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 2
  %217 = load i32, ptr %216, align 4, !tbaa !38
  %218 = icmp slt i32 %215, %217
  br i1 %218, label %220, label %219

219:                                              ; preds = %214
  store i32 10, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %241

220:                                              ; preds = %214
  %221 = load ptr, ptr %11, align 8, !tbaa !5
  %222 = load i32, ptr %38, align 4, !tbaa !37
  %223 = sext i32 %222 to i64
  %224 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %221, i64 noundef %223) #6
  %225 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 1
  %226 = load i32, ptr %225, align 8, !tbaa !9
  %227 = add nsw i32 %226, 1
  invoke void @_ZN4sptk15SymmetricMatrix6ResizeEi(ptr noundef nonnull align 8 dereferenceable(64) %224, i32 noundef %227)
          to label %228 unwind label %237

228:                                              ; preds = %220
  %229 = load ptr, ptr %11, align 8, !tbaa !5
  %230 = load i32, ptr %38, align 4, !tbaa !37
  %231 = sext i32 %230 to i64
  %232 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %229, i64 noundef %231) #6
  invoke void @_ZN4sptk15SymmetricMatrix4FillEd(ptr noundef nonnull align 8 dereferenceable(64) %232, double noundef 0.000000e+00)
          to label %233 unwind label %237

233:                                              ; preds = %228
  br label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %38, align 4, !tbaa !37
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr %38, align 4, !tbaa !37
  br label %214, !llvm.loop !43

237:                                              ; preds = %228, %220
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %14, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %446

241:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  store i32 0, ptr %39, align 4, !tbaa !37
  br label %242

242:                                              ; preds = %355, %241
  %243 = load i32, ptr %39, align 4, !tbaa !37
  %244 = load i32, ptr %31, align 4, !tbaa !37
  %245 = icmp slt i32 %243, %244
  br i1 %245, label %247, label %246

246:                                              ; preds = %242
  store i32 13, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %358

247:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  %248 = load ptr, ptr %8, align 8, !tbaa !5
  %249 = load i32, ptr %39, align 4, !tbaa !37
  %250 = sext i32 %249 to i64
  %251 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %248, i64 noundef %250) #6
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef 0) #6
  store ptr %252, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %253 = load i32, ptr %39, align 4, !tbaa !37
  %254 = sext i32 %253 to i64
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %254) #6
  %256 = load i32, ptr %255, align 4, !tbaa !37
  store i32 %256, ptr %41, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  %257 = load ptr, ptr %10, align 8, !tbaa !5
  %258 = load i32, ptr %41, align 4, !tbaa !37
  %259 = sext i32 %258 to i64
  %260 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef %259) #6
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %260, i64 noundef 0) #6
  store ptr %261, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  store i32 0, ptr %43, align 4, !tbaa !37
  br label %262

262:                                              ; preds = %351, %247
  %263 = load i32, ptr %43, align 4, !tbaa !37
  %264 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 1
  %265 = load i32, ptr %264, align 8, !tbaa !9
  %266 = icmp sle i32 %263, %265
  br i1 %266, label %268, label %267

267:                                              ; preds = %262
  store i32 16, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %354

268:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  %269 = load ptr, ptr %40, align 8, !tbaa !5
  %270 = load i32, ptr %43, align 4, !tbaa !37
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %269, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !39
  %274 = load ptr, ptr %42, align 8, !tbaa !5
  %275 = load i32, ptr %43, align 4, !tbaa !37
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %274, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !39
  %279 = fsub double %273, %278
  store double %279, ptr %44, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %280 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 15
  %281 = load i8, ptr %280, align 8, !tbaa !44, !range !45, !noundef !46
  %282 = trunc i8 %281 to i1
  br i1 %282, label %283, label %285

283:                                              ; preds = %268
  %284 = load i32, ptr %43, align 4, !tbaa !37
  br label %286

285:                                              ; preds = %268
  br label %286

286:                                              ; preds = %285, %283
  %287 = phi i32 [ %284, %283 ], [ 0, %285 ]
  store i32 %287, ptr %45, align 4, !tbaa !37
  br label %288

288:                                              ; preds = %346, %286
  %289 = load i32, ptr %45, align 4, !tbaa !37
  %290 = load i32, ptr %43, align 4, !tbaa !37
  %291 = icmp sle i32 %289, %290
  br i1 %291, label %293, label %292

292:                                              ; preds = %288
  store i32 19, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %350

293:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #6
  %294 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 17
  %295 = load i32, ptr %43, align 4, !tbaa !37
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %46, ptr noundef nonnull align 8 dereferenceable(64) %294, i32 noundef %295)
          to label %296 unwind label %327

296:                                              ; preds = %293
  %297 = load i32, ptr %45, align 4, !tbaa !37
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %46, i32 noundef %297)
          to label %299 unwind label %331

299:                                              ; preds = %296
  %300 = load double, ptr %298, align 8, !tbaa !39
  %301 = fcmp une double 0.000000e+00, %300
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %46) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #6
  br i1 %301, label %302, label %345

302:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  %303 = load ptr, ptr %40, align 8, !tbaa !5
  %304 = load i32, ptr %45, align 4, !tbaa !37
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %303, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !39
  %308 = load ptr, ptr %42, align 8, !tbaa !5
  %309 = load i32, ptr %45, align 4, !tbaa !37
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %308, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !39
  %313 = fsub double %307, %312
  store double %313, ptr %47, align 8, !tbaa !39
  %314 = load double, ptr %44, align 8, !tbaa !39
  %315 = load double, ptr %47, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #6
  %316 = load ptr, ptr %11, align 8, !tbaa !5
  %317 = load i32, ptr %41, align 4, !tbaa !37
  %318 = sext i32 %317 to i64
  %319 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %316, i64 noundef %318) #6
  %320 = load i32, ptr %43, align 4, !tbaa !37
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %48, ptr noundef nonnull align 8 dereferenceable(64) %319, i32 noundef %320)
          to label %321 unwind label %336

321:                                              ; preds = %302
  %322 = load i32, ptr %45, align 4, !tbaa !37
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %48, i32 noundef %322)
          to label %324 unwind label %340

324:                                              ; preds = %321
  %325 = load double, ptr %323, align 8, !tbaa !39
  %326 = call double @llvm.fmuladd.f64(double %314, double %315, double %325)
  store double %326, ptr %323, align 8, !tbaa !39
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %48) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  br label %345

327:                                              ; preds = %293
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %14, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %15, align 4
  br label %335

331:                                              ; preds = %296
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %14, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %15, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %46) #6
  br label %335

335:                                              ; preds = %331, %327
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #6
  br label %349

336:                                              ; preds = %302
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %14, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %15, align 4
  br label %344

340:                                              ; preds = %321
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %14, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %15, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %48) #6
  br label %344

344:                                              ; preds = %340, %336
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  br label %349

345:                                              ; preds = %324, %299
  br label %346

346:                                              ; preds = %345
  %347 = load i32, ptr %45, align 4, !tbaa !37
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %45, align 4, !tbaa !37
  br label %288, !llvm.loop !47

349:                                              ; preds = %344, %335
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %446

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

351:                                              ; preds = %350
  %352 = load i32, ptr %43, align 4, !tbaa !37
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %43, align 4, !tbaa !37
  br label %262, !llvm.loop !48

354:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  br label %355

355:                                              ; preds = %354
  %356 = load i32, ptr %39, align 4, !tbaa !37
  %357 = add nsw i32 %356, 1
  store i32 %357, ptr %39, align 4, !tbaa !37
  br label %242, !llvm.loop !49

358:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  store i32 0, ptr %49, align 4, !tbaa !37
  br label %359

359:                                              ; preds = %440, %358
  %360 = load i32, ptr %49, align 4, !tbaa !37
  %361 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 2
  %362 = load i32, ptr %361, align 4, !tbaa !38
  %363 = icmp slt i32 %360, %362
  br i1 %363, label %365, label %364

364:                                              ; preds = %359
  store i32 22, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %443

365:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  store i32 0, ptr %50, align 4, !tbaa !37
  br label %366

366:                                              ; preds = %436, %365
  %367 = load i32, ptr %50, align 4, !tbaa !37
  %368 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 1
  %369 = load i32, ptr %368, align 8, !tbaa !9
  %370 = icmp sle i32 %367, %369
  br i1 %370, label %372, label %371

371:                                              ; preds = %366
  store i32 25, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %439

372:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  %373 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 15
  %374 = load i8, ptr %373, align 8, !tbaa !44, !range !45, !noundef !46
  %375 = trunc i8 %374 to i1
  br i1 %375, label %376, label %378

376:                                              ; preds = %372
  %377 = load i32, ptr %50, align 4, !tbaa !37
  br label %379

378:                                              ; preds = %372
  br label %379

379:                                              ; preds = %378, %376
  %380 = phi i32 [ %377, %376 ], [ 0, %378 ]
  store i32 %380, ptr %51, align 4, !tbaa !37
  br label %381

381:                                              ; preds = %431, %379
  %382 = load i32, ptr %51, align 4, !tbaa !37
  %383 = load i32, ptr %50, align 4, !tbaa !37
  %384 = icmp sle i32 %382, %383
  br i1 %384, label %386, label %385

385:                                              ; preds = %381
  store i32 28, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %435

386:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #6
  %387 = getelementptr inbounds %"class.sptk::GaussianMixtureModeling", ptr %54, i32 0, i32 17
  %388 = load i32, ptr %50, align 4, !tbaa !37
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %52, ptr noundef nonnull align 8 dereferenceable(64) %387, i32 noundef %388)
          to label %389 unwind label %412

389:                                              ; preds = %386
  %390 = load i32, ptr %51, align 4, !tbaa !37
  %391 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %52, i32 noundef %390)
          to label %392 unwind label %416

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

395:                                              ; preds = %392
  %396 = load i32, ptr %49, align 4, !tbaa !37
  %397 = sext i32 %396 to i64
  %398 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %397) #6
  %399 = load i32, ptr %398, align 4, !tbaa !37
  %400 = sitofp i32 %399 to double
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #6
  %401 = load ptr, ptr %11, align 8, !tbaa !5
  %402 = load i32, ptr %49, align 4, !tbaa !37
  %403 = sext i32 %402 to i64
  %404 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %401, i64 noundef %403) #6
  %405 = load i32, ptr %50, align 4, !tbaa !37
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %53, ptr noundef nonnull align 8 dereferenceable(64) %404, i32 noundef %405)
          to label %406 unwind label %421

406:                                              ; preds = %395
  %407 = load i32, ptr %51, align 4, !tbaa !37
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %53, i32 noundef %407)
          to label %409 unwind label %425

409:                                              ; preds = %406
  %410 = load double, ptr %408, align 8, !tbaa !39
  %411 = fdiv double %410, %400
  store double %411, ptr %408, align 8, !tbaa !39
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %53) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #6
  br label %430

412:                                              ; preds = %386
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %14, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %15, align 4
  br label %420

416:                                              ; preds = %389
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %14, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %15, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %52) #6
  br label %420

420:                                              ; preds = %416, %412
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #6
  br label %434

421:                                              ; preds = %395
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %14, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %15, align 4
  br label %429

425:                                              ; preds = %406
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %14, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %15, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %53) #6
  br label %429

429:                                              ; preds = %425, %421
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #6
  br label %434

430:                                              ; preds = %409, %392
  br label %431

431:                                              ; preds = %430
  %432 = load i32, ptr %51, align 4, !tbaa !37
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr %51, align 4, !tbaa !37
  br label %381, !llvm.loop !50

434:                                              ; preds = %429, %420
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %446

435:                                              ; preds = %385
  br label %436

436:                                              ; preds = %435
  %437 = load i32, ptr %50, align 4, !tbaa !37
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %50, align 4, !tbaa !37
  br label %366, !llvm.loop !51

439:                                              ; preds = %371
  br label %440

440:                                              ; preds = %439
  %441 = load i32, ptr %49, align 4, !tbaa !37
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr %49, align 4, !tbaa !37
  br label %359, !llvm.loop !52

443:                                              ; preds = %364
  %444 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4sptk23GaussianMixtureModeling13FloorVarianceEPSt6vectorINS_15SymmetricMatrixESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(264) %54, ptr noundef %444)
          to label %445 unwind label %187

445:                                              ; preds = %443
  store i1 true, ptr %6, align 1
  store i32 1, ptr %19, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %448

446:                                              ; preds = %434, %349, %237, %187
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #6
  br label %447

447:                                              ; preds = %446, %157
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %449

448:                                              ; preds = %445, %138
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #6
  br label %451

449:                                              ; preds = %447, %141
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #6
  br label %450

450:                                              ; preds = %449, %125
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #6
  br label %453

451:                                              ; preds = %448, %103
  %452 = load i1, ptr %6, align 1
  ret i1 %452

453:                                              ; preds = %450, %124
  %454 = load ptr, ptr %14, align 8
  %455 = load i32, ptr %15, align 4
  %456 = insertvalue { ptr, i32 } poison, ptr %454, 0
  %457 = insertvalue { ptr, i32 } %456, i32 %455, 1
  resume { ptr, i32 } %457

458:                                              ; preds = %103
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN4sptk22StatisticsAccumulationC1Eiibb(ptr noundef nonnull align 8 dereferenceable(19), i32 noundef, i32 noundef, i1 noundef zeroext, i1 noundef zeroext) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4sptk22StatisticsAccumulation6BufferC2Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #2 align 2

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

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

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

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

declare noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation3RunERKSt6vectorIdSaIdEEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #3

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

declare noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation7GetMeanERKNS0_6BufferEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(19), ptr noundef nonnull align 8 dereferenceable(128), ptr noundef) #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4sptk22StatisticsAccumulation6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4sptk22StatisticsAccumulationD2Ev(ptr noundef nonnull align 8 dereferenceable(19)) unnamed_addr #0 align 2

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

declare void @_ZN4sptk22LindeBuzoGrayAlgorithmC1Eiiiiiddi(ptr noundef nonnull align 8 dereferenceable(153), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, i32 noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZNK4sptk22LindeBuzoGrayAlgorithm3RunERKSt6vectorIS1_IdSaIdEESaIS3_EEPS5_PS1_IiSaIiEEPd(ptr noundef nonnull align 8 dereferenceable(153), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4sptk22LindeBuzoGrayAlgorithmD2Ev(ptr noundef nonnull align 8 dereferenceable(153)) unnamed_addr #0 align 2

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

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

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


; 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.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>
%"class.sptk::StatisticsAccumulation" = type <{ ptr, i32, i32, i8, i8, i8, [5 x i8] }>
%"class.sptk::StatisticsAccumulation::Buffer" = type { ptr, i32, %"class.std::vector.0", %"class.sptk::SymmetricMatrix", %"class.std::vector.0" }
%"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 }
%"class.__gnu_cxx::__normal_iterator.24" = 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::LindeBuzoGrayAlgorithm" = type <{ ptr, i32, i32, i32, i32, i32, [4 x i8], double, double, i32, [4 x i8], %"class.sptk::DistanceCalculation", %"class.sptk::StatisticsAccumulation", %"class.sptk::VectorQuantization", i8, [7 x i8] }>
%"class.sptk::DistanceCalculation" = type <{ ptr, i32, i32, i8, [7 x i8] }>
%"class.sptk::VectorQuantization" = type <{ ptr, i32, [4 x i8], %"class.sptk::DistanceCalculation", i8, [7 x i8] }>

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK4sptk23GaussianMixtureModeling10InitializeERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_PS5_PS1_INS_15SymmetricMatrixESaISA_EE(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.sptk::StatisticsAccumulation", align 8
  %7 = alloca %"class.sptk::StatisticsAccumulation::Buffer", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.24", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.24", align 8
  %10 = alloca %"class.std::vector.0", align 8
  %11 = alloca %"class.std::vector", align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca double, align 8
  %15 = alloca %"class.sptk::LindeBuzoGrayAlgorithm", align 8
  %16 = alloca %"class.std::vector", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %19 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %20 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %21 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  tail call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #6
  %22 = getelementptr inbounds i8, ptr %0, i64 8
  %23 = load i32, ptr %22, align 8, !tbaa !5
  call void @_ZN4sptk22StatisticsAccumulationC1Eiibb(ptr noundef nonnull align 8 dereferenceable(19) %6, i32 noundef %23, i32 noundef 1, i1 noundef zeroext false, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %7) #6
  invoke void @_ZN4sptk22StatisticsAccumulation6BufferC2Ev(ptr noundef nonnull align 8 dereferenceable(128) %7)
          to label %24 unwind label %28

24:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  %25 = call ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  store ptr %25, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  %26 = call ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  store ptr %26, ptr %9, align 8
  %27 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  br i1 %27, label %.lr.ph, label %._crit_edge

28:                                               ; preds = %5
  %29 = landingpad { ptr, i32 }
          cleanup
  br label %57

.lr.ph:                                           ; preds = %24, %35
  %30 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #6
  %31 = invoke noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation3RunERKSt6vectorIdSaIdEEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19) %6, ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull %7)
          to label %34 unwind label %32

32:                                               ; preds = %.lr.ph
  %33 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  br label %56

34:                                               ; preds = %.lr.ph
  br i1 %31, label %35, label %38

35:                                               ; preds = %34
  %36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #6
  %37 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  br i1 %37, label %.lr.ph, label %._crit_edge

38:                                               ; preds = %34
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  br label %45

._crit_edge:                                      ; preds = %35, %24
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  %39 = invoke noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation7GetMeanERKNS0_6BufferEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(19) %6, ptr noundef nonnull align 8 dereferenceable(128) %7, ptr noundef nonnull %10)
          to label %40 unwind label %41

40:                                               ; preds = %._crit_edge
  br i1 %39, label %43, label %44

41:                                               ; preds = %43, %._crit_edge
  %42 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %56

43:                                               ; preds = %40
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %44 unwind label %41

44:                                               ; preds = %43, %40
  %.2115 = phi i32 [ 1, %40 ], [ 0, %43 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %45

45:                                               ; preds = %38, %44
  %.3116 = phi i32 [ %.2115, %44 ], [ 1, %38 ]
  call void @_ZN4sptk22StatisticsAccumulation6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %7) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %7) #6
  call void @_ZN4sptk22StatisticsAccumulationD2Ev(ptr noundef nonnull align 8 dereferenceable(19) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  %switch = icmp eq i32 %.3116, 0
  br i1 %switch, label %46, label %248

46:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #6
  %47 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 0, ptr %12, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %47, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %48 unwind label %58

48:                                               ; preds = %46
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  %49 = getelementptr inbounds i8, ptr %0, i64 12
  %50 = load i32, ptr %49, align 4, !tbaa !37
  %51 = icmp sgt i32 %50, 1
  br i1 %51, label %52, label %66

52:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %15) #6
  %53 = load i32, ptr %22, align 8, !tbaa !5
  invoke void @_ZN4sptk22LindeBuzoGrayAlgorithmC1Eiiiiiddi(ptr noundef nonnull align 8 dereferenceable(153) %15, i32 noundef %53, i32 noundef 1, i32 noundef %50, i32 noundef 1, i32 noundef 1000, double noundef 1.000000e-05, double noundef 1.000000e-05, i32 noundef 1)
          to label %54 unwind label %60

54:                                               ; preds = %52
  %55 = invoke noundef zeroext i1 @_ZNK4sptk22LindeBuzoGrayAlgorithm3RunERKSt6vectorIS1_IdSaIdEESaIS3_EEPS5_PS1_IiSaIiEEPd(ptr noundef nonnull align 8 dereferenceable(153) %15, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef nonnull %14)
          to label %64 unwind label %62

56:                                               ; preds = %41, %32
  %.pn = phi { ptr, i32 } [ %42, %41 ], [ %33, %32 ]
  call void @_ZN4sptk22StatisticsAccumulation6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %7) #6
  br label %57

57:                                               ; preds = %56, %28
  %.pn.pn = phi { ptr, i32 } [ %.pn, %56 ], [ %29, %28 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %7) #6
  call void @_ZN4sptk22StatisticsAccumulationD2Ev(ptr noundef nonnull align 8 dereferenceable(19) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  br label %249

58:                                               ; preds = %46
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br label %247

60:                                               ; preds = %52
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %65

62:                                               ; preds = %54
  %63 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk22LindeBuzoGrayAlgorithmD2Ev(ptr noundef nonnull align 8 dereferenceable(153) %15) #6
  br label %65

64:                                               ; preds = %54
  call void @_ZN4sptk22LindeBuzoGrayAlgorithmD2Ev(ptr noundef nonnull align 8 dereferenceable(153) %15) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br i1 %55, label %66, label %245

65:                                               ; preds = %62, %60
  %.pn125 = phi { ptr, i32 } [ %63, %62 ], [ %61, %60 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br label %246

66:                                               ; preds = %64, %48
  %67 = call noundef i64 @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %68 = trunc i64 %67 to i32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  %69 = load i32, ptr %49, align 4, !tbaa !37
  %70 = sext i32 %69 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %70, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %71 unwind label %88

71:                                               ; preds = %66
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  %72 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 0) #6
  %73 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0) #6
  %74 = icmp sgt i32 %68, 0
  br i1 %74, label %.lr.ph152.preheader, label %._crit_edge153

.lr.ph152.preheader:                              ; preds = %71
  %wide.trip.count = and i64 %67, 2147483647
  %75 = add nsw i64 %wide.trip.count, -1
  %xtraiter = and i64 %67, 3
  %76 = icmp ult i64 %75, 3
  br i1 %76, label %._crit_edge153.loopexit.unr-lcssa, label %.lr.ph152.preheader.new

.lr.ph152.preheader.new:                          ; preds = %.lr.ph152.preheader
  %unroll_iter = sub nsw i64 %wide.trip.count, %xtraiter
  br label %.lr.ph152

._crit_edge153.loopexit.unr-lcssa:                ; preds = %.lr.ph152, %.lr.ph152.preheader
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph152.preheader ], [ %indvars.iv.next.3, %.lr.ph152 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge153, label %.lr.ph152.epil

.lr.ph152.epil:                                   ; preds = %._crit_edge153.loopexit.unr-lcssa, %.lr.ph152.epil
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.lr.ph152.epil ], [ %indvars.iv.unr, %._crit_edge153.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph152.epil ], [ 0, %._crit_edge153.loopexit.unr-lcssa ]
  %77 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.epil
  %78 = load i32, ptr %77, align 4, !tbaa !36
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds i32, ptr %73, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !36
  %82 = add nsw i32 %81, 1
  store i32 %82, ptr %80, align 4, !tbaa !36
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge153, label %.lr.ph152.epil, !llvm.loop !38

._crit_edge153:                                   ; preds = %._crit_edge153.loopexit.unr-lcssa, %.lr.ph152.epil, %71
  %83 = load i32, ptr %49, align 4, !tbaa !37
  %84 = sext i32 %83 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %84)
          to label %.preheader149 unwind label %118

.preheader149:                                    ; preds = %._crit_edge153
  %85 = load i32, ptr %49, align 4, !tbaa !37
  %86 = icmp sgt i32 %85, 0
  br i1 %86, label %.lr.ph155, label %._crit_edge156

.lr.ph155:                                        ; preds = %.preheader149
  %87 = sitofp i32 %68 to double
  br label %120

88:                                               ; preds = %66
  %89 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  br label %244

.lr.ph152:                                        ; preds = %.lr.ph152, %.lr.ph152.preheader.new
  %indvars.iv = phi i64 [ 0, %.lr.ph152.preheader.new ], [ %indvars.iv.next.3, %.lr.ph152 ]
  %niter = phi i64 [ 0, %.lr.ph152.preheader.new ], [ %niter.next.3, %.lr.ph152 ]
  %90 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv
  %91 = load i32, ptr %90, align 4, !tbaa !36
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds i32, ptr %73, i64 %92
  %94 = load i32, ptr %93, align 4, !tbaa !36
  %95 = add nsw i32 %94, 1
  store i32 %95, ptr %93, align 4, !tbaa !36
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %96 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.next
  %97 = load i32, ptr %96, align 4, !tbaa !36
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds i32, ptr %73, i64 %98
  %100 = load i32, ptr %99, align 4, !tbaa !36
  %101 = add nsw i32 %100, 1
  store i32 %101, ptr %99, align 4, !tbaa !36
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %102 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.next.1
  %103 = load i32, ptr %102, align 4, !tbaa !36
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds i32, ptr %73, i64 %104
  %106 = load i32, ptr %105, align 4, !tbaa !36
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %105, align 4, !tbaa !36
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %108 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.next.2
  %109 = load i32, ptr %108, align 4, !tbaa !36
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds i32, ptr %73, i64 %110
  %112 = load i32, ptr %111, align 4, !tbaa !36
  %113 = add nsw i32 %112, 1
  store i32 %113, ptr %111, align 4, !tbaa !36
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge153.loopexit.unr-lcssa, label %.lr.ph152, !llvm.loop !40

._crit_edge156:                                   ; preds = %120, %.preheader149
  call void @_ZNK4sptk23GaussianMixtureModeling11FloorWeightEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef nonnull %2)
  %114 = load i32, ptr %49, align 4, !tbaa !37
  %115 = sext i32 %114 to i64
  invoke void @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %115)
          to label %.preheader148 unwind label %118

.preheader148:                                    ; preds = %._crit_edge156
  %116 = load i32, ptr %49, align 4, !tbaa !37
  %117 = icmp sgt i32 %116, 0
  br i1 %117, label %.lr.ph158, label %.preheader147

118:                                              ; preds = %._crit_edge173, %._crit_edge156, %._crit_edge153
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %243

120:                                              ; preds = %.lr.ph155, %120
  %indvars.iv176 = phi i64 [ 0, %.lr.ph155 ], [ %indvars.iv.next177, %120 ]
  %121 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv176) #6
  %122 = load i32, ptr %121, align 4, !tbaa !36
  %123 = sitofp i32 %122 to double
  %124 = fdiv double %123, %87
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv176) #6
  store double %124, ptr %125, align 8, !tbaa !42
  %indvars.iv.next177 = add nuw nsw i64 %indvars.iv176, 1
  %126 = load i32, ptr %49, align 4, !tbaa !37
  %127 = sext i32 %126 to i64
  %128 = icmp slt i64 %indvars.iv.next177, %127
  br i1 %128, label %120, label %._crit_edge156, !llvm.loop !43

.preheader147:                                    ; preds = %137, %.preheader148
  %129 = phi i32 [ %116, %.preheader148 ], [ %138, %137 ]
  br i1 %74, label %.lr.ph166, label %.preheader146

.lr.ph166:                                        ; preds = %.preheader147
  %130 = getelementptr inbounds i8, ptr %0, i64 168
  %131 = getelementptr inbounds i8, ptr %0, i64 176
  %wide.trip.count193 = and i64 %67, 2147483647
  br label %149

.lr.ph158:                                        ; preds = %.preheader148, %137
  %indvars.iv179 = phi i64 [ %indvars.iv.next180, %137 ], [ 0, %.preheader148 ]
  %132 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv179) #6
  %133 = load i32, ptr %22, align 8, !tbaa !5
  %134 = add nsw i32 %133, 1
  invoke void @_ZN4sptk15SymmetricMatrix6ResizeEi(ptr noundef nonnull align 8 dereferenceable(64) %132, i32 noundef %134)
          to label %135 unwind label %141

135:                                              ; preds = %.lr.ph158
  %136 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv179) #6
  invoke void @_ZN4sptk15SymmetricMatrix4FillEd(ptr noundef nonnull align 8 dereferenceable(64) %136, double noundef 0.000000e+00)
          to label %137 unwind label %141

137:                                              ; preds = %135
  %indvars.iv.next180 = add nuw nsw i64 %indvars.iv179, 1
  %138 = load i32, ptr %49, align 4, !tbaa !37
  %139 = sext i32 %138 to i64
  %140 = icmp slt i64 %indvars.iv.next180, %139
  br i1 %140, label %.lr.ph158, label %.preheader147, !llvm.loop !44

141:                                              ; preds = %135, %.lr.ph158
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %243

.preheader146.loopexit:                           ; preds = %._crit_edge164
  %.pre = load i32, ptr %49, align 4, !tbaa !37
  br label %.preheader146

.preheader146:                                    ; preds = %.preheader146.loopexit, %.preheader147
  %143 = phi i32 [ %.pre, %.preheader146.loopexit ], [ %129, %.preheader147 ]
  %144 = icmp sgt i32 %143, 0
  br i1 %144, label %.preheader.lr.ph, label %._crit_edge173

.preheader.lr.ph:                                 ; preds = %.preheader146
  %145 = getelementptr inbounds i8, ptr %0, i64 168
  %146 = getelementptr inbounds i8, ptr %0, i64 176
  %147 = load i32, ptr %22, align 8, !tbaa !5
  %148 = icmp slt i32 %147, 0
  br i1 %148, label %._crit_edge173, label %.preheader

149:                                              ; preds = %.lr.ph166, %._crit_edge164
  %indvars.iv190 = phi i64 [ 0, %.lr.ph166 ], [ %indvars.iv.next191, %._crit_edge164 ]
  %150 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv190) #6
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef 0) #6
  %152 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv190) #6
  %153 = load i32, ptr %152, align 4, !tbaa !36
  %154 = sext i32 %153 to i64
  %155 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %154) #6
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %155, i64 noundef 0) #6
  %157 = load i32, ptr %22, align 8, !tbaa !5
  %.not133160 = icmp slt i32 %157, 0
  br i1 %.not133160, label %._crit_edge164, label %.lr.ph163

._crit_edge164:                                   ; preds = %169, %149
  %indvars.iv.next191 = add nuw nsw i64 %indvars.iv190, 1
  %exitcond194.not = icmp eq i64 %indvars.iv.next191, %wide.trip.count193
  br i1 %exitcond194.not, label %.preheader146.loopexit, label %149, !llvm.loop !45

.lr.ph163:                                        ; preds = %149, %169
  %indvars.iv187 = phi i64 [ %indvars.iv.next188, %169 ], [ 0, %149 ]
  %158 = getelementptr inbounds double, ptr %151, i64 %indvars.iv187
  %159 = load double, ptr %158, align 8, !tbaa !42
  %160 = getelementptr inbounds double, ptr %156, i64 %indvars.iv187
  %161 = load double, ptr %160, align 8, !tbaa !42
  %162 = fsub double %159, %161
  %163 = load i8, ptr %130, align 8, !tbaa !46, !range !47, !noundef !48
  %164 = trunc nuw i8 %163 to i1
  %165 = trunc nuw nsw i64 %indvars.iv187 to i32
  %166 = and i64 %indvars.iv187, 4294967295
  %167 = select i1 %164, i64 %166, i64 0
  %168 = add nuw nsw i64 %indvars.iv187, 1
  %wide.trip.count185 = and i64 %168, 4294967295
  br label %172

169:                                              ; preds = %201
  %indvars.iv.next188 = add nuw nsw i64 %indvars.iv187, 1
  %170 = load i32, ptr %22, align 8, !tbaa !5
  %171 = sext i32 %170 to i64
  %.not133.not = icmp slt i64 %indvars.iv187, %171
  br i1 %.not133.not, label %.lr.ph163, label %._crit_edge164, !llvm.loop !49

172:                                              ; preds = %.lr.ph163, %201
  %indvars.iv182 = phi i64 [ %167, %.lr.ph163 ], [ %indvars.iv.next183, %201 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %18, ptr noundef nonnull align 8 dereferenceable(64) %131, i32 noundef %165)
          to label %173 unwind label %191

173:                                              ; preds = %172
  %174 = trunc nuw nsw i64 %indvars.iv182 to i32
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %18, i32 noundef %174)
          to label %176 unwind label %193

176:                                              ; preds = %173
  %177 = load double, ptr %175, align 8, !tbaa !42
  %178 = fcmp une double %177, 0.000000e+00
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  br i1 %178, label %179, label %201

179:                                              ; preds = %176
  %180 = getelementptr inbounds double, ptr %151, i64 %indvars.iv182
  %181 = load double, ptr %180, align 8, !tbaa !42
  %182 = getelementptr inbounds double, ptr %156, i64 %indvars.iv182
  %183 = load double, ptr %182, align 8, !tbaa !42
  %184 = fsub double %181, %183
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #6
  %185 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %154) #6
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %19, ptr noundef nonnull align 8 dereferenceable(64) %185, i32 noundef %165)
          to label %186 unwind label %196

186:                                              ; preds = %179
  %187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %19, i32 noundef %174)
          to label %188 unwind label %198

188:                                              ; preds = %186
  %189 = load double, ptr %187, align 8, !tbaa !42
  %190 = call double @llvm.fmuladd.f64(double %162, double %184, double %189)
  store double %190, ptr %187, align 8, !tbaa !42
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br label %201

191:                                              ; preds = %172
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %195

193:                                              ; preds = %173
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %18) #6
  br label %195

195:                                              ; preds = %193, %191
  %.pn135 = phi { ptr, i32 } [ %194, %193 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  br label %243

196:                                              ; preds = %179
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %200

198:                                              ; preds = %186
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %19) #6
  br label %200

200:                                              ; preds = %198, %196
  %.pn137 = phi { ptr, i32 } [ %199, %198 ], [ %197, %196 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br label %243

201:                                              ; preds = %176, %188
  %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1
  %exitcond186.not = icmp eq i64 %indvars.iv.next183, %wide.trip.count185
  br i1 %exitcond186.not, label %169, label %172, !llvm.loop !50

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge171
  %202 = phi i32 [ %204, %._crit_edge171 ], [ %143, %.preheader.lr.ph ]
  %203 = phi i32 [ %205, %._crit_edge171 ], [ %147, %.preheader.lr.ph ]
  %indvars.iv197 = phi i64 [ %indvars.iv.next198, %._crit_edge171 ], [ 0, %.preheader.lr.ph ]
  %.not168 = icmp slt i32 %203, 0
  br i1 %.not168, label %._crit_edge171, label %.lr.ph170

._crit_edge173:                                   ; preds = %._crit_edge171, %.preheader.lr.ph, %.preheader146
  invoke void @_ZNK4sptk23GaussianMixtureModeling13FloorVarianceEPSt6vectorINS_15SymmetricMatrixESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef nonnull %4)
          to label %242 unwind label %118

._crit_edge171.loopexit:                          ; preds = %212
  %.pre200 = load i32, ptr %49, align 4, !tbaa !37
  br label %._crit_edge171

._crit_edge171:                                   ; preds = %._crit_edge171.loopexit, %.preheader
  %204 = phi i32 [ %.pre200, %._crit_edge171.loopexit ], [ %202, %.preheader ]
  %205 = phi i32 [ %213, %._crit_edge171.loopexit ], [ %203, %.preheader ]
  %indvars.iv.next198 = add nuw nsw i64 %indvars.iv197, 1
  %206 = sext i32 %204 to i64
  %207 = icmp slt i64 %indvars.iv.next198, %206
  br i1 %207, label %.preheader, label %._crit_edge173, !llvm.loop !51

.lr.ph170:                                        ; preds = %.preheader, %212
  %.086169 = phi i32 [ %211, %212 ], [ 0, %.preheader ]
  %208 = load i8, ptr %145, align 8, !tbaa !46, !range !47, !noundef !48
  %209 = trunc nuw i8 %208 to i1
  %210 = select i1 %209, i32 %.086169, i32 0
  %211 = add nuw nsw i32 %.086169, 1
  br label %214

212:                                              ; preds = %240
  %213 = load i32, ptr %22, align 8, !tbaa !5
  %.not.not = icmp slt i32 %.086169, %213
  br i1 %.not.not, label %.lr.ph170, label %._crit_edge171.loopexit, !llvm.loop !53

214:                                              ; preds = %.lr.ph170, %240
  %.0167 = phi i32 [ %210, %.lr.ph170 ], [ %241, %240 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #6
  invoke void @_ZNK4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %20, ptr noundef nonnull align 8 dereferenceable(64) %146, i32 noundef %.086169)
          to label %215 unwind label %230

215:                                              ; preds = %214
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %20, i32 noundef %.0167)
          to label %217 unwind label %232

217:                                              ; preds = %215
  %218 = load double, ptr %216, align 8, !tbaa !42
  %219 = fcmp une double %218, 0.000000e+00
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  br i1 %219, label %220, label %240

220:                                              ; preds = %217
  %221 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv197) #6
  %222 = load i32, ptr %221, align 4, !tbaa !36
  %223 = sitofp i32 %222 to double
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #6
  %224 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN4sptk15SymmetricMatrixESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv197) #6
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %21, ptr noundef nonnull align 8 dereferenceable(64) %224, i32 noundef %.086169)
          to label %225 unwind label %235

225:                                              ; preds = %220
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %.0167)
          to label %227 unwind label %237

227:                                              ; preds = %225
  %228 = load double, ptr %226, align 8, !tbaa !42
  %229 = fdiv double %228, %223
  store double %229, ptr %226, align 8, !tbaa !42
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %240

230:                                              ; preds = %214
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %234

232:                                              ; preds = %215
  %233 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %20) #6
  br label %234

234:                                              ; preds = %232, %230
  %.pn128 = phi { ptr, i32 } [ %233, %232 ], [ %231, %230 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  br label %243

235:                                              ; preds = %220
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %239

237:                                              ; preds = %225
  %238 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %21) #6
  br label %239

239:                                              ; preds = %237, %235
  %.pn130 = phi { ptr, i32 } [ %238, %237 ], [ %236, %235 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %243

240:                                              ; preds = %217, %227
  %241 = add nuw i32 %.0167, 1
  %exitcond196.not = icmp eq i32 %.0167, %.086169
  br i1 %exitcond196.not, label %212, label %214, !llvm.loop !54

242:                                              ; preds = %._crit_edge173
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  br label %245

243:                                              ; preds = %234, %239, %195, %200, %141, %118
  %.pn140 = phi { ptr, i32 } [ %142, %141 ], [ %119, %118 ], [ %.pn137, %200 ], [ %.pn135, %195 ], [ %.pn130, %239 ], [ %.pn128, %234 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  br label %244

244:                                              ; preds = %243, %88
  %.pn140.pn = phi { ptr, i32 } [ %.pn140, %243 ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  br label %246

245:                                              ; preds = %64, %242
  %.6 = phi i1 [ true, %242 ], [ false, %64 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  br label %248

246:                                              ; preds = %244, %65
  %.pn140.pn.pn = phi { ptr, i32 } [ %.pn140.pn, %244 ], [ %.pn125, %65 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  br label %247

247:                                              ; preds = %246, %58
  %.pn140.pn.pn.pn = phi { ptr, i32 } [ %.pn140.pn.pn, %246 ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  br label %249

248:                                              ; preds = %45, %245
  %.7 = phi i1 [ false, %45 ], [ %.6, %245 ]
  ret i1 %.7

249:                                              ; preds = %247, %57
  %.pn140.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn140.pn.pn.pn, %247 ], [ %.pn.pn, %57 ]
  resume { ptr, i32 } %.pn140.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN4sptk22StatisticsAccumulationC1Eiibb(ptr noundef nonnull align 8 dereferenceable(19), i32 noundef, i32 noundef, i1 noundef zeroext, i1 noundef zeroext) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4sptk22StatisticsAccumulation6BufferC2Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #2 align 2

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

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

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

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

declare noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation3RunERKSt6vectorIdSaIdEEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #3

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

declare noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation7GetMeanERKNS0_6BufferEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(19), ptr noundef nonnull align 8 dereferenceable(128), ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4sptk22StatisticsAccumulation6BufferD2Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4sptk22StatisticsAccumulationD2Ev(ptr noundef nonnull align 8 dereferenceable(19)) unnamed_addr #0 align 2

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

declare void @_ZN4sptk22LindeBuzoGrayAlgorithmC1Eiiiiiddi(ptr noundef nonnull align 8 dereferenceable(153), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, i32 noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZNK4sptk22LindeBuzoGrayAlgorithm3RunERKSt6vectorIS1_IdSaIdEESaIS3_EEPS5_PS1_IiSaIiEEPd(ptr noundef nonnull align 8 dereferenceable(153), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4sptk22LindeBuzoGrayAlgorithmD2Ev(ptr noundef nonnull align 8 dereferenceable(153)) unnamed_addr #0 align 2

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

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

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


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