; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/src (interpolation)

; 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::biharmonicpanel" = type { double, double, double, double, double, i64, i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_vector" = type { 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 }
%"struct.alglib_impl::biharmonicevaluator" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%union.anon.1 = type { ptr }

@.str.718 = external hidden unnamed_addr constant [26 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

declare void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) #1

declare noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) #1

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

declare noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #1

declare void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) #1

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef) #1

; 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

declare void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double, double, ptr noundef, ptr noundef) #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl11bhpanelinitEPNS_15biharmonicpanelEPKNS_9ae_matrixElllPKNS_19biharmonicevaluatorEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr noundef %5, ptr noundef %6) #4 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, 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 %"struct.alglib_impl::ae_complex", align 8
  %45 = alloca %"struct.alglib_impl::ae_complex", align 8
  %46 = alloca %"struct.alglib_impl::ae_complex", align 8
  %47 = alloca %"struct.alglib_impl::ae_complex", align 8
  %48 = alloca i64, align 8
  %49 = alloca %"struct.alglib_impl::ae_complex", align 8
  %50 = alloca %"struct.alglib_impl::ae_complex", align 8
  %51 = alloca %"struct.alglib_impl::ae_complex", align 8
  %52 = alloca %"struct.alglib_impl::ae_complex", align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store i64 %2, ptr %10, align 8, !tbaa !9
  store i64 %3, ptr %11, align 8, !tbaa !9
  store i64 %4, ptr %12, align 8, !tbaa !9
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  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 8, 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 16, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  %53 = load i64, ptr %11, align 8, !tbaa !9
  %54 = load i64, ptr %10, align 8, !tbaa !9
  %55 = sub nsw i64 %53, %54
  %56 = icmp sge i64 %55, 1
  %57 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %56, ptr noundef @.str.718, ptr noundef %57)
  %58 = load i64, ptr %12, align 8, !tbaa !9
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %59, i32 0, i32 5
  store i64 %58, ptr %60, align 8, !tbaa !11
  %61 = load ptr, ptr %13, align 8, !tbaa !5
  %62 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %61, i32 0, i32 0
  %63 = load i64, ptr %62, align 8, !tbaa !17
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %64, i32 0, i32 6
  store i64 %63, ptr %65, align 8, !tbaa !19
  %66 = load ptr, ptr %13, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %66, i32 0, i32 0
  %68 = load i64, ptr %67, align 8, !tbaa !17
  %69 = add nsw i64 %68, 1
  %70 = load ptr, ptr %8, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %70, i32 0, i32 9
  store i64 %69, ptr %71, align 8, !tbaa !20
  %72 = load ptr, ptr %13, align 8, !tbaa !5
  %73 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %72, i32 0, i32 0
  %74 = load i64, ptr %73, align 8, !tbaa !17
  %75 = add nsw i64 %74, 1
  %76 = load ptr, ptr %8, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %76, i32 0, i32 10
  store i64 %75, ptr %77, align 8, !tbaa !21
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %78, i32 0, i32 0
  %80 = load i64, ptr %79, align 8, !tbaa !17
  %81 = add nsw i64 %80, 1
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %82, i32 0, i32 7
  store i64 %81, ptr %83, align 8, !tbaa !22
  %84 = load ptr, ptr %13, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %84, i32 0, i32 0
  %86 = load i64, ptr %85, align 8, !tbaa !17
  %87 = sub nsw i64 %86, 1
  %88 = load ptr, ptr %8, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %88, i32 0, i32 8
  store i64 %87, ptr %89, align 8, !tbaa !23
  %90 = load ptr, ptr %14, align 8, !tbaa !5
  %91 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 1.000000e+300, ptr noundef %90)
  %92 = fmul double 1.000000e-03, %91
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %93, i32 0, i32 4
  store double %92, ptr %94, align 8, !tbaa !24
  %95 = load i64, ptr %12, align 8, !tbaa !9
  %96 = load ptr, ptr %8, align 8, !tbaa !5
  %97 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %96, i32 0, i32 9
  %98 = load i64, ptr %97, align 8, !tbaa !20
  %99 = mul nsw i64 %95, %98
  %100 = load ptr, ptr %8, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %100, i32 0, i32 9
  %102 = load i64, ptr %101, align 8, !tbaa !20
  %103 = mul nsw i64 %99, %102
  %104 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %105 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %106 = extractvalue { double, double } %104, 0
  store double %106, ptr %105, align 8
  %107 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %108 = extractvalue { double, double } %104, 1
  store double %108, ptr %107, align 8
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %109, i32 0, i32 11
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %113 = load double, ptr %112, align 8
  %114 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %115 = load double, ptr %114, align 8
  call void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %103, double %113, double %115, ptr noundef %110, ptr noundef %111)
  %116 = load i64, ptr %12, align 8, !tbaa !9
  %117 = load ptr, ptr %8, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %117, i32 0, i32 9
  %119 = load i64, ptr %118, align 8, !tbaa !20
  %120 = mul nsw i64 %116, %119
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  %122 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %121, i32 0, i32 9
  %123 = load i64, ptr %122, align 8, !tbaa !20
  %124 = mul nsw i64 %120, %123
  %125 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %126 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %127 = extractvalue { double, double } %125, 0
  store double %127, ptr %126, align 8
  %128 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %129 = extractvalue { double, double } %125, 1
  store double %129, ptr %128, align 8
  %130 = load ptr, ptr %8, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %130, i32 0, i32 12
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  %133 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %134 = load double, ptr %133, align 8
  %135 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %136 = load double, ptr %135, align 8
  call void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %124, double %134, double %136, ptr noundef %131, ptr noundef %132)
  %137 = load i64, ptr %12, align 8, !tbaa !9
  %138 = load ptr, ptr %8, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %138, i32 0, i32 9
  %140 = load i64, ptr %139, align 8, !tbaa !20
  %141 = mul nsw i64 %137, %140
  %142 = load ptr, ptr %8, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %142, i32 0, i32 9
  %144 = load i64, ptr %143, align 8, !tbaa !20
  %145 = mul nsw i64 %141, %144
  %146 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %147 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %148 = extractvalue { double, double } %146, 0
  store double %148, ptr %147, align 8
  %149 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %150 = extractvalue { double, double } %146, 1
  store double %150, ptr %149, align 8
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %151, i32 0, i32 13
  %153 = load ptr, ptr %14, align 8, !tbaa !5
  %154 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %155 = load double, ptr %154, align 8
  %156 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %157 = load double, ptr %156, align 8
  call void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %145, double %155, double %157, ptr noundef %152, ptr noundef %153)
  %158 = load i64, ptr %12, align 8, !tbaa !9
  %159 = load ptr, ptr %8, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %159, i32 0, i32 9
  %161 = load i64, ptr %160, align 8, !tbaa !20
  %162 = mul nsw i64 %158, %161
  %163 = load ptr, ptr %8, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %163, i32 0, i32 9
  %165 = load i64, ptr %164, align 8, !tbaa !20
  %166 = mul nsw i64 %162, %165
  %167 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %168 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %169 = extractvalue { double, double } %167, 0
  store double %169, ptr %168, align 8
  %170 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %171 = extractvalue { double, double } %167, 1
  store double %171, ptr %170, align 8
  %172 = load ptr, ptr %8, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %172, i32 0, i32 14
  %174 = load ptr, ptr %14, align 8, !tbaa !5
  %175 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %176 = load double, ptr %175, align 8
  %177 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %178 = load double, ptr %177, align 8
  call void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %166, double %176, double %178, ptr noundef %173, ptr noundef %174)
  %179 = load i64, ptr %12, align 8, !tbaa !9
  %180 = mul nsw i64 %179, 4
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %181, i32 0, i32 9
  %183 = load i64, ptr %182, align 8, !tbaa !20
  %184 = mul nsw i64 %180, %183
  %185 = load ptr, ptr %8, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %185, i32 0, i32 9
  %187 = load i64, ptr %186, align 8, !tbaa !20
  %188 = mul nsw i64 %184, %187
  %189 = load ptr, ptr %8, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %189, i32 0, i32 16
  %191 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %188, double noundef 0.000000e+00, ptr noundef %190, ptr noundef %191)
  %192 = load ptr, ptr %8, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %192, i32 0, i32 9
  %194 = load i64, ptr %193, align 8, !tbaa !20
  %195 = load ptr, ptr %8, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %195, i32 0, i32 9
  %197 = load i64, ptr %196, align 8, !tbaa !20
  %198 = mul nsw i64 %194, %197
  store i64 %198, ptr %48, align 8, !tbaa !9
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %199, i32 0, i32 17
  store double 0.000000e+00, ptr %200, align 8, !tbaa !25
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %201, i32 0, i32 0
  store double 0.000000e+00, ptr %202, align 8, !tbaa !26
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %203, i32 0, i32 1
  store double 0.000000e+00, ptr %204, align 8, !tbaa !27
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %205, i32 0, i32 2
  store double 0.000000e+00, ptr %206, align 8, !tbaa !28
  %207 = load i64, ptr %10, align 8, !tbaa !9
  store i64 %207, ptr %17, align 8, !tbaa !9
  br label %208

208:                                              ; preds = %256, %7
  %209 = load i64, ptr %17, align 8, !tbaa !9
  %210 = load i64, ptr %11, align 8, !tbaa !9
  %211 = sub nsw i64 %210, 1
  %212 = icmp sle i64 %209, %211
  br i1 %212, label %213, label %259

213:                                              ; preds = %208
  %214 = load ptr, ptr %8, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %214, i32 0, i32 0
  %216 = load double, ptr %215, align 8, !tbaa !26
  %217 = load ptr, ptr %9, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %217, i32 0, i32 6
  %219 = load ptr, ptr %218, align 8, !tbaa !29
  %220 = load i64, ptr %17, align 8, !tbaa !9
  %221 = getelementptr inbounds ptr, ptr %219, i64 %220
  %222 = load ptr, ptr %221, align 8, !tbaa !5
  %223 = getelementptr inbounds double, ptr %222, i64 0
  %224 = load double, ptr %223, align 8, !tbaa !30
  %225 = fadd double %216, %224
  %226 = load ptr, ptr %8, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %226, i32 0, i32 0
  store double %225, ptr %227, align 8, !tbaa !26
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %228, i32 0, i32 1
  %230 = load double, ptr %229, align 8, !tbaa !27
  %231 = load ptr, ptr %9, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %231, i32 0, i32 6
  %233 = load ptr, ptr %232, align 8, !tbaa !29
  %234 = load i64, ptr %17, align 8, !tbaa !9
  %235 = getelementptr inbounds ptr, ptr %233, i64 %234
  %236 = load ptr, ptr %235, align 8, !tbaa !5
  %237 = getelementptr inbounds double, ptr %236, i64 1
  %238 = load double, ptr %237, align 8, !tbaa !30
  %239 = fadd double %230, %238
  %240 = load ptr, ptr %8, align 8, !tbaa !5
  %241 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %240, i32 0, i32 1
  store double %239, ptr %241, align 8, !tbaa !27
  %242 = load ptr, ptr %8, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %242, i32 0, i32 2
  %244 = load double, ptr %243, align 8, !tbaa !28
  %245 = load ptr, ptr %9, align 8, !tbaa !5
  %246 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %245, i32 0, i32 6
  %247 = load ptr, ptr %246, align 8, !tbaa !29
  %248 = load i64, ptr %17, align 8, !tbaa !9
  %249 = getelementptr inbounds ptr, ptr %247, i64 %248
  %250 = load ptr, ptr %249, align 8, !tbaa !5
  %251 = getelementptr inbounds double, ptr %250, i64 2
  %252 = load double, ptr %251, align 8, !tbaa !30
  %253 = fadd double %244, %252
  %254 = load ptr, ptr %8, align 8, !tbaa !5
  %255 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %254, i32 0, i32 2
  store double %253, ptr %255, align 8, !tbaa !28
  br label %256

256:                                              ; preds = %213
  %257 = load i64, ptr %17, align 8, !tbaa !9
  %258 = add nsw i64 %257, 1
  store i64 %258, ptr %17, align 8, !tbaa !9
  br label %208, !llvm.loop !31

259:                                              ; preds = %208
  %260 = load ptr, ptr %8, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %260, i32 0, i32 0
  %262 = load double, ptr %261, align 8, !tbaa !26
  %263 = load i64, ptr %11, align 8, !tbaa !9
  %264 = load i64, ptr %10, align 8, !tbaa !9
  %265 = sub nsw i64 %263, %264
  %266 = sitofp i64 %265 to double
  %267 = fdiv double %262, %266
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %268, i32 0, i32 0
  store double %267, ptr %269, align 8, !tbaa !26
  %270 = load ptr, ptr %8, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %270, i32 0, i32 1
  %272 = load double, ptr %271, align 8, !tbaa !27
  %273 = load i64, ptr %11, align 8, !tbaa !9
  %274 = load i64, ptr %10, align 8, !tbaa !9
  %275 = sub nsw i64 %273, %274
  %276 = sitofp i64 %275 to double
  %277 = fdiv double %272, %276
  %278 = load ptr, ptr %8, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %278, i32 0, i32 1
  store double %277, ptr %279, align 8, !tbaa !27
  %280 = load ptr, ptr %8, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %280, i32 0, i32 2
  %282 = load double, ptr %281, align 8, !tbaa !28
  %283 = load i64, ptr %11, align 8, !tbaa !9
  %284 = load i64, ptr %10, align 8, !tbaa !9
  %285 = sub nsw i64 %283, %284
  %286 = sitofp i64 %285 to double
  %287 = fdiv double %282, %286
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  %289 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %288, i32 0, i32 2
  store double %287, ptr %289, align 8, !tbaa !28
  %290 = load ptr, ptr %8, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %290, i32 0, i32 3
  store double 5.000000e-16, ptr %291, align 8, !tbaa !33
  %292 = load i64, ptr %10, align 8, !tbaa !9
  store i64 %292, ptr %17, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %353, %259
  %294 = load i64, ptr %17, align 8, !tbaa !9
  %295 = load i64, ptr %11, align 8, !tbaa !9
  %296 = sub nsw i64 %295, 1
  %297 = icmp sle i64 %294, %296
  br i1 %297, label %298, label %356

298:                                              ; preds = %293
  %299 = load ptr, ptr %9, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %299, i32 0, i32 6
  %301 = load ptr, ptr %300, align 8, !tbaa !29
  %302 = load i64, ptr %17, align 8, !tbaa !9
  %303 = getelementptr inbounds ptr, ptr %301, i64 %302
  %304 = load ptr, ptr %303, align 8, !tbaa !5
  %305 = getelementptr inbounds double, ptr %304, i64 0
  %306 = load double, ptr %305, align 8, !tbaa !30
  %307 = load ptr, ptr %8, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %307, i32 0, i32 0
  %309 = load double, ptr %308, align 8, !tbaa !26
  %310 = fsub double %306, %309
  store double %310, ptr %29, align 8, !tbaa !30
  %311 = load ptr, ptr %9, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %311, i32 0, i32 6
  %313 = load ptr, ptr %312, align 8, !tbaa !29
  %314 = load i64, ptr %17, align 8, !tbaa !9
  %315 = getelementptr inbounds ptr, ptr %313, i64 %314
  %316 = load ptr, ptr %315, align 8, !tbaa !5
  %317 = getelementptr inbounds double, ptr %316, i64 1
  %318 = load double, ptr %317, align 8, !tbaa !30
  %319 = load ptr, ptr %8, align 8, !tbaa !5
  %320 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %319, i32 0, i32 1
  %321 = load double, ptr %320, align 8, !tbaa !27
  %322 = fsub double %318, %321
  store double %322, ptr %30, align 8, !tbaa !30
  %323 = load ptr, ptr %9, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %323, i32 0, i32 6
  %325 = load ptr, ptr %324, align 8, !tbaa !29
  %326 = load i64, ptr %17, align 8, !tbaa !9
  %327 = getelementptr inbounds ptr, ptr %325, i64 %326
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = getelementptr inbounds double, ptr %328, i64 2
  %330 = load double, ptr %329, align 8, !tbaa !30
  %331 = load ptr, ptr %8, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %331, i32 0, i32 2
  %333 = load double, ptr %332, align 8, !tbaa !28
  %334 = fsub double %330, %333
  store double %334, ptr %31, align 8, !tbaa !30
  %335 = load ptr, ptr %8, align 8, !tbaa !5
  %336 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %335, i32 0, i32 3
  %337 = load double, ptr %336, align 8, !tbaa !33
  %338 = load double, ptr %29, align 8, !tbaa !30
  %339 = load double, ptr %29, align 8, !tbaa !30
  %340 = load double, ptr %30, align 8, !tbaa !30
  %341 = load double, ptr %30, align 8, !tbaa !30
  %342 = fmul double %340, %341
  %343 = call double @llvm.fmuladd.f64(double %338, double %339, double %342)
  %344 = load double, ptr %31, align 8, !tbaa !30
  %345 = load double, ptr %31, align 8, !tbaa !30
  %346 = call double @llvm.fmuladd.f64(double %344, double %345, double %343)
  %347 = load ptr, ptr %14, align 8, !tbaa !5
  %348 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %346, ptr noundef %347)
  %349 = load ptr, ptr %14, align 8, !tbaa !5
  %350 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %337, double noundef %348, ptr noundef %349)
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  %352 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %351, i32 0, i32 3
  store double %350, ptr %352, align 8, !tbaa !33
  br label %353

353:                                              ; preds = %298
  %354 = load i64, ptr %17, align 8, !tbaa !9
  %355 = add nsw i64 %354, 1
  store i64 %355, ptr %17, align 8, !tbaa !9
  br label %293, !llvm.loop !34

356:                                              ; preds = %293
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %396, %356
  %358 = load i64, ptr %18, align 8, !tbaa !9
  %359 = load i64, ptr %12, align 8, !tbaa !9
  %360 = sub nsw i64 %359, 1
  %361 = icmp sle i64 %358, %360
  br i1 %361, label %362, label %399

362:                                              ; preds = %357
  store double 0.000000e+00, ptr %28, align 8, !tbaa !30
  %363 = load i64, ptr %10, align 8, !tbaa !9
  store i64 %363, ptr %17, align 8, !tbaa !9
  br label %364

364:                                              ; preds = %384, %362
  %365 = load i64, ptr %17, align 8, !tbaa !9
  %366 = load i64, ptr %11, align 8, !tbaa !9
  %367 = sub nsw i64 %366, 1
  %368 = icmp sle i64 %365, %367
  br i1 %368, label %369, label %387

369:                                              ; preds = %364
  %370 = load double, ptr %28, align 8, !tbaa !30
  %371 = load ptr, ptr %9, align 8, !tbaa !5
  %372 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %371, i32 0, i32 6
  %373 = load ptr, ptr %372, align 8, !tbaa !29
  %374 = load i64, ptr %17, align 8, !tbaa !9
  %375 = getelementptr inbounds ptr, ptr %373, i64 %374
  %376 = load ptr, ptr %375, align 8, !tbaa !5
  %377 = load i64, ptr %18, align 8, !tbaa !9
  %378 = add nsw i64 3, %377
  %379 = getelementptr inbounds double, ptr %376, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !30
  %381 = load ptr, ptr %14, align 8, !tbaa !5
  %382 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %380, ptr noundef %381)
  %383 = fadd double %370, %382
  store double %383, ptr %28, align 8, !tbaa !30
  br label %384

384:                                              ; preds = %369
  %385 = load i64, ptr %17, align 8, !tbaa !9
  %386 = add nsw i64 %385, 1
  store i64 %386, ptr %17, align 8, !tbaa !9
  br label %364, !llvm.loop !35

387:                                              ; preds = %364
  %388 = load ptr, ptr %8, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %388, i32 0, i32 17
  %390 = load double, ptr %389, align 8, !tbaa !25
  %391 = load double, ptr %28, align 8, !tbaa !30
  %392 = load ptr, ptr %14, align 8, !tbaa !5
  %393 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %390, double noundef %391, ptr noundef %392)
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %394, i32 0, i32 17
  store double %393, ptr %395, align 8, !tbaa !25
  br label %396

396:                                              ; preds = %387
  %397 = load i64, ptr %18, align 8, !tbaa !9
  %398 = add nsw i64 %397, 1
  store i64 %398, ptr %18, align 8, !tbaa !9
  br label %357, !llvm.loop !36

399:                                              ; preds = %357
  %400 = load ptr, ptr %13, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %400, i32 0, i32 0
  %402 = load i64, ptr %401, align 8, !tbaa !17
  %403 = add nsw i64 %402, 2
  %404 = load ptr, ptr %8, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %404, i32 0, i32 15
  %406 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %403, ptr noundef %405, ptr noundef %406)
  %407 = load ptr, ptr %8, align 8, !tbaa !5
  %408 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %407, i32 0, i32 15
  %409 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %408, i32 0, i32 4
  %410 = load ptr, ptr %409, align 8, !tbaa !29
  %411 = getelementptr inbounds double, ptr %410, i64 0
  store double 1.000000e+00, ptr %411, align 8, !tbaa !30
  store i64 1, ptr %15, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %438, %399
  %413 = load i64, ptr %15, align 8, !tbaa !9
  %414 = load ptr, ptr %13, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %414, i32 0, i32 0
  %416 = load i64, ptr %415, align 8, !tbaa !17
  %417 = add nsw i64 %416, 1
  %418 = icmp sle i64 %413, %417
  br i1 %418, label %419, label %441

419:                                              ; preds = %412
  %420 = load ptr, ptr %8, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %420, i32 0, i32 15
  %422 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %421, i32 0, i32 4
  %423 = load ptr, ptr %422, align 8, !tbaa !29
  %424 = load i64, ptr %15, align 8, !tbaa !9
  %425 = sub nsw i64 %424, 1
  %426 = getelementptr inbounds double, ptr %423, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !30
  %428 = load ptr, ptr %8, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %428, i32 0, i32 3
  %430 = load double, ptr %429, align 8, !tbaa !33
  %431 = fmul double %427, %430
  %432 = load ptr, ptr %8, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %432, i32 0, i32 15
  %434 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %433, i32 0, i32 4
  %435 = load ptr, ptr %434, align 8, !tbaa !29
  %436 = load i64, ptr %15, align 8, !tbaa !9
  %437 = getelementptr inbounds double, ptr %435, i64 %436
  store double %431, ptr %437, align 8, !tbaa !30
  br label %438

438:                                              ; preds = %419
  %439 = load i64, ptr %15, align 8, !tbaa !9
  %440 = add nsw i64 %439, 1
  store i64 %440, ptr %15, align 8, !tbaa !9
  br label %412, !llvm.loop !37

441:                                              ; preds = %412
  %442 = load ptr, ptr %8, align 8, !tbaa !5
  %443 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %442, i32 0, i32 10
  %444 = load i64, ptr %443, align 8, !tbaa !21
  %445 = load ptr, ptr %8, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %445, i32 0, i32 19
  %447 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %444, ptr noundef %446, ptr noundef %447)
  %448 = load i64, ptr %10, align 8, !tbaa !9
  store i64 %448, ptr %17, align 8, !tbaa !9
  br label %449

449:                                              ; preds = %840, %441
  %450 = load i64, ptr %17, align 8, !tbaa !9
  %451 = load i64, ptr %11, align 8, !tbaa !9
  %452 = sub nsw i64 %451, 1
  %453 = icmp sle i64 %450, %452
  br i1 %453, label %454, label %843

454:                                              ; preds = %449
  %455 = load ptr, ptr %9, align 8, !tbaa !5
  %456 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %455, i32 0, i32 6
  %457 = load ptr, ptr %456, align 8, !tbaa !29
  %458 = load i64, ptr %17, align 8, !tbaa !9
  %459 = getelementptr inbounds ptr, ptr %457, i64 %458
  %460 = load ptr, ptr %459, align 8, !tbaa !5
  %461 = getelementptr inbounds double, ptr %460, i64 0
  %462 = load double, ptr %461, align 8, !tbaa !30
  %463 = load ptr, ptr %8, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %463, i32 0, i32 0
  %465 = load double, ptr %464, align 8, !tbaa !26
  %466 = fsub double %462, %465
  store double %466, ptr %22, align 8, !tbaa !30
  %467 = load ptr, ptr %9, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %467, i32 0, i32 6
  %469 = load ptr, ptr %468, align 8, !tbaa !29
  %470 = load i64, ptr %17, align 8, !tbaa !9
  %471 = getelementptr inbounds ptr, ptr %469, i64 %470
  %472 = load ptr, ptr %471, align 8, !tbaa !5
  %473 = getelementptr inbounds double, ptr %472, i64 1
  %474 = load double, ptr %473, align 8, !tbaa !30
  %475 = load ptr, ptr %8, align 8, !tbaa !5
  %476 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %475, i32 0, i32 1
  %477 = load double, ptr %476, align 8, !tbaa !27
  %478 = fsub double %474, %477
  store double %478, ptr %23, align 8, !tbaa !30
  %479 = load ptr, ptr %9, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %479, i32 0, i32 6
  %481 = load ptr, ptr %480, align 8, !tbaa !29
  %482 = load i64, ptr %17, align 8, !tbaa !9
  %483 = getelementptr inbounds ptr, ptr %481, i64 %482
  %484 = load ptr, ptr %483, align 8, !tbaa !5
  %485 = getelementptr inbounds double, ptr %484, i64 2
  %486 = load double, ptr %485, align 8, !tbaa !30
  %487 = load ptr, ptr %8, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %487, i32 0, i32 2
  %489 = load double, ptr %488, align 8, !tbaa !28
  %490 = fsub double %486, %489
  store double %490, ptr %24, align 8, !tbaa !30
  %491 = load double, ptr %22, align 8, !tbaa !30
  %492 = load double, ptr %22, align 8, !tbaa !30
  %493 = load double, ptr %23, align 8, !tbaa !30
  %494 = load double, ptr %23, align 8, !tbaa !30
  %495 = fmul double %493, %494
  %496 = call double @llvm.fmuladd.f64(double %491, double %492, double %495)
  %497 = load double, ptr %24, align 8, !tbaa !30
  %498 = load double, ptr %24, align 8, !tbaa !30
  %499 = call double @llvm.fmuladd.f64(double %497, double %498, double %496)
  %500 = fadd double %499, 1.000000e-300
  store double %500, ptr %26, align 8, !tbaa !30
  %501 = load double, ptr %26, align 8, !tbaa !30
  %502 = load ptr, ptr %14, align 8, !tbaa !5
  %503 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %501, ptr noundef %502)
  store double %503, ptr %25, align 8, !tbaa !30
  %504 = load double, ptr %22, align 8, !tbaa !30
  %505 = load double, ptr %22, align 8, !tbaa !30
  %506 = load double, ptr %23, align 8, !tbaa !30
  %507 = load double, ptr %23, align 8, !tbaa !30
  %508 = fmul double %506, %507
  %509 = call double @llvm.fmuladd.f64(double %504, double %505, double %508)
  %510 = fadd double %509, 1.000000e-300
  %511 = load ptr, ptr %14, align 8, !tbaa !5
  %512 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %510, ptr noundef %511)
  store double %512, ptr %27, align 8, !tbaa !30
  %513 = load double, ptr %24, align 8, !tbaa !30
  %514 = load double, ptr %25, align 8, !tbaa !30
  %515 = fdiv double %513, %514
  store double %515, ptr %34, align 8, !tbaa !30
  %516 = load double, ptr %27, align 8, !tbaa !30
  %517 = load double, ptr %25, align 8, !tbaa !30
  %518 = fdiv double %516, %517
  store double %518, ptr %35, align 8, !tbaa !30
  %519 = load double, ptr %22, align 8, !tbaa !30
  %520 = load double, ptr %27, align 8, !tbaa !30
  %521 = fdiv double %519, %520
  %522 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %41, i32 0, i32 0
  store double %521, ptr %522, align 8, !tbaa !38
  %523 = load double, ptr %23, align 8, !tbaa !30
  %524 = fneg double %523
  %525 = load double, ptr %27, align 8, !tbaa !30
  %526 = fdiv double %524, %525
  %527 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %41, i32 0, i32 1
  store double %526, ptr %527, align 8, !tbaa !40
  %528 = load ptr, ptr %8, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %528, i32 0, i32 19
  %530 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %529, i32 0, i32 4
  %531 = load ptr, ptr %530, align 8, !tbaa !29
  %532 = getelementptr inbounds double, ptr %531, i64 0
  store double 1.000000e+00, ptr %532, align 8, !tbaa !30
  store i64 1, ptr %15, align 8, !tbaa !9
  br label %533

533:                                              ; preds = %557, %454
  %534 = load i64, ptr %15, align 8, !tbaa !9
  %535 = load ptr, ptr %8, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %535, i32 0, i32 10
  %537 = load i64, ptr %536, align 8, !tbaa !21
  %538 = sub nsw i64 %537, 1
  %539 = icmp sle i64 %534, %538
  br i1 %539, label %540, label %560

540:                                              ; preds = %533
  %541 = load ptr, ptr %8, align 8, !tbaa !5
  %542 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %541, i32 0, i32 19
  %543 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %542, i32 0, i32 4
  %544 = load ptr, ptr %543, align 8, !tbaa !29
  %545 = load i64, ptr %15, align 8, !tbaa !9
  %546 = sub nsw i64 %545, 1
  %547 = getelementptr inbounds double, ptr %544, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !30
  %549 = load double, ptr %25, align 8, !tbaa !30
  %550 = fmul double %548, %549
  %551 = load ptr, ptr %8, align 8, !tbaa !5
  %552 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %551, i32 0, i32 19
  %553 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %552, i32 0, i32 4
  %554 = load ptr, ptr %553, align 8, !tbaa !29
  %555 = load i64, ptr %15, align 8, !tbaa !9
  %556 = getelementptr inbounds double, ptr %554, i64 %555
  store double %550, ptr %556, align 8, !tbaa !30
  br label %557

557:                                              ; preds = %540
  %558 = load i64, ptr %15, align 8, !tbaa !9
  %559 = add nsw i64 %558, 1
  store i64 %559, ptr %15, align 8, !tbaa !9
  br label %533, !llvm.loop !41

560:                                              ; preds = %533
  store double 1.000000e+00, ptr %36, align 8, !tbaa !30
  %561 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 0
  store double 1.000000e+00, ptr %561, align 8, !tbaa !38
  %562 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 1
  store double 0.000000e+00, ptr %562, align 8, !tbaa !40
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %563

563:                                              ; preds = %836, %560
  %564 = load i64, ptr %16, align 8, !tbaa !9
  %565 = load ptr, ptr %8, align 8, !tbaa !5
  %566 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %565, i32 0, i32 9
  %567 = load i64, ptr %566, align 8, !tbaa !20
  %568 = sub nsw i64 %567, 1
  %569 = icmp sle i64 %564, %568
  br i1 %569, label %570, label %839

570:                                              ; preds = %563
  store double 0.000000e+00, ptr %37, align 8, !tbaa !30
  %571 = load double, ptr %36, align 8, !tbaa !30
  %572 = load ptr, ptr %13, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %572, i32 0, i32 11
  %574 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %573, i32 0, i32 4
  %575 = load ptr, ptr %574, align 8, !tbaa !29
  %576 = load i64, ptr %16, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %575, i64 %576
  %578 = load double, ptr %577, align 8, !tbaa !30
  %579 = fmul double %571, %578
  store double %579, ptr %38, align 8, !tbaa !30
  %580 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %580, ptr %19, align 8, !tbaa !9
  br label %581

581:                                              ; preds = %804, %570
  %582 = load i64, ptr %19, align 8, !tbaa !9
  %583 = load ptr, ptr %8, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %583, i32 0, i32 9
  %585 = load i64, ptr %584, align 8, !tbaa !20
  %586 = sub nsw i64 %585, 1
  %587 = icmp sle i64 %582, %586
  br i1 %587, label %588, label %807

588:                                              ; preds = %581
  %589 = load i64, ptr %19, align 8, !tbaa !9
  %590 = load ptr, ptr %8, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %590, i32 0, i32 9
  %592 = load i64, ptr %591, align 8, !tbaa !20
  %593 = mul nsw i64 %589, %592
  %594 = load i64, ptr %16, align 8, !tbaa !9
  %595 = add nsw i64 %593, %594
  store i64 %595, ptr %20, align 8, !tbaa !9
  %596 = load i64, ptr %19, align 8, !tbaa !9
  %597 = load i64, ptr %16, align 8, !tbaa !9
  %598 = icmp sgt i64 %596, %597
  br i1 %598, label %599, label %622

599:                                              ; preds = %588
  %600 = load double, ptr %38, align 8, !tbaa !30
  %601 = load double, ptr %34, align 8, !tbaa !30
  %602 = fmul double %600, %601
  %603 = load ptr, ptr %13, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %603, i32 0, i32 9
  %605 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %604, i32 0, i32 4
  %606 = load ptr, ptr %605, align 8, !tbaa !29
  %607 = load i64, ptr %20, align 8, !tbaa !9
  %608 = getelementptr inbounds double, ptr %606, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !30
  %610 = load double, ptr %37, align 8, !tbaa !30
  %611 = load ptr, ptr %13, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %611, i32 0, i32 10
  %613 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %612, i32 0, i32 4
  %614 = load ptr, ptr %613, align 8, !tbaa !29
  %615 = load i64, ptr %20, align 8, !tbaa !9
  %616 = getelementptr inbounds double, ptr %614, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !30
  %618 = fmul double %610, %617
  %619 = call double @llvm.fmuladd.f64(double %602, double %609, double %618)
  store double %619, ptr %39, align 8, !tbaa !30
  %620 = load double, ptr %38, align 8, !tbaa !30
  store double %620, ptr %37, align 8, !tbaa !30
  %621 = load double, ptr %39, align 8, !tbaa !30
  store double %621, ptr %38, align 8, !tbaa !30
  br label %622

622:                                              ; preds = %599, %588
  %623 = load double, ptr %38, align 8, !tbaa !30
  %624 = load ptr, ptr %13, align 8, !tbaa !5
  %625 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %624, i32 0, i32 8
  %626 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %625, i32 0, i32 4
  %627 = load ptr, ptr %626, align 8, !tbaa !29
  %628 = load i64, ptr %20, align 8, !tbaa !9
  %629 = getelementptr inbounds double, ptr %627, i64 %628
  %630 = load double, ptr %629, align 8, !tbaa !30
  %631 = fmul double %623, %630
  store double %631, ptr %28, align 8, !tbaa !30
  %632 = load double, ptr %28, align 8, !tbaa !30
  %633 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 0
  %634 = load double, ptr %633, align 8, !tbaa !38
  %635 = fmul double %632, %634
  %636 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %43, i32 0, i32 0
  store double %635, ptr %636, align 8, !tbaa !38
  %637 = load double, ptr %28, align 8, !tbaa !30
  %638 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 1
  %639 = load double, ptr %638, align 8, !tbaa !40
  %640 = fmul double %637, %639
  %641 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %43, i32 0, i32 1
  store double %640, ptr %641, align 8, !tbaa !40
  %642 = load ptr, ptr %8, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %642, i32 0, i32 19
  %644 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %643, i32 0, i32 4
  %645 = load ptr, ptr %644, align 8, !tbaa !29
  %646 = load i64, ptr %19, align 8, !tbaa !9
  %647 = getelementptr inbounds double, ptr %645, i64 %646
  %648 = load double, ptr %647, align 8, !tbaa !30
  store double %648, ptr %28, align 8, !tbaa !30
  %649 = load ptr, ptr %13, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %649, i32 0, i32 15
  %651 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %650, i32 0, i32 4
  %652 = load ptr, ptr %651, align 8, !tbaa !29
  %653 = load i64, ptr %20, align 8, !tbaa !9
  %654 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %652, i64 %653
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %40, ptr align 8 %654, i64 16, i1 false), !tbaa.struct !42
  %655 = load double, ptr %28, align 8, !tbaa !30
  %656 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %40, i32 0, i32 0
  %657 = load double, ptr %656, align 8, !tbaa !38
  %658 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %43, i32 0, i32 0
  %659 = load double, ptr %658, align 8, !tbaa !38
  %660 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %40, i32 0, i32 1
  %661 = load double, ptr %660, align 8, !tbaa !40
  %662 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %43, i32 0, i32 1
  %663 = load double, ptr %662, align 8, !tbaa !40
  %664 = fmul double %661, %663
  %665 = fneg double %664
  %666 = call double @llvm.fmuladd.f64(double %657, double %659, double %665)
  %667 = fmul double %655, %666
  %668 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %44, i32 0, i32 0
  store double %667, ptr %668, align 8, !tbaa !38
  %669 = load double, ptr %28, align 8, !tbaa !30
  %670 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %40, i32 0, i32 0
  %671 = load double, ptr %670, align 8, !tbaa !38
  %672 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %43, i32 0, i32 1
  %673 = load double, ptr %672, align 8, !tbaa !40
  %674 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %40, i32 0, i32 1
  %675 = load double, ptr %674, align 8, !tbaa !40
  %676 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %43, i32 0, i32 0
  %677 = load double, ptr %676, align 8, !tbaa !38
  %678 = fmul double %675, %677
  %679 = call double @llvm.fmuladd.f64(double %671, double %673, double %678)
  %680 = fmul double %669, %679
  %681 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %44, i32 0, i32 1
  store double %680, ptr %681, align 8, !tbaa !40
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %682

682:                                              ; preds = %800, %622
  %683 = load i64, ptr %18, align 8, !tbaa !9
  %684 = load i64, ptr %12, align 8, !tbaa !9
  %685 = sub nsw i64 %684, 1
  %686 = icmp sle i64 %683, %685
  br i1 %686, label %687, label %803

687:                                              ; preds = %682
  %688 = load i64, ptr %20, align 8, !tbaa !9
  %689 = load i64, ptr %18, align 8, !tbaa !9
  %690 = load i64, ptr %48, align 8, !tbaa !9
  %691 = mul nsw i64 %689, %690
  %692 = add nsw i64 %688, %691
  store i64 %692, ptr %21, align 8, !tbaa !9
  %693 = load ptr, ptr %9, align 8, !tbaa !5
  %694 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %693, i32 0, i32 6
  %695 = load ptr, ptr %694, align 8, !tbaa !29
  %696 = load i64, ptr %17, align 8, !tbaa !9
  %697 = getelementptr inbounds ptr, ptr %695, i64 %696
  %698 = load ptr, ptr %697, align 8, !tbaa !5
  %699 = load i64, ptr %18, align 8, !tbaa !9
  %700 = add nsw i64 3, %699
  %701 = getelementptr inbounds double, ptr %698, i64 %700
  %702 = load double, ptr %701, align 8, !tbaa !30
  %703 = load ptr, ptr %13, align 8, !tbaa !5
  %704 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %703, i32 0, i32 14
  %705 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %704, i32 0, i32 4
  %706 = load ptr, ptr %705, align 8, !tbaa !29
  %707 = load i64, ptr %19, align 8, !tbaa !9
  %708 = getelementptr inbounds double, ptr %706, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !30
  %710 = fmul double %702, %709
  store double %710, ptr %32, align 8, !tbaa !30
  %711 = load ptr, ptr %8, align 8, !tbaa !5
  %712 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %711, i32 0, i32 11
  %713 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %712, i32 0, i32 4
  %714 = load ptr, ptr %713, align 8, !tbaa !29
  %715 = load i64, ptr %21, align 8, !tbaa !9
  %716 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %714, i64 %715
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %716, i64 16, i1 false), !tbaa.struct !42
  %717 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %45, i32 0, i32 0
  %718 = load double, ptr %717, align 8, !tbaa !38
  %719 = load double, ptr %32, align 8, !tbaa !30
  %720 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %44, i32 0, i32 0
  %721 = load double, ptr %720, align 8, !tbaa !38
  %722 = call double @llvm.fmuladd.f64(double %719, double %721, double %718)
  %723 = load ptr, ptr %8, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %723, i32 0, i32 11
  %725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %724, i32 0, i32 4
  %726 = load ptr, ptr %725, align 8, !tbaa !29
  %727 = load i64, ptr %21, align 8, !tbaa !9
  %728 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %726, i64 %727
  %729 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %728, i32 0, i32 0
  store double %722, ptr %729, align 8, !tbaa !38
  %730 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %45, i32 0, i32 1
  %731 = load double, ptr %730, align 8, !tbaa !40
  %732 = load double, ptr %32, align 8, !tbaa !30
  %733 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %44, i32 0, i32 1
  %734 = load double, ptr %733, align 8, !tbaa !40
  %735 = call double @llvm.fmuladd.f64(double %732, double %734, double %731)
  %736 = load ptr, ptr %8, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %736, i32 0, i32 11
  %738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %737, i32 0, i32 4
  %739 = load ptr, ptr %738, align 8, !tbaa !29
  %740 = load i64, ptr %21, align 8, !tbaa !9
  %741 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %739, i64 %740
  %742 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %741, i32 0, i32 1
  store double %735, ptr %742, align 8, !tbaa !40
  %743 = load ptr, ptr %9, align 8, !tbaa !5
  %744 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %743, i32 0, i32 6
  %745 = load ptr, ptr %744, align 8, !tbaa !29
  %746 = load i64, ptr %17, align 8, !tbaa !9
  %747 = getelementptr inbounds ptr, ptr %745, i64 %746
  %748 = load ptr, ptr %747, align 8, !tbaa !5
  %749 = load i64, ptr %18, align 8, !tbaa !9
  %750 = add nsw i64 3, %749
  %751 = getelementptr inbounds double, ptr %748, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !30
  %753 = load ptr, ptr %8, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %753, i32 0, i32 19
  %755 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %754, i32 0, i32 4
  %756 = load ptr, ptr %755, align 8, !tbaa !29
  %757 = getelementptr inbounds double, ptr %756, i64 2
  %758 = load double, ptr %757, align 8, !tbaa !30
  %759 = fmul double %752, %758
  %760 = load ptr, ptr %13, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %760, i32 0, i32 13
  %762 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %761, i32 0, i32 4
  %763 = load ptr, ptr %762, align 8, !tbaa !29
  %764 = load i64, ptr %19, align 8, !tbaa !9
  %765 = getelementptr inbounds double, ptr %763, i64 %764
  %766 = load double, ptr %765, align 8, !tbaa !30
  %767 = fmul double %759, %766
  store double %767, ptr %33, align 8, !tbaa !30
  %768 = load ptr, ptr %8, align 8, !tbaa !5
  %769 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %768, i32 0, i32 12
  %770 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %769, i32 0, i32 4
  %771 = load ptr, ptr %770, align 8, !tbaa !29
  %772 = load i64, ptr %21, align 8, !tbaa !9
  %773 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %771, i64 %772
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %46, ptr align 8 %773, i64 16, i1 false), !tbaa.struct !42
  %774 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %46, i32 0, i32 0
  %775 = load double, ptr %774, align 8, !tbaa !38
  %776 = load double, ptr %33, align 8, !tbaa !30
  %777 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %44, i32 0, i32 0
  %778 = load double, ptr %777, align 8, !tbaa !38
  %779 = call double @llvm.fmuladd.f64(double %776, double %778, double %775)
  %780 = load ptr, ptr %8, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %780, i32 0, i32 12
  %782 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %781, i32 0, i32 4
  %783 = load ptr, ptr %782, align 8, !tbaa !29
  %784 = load i64, ptr %21, align 8, !tbaa !9
  %785 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %783, i64 %784
  %786 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %785, i32 0, i32 0
  store double %779, ptr %786, align 8, !tbaa !38
  %787 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %46, i32 0, i32 1
  %788 = load double, ptr %787, align 8, !tbaa !40
  %789 = load double, ptr %33, align 8, !tbaa !30
  %790 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %44, i32 0, i32 1
  %791 = load double, ptr %790, align 8, !tbaa !40
  %792 = call double @llvm.fmuladd.f64(double %789, double %791, double %788)
  %793 = load ptr, ptr %8, align 8, !tbaa !5
  %794 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %793, i32 0, i32 12
  %795 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %794, i32 0, i32 4
  %796 = load ptr, ptr %795, align 8, !tbaa !29
  %797 = load i64, ptr %21, align 8, !tbaa !9
  %798 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %796, i64 %797
  %799 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %798, i32 0, i32 1
  store double %792, ptr %799, align 8, !tbaa !40
  br label %800

800:                                              ; preds = %687
  %801 = load i64, ptr %18, align 8, !tbaa !9
  %802 = add nsw i64 %801, 1
  store i64 %802, ptr %18, align 8, !tbaa !9
  br label %682, !llvm.loop !43

803:                                              ; preds = %682
  br label %804

804:                                              ; preds = %803
  %805 = load i64, ptr %19, align 8, !tbaa !9
  %806 = add nsw i64 %805, 1
  store i64 %806, ptr %19, align 8, !tbaa !9
  br label %581, !llvm.loop !44

807:                                              ; preds = %581
  %808 = load double, ptr %36, align 8, !tbaa !30
  %809 = load double, ptr %35, align 8, !tbaa !30
  %810 = fmul double %808, %809
  store double %810, ptr %36, align 8, !tbaa !30
  %811 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 0
  %812 = load double, ptr %811, align 8, !tbaa !38
  %813 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %41, i32 0, i32 0
  %814 = load double, ptr %813, align 8, !tbaa !38
  %815 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 1
  %816 = load double, ptr %815, align 8, !tbaa !40
  %817 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %41, i32 0, i32 1
  %818 = load double, ptr %817, align 8, !tbaa !40
  %819 = fmul double %816, %818
  %820 = fneg double %819
  %821 = call double @llvm.fmuladd.f64(double %812, double %814, double %820)
  store double %821, ptr %29, align 8, !tbaa !30
  %822 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 0
  %823 = load double, ptr %822, align 8, !tbaa !38
  %824 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %41, i32 0, i32 1
  %825 = load double, ptr %824, align 8, !tbaa !40
  %826 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 1
  %827 = load double, ptr %826, align 8, !tbaa !40
  %828 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %41, i32 0, i32 0
  %829 = load double, ptr %828, align 8, !tbaa !38
  %830 = fmul double %827, %829
  %831 = call double @llvm.fmuladd.f64(double %823, double %825, double %830)
  store double %831, ptr %30, align 8, !tbaa !30
  %832 = load double, ptr %29, align 8, !tbaa !30
  %833 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 0
  store double %832, ptr %833, align 8, !tbaa !38
  %834 = load double, ptr %30, align 8, !tbaa !30
  %835 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %42, i32 0, i32 1
  store double %834, ptr %835, align 8, !tbaa !40
  br label %836

836:                                              ; preds = %807
  %837 = load i64, ptr %16, align 8, !tbaa !9
  %838 = add nsw i64 %837, 1
  store i64 %838, ptr %16, align 8, !tbaa !9
  br label %563, !llvm.loop !45

839:                                              ; preds = %563
  br label %840

840:                                              ; preds = %839
  %841 = load i64, ptr %17, align 8, !tbaa !9
  %842 = add nsw i64 %841, 1
  store i64 %842, ptr %17, align 8, !tbaa !9
  br label %449, !llvm.loop !46

843:                                              ; preds = %449
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %844

844:                                              ; preds = %1077, %843
  %845 = load i64, ptr %15, align 8, !tbaa !9
  %846 = load ptr, ptr %8, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %846, i32 0, i32 6
  %848 = load i64, ptr %847, align 8, !tbaa !19
  %849 = icmp sle i64 %845, %848
  br i1 %849, label %850, label %1080

850:                                              ; preds = %844
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %851

851:                                              ; preds = %1073, %850
  %852 = load i64, ptr %16, align 8, !tbaa !9
  %853 = load i64, ptr %15, align 8, !tbaa !9
  %854 = icmp sle i64 %852, %853
  br i1 %854, label %855, label %1076

855:                                              ; preds = %851
  %856 = load ptr, ptr %13, align 8, !tbaa !5
  %857 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %856, i32 0, i32 4
  %858 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %857, i32 0, i32 4
  %859 = load ptr, ptr %858, align 8, !tbaa !29
  %860 = load i64, ptr %15, align 8, !tbaa !9
  %861 = load i64, ptr %16, align 8, !tbaa !9
  %862 = add nsw i64 %860, %861
  %863 = getelementptr inbounds double, ptr %859, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !30
  %865 = load ptr, ptr %13, align 8, !tbaa !5
  %866 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %865, i32 0, i32 4
  %867 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %866, i32 0, i32 4
  %868 = load ptr, ptr %867, align 8, !tbaa !29
  %869 = load i64, ptr %15, align 8, !tbaa !9
  %870 = load i64, ptr %16, align 8, !tbaa !9
  %871 = sub nsw i64 %869, %870
  %872 = getelementptr inbounds double, ptr %868, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !30
  %874 = fmul double %864, %873
  store double %874, ptr %28, align 8, !tbaa !30
  %875 = load i64, ptr %16, align 8, !tbaa !9
  %876 = icmp ne i64 %875, 0
  br i1 %876, label %877, label %880

877:                                              ; preds = %855
  %878 = load double, ptr %28, align 8, !tbaa !30
  %879 = fmul double %878, 2.000000e+00
  store double %879, ptr %28, align 8, !tbaa !30
  br label %880

880:                                              ; preds = %877, %855
  %881 = load ptr, ptr %13, align 8, !tbaa !5
  %882 = getelementptr inbounds %"struct.alglib_impl::biharmonicevaluator", ptr %881, i32 0, i32 6
  %883 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %882, i32 0, i32 4
  %884 = load ptr, ptr %883, align 8, !tbaa !29
  %885 = load i64, ptr %16, align 8, !tbaa !9
  %886 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %884, i64 %885
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %47, ptr align 8 %886, i64 16, i1 false), !tbaa.struct !42
  %887 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 0
  %888 = load double, ptr %887, align 8, !tbaa !38
  %889 = load double, ptr %28, align 8, !tbaa !30
  %890 = fmul double %888, %889
  %891 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 0
  store double %890, ptr %891, align 8, !tbaa !38
  %892 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 1
  %893 = load double, ptr %892, align 8, !tbaa !40
  %894 = load double, ptr %28, align 8, !tbaa !30
  %895 = fmul double %893, %894
  %896 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 1
  store double %895, ptr %896, align 8, !tbaa !40
  %897 = load i64, ptr %15, align 8, !tbaa !9
  %898 = load ptr, ptr %8, align 8, !tbaa !5
  %899 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %898, i32 0, i32 7
  %900 = load i64, ptr %899, align 8, !tbaa !22
  %901 = icmp slt i64 %897, %900
  br i1 %901, label %902, label %984

902:                                              ; preds = %880
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %903

903:                                              ; preds = %980, %902
  %904 = load i64, ptr %18, align 8, !tbaa !9
  %905 = load i64, ptr %12, align 8, !tbaa !9
  %906 = sub nsw i64 %905, 1
  %907 = icmp sle i64 %904, %906
  br i1 %907, label %908, label %983

908:                                              ; preds = %903
  %909 = load ptr, ptr %8, align 8, !tbaa !5
  %910 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %909, i32 0, i32 11
  %911 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %910, i32 0, i32 4
  %912 = load ptr, ptr %911, align 8, !tbaa !29
  %913 = load i64, ptr %18, align 8, !tbaa !9
  %914 = load i64, ptr %48, align 8, !tbaa !9
  %915 = mul nsw i64 %913, %914
  %916 = load i64, ptr %15, align 8, !tbaa !9
  %917 = load ptr, ptr %8, align 8, !tbaa !5
  %918 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %917, i32 0, i32 9
  %919 = load i64, ptr %918, align 8, !tbaa !20
  %920 = mul nsw i64 %916, %919
  %921 = add nsw i64 %915, %920
  %922 = load i64, ptr %16, align 8, !tbaa !9
  %923 = add nsw i64 %921, %922
  %924 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %912, i64 %923
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %924, i64 16, i1 false), !tbaa.struct !42
  %925 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %45, i32 0, i32 0
  %926 = load double, ptr %925, align 8, !tbaa !38
  %927 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 0
  %928 = load double, ptr %927, align 8, !tbaa !38
  %929 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %45, i32 0, i32 1
  %930 = load double, ptr %929, align 8, !tbaa !40
  %931 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 1
  %932 = load double, ptr %931, align 8, !tbaa !40
  %933 = fmul double %930, %932
  %934 = fneg double %933
  %935 = call double @llvm.fmuladd.f64(double %926, double %928, double %934)
  %936 = load ptr, ptr %8, align 8, !tbaa !5
  %937 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %936, i32 0, i32 13
  %938 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %937, i32 0, i32 4
  %939 = load ptr, ptr %938, align 8, !tbaa !29
  %940 = load i64, ptr %18, align 8, !tbaa !9
  %941 = load i64, ptr %48, align 8, !tbaa !9
  %942 = mul nsw i64 %940, %941
  %943 = load i64, ptr %15, align 8, !tbaa !9
  %944 = load ptr, ptr %8, align 8, !tbaa !5
  %945 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %944, i32 0, i32 9
  %946 = load i64, ptr %945, align 8, !tbaa !20
  %947 = mul nsw i64 %943, %946
  %948 = add nsw i64 %942, %947
  %949 = load i64, ptr %16, align 8, !tbaa !9
  %950 = add nsw i64 %948, %949
  %951 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %939, i64 %950
  %952 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %951, i32 0, i32 0
  store double %935, ptr %952, align 8, !tbaa !38
  %953 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %45, i32 0, i32 0
  %954 = load double, ptr %953, align 8, !tbaa !38
  %955 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 1
  %956 = load double, ptr %955, align 8, !tbaa !40
  %957 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %45, i32 0, i32 1
  %958 = load double, ptr %957, align 8, !tbaa !40
  %959 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 0
  %960 = load double, ptr %959, align 8, !tbaa !38
  %961 = fmul double %958, %960
  %962 = call double @llvm.fmuladd.f64(double %954, double %956, double %961)
  %963 = load ptr, ptr %8, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %963, i32 0, i32 13
  %965 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %964, i32 0, i32 4
  %966 = load ptr, ptr %965, align 8, !tbaa !29
  %967 = load i64, ptr %18, align 8, !tbaa !9
  %968 = load i64, ptr %48, align 8, !tbaa !9
  %969 = mul nsw i64 %967, %968
  %970 = load i64, ptr %15, align 8, !tbaa !9
  %971 = load ptr, ptr %8, align 8, !tbaa !5
  %972 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %971, i32 0, i32 9
  %973 = load i64, ptr %972, align 8, !tbaa !20
  %974 = mul nsw i64 %970, %973
  %975 = add nsw i64 %969, %974
  %976 = load i64, ptr %16, align 8, !tbaa !9
  %977 = add nsw i64 %975, %976
  %978 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %966, i64 %977
  %979 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %978, i32 0, i32 1
  store double %962, ptr %979, align 8, !tbaa !40
  br label %980

980:                                              ; preds = %908
  %981 = load i64, ptr %18, align 8, !tbaa !9
  %982 = add nsw i64 %981, 1
  store i64 %982, ptr %18, align 8, !tbaa !9
  br label %903, !llvm.loop !47

983:                                              ; preds = %903
  br label %984

984:                                              ; preds = %983, %880
  %985 = load i64, ptr %15, align 8, !tbaa !9
  %986 = load ptr, ptr %8, align 8, !tbaa !5
  %987 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %986, i32 0, i32 8
  %988 = load i64, ptr %987, align 8, !tbaa !23
  %989 = icmp slt i64 %985, %988
  br i1 %989, label %990, label %1072

990:                                              ; preds = %984
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %991

991:                                              ; preds = %1068, %990
  %992 = load i64, ptr %18, align 8, !tbaa !9
  %993 = load i64, ptr %12, align 8, !tbaa !9
  %994 = sub nsw i64 %993, 1
  %995 = icmp sle i64 %992, %994
  br i1 %995, label %996, label %1071

996:                                              ; preds = %991
  %997 = load ptr, ptr %8, align 8, !tbaa !5
  %998 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %997, i32 0, i32 12
  %999 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %998, i32 0, i32 4
  %1000 = load ptr, ptr %999, align 8, !tbaa !29
  %1001 = load i64, ptr %18, align 8, !tbaa !9
  %1002 = load i64, ptr %48, align 8, !tbaa !9
  %1003 = mul nsw i64 %1001, %1002
  %1004 = load i64, ptr %15, align 8, !tbaa !9
  %1005 = load ptr, ptr %8, align 8, !tbaa !5
  %1006 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1005, i32 0, i32 9
  %1007 = load i64, ptr %1006, align 8, !tbaa !20
  %1008 = mul nsw i64 %1004, %1007
  %1009 = add nsw i64 %1003, %1008
  %1010 = load i64, ptr %16, align 8, !tbaa !9
  %1011 = add nsw i64 %1009, %1010
  %1012 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1000, i64 %1011
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %46, ptr align 8 %1012, i64 16, i1 false), !tbaa.struct !42
  %1013 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %46, i32 0, i32 0
  %1014 = load double, ptr %1013, align 8, !tbaa !38
  %1015 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 0
  %1016 = load double, ptr %1015, align 8, !tbaa !38
  %1017 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %46, i32 0, i32 1
  %1018 = load double, ptr %1017, align 8, !tbaa !40
  %1019 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 1
  %1020 = load double, ptr %1019, align 8, !tbaa !40
  %1021 = fmul double %1018, %1020
  %1022 = fneg double %1021
  %1023 = call double @llvm.fmuladd.f64(double %1014, double %1016, double %1022)
  %1024 = load ptr, ptr %8, align 8, !tbaa !5
  %1025 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1024, i32 0, i32 14
  %1026 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1025, i32 0, i32 4
  %1027 = load ptr, ptr %1026, align 8, !tbaa !29
  %1028 = load i64, ptr %18, align 8, !tbaa !9
  %1029 = load i64, ptr %48, align 8, !tbaa !9
  %1030 = mul nsw i64 %1028, %1029
  %1031 = load i64, ptr %15, align 8, !tbaa !9
  %1032 = load ptr, ptr %8, align 8, !tbaa !5
  %1033 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1032, i32 0, i32 9
  %1034 = load i64, ptr %1033, align 8, !tbaa !20
  %1035 = mul nsw i64 %1031, %1034
  %1036 = add nsw i64 %1030, %1035
  %1037 = load i64, ptr %16, align 8, !tbaa !9
  %1038 = add nsw i64 %1036, %1037
  %1039 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1027, i64 %1038
  %1040 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1039, i32 0, i32 0
  store double %1023, ptr %1040, align 8, !tbaa !38
  %1041 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %46, i32 0, i32 0
  %1042 = load double, ptr %1041, align 8, !tbaa !38
  %1043 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 1
  %1044 = load double, ptr %1043, align 8, !tbaa !40
  %1045 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %46, i32 0, i32 1
  %1046 = load double, ptr %1045, align 8, !tbaa !40
  %1047 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %47, i32 0, i32 0
  %1048 = load double, ptr %1047, align 8, !tbaa !38
  %1049 = fmul double %1046, %1048
  %1050 = call double @llvm.fmuladd.f64(double %1042, double %1044, double %1049)
  %1051 = load ptr, ptr %8, align 8, !tbaa !5
  %1052 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1051, i32 0, i32 14
  %1053 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1052, i32 0, i32 4
  %1054 = load ptr, ptr %1053, align 8, !tbaa !29
  %1055 = load i64, ptr %18, align 8, !tbaa !9
  %1056 = load i64, ptr %48, align 8, !tbaa !9
  %1057 = mul nsw i64 %1055, %1056
  %1058 = load i64, ptr %15, align 8, !tbaa !9
  %1059 = load ptr, ptr %8, align 8, !tbaa !5
  %1060 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1059, i32 0, i32 9
  %1061 = load i64, ptr %1060, align 8, !tbaa !20
  %1062 = mul nsw i64 %1058, %1061
  %1063 = add nsw i64 %1057, %1062
  %1064 = load i64, ptr %16, align 8, !tbaa !9
  %1065 = add nsw i64 %1063, %1064
  %1066 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1054, i64 %1065
  %1067 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1066, i32 0, i32 1
  store double %1050, ptr %1067, align 8, !tbaa !40
  br label %1068

1068:                                             ; preds = %996
  %1069 = load i64, ptr %18, align 8, !tbaa !9
  %1070 = add nsw i64 %1069, 1
  store i64 %1070, ptr %18, align 8, !tbaa !9
  br label %991, !llvm.loop !48

1071:                                             ; preds = %991
  br label %1072

1072:                                             ; preds = %1071, %984
  br label %1073

1073:                                             ; preds = %1072
  %1074 = load i64, ptr %16, align 8, !tbaa !9
  %1075 = add nsw i64 %1074, 1
  store i64 %1075, ptr %16, align 8, !tbaa !9
  br label %851, !llvm.loop !49

1076:                                             ; preds = %851
  br label %1077

1077:                                             ; preds = %1076
  %1078 = load i64, ptr %15, align 8, !tbaa !9
  %1079 = add nsw i64 %1078, 1
  store i64 %1079, ptr %15, align 8, !tbaa !9
  br label %844, !llvm.loop !50

1080:                                             ; preds = %844
  store i64 0, ptr %20, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %1081

1081:                                             ; preds = %1233, %1080
  %1082 = load i64, ptr %15, align 8, !tbaa !9
  %1083 = load ptr, ptr %8, align 8, !tbaa !5
  %1084 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1083, i32 0, i32 6
  %1085 = load i64, ptr %1084, align 8, !tbaa !19
  %1086 = add nsw i64 %1085, 1
  %1087 = load i64, ptr %12, align 8, !tbaa !9
  %1088 = mul nsw i64 %1086, %1087
  %1089 = sub nsw i64 %1088, 1
  %1090 = icmp sle i64 %1082, %1089
  br i1 %1090, label %1091, label %1236

1091:                                             ; preds = %1081
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %1092

1092:                                             ; preds = %1117, %1091
  %1093 = load i64, ptr %16, align 8, !tbaa !9
  %1094 = load ptr, ptr %8, align 8, !tbaa !5
  %1095 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1094, i32 0, i32 6
  %1096 = load i64, ptr %1095, align 8, !tbaa !19
  %1097 = icmp sle i64 %1093, %1096
  br i1 %1097, label %1098, label %1120

1098:                                             ; preds = %1092
  %1099 = load ptr, ptr %8, align 8, !tbaa !5
  %1100 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1099, i32 0, i32 14
  %1101 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1100, i32 0, i32 4
  %1102 = load ptr, ptr %1101, align 8, !tbaa !29
  %1103 = load i64, ptr %20, align 8, !tbaa !9
  %1104 = load i64, ptr %16, align 8, !tbaa !9
  %1105 = add nsw i64 %1103, %1104
  %1106 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1102, i64 %1105
  %1107 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1106, i32 0, i32 0
  %1108 = load double, ptr %1107, align 8, !tbaa !38
  %1109 = load ptr, ptr %8, align 8, !tbaa !5
  %1110 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1109, i32 0, i32 16
  %1111 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1110, i32 0, i32 4
  %1112 = load ptr, ptr %1111, align 8, !tbaa !29
  %1113 = load i64, ptr %21, align 8, !tbaa !9
  %1114 = load i64, ptr %16, align 8, !tbaa !9
  %1115 = add nsw i64 %1113, %1114
  %1116 = getelementptr inbounds double, ptr %1112, i64 %1115
  store double %1108, ptr %1116, align 8, !tbaa !30
  br label %1117

1117:                                             ; preds = %1098
  %1118 = load i64, ptr %16, align 8, !tbaa !9
  %1119 = add nsw i64 %1118, 1
  store i64 %1119, ptr %16, align 8, !tbaa !9
  br label %1092, !llvm.loop !51

1120:                                             ; preds = %1092
  %1121 = load i64, ptr %21, align 8, !tbaa !9
  %1122 = load ptr, ptr %8, align 8, !tbaa !5
  %1123 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1122, i32 0, i32 9
  %1124 = load i64, ptr %1123, align 8, !tbaa !20
  %1125 = add nsw i64 %1121, %1124
  store i64 %1125, ptr %21, align 8, !tbaa !9
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %1126

1126:                                             ; preds = %1151, %1120
  %1127 = load i64, ptr %16, align 8, !tbaa !9
  %1128 = load ptr, ptr %8, align 8, !tbaa !5
  %1129 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1128, i32 0, i32 6
  %1130 = load i64, ptr %1129, align 8, !tbaa !19
  %1131 = icmp sle i64 %1127, %1130
  br i1 %1131, label %1132, label %1154

1132:                                             ; preds = %1126
  %1133 = load ptr, ptr %8, align 8, !tbaa !5
  %1134 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1133, i32 0, i32 14
  %1135 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1134, i32 0, i32 4
  %1136 = load ptr, ptr %1135, align 8, !tbaa !29
  %1137 = load i64, ptr %20, align 8, !tbaa !9
  %1138 = load i64, ptr %16, align 8, !tbaa !9
  %1139 = add nsw i64 %1137, %1138
  %1140 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1136, i64 %1139
  %1141 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1140, i32 0, i32 1
  %1142 = load double, ptr %1141, align 8, !tbaa !40
  %1143 = load ptr, ptr %8, align 8, !tbaa !5
  %1144 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1143, i32 0, i32 16
  %1145 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1144, i32 0, i32 4
  %1146 = load ptr, ptr %1145, align 8, !tbaa !29
  %1147 = load i64, ptr %21, align 8, !tbaa !9
  %1148 = load i64, ptr %16, align 8, !tbaa !9
  %1149 = add nsw i64 %1147, %1148
  %1150 = getelementptr inbounds double, ptr %1146, i64 %1149
  store double %1142, ptr %1150, align 8, !tbaa !30
  br label %1151

1151:                                             ; preds = %1132
  %1152 = load i64, ptr %16, align 8, !tbaa !9
  %1153 = add nsw i64 %1152, 1
  store i64 %1153, ptr %16, align 8, !tbaa !9
  br label %1126, !llvm.loop !52

1154:                                             ; preds = %1126
  %1155 = load i64, ptr %21, align 8, !tbaa !9
  %1156 = load ptr, ptr %8, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1156, i32 0, i32 9
  %1158 = load i64, ptr %1157, align 8, !tbaa !20
  %1159 = add nsw i64 %1155, %1158
  store i64 %1159, ptr %21, align 8, !tbaa !9
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %1160

1160:                                             ; preds = %1185, %1154
  %1161 = load i64, ptr %16, align 8, !tbaa !9
  %1162 = load ptr, ptr %8, align 8, !tbaa !5
  %1163 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1162, i32 0, i32 6
  %1164 = load i64, ptr %1163, align 8, !tbaa !19
  %1165 = icmp sle i64 %1161, %1164
  br i1 %1165, label %1166, label %1188

1166:                                             ; preds = %1160
  %1167 = load ptr, ptr %8, align 8, !tbaa !5
  %1168 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1167, i32 0, i32 13
  %1169 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1168, i32 0, i32 4
  %1170 = load ptr, ptr %1169, align 8, !tbaa !29
  %1171 = load i64, ptr %20, align 8, !tbaa !9
  %1172 = load i64, ptr %16, align 8, !tbaa !9
  %1173 = add nsw i64 %1171, %1172
  %1174 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1170, i64 %1173
  %1175 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1174, i32 0, i32 0
  %1176 = load double, ptr %1175, align 8, !tbaa !38
  %1177 = load ptr, ptr %8, align 8, !tbaa !5
  %1178 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1177, i32 0, i32 16
  %1179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1178, i32 0, i32 4
  %1180 = load ptr, ptr %1179, align 8, !tbaa !29
  %1181 = load i64, ptr %21, align 8, !tbaa !9
  %1182 = load i64, ptr %16, align 8, !tbaa !9
  %1183 = add nsw i64 %1181, %1182
  %1184 = getelementptr inbounds double, ptr %1180, i64 %1183
  store double %1176, ptr %1184, align 8, !tbaa !30
  br label %1185

1185:                                             ; preds = %1166
  %1186 = load i64, ptr %16, align 8, !tbaa !9
  %1187 = add nsw i64 %1186, 1
  store i64 %1187, ptr %16, align 8, !tbaa !9
  br label %1160, !llvm.loop !53

1188:                                             ; preds = %1160
  %1189 = load i64, ptr %21, align 8, !tbaa !9
  %1190 = load ptr, ptr %8, align 8, !tbaa !5
  %1191 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1190, i32 0, i32 9
  %1192 = load i64, ptr %1191, align 8, !tbaa !20
  %1193 = add nsw i64 %1189, %1192
  store i64 %1193, ptr %21, align 8, !tbaa !9
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %1194

1194:                                             ; preds = %1219, %1188
  %1195 = load i64, ptr %16, align 8, !tbaa !9
  %1196 = load ptr, ptr %8, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1196, i32 0, i32 6
  %1198 = load i64, ptr %1197, align 8, !tbaa !19
  %1199 = icmp sle i64 %1195, %1198
  br i1 %1199, label %1200, label %1222

1200:                                             ; preds = %1194
  %1201 = load ptr, ptr %8, align 8, !tbaa !5
  %1202 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1201, i32 0, i32 13
  %1203 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1202, i32 0, i32 4
  %1204 = load ptr, ptr %1203, align 8, !tbaa !29
  %1205 = load i64, ptr %20, align 8, !tbaa !9
  %1206 = load i64, ptr %16, align 8, !tbaa !9
  %1207 = add nsw i64 %1205, %1206
  %1208 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1204, i64 %1207
  %1209 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1208, i32 0, i32 1
  %1210 = load double, ptr %1209, align 8, !tbaa !40
  %1211 = load ptr, ptr %8, align 8, !tbaa !5
  %1212 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1211, i32 0, i32 16
  %1213 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1212, i32 0, i32 4
  %1214 = load ptr, ptr %1213, align 8, !tbaa !29
  %1215 = load i64, ptr %21, align 8, !tbaa !9
  %1216 = load i64, ptr %16, align 8, !tbaa !9
  %1217 = add nsw i64 %1215, %1216
  %1218 = getelementptr inbounds double, ptr %1214, i64 %1217
  store double %1210, ptr %1218, align 8, !tbaa !30
  br label %1219

1219:                                             ; preds = %1200
  %1220 = load i64, ptr %16, align 8, !tbaa !9
  %1221 = add nsw i64 %1220, 1
  store i64 %1221, ptr %16, align 8, !tbaa !9
  br label %1194, !llvm.loop !54

1222:                                             ; preds = %1194
  %1223 = load i64, ptr %21, align 8, !tbaa !9
  %1224 = load ptr, ptr %8, align 8, !tbaa !5
  %1225 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1224, i32 0, i32 9
  %1226 = load i64, ptr %1225, align 8, !tbaa !20
  %1227 = add nsw i64 %1223, %1226
  store i64 %1227, ptr %21, align 8, !tbaa !9
  %1228 = load i64, ptr %20, align 8, !tbaa !9
  %1229 = load ptr, ptr %8, align 8, !tbaa !5
  %1230 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1229, i32 0, i32 9
  %1231 = load i64, ptr %1230, align 8, !tbaa !20
  %1232 = add nsw i64 %1228, %1231
  store i64 %1232, ptr %20, align 8, !tbaa !9
  br label %1233

1233:                                             ; preds = %1222
  %1234 = load i64, ptr %15, align 8, !tbaa !9
  %1235 = add nsw i64 %1234, 1
  store i64 %1235, ptr %15, align 8, !tbaa !9
  br label %1081, !llvm.loop !55

1236:                                             ; preds = %1081
  %1237 = load ptr, ptr %8, align 8, !tbaa !5
  %1238 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1237, i32 0, i32 3
  %1239 = load double, ptr %1238, align 8, !tbaa !33
  %1240 = call double @llvm.fmuladd.f64(double 1.000000e+06, double %1239, double 1.000000e+50)
  %1241 = load ptr, ptr %8, align 8, !tbaa !5
  %1242 = getelementptr inbounds %"struct.alglib_impl::biharmonicpanel", ptr %1241, i32 0, i32 4
  store double %1240, ptr %1242, align 8, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 16, 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 8, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 40}
!12 = !{!"_ZTSN11alglib_impl15biharmonicpanelE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !14, i64 88, !14, i64 152, !14, i64 216, !14, i64 280, !14, i64 344, !14, i64 408, !13, i64 472, !14, i64 480, !14, i64 544}
!13 = !{!"double", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !15, i64 16, !16, i64 24, !7, i64 56}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!17 = !{!18, !10, i64 0}
!18 = !{!"_ZTSN11alglib_impl19biharmonicevaluatorE", !10, i64 0, !10, i64 8, !14, i64 16, !14, i64 80, !14, i64 144, !14, i64 208, !14, i64 272, !14, i64 336, !14, i64 400, !14, i64 464, !14, i64 528, !14, i64 592, !14, i64 656, !14, i64 720, !14, i64 784, !14, i64 848}
!19 = !{!12, !10, i64 48}
!20 = !{!12, !10, i64 72}
!21 = !{!12, !10, i64 80}
!22 = !{!12, !10, i64 56}
!23 = !{!12, !10, i64 64}
!24 = !{!12, !13, i64 32}
!25 = !{!12, !13, i64 472}
!26 = !{!12, !13, i64 0}
!27 = !{!12, !13, i64 8}
!28 = !{!12, !13, i64 16}
!29 = !{!7, !7, i64 0}
!30 = !{!13, !13, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!12, !13, i64 24}
!34 = distinct !{!34, !32}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = !{!39, !13, i64 0}
!39 = !{!"_ZTSN11alglib_impl10ae_complexE", !13, i64 0, !13, i64 8}
!40 = !{!39, !13, i64 8}
!41 = distinct !{!41, !32}
!42 = !{i64 0, i64 8, !30, i64 8, i64 8, !30}
!43 = distinct !{!43, !32}
!44 = distinct !{!44, !32}
!45 = distinct !{!45, !32}
!46 = distinct !{!46, !32}
!47 = distinct !{!47, !32}
!48 = distinct !{!48, !32}
!49 = distinct !{!49, !32}
!50 = distinct !{!50, !32}
!51 = distinct !{!51, !32}
!52 = distinct !{!52, !32}
!53 = distinct !{!53, !32}
!54 = distinct !{!54, !32}
!55 = distinct !{!55, !32}


; 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.718 = external hidden unnamed_addr constant [26 x i8], align 1

declare void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #0

declare noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

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

declare noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double, double, ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl11bhpanelinitEPNS_15biharmonicpanelEPKNS_9ae_matrixElllPKNS_19biharmonicevaluatorEPNS_8ae_stateE(ptr noundef %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr nocapture noundef readonly %5, ptr noundef %6) local_unnamed_addr #2 {
  %8 = sub nsw i64 %3, %2
  %9 = icmp sgt i64 %8, 0
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %9, ptr noundef nonnull @.str.718, ptr noundef %6)
  %10 = getelementptr inbounds i8, ptr %0, i64 40
  store i64 %4, ptr %10, align 8, !tbaa !5
  %11 = load i64, ptr %5, align 8, !tbaa !15
  %12 = getelementptr inbounds i8, ptr %0, i64 48
  store i64 %11, ptr %12, align 8, !tbaa !17
  %13 = add nsw i64 %11, 1
  %14 = getelementptr inbounds i8, ptr %0, i64 72
  store i64 %13, ptr %14, align 8, !tbaa !18
  %15 = getelementptr inbounds i8, ptr %0, i64 80
  store i64 %13, ptr %15, align 8, !tbaa !19
  %16 = getelementptr inbounds i8, ptr %0, i64 56
  store i64 %13, ptr %16, align 8, !tbaa !20
  %17 = add nsw i64 %11, -1
  %18 = getelementptr inbounds i8, ptr %0, i64 64
  store i64 %17, ptr %18, align 8, !tbaa !21
  %19 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 1.000000e+300, ptr noundef %6)
  %20 = fmul double %19, 1.000000e-03
  %21 = getelementptr inbounds i8, ptr %0, i64 32
  store double %20, ptr %21, align 8, !tbaa !22
  %22 = load i64, ptr %14, align 8, !tbaa !18
  %23 = mul nsw i64 %22, %4
  %24 = mul nsw i64 %23, %22
  %25 = tail call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %26 = extractvalue { double, double } %25, 0
  %27 = extractvalue { double, double } %25, 1
  %28 = getelementptr inbounds i8, ptr %0, i64 88
  tail call void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %24, double %26, double %27, ptr noundef nonnull %28, ptr noundef %6)
  %29 = load i64, ptr %14, align 8, !tbaa !18
  %30 = mul nsw i64 %29, %4
  %31 = mul nsw i64 %30, %29
  %32 = tail call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %33 = extractvalue { double, double } %32, 0
  %34 = extractvalue { double, double } %32, 1
  %35 = getelementptr inbounds i8, ptr %0, i64 152
  tail call void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %31, double %33, double %34, ptr noundef nonnull %35, ptr noundef %6)
  %36 = load i64, ptr %14, align 8, !tbaa !18
  %37 = mul nsw i64 %36, %4
  %38 = mul nsw i64 %37, %36
  %39 = tail call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %40 = extractvalue { double, double } %39, 0
  %41 = extractvalue { double, double } %39, 1
  %42 = getelementptr inbounds i8, ptr %0, i64 216
  tail call void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %38, double %40, double %41, ptr noundef nonnull %42, ptr noundef %6)
  %43 = load i64, ptr %14, align 8, !tbaa !18
  %44 = mul nsw i64 %43, %4
  %45 = mul nsw i64 %44, %43
  %46 = tail call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %47 = extractvalue { double, double } %46, 0
  %48 = extractvalue { double, double } %46, 1
  %49 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZN11alglib_impl10csetallocvElNS_10ae_complexEPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %45, double %47, double %48, ptr noundef nonnull %49, ptr noundef %6)
  %50 = shl nsw i64 %4, 2
  %51 = load i64, ptr %14, align 8, !tbaa !18
  %52 = mul nsw i64 %50, %51
  %53 = mul nsw i64 %52, %51
  %54 = getelementptr inbounds i8, ptr %0, i64 408
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %53, double noundef 0.000000e+00, ptr noundef nonnull %54, ptr noundef %6)
  %55 = load i64, ptr %14, align 8, !tbaa !18
  %56 = mul nsw i64 %55, %55
  %57 = getelementptr inbounds i8, ptr %0, i64 472
  store double 0.000000e+00, ptr %57, align 8, !tbaa !23
  %58 = getelementptr inbounds i8, ptr %0, i64 8
  %59 = getelementptr inbounds i8, ptr %0, i64 16
  %.not.not465 = icmp slt i64 %2, %3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false)
  br i1 %.not.not465, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %7
  %60 = getelementptr inbounds i8, ptr %1, i64 72
  br label %61

61:                                               ; preds = %.lr.ph, %61
  %62 = phi double [ 0.000000e+00, %.lr.ph ], [ %81, %61 ]
  %63 = phi double [ 0.000000e+00, %.lr.ph ], [ %75, %61 ]
  %64 = phi double [ 0.000000e+00, %.lr.ph ], [ %69, %61 ]
  %.0418466 = phi i64 [ %2, %.lr.ph ], [ %82, %61 ]
  %65 = load ptr, ptr %60, align 8, !tbaa !24
  %66 = getelementptr inbounds ptr, ptr %65, i64 %.0418466
  %67 = load ptr, ptr %66, align 8, !tbaa !25
  %68 = load double, ptr %67, align 8, !tbaa !26
  %69 = fadd double %64, %68
  store double %69, ptr %0, align 8, !tbaa !27
  %70 = load ptr, ptr %60, align 8, !tbaa !24
  %71 = getelementptr inbounds ptr, ptr %70, i64 %.0418466
  %72 = load ptr, ptr %71, align 8, !tbaa !25
  %73 = getelementptr inbounds i8, ptr %72, i64 8
  %74 = load double, ptr %73, align 8, !tbaa !26
  %75 = fadd double %63, %74
  store double %75, ptr %58, align 8, !tbaa !28
  %76 = load ptr, ptr %60, align 8, !tbaa !24
  %77 = getelementptr inbounds ptr, ptr %76, i64 %.0418466
  %78 = load ptr, ptr %77, align 8, !tbaa !25
  %79 = getelementptr inbounds i8, ptr %78, i64 16
  %80 = load double, ptr %79, align 8, !tbaa !26
  %81 = fadd double %62, %80
  store double %81, ptr %59, align 8, !tbaa !29
  %82 = add nsw i64 %.0418466, 1
  %exitcond.not = icmp eq i64 %82, %3
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %61, !llvm.loop !30

._crit_edge.loopexit:                             ; preds = %61
  %83 = insertelement <2 x double> poison, double %69, i64 0
  %84 = insertelement <2 x double> %83, double %75, i64 1
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %7
  %85 = phi double [ 0.000000e+00, %7 ], [ %81, %._crit_edge.loopexit ]
  %86 = phi <2 x double> [ zeroinitializer, %7 ], [ %84, %._crit_edge.loopexit ]
  %87 = sitofp i64 %8 to double
  %88 = insertelement <2 x double> poison, double %87, i64 0
  %89 = shufflevector <2 x double> %88, <2 x double> poison, <2 x i32> zeroinitializer
  %90 = fdiv <2 x double> %86, %89
  store <2 x double> %90, ptr %0, align 8, !tbaa !26
  %91 = fdiv double %85, %87
  store double %91, ptr %59, align 8, !tbaa !29
  %92 = getelementptr inbounds i8, ptr %0, i64 24
  store double 5.000000e-16, ptr %92, align 8, !tbaa !32
  br i1 %.not.not465, label %.lr.ph470, label %.preheader464.thread

.lr.ph470:                                        ; preds = %._crit_edge
  %93 = getelementptr inbounds i8, ptr %1, i64 72
  br label %108

.preheader464:                                    ; preds = %108
  %.not.not439476 = icmp sgt i64 %4, 0
  br i1 %.not.not439476, label %.preheader463.lr.ph, label %._crit_edge478

.preheader464.thread:                             ; preds = %._crit_edge
  %.not.not439476569 = icmp sgt i64 %4, 0
  br i1 %.not.not439476569, label %.preheader463.preheader, label %._crit_edge478

.preheader463.lr.ph:                              ; preds = %.preheader464
  %94 = getelementptr inbounds i8, ptr %1, i64 72
  br i1 %.not.not465, label %.preheader463.us, label %.preheader463.preheader

.preheader463.preheader:                          ; preds = %.preheader464.thread, %.preheader463.lr.ph
  %.pre = load double, ptr %57, align 8, !tbaa !23
  br label %.preheader463

.preheader463.us:                                 ; preds = %.preheader463.lr.ph, %._crit_edge475.us
  %.0422477.us = phi i64 [ %107, %._crit_edge475.us ], [ 0, %.preheader463.lr.ph ]
  br label %95

95:                                               ; preds = %.preheader463.us, %95
  %.2420473.us = phi i64 [ %2, %.preheader463.us ], [ %104, %95 ]
  %.0429472.us = phi double [ 0.000000e+00, %.preheader463.us ], [ %103, %95 ]
  %96 = load ptr, ptr %94, align 8, !tbaa !24
  %97 = getelementptr inbounds ptr, ptr %96, i64 %.2420473.us
  %98 = load ptr, ptr %97, align 8, !tbaa !25
  %99 = getelementptr inbounds double, ptr %98, i64 %.0422477.us
  %100 = getelementptr inbounds i8, ptr %99, i64 24
  %101 = load double, ptr %100, align 8, !tbaa !26
  %102 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %101, ptr noundef %6)
  %103 = fadd double %.0429472.us, %102
  %104 = add i64 %.2420473.us, 1
  %exitcond552.not = icmp eq i64 %104, %3
  br i1 %exitcond552.not, label %._crit_edge475.us, label %95, !llvm.loop !33

._crit_edge475.us:                                ; preds = %95
  %105 = load double, ptr %57, align 8, !tbaa !23
  %106 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %105, double noundef %103, ptr noundef %6)
  store double %106, ptr %57, align 8, !tbaa !23
  %107 = add nuw nsw i64 %.0422477.us, 1
  %exitcond553.not = icmp eq i64 %107, %4
  br i1 %exitcond553.not, label %._crit_edge478, label %.preheader463.us, !llvm.loop !34

108:                                              ; preds = %.lr.ph470, %108
  %109 = phi double [ 5.000000e-16, %.lr.ph470 ], [ %128, %108 ]
  %.1419468 = phi i64 [ %2, %.lr.ph470 ], [ %129, %108 ]
  %110 = load ptr, ptr %93, align 8, !tbaa !24
  %111 = getelementptr inbounds ptr, ptr %110, i64 %.1419468
  %112 = load ptr, ptr %111, align 8, !tbaa !25
  %113 = load double, ptr %112, align 8, !tbaa !26
  %114 = load double, ptr %0, align 8, !tbaa !27
  %115 = fsub double %113, %114
  %116 = getelementptr inbounds i8, ptr %112, i64 8
  %117 = load double, ptr %116, align 8, !tbaa !26
  %118 = load double, ptr %58, align 8, !tbaa !28
  %119 = fsub double %117, %118
  %120 = getelementptr inbounds i8, ptr %112, i64 16
  %121 = load double, ptr %120, align 8, !tbaa !26
  %122 = load double, ptr %59, align 8, !tbaa !29
  %123 = fsub double %121, %122
  %124 = fmul double %119, %119
  %125 = tail call double @llvm.fmuladd.f64(double %115, double %115, double %124)
  %126 = tail call double @llvm.fmuladd.f64(double %123, double %123, double %125)
  %127 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %126, ptr noundef %6)
  %128 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %109, double noundef %127, ptr noundef %6)
  store double %128, ptr %92, align 8, !tbaa !32
  %129 = add i64 %.1419468, 1
  %exitcond550.not = icmp eq i64 %129, %3
  br i1 %exitcond550.not, label %.preheader464, label %108, !llvm.loop !35

.preheader463:                                    ; preds = %.preheader463.preheader, %.preheader463
  %130 = phi double [ %131, %.preheader463 ], [ %.pre, %.preheader463.preheader ]
  %.0422477 = phi i64 [ %132, %.preheader463 ], [ 0, %.preheader463.preheader ]
  %131 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %130, double noundef 0.000000e+00, ptr noundef %6)
  store double %131, ptr %57, align 8, !tbaa !23
  %132 = add nuw nsw i64 %.0422477, 1
  %exitcond551.not = icmp eq i64 %132, %4
  br i1 %exitcond551.not, label %._crit_edge478, label %.preheader463, !llvm.loop !34

._crit_edge478:                                   ; preds = %.preheader463, %._crit_edge475.us, %.preheader464.thread, %.preheader464
  %.not.not439476570.not = phi i1 [ true, %.preheader464.thread ], [ true, %.preheader464 ], [ false, %._crit_edge475.us ], [ false, %.preheader463 ]
  %133 = load i64, ptr %5, align 8, !tbaa !15
  %134 = add nsw i64 %133, 2
  %135 = getelementptr inbounds i8, ptr %0, i64 344
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %134, ptr noundef nonnull %135, ptr noundef %6)
  %136 = getelementptr inbounds i8, ptr %0, i64 400
  %137 = load ptr, ptr %136, align 8, !tbaa !24
  store double 1.000000e+00, ptr %137, align 8, !tbaa !26
  %138 = load i64, ptr %5, align 8, !tbaa !15
  %.not479 = icmp slt i64 %138, 0
  br i1 %.not479, label %._crit_edge483, label %.lr.ph482.preheader

.lr.ph482.preheader:                              ; preds = %._crit_edge478
  %139 = icmp eq i64 %138, 0
  br i1 %139, label %._crit_edge483.loopexit.unr-lcssa, label %.lr.ph482.preheader.new

.lr.ph482.preheader.new:                          ; preds = %.lr.ph482.preheader
  %140 = add nuw i64 %138, 1
  %unroll_iter = and i64 %140, -2
  br label %.lr.ph482

.lr.ph482:                                        ; preds = %.lr.ph482, %.lr.ph482.preheader.new
  %.0480 = phi i64 [ 1, %.lr.ph482.preheader.new ], [ %153, %.lr.ph482 ]
  %niter = phi i64 [ 0, %.lr.ph482.preheader.new ], [ %niter.next.1, %.lr.ph482 ]
  %141 = load ptr, ptr %136, align 8, !tbaa !24
  %142 = getelementptr double, ptr %141, i64 %.0480
  %143 = getelementptr i8, ptr %142, i64 -8
  %144 = load double, ptr %143, align 8, !tbaa !26
  %145 = load double, ptr %92, align 8, !tbaa !32
  %146 = fmul double %144, %145
  store double %146, ptr %142, align 8, !tbaa !26
  %147 = load ptr, ptr %136, align 8, !tbaa !24
  %148 = getelementptr double, ptr %147, i64 %.0480
  %149 = getelementptr i8, ptr %148, i64 8
  %150 = load double, ptr %148, align 8, !tbaa !26
  %151 = load double, ptr %92, align 8, !tbaa !32
  %152 = fmul double %150, %151
  store double %152, ptr %149, align 8, !tbaa !26
  %153 = add nuw i64 %.0480, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge483.loopexit.unr-lcssa, label %.lr.ph482, !llvm.loop !36

._crit_edge483.loopexit.unr-lcssa:                ; preds = %.lr.ph482, %.lr.ph482.preheader
  %.0480.unr = phi i64 [ 1, %.lr.ph482.preheader ], [ %153, %.lr.ph482 ]
  %154 = and i64 %138, 1
  %lcmp.mod.not.not = icmp eq i64 %154, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph482.epil, label %._crit_edge483

.lr.ph482.epil:                                   ; preds = %._crit_edge483.loopexit.unr-lcssa
  %155 = load ptr, ptr %136, align 8, !tbaa !24
  %156 = getelementptr double, ptr %155, i64 %.0480.unr
  %157 = getelementptr i8, ptr %156, i64 -8
  %158 = load double, ptr %157, align 8, !tbaa !26
  %159 = load double, ptr %92, align 8, !tbaa !32
  %160 = fmul double %158, %159
  store double %160, ptr %156, align 8, !tbaa !26
  br label %._crit_edge483

._crit_edge483:                                   ; preds = %.lr.ph482.epil, %._crit_edge483.loopexit.unr-lcssa, %._crit_edge478
  %161 = load i64, ptr %15, align 8, !tbaa !19
  %162 = getelementptr inbounds i8, ptr %0, i64 544
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %161, ptr noundef nonnull %162, ptr noundef %6)
  br i1 %.not.not465, label %.lr.ph509, label %.preheader461

.lr.ph509:                                        ; preds = %._crit_edge483
  %163 = getelementptr inbounds i8, ptr %1, i64 72
  %164 = getelementptr inbounds i8, ptr %0, i64 600
  %165 = getelementptr inbounds i8, ptr %5, i64 648
  %166 = getelementptr inbounds i8, ptr %5, i64 520
  %167 = getelementptr inbounds i8, ptr %5, i64 584
  %168 = getelementptr inbounds i8, ptr %5, i64 456
  %169 = getelementptr inbounds i8, ptr %5, i64 904
  %170 = getelementptr inbounds i8, ptr %5, i64 840
  %171 = getelementptr inbounds i8, ptr %0, i64 144
  %172 = getelementptr inbounds i8, ptr %5, i64 776
  %173 = getelementptr inbounds i8, ptr %0, i64 208
  br label %183

.preheader461:                                    ; preds = %._crit_edge504, %._crit_edge483
  %174 = load i64, ptr %12, align 8, !tbaa !17
  %.not441519 = icmp slt i64 %174, 0
  br i1 %.not441519, label %.preheader456, label %.preheader460.lr.ph

.preheader460.lr.ph:                              ; preds = %.preheader461
  %175 = getelementptr inbounds i8, ptr %5, i64 200
  %176 = getelementptr inbounds i8, ptr %5, i64 328
  %177 = load i64, ptr %16, align 8, !tbaa !20
  %178 = load i64, ptr %18, align 8, !tbaa !21
  %.not449.not510 = icmp slt i64 %4, 1
  %179 = getelementptr inbounds i8, ptr %0, i64 144
  %180 = getelementptr inbounds i8, ptr %0, i64 272
  %181 = getelementptr inbounds i8, ptr %0, i64 208
  %182 = getelementptr inbounds i8, ptr %0, i64 336
  br label %.preheader460

183:                                              ; preds = %.lr.ph509, %._crit_edge504
  %.3421506 = phi i64 [ %2, %.lr.ph509 ], [ %336, %._crit_edge504 ]
  %184 = load ptr, ptr %163, align 8, !tbaa !24
  %185 = getelementptr inbounds ptr, ptr %184, i64 %.3421506
  %186 = load ptr, ptr %185, align 8, !tbaa !25
  %187 = load double, ptr %186, align 8, !tbaa !26
  %188 = load double, ptr %0, align 8, !tbaa !27
  %189 = fsub double %187, %188
  %190 = getelementptr inbounds i8, ptr %186, i64 8
  %191 = load double, ptr %190, align 8, !tbaa !26
  %192 = load double, ptr %58, align 8, !tbaa !28
  %193 = fsub double %191, %192
  %194 = getelementptr inbounds i8, ptr %186, i64 16
  %195 = load double, ptr %194, align 8, !tbaa !26
  %196 = load double, ptr %59, align 8, !tbaa !29
  %197 = fsub double %195, %196
  %198 = fmul double %193, %193
  %199 = tail call double @llvm.fmuladd.f64(double %189, double %189, double %198)
  %200 = tail call double @llvm.fmuladd.f64(double %197, double %197, double %199)
  %201 = fadd double %200, 1.000000e-300
  %202 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %201, ptr noundef %6)
  %203 = fadd double %199, 1.000000e-300
  %204 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %203, ptr noundef %6)
  %205 = fdiv double %197, %202
  %206 = fdiv double %204, %202
  %207 = fneg double %193
  %208 = insertelement <2 x double> poison, double %207, i64 0
  %209 = insertelement <2 x double> %208, double %189, i64 1
  %210 = insertelement <2 x double> poison, double %204, i64 0
  %211 = shufflevector <2 x double> %210, <2 x double> poison, <2 x i32> zeroinitializer
  %212 = fdiv <2 x double> %209, %211
  %213 = load ptr, ptr %164, align 8, !tbaa !24
  store double 1.000000e+00, ptr %213, align 8, !tbaa !26
  %214 = load i64, ptr %15, align 8, !tbaa !19
  %.not451.not484 = icmp sgt i64 %214, 1
  br i1 %.not451.not484, label %.lr.ph487.preheader, label %.preheader462

.lr.ph487.preheader:                              ; preds = %183
  %215 = add nsw i64 %214, -1
  %216 = add nsw i64 %214, -2
  %xtraiter587 = and i64 %215, 3
  %217 = icmp ult i64 %216, 3
  br i1 %217, label %.preheader462.loopexit.unr-lcssa, label %.lr.ph487.preheader.new

.lr.ph487.preheader.new:                          ; preds = %.lr.ph487.preheader
  %unroll_iter589 = and i64 %215, -4
  br label %.lr.ph487

.preheader462.loopexit.unr-lcssa:                 ; preds = %.lr.ph487, %.lr.ph487.preheader
  %.1485.unr = phi i64 [ 1, %.lr.ph487.preheader ], [ %335, %.lr.ph487 ]
  %lcmp.mod588.not = icmp eq i64 %xtraiter587, 0
  br i1 %lcmp.mod588.not, label %.preheader462, label %.lr.ph487.epil

.lr.ph487.epil:                                   ; preds = %.preheader462.loopexit.unr-lcssa, %.lr.ph487.epil
  %.1485.epil = phi i64 [ %223, %.lr.ph487.epil ], [ %.1485.unr, %.preheader462.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph487.epil ], [ 0, %.preheader462.loopexit.unr-lcssa ]
  %218 = load ptr, ptr %164, align 8, !tbaa !24
  %219 = getelementptr double, ptr %218, i64 %.1485.epil
  %220 = getelementptr i8, ptr %219, i64 -8
  %221 = load double, ptr %220, align 8, !tbaa !26
  %222 = fmul double %202, %221
  store double %222, ptr %219, align 8, !tbaa !26
  %223 = add nuw nsw i64 %.1485.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter587
  br i1 %epil.iter.cmp.not, label %.preheader462, label %.lr.ph487.epil, !llvm.loop !37

.preheader462:                                    ; preds = %.preheader462.loopexit.unr-lcssa, %.lr.ph487.epil, %183
  %224 = load i64, ptr %14, align 8, !tbaa !18
  %.not452.not498 = icmp slt i64 %224, 1
  %brmerge579 = or i1 %.not452.not498, %.not.not439476570.not
  br i1 %brmerge579, label %._crit_edge504, label %.split.us.us

.split.us.us:                                     ; preds = %.preheader462, %.split497.us.us
  %.0414502.us = phi i64 [ %312, %.split497.us.us ], [ 0, %.preheader462 ]
  %.0431501.us = phi double [ %304, %.split497.us.us ], [ 1.000000e+00, %.preheader462 ]
  %225 = phi <2 x double> [ %311, %.split497.us.us ], [ <double 0.000000e+00, double 1.000000e+00>, %.preheader462 ]
  %226 = load ptr, ptr %165, align 8, !tbaa !24
  %227 = getelementptr inbounds double, ptr %226, i64 %.0414502.us
  %228 = load double, ptr %227, align 8, !tbaa !26
  %229 = fmul double %.0431501.us, %228
  %230 = extractelement <2 x double> %225, i64 0
  %231 = extractelement <2 x double> %225, i64 1
  br label %232

232:                                              ; preds = %._crit_edge492.us.us, %.split.us.us
  %.0426495.us.us = phi i64 [ %.0414502.us, %.split.us.us ], [ %303, %._crit_edge492.us.us ]
  %.0432494.us.us = phi double [ 0.000000e+00, %.split.us.us ], [ %.1433.us.us, %._crit_edge492.us.us ]
  %.0434493.us.us = phi double [ %229, %.split.us.us ], [ %.1435.us.us, %._crit_edge492.us.us ]
  %233 = mul nuw nsw i64 %.0426495.us.us, %224
  %234 = add nuw nsw i64 %233, %.0414502.us
  %235 = icmp ugt i64 %.0426495.us.us, %.0414502.us
  br i1 %235, label %236, label %.lr.ph491.us.us

236:                                              ; preds = %232
  %237 = fmul double %205, %.0434493.us.us
  %238 = load ptr, ptr %166, align 8, !tbaa !24
  %239 = getelementptr inbounds double, ptr %238, i64 %234
  %240 = load double, ptr %239, align 8, !tbaa !26
  %241 = load ptr, ptr %167, align 8, !tbaa !24
  %242 = getelementptr inbounds double, ptr %241, i64 %234
  %243 = load double, ptr %242, align 8, !tbaa !26
  %244 = fmul double %.0432494.us.us, %243
  %245 = tail call double @llvm.fmuladd.f64(double %237, double %240, double %244)
  br label %.lr.ph491.us.us

.lr.ph491.us.us:                                  ; preds = %236, %232
  %.1435.us.us = phi double [ %245, %236 ], [ %.0434493.us.us, %232 ]
  %.1433.us.us = phi double [ %.0434493.us.us, %236 ], [ %.0432494.us.us, %232 ]
  %246 = load ptr, ptr %168, align 8, !tbaa !24
  %247 = getelementptr inbounds double, ptr %246, i64 %234
  %248 = load double, ptr %247, align 8, !tbaa !26
  %249 = fmul double %.1435.us.us, %248
  %250 = fmul double %231, %249
  %251 = fmul double %230, %249
  %252 = load ptr, ptr %164, align 8, !tbaa !24
  %253 = getelementptr inbounds double, ptr %252, i64 %.0426495.us.us
  %254 = load double, ptr %253, align 8, !tbaa !26
  %255 = load ptr, ptr %169, align 8, !tbaa !24
  %256 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %255, i64 %234
  %.sroa.056.0.copyload.us.us = load double, ptr %256, align 8, !tbaa !26
  %.sroa.558.0..sroa_idx.us.us = getelementptr inbounds i8, ptr %256, i64 8
  %.sroa.558.0.copyload.us.us = load double, ptr %.sroa.558.0..sroa_idx.us.us, align 8, !tbaa !26
  %257 = fneg double %.sroa.558.0.copyload.us.us
  %258 = fmul double %251, %257
  %259 = tail call double @llvm.fmuladd.f64(double %.sroa.056.0.copyload.us.us, double %250, double %258)
  %260 = fmul double %254, %259
  %261 = fmul double %250, %.sroa.558.0.copyload.us.us
  %262 = tail call double @llvm.fmuladd.f64(double %.sroa.056.0.copyload.us.us, double %251, double %261)
  %263 = fmul double %254, %262
  br label %264

264:                                              ; preds = %264, %.lr.ph491.us.us
  %.1423489.us.us = phi i64 [ 0, %.lr.ph491.us.us ], [ %302, %264 ]
  %265 = mul nuw nsw i64 %.1423489.us.us, %56
  %266 = add nuw nsw i64 %265, %234
  %267 = load ptr, ptr %163, align 8, !tbaa !24
  %268 = getelementptr inbounds ptr, ptr %267, i64 %.3421506
  %269 = load ptr, ptr %268, align 8, !tbaa !25
  %270 = add nuw nsw i64 %.1423489.us.us, 3
  %271 = getelementptr inbounds double, ptr %269, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !26
  %273 = load ptr, ptr %170, align 8, !tbaa !24
  %274 = getelementptr inbounds double, ptr %273, i64 %.0426495.us.us
  %275 = load double, ptr %274, align 8, !tbaa !26
  %276 = fmul double %272, %275
  %277 = load ptr, ptr %171, align 8, !tbaa !24
  %278 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %277, i64 %266
  %.sroa.030.0.copyload.us.us = load double, ptr %278, align 8, !tbaa !26
  %.sroa.734.0..sroa_idx.us.us = getelementptr inbounds i8, ptr %278, i64 8
  %.sroa.734.0.copyload.us.us = load double, ptr %.sroa.734.0..sroa_idx.us.us, align 8, !tbaa !26
  %279 = tail call double @llvm.fmuladd.f64(double %276, double %260, double %.sroa.030.0.copyload.us.us)
  store double %279, ptr %278, align 8, !tbaa !39
  %280 = tail call double @llvm.fmuladd.f64(double %276, double %263, double %.sroa.734.0.copyload.us.us)
  %281 = load ptr, ptr %171, align 8, !tbaa !24
  %282 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %281, i64 %266, i32 1
  store double %280, ptr %282, align 8, !tbaa !41
  %283 = load ptr, ptr %163, align 8, !tbaa !24
  %284 = getelementptr inbounds ptr, ptr %283, i64 %.3421506
  %285 = load ptr, ptr %284, align 8, !tbaa !25
  %286 = getelementptr inbounds double, ptr %285, i64 %270
  %287 = load double, ptr %286, align 8, !tbaa !26
  %288 = load ptr, ptr %164, align 8, !tbaa !24
  %289 = getelementptr inbounds i8, ptr %288, i64 16
  %290 = load double, ptr %289, align 8, !tbaa !26
  %291 = fmul double %287, %290
  %292 = load ptr, ptr %172, align 8, !tbaa !24
  %293 = getelementptr inbounds double, ptr %292, i64 %.0426495.us.us
  %294 = load double, ptr %293, align 8, !tbaa !26
  %295 = fmul double %291, %294
  %296 = load ptr, ptr %173, align 8, !tbaa !24
  %297 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %296, i64 %266
  %.sroa.022.0.copyload.us.us = load double, ptr %297, align 8, !tbaa !26
  %.sroa.7.0..sroa_idx.us.us = getelementptr inbounds i8, ptr %297, i64 8
  %.sroa.7.0.copyload.us.us = load double, ptr %.sroa.7.0..sroa_idx.us.us, align 8, !tbaa !26
  %298 = tail call double @llvm.fmuladd.f64(double %295, double %260, double %.sroa.022.0.copyload.us.us)
  store double %298, ptr %297, align 8, !tbaa !39
  %299 = tail call double @llvm.fmuladd.f64(double %295, double %263, double %.sroa.7.0.copyload.us.us)
  %300 = load ptr, ptr %173, align 8, !tbaa !24
  %301 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %300, i64 %266, i32 1
  store double %299, ptr %301, align 8, !tbaa !41
  %302 = add nuw nsw i64 %.1423489.us.us, 1
  %exitcond556.not = icmp eq i64 %302, %4
  br i1 %exitcond556.not, label %._crit_edge492.us.us, label %264, !llvm.loop !42

._crit_edge492.us.us:                             ; preds = %264
  %303 = add nuw nsw i64 %.0426495.us.us, 1
  %.not453.not.us.us = icmp slt i64 %303, %224
  br i1 %.not453.not.us.us, label %232, label %.split497.us.us, !llvm.loop !43

.split497.us.us:                                  ; preds = %._crit_edge492.us.us
  %304 = fmul double %206, %.0431501.us
  %305 = shufflevector <2 x double> %225, <2 x double> poison, <2 x i32> <i32 poison, i32 0>
  %306 = fneg <2 x double> %225
  %307 = shufflevector <2 x double> %306, <2 x double> %305, <2 x i32> <i32 0, i32 3>
  %308 = fmul <2 x double> %212, %307
  %309 = shufflevector <2 x double> %308, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %310 = shufflevector <2 x double> %225, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %311 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %310, <2 x double> %212, <2 x double> %309)
  %312 = add nuw nsw i64 %.0414502.us, 1
  %exitcond557.not = icmp eq i64 %312, %224
  br i1 %exitcond557.not, label %._crit_edge504, label %.split.us.us, !llvm.loop !44

.lr.ph487:                                        ; preds = %.lr.ph487, %.lr.ph487.preheader.new
  %.1485 = phi i64 [ 1, %.lr.ph487.preheader.new ], [ %335, %.lr.ph487 ]
  %niter590 = phi i64 [ 0, %.lr.ph487.preheader.new ], [ %niter590.next.3, %.lr.ph487 ]
  %313 = load ptr, ptr %164, align 8, !tbaa !24
  %314 = getelementptr double, ptr %313, i64 %.1485
  %315 = getelementptr i8, ptr %314, i64 -8
  %316 = load double, ptr %315, align 8, !tbaa !26
  %317 = fmul double %202, %316
  store double %317, ptr %314, align 8, !tbaa !26
  %318 = load ptr, ptr %164, align 8, !tbaa !24
  %319 = getelementptr double, ptr %318, i64 %.1485
  %320 = getelementptr i8, ptr %319, i64 8
  %321 = load double, ptr %319, align 8, !tbaa !26
  %322 = fmul double %202, %321
  store double %322, ptr %320, align 8, !tbaa !26
  %323 = load ptr, ptr %164, align 8, !tbaa !24
  %324 = getelementptr double, ptr %323, i64 %.1485
  %325 = getelementptr i8, ptr %324, i64 16
  %326 = getelementptr i8, ptr %324, i64 8
  %327 = load double, ptr %326, align 8, !tbaa !26
  %328 = fmul double %202, %327
  store double %328, ptr %325, align 8, !tbaa !26
  %329 = load ptr, ptr %164, align 8, !tbaa !24
  %330 = getelementptr double, ptr %329, i64 %.1485
  %331 = getelementptr i8, ptr %330, i64 24
  %332 = getelementptr i8, ptr %330, i64 16
  %333 = load double, ptr %332, align 8, !tbaa !26
  %334 = fmul double %202, %333
  store double %334, ptr %331, align 8, !tbaa !26
  %335 = add nuw nsw i64 %.1485, 4
  %niter590.next.3 = add i64 %niter590, 4
  %niter590.ncmp.3 = icmp eq i64 %niter590.next.3, %unroll_iter589
  br i1 %niter590.ncmp.3, label %.preheader462.loopexit.unr-lcssa, label %.lr.ph487, !llvm.loop !45

._crit_edge504:                                   ; preds = %.split497.us.us, %.preheader462
  %336 = add i64 %.3421506, 1
  %exitcond558.not = icmp eq i64 %336, %3
  br i1 %exitcond558.not, label %.preheader461, label %183, !llvm.loop !46

.preheader460:                                    ; preds = %.preheader460.lr.ph, %407
  %indvars.iv = phi i64 [ 1, %.preheader460.lr.ph ], [ %indvars.iv.next, %407 ]
  %.2520 = phi i64 [ 0, %.preheader460.lr.ph ], [ %408, %407 ]
  %337 = icmp sge i64 %.2520, %177
  %338 = icmp sge i64 %.2520, %178
  %brmerge = or i1 %337, %.not449.not510
  %brmerge547 = or i1 %338, %.not449.not510
  br label %352

.preheader456:                                    ; preds = %407, %.preheader461
  %.pre-phi = add i64 %174, 1
  %339 = mul nsw i64 %.pre-phi, %4
  %.not442.not540 = icmp sgt i64 %339, 0
  br i1 %.not442.not540, label %.preheader.lr.ph, label %._crit_edge544

.preheader.lr.ph:                                 ; preds = %.preheader456
  %340 = getelementptr inbounds i8, ptr %0, i64 336
  %341 = getelementptr inbounds i8, ptr %0, i64 464
  %342 = load i64, ptr %14, align 8, !tbaa !18
  %343 = getelementptr inbounds i8, ptr %0, i64 272
  %344 = icmp eq i64 %174, 0
  %unroll_iter594 = and i64 %.pre-phi, -2
  %345 = and i64 %174, 1
  %lcmp.mod593.not.not = icmp eq i64 %345, 0
  %346 = icmp eq i64 %174, 0
  %unroll_iter599 = and i64 %.pre-phi, -2
  %347 = and i64 %174, 1
  %lcmp.mod598.not.not = icmp eq i64 %347, 0
  %348 = icmp eq i64 %174, 0
  %unroll_iter604 = and i64 %.pre-phi, -2
  %349 = and i64 %174, 1
  %lcmp.mod603.not.not = icmp eq i64 %349, 0
  %350 = icmp eq i64 %174, 0
  %unroll_iter609 = and i64 %.pre-phi, -2
  %351 = and i64 %174, 1
  %lcmp.mod608.not.not = icmp eq i64 %351, 0
  br label %.preheader

352:                                              ; preds = %.preheader460, %.loopexit
  %.1415516 = phi i64 [ 0, %.preheader460 ], [ %406, %.loopexit ]
  %353 = load ptr, ptr %175, align 8, !tbaa !24
  %354 = getelementptr inbounds double, ptr %353, i64 %.2520
  %355 = getelementptr inbounds double, ptr %354, i64 %.1415516
  %356 = load double, ptr %355, align 8, !tbaa !26
  %357 = sub nsw i64 %.2520, %.1415516
  %358 = getelementptr inbounds double, ptr %353, i64 %357
  %359 = load double, ptr %358, align 8, !tbaa !26
  %360 = fmul double %356, %359
  %.not448 = icmp eq i64 %.1415516, 0
  %361 = fmul double %360, 2.000000e+00
  %.1430 = select i1 %.not448, double %360, double %361
  %362 = load ptr, ptr %176, align 8, !tbaa !24
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %362, i64 %.1415516
  %.sroa.013.0.copyload = load double, ptr %363, align 8, !tbaa !26
  %.sroa.9.0..sroa_idx = getelementptr inbounds i8, ptr %363, i64 8
  %.sroa.9.0.copyload = load double, ptr %.sroa.9.0..sroa_idx, align 8, !tbaa !26
  %364 = fmul double %.sroa.013.0.copyload, %.1430
  %365 = fmul double %.sroa.9.0.copyload, %.1430
  br i1 %brmerge, label %.loopexit459, label %.lr.ph512

.lr.ph512:                                        ; preds = %352
  %366 = load i64, ptr %14, align 8, !tbaa !18
  %367 = mul nsw i64 %366, %.2520
  br label %368

368:                                              ; preds = %.lr.ph512, %368
  %.2424511 = phi i64 [ 0, %.lr.ph512 ], [ %385, %368 ]
  %369 = load ptr, ptr %179, align 8, !tbaa !24
  %370 = mul nuw nsw i64 %.2424511, %56
  %371 = add nuw i64 %370, %.1415516
  %372 = add i64 %371, %367
  %373 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %369, i64 %372
  %.sroa.030.0.copyload33 = load double, ptr %373, align 8, !tbaa !26
  %.sroa.734.0..sroa_idx35 = getelementptr inbounds i8, ptr %373, i64 8
  %.sroa.734.0.copyload36 = load double, ptr %.sroa.734.0..sroa_idx35, align 8, !tbaa !26
  %374 = fneg double %.sroa.734.0.copyload36
  %375 = fmul double %365, %374
  %376 = tail call double @llvm.fmuladd.f64(double %.sroa.030.0.copyload33, double %364, double %375)
  %377 = load ptr, ptr %180, align 8, !tbaa !24
  %378 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %377, i64 %372
  store double %376, ptr %378, align 8, !tbaa !39
  %379 = fmul double %364, %.sroa.734.0.copyload36
  %380 = tail call double @llvm.fmuladd.f64(double %.sroa.030.0.copyload33, double %365, double %379)
  %381 = load ptr, ptr %180, align 8, !tbaa !24
  %382 = getelementptr %"struct.alglib_impl::ae_complex", ptr %381, i64 %370
  %383 = getelementptr %"struct.alglib_impl::ae_complex", ptr %382, i64 %367
  %384 = getelementptr %"struct.alglib_impl::ae_complex", ptr %383, i64 %.1415516, i32 1
  store double %380, ptr %384, align 8, !tbaa !41
  %385 = add nuw nsw i64 %.2424511, 1
  %exitcond559.not = icmp eq i64 %385, %4
  br i1 %exitcond559.not, label %.loopexit459, label %368, !llvm.loop !47

.loopexit459:                                     ; preds = %368, %352
  br i1 %brmerge547, label %.loopexit, label %.lr.ph515

.lr.ph515:                                        ; preds = %.loopexit459
  %386 = load i64, ptr %14, align 8, !tbaa !18
  %387 = mul nsw i64 %386, %.2520
  br label %388

388:                                              ; preds = %.lr.ph515, %388
  %.3425514 = phi i64 [ 0, %.lr.ph515 ], [ %405, %388 ]
  %389 = load ptr, ptr %181, align 8, !tbaa !24
  %390 = mul nuw nsw i64 %.3425514, %56
  %391 = add nuw i64 %390, %.1415516
  %392 = add i64 %391, %387
  %393 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %389, i64 %392
  %.sroa.022.0.copyload25 = load double, ptr %393, align 8, !tbaa !26
  %.sroa.7.0..sroa_idx26 = getelementptr inbounds i8, ptr %393, i64 8
  %.sroa.7.0.copyload27 = load double, ptr %.sroa.7.0..sroa_idx26, align 8, !tbaa !26
  %394 = fneg double %.sroa.7.0.copyload27
  %395 = fmul double %365, %394
  %396 = tail call double @llvm.fmuladd.f64(double %.sroa.022.0.copyload25, double %364, double %395)
  %397 = load ptr, ptr %182, align 8, !tbaa !24
  %398 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %397, i64 %392
  store double %396, ptr %398, align 8, !tbaa !39
  %399 = fmul double %364, %.sroa.7.0.copyload27
  %400 = tail call double @llvm.fmuladd.f64(double %.sroa.022.0.copyload25, double %365, double %399)
  %401 = load ptr, ptr %182, align 8, !tbaa !24
  %402 = getelementptr %"struct.alglib_impl::ae_complex", ptr %401, i64 %390
  %403 = getelementptr %"struct.alglib_impl::ae_complex", ptr %402, i64 %387
  %404 = getelementptr %"struct.alglib_impl::ae_complex", ptr %403, i64 %.1415516, i32 1
  store double %400, ptr %404, align 8, !tbaa !41
  %405 = add nuw nsw i64 %.3425514, 1
  %exitcond560.not = icmp eq i64 %405, %4
  br i1 %exitcond560.not, label %.loopexit, label %388, !llvm.loop !48

.loopexit:                                        ; preds = %388, %.loopexit459
  %406 = add nuw i64 %.1415516, 1
  %exitcond561.not = icmp eq i64 %406, %indvars.iv
  br i1 %exitcond561.not, label %407, label %352, !llvm.loop !49

407:                                              ; preds = %.loopexit
  %408 = add nuw i64 %.2520, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond562.not = icmp eq i64 %.2520, %174
  br i1 %exitcond562.not, label %.preheader456, label %.preheader460, !llvm.loop !50

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge539
  %.3543 = phi i64 [ 0, %.preheader.lr.ph ], [ %510, %._crit_edge539 ]
  %.0427542 = phi i64 [ 0, %.preheader.lr.ph ], [ %509, %._crit_edge539 ]
  %.0428541 = phi i64 [ 0, %.preheader.lr.ph ], [ %508, %._crit_edge539 ]
  br i1 %.not441519, label %._crit_edge524.thread, label %.lr.ph523.preheader

.lr.ph523.preheader:                              ; preds = %.preheader
  br i1 %344, label %._crit_edge524.unr-lcssa, label %.lr.ph523

._crit_edge524.thread:                            ; preds = %.preheader
  %409 = add nsw i64 %342, %.0428541
  br label %._crit_edge529.thread

.lr.ph523:                                        ; preds = %.lr.ph523.preheader, %.lr.ph523
  %.2416522 = phi i64 [ %425, %.lr.ph523 ], [ 0, %.lr.ph523.preheader ]
  %niter595 = phi i64 [ %niter595.next.1, %.lr.ph523 ], [ 0, %.lr.ph523.preheader ]
  %410 = load ptr, ptr %340, align 8, !tbaa !24
  %411 = getelementptr %"struct.alglib_impl::ae_complex", ptr %410, i64 %.0427542
  %412 = getelementptr %"struct.alglib_impl::ae_complex", ptr %411, i64 %.2416522
  %413 = load double, ptr %412, align 8, !tbaa !39
  %414 = load ptr, ptr %341, align 8, !tbaa !24
  %415 = getelementptr double, ptr %414, i64 %.0428541
  %416 = getelementptr double, ptr %415, i64 %.2416522
  store double %413, ptr %416, align 8, !tbaa !26
  %417 = or disjoint i64 %.2416522, 1
  %418 = load ptr, ptr %340, align 8, !tbaa !24
  %419 = getelementptr %"struct.alglib_impl::ae_complex", ptr %418, i64 %.0427542
  %420 = getelementptr %"struct.alglib_impl::ae_complex", ptr %419, i64 %417
  %421 = load double, ptr %420, align 8, !tbaa !39
  %422 = load ptr, ptr %341, align 8, !tbaa !24
  %423 = getelementptr double, ptr %422, i64 %.0428541
  %424 = getelementptr double, ptr %423, i64 %417
  store double %421, ptr %424, align 8, !tbaa !26
  %425 = add nuw i64 %.2416522, 2
  %niter595.next.1 = add i64 %niter595, 2
  %niter595.ncmp.1 = icmp eq i64 %niter595.next.1, %unroll_iter594
  br i1 %niter595.ncmp.1, label %._crit_edge524.unr-lcssa, label %.lr.ph523, !llvm.loop !51

._crit_edge524.unr-lcssa:                         ; preds = %.lr.ph523, %.lr.ph523.preheader
  %.2416522.unr = phi i64 [ 0, %.lr.ph523.preheader ], [ %425, %.lr.ph523 ]
  br i1 %lcmp.mod593.not.not, label %.lr.ph523.epil, label %._crit_edge524

.lr.ph523.epil:                                   ; preds = %._crit_edge524.unr-lcssa
  %426 = load ptr, ptr %340, align 8, !tbaa !24
  %427 = getelementptr %"struct.alglib_impl::ae_complex", ptr %426, i64 %.0427542
  %428 = getelementptr %"struct.alglib_impl::ae_complex", ptr %427, i64 %.2416522.unr
  %429 = load double, ptr %428, align 8, !tbaa !39
  %430 = load ptr, ptr %341, align 8, !tbaa !24
  %431 = getelementptr double, ptr %430, i64 %.0428541
  %432 = getelementptr double, ptr %431, i64 %.2416522.unr
  store double %429, ptr %432, align 8, !tbaa !26
  br label %._crit_edge524

._crit_edge524:                                   ; preds = %._crit_edge524.unr-lcssa, %.lr.ph523.epil
  %433 = add nsw i64 %342, %.0428541
  br i1 %.not441519, label %._crit_edge529.thread, label %.lr.ph528.preheader

.lr.ph528.preheader:                              ; preds = %._crit_edge524
  br i1 %346, label %._crit_edge529.unr-lcssa, label %.lr.ph528

.lr.ph528:                                        ; preds = %.lr.ph528.preheader, %.lr.ph528
  %.3417526 = phi i64 [ %449, %.lr.ph528 ], [ 0, %.lr.ph528.preheader ]
  %niter600 = phi i64 [ %niter600.next.1, %.lr.ph528 ], [ 0, %.lr.ph528.preheader ]
  %434 = load ptr, ptr %340, align 8, !tbaa !24
  %435 = getelementptr %"struct.alglib_impl::ae_complex", ptr %434, i64 %.0427542
  %436 = getelementptr %"struct.alglib_impl::ae_complex", ptr %435, i64 %.3417526, i32 1
  %437 = load double, ptr %436, align 8, !tbaa !41
  %438 = load ptr, ptr %341, align 8, !tbaa !24
  %439 = getelementptr double, ptr %438, i64 %433
  %440 = getelementptr double, ptr %439, i64 %.3417526
  store double %437, ptr %440, align 8, !tbaa !26
  %441 = or disjoint i64 %.3417526, 1
  %442 = load ptr, ptr %340, align 8, !tbaa !24
  %443 = getelementptr %"struct.alglib_impl::ae_complex", ptr %442, i64 %.0427542
  %444 = getelementptr %"struct.alglib_impl::ae_complex", ptr %443, i64 %441, i32 1
  %445 = load double, ptr %444, align 8, !tbaa !41
  %446 = load ptr, ptr %341, align 8, !tbaa !24
  %447 = getelementptr double, ptr %446, i64 %433
  %448 = getelementptr double, ptr %447, i64 %441
  store double %445, ptr %448, align 8, !tbaa !26
  %449 = add nuw i64 %.3417526, 2
  %niter600.next.1 = add i64 %niter600, 2
  %niter600.ncmp.1 = icmp eq i64 %niter600.next.1, %unroll_iter599
  br i1 %niter600.ncmp.1, label %._crit_edge529.unr-lcssa, label %.lr.ph528, !llvm.loop !52

._crit_edge529.thread:                            ; preds = %._crit_edge524.thread, %._crit_edge524
  %.ph = phi i64 [ %433, %._crit_edge524 ], [ %409, %._crit_edge524.thread ]
  %450 = add nsw i64 %.ph, %342
  br label %._crit_edge534.thread

._crit_edge529.unr-lcssa:                         ; preds = %.lr.ph528, %.lr.ph528.preheader
  %.3417526.unr = phi i64 [ 0, %.lr.ph528.preheader ], [ %449, %.lr.ph528 ]
  br i1 %lcmp.mod598.not.not, label %.lr.ph528.epil, label %._crit_edge529

.lr.ph528.epil:                                   ; preds = %._crit_edge529.unr-lcssa
  %451 = load ptr, ptr %340, align 8, !tbaa !24
  %452 = getelementptr %"struct.alglib_impl::ae_complex", ptr %451, i64 %.0427542
  %453 = getelementptr %"struct.alglib_impl::ae_complex", ptr %452, i64 %.3417526.unr, i32 1
  %454 = load double, ptr %453, align 8, !tbaa !41
  %455 = load ptr, ptr %341, align 8, !tbaa !24
  %456 = getelementptr double, ptr %455, i64 %433
  %457 = getelementptr double, ptr %456, i64 %.3417526.unr
  store double %454, ptr %457, align 8, !tbaa !26
  br label %._crit_edge529

._crit_edge529:                                   ; preds = %._crit_edge529.unr-lcssa, %.lr.ph528.epil
  %458 = add nsw i64 %433, %342
  br i1 %.not441519, label %._crit_edge534.thread, label %.lr.ph533.preheader

.lr.ph533.preheader:                              ; preds = %._crit_edge529
  br i1 %348, label %._crit_edge534.unr-lcssa, label %.lr.ph533

.lr.ph533:                                        ; preds = %.lr.ph533.preheader, %.lr.ph533
  %.4531 = phi i64 [ %474, %.lr.ph533 ], [ 0, %.lr.ph533.preheader ]
  %niter605 = phi i64 [ %niter605.next.1, %.lr.ph533 ], [ 0, %.lr.ph533.preheader ]
  %459 = load ptr, ptr %343, align 8, !tbaa !24
  %460 = getelementptr %"struct.alglib_impl::ae_complex", ptr %459, i64 %.0427542
  %461 = getelementptr %"struct.alglib_impl::ae_complex", ptr %460, i64 %.4531
  %462 = load double, ptr %461, align 8, !tbaa !39
  %463 = load ptr, ptr %341, align 8, !tbaa !24
  %464 = getelementptr double, ptr %463, i64 %458
  %465 = getelementptr double, ptr %464, i64 %.4531
  store double %462, ptr %465, align 8, !tbaa !26
  %466 = or disjoint i64 %.4531, 1
  %467 = load ptr, ptr %343, align 8, !tbaa !24
  %468 = getelementptr %"struct.alglib_impl::ae_complex", ptr %467, i64 %.0427542
  %469 = getelementptr %"struct.alglib_impl::ae_complex", ptr %468, i64 %466
  %470 = load double, ptr %469, align 8, !tbaa !39
  %471 = load ptr, ptr %341, align 8, !tbaa !24
  %472 = getelementptr double, ptr %471, i64 %458
  %473 = getelementptr double, ptr %472, i64 %466
  store double %470, ptr %473, align 8, !tbaa !26
  %474 = add nuw i64 %.4531, 2
  %niter605.next.1 = add i64 %niter605, 2
  %niter605.ncmp.1 = icmp eq i64 %niter605.next.1, %unroll_iter604
  br i1 %niter605.ncmp.1, label %._crit_edge534.unr-lcssa, label %.lr.ph533, !llvm.loop !53

._crit_edge534.thread:                            ; preds = %._crit_edge529.thread, %._crit_edge529
  %.ph574 = phi i64 [ %458, %._crit_edge529 ], [ %450, %._crit_edge529.thread ]
  %475 = add nsw i64 %.ph574, %342
  br label %._crit_edge539

._crit_edge534.unr-lcssa:                         ; preds = %.lr.ph533, %.lr.ph533.preheader
  %.4531.unr = phi i64 [ 0, %.lr.ph533.preheader ], [ %474, %.lr.ph533 ]
  br i1 %lcmp.mod603.not.not, label %.lr.ph533.epil, label %._crit_edge534

.lr.ph533.epil:                                   ; preds = %._crit_edge534.unr-lcssa
  %476 = load ptr, ptr %343, align 8, !tbaa !24
  %477 = getelementptr %"struct.alglib_impl::ae_complex", ptr %476, i64 %.0427542
  %478 = getelementptr %"struct.alglib_impl::ae_complex", ptr %477, i64 %.4531.unr
  %479 = load double, ptr %478, align 8, !tbaa !39
  %480 = load ptr, ptr %341, align 8, !tbaa !24
  %481 = getelementptr double, ptr %480, i64 %458
  %482 = getelementptr double, ptr %481, i64 %.4531.unr
  store double %479, ptr %482, align 8, !tbaa !26
  br label %._crit_edge534

._crit_edge534:                                   ; preds = %._crit_edge534.unr-lcssa, %.lr.ph533.epil
  %483 = add nsw i64 %458, %342
  br i1 %.not441519, label %._crit_edge539, label %.lr.ph538.preheader

.lr.ph538.preheader:                              ; preds = %._crit_edge534
  br i1 %350, label %._crit_edge539.loopexit.unr-lcssa, label %.lr.ph538

.lr.ph538:                                        ; preds = %.lr.ph538.preheader, %.lr.ph538
  %.5536 = phi i64 [ %499, %.lr.ph538 ], [ 0, %.lr.ph538.preheader ]
  %niter610 = phi i64 [ %niter610.next.1, %.lr.ph538 ], [ 0, %.lr.ph538.preheader ]
  %484 = load ptr, ptr %343, align 8, !tbaa !24
  %485 = getelementptr %"struct.alglib_impl::ae_complex", ptr %484, i64 %.0427542
  %486 = getelementptr %"struct.alglib_impl::ae_complex", ptr %485, i64 %.5536, i32 1
  %487 = load double, ptr %486, align 8, !tbaa !41
  %488 = load ptr, ptr %341, align 8, !tbaa !24
  %489 = getelementptr double, ptr %488, i64 %483
  %490 = getelementptr double, ptr %489, i64 %.5536
  store double %487, ptr %490, align 8, !tbaa !26
  %491 = or disjoint i64 %.5536, 1
  %492 = load ptr, ptr %343, align 8, !tbaa !24
  %493 = getelementptr %"struct.alglib_impl::ae_complex", ptr %492, i64 %.0427542
  %494 = getelementptr %"struct.alglib_impl::ae_complex", ptr %493, i64 %491, i32 1
  %495 = load double, ptr %494, align 8, !tbaa !41
  %496 = load ptr, ptr %341, align 8, !tbaa !24
  %497 = getelementptr double, ptr %496, i64 %483
  %498 = getelementptr double, ptr %497, i64 %491
  store double %495, ptr %498, align 8, !tbaa !26
  %499 = add nuw i64 %.5536, 2
  %niter610.next.1 = add i64 %niter610, 2
  %niter610.ncmp.1 = icmp eq i64 %niter610.next.1, %unroll_iter609
  br i1 %niter610.ncmp.1, label %._crit_edge539.loopexit.unr-lcssa, label %.lr.ph538, !llvm.loop !54

._crit_edge539.loopexit.unr-lcssa:                ; preds = %.lr.ph538, %.lr.ph538.preheader
  %.5536.unr = phi i64 [ 0, %.lr.ph538.preheader ], [ %499, %.lr.ph538 ]
  br i1 %lcmp.mod608.not.not, label %.lr.ph538.epil, label %._crit_edge539

.lr.ph538.epil:                                   ; preds = %._crit_edge539.loopexit.unr-lcssa
  %500 = load ptr, ptr %343, align 8, !tbaa !24
  %501 = getelementptr %"struct.alglib_impl::ae_complex", ptr %500, i64 %.0427542
  %502 = getelementptr %"struct.alglib_impl::ae_complex", ptr %501, i64 %.5536.unr, i32 1
  %503 = load double, ptr %502, align 8, !tbaa !41
  %504 = load ptr, ptr %341, align 8, !tbaa !24
  %505 = getelementptr double, ptr %504, i64 %483
  %506 = getelementptr double, ptr %505, i64 %.5536.unr
  store double %503, ptr %506, align 8, !tbaa !26
  br label %._crit_edge539

._crit_edge539:                                   ; preds = %.lr.ph538.epil, %._crit_edge539.loopexit.unr-lcssa, %._crit_edge534.thread, %._crit_edge534
  %507 = phi i64 [ %475, %._crit_edge534.thread ], [ %483, %._crit_edge534 ], [ %483, %._crit_edge539.loopexit.unr-lcssa ], [ %483, %.lr.ph538.epil ]
  %508 = add nsw i64 %507, %342
  %509 = add nsw i64 %342, %.0427542
  %510 = add nuw nsw i64 %.3543, 1
  %exitcond567.not = icmp eq i64 %510, %339
  br i1 %exitcond567.not, label %._crit_edge544, label %.preheader, !llvm.loop !55

._crit_edge544:                                   ; preds = %._crit_edge539, %.preheader456
  %511 = load double, ptr %92, align 8, !tbaa !32
  %512 = tail call double @llvm.fmuladd.f64(double %511, double 1.000000e+06, double 1.000000e+50)
  store double %512, ptr %21, align 8, !tbaa !22
  ret void
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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, !10, i64 40}
!6 = !{!"_ZTSN11alglib_impl15biharmonicpanelE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !11, i64 88, !11, i64 152, !11, i64 216, !11, i64 280, !11, i64 344, !11, i64 408, !7, i64 472, !11, i64 480, !11, i64 544}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !12, i64 16, !13, i64 24, !8, i64 56}
!12 = !{!"bool", !8, i64 0}
!13 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"_ZTSN11alglib_impl19biharmonicevaluatorE", !10, i64 0, !10, i64 8, !11, i64 16, !11, i64 80, !11, i64 144, !11, i64 208, !11, i64 272, !11, i64 336, !11, i64 400, !11, i64 464, !11, i64 528, !11, i64 592, !11, i64 656, !11, i64 720, !11, i64 784, !11, i64 848}
!17 = !{!6, !10, i64 48}
!18 = !{!6, !10, i64 72}
!19 = !{!6, !10, i64 80}
!20 = !{!6, !10, i64 56}
!21 = !{!6, !10, i64 64}
!22 = !{!6, !7, i64 32}
!23 = !{!6, !7, i64 472}
!24 = !{!8, !8, i64 0}
!25 = !{!14, !14, i64 0}
!26 = !{!7, !7, i64 0}
!27 = !{!6, !7, i64 0}
!28 = !{!6, !7, i64 8}
!29 = !{!6, !7, i64 16}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!6, !7, i64 24}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !31}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.unroll.disable"}
!39 = !{!40, !7, i64 0}
!40 = !{!"_ZTSN11alglib_impl10ae_complexE", !7, i64 0, !7, i64 8}
!41 = !{!40, !7, i64 8}
!42 = distinct !{!42, !31}
!43 = distinct !{!43, !31}
!44 = distinct !{!44, !31}
!45 = distinct !{!45, !31}
!46 = distinct !{!46, !31}
!47 = distinct !{!47, !31}
!48 = distinct !{!48, !31}
!49 = distinct !{!49, !31}
!50 = distinct !{!50, !31}
!51 = distinct !{!51, !31}
!52 = distinct !{!52, !31}
!53 = distinct !{!53, !31}
!54 = distinct !{!54, !31}
!55 = distinct !{!55, !31}


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