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

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

%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>
%"class.__gnu_cxx::__normal_iterator.15" = type { ptr }
%class.anon = type { ptr }
%"class.sptk::PrincipalComponentAnalysis" = type <{ ptr, i32, i32, double, i32, [4 x i8], %"class.sptk::StatisticsAccumulation", i8, [7 x i8] }>
%"class.sptk::StatisticsAccumulation" = type <{ ptr, i32, i32, i8, i8, i8, [5 x i8] }>
%"class.sptk::PrincipalComponentAnalysis::Buffer" = type { ptr, %"class.sptk::StatisticsAccumulation::Buffer", %"class.sptk::SymmetricMatrix", %"class.std::vector.5" }
%"class.sptk::StatisticsAccumulation::Buffer" = type { ptr, i32, %"class.std::vector", %"class.sptk::SymmetricMatrix", %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.sptk::SymmetricMatrix" = type { ptr, i32, %"class.std::vector", %"class.std::vector.0" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl" }
%"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl" = type { %"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = 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 }

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK4sptk26PrincipalComponentAnalysis3RunERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_S8_PNS_6MatrixEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(57) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %32 = alloca double, align 8
  %33 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %34 = alloca double, align 8
  %35 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca i32, align 4
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca i32, align 4
  %45 = alloca double, align 8
  %46 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %47 = alloca double, align 8
  %48 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %49 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %50 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %51 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %52 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %53 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %54 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.15", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.15", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.15", align 8
  %58 = alloca %"class.__gnu_cxx::__normal_iterator.15", align 8
  %59 = alloca %class.anon, align 8
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  %67 = load ptr, ptr %8, align 8
  %68 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 7
  %69 = load i8, ptr %68, align 8, !tbaa !9, !range !16, !noundef !17
  %70 = trunc i8 %69 to i1
  br i1 %70, label %71, label %83

71:                                               ; preds = %6
  %72 = load ptr, ptr %10, align 8, !tbaa !5
  %73 = icmp eq ptr null, %72
  br i1 %73, label %83, label %74

74:                                               ; preds = %71
  %75 = load ptr, ptr %11, align 8, !tbaa !5
  %76 = icmp eq ptr null, %75
  br i1 %76, label %83, label %77

77:                                               ; preds = %74
  %78 = load ptr, ptr %12, align 8, !tbaa !5
  %79 = icmp eq ptr null, %78
  br i1 %79, label %83, label %80

80:                                               ; preds = %77
  %81 = load ptr, ptr %13, align 8, !tbaa !5
  %82 = icmp eq ptr null, %81
  br i1 %82, label %83, label %84

83:                                               ; preds = %80, %77, %74, %71, %6
  store i1 false, ptr %7, align 1
  br label %662

84:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %85 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 1
  %86 = load i32, ptr %85, align 8, !tbaa !18
  %87 = add nsw i32 %86, 1
  store i32 %87, ptr %14, align 4, !tbaa !19
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %88) #8
  %90 = load i32, ptr %14, align 4, !tbaa !19
  %91 = sext i32 %90 to i64
  %92 = icmp ne i64 %89, %91
  br i1 %92, label %93, label %97

93:                                               ; preds = %84
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = load i32, ptr %14, align 4, !tbaa !19
  %96 = sext i32 %95 to i64
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %96)
  br label %97

97:                                               ; preds = %93, %84
  %98 = load ptr, ptr %12, align 8, !tbaa !5
  %99 = call noundef i32 @_ZNK4sptk6Matrix9GetNumRowEv(ptr noundef nonnull align 8 dereferenceable(64) %98)
  %100 = load i32, ptr %14, align 4, !tbaa !19
  %101 = icmp ne i32 %99, %100
  br i1 %101, label %107, label %102

102:                                              ; preds = %97
  %103 = load ptr, ptr %12, align 8, !tbaa !5
  %104 = call noundef i32 @_ZNK4sptk6Matrix12GetNumColumnEv(ptr noundef nonnull align 8 dereferenceable(64) %103)
  %105 = load i32, ptr %14, align 4, !tbaa !19
  %106 = icmp ne i32 %104, %105
  br i1 %106, label %107, label %111

107:                                              ; preds = %102, %97
  %108 = load ptr, ptr %12, align 8, !tbaa !5
  %109 = load i32, ptr %14, align 4, !tbaa !19
  %110 = load i32, ptr %14, align 4, !tbaa !19
  call void @_ZN4sptk6Matrix6ResizeEii(ptr noundef nonnull align 8 dereferenceable(64) %108, i32 noundef %109, i32 noundef %110)
  br label %111

111:                                              ; preds = %107, %102
  %112 = load ptr, ptr %13, align 8, !tbaa !5
  %113 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %112, i32 0, i32 3
  %114 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  %115 = load i32, ptr %14, align 4, !tbaa !19
  %116 = sext i32 %115 to i64
  %117 = icmp ne i64 %114, %116
  br i1 %117, label %118, label %123

118:                                              ; preds = %111
  %119 = load ptr, ptr %13, align 8, !tbaa !5
  %120 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %119, i32 0, i32 3
  %121 = load i32, ptr %14, align 4, !tbaa !19
  %122 = sext i32 %121 to i64
  call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %122)
  br label %123

123:                                              ; preds = %118, %111
  %124 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 6
  %125 = load ptr, ptr %13, align 8, !tbaa !5
  %126 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %125, i32 0, i32 1
  call void @_ZNK4sptk22StatisticsAccumulation5ClearEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19) %124, ptr noundef %126)
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %127 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %127, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = call ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #8
  %130 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %16, i32 0, i32 0
  store ptr %129, ptr %130, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %131 = load ptr, ptr %15, align 8, !tbaa !5
  %132 = call ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #8
  %133 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  store ptr %132, ptr %133, align 8
  br label %134

134:                                              ; preds = %149, %123
  %135 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %135, label %137, label %136

136:                                              ; preds = %134
  store i32 2, ptr %18, align 4
  br label %151

137:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %138 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  store ptr %138, ptr %19, align 8, !tbaa !5
  %139 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 6
  %140 = load ptr, ptr %19, align 8, !tbaa !5
  %141 = load ptr, ptr %13, align 8, !tbaa !5
  %142 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %141, i32 0, i32 1
  %143 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation3RunERKSt6vectorIdSaIdEEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19) %139, ptr noundef nonnull align 8 dereferenceable(24) %140, ptr noundef %142)
  br i1 %143, label %145, label %144

144:                                              ; preds = %137
  store i1 false, ptr %7, align 1
  store i32 1, ptr %18, align 4
  br label %146

145:                                              ; preds = %137
  store i32 0, ptr %18, align 4
  br label %146

146:                                              ; preds = %145, %144
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  %147 = load i32, ptr %18, align 4
  switch i32 %147, label %151 [
    i32 0, label %148
  ]

148:                                              ; preds = %146
  br label %149

149:                                              ; preds = %148
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %134

151:                                              ; preds = %146, %136
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  %152 = load i32, ptr %18, align 4
  switch i32 %152, label %660 [
    i32 2, label %153
  ]

153:                                              ; preds = %151
  %154 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 6
  %155 = load ptr, ptr %13, align 8, !tbaa !5
  %156 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %155, i32 0, i32 1
  %157 = load ptr, ptr %10, align 8, !tbaa !5
  %158 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation7GetMeanERKNS0_6BufferEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(19) %154, ptr noundef nonnull align 8 dereferenceable(128) %156, ptr noundef %157)
  br i1 %158, label %160, label %159

159:                                              ; preds = %153
  store i1 false, ptr %7, align 1
  store i32 1, ptr %18, align 4
  br label %660

160:                                              ; preds = %153
  %161 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 4
  %162 = load i32, ptr %161, align 8, !tbaa !20
  switch i32 %162, label %190 [
    i32 0, label %163
    i32 1, label %172
    i32 2, label %181
  ]

163:                                              ; preds = %160
  %164 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 6
  %165 = load ptr, ptr %13, align 8, !tbaa !5
  %166 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %165, i32 0, i32 1
  %167 = load ptr, ptr %13, align 8, !tbaa !5
  %168 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %167, i32 0, i32 2
  %169 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation17GetFullCovarianceERKNS0_6BufferEPNS_15SymmetricMatrixE(ptr noundef nonnull align 8 dereferenceable(19) %164, ptr noundef nonnull align 8 dereferenceable(128) %166, ptr noundef %168)
  br i1 %169, label %171, label %170

170:                                              ; preds = %163
  store i1 false, ptr %7, align 1
  store i32 1, ptr %18, align 4
  br label %660

171:                                              ; preds = %163
  br label %191

172:                                              ; preds = %160
  %173 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 6
  %174 = load ptr, ptr %13, align 8, !tbaa !5
  %175 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %174, i32 0, i32 1
  %176 = load ptr, ptr %13, align 8, !tbaa !5
  %177 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %176, i32 0, i32 2
  %178 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation21GetUnbiasedCovarianceERKNS0_6BufferEPNS_15SymmetricMatrixE(ptr noundef nonnull align 8 dereferenceable(19) %173, ptr noundef nonnull align 8 dereferenceable(128) %175, ptr noundef %177)
  br i1 %178, label %180, label %179

179:                                              ; preds = %172
  store i1 false, ptr %7, align 1
  store i32 1, ptr %18, align 4
  br label %660

180:                                              ; preds = %172
  br label %191

181:                                              ; preds = %160
  %182 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 6
  %183 = load ptr, ptr %13, align 8, !tbaa !5
  %184 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %183, i32 0, i32 1
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %185, i32 0, i32 2
  %187 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation14GetCorrelationERKNS0_6BufferEPNS_15SymmetricMatrixE(ptr noundef nonnull align 8 dereferenceable(19) %182, ptr noundef nonnull align 8 dereferenceable(128) %184, ptr noundef %186)
  br i1 %187, label %189, label %188

188:                                              ; preds = %181
  store i1 false, ptr %7, align 1
  store i32 1, ptr %18, align 4
  br label %660

189:                                              ; preds = %181
  br label %191

190:                                              ; preds = %160
  store i1 false, ptr %7, align 1
  store i32 1, ptr %18, align 4
  br label %660

191:                                              ; preds = %189, %180, %171
  %192 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN4sptk6Matrix12FillDiagonalEd(ptr noundef nonnull align 8 dereferenceable(64) %192, double noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store i32 0, ptr %20, align 4, !tbaa !19
  br label %193

193:                                              ; preds = %495, %191
  %194 = load i32, ptr %20, align 4, !tbaa !19
  %195 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 2
  %196 = load i32, ptr %195, align 4, !tbaa !21
  %197 = icmp slt i32 %194, %196
  br i1 %197, label %199, label %198

198:                                              ; preds = %193
  store i32 5, ptr %18, align 4
  br label %525

199:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  store double 0.000000e+00, ptr %23, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  store i32 0, ptr %24, align 4, !tbaa !19
  br label %200

200:                                              ; preds = %238, %199
  %201 = load i32, ptr %24, align 4, !tbaa !19
  %202 = load i32, ptr %14, align 4, !tbaa !19
  %203 = icmp slt i32 %201, %202
  br i1 %203, label %205, label %204

204:                                              ; preds = %200
  store i32 8, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %241

205:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %206 = load i32, ptr %24, align 4, !tbaa !19
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %25, align 4, !tbaa !19
  br label %208

208:                                              ; preds = %234, %205
  %209 = load i32, ptr %25, align 4, !tbaa !19
  %210 = load i32, ptr %14, align 4, !tbaa !19
  %211 = icmp slt i32 %209, %210
  br i1 %211, label %213, label %212

212:                                              ; preds = %208
  store i32 11, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %237

213:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #8
  %214 = load ptr, ptr %13, align 8, !tbaa !5
  %215 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %214, i32 0, i32 2
  %216 = load i32, ptr %24, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %27, ptr noundef nonnull align 8 dereferenceable(64) %215, i32 noundef %216)
  %217 = load i32, ptr %25, align 4, !tbaa !19
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %27, i32 noundef %217)
          to label %219 unwind label %229

219:                                              ; preds = %213
  %220 = load double, ptr %218, align 8, !tbaa !22
  %221 = call double @llvm.fabs.f64(double %220)
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  store double %221, ptr %26, align 8, !tbaa !22
  %222 = load double, ptr %23, align 8, !tbaa !22
  %223 = load double, ptr %26, align 8, !tbaa !22
  %224 = fcmp olt double %222, %223
  br i1 %224, label %225, label %233

225:                                              ; preds = %219
  %226 = load double, ptr %26, align 8, !tbaa !22
  store double %226, ptr %23, align 8, !tbaa !22
  %227 = load i32, ptr %24, align 4, !tbaa !19
  store i32 %227, ptr %21, align 4, !tbaa !19
  %228 = load i32, ptr %25, align 4, !tbaa !19
  store i32 %228, ptr %22, align 4, !tbaa !19
  br label %233

229:                                              ; preds = %213
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %28, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %524

233:                                              ; preds = %225, %219
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %25, align 4, !tbaa !19
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr %25, align 4, !tbaa !19
  br label %208, !llvm.loop !23

237:                                              ; preds = %212
  br label %238

238:                                              ; preds = %237
  %239 = load i32, ptr %24, align 4, !tbaa !19
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %24, align 4, !tbaa !19
  br label %200, !llvm.loop !25

241:                                              ; preds = %204
  %242 = load double, ptr %23, align 8, !tbaa !22
  %243 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 3
  %244 = load double, ptr %243, align 8, !tbaa !26
  %245 = fcmp ole double %242, %244
  br i1 %245, label %246, label %247

246:                                              ; preds = %241
  store i32 5, ptr %18, align 4
  br label %248

247:                                              ; preds = %241
  store i32 0, ptr %18, align 4
  br label %248

248:                                              ; preds = %247, %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  %249 = load i32, ptr %18, align 4
  switch i32 %249, label %492 [
    i32 0, label %250
  ]

250:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #8
  %251 = load ptr, ptr %13, align 8, !tbaa !5
  %252 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %251, i32 0, i32 2
  %253 = load i32, ptr %21, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %31, ptr noundef nonnull align 8 dereferenceable(64) %252, i32 noundef %253)
  %254 = load i32, ptr %21, align 4, !tbaa !19
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %31, i32 noundef %254)
          to label %256 unwind label %313

256:                                              ; preds = %250
  %257 = load double, ptr %255, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %31) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #8
  store double %257, ptr %30, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #8
  %258 = load ptr, ptr %13, align 8, !tbaa !5
  %259 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %258, i32 0, i32 2
  %260 = load i32, ptr %22, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %33, ptr noundef nonnull align 8 dereferenceable(64) %259, i32 noundef %260)
  %261 = load i32, ptr %22, align 4, !tbaa !19
  %262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %33, i32 noundef %261)
          to label %263 unwind label %317

263:                                              ; preds = %256
  %264 = load double, ptr %262, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %33) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #8
  store double %264, ptr %32, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #8
  %265 = load ptr, ptr %13, align 8, !tbaa !5
  %266 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %265, i32 0, i32 2
  %267 = load i32, ptr %21, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %35, ptr noundef nonnull align 8 dereferenceable(64) %266, i32 noundef %267)
  %268 = load i32, ptr %22, align 4, !tbaa !19
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %35, i32 noundef %268)
          to label %270 unwind label %321

270:                                              ; preds = %263
  %271 = load double, ptr %269, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %35) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #8
  store double %271, ptr %34, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %272 = load double, ptr %30, align 8, !tbaa !22
  %273 = load double, ptr %32, align 8, !tbaa !22
  %274 = fsub double %272, %273
  %275 = call double @llvm.fabs.f64(double %274)
  store double %275, ptr %36, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %276 = load double, ptr %34, align 8, !tbaa !22
  %277 = fmul double 2.000000e+00, %276
  store double %277, ptr %37, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %278 = load double, ptr %37, align 8, !tbaa !22
  %279 = load double, ptr %36, align 8, !tbaa !22
  %280 = load double, ptr %36, align 8, !tbaa !22
  %281 = load double, ptr %36, align 8, !tbaa !22
  %282 = load double, ptr %37, align 8, !tbaa !22
  %283 = load double, ptr %37, align 8, !tbaa !22
  %284 = fmul double %282, %283
  %285 = call double @llvm.fmuladd.f64(double %280, double %281, double %284)
  %286 = call double @sqrt(double noundef %285) #8
  %287 = fadd double %279, %286
  %288 = fdiv double %278, %287
  store double %288, ptr %38, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %289 = load double, ptr %38, align 8, !tbaa !22
  %290 = load double, ptr %38, align 8, !tbaa !22
  %291 = call double @llvm.fmuladd.f64(double %289, double %290, double 1.000000e+00)
  %292 = fdiv double 1.000000e+00, %291
  %293 = call double @sqrt(double noundef %292) #8
  store double %293, ptr %39, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %294 = load double, ptr %30, align 8, !tbaa !22
  %295 = load double, ptr %32, align 8, !tbaa !22
  %296 = fcmp olt double %294, %295
  br i1 %296, label %297, label %301

297:                                              ; preds = %270
  %298 = load double, ptr %38, align 8, !tbaa !22
  %299 = load double, ptr %39, align 8, !tbaa !22
  %300 = fmul double %298, %299
  br label %306

301:                                              ; preds = %270
  %302 = load double, ptr %38, align 8, !tbaa !22
  %303 = fneg double %302
  %304 = load double, ptr %39, align 8, !tbaa !22
  %305 = fmul double %303, %304
  br label %306

306:                                              ; preds = %301, %297
  %307 = phi double [ %300, %297 ], [ %305, %301 ]
  store double %307, ptr %40, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  store i32 0, ptr %41, align 4, !tbaa !19
  br label %308

308:                                              ; preds = %365, %306
  %309 = load i32, ptr %41, align 4, !tbaa !19
  %310 = load i32, ptr %14, align 4, !tbaa !19
  %311 = icmp slt i32 %309, %310
  br i1 %311, label %325, label %312

312:                                              ; preds = %308
  store i32 14, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %368

313:                                              ; preds = %250
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %28, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %31) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #8
  br label %523

317:                                              ; preds = %256
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %28, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %33) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #8
  br label %522

321:                                              ; preds = %263
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %28, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %35) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #8
  br label %521

325:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %326 = load ptr, ptr %12, align 8, !tbaa !5
  %327 = load i32, ptr %21, align 4, !tbaa !19
  %328 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %326, i32 noundef %327)
  %329 = load i32, ptr %41, align 4, !tbaa !19
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds double, ptr %328, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !22
  store double %332, ptr %42, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %333 = load ptr, ptr %12, align 8, !tbaa !5
  %334 = load i32, ptr %22, align 4, !tbaa !19
  %335 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %333, i32 noundef %334)
  %336 = load i32, ptr %41, align 4, !tbaa !19
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %335, i64 %337
  %339 = load double, ptr %338, align 8, !tbaa !22
  store double %339, ptr %43, align 8, !tbaa !22
  %340 = load double, ptr %42, align 8, !tbaa !22
  %341 = load double, ptr %39, align 8, !tbaa !22
  %342 = load double, ptr %43, align 8, !tbaa !22
  %343 = load double, ptr %40, align 8, !tbaa !22
  %344 = fmul double %342, %343
  %345 = fneg double %344
  %346 = call double @llvm.fmuladd.f64(double %340, double %341, double %345)
  %347 = load ptr, ptr %12, align 8, !tbaa !5
  %348 = load i32, ptr %21, align 4, !tbaa !19
  %349 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %347, i32 noundef %348)
  %350 = load i32, ptr %41, align 4, !tbaa !19
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %349, i64 %351
  store double %346, ptr %352, align 8, !tbaa !22
  %353 = load double, ptr %42, align 8, !tbaa !22
  %354 = load double, ptr %40, align 8, !tbaa !22
  %355 = load double, ptr %43, align 8, !tbaa !22
  %356 = load double, ptr %39, align 8, !tbaa !22
  %357 = fmul double %355, %356
  %358 = call double @llvm.fmuladd.f64(double %353, double %354, double %357)
  %359 = load ptr, ptr %12, align 8, !tbaa !5
  %360 = load i32, ptr %22, align 4, !tbaa !19
  %361 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %359, i32 noundef %360)
  %362 = load i32, ptr %41, align 4, !tbaa !19
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds double, ptr %361, i64 %363
  store double %358, ptr %364, align 8, !tbaa !22
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %365

365:                                              ; preds = %325
  %366 = load i32, ptr %41, align 4, !tbaa !19
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr %41, align 4, !tbaa !19
  br label %308, !llvm.loop !27

368:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 0, ptr %44, align 4, !tbaa !19
  br label %369

369:                                              ; preds = %441, %368
  %370 = load i32, ptr %44, align 4, !tbaa !19
  %371 = load i32, ptr %14, align 4, !tbaa !19
  %372 = icmp slt i32 %370, %371
  br i1 %372, label %374, label %373

373:                                              ; preds = %369
  store i32 17, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %444

374:                                              ; preds = %369
  %375 = load i32, ptr %21, align 4, !tbaa !19
  %376 = load i32, ptr %44, align 4, !tbaa !19
  %377 = icmp ne i32 %375, %376
  br i1 %377, label %378, label %440

378:                                              ; preds = %374
  %379 = load i32, ptr %22, align 4, !tbaa !19
  %380 = load i32, ptr %44, align 4, !tbaa !19
  %381 = icmp ne i32 %379, %380
  br i1 %381, label %382, label %440

382:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #8
  %383 = load ptr, ptr %13, align 8, !tbaa !5
  %384 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %383, i32 0, i32 2
  %385 = load i32, ptr %21, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %46, ptr noundef nonnull align 8 dereferenceable(64) %384, i32 noundef %385)
  %386 = load i32, ptr %44, align 4, !tbaa !19
  %387 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %46, i32 noundef %386)
          to label %388 unwind label %422

388:                                              ; preds = %382
  %389 = load double, ptr %387, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %46) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #8
  store double %389, ptr %45, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #8
  %390 = load ptr, ptr %13, align 8, !tbaa !5
  %391 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %390, i32 0, i32 2
  %392 = load i32, ptr %22, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %48, ptr noundef nonnull align 8 dereferenceable(64) %391, i32 noundef %392)
  %393 = load i32, ptr %44, align 4, !tbaa !19
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %48, i32 noundef %393)
          to label %395 unwind label %426

395:                                              ; preds = %388
  %396 = load double, ptr %394, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %48) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  store double %396, ptr %47, align 8, !tbaa !22
  %397 = load double, ptr %45, align 8, !tbaa !22
  %398 = load double, ptr %39, align 8, !tbaa !22
  %399 = load double, ptr %47, align 8, !tbaa !22
  %400 = load double, ptr %40, align 8, !tbaa !22
  %401 = fmul double %399, %400
  %402 = fneg double %401
  %403 = call double @llvm.fmuladd.f64(double %397, double %398, double %402)
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #8
  %404 = load ptr, ptr %13, align 8, !tbaa !5
  %405 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %404, i32 0, i32 2
  %406 = load i32, ptr %21, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %49, ptr noundef nonnull align 8 dereferenceable(64) %405, i32 noundef %406)
  %407 = load i32, ptr %44, align 4, !tbaa !19
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %49, i32 noundef %407)
          to label %409 unwind label %430

409:                                              ; preds = %395
  store double %403, ptr %408, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  %410 = load double, ptr %45, align 8, !tbaa !22
  %411 = load double, ptr %40, align 8, !tbaa !22
  %412 = load double, ptr %47, align 8, !tbaa !22
  %413 = load double, ptr %39, align 8, !tbaa !22
  %414 = fmul double %412, %413
  %415 = call double @llvm.fmuladd.f64(double %410, double %411, double %414)
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #8
  %416 = load ptr, ptr %13, align 8, !tbaa !5
  %417 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %416, i32 0, i32 2
  %418 = load i32, ptr %22, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %50, ptr noundef nonnull align 8 dereferenceable(64) %417, i32 noundef %418)
  %419 = load i32, ptr %44, align 4, !tbaa !19
  %420 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %50, i32 noundef %419)
          to label %421 unwind label %434

421:                                              ; preds = %409
  store double %415, ptr %420, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %50) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %440

422:                                              ; preds = %382
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %28, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %46) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #8
  br label %439

426:                                              ; preds = %388
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %28, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %48) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  br label %438

430:                                              ; preds = %395
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %28, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  br label %438

434:                                              ; preds = %409
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %28, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %50) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #8
  br label %438

438:                                              ; preds = %434, %430, %426
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %439

439:                                              ; preds = %438, %422
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %520

440:                                              ; preds = %421, %378, %374
  br label %441

441:                                              ; preds = %440
  %442 = load i32, ptr %44, align 4, !tbaa !19
  %443 = add nsw i32 %442, 1
  store i32 %443, ptr %44, align 4, !tbaa !19
  br label %369, !llvm.loop !28

444:                                              ; preds = %373
  %445 = load double, ptr %30, align 8, !tbaa !22
  %446 = load double, ptr %39, align 8, !tbaa !22
  %447 = fmul double %445, %446
  %448 = load double, ptr %39, align 8, !tbaa !22
  %449 = load double, ptr %32, align 8, !tbaa !22
  %450 = load double, ptr %40, align 8, !tbaa !22
  %451 = fmul double %449, %450
  %452 = load double, ptr %40, align 8, !tbaa !22
  %453 = fmul double %451, %452
  %454 = call double @llvm.fmuladd.f64(double %447, double %448, double %453)
  %455 = load double, ptr %34, align 8, !tbaa !22
  %456 = fmul double 2.000000e+00, %455
  %457 = load double, ptr %39, align 8, !tbaa !22
  %458 = fmul double %456, %457
  %459 = load double, ptr %40, align 8, !tbaa !22
  %460 = fneg double %458
  %461 = call double @llvm.fmuladd.f64(double %460, double %459, double %454)
  call void @llvm.lifetime.start.p0(i64 24, ptr %51) #8
  %462 = load ptr, ptr %13, align 8, !tbaa !5
  %463 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %462, i32 0, i32 2
  %464 = load i32, ptr %21, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %51, ptr noundef nonnull align 8 dereferenceable(64) %463, i32 noundef %464)
  %465 = load i32, ptr %21, align 4, !tbaa !19
  %466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %51, i32 noundef %465)
          to label %467 unwind label %498

467:                                              ; preds = %444
  store double %461, ptr %466, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %51) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  %468 = load double, ptr %30, align 8, !tbaa !22
  %469 = load double, ptr %32, align 8, !tbaa !22
  %470 = fadd double %468, %469
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #8
  %471 = load ptr, ptr %13, align 8, !tbaa !5
  %472 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %471, i32 0, i32 2
  %473 = load i32, ptr %21, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %52, ptr noundef nonnull align 8 dereferenceable(64) %472, i32 noundef %473)
  %474 = load i32, ptr %21, align 4, !tbaa !19
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %52, i32 noundef %474)
          to label %476 unwind label %502

476:                                              ; preds = %467
  %477 = load double, ptr %475, align 8, !tbaa !22
  %478 = fsub double %470, %477
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #8
  %479 = load ptr, ptr %13, align 8, !tbaa !5
  %480 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %479, i32 0, i32 2
  %481 = load i32, ptr %22, align 4, !tbaa !19
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %53, ptr noundef nonnull align 8 dereferenceable(64) %480, i32 noundef %481)
          to label %482 unwind label %506

482:                                              ; preds = %476
  %483 = load i32, ptr %22, align 4, !tbaa !19
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %53, i32 noundef %483)
          to label %485 unwind label %510

485:                                              ; preds = %482
  store double %478, ptr %484, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %53) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #8
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %52) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #8
  %486 = load ptr, ptr %13, align 8, !tbaa !5
  %487 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %486, i32 0, i32 2
  %488 = load i32, ptr %21, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %54, ptr noundef nonnull align 8 dereferenceable(64) %487, i32 noundef %488)
  %489 = load i32, ptr %22, align 4, !tbaa !19
  %490 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %54, i32 noundef %489)
          to label %491 unwind label %516

491:                                              ; preds = %485
  store double 0.000000e+00, ptr %490, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %54) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  store i32 0, ptr %18, align 4
  br label %492

492:                                              ; preds = %491, %248
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  %493 = load i32, ptr %18, align 4
  switch i32 %493, label %525 [
    i32 0, label %494
  ]

494:                                              ; preds = %492
  br label %495

495:                                              ; preds = %494
  %496 = load i32, ptr %20, align 4, !tbaa !19
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr %20, align 4, !tbaa !19
  br label %193, !llvm.loop !29

498:                                              ; preds = %444
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %28, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %51) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  br label %520

502:                                              ; preds = %467
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %28, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %29, align 4
  br label %515

506:                                              ; preds = %476
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %28, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %29, align 4
  br label %514

510:                                              ; preds = %482
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %28, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %53) #8
  br label %514

514:                                              ; preds = %510, %506
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #8
  br label %515

515:                                              ; preds = %514, %502
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %52) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #8
  br label %520

516:                                              ; preds = %485
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %28, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %54) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #8
  br label %520

520:                                              ; preds = %516, %515, %498, %439
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %521

521:                                              ; preds = %520, %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %522

522:                                              ; preds = %521, %317
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %523

523:                                              ; preds = %522, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %524

524:                                              ; preds = %523, %229
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %661

525:                                              ; preds = %492, %198
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %526

526:                                              ; preds = %525
  %527 = load ptr, ptr %13, align 8, !tbaa !5
  %528 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %527, i32 0, i32 3
  %529 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %528) #8
  %530 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.15", ptr %55, i32 0, i32 0
  store ptr %529, ptr %530, align 8
  %531 = load ptr, ptr %13, align 8, !tbaa !5
  %532 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %531, i32 0, i32 3
  %533 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #8
  %534 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.15", ptr %56, i32 0, i32 0
  store ptr %533, ptr %534, align 8
  %535 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.15", ptr %55, i32 0, i32 0
  %536 = load ptr, ptr %535, align 8
  %537 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.15", ptr %56, i32 0, i32 0
  %538 = load ptr, ptr %537, align 8
  call void @_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_(ptr %536, ptr %538, i32 noundef 0)
  %539 = load ptr, ptr %13, align 8, !tbaa !5
  %540 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %539, i32 0, i32 3
  %541 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %540) #8
  %542 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.15", ptr %57, i32 0, i32 0
  store ptr %541, ptr %542, align 8
  %543 = load ptr, ptr %13, align 8, !tbaa !5
  %544 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %543, i32 0, i32 3
  %545 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %544) #8
  %546 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.15", ptr %58, i32 0, i32 0
  store ptr %545, ptr %546, align 8
  %547 = getelementptr inbounds %class.anon, ptr %59, i32 0, i32 0
  store ptr %13, ptr %547, align 8, !tbaa !5
  %548 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.15", ptr %57, i32 0, i32 0
  %549 = load ptr, ptr %548, align 8
  %550 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.15", ptr %58, i32 0, i32 0
  %551 = load ptr, ptr %550, align 8
  %552 = getelementptr inbounds %class.anon, ptr %59, i32 0, i32 0
  %553 = load ptr, ptr %552, align 8
  call void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZNK4sptk26PrincipalComponentAnalysis3RunERKS3_IS3_IdSaIdEESaISA_EEPSA_SF_PNS7_6MatrixEPNS8_6BufferEE3$_0EvT_SL_T0_"(ptr %549, ptr %551, ptr %553)
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #8
  store i32 0, ptr %60, align 4, !tbaa !19
  br label %554

554:                                              ; preds = %577, %526
  %555 = load i32, ptr %60, align 4, !tbaa !19
  %556 = load i32, ptr %14, align 4, !tbaa !19
  %557 = icmp slt i32 %555, %556
  br i1 %557, label %559, label %558

558:                                              ; preds = %554
  store i32 20, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #8
  br label %584

559:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #8
  %560 = load ptr, ptr %13, align 8, !tbaa !5
  %561 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %560, i32 0, i32 3
  %562 = load i32, ptr %60, align 4, !tbaa !19
  %563 = sext i32 %562 to i64
  %564 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %561, i64 noundef %563) #8
  %565 = load i32, ptr %564, align 4, !tbaa !19
  store i32 %565, ptr %61, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 24, ptr %62) #8
  %566 = load ptr, ptr %13, align 8, !tbaa !5
  %567 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %566, i32 0, i32 2
  %568 = load i32, ptr %61, align 4, !tbaa !19
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %62, ptr noundef nonnull align 8 dereferenceable(64) %567, i32 noundef %568)
  %569 = load i32, ptr %61, align 4, !tbaa !19
  %570 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %62, i32 noundef %569)
          to label %571 unwind label %580

571:                                              ; preds = %559
  %572 = load double, ptr %570, align 8, !tbaa !22
  %573 = load ptr, ptr %11, align 8, !tbaa !5
  %574 = load i32, ptr %60, align 4, !tbaa !19
  %575 = sext i32 %574 to i64
  %576 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %573, i64 noundef %575) #8
  store double %572, ptr %576, align 8, !tbaa !22
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %62) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #8
  br label %577

577:                                              ; preds = %571
  %578 = load i32, ptr %60, align 4, !tbaa !19
  %579 = add nsw i32 %578, 1
  store i32 %579, ptr %60, align 4, !tbaa !19
  br label %554, !llvm.loop !30

580:                                              ; preds = %559
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %28, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %29, align 4
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %62) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #8
  br label %661

584:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #8
  store i32 0, ptr %63, align 4, !tbaa !19
  br label %585

585:                                              ; preds = %656, %584
  %586 = load i32, ptr %63, align 4, !tbaa !19
  %587 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis", ptr %67, i32 0, i32 1
  %588 = load i32, ptr %587, align 8, !tbaa !18
  %589 = icmp slt i32 %586, %588
  br i1 %589, label %591, label %590

590:                                              ; preds = %585
  store i32 23, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #8
  br label %659

591:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #8
  %592 = load i32, ptr %63, align 4, !tbaa !19
  store i32 %592, ptr %64, align 4, !tbaa !19
  br label %593

593:                                              ; preds = %619, %591
  %594 = load i32, ptr %64, align 4, !tbaa !19
  %595 = load i32, ptr %14, align 4, !tbaa !19
  %596 = icmp slt i32 %594, %595
  br i1 %596, label %597, label %622

597:                                              ; preds = %593
  %598 = load ptr, ptr %13, align 8, !tbaa !5
  %599 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %598, i32 0, i32 3
  %600 = load i32, ptr %64, align 4, !tbaa !19
  %601 = sext i32 %600 to i64
  %602 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %599, i64 noundef %601) #8
  %603 = load i32, ptr %602, align 4, !tbaa !19
  %604 = load i32, ptr %63, align 4, !tbaa !19
  %605 = icmp eq i32 %603, %604
  br i1 %605, label %606, label %618

606:                                              ; preds = %597
  %607 = load ptr, ptr %13, align 8, !tbaa !5
  %608 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %607, i32 0, i32 3
  %609 = load i32, ptr %63, align 4, !tbaa !19
  %610 = sext i32 %609 to i64
  %611 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %608, i64 noundef %610) #8
  %612 = load i32, ptr %611, align 4, !tbaa !19
  %613 = load ptr, ptr %13, align 8, !tbaa !5
  %614 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %613, i32 0, i32 3
  %615 = load i32, ptr %64, align 4, !tbaa !19
  %616 = sext i32 %615 to i64
  %617 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %614, i64 noundef %616) #8
  store i32 %612, ptr %617, align 4, !tbaa !19
  br label %622

618:                                              ; preds = %597
  br label %619

619:                                              ; preds = %618
  %620 = load i32, ptr %64, align 4, !tbaa !19
  %621 = add nsw i32 %620, 1
  store i32 %621, ptr %64, align 4, !tbaa !19
  br label %593, !llvm.loop !31

622:                                              ; preds = %606, %593
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #8
  %623 = load ptr, ptr %13, align 8, !tbaa !5
  %624 = getelementptr inbounds %"class.sptk::PrincipalComponentAnalysis::Buffer", ptr %623, i32 0, i32 3
  %625 = load i32, ptr %64, align 4, !tbaa !19
  %626 = sext i32 %625 to i64
  %627 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %624, i64 noundef %626) #8
  %628 = load i32, ptr %627, align 4, !tbaa !19
  store i32 %628, ptr %65, align 4, !tbaa !19
  %629 = load i32, ptr %65, align 4, !tbaa !19
  %630 = load i32, ptr %63, align 4, !tbaa !19
  %631 = icmp ne i32 %629, %630
  br i1 %631, label %632, label %655

632:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #8
  store i32 0, ptr %66, align 4, !tbaa !19
  br label %633

633:                                              ; preds = %651, %632
  %634 = load i32, ptr %66, align 4, !tbaa !19
  %635 = load i32, ptr %14, align 4, !tbaa !19
  %636 = icmp slt i32 %634, %635
  br i1 %636, label %638, label %637

637:                                              ; preds = %633
  store i32 29, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #8
  br label %654

638:                                              ; preds = %633
  %639 = load ptr, ptr %12, align 8, !tbaa !5
  %640 = load i32, ptr %65, align 4, !tbaa !19
  %641 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %639, i32 noundef %640)
  %642 = load i32, ptr %66, align 4, !tbaa !19
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %641, i64 %643
  %645 = load ptr, ptr %12, align 8, !tbaa !5
  %646 = load i32, ptr %63, align 4, !tbaa !19
  %647 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %645, i32 noundef %646)
  %648 = load i32, ptr %66, align 4, !tbaa !19
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %647, i64 %649
  call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %644, ptr noundef nonnull align 8 dereferenceable(8) %650) #8
  br label %651

651:                                              ; preds = %638
  %652 = load i32, ptr %66, align 4, !tbaa !19
  %653 = add nsw i32 %652, 1
  store i32 %653, ptr %66, align 4, !tbaa !19
  br label %633, !llvm.loop !32

654:                                              ; preds = %637
  br label %655

655:                                              ; preds = %654, %622
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #8
  br label %656

656:                                              ; preds = %655
  %657 = load i32, ptr %63, align 4, !tbaa !19
  %658 = add nsw i32 %657, 1
  store i32 %658, ptr %63, align 4, !tbaa !19
  br label %585, !llvm.loop !33

659:                                              ; preds = %590
  store i1 true, ptr %7, align 1
  store i32 1, ptr %18, align 4
  br label %660

660:                                              ; preds = %659, %190, %188, %179, %170, %159, %151
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %662

661:                                              ; preds = %580, %524
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %664

662:                                              ; preds = %660, %83
  %663 = load i1, ptr %7, align 1
  ret i1 %663

664:                                              ; preds = %661
  %665 = load ptr, ptr %28, align 8
  %666 = load i32, ptr %29, align 4
  %667 = insertvalue { ptr, i32 } poison, ptr %665, 0
  %668 = insertvalue { ptr, i32 } %667, i32 %666, 1
  resume { ptr, i32 } %668
}

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

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

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

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

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

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

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

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

declare void @_ZNK4sptk22StatisticsAccumulation5ClearEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19), ptr noundef) #3

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

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

; 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)) #2 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: 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 noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) #2 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZNK4sptk26PrincipalComponentAnalysis3RunERKS3_IS3_IdSaIdEESaISA_EEPSA_SF_PNS7_6MatrixEPNS8_6BufferEE3$_0EvT_SL_T0_"(ptr, ptr, ptr) #7

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !15, i64 56}
!10 = !{!"_ZTSN4sptk26PrincipalComponentAnalysisE", !11, i64 8, !11, i64 12, !12, i64 16, !13, i64 24, !14, i64 32, !15, i64 56}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"_ZTSN4sptk26PrincipalComponentAnalysis14CovarianceTypeE", !7, i64 0}
!14 = !{!"_ZTSN4sptk22StatisticsAccumulationE", !11, i64 8, !11, i64 12, !15, i64 16, !15, i64 17, !15, i64 18}
!15 = !{!"bool", !7, i64 0}
!16 = !{i8 0, i8 2}
!17 = !{}
!18 = !{!10, !11, i64 8}
!19 = !{!11, !11, i64 0}
!20 = !{!10, !13, i64 24}
!21 = !{!10, !11, i64 12}
!22 = !{!12, !12, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = distinct !{!25, !24}
!26 = !{!10, !12, i64 16}
!27 = distinct !{!27, !24}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24}
!30 = distinct !{!30, !24}
!31 = distinct !{!31, !24}
!32 = distinct !{!32, !24}
!33 = distinct !{!33, !24}


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

%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.sptk::SymmetricMatrix::Row" = type <{ ptr, ptr, i32, [4 x i8] }>

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK4sptk26PrincipalComponentAnalysis3RunERKSt6vectorIS1_IdSaIdEESaIS3_EEPS3_S8_PNS_6MatrixEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(57) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %11 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %12 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %13 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %14 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %15 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %16 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %17 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  %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
  %22 = alloca %"class.sptk::SymmetricMatrix::Row", align 8
  store ptr %5, ptr %7, align 8, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %0, i64 56
  %24 = load i8, ptr %23, align 8, !tbaa !9, !range !16, !noundef !17
  %25 = trunc nuw i8 %24 to i1
  %26 = insertelement <4 x ptr> poison, ptr %2, i64 0
  %27 = insertelement <4 x ptr> %26, ptr %3, i64 1
  %28 = insertelement <4 x ptr> %27, ptr %4, i64 2
  %29 = insertelement <4 x ptr> %28, ptr %5, i64 3
  %30 = icmp eq <4 x ptr> %29, zeroinitializer
  %31 = bitcast <4 x i1> %30 to i4
  %32 = icmp eq i4 %31, 0
  %op.rdx.not = and i1 %32, %25
  br i1 %op.rdx.not, label %33, label %.loopexit259

33:                                               ; preds = %6
  %34 = getelementptr inbounds i8, ptr %0, i64 8
  %35 = load i32, ptr %34, align 8, !tbaa !18
  %36 = add i32 %35, 1
  %37 = tail call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  %38 = sext i32 %36 to i64
  %.not226 = icmp eq i64 %37, %38
  br i1 %.not226, label %40, label %39

39:                                               ; preds = %33
  tail call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %38)
  br label %40

40:                                               ; preds = %39, %33
  %41 = tail call noundef i32 @_ZNK4sptk6Matrix9GetNumRowEv(ptr noundef nonnull align 8 dereferenceable(64) %4)
  %.not227 = icmp eq i32 %41, %36
  br i1 %.not227, label %42, label %44

42:                                               ; preds = %40
  %43 = tail call noundef i32 @_ZNK4sptk6Matrix12GetNumColumnEv(ptr noundef nonnull align 8 dereferenceable(64) %4)
  %.not228 = icmp eq i32 %43, %36
  br i1 %.not228, label %45, label %44

44:                                               ; preds = %42, %40
  tail call void @_ZN4sptk6Matrix6ResizeEii(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef %36, i32 noundef %36)
  br label %45

45:                                               ; preds = %44, %42
  %46 = getelementptr inbounds i8, ptr %5, i64 200
  %47 = tail call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  %.not229 = icmp eq i64 %47, %38
  br i1 %.not229, label %49, label %48

48:                                               ; preds = %45
  tail call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %38)
  br label %49

49:                                               ; preds = %48, %45
  %50 = getelementptr inbounds i8, ptr %0, i64 32
  %51 = getelementptr inbounds i8, ptr %5, i64 8
  tail call void @_ZNK4sptk22StatisticsAccumulation5ClearEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19) %50, ptr noundef nonnull %51)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %52 = tail call ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %52, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %53 = tail call ptr @_ZNKSt6vectorIS_IdSaIdEESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %53, ptr %9, align 8
  %54 = 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) #8
  br i1 %54, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %49, %57
  %55 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %56 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation3RunERKSt6vectorIdSaIdEEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19) %50, ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull %51)
  br i1 %56, label %57, label %60

57:                                               ; preds = %.lr.ph
  %58 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES1_IS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %59 = 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) #8
  br i1 %59, label %.lr.ph, label %._crit_edge

60:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %.loopexit259

._crit_edge:                                      ; preds = %57, %49
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  %61 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation7GetMeanERKNS0_6BufferEPSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(19) %50, ptr noundef nonnull align 8 dereferenceable(128) %51, ptr noundef %2)
  br i1 %61, label %62, label %.loopexit259

62:                                               ; preds = %._crit_edge
  %63 = getelementptr inbounds i8, ptr %0, i64 24
  %64 = load i32, ptr %63, align 8, !tbaa !19
  switch i32 %64, label %.loopexit259 [
    i32 0, label %65
    i32 1, label %68
    i32 2, label %71
  ]

65:                                               ; preds = %62
  %66 = getelementptr inbounds i8, ptr %5, i64 136
  %67 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation17GetFullCovarianceERKNS0_6BufferEPNS_15SymmetricMatrixE(ptr noundef nonnull align 8 dereferenceable(19) %50, ptr noundef nonnull align 8 dereferenceable(128) %51, ptr noundef nonnull %66)
  br i1 %67, label %74, label %.loopexit259

68:                                               ; preds = %62
  %69 = getelementptr inbounds i8, ptr %5, i64 136
  %70 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation21GetUnbiasedCovarianceERKNS0_6BufferEPNS_15SymmetricMatrixE(ptr noundef nonnull align 8 dereferenceable(19) %50, ptr noundef nonnull align 8 dereferenceable(128) %51, ptr noundef nonnull %69)
  br i1 %70, label %74, label %.loopexit259

71:                                               ; preds = %62
  %72 = getelementptr inbounds i8, ptr %5, i64 136
  %73 = call noundef zeroext i1 @_ZNK4sptk22StatisticsAccumulation14GetCorrelationERKNS0_6BufferEPNS_15SymmetricMatrixE(ptr noundef nonnull align 8 dereferenceable(19) %50, ptr noundef nonnull align 8 dereferenceable(128) %51, ptr noundef nonnull %72)
  br i1 %73, label %74, label %.loopexit259

74:                                               ; preds = %71, %68, %65
  call void @_ZN4sptk6Matrix12FillDiagonalEd(ptr noundef nonnull align 8 dereferenceable(64) %4, double noundef 1.000000e+00)
  %75 = getelementptr inbounds i8, ptr %0, i64 12
  %76 = load i32, ptr %75, align 4, !tbaa !20
  %77 = icmp sgt i32 %76, 0
  br i1 %77, label %.preheader262.lr.ph, label %._crit_edge299

.preheader262.lr.ph:                              ; preds = %74
  %.not230280 = icmp slt i32 %35, 0
  %78 = getelementptr inbounds i8, ptr %0, i64 16
  %wide.trip.count = zext i32 %36 to i64
  br label %.preheader262

.preheader262:                                    ; preds = %.preheader262.lr.ph, %.thread
  %79 = phi ptr [ %5, %.preheader262.lr.ph ], [ %180, %.thread ]
  %.0186298 = phi i32 [ 0, %.preheader262.lr.ph ], [ %191, %.thread ]
  br i1 %.not230280, label %._crit_edge286, label %.lr.ph285.preheader

.lr.ph285.preheader:                              ; preds = %.preheader262
  %80 = getelementptr inbounds i8, ptr %79, i64 136
  br label %.lr.ph285

.loopexit260:                                     ; preds = %85, %.lr.ph285
  %.1194.lcssa = phi double [ %.0193282, %.lr.ph285 ], [ %.2195, %85 ]
  %.1191.lcssa = phi i32 [ %.0190283, %.lr.ph285 ], [ %.2192, %85 ]
  %.1188.lcssa = phi i32 [ %.0187284, %.lr.ph285 ], [ %.2189, %85 ]
  %exitcond318.not = icmp eq i32 %.0196281, %35
  br i1 %exitcond318.not, label %._crit_edge286, label %.lr.ph285, !llvm.loop !21

._crit_edge286:                                   ; preds = %.loopexit260, %.preheader262
  %.0193.lcssa = phi double [ 0.000000e+00, %.preheader262 ], [ %.1194.lcssa, %.loopexit260 ]
  %.0190.lcssa = phi i32 [ 0, %.preheader262 ], [ %.1191.lcssa, %.loopexit260 ]
  %.0187.lcssa = phi i32 [ 0, %.preheader262 ], [ %.1188.lcssa, %.loopexit260 ]
  %81 = load double, ptr %78, align 8, !tbaa !23
  %82 = fcmp ugt double %.0193.lcssa, %81
  br i1 %82, label %92, label %._crit_edge299

.lr.ph285:                                        ; preds = %.lr.ph285.preheader, %.loopexit260
  %.0187284 = phi i32 [ %.1188.lcssa, %.loopexit260 ], [ 0, %.lr.ph285.preheader ]
  %.0190283 = phi i32 [ %.1191.lcssa, %.loopexit260 ], [ 0, %.lr.ph285.preheader ]
  %.0193282 = phi double [ %.1194.lcssa, %.loopexit260 ], [ 0.000000e+00, %.lr.ph285.preheader ]
  %.0196281 = phi i32 [ %83, %.loopexit260 ], [ 0, %.lr.ph285.preheader ]
  %83 = add nuw i32 %.0196281, 1
  %.not248271.not = icmp slt i32 %.0196281, %35
  br i1 %.not248271.not, label %.lr.ph277, label %.loopexit260

.lr.ph277:                                        ; preds = %.lr.ph285, %85
  %.1188275 = phi i32 [ %.2189, %85 ], [ %.0187284, %.lr.ph285 ]
  %.1191274 = phi i32 [ %.2192, %85 ], [ %.0190283, %.lr.ph285 ]
  %.1194273 = phi double [ %.2195, %85 ], [ %.0193282, %.lr.ph285 ]
  %.0197272 = phi i32 [ %89, %85 ], [ %83, %.lr.ph285 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #8
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %10, ptr noundef nonnull align 8 dereferenceable(64) %80, i32 noundef %.0196281)
  %84 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %10, i32 noundef %.0197272)
          to label %85 unwind label %90

85:                                               ; preds = %.lr.ph277
  %86 = load double, ptr %84, align 8, !tbaa !24
  %87 = call double @llvm.fabs.f64(double %86)
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  %88 = fcmp olt double %.1194273, %87
  %.2195 = select i1 %88, double %87, double %.1194273
  %.2192 = select i1 %88, i32 %.0197272, i32 %.1191274
  %.2189 = select i1 %88, i32 %.0196281, i32 %.1188275
  %89 = add i32 %.0197272, 1
  %exitcond.not = icmp eq i32 %.0197272, %35
  br i1 %exitcond.not, label %.loopexit260, label %.lr.ph277, !llvm.loop !25

90:                                               ; preds = %.lr.ph277
  %91 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  br label %259

92:                                               ; preds = %._crit_edge286
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #8
  %93 = getelementptr inbounds i8, ptr %79, i64 136
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %11, ptr noundef nonnull align 8 dereferenceable(64) %93, i32 noundef %.0187.lcssa)
  %94 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %11, i32 noundef %.0187.lcssa)
          to label %95 unwind label %117

95:                                               ; preds = %92
  %96 = load double, ptr %94, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #8
  %97 = load ptr, ptr %7, align 8, !tbaa !5
  %98 = getelementptr inbounds i8, ptr %97, i64 136
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %12, ptr noundef nonnull align 8 dereferenceable(64) %98, i32 noundef %.0190.lcssa)
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %12, i32 noundef %.0190.lcssa)
          to label %100 unwind label %119

100:                                              ; preds = %95
  %101 = load double, ptr %99, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #8
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %13, ptr noundef nonnull align 8 dereferenceable(64) %98, i32 noundef %.0187.lcssa)
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %13, i32 noundef %.0190.lcssa)
          to label %103 unwind label %121

103:                                              ; preds = %100
  %104 = load double, ptr %102, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  %105 = fsub double %96, %101
  %106 = call double @llvm.fabs.f64(double %105)
  %107 = fmul double %104, 2.000000e+00
  %108 = fmul double %107, %107
  %109 = call double @llvm.fmuladd.f64(double %105, double %105, double %108)
  %sqrt255 = call double @llvm.sqrt.f64(double %109)
  %110 = fadd double %106, %sqrt255
  %111 = fdiv double %107, %110
  %112 = call double @llvm.fmuladd.f64(double %111, double %111, double 1.000000e+00)
  %113 = fdiv double 1.000000e+00, %112
  %sqrt = call double @llvm.sqrt.f64(double %113)
  %114 = fcmp olt double %96, %101
  %115 = fneg double %111
  %.v = select i1 %114, double %111, double %115
  %116 = fmul double %.v, %sqrt
  br i1 %.not230280, label %._crit_edge297, label %.lr.ph293

.preheader261:                                    ; preds = %.lr.ph293
  br i1 %.not230280, label %._crit_edge297, label %.lr.ph296

117:                                              ; preds = %92
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #8
  br label %259

119:                                              ; preds = %95
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #8
  br label %259

121:                                              ; preds = %100
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  br label %259

.lr.ph293:                                        ; preds = %103, %.lr.ph293
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph293 ], [ 0, %103 ]
  %123 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef %.0187.lcssa)
  %124 = getelementptr inbounds double, ptr %123, i64 %indvars.iv
  %125 = load double, ptr %124, align 8, !tbaa !24
  %126 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef %.0190.lcssa)
  %127 = getelementptr inbounds double, ptr %126, i64 %indvars.iv
  %128 = load double, ptr %127, align 8, !tbaa !24
  %129 = fneg double %128
  %130 = fmul double %116, %129
  %131 = call double @llvm.fmuladd.f64(double %125, double %sqrt, double %130)
  %132 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef %.0187.lcssa)
  %133 = getelementptr inbounds double, ptr %132, i64 %indvars.iv
  store double %131, ptr %133, align 8, !tbaa !24
  %134 = fmul double %sqrt, %128
  %135 = call double @llvm.fmuladd.f64(double %125, double %116, double %134)
  %136 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef %.0190.lcssa)
  %137 = getelementptr inbounds double, ptr %136, i64 %indvars.iv
  store double %135, ptr %137, align 8, !tbaa !24
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond320.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond320.not, label %.preheader261, label %.lr.ph293, !llvm.loop !26

._crit_edge297:                                   ; preds = %169, %103, %.preheader261
  %138 = phi ptr [ %97, %.preheader261 ], [ %97, %103 ], [ %170, %169 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #8
  %139 = getelementptr inbounds i8, ptr %138, i64 136
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %18, ptr noundef nonnull align 8 dereferenceable(64) %139, i32 noundef %.0187.lcssa)
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %18, i32 noundef %.0187.lcssa)
          to label %172 unwind label %194

.lr.ph296:                                        ; preds = %.preheader261, %169
  %141 = phi ptr [ %170, %169 ], [ %97, %.preheader261 ]
  %.0203295 = phi i32 [ %171, %169 ], [ 0, %.preheader261 ]
  %.not239 = icmp eq i32 %.0187.lcssa, %.0203295
  %.not240 = icmp eq i32 %.0190.lcssa, %.0203295
  %or.cond252 = select i1 %.not239, i1 true, i1 %.not240
  br i1 %or.cond252, label %169, label %142

142:                                              ; preds = %.lr.ph296
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #8
  %143 = getelementptr inbounds i8, ptr %141, i64 136
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %14, ptr noundef nonnull align 8 dereferenceable(64) %143, i32 noundef %.0187.lcssa)
  %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %14, i32 noundef %.0203295)
          to label %145 unwind label %161

145:                                              ; preds = %142
  %146 = load double, ptr %144, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #8
  %147 = load ptr, ptr %7, align 8, !tbaa !5
  %148 = getelementptr inbounds i8, ptr %147, i64 136
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %15, ptr noundef nonnull align 8 dereferenceable(64) %148, i32 noundef %.0190.lcssa)
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %15, i32 noundef %.0203295)
          to label %150 unwind label %163

150:                                              ; preds = %145
  %151 = load double, ptr %149, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #8
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %16, ptr noundef nonnull align 8 dereferenceable(64) %148, i32 noundef %.0187.lcssa)
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %16, i32 noundef %.0203295)
          to label %153 unwind label %165

153:                                              ; preds = %150
  %154 = fneg double %151
  %155 = fmul double %116, %154
  %156 = call double @llvm.fmuladd.f64(double %146, double %sqrt, double %155)
  store double %156, ptr %152, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #8
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %17, ptr noundef nonnull align 8 dereferenceable(64) %148, i32 noundef %.0190.lcssa)
  %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %17, i32 noundef %.0203295)
          to label %158 unwind label %167

158:                                              ; preds = %153
  %159 = fmul double %sqrt, %151
  %160 = call double @llvm.fmuladd.f64(double %146, double %116, double %159)
  store double %160, ptr %157, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #8
  br label %169

161:                                              ; preds = %142
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  br label %259

163:                                              ; preds = %145
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  br label %259

165:                                              ; preds = %150
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  br label %259

167:                                              ; preds = %153
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #8
  br label %259

169:                                              ; preds = %.lr.ph296, %158
  %170 = phi ptr [ %141, %.lr.ph296 ], [ %147, %158 ]
  %171 = add nuw i32 %.0203295, 1
  %exitcond321.not = icmp eq i32 %.0203295, %35
  br i1 %exitcond321.not, label %._crit_edge297, label %.lr.ph296, !llvm.loop !27

172:                                              ; preds = %._crit_edge297
  %173 = fneg double %107
  %174 = fmul double %sqrt, %173
  %175 = fmul double %96, %sqrt
  %176 = fmul double %101, %116
  %177 = fmul double %116, %176
  %178 = call double @llvm.fmuladd.f64(double %175, double %sqrt, double %177)
  %179 = call double @llvm.fmuladd.f64(double %174, double %116, double %178)
  store double %179, ptr %140, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #8
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 136
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %19, ptr noundef nonnull align 8 dereferenceable(64) %181, i32 noundef %.0187.lcssa)
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %19, i32 noundef %.0187.lcssa)
          to label %183 unwind label %196

183:                                              ; preds = %172
  %184 = fadd double %96, %101
  %185 = load double, ptr %182, align 8, !tbaa !24
  %186 = fsub double %184, %185
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #8
  invoke void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %20, ptr noundef nonnull align 8 dereferenceable(64) %181, i32 noundef %.0190.lcssa)
          to label %187 unwind label %198

187:                                              ; preds = %183
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %20, i32 noundef %.0190.lcssa)
          to label %189 unwind label %200

189:                                              ; preds = %187
  store double %186, ptr %188, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %20) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #8
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %21, ptr noundef nonnull align 8 dereferenceable(64) %181, i32 noundef %.0187.lcssa)
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %.0190.lcssa)
          to label %.thread unwind label %204

.thread:                                          ; preds = %189
  store double 0.000000e+00, ptr %190, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  %191 = add nuw nsw i32 %.0186298, 1
  %192 = load i32, ptr %75, align 4, !tbaa !20
  %193 = icmp slt i32 %191, %192
  br i1 %193, label %.preheader262, label %._crit_edge299, !llvm.loop !28

194:                                              ; preds = %._crit_edge297
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  br label %259

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

198:                                              ; preds = %183
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %202

200:                                              ; preds = %187
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %20) #8
  br label %202

202:                                              ; preds = %200, %198
  %.pn = phi { ptr, i32 } [ %201, %200 ], [ %199, %198 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  br label %203

203:                                              ; preds = %202, %196
  %.pn.pn = phi { ptr, i32 } [ %.pn, %202 ], [ %197, %196 ]
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  br label %259

204:                                              ; preds = %189
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  br label %259

._crit_edge299:                                   ; preds = %.thread, %._crit_edge286, %74
  %206 = phi ptr [ %5, %74 ], [ %180, %.thread ], [ %79, %._crit_edge286 ]
  %207 = getelementptr inbounds i8, ptr %206, i64 200
  %208 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %207) #8
  %209 = load ptr, ptr %7, align 8, !tbaa !5
  %210 = getelementptr inbounds i8, ptr %209, i64 200
  %211 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #8
  call void @_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_(ptr %208, ptr %211, i32 noundef 0)
  %212 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #8
  %213 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #8
  call void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZNK4sptk26PrincipalComponentAnalysis3RunERKS3_IS3_IdSaIdEESaISA_EEPSA_SF_PNS7_6MatrixEPNS8_6BufferEE3$_0EvT_SL_T0_"(ptr %212, ptr %213, ptr nonnull %7)
  %.not235301 = icmp slt i32 %35, 0
  br i1 %.not235301, label %.preheader258, label %.lr.ph304.preheader

.lr.ph304.preheader:                              ; preds = %._crit_edge299
  %wide.trip.count325 = zext i32 %36 to i64
  br label %.lr.ph304

.preheader258:                                    ; preds = %224, %._crit_edge299
  %214 = load i32, ptr %34, align 8, !tbaa !18
  %215 = icmp sgt i32 %214, 0
  br i1 %215, label %.preheader256.lr.ph, label %.loopexit259

.preheader256.lr.ph:                              ; preds = %.preheader258
  %216 = sext i32 %35 to i64
  %wide.trip.count332 = zext i32 %36 to i64
  %wide.trip.count337 = zext i32 %36 to i64
  br label %.preheader256

.lr.ph304:                                        ; preds = %.lr.ph304.preheader, %224
  %indvars.iv322 = phi i64 [ 0, %.lr.ph304.preheader ], [ %indvars.iv.next323, %224 ]
  %217 = load ptr, ptr %7, align 8, !tbaa !5
  %218 = getelementptr inbounds i8, ptr %217, i64 200
  %219 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %218, i64 noundef %indvars.iv322) #8
  %220 = load i32, ptr %219, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #8
  %221 = load ptr, ptr %7, align 8, !tbaa !5
  %222 = getelementptr inbounds i8, ptr %221, i64 136
  call void @_ZN4sptk15SymmetricMatrixixEi(ptr dead_on_unwind nonnull writable sret(%"class.sptk::SymmetricMatrix::Row") align 8 %22, ptr noundef nonnull align 8 dereferenceable(64) %222, i32 noundef %220)
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4sptk15SymmetricMatrix3RowixEi(ptr noundef nonnull align 8 dereferenceable(20) %22, i32 noundef %220)
          to label %224 unwind label %227

224:                                              ; preds = %.lr.ph304
  %225 = load double, ptr %223, align 8, !tbaa !24
  %226 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv322) #8
  store double %225, ptr %226, align 8, !tbaa !24
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  %indvars.iv.next323 = add nuw nsw i64 %indvars.iv322, 1
  %exitcond326.not = icmp eq i64 %indvars.iv.next323, %wide.trip.count325
  br i1 %exitcond326.not, label %.preheader258, label %.lr.ph304, !llvm.loop !30

227:                                              ; preds = %.lr.ph304
  %228 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4sptk15SymmetricMatrix3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  br label %259

.preheader256:                                    ; preds = %.preheader256.lr.ph, %.loopexit
  %indvars.iv327 = phi i64 [ 0, %.preheader256.lr.ph ], [ %indvars.iv.next328, %.loopexit ]
  %.not236305 = icmp sgt i64 %indvars.iv327, %216
  %229 = trunc nuw nsw i64 %indvars.iv327 to i32
  br i1 %.not236305, label %.loopexit257, label %.lr.ph307

.lr.ph307:                                        ; preds = %.preheader256, %245
  %indvars.iv329 = phi i64 [ %indvars.iv.next330, %245 ], [ %indvars.iv327, %.preheader256 ]
  %230 = load ptr, ptr %7, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 200
  %232 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %231, i64 noundef %indvars.iv329) #8
  %233 = load i32, ptr %232, align 4, !tbaa !29
  %234 = zext i32 %233 to i64
  %235 = icmp eq i64 %indvars.iv327, %234
  br i1 %235, label %236, label %245

236:                                              ; preds = %.lr.ph307
  %237 = trunc nuw nsw i64 %indvars.iv329 to i32
  %238 = load ptr, ptr %7, align 8, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %238, i64 200
  %240 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %239, i64 noundef %indvars.iv327) #8
  %241 = load i32, ptr %240, align 4, !tbaa !29
  %242 = load ptr, ptr %7, align 8, !tbaa !5
  %243 = getelementptr inbounds i8, ptr %242, i64 200
  %244 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %243, i64 noundef %indvars.iv329) #8
  store i32 %241, ptr %244, align 4, !tbaa !29
  br label %.loopexit257

245:                                              ; preds = %.lr.ph307
  %indvars.iv.next330 = add nuw nsw i64 %indvars.iv329, 1
  %exitcond333.not = icmp eq i64 %indvars.iv.next330, %wide.trip.count332
  br i1 %exitcond333.not, label %.loopexit257, label %.lr.ph307, !llvm.loop !31

.loopexit257:                                     ; preds = %245, %.preheader256, %236
  %.0179264 = phi i32 [ %237, %236 ], [ %229, %.preheader256 ], [ %36, %245 ]
  %246 = load ptr, ptr %7, align 8, !tbaa !5
  %247 = getelementptr inbounds i8, ptr %246, i64 200
  %248 = zext nneg i32 %.0179264 to i64
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %248) #8
  %250 = load i32, ptr %249, align 4, !tbaa !29
  %251 = zext i32 %250 to i64
  %.not237 = icmp eq i64 %indvars.iv327, %251
  %brmerge = or i1 %.not237, %.not235301
  br i1 %brmerge, label %.loopexit, label %.lr.ph311

.lr.ph311:                                        ; preds = %.loopexit257, %.lr.ph311
  %indvars.iv334 = phi i64 [ %indvars.iv.next335, %.lr.ph311 ], [ 0, %.loopexit257 ]
  %252 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef %250)
  %253 = getelementptr inbounds double, ptr %252, i64 %indvars.iv334
  %254 = call noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef %229)
  %255 = getelementptr inbounds double, ptr %254, i64 %indvars.iv334
  call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull align 8 dereferenceable(8) %255) #8
  %indvars.iv.next335 = add nuw nsw i64 %indvars.iv334, 1
  %exitcond338.not = icmp eq i64 %indvars.iv.next335, %wide.trip.count337
  br i1 %exitcond338.not, label %.loopexit, label %.lr.ph311, !llvm.loop !32

.loopexit:                                        ; preds = %.lr.ph311, %.loopexit257
  %indvars.iv.next328 = add nuw nsw i64 %indvars.iv327, 1
  %256 = load i32, ptr %34, align 8, !tbaa !18
  %257 = sext i32 %256 to i64
  %258 = icmp slt i64 %indvars.iv.next328, %257
  br i1 %258, label %.preheader256, label %.loopexit259, !llvm.loop !33

259:                                              ; preds = %90, %119, %194, %203, %204, %163, %165, %167, %161, %121, %117, %227
  %.pn249.pn = phi { ptr, i32 } [ %228, %227 ], [ %91, %90 ], [ %118, %117 ], [ %120, %119 ], [ %122, %121 ], [ %205, %204 ], [ %.pn.pn, %203 ], [ %195, %194 ], [ %162, %161 ], [ %168, %167 ], [ %166, %165 ], [ %164, %163 ]
  resume { ptr, i32 } %.pn249.pn

.loopexit259:                                     ; preds = %.loopexit, %.preheader258, %60, %._crit_edge, %65, %68, %71, %62, %6
  %.4 = phi i1 [ false, %6 ], [ false, %60 ], [ false, %._crit_edge ], [ false, %65 ], [ false, %68 ], [ false, %71 ], [ false, %62 ], [ true, %.preheader258 ], [ true, %.loopexit ]
  ret i1 %.4
}

; 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 nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

declare void @_ZNK4sptk22StatisticsAccumulation5ClearEPNS0_6BufferE(ptr noundef nonnull align 8 dereferenceable(19), ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN4sptk6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZNK4sptk26PrincipalComponentAnalysis3RunERKS3_IS3_IdSaIdEESaISA_EEPSA_SF_PNS7_6MatrixEPNS8_6BufferEE3$_0EvT_SL_T0_"(ptr, ptr, ptr) local_unnamed_addr #6

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !15, i64 56}
!10 = !{!"_ZTSN4sptk26PrincipalComponentAnalysisE", !11, i64 8, !11, i64 12, !12, i64 16, !13, i64 24, !14, i64 32, !15, i64 56}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"_ZTSN4sptk26PrincipalComponentAnalysis14CovarianceTypeE", !7, i64 0}
!14 = !{!"_ZTSN4sptk22StatisticsAccumulationE", !11, i64 8, !11, i64 12, !15, i64 16, !15, i64 17, !15, i64 18}
!15 = !{!"bool", !7, i64 0}
!16 = !{i8 0, i8 2}
!17 = !{}
!18 = !{!10, !11, i64 8}
!19 = !{!10, !13, i64 24}
!20 = !{!10, !11, i64 12}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!10, !12, i64 16}
!24 = !{!12, !12, i64 0}
!25 = distinct !{!25, !22}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !22}
!28 = distinct !{!28, !22}
!29 = !{!11, !11, i64 0}
!30 = distinct !{!30, !22}
!31 = distinct !{!31, !22}
!32 = distinct !{!32, !22}
!33 = distinct !{!33, !22}


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