; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/src (alglibinternal)

; 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"

%"struct.alglib_impl::ae_complex" = type { double, double }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = type { ptr }

@.str.30 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1

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

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

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

declare noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl12cmatrixgemmfElllNS_10ae_complexEPNS_9ae_matrixElllS2_lllS0_S2_llPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, double, double, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, double, double, ptr noundef, i64 noundef, i64 noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl12cmatrixgemmkElllNS_10ae_complexEPNS_9ae_matrixElllS2_lllS0_S2_llPNS_8ae_stateE(i64 noundef %0, i64 noundef %1, i64 noundef %2, double %3, double %4, ptr noundef %5, i64 noundef %6, i64 noundef %7, i64 noundef %8, ptr noundef %9, i64 noundef %10, i64 noundef %11, i64 noundef %12, double %13, double %14, ptr noundef %15, i64 noundef %16, i64 noundef %17, ptr noundef %18) #4 {
  %20 = alloca %"struct.alglib_impl::ae_complex", align 8
  %21 = alloca %"struct.alglib_impl::ae_complex", align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca ptr, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca %"struct.alglib_impl::ae_complex", align 8
  %40 = alloca %"struct.alglib_impl::ae_complex", align 8
  %41 = alloca %"struct.alglib_impl::ae_complex", align 8
  %42 = alloca %"struct.alglib_impl::ae_complex", align 8
  %43 = alloca %"struct.alglib_impl::ae_complex", align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i32, align 4
  %74 = alloca %"struct.alglib_impl::ae_complex", align 8
  %75 = alloca %"struct.alglib_impl::ae_complex", align 8
  %76 = alloca %"struct.alglib_impl::ae_complex", align 8
  %77 = alloca %"struct.alglib_impl::ae_complex", align 8
  %78 = alloca %"struct.alglib_impl::ae_complex", align 8
  %79 = alloca %"struct.alglib_impl::ae_complex", align 8
  %80 = alloca %"struct.alglib_impl::ae_complex", align 8
  %81 = alloca %"struct.alglib_impl::ae_complex", align 8
  %82 = alloca %"struct.alglib_impl::ae_complex", align 8
  %83 = alloca %"struct.alglib_impl::ae_complex", align 8
  %84 = alloca %"struct.alglib_impl::ae_complex", align 8
  %85 = alloca %"struct.alglib_impl::ae_complex", align 8
  %86 = alloca %"struct.alglib_impl::ae_complex", align 8
  %87 = alloca %"struct.alglib_impl::ae_complex", align 8
  %88 = alloca %"struct.alglib_impl::ae_complex", align 8
  %89 = alloca %"struct.alglib_impl::ae_complex", align 8
  %90 = alloca %"struct.alglib_impl::ae_complex", align 8
  %91 = alloca %"struct.alglib_impl::ae_complex", align 8
  %92 = alloca %"struct.alglib_impl::ae_complex", align 8
  %93 = alloca %"struct.alglib_impl::ae_complex", align 8
  %94 = alloca %"struct.alglib_impl::ae_complex", align 8
  %95 = alloca %"struct.alglib_impl::ae_complex", align 8
  %96 = alloca %"struct.alglib_impl::ae_complex", align 8
  %97 = alloca %"struct.alglib_impl::ae_complex", align 8
  %98 = alloca %"struct.alglib_impl::ae_complex", align 8
  %99 = alloca %"struct.alglib_impl::ae_complex", align 8
  %100 = alloca %"struct.alglib_impl::ae_complex", align 8
  %101 = alloca %"struct.alglib_impl::ae_complex", align 8
  %102 = alloca %"struct.alglib_impl::ae_complex", align 8
  %103 = alloca %"struct.alglib_impl::ae_complex", align 8
  %104 = alloca %"struct.alglib_impl::ae_complex", align 8
  %105 = alloca %"struct.alglib_impl::ae_complex", align 8
  %106 = alloca %"struct.alglib_impl::ae_complex", align 8
  %107 = alloca %"struct.alglib_impl::ae_complex", align 8
  %108 = alloca %"struct.alglib_impl::ae_complex", align 8
  %109 = alloca %"struct.alglib_impl::ae_complex", align 8
  %110 = alloca %"struct.alglib_impl::ae_complex", align 8
  %111 = alloca %"struct.alglib_impl::ae_complex", align 8
  %112 = alloca %"struct.alglib_impl::ae_complex", align 8
  %113 = alloca %"struct.alglib_impl::ae_complex", align 8
  %114 = alloca %"struct.alglib_impl::ae_complex", align 8
  %115 = alloca %"struct.alglib_impl::ae_complex", align 8
  %116 = alloca %"struct.alglib_impl::ae_complex", align 8
  %117 = alloca %"struct.alglib_impl::ae_complex", align 8
  %118 = alloca %"struct.alglib_impl::ae_complex", align 8
  %119 = alloca %"struct.alglib_impl::ae_complex", align 8
  %120 = alloca %"struct.alglib_impl::ae_complex", align 8
  %121 = alloca %"struct.alglib_impl::ae_complex", align 8
  %122 = alloca %"struct.alglib_impl::ae_complex", align 8
  %123 = alloca %"struct.alglib_impl::ae_complex", align 8
  %124 = alloca %"struct.alglib_impl::ae_complex", align 8
  %125 = alloca %"struct.alglib_impl::ae_complex", align 8
  %126 = alloca %"struct.alglib_impl::ae_complex", align 8
  %127 = alloca %"struct.alglib_impl::ae_complex", align 8
  %128 = alloca %"struct.alglib_impl::ae_complex", align 8
  %129 = alloca %"struct.alglib_impl::ae_complex", align 8
  %130 = alloca %"struct.alglib_impl::ae_complex", align 8
  %131 = alloca %"struct.alglib_impl::ae_complex", align 8
  %132 = alloca %"struct.alglib_impl::ae_complex", align 8
  %133 = alloca %"struct.alglib_impl::ae_complex", align 8
  %134 = alloca %"struct.alglib_impl::ae_complex", align 8
  %135 = alloca %"struct.alglib_impl::ae_complex", align 8
  %136 = alloca %"struct.alglib_impl::ae_complex", align 8
  %137 = alloca %"struct.alglib_impl::ae_complex", align 8
  %138 = alloca %"struct.alglib_impl::ae_complex", align 8
  %139 = alloca %"struct.alglib_impl::ae_complex", align 8
  %140 = alloca %"struct.alglib_impl::ae_complex", align 8
  %141 = alloca %"struct.alglib_impl::ae_complex", align 8
  %142 = alloca %"struct.alglib_impl::ae_complex", align 8
  %143 = alloca %"struct.alglib_impl::ae_complex", align 8
  %144 = alloca %"struct.alglib_impl::ae_complex", align 8
  %145 = alloca %"struct.alglib_impl::ae_complex", align 8
  %146 = alloca %"struct.alglib_impl::ae_complex", align 8
  %147 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 0
  store double %3, ptr %147, align 8
  %148 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 1
  store double %4, ptr %148, align 8
  %149 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 0
  store double %13, ptr %149, align 8
  %150 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 1
  store double %14, ptr %150, align 8
  store i64 %0, ptr %22, align 8, !tbaa !5
  store i64 %1, ptr %23, align 8, !tbaa !5
  store i64 %2, ptr %24, align 8, !tbaa !5
  store ptr %5, ptr %25, align 8, !tbaa !9
  store i64 %6, ptr %26, align 8, !tbaa !5
  store i64 %7, ptr %27, align 8, !tbaa !5
  store i64 %8, ptr %28, align 8, !tbaa !5
  store ptr %9, ptr %29, align 8, !tbaa !9
  store i64 %10, ptr %30, align 8, !tbaa !5
  store i64 %11, ptr %31, align 8, !tbaa !5
  store i64 %12, ptr %32, align 8, !tbaa !5
  store ptr %15, ptr %33, align 8, !tbaa !9
  store i64 %16, ptr %34, align 8, !tbaa !5
  store i64 %17, ptr %35, align 8, !tbaa !5
  store ptr %18, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  %151 = load i64, ptr %22, align 8, !tbaa !5
  %152 = icmp eq i64 %151, 0
  br i1 %152, label %156, label %153

153:                                              ; preds = %19
  %154 = load i64, ptr %23, align 8, !tbaa !5
  %155 = icmp eq i64 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %153, %19
  store i32 1, ptr %73, align 4
  br label %1639

157:                                              ; preds = %153
  %158 = load i64, ptr %22, align 8, !tbaa !5
  %159 = load i64, ptr %23, align 8, !tbaa !5
  %160 = load i64, ptr %24, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %74, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  %161 = load ptr, ptr %25, align 8, !tbaa !9
  %162 = load i64, ptr %26, align 8, !tbaa !5
  %163 = load i64, ptr %27, align 8, !tbaa !5
  %164 = load i64, ptr %28, align 8, !tbaa !5
  %165 = load ptr, ptr %29, align 8, !tbaa !9
  %166 = load i64, ptr %30, align 8, !tbaa !5
  %167 = load i64, ptr %31, align 8, !tbaa !5
  %168 = load i64, ptr %32, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %75, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %169 = load ptr, ptr %33, align 8, !tbaa !9
  %170 = load i64, ptr %34, align 8, !tbaa !5
  %171 = load i64, ptr %35, align 8, !tbaa !5
  %172 = load ptr, ptr %36, align 8, !tbaa !9
  %173 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %174 = load double, ptr %173, align 8
  %175 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %176 = load double, ptr %175, align 8
  %177 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %178 = load double, ptr %177, align 8
  %179 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %180 = load double, ptr %179, align 8
  %181 = call noundef zeroext i1 @_ZN11alglib_impl12cmatrixgemmfElllNS_10ae_complexEPNS_9ae_matrixElllS2_lllS0_S2_llPNS_8ae_stateE(i64 noundef %158, i64 noundef %159, i64 noundef %160, double %174, double %176, ptr noundef %161, i64 noundef %162, i64 noundef %163, i64 noundef %164, ptr noundef %165, i64 noundef %166, i64 noundef %167, i64 noundef %168, double %178, double %180, ptr noundef %169, i64 noundef %170, i64 noundef %171, ptr noundef %172)
  br i1 %181, label %182, label %183

182:                                              ; preds = %157
  store i32 1, ptr %73, align 4
  br label %1639

183:                                              ; preds = %157
  %184 = load i64, ptr %24, align 8, !tbaa !5
  %185 = icmp eq i64 %184, 0
  br i1 %185, label %192, label %186

186:                                              ; preds = %183
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %76, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  %187 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %188 = load double, ptr %187, align 8
  %189 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  %190 = load double, ptr %189, align 8
  %191 = call noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double %188, double %190, double noundef 0.000000e+00)
  br i1 %191, label %192, label %302

192:                                              ; preds = %186, %183
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %77, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %193 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %194 = load double, ptr %193, align 8
  %195 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %196 = load double, ptr %195, align 8
  %197 = call noundef zeroext i1 @_ZN11alglib_impl10ae_c_neq_dENS_10ae_complexEd(double %194, double %196, double noundef 1.000000e+00)
  br i1 %197, label %198, label %301

198:                                              ; preds = %192
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %78, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %199 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %200 = load double, ptr %199, align 8
  %201 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %202 = load double, ptr %201, align 8
  %203 = call noundef zeroext i1 @_ZN11alglib_impl10ae_c_neq_dENS_10ae_complexEd(double %200, double %202, double noundef 0.000000e+00)
  br i1 %203, label %204, label %262

204:                                              ; preds = %198
  store i64 0, ptr %37, align 8, !tbaa !5
  br label %205

205:                                              ; preds = %258, %204
  %206 = load i64, ptr %37, align 8, !tbaa !5
  %207 = load i64, ptr %22, align 8, !tbaa !5
  %208 = sub nsw i64 %207, 1
  %209 = icmp sle i64 %206, %208
  br i1 %209, label %210, label %261

210:                                              ; preds = %205
  store i64 0, ptr %38, align 8, !tbaa !5
  br label %211

211:                                              ; preds = %254, %210
  %212 = load i64, ptr %38, align 8, !tbaa !5
  %213 = load i64, ptr %23, align 8, !tbaa !5
  %214 = sub nsw i64 %213, 1
  %215 = icmp sle i64 %212, %214
  br i1 %215, label %216, label %257

216:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %80, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %217 = load ptr, ptr %33, align 8, !tbaa !9
  %218 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %217, i32 0, i32 6
  %219 = load ptr, ptr %218, align 8, !tbaa !14
  %220 = load i64, ptr %34, align 8, !tbaa !5
  %221 = load i64, ptr %37, align 8, !tbaa !5
  %222 = add nsw i64 %220, %221
  %223 = getelementptr inbounds ptr, ptr %219, i64 %222
  %224 = load ptr, ptr %223, align 8, !tbaa !9
  %225 = load i64, ptr %35, align 8, !tbaa !5
  %226 = load i64, ptr %38, align 8, !tbaa !5
  %227 = add nsw i64 %225, %226
  %228 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %224, i64 %227
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %81, ptr align 8 %228, i64 16, i1 false), !tbaa.struct !11
  %229 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %230 = load double, ptr %229, align 8
  %231 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %232 = load double, ptr %231, align 8
  %233 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %234 = load double, ptr %233, align 8
  %235 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %236 = load double, ptr %235, align 8
  %237 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %230, double %232, double %234, double %236)
  %238 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %239 = extractvalue { double, double } %237, 0
  store double %239, ptr %238, align 8
  %240 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  %241 = extractvalue { double, double } %237, 1
  store double %241, ptr %240, align 8
  %242 = load ptr, ptr %33, align 8, !tbaa !9
  %243 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %242, i32 0, i32 6
  %244 = load ptr, ptr %243, align 8, !tbaa !14
  %245 = load i64, ptr %34, align 8, !tbaa !5
  %246 = load i64, ptr %37, align 8, !tbaa !5
  %247 = add nsw i64 %245, %246
  %248 = getelementptr inbounds ptr, ptr %244, i64 %247
  %249 = load ptr, ptr %248, align 8, !tbaa !9
  %250 = load i64, ptr %35, align 8, !tbaa !5
  %251 = load i64, ptr %38, align 8, !tbaa !5
  %252 = add nsw i64 %250, %251
  %253 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %249, i64 %252
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %253, ptr align 8 %79, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #5
  br label %254

254:                                              ; preds = %216
  %255 = load i64, ptr %38, align 8, !tbaa !5
  %256 = add nsw i64 %255, 1
  store i64 %256, ptr %38, align 8, !tbaa !5
  br label %211, !llvm.loop !15

257:                                              ; preds = %211
  br label %258

258:                                              ; preds = %257
  %259 = load i64, ptr %37, align 8, !tbaa !5
  %260 = add nsw i64 %259, 1
  store i64 %260, ptr %37, align 8, !tbaa !5
  br label %205, !llvm.loop !17

261:                                              ; preds = %205
  br label %300

262:                                              ; preds = %198
  store i64 0, ptr %37, align 8, !tbaa !5
  br label %263

263:                                              ; preds = %296, %262
  %264 = load i64, ptr %37, align 8, !tbaa !5
  %265 = load i64, ptr %22, align 8, !tbaa !5
  %266 = sub nsw i64 %265, 1
  %267 = icmp sle i64 %264, %266
  br i1 %267, label %268, label %299

268:                                              ; preds = %263
  store i64 0, ptr %38, align 8, !tbaa !5
  br label %269

269:                                              ; preds = %292, %268
  %270 = load i64, ptr %38, align 8, !tbaa !5
  %271 = load i64, ptr %23, align 8, !tbaa !5
  %272 = sub nsw i64 %271, 1
  %273 = icmp sle i64 %270, %272
  br i1 %273, label %274, label %295

274:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #5
  %275 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %276 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 0
  %277 = extractvalue { double, double } %275, 0
  store double %277, ptr %276, align 8
  %278 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 1
  %279 = extractvalue { double, double } %275, 1
  store double %279, ptr %278, align 8
  %280 = load ptr, ptr %33, align 8, !tbaa !9
  %281 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %280, i32 0, i32 6
  %282 = load ptr, ptr %281, align 8, !tbaa !14
  %283 = load i64, ptr %34, align 8, !tbaa !5
  %284 = load i64, ptr %37, align 8, !tbaa !5
  %285 = add nsw i64 %283, %284
  %286 = getelementptr inbounds ptr, ptr %282, i64 %285
  %287 = load ptr, ptr %286, align 8, !tbaa !9
  %288 = load i64, ptr %35, align 8, !tbaa !5
  %289 = load i64, ptr %38, align 8, !tbaa !5
  %290 = add nsw i64 %288, %289
  %291 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %287, i64 %290
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %291, ptr align 8 %82, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #5
  br label %292

292:                                              ; preds = %274
  %293 = load i64, ptr %38, align 8, !tbaa !5
  %294 = add nsw i64 %293, 1
  store i64 %294, ptr %38, align 8, !tbaa !5
  br label %269, !llvm.loop !18

295:                                              ; preds = %269
  br label %296

296:                                              ; preds = %295
  %297 = load i64, ptr %37, align 8, !tbaa !5
  %298 = add nsw i64 %297, 1
  store i64 %298, ptr %37, align 8, !tbaa !5
  br label %263, !llvm.loop !19

299:                                              ; preds = %263
  br label %300

300:                                              ; preds = %299, %261
  br label %301

301:                                              ; preds = %300, %192
  store i32 1, ptr %73, align 4
  br label %1639

302:                                              ; preds = %186
  store double 0.000000e+00, ptr %52, align 8, !tbaa !12
  store double 0.000000e+00, ptr %53, align 8, !tbaa !12
  store double 0.000000e+00, ptr %54, align 8, !tbaa !12
  store double 0.000000e+00, ptr %55, align 8, !tbaa !12
  store double 0.000000e+00, ptr %56, align 8, !tbaa !12
  store double 0.000000e+00, ptr %57, align 8, !tbaa !12
  store double 0.000000e+00, ptr %58, align 8, !tbaa !12
  store double 0.000000e+00, ptr %59, align 8, !tbaa !12
  store i64 0, ptr %37, align 8, !tbaa !5
  br label %303

303:                                              ; preds = %1635, %302
  %304 = load i64, ptr %37, align 8, !tbaa !5
  %305 = load i64, ptr %22, align 8, !tbaa !5
  %306 = icmp slt i64 %304, %305
  br i1 %306, label %307, label %1638

307:                                              ; preds = %303
  store i64 0, ptr %38, align 8, !tbaa !5
  br label %308

308:                                              ; preds = %1632, %307
  %309 = load i64, ptr %38, align 8, !tbaa !5
  %310 = load i64, ptr %23, align 8, !tbaa !5
  %311 = icmp slt i64 %309, %310
  br i1 %311, label %312, label %1635

312:                                              ; preds = %308
  %313 = load i64, ptr %37, align 8, !tbaa !5
  %314 = add nsw i64 %313, 2
  %315 = load i64, ptr %22, align 8, !tbaa !5
  %316 = icmp sle i64 %314, %315
  br i1 %316, label %317, label %1111

317:                                              ; preds = %312
  %318 = load i64, ptr %38, align 8, !tbaa !5
  %319 = add nsw i64 %318, 2
  %320 = load i64, ptr %23, align 8, !tbaa !5
  %321 = icmp sle i64 %319, %320
  br i1 %321, label %322, label %1111

322:                                              ; preds = %317
  store double 0.000000e+00, ptr %44, align 8, !tbaa !12
  store double 0.000000e+00, ptr %45, align 8, !tbaa !12
  store double 0.000000e+00, ptr %46, align 8, !tbaa !12
  store double 0.000000e+00, ptr %47, align 8, !tbaa !12
  store double 0.000000e+00, ptr %48, align 8, !tbaa !12
  store double 0.000000e+00, ptr %49, align 8, !tbaa !12
  store double 0.000000e+00, ptr %50, align 8, !tbaa !12
  store double 0.000000e+00, ptr %51, align 8, !tbaa !12
  %323 = load i64, ptr %28, align 8, !tbaa !5
  %324 = icmp eq i64 %323, 0
  br i1 %324, label %325, label %335

325:                                              ; preds = %322
  %326 = load i64, ptr %26, align 8, !tbaa !5
  %327 = load i64, ptr %37, align 8, !tbaa !5
  %328 = add nsw i64 %326, %327
  %329 = add nsw i64 %328, 0
  store i64 %329, ptr %60, align 8, !tbaa !5
  %330 = load i64, ptr %26, align 8, !tbaa !5
  %331 = load i64, ptr %37, align 8, !tbaa !5
  %332 = add nsw i64 %330, %331
  %333 = add nsw i64 %332, 1
  store i64 %333, ptr %61, align 8, !tbaa !5
  %334 = load i64, ptr %27, align 8, !tbaa !5
  store i64 %334, ptr %71, align 8, !tbaa !5
  br label %345

335:                                              ; preds = %322
  %336 = load i64, ptr %27, align 8, !tbaa !5
  %337 = load i64, ptr %37, align 8, !tbaa !5
  %338 = add nsw i64 %336, %337
  %339 = add nsw i64 %338, 0
  store i64 %339, ptr %60, align 8, !tbaa !5
  %340 = load i64, ptr %27, align 8, !tbaa !5
  %341 = load i64, ptr %37, align 8, !tbaa !5
  %342 = add nsw i64 %340, %341
  %343 = add nsw i64 %342, 1
  store i64 %343, ptr %61, align 8, !tbaa !5
  %344 = load i64, ptr %26, align 8, !tbaa !5
  store i64 %344, ptr %71, align 8, !tbaa !5
  br label %345

345:                                              ; preds = %335, %325
  %346 = load i64, ptr %32, align 8, !tbaa !5
  %347 = icmp eq i64 %346, 0
  br i1 %347, label %348, label %358

348:                                              ; preds = %345
  %349 = load i64, ptr %31, align 8, !tbaa !5
  %350 = load i64, ptr %38, align 8, !tbaa !5
  %351 = add nsw i64 %349, %350
  %352 = add nsw i64 %351, 0
  store i64 %352, ptr %62, align 8, !tbaa !5
  %353 = load i64, ptr %31, align 8, !tbaa !5
  %354 = load i64, ptr %38, align 8, !tbaa !5
  %355 = add nsw i64 %353, %354
  %356 = add nsw i64 %355, 1
  store i64 %356, ptr %63, align 8, !tbaa !5
  %357 = load i64, ptr %30, align 8, !tbaa !5
  store i64 %357, ptr %72, align 8, !tbaa !5
  br label %368

358:                                              ; preds = %345
  %359 = load i64, ptr %30, align 8, !tbaa !5
  %360 = load i64, ptr %38, align 8, !tbaa !5
  %361 = add nsw i64 %359, %360
  %362 = add nsw i64 %361, 0
  store i64 %362, ptr %62, align 8, !tbaa !5
  %363 = load i64, ptr %30, align 8, !tbaa !5
  %364 = load i64, ptr %38, align 8, !tbaa !5
  %365 = add nsw i64 %363, %364
  %366 = add nsw i64 %365, 1
  store i64 %366, ptr %63, align 8, !tbaa !5
  %367 = load i64, ptr %31, align 8, !tbaa !5
  store i64 %367, ptr %72, align 8, !tbaa !5
  br label %368

368:                                              ; preds = %358, %348
  store i64 0, ptr %70, align 8, !tbaa !5
  br label %369

369:                                              ; preds = %707, %368
  %370 = load i64, ptr %70, align 8, !tbaa !5
  %371 = load i64, ptr %24, align 8, !tbaa !5
  %372 = sub nsw i64 %371, 1
  %373 = icmp sle i64 %370, %372
  br i1 %373, label %374, label %710

374:                                              ; preds = %369
  %375 = load i64, ptr %28, align 8, !tbaa !5
  %376 = icmp eq i64 %375, 0
  br i1 %376, label %377, label %418

377:                                              ; preds = %374
  %378 = load ptr, ptr %25, align 8, !tbaa !9
  %379 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %378, i32 0, i32 6
  %380 = load ptr, ptr %379, align 8, !tbaa !14
  %381 = load i64, ptr %60, align 8, !tbaa !5
  %382 = getelementptr inbounds ptr, ptr %380, i64 %381
  %383 = load ptr, ptr %382, align 8, !tbaa !9
  %384 = load i64, ptr %71, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %383, i64 %384
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %385, i32 0, i32 0
  %387 = load double, ptr %386, align 8, !tbaa !20
  store double %387, ptr %52, align 8, !tbaa !12
  %388 = load ptr, ptr %25, align 8, !tbaa !9
  %389 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %388, i32 0, i32 6
  %390 = load ptr, ptr %389, align 8, !tbaa !14
  %391 = load i64, ptr %60, align 8, !tbaa !5
  %392 = getelementptr inbounds ptr, ptr %390, i64 %391
  %393 = load ptr, ptr %392, align 8, !tbaa !9
  %394 = load i64, ptr %71, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %393, i64 %394
  %396 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %395, i32 0, i32 1
  %397 = load double, ptr %396, align 8, !tbaa !22
  store double %397, ptr %53, align 8, !tbaa !12
  %398 = load ptr, ptr %25, align 8, !tbaa !9
  %399 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %398, i32 0, i32 6
  %400 = load ptr, ptr %399, align 8, !tbaa !14
  %401 = load i64, ptr %61, align 8, !tbaa !5
  %402 = getelementptr inbounds ptr, ptr %400, i64 %401
  %403 = load ptr, ptr %402, align 8, !tbaa !9
  %404 = load i64, ptr %71, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %403, i64 %404
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %405, i32 0, i32 0
  %407 = load double, ptr %406, align 8, !tbaa !20
  store double %407, ptr %54, align 8, !tbaa !12
  %408 = load ptr, ptr %25, align 8, !tbaa !9
  %409 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %408, i32 0, i32 6
  %410 = load ptr, ptr %409, align 8, !tbaa !14
  %411 = load i64, ptr %61, align 8, !tbaa !5
  %412 = getelementptr inbounds ptr, ptr %410, i64 %411
  %413 = load ptr, ptr %412, align 8, !tbaa !9
  %414 = load i64, ptr %71, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %413, i64 %414
  %416 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %415, i32 0, i32 1
  %417 = load double, ptr %416, align 8, !tbaa !22
  store double %417, ptr %55, align 8, !tbaa !12
  br label %418

418:                                              ; preds = %377, %374
  %419 = load i64, ptr %28, align 8, !tbaa !5
  %420 = icmp eq i64 %419, 1
  br i1 %420, label %421, label %462

421:                                              ; preds = %418
  %422 = load ptr, ptr %25, align 8, !tbaa !9
  %423 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %422, i32 0, i32 6
  %424 = load ptr, ptr %423, align 8, !tbaa !14
  %425 = load i64, ptr %71, align 8, !tbaa !5
  %426 = getelementptr inbounds ptr, ptr %424, i64 %425
  %427 = load ptr, ptr %426, align 8, !tbaa !9
  %428 = load i64, ptr %60, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %427, i64 %428
  %430 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %429, i32 0, i32 0
  %431 = load double, ptr %430, align 8, !tbaa !20
  store double %431, ptr %52, align 8, !tbaa !12
  %432 = load ptr, ptr %25, align 8, !tbaa !9
  %433 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %432, i32 0, i32 6
  %434 = load ptr, ptr %433, align 8, !tbaa !14
  %435 = load i64, ptr %71, align 8, !tbaa !5
  %436 = getelementptr inbounds ptr, ptr %434, i64 %435
  %437 = load ptr, ptr %436, align 8, !tbaa !9
  %438 = load i64, ptr %60, align 8, !tbaa !5
  %439 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %437, i64 %438
  %440 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %439, i32 0, i32 1
  %441 = load double, ptr %440, align 8, !tbaa !22
  store double %441, ptr %53, align 8, !tbaa !12
  %442 = load ptr, ptr %25, align 8, !tbaa !9
  %443 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %442, i32 0, i32 6
  %444 = load ptr, ptr %443, align 8, !tbaa !14
  %445 = load i64, ptr %71, align 8, !tbaa !5
  %446 = getelementptr inbounds ptr, ptr %444, i64 %445
  %447 = load ptr, ptr %446, align 8, !tbaa !9
  %448 = load i64, ptr %61, align 8, !tbaa !5
  %449 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %447, i64 %448
  %450 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %449, i32 0, i32 0
  %451 = load double, ptr %450, align 8, !tbaa !20
  store double %451, ptr %54, align 8, !tbaa !12
  %452 = load ptr, ptr %25, align 8, !tbaa !9
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %452, i32 0, i32 6
  %454 = load ptr, ptr %453, align 8, !tbaa !14
  %455 = load i64, ptr %71, align 8, !tbaa !5
  %456 = getelementptr inbounds ptr, ptr %454, i64 %455
  %457 = load ptr, ptr %456, align 8, !tbaa !9
  %458 = load i64, ptr %61, align 8, !tbaa !5
  %459 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %457, i64 %458
  %460 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %459, i32 0, i32 1
  %461 = load double, ptr %460, align 8, !tbaa !22
  store double %461, ptr %55, align 8, !tbaa !12
  br label %462

462:                                              ; preds = %421, %418
  %463 = load i64, ptr %28, align 8, !tbaa !5
  %464 = icmp eq i64 %463, 2
  br i1 %464, label %465, label %508

465:                                              ; preds = %462
  %466 = load ptr, ptr %25, align 8, !tbaa !9
  %467 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %466, i32 0, i32 6
  %468 = load ptr, ptr %467, align 8, !tbaa !14
  %469 = load i64, ptr %71, align 8, !tbaa !5
  %470 = getelementptr inbounds ptr, ptr %468, i64 %469
  %471 = load ptr, ptr %470, align 8, !tbaa !9
  %472 = load i64, ptr %60, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %471, i64 %472
  %474 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %473, i32 0, i32 0
  %475 = load double, ptr %474, align 8, !tbaa !20
  store double %475, ptr %52, align 8, !tbaa !12
  %476 = load ptr, ptr %25, align 8, !tbaa !9
  %477 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %476, i32 0, i32 6
  %478 = load ptr, ptr %477, align 8, !tbaa !14
  %479 = load i64, ptr %71, align 8, !tbaa !5
  %480 = getelementptr inbounds ptr, ptr %478, i64 %479
  %481 = load ptr, ptr %480, align 8, !tbaa !9
  %482 = load i64, ptr %60, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %481, i64 %482
  %484 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %483, i32 0, i32 1
  %485 = load double, ptr %484, align 8, !tbaa !22
  %486 = fneg double %485
  store double %486, ptr %53, align 8, !tbaa !12
  %487 = load ptr, ptr %25, align 8, !tbaa !9
  %488 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %487, i32 0, i32 6
  %489 = load ptr, ptr %488, align 8, !tbaa !14
  %490 = load i64, ptr %71, align 8, !tbaa !5
  %491 = getelementptr inbounds ptr, ptr %489, i64 %490
  %492 = load ptr, ptr %491, align 8, !tbaa !9
  %493 = load i64, ptr %61, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %492, i64 %493
  %495 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %494, i32 0, i32 0
  %496 = load double, ptr %495, align 8, !tbaa !20
  store double %496, ptr %54, align 8, !tbaa !12
  %497 = load ptr, ptr %25, align 8, !tbaa !9
  %498 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %497, i32 0, i32 6
  %499 = load ptr, ptr %498, align 8, !tbaa !14
  %500 = load i64, ptr %71, align 8, !tbaa !5
  %501 = getelementptr inbounds ptr, ptr %499, i64 %500
  %502 = load ptr, ptr %501, align 8, !tbaa !9
  %503 = load i64, ptr %61, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %502, i64 %503
  %505 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %504, i32 0, i32 1
  %506 = load double, ptr %505, align 8, !tbaa !22
  %507 = fneg double %506
  store double %507, ptr %55, align 8, !tbaa !12
  br label %508

508:                                              ; preds = %465, %462
  %509 = load i64, ptr %32, align 8, !tbaa !5
  %510 = icmp eq i64 %509, 0
  br i1 %510, label %511, label %552

511:                                              ; preds = %508
  %512 = load ptr, ptr %29, align 8, !tbaa !9
  %513 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %512, i32 0, i32 6
  %514 = load ptr, ptr %513, align 8, !tbaa !14
  %515 = load i64, ptr %72, align 8, !tbaa !5
  %516 = getelementptr inbounds ptr, ptr %514, i64 %515
  %517 = load ptr, ptr %516, align 8, !tbaa !9
  %518 = load i64, ptr %62, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %517, i64 %518
  %520 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %519, i32 0, i32 0
  %521 = load double, ptr %520, align 8, !tbaa !20
  store double %521, ptr %56, align 8, !tbaa !12
  %522 = load ptr, ptr %29, align 8, !tbaa !9
  %523 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %522, i32 0, i32 6
  %524 = load ptr, ptr %523, align 8, !tbaa !14
  %525 = load i64, ptr %72, align 8, !tbaa !5
  %526 = getelementptr inbounds ptr, ptr %524, i64 %525
  %527 = load ptr, ptr %526, align 8, !tbaa !9
  %528 = load i64, ptr %62, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %527, i64 %528
  %530 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %529, i32 0, i32 1
  %531 = load double, ptr %530, align 8, !tbaa !22
  store double %531, ptr %57, align 8, !tbaa !12
  %532 = load ptr, ptr %29, align 8, !tbaa !9
  %533 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %532, i32 0, i32 6
  %534 = load ptr, ptr %533, align 8, !tbaa !14
  %535 = load i64, ptr %72, align 8, !tbaa !5
  %536 = getelementptr inbounds ptr, ptr %534, i64 %535
  %537 = load ptr, ptr %536, align 8, !tbaa !9
  %538 = load i64, ptr %63, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %537, i64 %538
  %540 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %539, i32 0, i32 0
  %541 = load double, ptr %540, align 8, !tbaa !20
  store double %541, ptr %58, align 8, !tbaa !12
  %542 = load ptr, ptr %29, align 8, !tbaa !9
  %543 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %542, i32 0, i32 6
  %544 = load ptr, ptr %543, align 8, !tbaa !14
  %545 = load i64, ptr %72, align 8, !tbaa !5
  %546 = getelementptr inbounds ptr, ptr %544, i64 %545
  %547 = load ptr, ptr %546, align 8, !tbaa !9
  %548 = load i64, ptr %63, align 8, !tbaa !5
  %549 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %547, i64 %548
  %550 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %549, i32 0, i32 1
  %551 = load double, ptr %550, align 8, !tbaa !22
  store double %551, ptr %59, align 8, !tbaa !12
  br label %552

552:                                              ; preds = %511, %508
  %553 = load i64, ptr %32, align 8, !tbaa !5
  %554 = icmp eq i64 %553, 1
  br i1 %554, label %555, label %596

555:                                              ; preds = %552
  %556 = load ptr, ptr %29, align 8, !tbaa !9
  %557 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %556, i32 0, i32 6
  %558 = load ptr, ptr %557, align 8, !tbaa !14
  %559 = load i64, ptr %62, align 8, !tbaa !5
  %560 = getelementptr inbounds ptr, ptr %558, i64 %559
  %561 = load ptr, ptr %560, align 8, !tbaa !9
  %562 = load i64, ptr %72, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %561, i64 %562
  %564 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %563, i32 0, i32 0
  %565 = load double, ptr %564, align 8, !tbaa !20
  store double %565, ptr %56, align 8, !tbaa !12
  %566 = load ptr, ptr %29, align 8, !tbaa !9
  %567 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %566, i32 0, i32 6
  %568 = load ptr, ptr %567, align 8, !tbaa !14
  %569 = load i64, ptr %62, align 8, !tbaa !5
  %570 = getelementptr inbounds ptr, ptr %568, i64 %569
  %571 = load ptr, ptr %570, align 8, !tbaa !9
  %572 = load i64, ptr %72, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %571, i64 %572
  %574 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %573, i32 0, i32 1
  %575 = load double, ptr %574, align 8, !tbaa !22
  store double %575, ptr %57, align 8, !tbaa !12
  %576 = load ptr, ptr %29, align 8, !tbaa !9
  %577 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %576, i32 0, i32 6
  %578 = load ptr, ptr %577, align 8, !tbaa !14
  %579 = load i64, ptr %63, align 8, !tbaa !5
  %580 = getelementptr inbounds ptr, ptr %578, i64 %579
  %581 = load ptr, ptr %580, align 8, !tbaa !9
  %582 = load i64, ptr %72, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %581, i64 %582
  %584 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %583, i32 0, i32 0
  %585 = load double, ptr %584, align 8, !tbaa !20
  store double %585, ptr %58, align 8, !tbaa !12
  %586 = load ptr, ptr %29, align 8, !tbaa !9
  %587 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %586, i32 0, i32 6
  %588 = load ptr, ptr %587, align 8, !tbaa !14
  %589 = load i64, ptr %63, align 8, !tbaa !5
  %590 = getelementptr inbounds ptr, ptr %588, i64 %589
  %591 = load ptr, ptr %590, align 8, !tbaa !9
  %592 = load i64, ptr %72, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %591, i64 %592
  %594 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %593, i32 0, i32 1
  %595 = load double, ptr %594, align 8, !tbaa !22
  store double %595, ptr %59, align 8, !tbaa !12
  br label %596

596:                                              ; preds = %555, %552
  %597 = load i64, ptr %32, align 8, !tbaa !5
  %598 = icmp eq i64 %597, 2
  br i1 %598, label %599, label %642

599:                                              ; preds = %596
  %600 = load ptr, ptr %29, align 8, !tbaa !9
  %601 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %600, i32 0, i32 6
  %602 = load ptr, ptr %601, align 8, !tbaa !14
  %603 = load i64, ptr %62, align 8, !tbaa !5
  %604 = getelementptr inbounds ptr, ptr %602, i64 %603
  %605 = load ptr, ptr %604, align 8, !tbaa !9
  %606 = load i64, ptr %72, align 8, !tbaa !5
  %607 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %605, i64 %606
  %608 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %607, i32 0, i32 0
  %609 = load double, ptr %608, align 8, !tbaa !20
  store double %609, ptr %56, align 8, !tbaa !12
  %610 = load ptr, ptr %29, align 8, !tbaa !9
  %611 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %610, i32 0, i32 6
  %612 = load ptr, ptr %611, align 8, !tbaa !14
  %613 = load i64, ptr %62, align 8, !tbaa !5
  %614 = getelementptr inbounds ptr, ptr %612, i64 %613
  %615 = load ptr, ptr %614, align 8, !tbaa !9
  %616 = load i64, ptr %72, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %615, i64 %616
  %618 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %617, i32 0, i32 1
  %619 = load double, ptr %618, align 8, !tbaa !22
  %620 = fneg double %619
  store double %620, ptr %57, align 8, !tbaa !12
  %621 = load ptr, ptr %29, align 8, !tbaa !9
  %622 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %621, i32 0, i32 6
  %623 = load ptr, ptr %622, align 8, !tbaa !14
  %624 = load i64, ptr %63, align 8, !tbaa !5
  %625 = getelementptr inbounds ptr, ptr %623, i64 %624
  %626 = load ptr, ptr %625, align 8, !tbaa !9
  %627 = load i64, ptr %72, align 8, !tbaa !5
  %628 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %626, i64 %627
  %629 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %628, i32 0, i32 0
  %630 = load double, ptr %629, align 8, !tbaa !20
  store double %630, ptr %58, align 8, !tbaa !12
  %631 = load ptr, ptr %29, align 8, !tbaa !9
  %632 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %631, i32 0, i32 6
  %633 = load ptr, ptr %632, align 8, !tbaa !14
  %634 = load i64, ptr %63, align 8, !tbaa !5
  %635 = getelementptr inbounds ptr, ptr %633, i64 %634
  %636 = load ptr, ptr %635, align 8, !tbaa !9
  %637 = load i64, ptr %72, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %636, i64 %637
  %639 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %638, i32 0, i32 1
  %640 = load double, ptr %639, align 8, !tbaa !22
  %641 = fneg double %640
  store double %641, ptr %59, align 8, !tbaa !12
  br label %642

642:                                              ; preds = %599, %596
  %643 = load double, ptr %44, align 8, !tbaa !12
  %644 = load double, ptr %52, align 8, !tbaa !12
  %645 = load double, ptr %56, align 8, !tbaa !12
  %646 = call double @llvm.fmuladd.f64(double %644, double %645, double %643)
  %647 = load double, ptr %53, align 8, !tbaa !12
  %648 = load double, ptr %57, align 8, !tbaa !12
  %649 = fneg double %647
  %650 = call double @llvm.fmuladd.f64(double %649, double %648, double %646)
  store double %650, ptr %44, align 8, !tbaa !12
  %651 = load double, ptr %45, align 8, !tbaa !12
  %652 = load double, ptr %52, align 8, !tbaa !12
  %653 = load double, ptr %57, align 8, !tbaa !12
  %654 = call double @llvm.fmuladd.f64(double %652, double %653, double %651)
  %655 = load double, ptr %53, align 8, !tbaa !12
  %656 = load double, ptr %56, align 8, !tbaa !12
  %657 = call double @llvm.fmuladd.f64(double %655, double %656, double %654)
  store double %657, ptr %45, align 8, !tbaa !12
  %658 = load double, ptr %46, align 8, !tbaa !12
  %659 = load double, ptr %52, align 8, !tbaa !12
  %660 = load double, ptr %58, align 8, !tbaa !12
  %661 = call double @llvm.fmuladd.f64(double %659, double %660, double %658)
  %662 = load double, ptr %53, align 8, !tbaa !12
  %663 = load double, ptr %59, align 8, !tbaa !12
  %664 = fneg double %662
  %665 = call double @llvm.fmuladd.f64(double %664, double %663, double %661)
  store double %665, ptr %46, align 8, !tbaa !12
  %666 = load double, ptr %47, align 8, !tbaa !12
  %667 = load double, ptr %52, align 8, !tbaa !12
  %668 = load double, ptr %59, align 8, !tbaa !12
  %669 = call double @llvm.fmuladd.f64(double %667, double %668, double %666)
  %670 = load double, ptr %53, align 8, !tbaa !12
  %671 = load double, ptr %58, align 8, !tbaa !12
  %672 = call double @llvm.fmuladd.f64(double %670, double %671, double %669)
  store double %672, ptr %47, align 8, !tbaa !12
  %673 = load double, ptr %48, align 8, !tbaa !12
  %674 = load double, ptr %54, align 8, !tbaa !12
  %675 = load double, ptr %56, align 8, !tbaa !12
  %676 = call double @llvm.fmuladd.f64(double %674, double %675, double %673)
  %677 = load double, ptr %55, align 8, !tbaa !12
  %678 = load double, ptr %57, align 8, !tbaa !12
  %679 = fneg double %677
  %680 = call double @llvm.fmuladd.f64(double %679, double %678, double %676)
  store double %680, ptr %48, align 8, !tbaa !12
  %681 = load double, ptr %49, align 8, !tbaa !12
  %682 = load double, ptr %54, align 8, !tbaa !12
  %683 = load double, ptr %57, align 8, !tbaa !12
  %684 = call double @llvm.fmuladd.f64(double %682, double %683, double %681)
  %685 = load double, ptr %55, align 8, !tbaa !12
  %686 = load double, ptr %56, align 8, !tbaa !12
  %687 = call double @llvm.fmuladd.f64(double %685, double %686, double %684)
  store double %687, ptr %49, align 8, !tbaa !12
  %688 = load double, ptr %50, align 8, !tbaa !12
  %689 = load double, ptr %54, align 8, !tbaa !12
  %690 = load double, ptr %58, align 8, !tbaa !12
  %691 = call double @llvm.fmuladd.f64(double %689, double %690, double %688)
  %692 = load double, ptr %55, align 8, !tbaa !12
  %693 = load double, ptr %59, align 8, !tbaa !12
  %694 = fneg double %692
  %695 = call double @llvm.fmuladd.f64(double %694, double %693, double %691)
  store double %695, ptr %50, align 8, !tbaa !12
  %696 = load double, ptr %51, align 8, !tbaa !12
  %697 = load double, ptr %54, align 8, !tbaa !12
  %698 = load double, ptr %59, align 8, !tbaa !12
  %699 = call double @llvm.fmuladd.f64(double %697, double %698, double %696)
  %700 = load double, ptr %55, align 8, !tbaa !12
  %701 = load double, ptr %58, align 8, !tbaa !12
  %702 = call double @llvm.fmuladd.f64(double %700, double %701, double %699)
  store double %702, ptr %51, align 8, !tbaa !12
  %703 = load i64, ptr %71, align 8, !tbaa !5
  %704 = add nsw i64 %703, 1
  store i64 %704, ptr %71, align 8, !tbaa !5
  %705 = load i64, ptr %72, align 8, !tbaa !5
  %706 = add nsw i64 %705, 1
  store i64 %706, ptr %72, align 8, !tbaa !5
  br label %707

707:                                              ; preds = %642
  %708 = load i64, ptr %70, align 8, !tbaa !5
  %709 = add nsw i64 %708, 1
  store i64 %709, ptr %70, align 8, !tbaa !5
  br label %369, !llvm.loop !23

710:                                              ; preds = %369
  %711 = load double, ptr %44, align 8, !tbaa !12
  %712 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %40, i32 0, i32 0
  store double %711, ptr %712, align 8, !tbaa !20
  %713 = load double, ptr %45, align 8, !tbaa !12
  %714 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %40, i32 0, i32 1
  store double %713, ptr %714, align 8, !tbaa !22
  %715 = load double, ptr %48, align 8, !tbaa !12
  %716 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 0
  store double %715, ptr %716, align 8, !tbaa !20
  %717 = load double, ptr %49, align 8, !tbaa !12
  %718 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 1
  store double %717, ptr %718, align 8, !tbaa !22
  %719 = load double, ptr %46, align 8, !tbaa !12
  %720 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %41, i32 0, i32 0
  store double %719, ptr %720, align 8, !tbaa !20
  %721 = load double, ptr %47, align 8, !tbaa !12
  %722 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %41, i32 0, i32 1
  store double %721, ptr %722, align 8, !tbaa !22
  %723 = load double, ptr %50, align 8, !tbaa !12
  %724 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %43, i32 0, i32 0
  store double %723, ptr %724, align 8, !tbaa !20
  %725 = load double, ptr %51, align 8, !tbaa !12
  %726 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %43, i32 0, i32 1
  store double %725, ptr %726, align 8, !tbaa !22
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %83, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %727 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %728 = load double, ptr %727, align 8
  %729 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %730 = load double, ptr %729, align 8
  %731 = call noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double %728, double %730, double noundef 0.000000e+00)
  br i1 %731, label %732, label %841

732:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %85, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %86, ptr align 8 %40, i64 16, i1 false), !tbaa.struct !11
  %733 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %734 = load double, ptr %733, align 8
  %735 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  %736 = load double, ptr %735, align 8
  %737 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %738 = load double, ptr %737, align 8
  %739 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %740 = load double, ptr %739, align 8
  %741 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %734, double %736, double %738, double %740)
  %742 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %743 = extractvalue { double, double } %741, 0
  store double %743, ptr %742, align 8
  %744 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %745 = extractvalue { double, double } %741, 1
  store double %745, ptr %744, align 8
  %746 = load ptr, ptr %33, align 8, !tbaa !9
  %747 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %746, i32 0, i32 6
  %748 = load ptr, ptr %747, align 8, !tbaa !14
  %749 = load i64, ptr %34, align 8, !tbaa !5
  %750 = load i64, ptr %37, align 8, !tbaa !5
  %751 = add nsw i64 %749, %750
  %752 = add nsw i64 %751, 0
  %753 = getelementptr inbounds ptr, ptr %748, i64 %752
  %754 = load ptr, ptr %753, align 8, !tbaa !9
  %755 = load i64, ptr %35, align 8, !tbaa !5
  %756 = load i64, ptr %38, align 8, !tbaa !5
  %757 = add nsw i64 %755, %756
  %758 = add nsw i64 %757, 0
  %759 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %754, i64 %758
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %759, ptr align 8 %84, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %88, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %89, ptr align 8 %41, i64 16, i1 false), !tbaa.struct !11
  %760 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 0
  %761 = load double, ptr %760, align 8
  %762 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 1
  %763 = load double, ptr %762, align 8
  %764 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %765 = load double, ptr %764, align 8
  %766 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %767 = load double, ptr %766, align 8
  %768 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %761, double %763, double %765, double %767)
  %769 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %770 = extractvalue { double, double } %768, 0
  store double %770, ptr %769, align 8
  %771 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %772 = extractvalue { double, double } %768, 1
  store double %772, ptr %771, align 8
  %773 = load ptr, ptr %33, align 8, !tbaa !9
  %774 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %773, i32 0, i32 6
  %775 = load ptr, ptr %774, align 8, !tbaa !14
  %776 = load i64, ptr %34, align 8, !tbaa !5
  %777 = load i64, ptr %37, align 8, !tbaa !5
  %778 = add nsw i64 %776, %777
  %779 = add nsw i64 %778, 0
  %780 = getelementptr inbounds ptr, ptr %775, i64 %779
  %781 = load ptr, ptr %780, align 8, !tbaa !9
  %782 = load i64, ptr %35, align 8, !tbaa !5
  %783 = load i64, ptr %38, align 8, !tbaa !5
  %784 = add nsw i64 %782, %783
  %785 = add nsw i64 %784, 1
  %786 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %781, i64 %785
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %786, ptr align 8 %87, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %91, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %92, ptr align 8 %42, i64 16, i1 false), !tbaa.struct !11
  %787 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %788 = load double, ptr %787, align 8
  %789 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %790 = load double, ptr %789, align 8
  %791 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %792 = load double, ptr %791, align 8
  %793 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %794 = load double, ptr %793, align 8
  %795 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %788, double %790, double %792, double %794)
  %796 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %797 = extractvalue { double, double } %795, 0
  store double %797, ptr %796, align 8
  %798 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %799 = extractvalue { double, double } %795, 1
  store double %799, ptr %798, align 8
  %800 = load ptr, ptr %33, align 8, !tbaa !9
  %801 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %800, i32 0, i32 6
  %802 = load ptr, ptr %801, align 8, !tbaa !14
  %803 = load i64, ptr %34, align 8, !tbaa !5
  %804 = load i64, ptr %37, align 8, !tbaa !5
  %805 = add nsw i64 %803, %804
  %806 = add nsw i64 %805, 1
  %807 = getelementptr inbounds ptr, ptr %802, i64 %806
  %808 = load ptr, ptr %807, align 8, !tbaa !9
  %809 = load i64, ptr %35, align 8, !tbaa !5
  %810 = load i64, ptr %38, align 8, !tbaa !5
  %811 = add nsw i64 %809, %810
  %812 = add nsw i64 %811, 0
  %813 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %808, i64 %812
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %813, ptr align 8 %90, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %94, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %43, i64 16, i1 false), !tbaa.struct !11
  %814 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 0
  %815 = load double, ptr %814, align 8
  %816 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 1
  %817 = load double, ptr %816, align 8
  %818 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 0
  %819 = load double, ptr %818, align 8
  %820 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 1
  %821 = load double, ptr %820, align 8
  %822 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %815, double %817, double %819, double %821)
  %823 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 0
  %824 = extractvalue { double, double } %822, 0
  store double %824, ptr %823, align 8
  %825 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 1
  %826 = extractvalue { double, double } %822, 1
  store double %826, ptr %825, align 8
  %827 = load ptr, ptr %33, align 8, !tbaa !9
  %828 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %827, i32 0, i32 6
  %829 = load ptr, ptr %828, align 8, !tbaa !14
  %830 = load i64, ptr %34, align 8, !tbaa !5
  %831 = load i64, ptr %37, align 8, !tbaa !5
  %832 = add nsw i64 %830, %831
  %833 = add nsw i64 %832, 1
  %834 = getelementptr inbounds ptr, ptr %829, i64 %833
  %835 = load ptr, ptr %834, align 8, !tbaa !9
  %836 = load i64, ptr %35, align 8, !tbaa !5
  %837 = load i64, ptr %38, align 8, !tbaa !5
  %838 = add nsw i64 %836, %837
  %839 = add nsw i64 %838, 1
  %840 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %835, i64 %839
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %840, ptr align 8 %93, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #5
  br label %1110

841:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %98, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %842 = load ptr, ptr %33, align 8, !tbaa !9
  %843 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %842, i32 0, i32 6
  %844 = load ptr, ptr %843, align 8, !tbaa !14
  %845 = load i64, ptr %34, align 8, !tbaa !5
  %846 = load i64, ptr %37, align 8, !tbaa !5
  %847 = add nsw i64 %845, %846
  %848 = add nsw i64 %847, 0
  %849 = getelementptr inbounds ptr, ptr %844, i64 %848
  %850 = load ptr, ptr %849, align 8, !tbaa !9
  %851 = load i64, ptr %35, align 8, !tbaa !5
  %852 = load i64, ptr %38, align 8, !tbaa !5
  %853 = add nsw i64 %851, %852
  %854 = add nsw i64 %853, 0
  %855 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %850, i64 %854
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %99, ptr align 8 %855, i64 16, i1 false), !tbaa.struct !11
  %856 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 0
  %857 = load double, ptr %856, align 8
  %858 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 1
  %859 = load double, ptr %858, align 8
  %860 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 0
  %861 = load double, ptr %860, align 8
  %862 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 1
  %863 = load double, ptr %862, align 8
  %864 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %857, double %859, double %861, double %863)
  %865 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 0
  %866 = extractvalue { double, double } %864, 0
  store double %866, ptr %865, align 8
  %867 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 1
  %868 = extractvalue { double, double } %864, 1
  store double %868, ptr %867, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %101, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %102, ptr align 8 %40, i64 16, i1 false), !tbaa.struct !11
  %869 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 0
  %870 = load double, ptr %869, align 8
  %871 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 1
  %872 = load double, ptr %871, align 8
  %873 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 0
  %874 = load double, ptr %873, align 8
  %875 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 1
  %876 = load double, ptr %875, align 8
  %877 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %870, double %872, double %874, double %876)
  %878 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 0
  %879 = extractvalue { double, double } %877, 0
  store double %879, ptr %878, align 8
  %880 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 1
  %881 = extractvalue { double, double } %877, 1
  store double %881, ptr %880, align 8
  %882 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 0
  %883 = load double, ptr %882, align 8
  %884 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 1
  %885 = load double, ptr %884, align 8
  %886 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 0
  %887 = load double, ptr %886, align 8
  %888 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 1
  %889 = load double, ptr %888, align 8
  %890 = call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %883, double %885, double %887, double %889)
  %891 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 0
  %892 = extractvalue { double, double } %890, 0
  store double %892, ptr %891, align 8
  %893 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 1
  %894 = extractvalue { double, double } %890, 1
  store double %894, ptr %893, align 8
  %895 = load ptr, ptr %33, align 8, !tbaa !9
  %896 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %895, i32 0, i32 6
  %897 = load ptr, ptr %896, align 8, !tbaa !14
  %898 = load i64, ptr %34, align 8, !tbaa !5
  %899 = load i64, ptr %37, align 8, !tbaa !5
  %900 = add nsw i64 %898, %899
  %901 = add nsw i64 %900, 0
  %902 = getelementptr inbounds ptr, ptr %897, i64 %901
  %903 = load ptr, ptr %902, align 8, !tbaa !9
  %904 = load i64, ptr %35, align 8, !tbaa !5
  %905 = load i64, ptr %38, align 8, !tbaa !5
  %906 = add nsw i64 %904, %905
  %907 = add nsw i64 %906, 0
  %908 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %903, i64 %907
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %908, ptr align 8 %96, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %105, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %909 = load ptr, ptr %33, align 8, !tbaa !9
  %910 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %909, i32 0, i32 6
  %911 = load ptr, ptr %910, align 8, !tbaa !14
  %912 = load i64, ptr %34, align 8, !tbaa !5
  %913 = load i64, ptr %37, align 8, !tbaa !5
  %914 = add nsw i64 %912, %913
  %915 = add nsw i64 %914, 0
  %916 = getelementptr inbounds ptr, ptr %911, i64 %915
  %917 = load ptr, ptr %916, align 8, !tbaa !9
  %918 = load i64, ptr %35, align 8, !tbaa !5
  %919 = load i64, ptr %38, align 8, !tbaa !5
  %920 = add nsw i64 %918, %919
  %921 = add nsw i64 %920, 1
  %922 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %917, i64 %921
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %106, ptr align 8 %922, i64 16, i1 false), !tbaa.struct !11
  %923 = getelementptr inbounds { double, double }, ptr %105, i32 0, i32 0
  %924 = load double, ptr %923, align 8
  %925 = getelementptr inbounds { double, double }, ptr %105, i32 0, i32 1
  %926 = load double, ptr %925, align 8
  %927 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 0
  %928 = load double, ptr %927, align 8
  %929 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 1
  %930 = load double, ptr %929, align 8
  %931 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %924, double %926, double %928, double %930)
  %932 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 0
  %933 = extractvalue { double, double } %931, 0
  store double %933, ptr %932, align 8
  %934 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 1
  %935 = extractvalue { double, double } %931, 1
  store double %935, ptr %934, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %108, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %109, ptr align 8 %41, i64 16, i1 false), !tbaa.struct !11
  %936 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 0
  %937 = load double, ptr %936, align 8
  %938 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 1
  %939 = load double, ptr %938, align 8
  %940 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 0
  %941 = load double, ptr %940, align 8
  %942 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 1
  %943 = load double, ptr %942, align 8
  %944 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %937, double %939, double %941, double %943)
  %945 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 0
  %946 = extractvalue { double, double } %944, 0
  store double %946, ptr %945, align 8
  %947 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 1
  %948 = extractvalue { double, double } %944, 1
  store double %948, ptr %947, align 8
  %949 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 0
  %950 = load double, ptr %949, align 8
  %951 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 1
  %952 = load double, ptr %951, align 8
  %953 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 0
  %954 = load double, ptr %953, align 8
  %955 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 1
  %956 = load double, ptr %955, align 8
  %957 = call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %950, double %952, double %954, double %956)
  %958 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 0
  %959 = extractvalue { double, double } %957, 0
  store double %959, ptr %958, align 8
  %960 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 1
  %961 = extractvalue { double, double } %957, 1
  store double %961, ptr %960, align 8
  %962 = load ptr, ptr %33, align 8, !tbaa !9
  %963 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %962, i32 0, i32 6
  %964 = load ptr, ptr %963, align 8, !tbaa !14
  %965 = load i64, ptr %34, align 8, !tbaa !5
  %966 = load i64, ptr %37, align 8, !tbaa !5
  %967 = add nsw i64 %965, %966
  %968 = add nsw i64 %967, 0
  %969 = getelementptr inbounds ptr, ptr %964, i64 %968
  %970 = load ptr, ptr %969, align 8, !tbaa !9
  %971 = load i64, ptr %35, align 8, !tbaa !5
  %972 = load i64, ptr %38, align 8, !tbaa !5
  %973 = add nsw i64 %971, %972
  %974 = add nsw i64 %973, 1
  %975 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %970, i64 %974
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %975, ptr align 8 %103, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %112, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %976 = load ptr, ptr %33, align 8, !tbaa !9
  %977 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %976, i32 0, i32 6
  %978 = load ptr, ptr %977, align 8, !tbaa !14
  %979 = load i64, ptr %34, align 8, !tbaa !5
  %980 = load i64, ptr %37, align 8, !tbaa !5
  %981 = add nsw i64 %979, %980
  %982 = add nsw i64 %981, 1
  %983 = getelementptr inbounds ptr, ptr %978, i64 %982
  %984 = load ptr, ptr %983, align 8, !tbaa !9
  %985 = load i64, ptr %35, align 8, !tbaa !5
  %986 = load i64, ptr %38, align 8, !tbaa !5
  %987 = add nsw i64 %985, %986
  %988 = add nsw i64 %987, 0
  %989 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %984, i64 %988
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %113, ptr align 8 %989, i64 16, i1 false), !tbaa.struct !11
  %990 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 0
  %991 = load double, ptr %990, align 8
  %992 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 1
  %993 = load double, ptr %992, align 8
  %994 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %995 = load double, ptr %994, align 8
  %996 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  %997 = load double, ptr %996, align 8
  %998 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %991, double %993, double %995, double %997)
  %999 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 0
  %1000 = extractvalue { double, double } %998, 0
  store double %1000, ptr %999, align 8
  %1001 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 1
  %1002 = extractvalue { double, double } %998, 1
  store double %1002, ptr %1001, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %115, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %116, ptr align 8 %42, i64 16, i1 false), !tbaa.struct !11
  %1003 = getelementptr inbounds { double, double }, ptr %115, i32 0, i32 0
  %1004 = load double, ptr %1003, align 8
  %1005 = getelementptr inbounds { double, double }, ptr %115, i32 0, i32 1
  %1006 = load double, ptr %1005, align 8
  %1007 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 0
  %1008 = load double, ptr %1007, align 8
  %1009 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 1
  %1010 = load double, ptr %1009, align 8
  %1011 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %1004, double %1006, double %1008, double %1010)
  %1012 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %1013 = extractvalue { double, double } %1011, 0
  store double %1013, ptr %1012, align 8
  %1014 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %1015 = extractvalue { double, double } %1011, 1
  store double %1015, ptr %1014, align 8
  %1016 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 0
  %1017 = load double, ptr %1016, align 8
  %1018 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 1
  %1019 = load double, ptr %1018, align 8
  %1020 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %1021 = load double, ptr %1020, align 8
  %1022 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %1023 = load double, ptr %1022, align 8
  %1024 = call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %1017, double %1019, double %1021, double %1023)
  %1025 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 0
  %1026 = extractvalue { double, double } %1024, 0
  store double %1026, ptr %1025, align 8
  %1027 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 1
  %1028 = extractvalue { double, double } %1024, 1
  store double %1028, ptr %1027, align 8
  %1029 = load ptr, ptr %33, align 8, !tbaa !9
  %1030 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1029, i32 0, i32 6
  %1031 = load ptr, ptr %1030, align 8, !tbaa !14
  %1032 = load i64, ptr %34, align 8, !tbaa !5
  %1033 = load i64, ptr %37, align 8, !tbaa !5
  %1034 = add nsw i64 %1032, %1033
  %1035 = add nsw i64 %1034, 1
  %1036 = getelementptr inbounds ptr, ptr %1031, i64 %1035
  %1037 = load ptr, ptr %1036, align 8, !tbaa !9
  %1038 = load i64, ptr %35, align 8, !tbaa !5
  %1039 = load i64, ptr %38, align 8, !tbaa !5
  %1040 = add nsw i64 %1038, %1039
  %1041 = add nsw i64 %1040, 0
  %1042 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1037, i64 %1041
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1042, ptr align 8 %110, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %117) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %119, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %1043 = load ptr, ptr %33, align 8, !tbaa !9
  %1044 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1043, i32 0, i32 6
  %1045 = load ptr, ptr %1044, align 8, !tbaa !14
  %1046 = load i64, ptr %34, align 8, !tbaa !5
  %1047 = load i64, ptr %37, align 8, !tbaa !5
  %1048 = add nsw i64 %1046, %1047
  %1049 = add nsw i64 %1048, 1
  %1050 = getelementptr inbounds ptr, ptr %1045, i64 %1049
  %1051 = load ptr, ptr %1050, align 8, !tbaa !9
  %1052 = load i64, ptr %35, align 8, !tbaa !5
  %1053 = load i64, ptr %38, align 8, !tbaa !5
  %1054 = add nsw i64 %1052, %1053
  %1055 = add nsw i64 %1054, 1
  %1056 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1051, i64 %1055
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %120, ptr align 8 %1056, i64 16, i1 false), !tbaa.struct !11
  %1057 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 0
  %1058 = load double, ptr %1057, align 8
  %1059 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 1
  %1060 = load double, ptr %1059, align 8
  %1061 = getelementptr inbounds { double, double }, ptr %120, i32 0, i32 0
  %1062 = load double, ptr %1061, align 8
  %1063 = getelementptr inbounds { double, double }, ptr %120, i32 0, i32 1
  %1064 = load double, ptr %1063, align 8
  %1065 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %1058, double %1060, double %1062, double %1064)
  %1066 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 0
  %1067 = extractvalue { double, double } %1065, 0
  store double %1067, ptr %1066, align 8
  %1068 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 1
  %1069 = extractvalue { double, double } %1065, 1
  store double %1069, ptr %1068, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %122, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %123, ptr align 8 %43, i64 16, i1 false), !tbaa.struct !11
  %1070 = getelementptr inbounds { double, double }, ptr %122, i32 0, i32 0
  %1071 = load double, ptr %1070, align 8
  %1072 = getelementptr inbounds { double, double }, ptr %122, i32 0, i32 1
  %1073 = load double, ptr %1072, align 8
  %1074 = getelementptr inbounds { double, double }, ptr %123, i32 0, i32 0
  %1075 = load double, ptr %1074, align 8
  %1076 = getelementptr inbounds { double, double }, ptr %123, i32 0, i32 1
  %1077 = load double, ptr %1076, align 8
  %1078 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %1071, double %1073, double %1075, double %1077)
  %1079 = getelementptr inbounds { double, double }, ptr %121, i32 0, i32 0
  %1080 = extractvalue { double, double } %1078, 0
  store double %1080, ptr %1079, align 8
  %1081 = getelementptr inbounds { double, double }, ptr %121, i32 0, i32 1
  %1082 = extractvalue { double, double } %1078, 1
  store double %1082, ptr %1081, align 8
  %1083 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 0
  %1084 = load double, ptr %1083, align 8
  %1085 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 1
  %1086 = load double, ptr %1085, align 8
  %1087 = getelementptr inbounds { double, double }, ptr %121, i32 0, i32 0
  %1088 = load double, ptr %1087, align 8
  %1089 = getelementptr inbounds { double, double }, ptr %121, i32 0, i32 1
  %1090 = load double, ptr %1089, align 8
  %1091 = call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %1084, double %1086, double %1088, double %1090)
  %1092 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 0
  %1093 = extractvalue { double, double } %1091, 0
  store double %1093, ptr %1092, align 8
  %1094 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 1
  %1095 = extractvalue { double, double } %1091, 1
  store double %1095, ptr %1094, align 8
  %1096 = load ptr, ptr %33, align 8, !tbaa !9
  %1097 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1096, i32 0, i32 6
  %1098 = load ptr, ptr %1097, align 8, !tbaa !14
  %1099 = load i64, ptr %34, align 8, !tbaa !5
  %1100 = load i64, ptr %37, align 8, !tbaa !5
  %1101 = add nsw i64 %1099, %1100
  %1102 = add nsw i64 %1101, 1
  %1103 = getelementptr inbounds ptr, ptr %1098, i64 %1102
  %1104 = load ptr, ptr %1103, align 8, !tbaa !9
  %1105 = load i64, ptr %35, align 8, !tbaa !5
  %1106 = load i64, ptr %38, align 8, !tbaa !5
  %1107 = add nsw i64 %1105, %1106
  %1108 = add nsw i64 %1107, 1
  %1109 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1104, i64 %1108
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1109, ptr align 8 %117, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %117) #5
  br label %1110

1110:                                             ; preds = %841, %732
  br label %1632

1111:                                             ; preds = %317, %312
  %1112 = load i64, ptr %37, align 8, !tbaa !5
  store i64 %1112, ptr %64, align 8, !tbaa !5
  %1113 = load i64, ptr %37, align 8, !tbaa !5
  %1114 = add nsw i64 %1113, 1
  %1115 = load i64, ptr %22, align 8, !tbaa !5
  %1116 = sub nsw i64 %1115, 1
  %1117 = load ptr, ptr %36, align 8, !tbaa !9
  %1118 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %1114, i64 noundef %1116, ptr noundef %1117)
  store i64 %1118, ptr %65, align 8, !tbaa !5
  %1119 = load i64, ptr %38, align 8, !tbaa !5
  store i64 %1119, ptr %67, align 8, !tbaa !5
  %1120 = load i64, ptr %38, align 8, !tbaa !5
  %1121 = add nsw i64 %1120, 1
  %1122 = load i64, ptr %23, align 8, !tbaa !5
  %1123 = sub nsw i64 %1122, 1
  %1124 = load ptr, ptr %36, align 8, !tbaa !9
  %1125 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %1121, i64 noundef %1123, ptr noundef %1124)
  store i64 %1125, ptr %68, align 8, !tbaa !5
  %1126 = load i64, ptr %64, align 8, !tbaa !5
  store i64 %1126, ptr %66, align 8, !tbaa !5
  br label %1127

1127:                                             ; preds = %1628, %1111
  %1128 = load i64, ptr %66, align 8, !tbaa !5
  %1129 = load i64, ptr %65, align 8, !tbaa !5
  %1130 = icmp sle i64 %1128, %1129
  br i1 %1130, label %1131, label %1631

1131:                                             ; preds = %1127
  %1132 = load i64, ptr %67, align 8, !tbaa !5
  store i64 %1132, ptr %69, align 8, !tbaa !5
  br label %1133

1133:                                             ; preds = %1624, %1131
  %1134 = load i64, ptr %69, align 8, !tbaa !5
  %1135 = load i64, ptr %68, align 8, !tbaa !5
  %1136 = icmp sle i64 %1134, %1135
  br i1 %1136, label %1137, label %1627

1137:                                             ; preds = %1133
  %1138 = load i64, ptr %24, align 8, !tbaa !5
  %1139 = icmp eq i64 %1138, 0
  br i1 %1139, label %1146, label %1140

1140:                                             ; preds = %1137
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %124, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  %1141 = getelementptr inbounds { double, double }, ptr %124, i32 0, i32 0
  %1142 = load double, ptr %1141, align 8
  %1143 = getelementptr inbounds { double, double }, ptr %124, i32 0, i32 1
  %1144 = load double, ptr %1143, align 8
  %1145 = call noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double %1142, double %1144, double noundef 0.000000e+00)
  br i1 %1145, label %1146, label %1152

1146:                                             ; preds = %1140, %1137
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #5
  %1147 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %1148 = getelementptr inbounds { double, double }, ptr %125, i32 0, i32 0
  %1149 = extractvalue { double, double } %1147, 0
  store double %1149, ptr %1148, align 8
  %1150 = getelementptr inbounds { double, double }, ptr %125, i32 0, i32 1
  %1151 = extractvalue { double, double } %1147, 1
  store double %1151, ptr %1150, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %125, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #5
  br label %1527

1152:                                             ; preds = %1140
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #5
  %1153 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %1154 = getelementptr inbounds { double, double }, ptr %126, i32 0, i32 0
  %1155 = extractvalue { double, double } %1153, 0
  store double %1155, ptr %1154, align 8
  %1156 = getelementptr inbounds { double, double }, ptr %126, i32 0, i32 1
  %1157 = extractvalue { double, double } %1153, 1
  store double %1157, ptr %1156, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %126, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #5
  %1158 = load i64, ptr %28, align 8, !tbaa !5
  %1159 = icmp eq i64 %1158, 0
  br i1 %1159, label %1160, label %1198

1160:                                             ; preds = %1152
  %1161 = load i64, ptr %32, align 8, !tbaa !5
  %1162 = icmp eq i64 %1161, 0
  br i1 %1162, label %1163, label %1198

1163:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 16, ptr %127) #5
  %1164 = load ptr, ptr %25, align 8, !tbaa !9
  %1165 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1164, i32 0, i32 6
  %1166 = load ptr, ptr %1165, align 8, !tbaa !14
  %1167 = load i64, ptr %26, align 8, !tbaa !5
  %1168 = load i64, ptr %66, align 8, !tbaa !5
  %1169 = add nsw i64 %1167, %1168
  %1170 = getelementptr inbounds ptr, ptr %1166, i64 %1169
  %1171 = load ptr, ptr %1170, align 8, !tbaa !9
  %1172 = load i64, ptr %27, align 8, !tbaa !5
  %1173 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1171, i64 %1172
  %1174 = load ptr, ptr %29, align 8, !tbaa !9
  %1175 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1174, i32 0, i32 6
  %1176 = load ptr, ptr %1175, align 8, !tbaa !14
  %1177 = load i64, ptr %30, align 8, !tbaa !5
  %1178 = getelementptr inbounds ptr, ptr %1176, i64 %1177
  %1179 = load ptr, ptr %1178, align 8, !tbaa !9
  %1180 = load i64, ptr %31, align 8, !tbaa !5
  %1181 = load i64, ptr %69, align 8, !tbaa !5
  %1182 = add nsw i64 %1180, %1181
  %1183 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1179, i64 %1182
  %1184 = load ptr, ptr %29, align 8, !tbaa !9
  %1185 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1184, i32 0, i32 2
  %1186 = load i64, ptr %1185, align 8, !tbaa !24
  %1187 = load i64, ptr %27, align 8, !tbaa !5
  %1188 = load i64, ptr %27, align 8, !tbaa !5
  %1189 = load i64, ptr %24, align 8, !tbaa !5
  %1190 = add nsw i64 %1188, %1189
  %1191 = sub nsw i64 %1190, 1
  %1192 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1187, i64 noundef %1191)
  %1193 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1173, i64 noundef 1, ptr noundef @.str.30, ptr noundef %1183, i64 noundef %1186, ptr noundef @.str.30, i64 noundef %1192)
  %1194 = getelementptr inbounds { double, double }, ptr %127, i32 0, i32 0
  %1195 = extractvalue { double, double } %1193, 0
  store double %1195, ptr %1194, align 8
  %1196 = getelementptr inbounds { double, double }, ptr %127, i32 0, i32 1
  %1197 = extractvalue { double, double } %1193, 1
  store double %1197, ptr %1196, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %127, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %127) #5
  br label %1198

1198:                                             ; preds = %1163, %1160, %1152
  %1199 = load i64, ptr %28, align 8, !tbaa !5
  %1200 = icmp eq i64 %1199, 0
  br i1 %1200, label %1201, label %1236

1201:                                             ; preds = %1198
  %1202 = load i64, ptr %32, align 8, !tbaa !5
  %1203 = icmp eq i64 %1202, 1
  br i1 %1203, label %1204, label %1236

1204:                                             ; preds = %1201
  call void @llvm.lifetime.start.p0(i64 16, ptr %128) #5
  %1205 = load ptr, ptr %25, align 8, !tbaa !9
  %1206 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1205, i32 0, i32 6
  %1207 = load ptr, ptr %1206, align 8, !tbaa !14
  %1208 = load i64, ptr %26, align 8, !tbaa !5
  %1209 = load i64, ptr %66, align 8, !tbaa !5
  %1210 = add nsw i64 %1208, %1209
  %1211 = getelementptr inbounds ptr, ptr %1207, i64 %1210
  %1212 = load ptr, ptr %1211, align 8, !tbaa !9
  %1213 = load i64, ptr %27, align 8, !tbaa !5
  %1214 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1212, i64 %1213
  %1215 = load ptr, ptr %29, align 8, !tbaa !9
  %1216 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1215, i32 0, i32 6
  %1217 = load ptr, ptr %1216, align 8, !tbaa !14
  %1218 = load i64, ptr %30, align 8, !tbaa !5
  %1219 = load i64, ptr %69, align 8, !tbaa !5
  %1220 = add nsw i64 %1218, %1219
  %1221 = getelementptr inbounds ptr, ptr %1217, i64 %1220
  %1222 = load ptr, ptr %1221, align 8, !tbaa !9
  %1223 = load i64, ptr %31, align 8, !tbaa !5
  %1224 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1222, i64 %1223
  %1225 = load i64, ptr %27, align 8, !tbaa !5
  %1226 = load i64, ptr %27, align 8, !tbaa !5
  %1227 = load i64, ptr %24, align 8, !tbaa !5
  %1228 = add nsw i64 %1226, %1227
  %1229 = sub nsw i64 %1228, 1
  %1230 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1225, i64 noundef %1229)
  %1231 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1214, i64 noundef 1, ptr noundef @.str.30, ptr noundef %1224, i64 noundef 1, ptr noundef @.str.30, i64 noundef %1230)
  %1232 = getelementptr inbounds { double, double }, ptr %128, i32 0, i32 0
  %1233 = extractvalue { double, double } %1231, 0
  store double %1233, ptr %1232, align 8
  %1234 = getelementptr inbounds { double, double }, ptr %128, i32 0, i32 1
  %1235 = extractvalue { double, double } %1231, 1
  store double %1235, ptr %1234, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %128, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #5
  br label %1236

1236:                                             ; preds = %1204, %1201, %1198
  %1237 = load i64, ptr %28, align 8, !tbaa !5
  %1238 = icmp eq i64 %1237, 0
  br i1 %1238, label %1239, label %1274

1239:                                             ; preds = %1236
  %1240 = load i64, ptr %32, align 8, !tbaa !5
  %1241 = icmp eq i64 %1240, 2
  br i1 %1241, label %1242, label %1274

1242:                                             ; preds = %1239
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #5
  %1243 = load ptr, ptr %25, align 8, !tbaa !9
  %1244 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1243, i32 0, i32 6
  %1245 = load ptr, ptr %1244, align 8, !tbaa !14
  %1246 = load i64, ptr %26, align 8, !tbaa !5
  %1247 = load i64, ptr %66, align 8, !tbaa !5
  %1248 = add nsw i64 %1246, %1247
  %1249 = getelementptr inbounds ptr, ptr %1245, i64 %1248
  %1250 = load ptr, ptr %1249, align 8, !tbaa !9
  %1251 = load i64, ptr %27, align 8, !tbaa !5
  %1252 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1250, i64 %1251
  %1253 = load ptr, ptr %29, align 8, !tbaa !9
  %1254 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1253, i32 0, i32 6
  %1255 = load ptr, ptr %1254, align 8, !tbaa !14
  %1256 = load i64, ptr %30, align 8, !tbaa !5
  %1257 = load i64, ptr %69, align 8, !tbaa !5
  %1258 = add nsw i64 %1256, %1257
  %1259 = getelementptr inbounds ptr, ptr %1255, i64 %1258
  %1260 = load ptr, ptr %1259, align 8, !tbaa !9
  %1261 = load i64, ptr %31, align 8, !tbaa !5
  %1262 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1260, i64 %1261
  %1263 = load i64, ptr %27, align 8, !tbaa !5
  %1264 = load i64, ptr %27, align 8, !tbaa !5
  %1265 = load i64, ptr %24, align 8, !tbaa !5
  %1266 = add nsw i64 %1264, %1265
  %1267 = sub nsw i64 %1266, 1
  %1268 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1263, i64 noundef %1267)
  %1269 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1252, i64 noundef 1, ptr noundef @.str.30, ptr noundef %1262, i64 noundef 1, ptr noundef @.str.31, i64 noundef %1268)
  %1270 = getelementptr inbounds { double, double }, ptr %129, i32 0, i32 0
  %1271 = extractvalue { double, double } %1269, 0
  store double %1271, ptr %1270, align 8
  %1272 = getelementptr inbounds { double, double }, ptr %129, i32 0, i32 1
  %1273 = extractvalue { double, double } %1269, 1
  store double %1273, ptr %1272, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %129, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #5
  br label %1274

1274:                                             ; preds = %1242, %1239, %1236
  %1275 = load i64, ptr %28, align 8, !tbaa !5
  %1276 = icmp eq i64 %1275, 1
  br i1 %1276, label %1277, label %1318

1277:                                             ; preds = %1274
  %1278 = load i64, ptr %32, align 8, !tbaa !5
  %1279 = icmp eq i64 %1278, 0
  br i1 %1279, label %1280, label %1318

1280:                                             ; preds = %1277
  call void @llvm.lifetime.start.p0(i64 16, ptr %130) #5
  %1281 = load ptr, ptr %25, align 8, !tbaa !9
  %1282 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1281, i32 0, i32 6
  %1283 = load ptr, ptr %1282, align 8, !tbaa !14
  %1284 = load i64, ptr %26, align 8, !tbaa !5
  %1285 = getelementptr inbounds ptr, ptr %1283, i64 %1284
  %1286 = load ptr, ptr %1285, align 8, !tbaa !9
  %1287 = load i64, ptr %27, align 8, !tbaa !5
  %1288 = load i64, ptr %66, align 8, !tbaa !5
  %1289 = add nsw i64 %1287, %1288
  %1290 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1286, i64 %1289
  %1291 = load ptr, ptr %25, align 8, !tbaa !9
  %1292 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1291, i32 0, i32 2
  %1293 = load i64, ptr %1292, align 8, !tbaa !24
  %1294 = load ptr, ptr %29, align 8, !tbaa !9
  %1295 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1294, i32 0, i32 6
  %1296 = load ptr, ptr %1295, align 8, !tbaa !14
  %1297 = load i64, ptr %30, align 8, !tbaa !5
  %1298 = getelementptr inbounds ptr, ptr %1296, i64 %1297
  %1299 = load ptr, ptr %1298, align 8, !tbaa !9
  %1300 = load i64, ptr %31, align 8, !tbaa !5
  %1301 = load i64, ptr %69, align 8, !tbaa !5
  %1302 = add nsw i64 %1300, %1301
  %1303 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1299, i64 %1302
  %1304 = load ptr, ptr %29, align 8, !tbaa !9
  %1305 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1304, i32 0, i32 2
  %1306 = load i64, ptr %1305, align 8, !tbaa !24
  %1307 = load i64, ptr %26, align 8, !tbaa !5
  %1308 = load i64, ptr %26, align 8, !tbaa !5
  %1309 = load i64, ptr %24, align 8, !tbaa !5
  %1310 = add nsw i64 %1308, %1309
  %1311 = sub nsw i64 %1310, 1
  %1312 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1307, i64 noundef %1311)
  %1313 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1290, i64 noundef %1293, ptr noundef @.str.30, ptr noundef %1303, i64 noundef %1306, ptr noundef @.str.30, i64 noundef %1312)
  %1314 = getelementptr inbounds { double, double }, ptr %130, i32 0, i32 0
  %1315 = extractvalue { double, double } %1313, 0
  store double %1315, ptr %1314, align 8
  %1316 = getelementptr inbounds { double, double }, ptr %130, i32 0, i32 1
  %1317 = extractvalue { double, double } %1313, 1
  store double %1317, ptr %1316, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %130, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #5
  br label %1318

1318:                                             ; preds = %1280, %1277, %1274
  %1319 = load i64, ptr %28, align 8, !tbaa !5
  %1320 = icmp eq i64 %1319, 1
  br i1 %1320, label %1321, label %1359

1321:                                             ; preds = %1318
  %1322 = load i64, ptr %32, align 8, !tbaa !5
  %1323 = icmp eq i64 %1322, 1
  br i1 %1323, label %1324, label %1359

1324:                                             ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #5
  %1325 = load ptr, ptr %25, align 8, !tbaa !9
  %1326 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1325, i32 0, i32 6
  %1327 = load ptr, ptr %1326, align 8, !tbaa !14
  %1328 = load i64, ptr %26, align 8, !tbaa !5
  %1329 = getelementptr inbounds ptr, ptr %1327, i64 %1328
  %1330 = load ptr, ptr %1329, align 8, !tbaa !9
  %1331 = load i64, ptr %27, align 8, !tbaa !5
  %1332 = load i64, ptr %66, align 8, !tbaa !5
  %1333 = add nsw i64 %1331, %1332
  %1334 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1330, i64 %1333
  %1335 = load ptr, ptr %25, align 8, !tbaa !9
  %1336 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1335, i32 0, i32 2
  %1337 = load i64, ptr %1336, align 8, !tbaa !24
  %1338 = load ptr, ptr %29, align 8, !tbaa !9
  %1339 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1338, i32 0, i32 6
  %1340 = load ptr, ptr %1339, align 8, !tbaa !14
  %1341 = load i64, ptr %30, align 8, !tbaa !5
  %1342 = load i64, ptr %69, align 8, !tbaa !5
  %1343 = add nsw i64 %1341, %1342
  %1344 = getelementptr inbounds ptr, ptr %1340, i64 %1343
  %1345 = load ptr, ptr %1344, align 8, !tbaa !9
  %1346 = load i64, ptr %31, align 8, !tbaa !5
  %1347 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1345, i64 %1346
  %1348 = load i64, ptr %26, align 8, !tbaa !5
  %1349 = load i64, ptr %26, align 8, !tbaa !5
  %1350 = load i64, ptr %24, align 8, !tbaa !5
  %1351 = add nsw i64 %1349, %1350
  %1352 = sub nsw i64 %1351, 1
  %1353 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1348, i64 noundef %1352)
  %1354 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1334, i64 noundef %1337, ptr noundef @.str.30, ptr noundef %1347, i64 noundef 1, ptr noundef @.str.30, i64 noundef %1353)
  %1355 = getelementptr inbounds { double, double }, ptr %131, i32 0, i32 0
  %1356 = extractvalue { double, double } %1354, 0
  store double %1356, ptr %1355, align 8
  %1357 = getelementptr inbounds { double, double }, ptr %131, i32 0, i32 1
  %1358 = extractvalue { double, double } %1354, 1
  store double %1358, ptr %1357, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %131, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #5
  br label %1359

1359:                                             ; preds = %1324, %1321, %1318
  %1360 = load i64, ptr %28, align 8, !tbaa !5
  %1361 = icmp eq i64 %1360, 1
  br i1 %1361, label %1362, label %1400

1362:                                             ; preds = %1359
  %1363 = load i64, ptr %32, align 8, !tbaa !5
  %1364 = icmp eq i64 %1363, 2
  br i1 %1364, label %1365, label %1400

1365:                                             ; preds = %1362
  call void @llvm.lifetime.start.p0(i64 16, ptr %132) #5
  %1366 = load ptr, ptr %25, align 8, !tbaa !9
  %1367 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1366, i32 0, i32 6
  %1368 = load ptr, ptr %1367, align 8, !tbaa !14
  %1369 = load i64, ptr %26, align 8, !tbaa !5
  %1370 = getelementptr inbounds ptr, ptr %1368, i64 %1369
  %1371 = load ptr, ptr %1370, align 8, !tbaa !9
  %1372 = load i64, ptr %27, align 8, !tbaa !5
  %1373 = load i64, ptr %66, align 8, !tbaa !5
  %1374 = add nsw i64 %1372, %1373
  %1375 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1371, i64 %1374
  %1376 = load ptr, ptr %25, align 8, !tbaa !9
  %1377 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1376, i32 0, i32 2
  %1378 = load i64, ptr %1377, align 8, !tbaa !24
  %1379 = load ptr, ptr %29, align 8, !tbaa !9
  %1380 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1379, i32 0, i32 6
  %1381 = load ptr, ptr %1380, align 8, !tbaa !14
  %1382 = load i64, ptr %30, align 8, !tbaa !5
  %1383 = load i64, ptr %69, align 8, !tbaa !5
  %1384 = add nsw i64 %1382, %1383
  %1385 = getelementptr inbounds ptr, ptr %1381, i64 %1384
  %1386 = load ptr, ptr %1385, align 8, !tbaa !9
  %1387 = load i64, ptr %31, align 8, !tbaa !5
  %1388 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1386, i64 %1387
  %1389 = load i64, ptr %26, align 8, !tbaa !5
  %1390 = load i64, ptr %26, align 8, !tbaa !5
  %1391 = load i64, ptr %24, align 8, !tbaa !5
  %1392 = add nsw i64 %1390, %1391
  %1393 = sub nsw i64 %1392, 1
  %1394 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1389, i64 noundef %1393)
  %1395 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1375, i64 noundef %1378, ptr noundef @.str.30, ptr noundef %1388, i64 noundef 1, ptr noundef @.str.31, i64 noundef %1394)
  %1396 = getelementptr inbounds { double, double }, ptr %132, i32 0, i32 0
  %1397 = extractvalue { double, double } %1395, 0
  store double %1397, ptr %1396, align 8
  %1398 = getelementptr inbounds { double, double }, ptr %132, i32 0, i32 1
  %1399 = extractvalue { double, double } %1395, 1
  store double %1399, ptr %1398, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %132, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %132) #5
  br label %1400

1400:                                             ; preds = %1365, %1362, %1359
  %1401 = load i64, ptr %28, align 8, !tbaa !5
  %1402 = icmp eq i64 %1401, 2
  br i1 %1402, label %1403, label %1444

1403:                                             ; preds = %1400
  %1404 = load i64, ptr %32, align 8, !tbaa !5
  %1405 = icmp eq i64 %1404, 0
  br i1 %1405, label %1406, label %1444

1406:                                             ; preds = %1403
  call void @llvm.lifetime.start.p0(i64 16, ptr %133) #5
  %1407 = load ptr, ptr %25, align 8, !tbaa !9
  %1408 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1407, i32 0, i32 6
  %1409 = load ptr, ptr %1408, align 8, !tbaa !14
  %1410 = load i64, ptr %26, align 8, !tbaa !5
  %1411 = getelementptr inbounds ptr, ptr %1409, i64 %1410
  %1412 = load ptr, ptr %1411, align 8, !tbaa !9
  %1413 = load i64, ptr %27, align 8, !tbaa !5
  %1414 = load i64, ptr %66, align 8, !tbaa !5
  %1415 = add nsw i64 %1413, %1414
  %1416 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1412, i64 %1415
  %1417 = load ptr, ptr %25, align 8, !tbaa !9
  %1418 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1417, i32 0, i32 2
  %1419 = load i64, ptr %1418, align 8, !tbaa !24
  %1420 = load ptr, ptr %29, align 8, !tbaa !9
  %1421 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1420, i32 0, i32 6
  %1422 = load ptr, ptr %1421, align 8, !tbaa !14
  %1423 = load i64, ptr %30, align 8, !tbaa !5
  %1424 = getelementptr inbounds ptr, ptr %1422, i64 %1423
  %1425 = load ptr, ptr %1424, align 8, !tbaa !9
  %1426 = load i64, ptr %31, align 8, !tbaa !5
  %1427 = load i64, ptr %69, align 8, !tbaa !5
  %1428 = add nsw i64 %1426, %1427
  %1429 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1425, i64 %1428
  %1430 = load ptr, ptr %29, align 8, !tbaa !9
  %1431 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1430, i32 0, i32 2
  %1432 = load i64, ptr %1431, align 8, !tbaa !24
  %1433 = load i64, ptr %26, align 8, !tbaa !5
  %1434 = load i64, ptr %26, align 8, !tbaa !5
  %1435 = load i64, ptr %24, align 8, !tbaa !5
  %1436 = add nsw i64 %1434, %1435
  %1437 = sub nsw i64 %1436, 1
  %1438 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1433, i64 noundef %1437)
  %1439 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1416, i64 noundef %1419, ptr noundef @.str.31, ptr noundef %1429, i64 noundef %1432, ptr noundef @.str.30, i64 noundef %1438)
  %1440 = getelementptr inbounds { double, double }, ptr %133, i32 0, i32 0
  %1441 = extractvalue { double, double } %1439, 0
  store double %1441, ptr %1440, align 8
  %1442 = getelementptr inbounds { double, double }, ptr %133, i32 0, i32 1
  %1443 = extractvalue { double, double } %1439, 1
  store double %1443, ptr %1442, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %133, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #5
  br label %1444

1444:                                             ; preds = %1406, %1403, %1400
  %1445 = load i64, ptr %28, align 8, !tbaa !5
  %1446 = icmp eq i64 %1445, 2
  br i1 %1446, label %1447, label %1485

1447:                                             ; preds = %1444
  %1448 = load i64, ptr %32, align 8, !tbaa !5
  %1449 = icmp eq i64 %1448, 1
  br i1 %1449, label %1450, label %1485

1450:                                             ; preds = %1447
  call void @llvm.lifetime.start.p0(i64 16, ptr %134) #5
  %1451 = load ptr, ptr %25, align 8, !tbaa !9
  %1452 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1451, i32 0, i32 6
  %1453 = load ptr, ptr %1452, align 8, !tbaa !14
  %1454 = load i64, ptr %26, align 8, !tbaa !5
  %1455 = getelementptr inbounds ptr, ptr %1453, i64 %1454
  %1456 = load ptr, ptr %1455, align 8, !tbaa !9
  %1457 = load i64, ptr %27, align 8, !tbaa !5
  %1458 = load i64, ptr %66, align 8, !tbaa !5
  %1459 = add nsw i64 %1457, %1458
  %1460 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1456, i64 %1459
  %1461 = load ptr, ptr %25, align 8, !tbaa !9
  %1462 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1461, i32 0, i32 2
  %1463 = load i64, ptr %1462, align 8, !tbaa !24
  %1464 = load ptr, ptr %29, align 8, !tbaa !9
  %1465 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1464, i32 0, i32 6
  %1466 = load ptr, ptr %1465, align 8, !tbaa !14
  %1467 = load i64, ptr %30, align 8, !tbaa !5
  %1468 = load i64, ptr %69, align 8, !tbaa !5
  %1469 = add nsw i64 %1467, %1468
  %1470 = getelementptr inbounds ptr, ptr %1466, i64 %1469
  %1471 = load ptr, ptr %1470, align 8, !tbaa !9
  %1472 = load i64, ptr %31, align 8, !tbaa !5
  %1473 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1471, i64 %1472
  %1474 = load i64, ptr %26, align 8, !tbaa !5
  %1475 = load i64, ptr %26, align 8, !tbaa !5
  %1476 = load i64, ptr %24, align 8, !tbaa !5
  %1477 = add nsw i64 %1475, %1476
  %1478 = sub nsw i64 %1477, 1
  %1479 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1474, i64 noundef %1478)
  %1480 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1460, i64 noundef %1463, ptr noundef @.str.31, ptr noundef %1473, i64 noundef 1, ptr noundef @.str.30, i64 noundef %1479)
  %1481 = getelementptr inbounds { double, double }, ptr %134, i32 0, i32 0
  %1482 = extractvalue { double, double } %1480, 0
  store double %1482, ptr %1481, align 8
  %1483 = getelementptr inbounds { double, double }, ptr %134, i32 0, i32 1
  %1484 = extractvalue { double, double } %1480, 1
  store double %1484, ptr %1483, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %134, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %134) #5
  br label %1485

1485:                                             ; preds = %1450, %1447, %1444
  %1486 = load i64, ptr %28, align 8, !tbaa !5
  %1487 = icmp eq i64 %1486, 2
  br i1 %1487, label %1488, label %1526

1488:                                             ; preds = %1485
  %1489 = load i64, ptr %32, align 8, !tbaa !5
  %1490 = icmp eq i64 %1489, 2
  br i1 %1490, label %1491, label %1526

1491:                                             ; preds = %1488
  call void @llvm.lifetime.start.p0(i64 16, ptr %135) #5
  %1492 = load ptr, ptr %25, align 8, !tbaa !9
  %1493 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1492, i32 0, i32 6
  %1494 = load ptr, ptr %1493, align 8, !tbaa !14
  %1495 = load i64, ptr %26, align 8, !tbaa !5
  %1496 = getelementptr inbounds ptr, ptr %1494, i64 %1495
  %1497 = load ptr, ptr %1496, align 8, !tbaa !9
  %1498 = load i64, ptr %27, align 8, !tbaa !5
  %1499 = load i64, ptr %66, align 8, !tbaa !5
  %1500 = add nsw i64 %1498, %1499
  %1501 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1497, i64 %1500
  %1502 = load ptr, ptr %25, align 8, !tbaa !9
  %1503 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1502, i32 0, i32 2
  %1504 = load i64, ptr %1503, align 8, !tbaa !24
  %1505 = load ptr, ptr %29, align 8, !tbaa !9
  %1506 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1505, i32 0, i32 6
  %1507 = load ptr, ptr %1506, align 8, !tbaa !14
  %1508 = load i64, ptr %30, align 8, !tbaa !5
  %1509 = load i64, ptr %69, align 8, !tbaa !5
  %1510 = add nsw i64 %1508, %1509
  %1511 = getelementptr inbounds ptr, ptr %1507, i64 %1510
  %1512 = load ptr, ptr %1511, align 8, !tbaa !9
  %1513 = load i64, ptr %31, align 8, !tbaa !5
  %1514 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1512, i64 %1513
  %1515 = load i64, ptr %26, align 8, !tbaa !5
  %1516 = load i64, ptr %26, align 8, !tbaa !5
  %1517 = load i64, ptr %24, align 8, !tbaa !5
  %1518 = add nsw i64 %1516, %1517
  %1519 = sub nsw i64 %1518, 1
  %1520 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %1515, i64 noundef %1519)
  %1521 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1501, i64 noundef %1504, ptr noundef @.str.31, ptr noundef %1514, i64 noundef 1, ptr noundef @.str.31, i64 noundef %1520)
  %1522 = getelementptr inbounds { double, double }, ptr %135, i32 0, i32 0
  %1523 = extractvalue { double, double } %1521, 0
  store double %1523, ptr %1522, align 8
  %1524 = getelementptr inbounds { double, double }, ptr %135, i32 0, i32 1
  %1525 = extractvalue { double, double } %1521, 1
  store double %1525, ptr %1524, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %135, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %135) #5
  br label %1526

1526:                                             ; preds = %1491, %1488, %1485
  br label %1527

1527:                                             ; preds = %1526, %1146
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %136, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %1528 = getelementptr inbounds { double, double }, ptr %136, i32 0, i32 0
  %1529 = load double, ptr %1528, align 8
  %1530 = getelementptr inbounds { double, double }, ptr %136, i32 0, i32 1
  %1531 = load double, ptr %1530, align 8
  %1532 = call noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double %1529, double %1531, double noundef 0.000000e+00)
  br i1 %1532, label %1533, label %1559

1533:                                             ; preds = %1527
  call void @llvm.lifetime.start.p0(i64 16, ptr %137) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %138, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %139, ptr align 8 %39, i64 16, i1 false), !tbaa.struct !11
  %1534 = getelementptr inbounds { double, double }, ptr %138, i32 0, i32 0
  %1535 = load double, ptr %1534, align 8
  %1536 = getelementptr inbounds { double, double }, ptr %138, i32 0, i32 1
  %1537 = load double, ptr %1536, align 8
  %1538 = getelementptr inbounds { double, double }, ptr %139, i32 0, i32 0
  %1539 = load double, ptr %1538, align 8
  %1540 = getelementptr inbounds { double, double }, ptr %139, i32 0, i32 1
  %1541 = load double, ptr %1540, align 8
  %1542 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %1535, double %1537, double %1539, double %1541)
  %1543 = getelementptr inbounds { double, double }, ptr %137, i32 0, i32 0
  %1544 = extractvalue { double, double } %1542, 0
  store double %1544, ptr %1543, align 8
  %1545 = getelementptr inbounds { double, double }, ptr %137, i32 0, i32 1
  %1546 = extractvalue { double, double } %1542, 1
  store double %1546, ptr %1545, align 8
  %1547 = load ptr, ptr %33, align 8, !tbaa !9
  %1548 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1547, i32 0, i32 6
  %1549 = load ptr, ptr %1548, align 8, !tbaa !14
  %1550 = load i64, ptr %34, align 8, !tbaa !5
  %1551 = load i64, ptr %66, align 8, !tbaa !5
  %1552 = add nsw i64 %1550, %1551
  %1553 = getelementptr inbounds ptr, ptr %1549, i64 %1552
  %1554 = load ptr, ptr %1553, align 8, !tbaa !9
  %1555 = load i64, ptr %35, align 8, !tbaa !5
  %1556 = load i64, ptr %69, align 8, !tbaa !5
  %1557 = add nsw i64 %1555, %1556
  %1558 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1554, i64 %1557
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1558, ptr align 8 %137, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %137) #5
  br label %1623

1559:                                             ; preds = %1527
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %142, ptr align 8 %21, i64 16, i1 false), !tbaa.struct !11
  %1560 = load ptr, ptr %33, align 8, !tbaa !9
  %1561 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1560, i32 0, i32 6
  %1562 = load ptr, ptr %1561, align 8, !tbaa !14
  %1563 = load i64, ptr %34, align 8, !tbaa !5
  %1564 = load i64, ptr %66, align 8, !tbaa !5
  %1565 = add nsw i64 %1563, %1564
  %1566 = getelementptr inbounds ptr, ptr %1562, i64 %1565
  %1567 = load ptr, ptr %1566, align 8, !tbaa !9
  %1568 = load i64, ptr %35, align 8, !tbaa !5
  %1569 = load i64, ptr %69, align 8, !tbaa !5
  %1570 = add nsw i64 %1568, %1569
  %1571 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1567, i64 %1570
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %143, ptr align 8 %1571, i64 16, i1 false), !tbaa.struct !11
  %1572 = getelementptr inbounds { double, double }, ptr %142, i32 0, i32 0
  %1573 = load double, ptr %1572, align 8
  %1574 = getelementptr inbounds { double, double }, ptr %142, i32 0, i32 1
  %1575 = load double, ptr %1574, align 8
  %1576 = getelementptr inbounds { double, double }, ptr %143, i32 0, i32 0
  %1577 = load double, ptr %1576, align 8
  %1578 = getelementptr inbounds { double, double }, ptr %143, i32 0, i32 1
  %1579 = load double, ptr %1578, align 8
  %1580 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %1573, double %1575, double %1577, double %1579)
  %1581 = getelementptr inbounds { double, double }, ptr %141, i32 0, i32 0
  %1582 = extractvalue { double, double } %1580, 0
  store double %1582, ptr %1581, align 8
  %1583 = getelementptr inbounds { double, double }, ptr %141, i32 0, i32 1
  %1584 = extractvalue { double, double } %1580, 1
  store double %1584, ptr %1583, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %145, ptr align 8 %20, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %146, ptr align 8 %39, i64 16, i1 false), !tbaa.struct !11
  %1585 = getelementptr inbounds { double, double }, ptr %145, i32 0, i32 0
  %1586 = load double, ptr %1585, align 8
  %1587 = getelementptr inbounds { double, double }, ptr %145, i32 0, i32 1
  %1588 = load double, ptr %1587, align 8
  %1589 = getelementptr inbounds { double, double }, ptr %146, i32 0, i32 0
  %1590 = load double, ptr %1589, align 8
  %1591 = getelementptr inbounds { double, double }, ptr %146, i32 0, i32 1
  %1592 = load double, ptr %1591, align 8
  %1593 = call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %1586, double %1588, double %1590, double %1592)
  %1594 = getelementptr inbounds { double, double }, ptr %144, i32 0, i32 0
  %1595 = extractvalue { double, double } %1593, 0
  store double %1595, ptr %1594, align 8
  %1596 = getelementptr inbounds { double, double }, ptr %144, i32 0, i32 1
  %1597 = extractvalue { double, double } %1593, 1
  store double %1597, ptr %1596, align 8
  %1598 = getelementptr inbounds { double, double }, ptr %141, i32 0, i32 0
  %1599 = load double, ptr %1598, align 8
  %1600 = getelementptr inbounds { double, double }, ptr %141, i32 0, i32 1
  %1601 = load double, ptr %1600, align 8
  %1602 = getelementptr inbounds { double, double }, ptr %144, i32 0, i32 0
  %1603 = load double, ptr %1602, align 8
  %1604 = getelementptr inbounds { double, double }, ptr %144, i32 0, i32 1
  %1605 = load double, ptr %1604, align 8
  %1606 = call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %1599, double %1601, double %1603, double %1605)
  %1607 = getelementptr inbounds { double, double }, ptr %140, i32 0, i32 0
  %1608 = extractvalue { double, double } %1606, 0
  store double %1608, ptr %1607, align 8
  %1609 = getelementptr inbounds { double, double }, ptr %140, i32 0, i32 1
  %1610 = extractvalue { double, double } %1606, 1
  store double %1610, ptr %1609, align 8
  %1611 = load ptr, ptr %33, align 8, !tbaa !9
  %1612 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1611, i32 0, i32 6
  %1613 = load ptr, ptr %1612, align 8, !tbaa !14
  %1614 = load i64, ptr %34, align 8, !tbaa !5
  %1615 = load i64, ptr %66, align 8, !tbaa !5
  %1616 = add nsw i64 %1614, %1615
  %1617 = getelementptr inbounds ptr, ptr %1613, i64 %1616
  %1618 = load ptr, ptr %1617, align 8, !tbaa !9
  %1619 = load i64, ptr %35, align 8, !tbaa !5
  %1620 = load i64, ptr %69, align 8, !tbaa !5
  %1621 = add nsw i64 %1619, %1620
  %1622 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1618, i64 %1621
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1622, ptr align 8 %140, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #5
  br label %1623

1623:                                             ; preds = %1559, %1533
  br label %1624

1624:                                             ; preds = %1623
  %1625 = load i64, ptr %69, align 8, !tbaa !5
  %1626 = add nsw i64 %1625, 1
  store i64 %1626, ptr %69, align 8, !tbaa !5
  br label %1133, !llvm.loop !28

1627:                                             ; preds = %1133
  br label %1628

1628:                                             ; preds = %1627
  %1629 = load i64, ptr %66, align 8, !tbaa !5
  %1630 = add nsw i64 %1629, 1
  store i64 %1630, ptr %66, align 8, !tbaa !5
  br label %1127, !llvm.loop !29

1631:                                             ; preds = %1127
  br label %1632

1632:                                             ; preds = %1631, %1110
  %1633 = load i64, ptr %38, align 8, !tbaa !5
  %1634 = add nsw i64 %1633, 2
  store i64 %1634, ptr %38, align 8, !tbaa !5
  br label %308, !llvm.loop !30

1635:                                             ; preds = %308
  %1636 = load i64, ptr %37, align 8, !tbaa !5
  %1637 = add nsw i64 %1636, 2
  store i64 %1637, ptr %37, align 8, !tbaa !5
  br label %303, !llvm.loop !31

1638:                                             ; preds = %303
  store i32 0, ptr %73, align 4
  br label %1639

1639:                                             ; preds = %1638, %301, %182, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  %1640 = load i32, ptr %73, align 4
  switch i32 %1640, label %1642 [
    i32 0, label %1641
    i32 1, label %1641
  ]

1641:                                             ; preds = %1639, %1639
  ret void

1642:                                             ; preds = %1639
  unreachable
}

declare noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double, double, double noundef) #2

declare noundef zeroext i1 @_ZN11alglib_impl10ae_c_neq_dENS_10ae_complexEd(double, double, double noundef) #2

declare { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double, double, double, double) #2

declare { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef) #2

declare { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double, double, double, double) #2

declare { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef) #2

declare { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) #2

declare noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef, i64 noundef) #2

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

!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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{i64 0, i64 8, !12, i64 8, i64 8, !12}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = !{!21, !13, i64 0}
!21 = !{!"_ZTSN11alglib_impl10ae_complexE", !13, i64 0, !13, i64 8}
!22 = !{!21, !13, i64 8}
!23 = distinct !{!23, !16}
!24 = !{!25, !6, i64 16}
!25 = !{!"_ZTSN11alglib_impl9ae_matrixE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !26, i64 32, !27, i64 40, !7, i64 72}
!26 = !{!"bool", !7, i64 0}
!27 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}


; 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"

%"struct.alglib_impl::ae_complex" = type { double, double }

@.str.30 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1

declare noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl12cmatrixgemmfElllNS_10ae_complexEPNS_9ae_matrixElllS2_lllS0_S2_llPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, double, double, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, double, double, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl12cmatrixgemmkElllNS_10ae_complexEPNS_9ae_matrixElllS2_lllS0_S2_llPNS_8ae_stateE(i64 noundef %0, i64 noundef %1, i64 noundef %2, double %3, double %4, ptr noundef %5, i64 noundef %6, i64 noundef %7, i64 noundef %8, ptr noundef %9, i64 noundef %10, i64 noundef %11, i64 noundef %12, double %13, double %14, ptr noundef %15, i64 noundef %16, i64 noundef %17, ptr noundef %18) local_unnamed_addr #1 {
  %20 = icmp eq i64 %0, 0
  %21 = icmp eq i64 %1, 0
  %or.cond = or i1 %20, %21
  br i1 %or.cond, label %.loopexit, label %22

22:                                               ; preds = %19
  %23 = tail call noundef zeroext i1 @_ZN11alglib_impl12cmatrixgemmfElllNS_10ae_complexEPNS_9ae_matrixElllS2_lllS0_S2_llPNS_8ae_stateE(i64 noundef %0, i64 noundef %1, i64 noundef %2, double %3, double %4, ptr noundef %5, i64 noundef %6, i64 noundef %7, i64 noundef %8, ptr noundef %9, i64 noundef %10, i64 noundef %11, i64 noundef %12, double %13, double %14, ptr noundef %15, i64 noundef %16, i64 noundef %17, ptr noundef %18)
  br i1 %23, label %.loopexit, label %24

24:                                               ; preds = %22
  %25 = icmp eq i64 %2, 0
  br i1 %25, label %455, label %26

26:                                               ; preds = %24
  %27 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double %3, double %4, double noundef 0.000000e+00)
  br i1 %27, label %455, label %.preheader743

.preheader743:                                    ; preds = %26
  %28 = icmp sgt i64 %0, 0
  br i1 %28, label %.preheader742.lr.ph, label %.loopexit

.preheader742.lr.ph:                              ; preds = %.preheader743
  %29 = icmp sgt i64 %1, 0
  %30 = icmp eq i64 %8, 0
  %. = select i1 %30, i64 %7, i64 %6
  %.702 = select i1 %30, i64 %6, i64 %7
  %31 = icmp eq i64 %12, 0
  %.0669 = select i1 %31, i64 %10, i64 %11
  %.pn695 = select i1 %31, i64 %11, i64 %10
  %.not696.not745 = icmp sgt i64 %2, 0
  %32 = getelementptr inbounds i8, ptr %5, i64 72
  %33 = getelementptr inbounds i8, ptr %9, i64 72
  %34 = getelementptr inbounds i8, ptr %15, i64 72
  %35 = add nsw i64 %0, -1
  %36 = add nsw i64 %1, -1
  %37 = or i64 %12, %8
  %or.cond3 = icmp eq i64 %37, 0
  %38 = getelementptr inbounds i8, ptr %9, i64 16
  %39 = add i64 %2, -1
  %40 = add i64 %39, %7
  %41 = icmp eq i64 %12, 1
  %or.cond5 = and i1 %30, %41
  %42 = icmp eq i64 %12, 2
  %or.cond7 = and i1 %30, %42
  %43 = icmp eq i64 %8, 1
  %or.cond9 = and i1 %43, %31
  %44 = getelementptr inbounds i8, ptr %5, i64 16
  %45 = add i64 %39, %6
  %46 = icmp eq i64 %8, 2
  %or.cond15 = and i1 %46, %31
  %or.cond17 = and i1 %46, %41
  br i1 %29, label %.preheader742.us.preheader, label %.loopexit

.preheader742.us.preheader:                       ; preds = %.preheader742.lr.ph
  %or.cond11.us = and i1 %41, %43
  br label %.preheader742.us

.preheader742.us:                                 ; preds = %.preheader742.us.preheader, %._crit_edge796.us
  %.2813.us = phi i64 [ %49, %._crit_edge796.us ], [ 0, %.preheader742.us.preheader ]
  %.0611811.us = phi double [ %.6617.us, %._crit_edge796.us ], [ 0.000000e+00, %.preheader742.us.preheader ]
  %.0625809.us = phi double [ %.6631.us, %._crit_edge796.us ], [ 0.000000e+00, %.preheader742.us.preheader ]
  %47 = phi <4 x double> [ %449, %._crit_edge796.us ], [ zeroinitializer, %.preheader742.us.preheader ]
  %48 = phi <2 x double> [ %450, %._crit_edge796.us ], [ zeroinitializer, %.preheader742.us.preheader ]
  %49 = add nuw nsw i64 %.2813.us, 2
  %.not.us = icmp sgt i64 %49, %0
  %.0660.us = add nsw i64 %.2813.us, %.702
  %.0661.us = add nsw i64 %.0660.us, 1
  %50 = add nsw i64 %.2813.us, %16
  %51 = add nsw i64 %50, 1
  %52 = or disjoint i64 %.2813.us, 1
  br label %53

53:                                               ; preds = %.preheader742.us, %.loopexit741.us
  %.2599794.us = phi i64 [ 0, %.preheader742.us ], [ %56, %.loopexit741.us ]
  %.1612792.us = phi double [ %.0611811.us, %.preheader742.us ], [ %.6617.us, %.loopexit741.us ]
  %.1626790.us = phi double [ %.0625809.us, %.preheader742.us ], [ %.6631.us, %.loopexit741.us ]
  %54 = phi <4 x double> [ %47, %.preheader742.us ], [ %449, %.loopexit741.us ]
  %55 = phi <2 x double> [ %48, %.preheader742.us ], [ %450, %.loopexit741.us ]
  %56 = add nuw nsw i64 %.2599794.us, 2
  %.not674.us = icmp sgt i64 %56, %1
  %or.cond701.us = select i1 %.not.us, i1 true, i1 %.not674.us
  br i1 %or.cond701.us, label %271, label %57

57:                                               ; preds = %53
  %.0662.us = add nsw i64 %.2599794.us, %.pn695
  %.0663.us = add nsw i64 %.0662.us, 1
  br i1 %.not696.not745, label %.lr.ph.us, label %._crit_edge.us

._crit_edge.us:                                   ; preds = %.thread718.us, %57
  %.2627.lcssa.us = phi double [ %.1626790.us, %57 ], [ %.5630.us, %.thread718.us ]
  %.2613.lcssa.us = phi double [ %.1612792.us, %57 ], [ %.5616.us, %.thread718.us ]
  %58 = phi <8 x double> [ zeroinitializer, %57 ], [ %267, %.thread718.us ]
  %59 = phi <4 x double> [ %54, %57 ], [ %256, %.thread718.us ]
  %60 = phi <2 x double> [ %55, %57 ], [ %217, %.thread718.us ]
  %61 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double %13, double %14, double noundef 0.000000e+00)
  br i1 %61, label %135, label %62

62:                                               ; preds = %._crit_edge.us
  %63 = load ptr, ptr %34, align 8, !tbaa !5
  %64 = getelementptr inbounds ptr, ptr %63, i64 %50
  %65 = load ptr, ptr %64, align 8, !tbaa !8
  %66 = add nsw i64 %.2599794.us, %17
  %67 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %65, i64 %66
  %.sroa.0111.0.copyload.us = load double, ptr %67, align 8, !tbaa !10
  %.sroa.2112.0..sroa_idx.us = getelementptr inbounds i8, ptr %67, i64 8
  %.sroa.2112.0.copyload.us = load double, ptr %.sroa.2112.0..sroa_idx.us, align 8, !tbaa !10
  %68 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %13, double %14, double %.sroa.0111.0.copyload.us, double %.sroa.2112.0.copyload.us)
  %69 = extractvalue { double, double } %68, 0
  %70 = extractvalue { double, double } %68, 1
  %71 = extractelement <8 x double> %58, i64 6
  %72 = extractelement <8 x double> %58, i64 7
  %73 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %71, double %72)
  %74 = extractvalue { double, double } %73, 0
  %75 = extractvalue { double, double } %73, 1
  %76 = tail call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %69, double %70, double %74, double %75)
  %77 = extractvalue { double, double } %76, 0
  %78 = extractvalue { double, double } %76, 1
  %79 = load ptr, ptr %34, align 8, !tbaa !5
  %80 = getelementptr inbounds ptr, ptr %79, i64 %50
  %81 = load ptr, ptr %80, align 8, !tbaa !8
  %82 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %81, i64 %66
  store double %77, ptr %82, align 8, !tbaa !10
  %.sroa.4118.0..sroa_idx.us = getelementptr inbounds i8, ptr %82, i64 8
  store double %78, ptr %.sroa.4118.0..sroa_idx.us, align 8, !tbaa !10
  %83 = load ptr, ptr %34, align 8, !tbaa !5
  %84 = getelementptr inbounds ptr, ptr %83, i64 %50
  %85 = load ptr, ptr %84, align 8, !tbaa !8
  %86 = add nsw i64 %66, 1
  %87 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %85, i64 %86
  %.sroa.097.0.copyload.us = load double, ptr %87, align 8, !tbaa !10
  %.sroa.298.0..sroa_idx.us = getelementptr inbounds i8, ptr %87, i64 8
  %.sroa.298.0.copyload.us = load double, ptr %.sroa.298.0..sroa_idx.us, align 8, !tbaa !10
  %88 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %13, double %14, double %.sroa.097.0.copyload.us, double %.sroa.298.0.copyload.us)
  %89 = extractvalue { double, double } %88, 0
  %90 = extractvalue { double, double } %88, 1
  %91 = extractelement <8 x double> %58, i64 4
  %92 = extractelement <8 x double> %58, i64 5
  %93 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %91, double %92)
  %94 = extractvalue { double, double } %93, 0
  %95 = extractvalue { double, double } %93, 1
  %96 = tail call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %89, double %90, double %94, double %95)
  %97 = extractvalue { double, double } %96, 0
  %98 = extractvalue { double, double } %96, 1
  %99 = load ptr, ptr %34, align 8, !tbaa !5
  %100 = getelementptr inbounds ptr, ptr %99, i64 %50
  %101 = load ptr, ptr %100, align 8, !tbaa !8
  %102 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %101, i64 %86
  store double %97, ptr %102, align 8, !tbaa !10
  %.sroa.4104.0..sroa_idx.us = getelementptr inbounds i8, ptr %102, i64 8
  store double %98, ptr %.sroa.4104.0..sroa_idx.us, align 8, !tbaa !10
  %103 = load ptr, ptr %34, align 8, !tbaa !5
  %104 = getelementptr inbounds ptr, ptr %103, i64 %51
  %105 = load ptr, ptr %104, align 8, !tbaa !8
  %106 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %105, i64 %66
  %.sroa.083.0.copyload.us = load double, ptr %106, align 8, !tbaa !10
  %.sroa.284.0..sroa_idx.us = getelementptr inbounds i8, ptr %106, i64 8
  %.sroa.284.0.copyload.us = load double, ptr %.sroa.284.0..sroa_idx.us, align 8, !tbaa !10
  %107 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %13, double %14, double %.sroa.083.0.copyload.us, double %.sroa.284.0.copyload.us)
  %108 = extractvalue { double, double } %107, 0
  %109 = extractvalue { double, double } %107, 1
  %110 = extractelement <8 x double> %58, i64 2
  %111 = extractelement <8 x double> %58, i64 3
  %112 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %110, double %111)
  %113 = extractvalue { double, double } %112, 0
  %114 = extractvalue { double, double } %112, 1
  %115 = tail call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %108, double %109, double %113, double %114)
  %116 = extractvalue { double, double } %115, 0
  %117 = extractvalue { double, double } %115, 1
  %118 = load ptr, ptr %34, align 8, !tbaa !5
  %119 = getelementptr inbounds ptr, ptr %118, i64 %51
  %120 = load ptr, ptr %119, align 8, !tbaa !8
  %121 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %120, i64 %66
  store double %116, ptr %121, align 8, !tbaa !10
  %.sroa.490.0..sroa_idx.us = getelementptr inbounds i8, ptr %121, i64 8
  store double %117, ptr %.sroa.490.0..sroa_idx.us, align 8, !tbaa !10
  %122 = load ptr, ptr %34, align 8, !tbaa !5
  %123 = getelementptr inbounds ptr, ptr %122, i64 %51
  %124 = load ptr, ptr %123, align 8, !tbaa !8
  %125 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %124, i64 %86
  %.sroa.069.0.copyload.us = load double, ptr %125, align 8, !tbaa !10
  %.sroa.270.0..sroa_idx.us = getelementptr inbounds i8, ptr %125, i64 8
  %.sroa.270.0.copyload.us = load double, ptr %.sroa.270.0..sroa_idx.us, align 8, !tbaa !10
  %126 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %13, double %14, double %.sroa.069.0.copyload.us, double %.sroa.270.0.copyload.us)
  %127 = extractvalue { double, double } %126, 0
  %128 = extractvalue { double, double } %126, 1
  %129 = extractelement <8 x double> %58, i64 0
  %130 = extractelement <8 x double> %58, i64 1
  %131 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %129, double %130)
  %132 = extractvalue { double, double } %131, 0
  %133 = extractvalue { double, double } %131, 1
  %134 = tail call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %127, double %128, double %132, double %133)
  br label %.loopexit741.us.sink.split

135:                                              ; preds = %._crit_edge.us
  %136 = extractelement <8 x double> %58, i64 6
  %137 = extractelement <8 x double> %58, i64 7
  %138 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %136, double %137)
  %139 = extractvalue { double, double } %138, 0
  %140 = extractvalue { double, double } %138, 1
  %141 = load ptr, ptr %34, align 8, !tbaa !5
  %142 = getelementptr inbounds ptr, ptr %141, i64 %50
  %143 = load ptr, ptr %142, align 8, !tbaa !8
  %144 = add nsw i64 %.2599794.us, %17
  %145 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %143, i64 %144
  store double %139, ptr %145, align 8, !tbaa !10
  %.sroa.4142.0..sroa_idx.us = getelementptr inbounds i8, ptr %145, i64 8
  store double %140, ptr %.sroa.4142.0..sroa_idx.us, align 8, !tbaa !10
  %146 = extractelement <8 x double> %58, i64 4
  %147 = extractelement <8 x double> %58, i64 5
  %148 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %146, double %147)
  %149 = extractvalue { double, double } %148, 0
  %150 = extractvalue { double, double } %148, 1
  %151 = load ptr, ptr %34, align 8, !tbaa !5
  %152 = getelementptr inbounds ptr, ptr %151, i64 %50
  %153 = load ptr, ptr %152, align 8, !tbaa !8
  %154 = add nsw i64 %144, 1
  %155 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %153, i64 %154
  store double %149, ptr %155, align 8, !tbaa !10
  %.sroa.4136.0..sroa_idx.us = getelementptr inbounds i8, ptr %155, i64 8
  store double %150, ptr %.sroa.4136.0..sroa_idx.us, align 8, !tbaa !10
  %156 = extractelement <8 x double> %58, i64 2
  %157 = extractelement <8 x double> %58, i64 3
  %158 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %156, double %157)
  %159 = extractvalue { double, double } %158, 0
  %160 = extractvalue { double, double } %158, 1
  %161 = load ptr, ptr %34, align 8, !tbaa !5
  %162 = getelementptr inbounds ptr, ptr %161, i64 %51
  %163 = load ptr, ptr %162, align 8, !tbaa !8
  %164 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %163, i64 %144
  store double %159, ptr %164, align 8, !tbaa !10
  %.sroa.4130.0..sroa_idx.us = getelementptr inbounds i8, ptr %164, i64 8
  store double %160, ptr %.sroa.4130.0..sroa_idx.us, align 8, !tbaa !10
  %165 = extractelement <8 x double> %58, i64 0
  %166 = extractelement <8 x double> %58, i64 1
  %167 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %165, double %166)
  br label %.loopexit741.us.sink.split

.lr.ph.us:                                        ; preds = %57, %.thread718.us
  %.2613755.us = phi double [ %.5616.us, %.thread718.us ], [ %.1612792.us, %57 ]
  %.2627753.us = phi double [ %.5630.us, %.thread718.us ], [ %.1626790.us, %57 ]
  %.0666748.us = phi i64 [ %270, %.thread718.us ], [ 0, %57 ]
  %.1668747.us = phi i64 [ %268, %.thread718.us ], [ %., %57 ]
  %.1670746.us = phi i64 [ %269, %.thread718.us ], [ %.0669, %57 ]
  %168 = phi <8 x double> [ %267, %.thread718.us ], [ zeroinitializer, %57 ]
  %169 = phi <4 x double> [ %256, %.thread718.us ], [ %54, %57 ]
  %170 = phi <2 x double> [ %217, %.thread718.us ], [ %55, %57 ]
  br i1 %30, label %.thread.us, label %171

171:                                              ; preds = %.lr.ph.us
  switch i64 %8, label %.thread707.us [
    i64 1, label %188
    i64 2, label %172
  ]

172:                                              ; preds = %171
  %173 = load ptr, ptr %32, align 8, !tbaa !5
  %174 = getelementptr inbounds ptr, ptr %173, i64 %.1668747.us
  %175 = load ptr, ptr %174, align 8, !tbaa !8
  %176 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %175, i64 %.0660.us
  %177 = load double, ptr %176, align 8, !tbaa !12
  %178 = getelementptr inbounds i8, ptr %176, i64 8
  %179 = load double, ptr %178, align 8, !tbaa !14
  %180 = fneg double %179
  %181 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %175, i64 %.0661.us
  %182 = load double, ptr %181, align 8, !tbaa !12
  %183 = getelementptr inbounds i8, ptr %181, i64 8
  %184 = load double, ptr %183, align 8, !tbaa !14
  %185 = fneg double %184
  %186 = insertelement <2 x double> poison, double %182, i64 0
  %187 = insertelement <2 x double> %186, double %177, i64 1
  br label %.thread707.us

188:                                              ; preds = %171
  %189 = load ptr, ptr %32, align 8, !tbaa !5
  %190 = getelementptr inbounds ptr, ptr %189, i64 %.1668747.us
  %191 = load ptr, ptr %190, align 8, !tbaa !8
  %192 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %191, i64 %.0660.us
  %193 = load double, ptr %192, align 8, !tbaa !12
  %194 = getelementptr inbounds i8, ptr %192, i64 8
  %195 = load double, ptr %194, align 8, !tbaa !14
  %196 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %191, i64 %.0661.us
  %197 = load double, ptr %196, align 8, !tbaa !12
  %198 = getelementptr inbounds i8, ptr %196, i64 8
  %199 = load double, ptr %198, align 8, !tbaa !14
  %200 = insertelement <2 x double> poison, double %197, i64 0
  %201 = insertelement <2 x double> %200, double %193, i64 1
  br label %.thread707.us

.thread.us:                                       ; preds = %.lr.ph.us
  %202 = load ptr, ptr %32, align 8, !tbaa !5
  %203 = getelementptr inbounds ptr, ptr %202, i64 %.0660.us
  %204 = load ptr, ptr %203, align 8, !tbaa !8
  %205 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %204, i64 %.1668747.us
  %206 = load double, ptr %205, align 8, !tbaa !12
  %207 = getelementptr inbounds i8, ptr %205, i64 8
  %208 = load double, ptr %207, align 8, !tbaa !14
  %209 = getelementptr inbounds ptr, ptr %202, i64 %.0661.us
  %210 = load ptr, ptr %209, align 8, !tbaa !8
  %211 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %210, i64 %.1668747.us
  %212 = load double, ptr %211, align 8, !tbaa !12
  %213 = getelementptr inbounds i8, ptr %211, i64 8
  %214 = load double, ptr %213, align 8, !tbaa !14
  %215 = insertelement <2 x double> poison, double %212, i64 0
  %216 = insertelement <2 x double> %215, double %206, i64 1
  br label %.thread707.us

.thread707.us:                                    ; preds = %.thread.us, %188, %172, %171
  %.5630.us = phi double [ %185, %172 ], [ %214, %.thread.us ], [ %199, %188 ], [ %.2627753.us, %171 ]
  %.5616.us = phi double [ %180, %172 ], [ %208, %.thread.us ], [ %195, %188 ], [ %.2613755.us, %171 ]
  %217 = phi <2 x double> [ %187, %172 ], [ %216, %.thread.us ], [ %201, %188 ], [ %170, %171 ]
  %218 = shufflevector <2 x double> %217, <2 x double> poison, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1>
  br i1 %31, label %.thread712.us, label %219

219:                                              ; preds = %.thread707.us
  switch i64 %12, label %.thread718.us [
    i64 1, label %240
    i64 2, label %220
  ]

220:                                              ; preds = %219
  %221 = load ptr, ptr %33, align 8, !tbaa !5
  %222 = getelementptr inbounds ptr, ptr %221, i64 %.0662.us
  %223 = load ptr, ptr %222, align 8, !tbaa !8
  %224 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %223, i64 %.1670746.us
  %225 = load double, ptr %224, align 8, !tbaa !12
  %226 = getelementptr inbounds i8, ptr %224, i64 8
  %227 = load double, ptr %226, align 8, !tbaa !14
  %228 = fneg double %227
  %229 = getelementptr inbounds ptr, ptr %221, i64 %.0663.us
  %230 = load ptr, ptr %229, align 8, !tbaa !8
  %231 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %230, i64 %.1670746.us
  %232 = load double, ptr %231, align 8, !tbaa !12
  %233 = getelementptr inbounds i8, ptr %231, i64 8
  %234 = load double, ptr %233, align 8, !tbaa !14
  %235 = fneg double %234
  %236 = insertelement <4 x double> poison, double %225, i64 0
  %237 = insertelement <4 x double> %236, double %228, i64 1
  %238 = insertelement <4 x double> %237, double %232, i64 2
  %239 = insertelement <4 x double> %238, double %235, i64 3
  br label %.thread718.us

240:                                              ; preds = %219
  %241 = load ptr, ptr %33, align 8, !tbaa !5
  %242 = getelementptr inbounds ptr, ptr %241, i64 %.0662.us
  %243 = load ptr, ptr %242, align 8, !tbaa !8
  %244 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %243, i64 %.1670746.us
  %245 = load <2 x double>, ptr %244, align 8, !tbaa !10
  %246 = getelementptr inbounds ptr, ptr %241, i64 %.0663.us
  %247 = load ptr, ptr %246, align 8, !tbaa !8
  %248 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %247, i64 %.1670746.us
  %249 = load <2 x double>, ptr %248, align 8, !tbaa !10
  %250 = shufflevector <2 x double> %245, <2 x double> %249, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  br label %.thread718.us

.thread712.us:                                    ; preds = %.thread707.us
  %251 = load ptr, ptr %33, align 8, !tbaa !5
  %252 = getelementptr inbounds ptr, ptr %251, i64 %.1670746.us
  %253 = load ptr, ptr %252, align 8, !tbaa !8
  %254 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %253, i64 %.0662.us
  %255 = load <4 x double>, ptr %254, align 8, !tbaa !10
  br label %.thread718.us

.thread718.us:                                    ; preds = %.thread712.us, %240, %220, %219
  %256 = phi <4 x double> [ %239, %220 ], [ %255, %.thread712.us ], [ %250, %240 ], [ %169, %219 ]
  %257 = shufflevector <4 x double> %256, <4 x double> poison, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 3, i32 2, i32 1, i32 0>
  %258 = shufflevector <4 x double> %256, <4 x double> poison, <8 x i32> <i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1>
  %259 = tail call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %218, <8 x double> %258, <8 x double> %168)
  %260 = fneg double %.5616.us
  %261 = fneg double %.5630.us
  %262 = insertelement <8 x double> poison, double %.5616.us, i64 0
  %263 = insertelement <8 x double> %262, double %260, i64 1
  %264 = insertelement <8 x double> %263, double %.5630.us, i64 2
  %265 = insertelement <8 x double> %264, double %261, i64 3
  %266 = shufflevector <8 x double> %265, <8 x double> poison, <8 x i32> <i32 3, i32 2, i32 3, i32 2, i32 1, i32 0, i32 1, i32 0>
  %267 = tail call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %266, <8 x double> %257, <8 x double> %259)
  %268 = add nsw i64 %.1668747.us, 1
  %269 = add nsw i64 %.1670746.us, 1
  %270 = add nuw nsw i64 %.0666748.us, 1
  %exitcond.not = icmp eq i64 %270, %2
  br i1 %exitcond.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !15

271:                                              ; preds = %53
  %272 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %52, i64 noundef %35, ptr noundef %18)
  %273 = or disjoint i64 %.2599794.us, 1
  %274 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %273, i64 noundef %36, ptr noundef %18)
  %.not675784.us = icmp sgt i64 %.2813.us, %272
  %.not676780.us = icmp sgt i64 %.2599794.us, %274
  %or.cond876 = select i1 %.not675784.us, i1 true, i1 %.not676780.us
  br i1 %or.cond876, label %.loopexit741.us, label %.preheader740.us814

275:                                              ; preds = %.preheader740.us814, %441
  %.0665781.us = phi i64 [ %.2599794.us, %.preheader740.us814 ], [ %442, %441 ]
  %276 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double %3, double %4, double noundef 0.000000e+00)
  br i1 %276, label %410, label %277

277:                                              ; preds = %275
  %278 = tail call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  br i1 %or.cond3, label %279, label %293

279:                                              ; preds = %277
  %280 = load ptr, ptr %32, align 8, !tbaa !5
  %281 = getelementptr ptr, ptr %280, i64 %.0664785.us815
  %282 = getelementptr ptr, ptr %281, i64 %6
  %283 = load ptr, ptr %282, align 8, !tbaa !8
  %284 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %283, i64 %7
  %285 = load ptr, ptr %33, align 8, !tbaa !5
  %286 = getelementptr inbounds ptr, ptr %285, i64 %10
  %287 = load ptr, ptr %286, align 8, !tbaa !8
  %288 = getelementptr %"struct.alglib_impl::ae_complex", ptr %287, i64 %.0665781.us
  %289 = getelementptr %"struct.alglib_impl::ae_complex", ptr %288, i64 %11
  %290 = load i64, ptr %38, align 8, !tbaa !17
  %291 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %7, i64 noundef %40)
  %292 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %284, i64 noundef 1, ptr noundef nonnull @.str.30, ptr noundef %289, i64 noundef %290, ptr noundef nonnull @.str.30, i64 noundef %291)
  br label %293

293:                                              ; preds = %279, %277
  %.pn.us = phi { double, double } [ %292, %279 ], [ %278, %277 ]
  br i1 %or.cond5, label %.thread723.us, label %294

294:                                              ; preds = %293
  br i1 %or.cond7, label %310, label %295

295:                                              ; preds = %294
  br i1 %or.cond9, label %.thread730.us, label %.thread727.us

.thread730.us:                                    ; preds = %295
  %296 = load ptr, ptr %32, align 8, !tbaa !5
  %297 = getelementptr inbounds ptr, ptr %296, i64 %6
  %298 = load ptr, ptr %297, align 8, !tbaa !8
  %299 = getelementptr %"struct.alglib_impl::ae_complex", ptr %298, i64 %.0664785.us815
  %300 = getelementptr %"struct.alglib_impl::ae_complex", ptr %299, i64 %7
  %301 = load i64, ptr %44, align 8, !tbaa !17
  %302 = load ptr, ptr %33, align 8, !tbaa !5
  %303 = getelementptr inbounds ptr, ptr %302, i64 %10
  %304 = load ptr, ptr %303, align 8, !tbaa !8
  %305 = getelementptr %"struct.alglib_impl::ae_complex", ptr %304, i64 %.0665781.us
  %306 = getelementptr %"struct.alglib_impl::ae_complex", ptr %305, i64 %11
  %307 = load i64, ptr %38, align 8, !tbaa !17
  %308 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %6, i64 noundef %45)
  %309 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %300, i64 noundef %301, ptr noundef nonnull @.str.30, ptr noundef %306, i64 noundef %307, ptr noundef nonnull @.str.30, i64 noundef %308)
  br label %.thread

310:                                              ; preds = %294
  %311 = load ptr, ptr %32, align 8, !tbaa !5
  %312 = getelementptr ptr, ptr %311, i64 %.0664785.us815
  %313 = getelementptr ptr, ptr %312, i64 %6
  %314 = load ptr, ptr %313, align 8, !tbaa !8
  %315 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %314, i64 %7
  %316 = load ptr, ptr %33, align 8, !tbaa !5
  %317 = getelementptr ptr, ptr %316, i64 %.0665781.us
  %318 = getelementptr ptr, ptr %317, i64 %10
  %319 = load ptr, ptr %318, align 8, !tbaa !8
  %320 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %319, i64 %11
  %321 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %7, i64 noundef %40)
  %322 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %315, i64 noundef 1, ptr noundef nonnull @.str.30, ptr noundef %320, i64 noundef 1, ptr noundef nonnull @.str.31, i64 noundef %321)
  br label %.thread

.thread723.us:                                    ; preds = %293
  %323 = load ptr, ptr %32, align 8, !tbaa !5
  %324 = getelementptr ptr, ptr %323, i64 %.0664785.us815
  %325 = getelementptr ptr, ptr %324, i64 %6
  %326 = load ptr, ptr %325, align 8, !tbaa !8
  %327 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %326, i64 %7
  %328 = load ptr, ptr %33, align 8, !tbaa !5
  %329 = getelementptr ptr, ptr %328, i64 %.0665781.us
  %330 = getelementptr ptr, ptr %329, i64 %10
  %331 = load ptr, ptr %330, align 8, !tbaa !8
  %332 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %331, i64 %11
  %333 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %7, i64 noundef %40)
  %334 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %327, i64 noundef 1, ptr noundef nonnull @.str.30, ptr noundef %332, i64 noundef 1, ptr noundef nonnull @.str.30, i64 noundef %333)
  br label %.thread

.thread727.us:                                    ; preds = %295
  br i1 %or.cond11.us, label %335, label %349

335:                                              ; preds = %.thread727.us
  %336 = load ptr, ptr %32, align 8, !tbaa !5
  %337 = getelementptr inbounds ptr, ptr %336, i64 %6
  %338 = load ptr, ptr %337, align 8, !tbaa !8
  %339 = getelementptr %"struct.alglib_impl::ae_complex", ptr %338, i64 %.0664785.us815
  %340 = getelementptr %"struct.alglib_impl::ae_complex", ptr %339, i64 %7
  %341 = load i64, ptr %44, align 8, !tbaa !17
  %342 = load ptr, ptr %33, align 8, !tbaa !5
  %343 = getelementptr ptr, ptr %342, i64 %.0665781.us
  %344 = getelementptr ptr, ptr %343, i64 %10
  %345 = load ptr, ptr %344, align 8, !tbaa !8
  %346 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %345, i64 %11
  %347 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %6, i64 noundef %45)
  %348 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %340, i64 noundef %341, ptr noundef nonnull @.str.30, ptr noundef %346, i64 noundef 1, ptr noundef nonnull @.str.30, i64 noundef %347)
  br label %349

349:                                              ; preds = %335, %.thread727.us
  %350 = phi i1 [ true, %335 ], [ %43, %.thread727.us ]
  %.pn684.us = phi { double, double } [ %348, %335 ], [ %.pn.us, %.thread727.us ]
  %or.cond13.us = and i1 %42, %350
  br i1 %or.cond13.us, label %351, label %.thread

351:                                              ; preds = %349
  %352 = load ptr, ptr %32, align 8, !tbaa !5
  %353 = getelementptr inbounds ptr, ptr %352, i64 %6
  %354 = load ptr, ptr %353, align 8, !tbaa !8
  %355 = getelementptr %"struct.alglib_impl::ae_complex", ptr %354, i64 %.0664785.us815
  %356 = getelementptr %"struct.alglib_impl::ae_complex", ptr %355, i64 %7
  %357 = load i64, ptr %44, align 8, !tbaa !17
  %358 = load ptr, ptr %33, align 8, !tbaa !5
  %359 = getelementptr ptr, ptr %358, i64 %.0665781.us
  %360 = getelementptr ptr, ptr %359, i64 %10
  %361 = load ptr, ptr %360, align 8, !tbaa !8
  %362 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %361, i64 %11
  %363 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %6, i64 noundef %45)
  %364 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %356, i64 noundef %357, ptr noundef nonnull @.str.30, ptr noundef %362, i64 noundef 1, ptr noundef nonnull @.str.31, i64 noundef %363)
  br label %.thread

.thread:                                          ; preds = %.thread723.us, %310, %.thread730.us, %351, %349
  %365 = phi i1 [ %42, %351 ], [ %42, %349 ], [ false, %.thread730.us ], [ true, %310 ], [ false, %.thread723.us ]
  %.pn686.us = phi { double, double } [ %364, %351 ], [ %.pn684.us, %349 ], [ %309, %.thread730.us ], [ %322, %310 ], [ %334, %.thread723.us ]
  br i1 %or.cond15, label %.thread733.us, label %366

366:                                              ; preds = %.thread
  br i1 %or.cond17, label %367, label %395

367:                                              ; preds = %366
  %368 = load ptr, ptr %32, align 8, !tbaa !5
  %369 = getelementptr inbounds ptr, ptr %368, i64 %6
  %370 = load ptr, ptr %369, align 8, !tbaa !8
  %371 = getelementptr %"struct.alglib_impl::ae_complex", ptr %370, i64 %.0664785.us815
  %372 = getelementptr %"struct.alglib_impl::ae_complex", ptr %371, i64 %7
  %373 = load i64, ptr %44, align 8, !tbaa !17
  %374 = load ptr, ptr %33, align 8, !tbaa !5
  %375 = getelementptr ptr, ptr %374, i64 %.0665781.us
  %376 = getelementptr ptr, ptr %375, i64 %10
  %377 = load ptr, ptr %376, align 8, !tbaa !8
  %378 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %377, i64 %11
  %379 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %6, i64 noundef %45)
  %380 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %372, i64 noundef %373, ptr noundef nonnull @.str.31, ptr noundef %378, i64 noundef 1, ptr noundef nonnull @.str.30, i64 noundef %379)
  br label %395

.thread733.us:                                    ; preds = %.thread
  %381 = load ptr, ptr %32, align 8, !tbaa !5
  %382 = getelementptr inbounds ptr, ptr %381, i64 %6
  %383 = load ptr, ptr %382, align 8, !tbaa !8
  %384 = getelementptr %"struct.alglib_impl::ae_complex", ptr %383, i64 %.0664785.us815
  %385 = getelementptr %"struct.alglib_impl::ae_complex", ptr %384, i64 %7
  %386 = load i64, ptr %44, align 8, !tbaa !17
  %387 = load ptr, ptr %33, align 8, !tbaa !5
  %388 = getelementptr inbounds ptr, ptr %387, i64 %10
  %389 = load ptr, ptr %388, align 8, !tbaa !8
  %390 = getelementptr %"struct.alglib_impl::ae_complex", ptr %389, i64 %.0665781.us
  %391 = getelementptr %"struct.alglib_impl::ae_complex", ptr %390, i64 %11
  %392 = load i64, ptr %38, align 8, !tbaa !17
  %393 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %6, i64 noundef %45)
  %394 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %385, i64 noundef %386, ptr noundef nonnull @.str.31, ptr noundef %391, i64 noundef %392, ptr noundef nonnull @.str.30, i64 noundef %393)
  br label %395

395:                                              ; preds = %.thread733.us, %367, %366
  %.pn690.us = phi { double, double } [ %380, %367 ], [ %.pn686.us, %366 ], [ %394, %.thread733.us ]
  %or.cond19.us = and i1 %46, %365
  br i1 %or.cond19.us, label %396, label %412

396:                                              ; preds = %395
  %397 = load ptr, ptr %32, align 8, !tbaa !5
  %398 = getelementptr inbounds ptr, ptr %397, i64 %6
  %399 = load ptr, ptr %398, align 8, !tbaa !8
  %400 = getelementptr %"struct.alglib_impl::ae_complex", ptr %399, i64 %.0664785.us815
  %401 = getelementptr %"struct.alglib_impl::ae_complex", ptr %400, i64 %7
  %402 = load i64, ptr %44, align 8, !tbaa !17
  %403 = load ptr, ptr %33, align 8, !tbaa !5
  %404 = getelementptr ptr, ptr %403, i64 %.0665781.us
  %405 = getelementptr ptr, ptr %404, i64 %10
  %406 = load ptr, ptr %405, align 8, !tbaa !8
  %407 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %406, i64 %11
  %408 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %6, i64 noundef %45)
  %409 = tail call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %401, i64 noundef %402, ptr noundef nonnull @.str.31, ptr noundef %407, i64 noundef 1, ptr noundef nonnull @.str.31, i64 noundef %408)
  br label %412

410:                                              ; preds = %275
  %411 = tail call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  br label %412

412:                                              ; preds = %410, %396, %395
  %.pn692.us = phi { double, double } [ %411, %410 ], [ %409, %396 ], [ %.pn690.us, %395 ]
  %.sroa.15.8.us = extractvalue { double, double } %.pn692.us, 1
  %.sroa.0300.8.us = extractvalue { double, double } %.pn692.us, 0
  %413 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double %13, double %14, double noundef 0.000000e+00)
  br i1 %413, label %432, label %414

414:                                              ; preds = %412
  %415 = load ptr, ptr %34, align 8, !tbaa !5
  %416 = getelementptr inbounds ptr, ptr %415, i64 %452
  %417 = load ptr, ptr %416, align 8, !tbaa !8
  %418 = add nsw i64 %.0665781.us, %17
  %419 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %417, i64 %418
  %.sroa.024.0.copyload.us = load double, ptr %419, align 8, !tbaa !10
  %.sroa.225.0..sroa_idx.us = getelementptr inbounds i8, ptr %419, i64 8
  %.sroa.225.0.copyload.us = load double, ptr %.sroa.225.0..sroa_idx.us, align 8, !tbaa !10
  %420 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %13, double %14, double %.sroa.024.0.copyload.us, double %.sroa.225.0.copyload.us)
  %421 = extractvalue { double, double } %420, 0
  %422 = extractvalue { double, double } %420, 1
  %423 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %.sroa.0300.8.us, double %.sroa.15.8.us)
  %424 = extractvalue { double, double } %423, 0
  %425 = extractvalue { double, double } %423, 1
  %426 = tail call { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double %421, double %422, double %424, double %425)
  %427 = extractvalue { double, double } %426, 0
  %428 = load ptr, ptr %34, align 8, !tbaa !5
  %429 = getelementptr inbounds ptr, ptr %428, i64 %452
  %430 = load ptr, ptr %429, align 8, !tbaa !8
  %431 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %430, i64 %418
  store double %427, ptr %431, align 8, !tbaa !10
  br label %441

432:                                              ; preds = %412
  %433 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %3, double %4, double %.sroa.0300.8.us, double %.sroa.15.8.us)
  %434 = extractvalue { double, double } %433, 0
  %435 = load ptr, ptr %34, align 8, !tbaa !5
  %436 = getelementptr ptr, ptr %435, i64 %.0664785.us815
  %437 = getelementptr ptr, ptr %436, i64 %16
  %438 = load ptr, ptr %437, align 8, !tbaa !8
  %439 = getelementptr %"struct.alglib_impl::ae_complex", ptr %438, i64 %.0665781.us
  %440 = getelementptr %"struct.alglib_impl::ae_complex", ptr %439, i64 %17
  store double %434, ptr %440, align 8, !tbaa !10
  br label %441

441:                                              ; preds = %432, %414
  %.sink865 = phi ptr [ %440, %432 ], [ %431, %414 ]
  %.pn = phi { double, double } [ %433, %432 ], [ %426, %414 ]
  %.sink = extractvalue { double, double } %.pn, 1
  %.sroa.436.0..sroa_idx.us = getelementptr inbounds i8, ptr %.sink865, i64 8
  store double %.sink, ptr %.sroa.436.0..sroa_idx.us, align 8, !tbaa !10
  %442 = add nuw i64 %.0665781.us, 1
  %exitcond844.not = icmp eq i64 %.0665781.us, %274
  br i1 %exitcond844.not, label %._crit_edge783.us, label %275, !llvm.loop !22

.loopexit741.us.sink.split:                       ; preds = %62, %135
  %.sink875 = phi { double, double } [ %167, %135 ], [ %134, %62 ]
  %.sink871 = phi i64 [ %154, %135 ], [ %86, %62 ]
  %443 = extractvalue { double, double } %.sink875, 0
  %444 = extractvalue { double, double } %.sink875, 1
  %445 = load ptr, ptr %34, align 8, !tbaa !5
  %446 = getelementptr inbounds ptr, ptr %445, i64 %51
  %447 = load ptr, ptr %446, align 8, !tbaa !8
  %448 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %447, i64 %.sink871
  store double %443, ptr %448, align 8, !tbaa !10
  %.sroa.4124.0..sroa_idx.us = getelementptr inbounds i8, ptr %448, i64 8
  store double %444, ptr %.sroa.4124.0..sroa_idx.us, align 8, !tbaa !10
  br label %.loopexit741.us

.loopexit741.us:                                  ; preds = %._crit_edge783.us, %.loopexit741.us.sink.split, %271
  %.6631.us = phi double [ %.1626790.us, %271 ], [ %.2627.lcssa.us, %.loopexit741.us.sink.split ], [ %.1626790.us, %._crit_edge783.us ]
  %.6617.us = phi double [ %.1612792.us, %271 ], [ %.2613.lcssa.us, %.loopexit741.us.sink.split ], [ %.1612792.us, %._crit_edge783.us ]
  %449 = phi <4 x double> [ %54, %271 ], [ %59, %.loopexit741.us.sink.split ], [ %54, %._crit_edge783.us ]
  %450 = phi <2 x double> [ %55, %271 ], [ %60, %.loopexit741.us.sink.split ], [ %55, %._crit_edge783.us ]
  %451 = icmp slt i64 %56, %1
  br i1 %451, label %53, label %._crit_edge796.us, !llvm.loop !23

.preheader740.us814:                              ; preds = %271, %._crit_edge783.us
  %.0664785.us815 = phi i64 [ %453, %._crit_edge783.us ], [ %.2813.us, %271 ]
  %452 = add nsw i64 %.0664785.us815, %16
  br label %275

._crit_edge783.us:                                ; preds = %441
  %453 = add nuw i64 %.0664785.us815, 1
  %exitcond845.not = icmp eq i64 %.0664785.us815, %272
  br i1 %exitcond845.not, label %.loopexit741.us, label %.preheader740.us814, !llvm.loop !24

._crit_edge796.us:                                ; preds = %.loopexit741.us
  %454 = icmp slt i64 %49, %0
  br i1 %454, label %.preheader742.us, label %.loopexit, !llvm.loop !25

455:                                              ; preds = %26, %24
  %456 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_c_neq_dENS_10ae_complexEd(double %13, double %14, double noundef 1.000000e+00)
  br i1 %456, label %457, label %.loopexit

457:                                              ; preds = %455
  %458 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_c_neq_dENS_10ae_complexEd(double %13, double %14, double noundef 0.000000e+00)
  %.not699.not827 = icmp sgt i64 %0, 0
  br i1 %458, label %.preheader736, label %.preheader738

.preheader738:                                    ; preds = %457
  br i1 %.not699.not827, label %.preheader737.lr.ph, label %.loopexit

.preheader737.lr.ph:                              ; preds = %.preheader738
  %.not698.not819 = icmp sgt i64 %1, 0
  %459 = getelementptr inbounds i8, ptr %15, i64 72
  br i1 %.not698.not819, label %.preheader737.us, label %.loopexit

.preheader737.us:                                 ; preds = %.preheader737.lr.ph, %._crit_edge.us824
  %.1822.us = phi i64 [ %471, %._crit_edge.us824 ], [ 0, %.preheader737.lr.ph ]
  br label %460

460:                                              ; preds = %.preheader737.us, %460
  %.1598820.us = phi i64 [ 0, %.preheader737.us ], [ %470, %460 ]
  %461 = tail call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %462 = extractvalue { double, double } %461, 0
  %463 = extractvalue { double, double } %461, 1
  %464 = load ptr, ptr %459, align 8, !tbaa !5
  %465 = getelementptr ptr, ptr %464, i64 %.1822.us
  %466 = getelementptr ptr, ptr %465, i64 %16
  %467 = load ptr, ptr %466, align 8, !tbaa !8
  %468 = getelementptr %"struct.alglib_impl::ae_complex", ptr %467, i64 %.1598820.us
  %469 = getelementptr %"struct.alglib_impl::ae_complex", ptr %468, i64 %17
  store double %462, ptr %469, align 8, !tbaa !10
  %.sroa.4146.0..sroa_idx.us = getelementptr inbounds i8, ptr %469, i64 8
  store double %463, ptr %.sroa.4146.0..sroa_idx.us, align 8, !tbaa !10
  %470 = add nuw nsw i64 %.1598820.us, 1
  %exitcond846.not = icmp eq i64 %470, %1
  br i1 %exitcond846.not, label %._crit_edge.us824, label %460, !llvm.loop !26

._crit_edge.us824:                                ; preds = %460
  %471 = add nuw nsw i64 %.1822.us, 1
  %exitcond847.not = icmp eq i64 %471, %0
  br i1 %exitcond847.not, label %.loopexit, label %.preheader737.us, !llvm.loop !27

.preheader736:                                    ; preds = %457
  br i1 %.not699.not827, label %.preheader.lr.ph, label %.loopexit

.preheader.lr.ph:                                 ; preds = %.preheader736
  %.not700.not825 = icmp sgt i64 %1, 0
  %472 = getelementptr inbounds i8, ptr %15, i64 72
  br i1 %.not700.not825, label %.preheader.us, label %.loopexit

.preheader.us:                                    ; preds = %.preheader.lr.ph, %._crit_edge.us830
  %.0828.us = phi i64 [ %488, %._crit_edge.us830 ], [ 0, %.preheader.lr.ph ]
  %473 = add nsw i64 %.0828.us, %16
  br label %474

474:                                              ; preds = %.preheader.us, %474
  %.0597826.us = phi i64 [ 0, %.preheader.us ], [ %487, %474 ]
  %475 = load ptr, ptr %472, align 8, !tbaa !5
  %476 = getelementptr inbounds ptr, ptr %475, i64 %473
  %477 = load ptr, ptr %476, align 8, !tbaa !8
  %478 = add nsw i64 %.0597826.us, %17
  %479 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %477, i64 %478
  %.sroa.0147.0.copyload.us = load double, ptr %479, align 8, !tbaa !10
  %.sroa.2148.0..sroa_idx.us = getelementptr inbounds i8, ptr %479, i64 8
  %.sroa.2148.0.copyload.us = load double, ptr %.sroa.2148.0..sroa_idx.us, align 8, !tbaa !10
  %480 = tail call { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double %13, double %14, double %.sroa.0147.0.copyload.us, double %.sroa.2148.0.copyload.us)
  %481 = extractvalue { double, double } %480, 0
  %482 = extractvalue { double, double } %480, 1
  %483 = load ptr, ptr %472, align 8, !tbaa !5
  %484 = getelementptr inbounds ptr, ptr %483, i64 %473
  %485 = load ptr, ptr %484, align 8, !tbaa !8
  %486 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %485, i64 %478
  store double %481, ptr %486, align 8, !tbaa !10
  %.sroa.4152.0..sroa_idx.us = getelementptr inbounds i8, ptr %486, i64 8
  store double %482, ptr %.sroa.4152.0..sroa_idx.us, align 8, !tbaa !10
  %487 = add nuw nsw i64 %.0597826.us, 1
  %exitcond848.not = icmp eq i64 %487, %1
  br i1 %exitcond848.not, label %._crit_edge.us830, label %474, !llvm.loop !28

._crit_edge.us830:                                ; preds = %474
  %488 = add nuw nsw i64 %.0828.us, 1
  %exitcond849.not = icmp eq i64 %488, %0
  br i1 %exitcond849.not, label %.loopexit, label %.preheader.us, !llvm.loop !29

.loopexit:                                        ; preds = %._crit_edge796.us, %._crit_edge.us824, %._crit_edge.us830, %.preheader.lr.ph, %.preheader737.lr.ph, %.preheader742.lr.ph, %.preheader743, %.preheader738, %.preheader736, %455, %22, %19
  ret void
}

declare noundef zeroext i1 @_ZN11alglib_impl9ae_c_eq_dENS_10ae_complexEd(double, double, double noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl10ae_c_neq_dENS_10ae_complexEd(double, double, double noundef) local_unnamed_addr #0

declare { double, double } @_ZN11alglib_impl8ae_c_mulENS_10ae_complexES0_(double, double, double, double) local_unnamed_addr #0

declare { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef) local_unnamed_addr #0

declare { double, double } @_ZN11alglib_impl8ae_c_addENS_10ae_complexES0_(double, double, double, double) local_unnamed_addr #0

declare { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef) local_unnamed_addr #0

declare { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #0

declare noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <8 x double> @llvm.fmuladd.v8f64(<8 x double>, <8 x double>, <8 x double>) #2

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

!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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !6, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !6, i64 0}
!12 = !{!13, !11, i64 0}
!13 = !{!"_ZTSN11alglib_impl10ae_complexE", !11, i64 0, !11, i64 8}
!14 = !{!13, !11, i64 8}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!18, !19, i64 16}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !19, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !20, i64 32, !21, i64 40, !6, i64 72}
!19 = !{!"long", !6, i64 0}
!20 = !{!"bool", !6, i64 0}
!21 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}


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