; LLVM IR from venumb/ZSPACE :: cpp/depends/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_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_smart_ptr" = type { ptr, ptr, i8, i8, ptr, %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::rbfv1model" = type { i64, i64, i64, i64, %"struct.alglib_impl::kdtree", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::kdtree" = type { i64, i64, i64, i64, %"struct.alglib_impl::ae_matrix", %"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::kdtreerequestbuffer", i64 }
%"struct.alglib_impl::kdtreerequestbuffer" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, double, i8, double, 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", double }
%"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 }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::gridcalc3v1buf" = type { %"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::kdtreerequestbuffer", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }

@_ZN11alglib_implL10rbfv1_mxnxE = external hidden global i64, align 8
@_ZN11alglib_implL21rbfv1_minbasecasecostE = external hidden global double, align 8

; 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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

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

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

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

declare noundef i64 @_ZN11alglib_impl16kdtreetsqueryrnnEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_vectorEdbPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, double noundef, i1 noundef zeroext, ptr noundef) #2

declare noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef, ptr noundef) #2

declare noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef, ptr noundef) #2

declare void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #2

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

declare void @_ZN11alglib_impl17ae_smart_ptr_initEPNS_12ae_smart_ptrEPPvPNS_8ae_stateEb(ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) #2

declare void @_ZN11alglib_impl23ae_shared_pool_retrieveEPNS_14ae_shared_poolEPNS_12ae_smart_ptrEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #2

declare void @_ZN11alglib_impl22ae_shared_pool_recycleEPNS_14ae_shared_poolEPNS_12ae_smart_ptrEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl21kdtreetsqueryresultsxEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl24kdtreetsqueryresultstagsEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef %7, i64 noundef %8, i64 noundef %9, ptr noundef %10, i64 noundef %11, i64 noundef %12, ptr noundef %13, i64 noundef %14, i64 noundef %15, ptr noundef %16, i1 noundef zeroext %17, double noundef %18, double noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) #4 {
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i64, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i64, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca ptr, align 8
  %41 = alloca i8, align 1
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"struct.alglib_impl::ae_frame", align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca ptr, align 8
  %58 = alloca %"struct.alglib_impl::ae_smart_ptr", align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca double, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca double, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca i8, align 1
  %78 = alloca i8, align 1
  %79 = alloca i32, align 4
  store ptr %0, ptr %24, align 8, !tbaa !5
  store ptr %1, ptr %25, align 8, !tbaa !5
  store i64 %2, ptr %26, align 8, !tbaa !9
  store ptr %3, ptr %27, align 8, !tbaa !5
  store i64 %4, ptr %28, align 8, !tbaa !9
  store ptr %5, ptr %29, align 8, !tbaa !5
  store i64 %6, ptr %30, align 8, !tbaa !9
  store ptr %7, ptr %31, align 8, !tbaa !5
  store i64 %8, ptr %32, align 8, !tbaa !9
  store i64 %9, ptr %33, align 8, !tbaa !9
  store ptr %10, ptr %34, align 8, !tbaa !5
  store i64 %11, ptr %35, align 8, !tbaa !9
  store i64 %12, ptr %36, align 8, !tbaa !9
  store ptr %13, ptr %37, align 8, !tbaa !5
  store i64 %14, ptr %38, align 8, !tbaa !9
  store i64 %15, ptr %39, align 8, !tbaa !9
  store ptr %16, ptr %40, align 8, !tbaa !5
  %80 = zext i1 %17 to i8
  store i8 %80, ptr %41, align 1, !tbaa !11
  store double %18, ptr %42, align 8, !tbaa !13
  store double %19, ptr %43, align 8, !tbaa !13
  store ptr %20, ptr %44, align 8, !tbaa !5
  store ptr %21, ptr %45, align 8, !tbaa !5
  store ptr %22, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #5
  %81 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %81, ptr noundef %47)
  call void @llvm.memset.p0.i64(ptr align 8 %58, i8 0, i64 64, i1 false)
  %82 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl17ae_smart_ptr_initEPNS_12ae_smart_ptrEPPvPNS_8ae_stateEb(ptr noundef %58, ptr noundef %57, ptr noundef %82, i1 noundef zeroext true)
  %83 = load ptr, ptr %24, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %83, i32 0, i32 1
  %85 = load i64, ptr %84, align 8, !tbaa !15
  store i64 %85, ptr %63, align 8, !tbaa !9
  %86 = load ptr, ptr %24, align 8, !tbaa !5
  %87 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %86, i32 0, i32 0
  %88 = load i64, ptr %87, align 8, !tbaa !22
  store i64 %88, ptr %64, align 8, !tbaa !9
  %89 = load ptr, ptr %24, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %89, i32 0, i32 3
  %91 = load i64, ptr %90, align 8, !tbaa !23
  %92 = add nsw i64 %91, 1
  %93 = load ptr, ptr %24, align 8, !tbaa !5
  %94 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %93, i32 0, i32 0
  %95 = load i64, ptr %94, align 8, !tbaa !22
  %96 = mul nsw i64 %92, %95
  %97 = mul nsw i64 %96, 2
  %98 = sitofp i64 %97 to double
  %99 = load double, ptr %43, align 8, !tbaa !13
  %100 = fadd double %99, 1.000000e+00
  %101 = fmul double %98, %100
  store double %101, ptr %61, align 8, !tbaa !13
  %102 = load double, ptr %61, align 8, !tbaa !13
  %103 = load ptr, ptr %31, align 8, !tbaa !5
  %104 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %103, i32 0, i32 4
  %105 = load ptr, ptr %104, align 8, !tbaa !24
  %106 = load i64, ptr %33, align 8, !tbaa !9
  %107 = getelementptr inbounds i64, ptr %105, i64 %106
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = load ptr, ptr %31, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %109, i32 0, i32 4
  %111 = load ptr, ptr %110, align 8, !tbaa !24
  %112 = load i64, ptr %32, align 8, !tbaa !9
  %113 = getelementptr inbounds i64, ptr %111, i64 %112
  %114 = load i64, ptr %113, align 8, !tbaa !9
  %115 = sub nsw i64 %108, %114
  %116 = sitofp i64 %115 to double
  %117 = fmul double %102, %116
  store double %117, ptr %61, align 8, !tbaa !13
  %118 = load double, ptr %61, align 8, !tbaa !13
  %119 = load ptr, ptr %34, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %119, i32 0, i32 4
  %121 = load ptr, ptr %120, align 8, !tbaa !24
  %122 = load i64, ptr %36, align 8, !tbaa !9
  %123 = getelementptr inbounds i64, ptr %121, i64 %122
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = load ptr, ptr %34, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %125, i32 0, i32 4
  %127 = load ptr, ptr %126, align 8, !tbaa !24
  %128 = load i64, ptr %35, align 8, !tbaa !9
  %129 = getelementptr inbounds i64, ptr %127, i64 %128
  %130 = load i64, ptr %129, align 8, !tbaa !9
  %131 = sub nsw i64 %124, %130
  %132 = sitofp i64 %131 to double
  %133 = fmul double %118, %132
  store double %133, ptr %61, align 8, !tbaa !13
  %134 = load double, ptr %61, align 8, !tbaa !13
  %135 = load ptr, ptr %37, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %135, i32 0, i32 4
  %137 = load ptr, ptr %136, align 8, !tbaa !24
  %138 = load i64, ptr %39, align 8, !tbaa !9
  %139 = getelementptr inbounds i64, ptr %137, i64 %138
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = load ptr, ptr %37, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %141, i32 0, i32 4
  %143 = load ptr, ptr %142, align 8, !tbaa !24
  %144 = load i64, ptr %38, align 8, !tbaa !9
  %145 = getelementptr inbounds i64, ptr %143, i64 %144
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = sub nsw i64 %140, %146
  %148 = sitofp i64 %147 to double
  %149 = fmul double %134, %148
  store double %149, ptr %61, align 8, !tbaa !13
  store i64 0, ptr %62, align 8, !tbaa !9
  %150 = load i64, ptr %62, align 8, !tbaa !9
  %151 = load i64, ptr %33, align 8, !tbaa !9
  %152 = load i64, ptr %32, align 8, !tbaa !9
  %153 = sub nsw i64 %151, %152
  %154 = load ptr, ptr %46, align 8, !tbaa !5
  %155 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %150, i64 noundef %153, ptr noundef %154)
  store i64 %155, ptr %62, align 8, !tbaa !9
  %156 = load i64, ptr %62, align 8, !tbaa !9
  %157 = load i64, ptr %36, align 8, !tbaa !9
  %158 = load i64, ptr %35, align 8, !tbaa !9
  %159 = sub nsw i64 %157, %158
  %160 = load ptr, ptr %46, align 8, !tbaa !5
  %161 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %156, i64 noundef %159, ptr noundef %160)
  store i64 %161, ptr %62, align 8, !tbaa !9
  %162 = load i64, ptr %62, align 8, !tbaa !9
  %163 = load i64, ptr %39, align 8, !tbaa !9
  %164 = load i64, ptr %38, align 8, !tbaa !9
  %165 = sub nsw i64 %163, %164
  %166 = load ptr, ptr %46, align 8, !tbaa !5
  %167 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %162, i64 noundef %165, ptr noundef %166)
  store i64 %167, ptr %62, align 8, !tbaa !9
  %168 = load double, ptr %61, align 8, !tbaa !13
  %169 = load double, ptr @_ZN11alglib_implL21rbfv1_minbasecasecostE, align 8, !tbaa !13
  %170 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %168, double noundef %169)
  br i1 %170, label %171, label %361

171:                                              ; preds = %23
  %172 = load i64, ptr %62, align 8, !tbaa !9
  %173 = icmp sge i64 %172, 2
  br i1 %173, label %174, label %361

174:                                              ; preds = %171
  %175 = load i64, ptr %33, align 8, !tbaa !9
  %176 = load i64, ptr %32, align 8, !tbaa !9
  %177 = sub nsw i64 %175, %176
  %178 = load i64, ptr %62, align 8, !tbaa !9
  %179 = icmp eq i64 %177, %178
  br i1 %179, label %180, label %236

180:                                              ; preds = %174
  %181 = load ptr, ptr %24, align 8, !tbaa !5
  %182 = load ptr, ptr %25, align 8, !tbaa !5
  %183 = load i64, ptr %26, align 8, !tbaa !9
  %184 = load ptr, ptr %27, align 8, !tbaa !5
  %185 = load i64, ptr %28, align 8, !tbaa !9
  %186 = load ptr, ptr %29, align 8, !tbaa !5
  %187 = load i64, ptr %30, align 8, !tbaa !9
  %188 = load ptr, ptr %31, align 8, !tbaa !5
  %189 = load i64, ptr %32, align 8, !tbaa !9
  %190 = load i64, ptr %32, align 8, !tbaa !9
  %191 = load i64, ptr %62, align 8, !tbaa !9
  %192 = sdiv i64 %191, 2
  %193 = add nsw i64 %190, %192
  %194 = load ptr, ptr %34, align 8, !tbaa !5
  %195 = load i64, ptr %35, align 8, !tbaa !9
  %196 = load i64, ptr %36, align 8, !tbaa !9
  %197 = load ptr, ptr %37, align 8, !tbaa !5
  %198 = load i64, ptr %38, align 8, !tbaa !9
  %199 = load i64, ptr %39, align 8, !tbaa !9
  %200 = load ptr, ptr %40, align 8, !tbaa !5
  %201 = load i8, ptr %41, align 1, !tbaa !11, !range !25, !noundef !26
  %202 = trunc i8 %201 to i1
  %203 = load double, ptr %42, align 8, !tbaa !13
  %204 = load double, ptr %43, align 8, !tbaa !13
  %205 = load ptr, ptr %44, align 8, !tbaa !5
  %206 = load ptr, ptr %45, align 8, !tbaa !5
  %207 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef %181, ptr noundef %182, i64 noundef %183, ptr noundef %184, i64 noundef %185, ptr noundef %186, i64 noundef %187, ptr noundef %188, i64 noundef %189, i64 noundef %193, ptr noundef %194, i64 noundef %195, i64 noundef %196, ptr noundef %197, i64 noundef %198, i64 noundef %199, ptr noundef %200, i1 noundef zeroext %202, double noundef %203, double noundef %204, ptr noundef %205, ptr noundef %206, ptr noundef %207)
  %208 = load ptr, ptr %24, align 8, !tbaa !5
  %209 = load ptr, ptr %25, align 8, !tbaa !5
  %210 = load i64, ptr %26, align 8, !tbaa !9
  %211 = load ptr, ptr %27, align 8, !tbaa !5
  %212 = load i64, ptr %28, align 8, !tbaa !9
  %213 = load ptr, ptr %29, align 8, !tbaa !5
  %214 = load i64, ptr %30, align 8, !tbaa !9
  %215 = load ptr, ptr %31, align 8, !tbaa !5
  %216 = load i64, ptr %32, align 8, !tbaa !9
  %217 = load i64, ptr %62, align 8, !tbaa !9
  %218 = sdiv i64 %217, 2
  %219 = add nsw i64 %216, %218
  %220 = load i64, ptr %33, align 8, !tbaa !9
  %221 = load ptr, ptr %34, align 8, !tbaa !5
  %222 = load i64, ptr %35, align 8, !tbaa !9
  %223 = load i64, ptr %36, align 8, !tbaa !9
  %224 = load ptr, ptr %37, align 8, !tbaa !5
  %225 = load i64, ptr %38, align 8, !tbaa !9
  %226 = load i64, ptr %39, align 8, !tbaa !9
  %227 = load ptr, ptr %40, align 8, !tbaa !5
  %228 = load i8, ptr %41, align 1, !tbaa !11, !range !25, !noundef !26
  %229 = trunc i8 %228 to i1
  %230 = load double, ptr %42, align 8, !tbaa !13
  %231 = load double, ptr %43, align 8, !tbaa !13
  %232 = load ptr, ptr %44, align 8, !tbaa !5
  %233 = load ptr, ptr %45, align 8, !tbaa !5
  %234 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef %208, ptr noundef %209, i64 noundef %210, ptr noundef %211, i64 noundef %212, ptr noundef %213, i64 noundef %214, ptr noundef %215, i64 noundef %219, i64 noundef %220, ptr noundef %221, i64 noundef %222, i64 noundef %223, ptr noundef %224, i64 noundef %225, i64 noundef %226, ptr noundef %227, i1 noundef zeroext %229, double noundef %230, double noundef %231, ptr noundef %232, ptr noundef %233, ptr noundef %234)
  %235 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %235)
  store i32 1, ptr %79, align 4
  br label %1976

236:                                              ; preds = %174
  %237 = load i64, ptr %36, align 8, !tbaa !9
  %238 = load i64, ptr %35, align 8, !tbaa !9
  %239 = sub nsw i64 %237, %238
  %240 = load i64, ptr %62, align 8, !tbaa !9
  %241 = icmp eq i64 %239, %240
  br i1 %241, label %242, label %298

242:                                              ; preds = %236
  %243 = load ptr, ptr %24, align 8, !tbaa !5
  %244 = load ptr, ptr %25, align 8, !tbaa !5
  %245 = load i64, ptr %26, align 8, !tbaa !9
  %246 = load ptr, ptr %27, align 8, !tbaa !5
  %247 = load i64, ptr %28, align 8, !tbaa !9
  %248 = load ptr, ptr %29, align 8, !tbaa !5
  %249 = load i64, ptr %30, align 8, !tbaa !9
  %250 = load ptr, ptr %31, align 8, !tbaa !5
  %251 = load i64, ptr %32, align 8, !tbaa !9
  %252 = load i64, ptr %33, align 8, !tbaa !9
  %253 = load ptr, ptr %34, align 8, !tbaa !5
  %254 = load i64, ptr %35, align 8, !tbaa !9
  %255 = load i64, ptr %35, align 8, !tbaa !9
  %256 = load i64, ptr %62, align 8, !tbaa !9
  %257 = sdiv i64 %256, 2
  %258 = add nsw i64 %255, %257
  %259 = load ptr, ptr %37, align 8, !tbaa !5
  %260 = load i64, ptr %38, align 8, !tbaa !9
  %261 = load i64, ptr %39, align 8, !tbaa !9
  %262 = load ptr, ptr %40, align 8, !tbaa !5
  %263 = load i8, ptr %41, align 1, !tbaa !11, !range !25, !noundef !26
  %264 = trunc i8 %263 to i1
  %265 = load double, ptr %42, align 8, !tbaa !13
  %266 = load double, ptr %43, align 8, !tbaa !13
  %267 = load ptr, ptr %44, align 8, !tbaa !5
  %268 = load ptr, ptr %45, align 8, !tbaa !5
  %269 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef %243, ptr noundef %244, i64 noundef %245, ptr noundef %246, i64 noundef %247, ptr noundef %248, i64 noundef %249, ptr noundef %250, i64 noundef %251, i64 noundef %252, ptr noundef %253, i64 noundef %254, i64 noundef %258, ptr noundef %259, i64 noundef %260, i64 noundef %261, ptr noundef %262, i1 noundef zeroext %264, double noundef %265, double noundef %266, ptr noundef %267, ptr noundef %268, ptr noundef %269)
  %270 = load ptr, ptr %24, align 8, !tbaa !5
  %271 = load ptr, ptr %25, align 8, !tbaa !5
  %272 = load i64, ptr %26, align 8, !tbaa !9
  %273 = load ptr, ptr %27, align 8, !tbaa !5
  %274 = load i64, ptr %28, align 8, !tbaa !9
  %275 = load ptr, ptr %29, align 8, !tbaa !5
  %276 = load i64, ptr %30, align 8, !tbaa !9
  %277 = load ptr, ptr %31, align 8, !tbaa !5
  %278 = load i64, ptr %32, align 8, !tbaa !9
  %279 = load i64, ptr %33, align 8, !tbaa !9
  %280 = load ptr, ptr %34, align 8, !tbaa !5
  %281 = load i64, ptr %35, align 8, !tbaa !9
  %282 = load i64, ptr %62, align 8, !tbaa !9
  %283 = sdiv i64 %282, 2
  %284 = add nsw i64 %281, %283
  %285 = load i64, ptr %36, align 8, !tbaa !9
  %286 = load ptr, ptr %37, align 8, !tbaa !5
  %287 = load i64, ptr %38, align 8, !tbaa !9
  %288 = load i64, ptr %39, align 8, !tbaa !9
  %289 = load ptr, ptr %40, align 8, !tbaa !5
  %290 = load i8, ptr %41, align 1, !tbaa !11, !range !25, !noundef !26
  %291 = trunc i8 %290 to i1
  %292 = load double, ptr %42, align 8, !tbaa !13
  %293 = load double, ptr %43, align 8, !tbaa !13
  %294 = load ptr, ptr %44, align 8, !tbaa !5
  %295 = load ptr, ptr %45, align 8, !tbaa !5
  %296 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef %270, ptr noundef %271, i64 noundef %272, ptr noundef %273, i64 noundef %274, ptr noundef %275, i64 noundef %276, ptr noundef %277, i64 noundef %278, i64 noundef %279, ptr noundef %280, i64 noundef %284, i64 noundef %285, ptr noundef %286, i64 noundef %287, i64 noundef %288, ptr noundef %289, i1 noundef zeroext %291, double noundef %292, double noundef %293, ptr noundef %294, ptr noundef %295, ptr noundef %296)
  %297 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %297)
  store i32 1, ptr %79, align 4
  br label %1976

298:                                              ; preds = %236
  %299 = load i64, ptr %39, align 8, !tbaa !9
  %300 = load i64, ptr %38, align 8, !tbaa !9
  %301 = sub nsw i64 %299, %300
  %302 = load i64, ptr %62, align 8, !tbaa !9
  %303 = icmp eq i64 %301, %302
  br i1 %303, label %304, label %360

304:                                              ; preds = %298
  %305 = load ptr, ptr %24, align 8, !tbaa !5
  %306 = load ptr, ptr %25, align 8, !tbaa !5
  %307 = load i64, ptr %26, align 8, !tbaa !9
  %308 = load ptr, ptr %27, align 8, !tbaa !5
  %309 = load i64, ptr %28, align 8, !tbaa !9
  %310 = load ptr, ptr %29, align 8, !tbaa !5
  %311 = load i64, ptr %30, align 8, !tbaa !9
  %312 = load ptr, ptr %31, align 8, !tbaa !5
  %313 = load i64, ptr %32, align 8, !tbaa !9
  %314 = load i64, ptr %33, align 8, !tbaa !9
  %315 = load ptr, ptr %34, align 8, !tbaa !5
  %316 = load i64, ptr %35, align 8, !tbaa !9
  %317 = load i64, ptr %36, align 8, !tbaa !9
  %318 = load ptr, ptr %37, align 8, !tbaa !5
  %319 = load i64, ptr %38, align 8, !tbaa !9
  %320 = load i64, ptr %38, align 8, !tbaa !9
  %321 = load i64, ptr %62, align 8, !tbaa !9
  %322 = sdiv i64 %321, 2
  %323 = add nsw i64 %320, %322
  %324 = load ptr, ptr %40, align 8, !tbaa !5
  %325 = load i8, ptr %41, align 1, !tbaa !11, !range !25, !noundef !26
  %326 = trunc i8 %325 to i1
  %327 = load double, ptr %42, align 8, !tbaa !13
  %328 = load double, ptr %43, align 8, !tbaa !13
  %329 = load ptr, ptr %44, align 8, !tbaa !5
  %330 = load ptr, ptr %45, align 8, !tbaa !5
  %331 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef %305, ptr noundef %306, i64 noundef %307, ptr noundef %308, i64 noundef %309, ptr noundef %310, i64 noundef %311, ptr noundef %312, i64 noundef %313, i64 noundef %314, ptr noundef %315, i64 noundef %316, i64 noundef %317, ptr noundef %318, i64 noundef %319, i64 noundef %323, ptr noundef %324, i1 noundef zeroext %326, double noundef %327, double noundef %328, ptr noundef %329, ptr noundef %330, ptr noundef %331)
  %332 = load ptr, ptr %24, align 8, !tbaa !5
  %333 = load ptr, ptr %25, align 8, !tbaa !5
  %334 = load i64, ptr %26, align 8, !tbaa !9
  %335 = load ptr, ptr %27, align 8, !tbaa !5
  %336 = load i64, ptr %28, align 8, !tbaa !9
  %337 = load ptr, ptr %29, align 8, !tbaa !5
  %338 = load i64, ptr %30, align 8, !tbaa !9
  %339 = load ptr, ptr %31, align 8, !tbaa !5
  %340 = load i64, ptr %32, align 8, !tbaa !9
  %341 = load i64, ptr %33, align 8, !tbaa !9
  %342 = load ptr, ptr %34, align 8, !tbaa !5
  %343 = load i64, ptr %35, align 8, !tbaa !9
  %344 = load i64, ptr %36, align 8, !tbaa !9
  %345 = load ptr, ptr %37, align 8, !tbaa !5
  %346 = load i64, ptr %38, align 8, !tbaa !9
  %347 = load i64, ptr %62, align 8, !tbaa !9
  %348 = sdiv i64 %347, 2
  %349 = add nsw i64 %346, %348
  %350 = load i64, ptr %39, align 8, !tbaa !9
  %351 = load ptr, ptr %40, align 8, !tbaa !5
  %352 = load i8, ptr %41, align 1, !tbaa !11, !range !25, !noundef !26
  %353 = trunc i8 %352 to i1
  %354 = load double, ptr %42, align 8, !tbaa !13
  %355 = load double, ptr %43, align 8, !tbaa !13
  %356 = load ptr, ptr %44, align 8, !tbaa !5
  %357 = load ptr, ptr %45, align 8, !tbaa !5
  %358 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef %332, ptr noundef %333, i64 noundef %334, ptr noundef %335, i64 noundef %336, ptr noundef %337, i64 noundef %338, ptr noundef %339, i64 noundef %340, i64 noundef %341, ptr noundef %342, i64 noundef %343, i64 noundef %344, ptr noundef %345, i64 noundef %349, i64 noundef %350, ptr noundef %351, i1 noundef zeroext %353, double noundef %354, double noundef %355, ptr noundef %356, ptr noundef %357, ptr noundef %358)
  %359 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %359)
  store i32 1, ptr %79, align 4
  br label %1976

360:                                              ; preds = %298
  br label %361

361:                                              ; preds = %360, %171, %23
  %362 = load ptr, ptr %44, align 8, !tbaa !5
  %363 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ae_shared_pool_retrieveEPNS_14ae_shared_poolEPNS_12ae_smart_ptrEPNS_8ae_stateE(ptr noundef %362, ptr noundef %58, ptr noundef %363)
  %364 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %364, ptr %55, align 8, !tbaa !9
  br label %365

365:                                              ; preds = %1969, %361
  %366 = load i64, ptr %55, align 8, !tbaa !9
  %367 = load i64, ptr %39, align 8, !tbaa !9
  %368 = sub nsw i64 %367, 1
  %369 = icmp sle i64 %366, %368
  br i1 %369, label %370, label %1972

370:                                              ; preds = %365
  %371 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %371, ptr %54, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %1965, %370
  %373 = load i64, ptr %54, align 8, !tbaa !9
  %374 = load i64, ptr %36, align 8, !tbaa !9
  %375 = sub nsw i64 %374, 1
  %376 = icmp sle i64 %373, %375
  br i1 %376, label %377, label %1968

377:                                              ; preds = %372
  %378 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %378, ptr %53, align 8, !tbaa !9
  br label %379

379:                                              ; preds = %1961, %377
  %380 = load i64, ptr %53, align 8, !tbaa !9
  %381 = load i64, ptr %33, align 8, !tbaa !9
  %382 = sub nsw i64 %381, 1
  %383 = icmp sle i64 %380, %382
  br i1 %383, label %384, label %1964

384:                                              ; preds = %379
  store i8 1, ptr %78, align 1, !tbaa !11
  store i8 1, ptr %77, align 1, !tbaa !11
  %385 = load ptr, ptr %34, align 8, !tbaa !5
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %385, i32 0, i32 4
  %387 = load ptr, ptr %386, align 8, !tbaa !24
  %388 = load i64, ptr %54, align 8, !tbaa !9
  %389 = add nsw i64 %388, 1
  %390 = getelementptr inbounds i64, ptr %387, i64 %389
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = load ptr, ptr %34, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %392, i32 0, i32 4
  %394 = load ptr, ptr %393, align 8, !tbaa !24
  %395 = load i64, ptr %54, align 8, !tbaa !9
  %396 = getelementptr inbounds i64, ptr %394, i64 %395
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = sub nsw i64 %391, %397
  store i64 %398, ptr %59, align 8, !tbaa !9
  %399 = load ptr, ptr %37, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %399, i32 0, i32 4
  %401 = load ptr, ptr %400, align 8, !tbaa !24
  %402 = load i64, ptr %55, align 8, !tbaa !9
  %403 = add nsw i64 %402, 1
  %404 = getelementptr inbounds i64, ptr %401, i64 %403
  %405 = load i64, ptr %404, align 8, !tbaa !9
  %406 = load ptr, ptr %37, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %406, i32 0, i32 4
  %408 = load ptr, ptr %407, align 8, !tbaa !24
  %409 = load i64, ptr %55, align 8, !tbaa !9
  %410 = getelementptr inbounds i64, ptr %408, i64 %409
  %411 = load i64, ptr %410, align 8, !tbaa !9
  %412 = sub nsw i64 %405, %411
  store i64 %412, ptr %60, align 8, !tbaa !9
  %413 = load i8, ptr %41, align 1, !tbaa !11, !range !25, !noundef !26
  %414 = trunc i8 %413 to i1
  br i1 %414, label %415, label %666

415:                                              ; preds = %384
  %416 = load ptr, ptr %57, align 8, !tbaa !5
  %417 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %416, i32 0, i32 3
  %418 = load i64, ptr %26, align 8, !tbaa !9
  %419 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %417, i64 noundef %418, ptr noundef %419)
  %420 = load ptr, ptr %57, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %420, i32 0, i32 4
  %422 = load i64, ptr %28, align 8, !tbaa !9
  %423 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %421, i64 noundef %422, ptr noundef %423)
  %424 = load ptr, ptr %57, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %424, i32 0, i32 5
  %426 = load i64, ptr %30, align 8, !tbaa !9
  %427 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %425, i64 noundef %426, ptr noundef %427)
  %428 = load ptr, ptr %57, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %428, i32 0, i32 6
  %430 = load i64, ptr %59, align 8, !tbaa !9
  %431 = load i64, ptr %60, align 8, !tbaa !9
  %432 = mul nsw i64 %430, %431
  %433 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %429, i64 noundef %432, ptr noundef %433)
  %434 = load ptr, ptr %31, align 8, !tbaa !5
  %435 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %434, i32 0, i32 4
  %436 = load ptr, ptr %435, align 8, !tbaa !24
  %437 = load i64, ptr %53, align 8, !tbaa !9
  %438 = getelementptr inbounds i64, ptr %436, i64 %437
  %439 = load i64, ptr %438, align 8, !tbaa !9
  store i64 %439, ptr %48, align 8, !tbaa !9
  br label %440

440:                                              ; preds = %458, %415
  %441 = load i64, ptr %48, align 8, !tbaa !9
  %442 = load ptr, ptr %31, align 8, !tbaa !5
  %443 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %442, i32 0, i32 4
  %444 = load ptr, ptr %443, align 8, !tbaa !24
  %445 = load i64, ptr %53, align 8, !tbaa !9
  %446 = add nsw i64 %445, 1
  %447 = getelementptr inbounds i64, ptr %444, i64 %446
  %448 = load i64, ptr %447, align 8, !tbaa !9
  %449 = sub nsw i64 %448, 1
  %450 = icmp sle i64 %441, %449
  br i1 %450, label %451, label %461

451:                                              ; preds = %440
  %452 = load ptr, ptr %57, align 8, !tbaa !5
  %453 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %452, i32 0, i32 3
  %454 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %453, i32 0, i32 4
  %455 = load ptr, ptr %454, align 8, !tbaa !24
  %456 = load i64, ptr %48, align 8, !tbaa !9
  %457 = getelementptr inbounds i8, ptr %455, i64 %456
  store i8 0, ptr %457, align 1, !tbaa !11
  br label %458

458:                                              ; preds = %451
  %459 = load i64, ptr %48, align 8, !tbaa !9
  %460 = add nsw i64 %459, 1
  store i64 %460, ptr %48, align 8, !tbaa !9
  br label %440, !llvm.loop !27

461:                                              ; preds = %440
  %462 = load ptr, ptr %34, align 8, !tbaa !5
  %463 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %462, i32 0, i32 4
  %464 = load ptr, ptr %463, align 8, !tbaa !24
  %465 = load i64, ptr %54, align 8, !tbaa !9
  %466 = getelementptr inbounds i64, ptr %464, i64 %465
  %467 = load i64, ptr %466, align 8, !tbaa !9
  store i64 %467, ptr %49, align 8, !tbaa !9
  br label %468

468:                                              ; preds = %486, %461
  %469 = load i64, ptr %49, align 8, !tbaa !9
  %470 = load ptr, ptr %34, align 8, !tbaa !5
  %471 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %470, i32 0, i32 4
  %472 = load ptr, ptr %471, align 8, !tbaa !24
  %473 = load i64, ptr %54, align 8, !tbaa !9
  %474 = add nsw i64 %473, 1
  %475 = getelementptr inbounds i64, ptr %472, i64 %474
  %476 = load i64, ptr %475, align 8, !tbaa !9
  %477 = sub nsw i64 %476, 1
  %478 = icmp sle i64 %469, %477
  br i1 %478, label %479, label %489

479:                                              ; preds = %468
  %480 = load ptr, ptr %57, align 8, !tbaa !5
  %481 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %480, i32 0, i32 4
  %482 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %481, i32 0, i32 4
  %483 = load ptr, ptr %482, align 8, !tbaa !24
  %484 = load i64, ptr %49, align 8, !tbaa !9
  %485 = getelementptr inbounds i8, ptr %483, i64 %484
  store i8 0, ptr %485, align 1, !tbaa !11
  br label %486

486:                                              ; preds = %479
  %487 = load i64, ptr %49, align 8, !tbaa !9
  %488 = add nsw i64 %487, 1
  store i64 %488, ptr %49, align 8, !tbaa !9
  br label %468, !llvm.loop !29

489:                                              ; preds = %468
  %490 = load ptr, ptr %37, align 8, !tbaa !5
  %491 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %490, i32 0, i32 4
  %492 = load ptr, ptr %491, align 8, !tbaa !24
  %493 = load i64, ptr %55, align 8, !tbaa !9
  %494 = getelementptr inbounds i64, ptr %492, i64 %493
  %495 = load i64, ptr %494, align 8, !tbaa !9
  store i64 %495, ptr %50, align 8, !tbaa !9
  br label %496

496:                                              ; preds = %514, %489
  %497 = load i64, ptr %50, align 8, !tbaa !9
  %498 = load ptr, ptr %37, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %498, i32 0, i32 4
  %500 = load ptr, ptr %499, align 8, !tbaa !24
  %501 = load i64, ptr %55, align 8, !tbaa !9
  %502 = add nsw i64 %501, 1
  %503 = getelementptr inbounds i64, ptr %500, i64 %502
  %504 = load i64, ptr %503, align 8, !tbaa !9
  %505 = sub nsw i64 %504, 1
  %506 = icmp sle i64 %497, %505
  br i1 %506, label %507, label %517

507:                                              ; preds = %496
  %508 = load ptr, ptr %57, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %508, i32 0, i32 5
  %510 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %509, i32 0, i32 4
  %511 = load ptr, ptr %510, align 8, !tbaa !24
  %512 = load i64, ptr %50, align 8, !tbaa !9
  %513 = getelementptr inbounds i8, ptr %511, i64 %512
  store i8 0, ptr %513, align 1, !tbaa !11
  br label %514

514:                                              ; preds = %507
  %515 = load i64, ptr %50, align 8, !tbaa !9
  %516 = add nsw i64 %515, 1
  store i64 %516, ptr %50, align 8, !tbaa !9
  br label %496, !llvm.loop !30

517:                                              ; preds = %496
  store i64 0, ptr %48, align 8, !tbaa !9
  br label %518

518:                                              ; preds = %532, %517
  %519 = load i64, ptr %48, align 8, !tbaa !9
  %520 = load i64, ptr %59, align 8, !tbaa !9
  %521 = load i64, ptr %60, align 8, !tbaa !9
  %522 = mul nsw i64 %520, %521
  %523 = sub nsw i64 %522, 1
  %524 = icmp sle i64 %519, %523
  br i1 %524, label %525, label %535

525:                                              ; preds = %518
  %526 = load ptr, ptr %57, align 8, !tbaa !5
  %527 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %526, i32 0, i32 6
  %528 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %527, i32 0, i32 4
  %529 = load ptr, ptr %528, align 8, !tbaa !24
  %530 = load i64, ptr %48, align 8, !tbaa !9
  %531 = getelementptr inbounds i8, ptr %529, i64 %530
  store i8 0, ptr %531, align 1, !tbaa !11
  br label %532

532:                                              ; preds = %525
  %533 = load i64, ptr %48, align 8, !tbaa !9
  %534 = add nsw i64 %533, 1
  store i64 %534, ptr %48, align 8, !tbaa !9
  br label %518, !llvm.loop !31

535:                                              ; preds = %518
  store i8 0, ptr %78, align 1, !tbaa !11
  store i8 1, ptr %77, align 1, !tbaa !11
  %536 = load ptr, ptr %37, align 8, !tbaa !5
  %537 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %536, i32 0, i32 4
  %538 = load ptr, ptr %537, align 8, !tbaa !24
  %539 = load i64, ptr %55, align 8, !tbaa !9
  %540 = getelementptr inbounds i64, ptr %538, i64 %539
  %541 = load i64, ptr %540, align 8, !tbaa !9
  store i64 %541, ptr %50, align 8, !tbaa !9
  br label %542

542:                                              ; preds = %662, %535
  %543 = load i64, ptr %50, align 8, !tbaa !9
  %544 = load ptr, ptr %37, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %544, i32 0, i32 4
  %546 = load ptr, ptr %545, align 8, !tbaa !24
  %547 = load i64, ptr %55, align 8, !tbaa !9
  %548 = add nsw i64 %547, 1
  %549 = getelementptr inbounds i64, ptr %546, i64 %548
  %550 = load i64, ptr %549, align 8, !tbaa !9
  %551 = sub nsw i64 %550, 1
  %552 = icmp sle i64 %543, %551
  br i1 %552, label %553, label %665

553:                                              ; preds = %542
  %554 = load ptr, ptr %34, align 8, !tbaa !5
  %555 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %554, i32 0, i32 4
  %556 = load ptr, ptr %555, align 8, !tbaa !24
  %557 = load i64, ptr %54, align 8, !tbaa !9
  %558 = getelementptr inbounds i64, ptr %556, i64 %557
  %559 = load i64, ptr %558, align 8, !tbaa !9
  store i64 %559, ptr %49, align 8, !tbaa !9
  br label %560

560:                                              ; preds = %658, %553
  %561 = load i64, ptr %49, align 8, !tbaa !9
  %562 = load ptr, ptr %34, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %562, i32 0, i32 4
  %564 = load ptr, ptr %563, align 8, !tbaa !24
  %565 = load i64, ptr %54, align 8, !tbaa !9
  %566 = add nsw i64 %565, 1
  %567 = getelementptr inbounds i64, ptr %564, i64 %566
  %568 = load i64, ptr %567, align 8, !tbaa !9
  %569 = sub nsw i64 %568, 1
  %570 = icmp sle i64 %561, %569
  br i1 %570, label %571, label %661

571:                                              ; preds = %560
  %572 = load i64, ptr %49, align 8, !tbaa !9
  %573 = load ptr, ptr %34, align 8, !tbaa !5
  %574 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %573, i32 0, i32 4
  %575 = load ptr, ptr %574, align 8, !tbaa !24
  %576 = load i64, ptr %54, align 8, !tbaa !9
  %577 = getelementptr inbounds i64, ptr %575, i64 %576
  %578 = load i64, ptr %577, align 8, !tbaa !9
  %579 = sub nsw i64 %572, %578
  %580 = load i64, ptr %59, align 8, !tbaa !9
  %581 = load i64, ptr %50, align 8, !tbaa !9
  %582 = load ptr, ptr %37, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %582, i32 0, i32 4
  %584 = load ptr, ptr %583, align 8, !tbaa !24
  %585 = load i64, ptr %55, align 8, !tbaa !9
  %586 = getelementptr inbounds i64, ptr %584, i64 %585
  %587 = load i64, ptr %586, align 8, !tbaa !9
  %588 = sub nsw i64 %581, %587
  %589 = mul nsw i64 %580, %588
  %590 = add nsw i64 %579, %589
  store i64 %590, ptr %71, align 8, !tbaa !9
  %591 = load i64, ptr %49, align 8, !tbaa !9
  %592 = load i64, ptr %26, align 8, !tbaa !9
  %593 = mul nsw i64 %591, %592
  %594 = load i64, ptr %50, align 8, !tbaa !9
  %595 = load i64, ptr %26, align 8, !tbaa !9
  %596 = mul nsw i64 %594, %595
  %597 = load i64, ptr %28, align 8, !tbaa !9
  %598 = mul nsw i64 %596, %597
  %599 = add nsw i64 %593, %598
  store i64 %599, ptr %72, align 8, !tbaa !9
  %600 = load ptr, ptr %31, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %600, i32 0, i32 4
  %602 = load ptr, ptr %601, align 8, !tbaa !24
  %603 = load i64, ptr %53, align 8, !tbaa !9
  %604 = getelementptr inbounds i64, ptr %602, i64 %603
  %605 = load i64, ptr %604, align 8, !tbaa !9
  store i64 %605, ptr %48, align 8, !tbaa !9
  br label %606

606:                                              ; preds = %654, %571
  %607 = load i64, ptr %48, align 8, !tbaa !9
  %608 = load ptr, ptr %31, align 8, !tbaa !5
  %609 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %608, i32 0, i32 4
  %610 = load ptr, ptr %609, align 8, !tbaa !24
  %611 = load i64, ptr %53, align 8, !tbaa !9
  %612 = add nsw i64 %611, 1
  %613 = getelementptr inbounds i64, ptr %610, i64 %612
  %614 = load i64, ptr %613, align 8, !tbaa !9
  %615 = sub nsw i64 %614, 1
  %616 = icmp sle i64 %607, %615
  br i1 %616, label %617, label %657

617:                                              ; preds = %606
  %618 = load ptr, ptr %40, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %618, i32 0, i32 4
  %620 = load ptr, ptr %619, align 8, !tbaa !24
  %621 = load i64, ptr %72, align 8, !tbaa !9
  %622 = load i64, ptr %48, align 8, !tbaa !9
  %623 = add nsw i64 %621, %622
  %624 = getelementptr inbounds i8, ptr %620, i64 %623
  %625 = load i8, ptr %624, align 1, !tbaa !11, !range !25, !noundef !26
  %626 = trunc i8 %625 to i1
  br i1 %626, label %627, label %652

627:                                              ; preds = %617
  %628 = load ptr, ptr %57, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %628, i32 0, i32 3
  %630 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %629, i32 0, i32 4
  %631 = load ptr, ptr %630, align 8, !tbaa !24
  %632 = load i64, ptr %48, align 8, !tbaa !9
  %633 = getelementptr inbounds i8, ptr %631, i64 %632
  store i8 1, ptr %633, align 1, !tbaa !11
  %634 = load ptr, ptr %57, align 8, !tbaa !5
  %635 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %634, i32 0, i32 4
  %636 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %635, i32 0, i32 4
  %637 = load ptr, ptr %636, align 8, !tbaa !24
  %638 = load i64, ptr %49, align 8, !tbaa !9
  %639 = getelementptr inbounds i8, ptr %637, i64 %638
  store i8 1, ptr %639, align 1, !tbaa !11
  %640 = load ptr, ptr %57, align 8, !tbaa !5
  %641 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %640, i32 0, i32 5
  %642 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %641, i32 0, i32 4
  %643 = load ptr, ptr %642, align 8, !tbaa !24
  %644 = load i64, ptr %50, align 8, !tbaa !9
  %645 = getelementptr inbounds i8, ptr %643, i64 %644
  store i8 1, ptr %645, align 1, !tbaa !11
  %646 = load ptr, ptr %57, align 8, !tbaa !5
  %647 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %646, i32 0, i32 6
  %648 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %647, i32 0, i32 4
  %649 = load ptr, ptr %648, align 8, !tbaa !24
  %650 = load i64, ptr %71, align 8, !tbaa !9
  %651 = getelementptr inbounds i8, ptr %649, i64 %650
  store i8 1, ptr %651, align 1, !tbaa !11
  store i8 1, ptr %78, align 1, !tbaa !11
  br label %653

652:                                              ; preds = %617
  store i8 0, ptr %77, align 1, !tbaa !11
  br label %653

653:                                              ; preds = %652, %627
  br label %654

654:                                              ; preds = %653
  %655 = load i64, ptr %48, align 8, !tbaa !9
  %656 = add nsw i64 %655, 1
  store i64 %656, ptr %48, align 8, !tbaa !9
  br label %606, !llvm.loop !32

657:                                              ; preds = %606
  br label %658

658:                                              ; preds = %657
  %659 = load i64, ptr %49, align 8, !tbaa !9
  %660 = add nsw i64 %659, 1
  store i64 %660, ptr %49, align 8, !tbaa !9
  br label %560, !llvm.loop !33

661:                                              ; preds = %560
  br label %662

662:                                              ; preds = %661
  %663 = load i64, ptr %50, align 8, !tbaa !9
  %664 = add nsw i64 %663, 1
  store i64 %664, ptr %50, align 8, !tbaa !9
  br label %542, !llvm.loop !34

665:                                              ; preds = %542
  br label %666

666:                                              ; preds = %665, %384
  %667 = load i8, ptr %78, align 1, !tbaa !11, !range !25, !noundef !26
  %668 = trunc i8 %667 to i1
  br i1 %668, label %670, label %669

669:                                              ; preds = %666
  br label %1961

670:                                              ; preds = %666
  %671 = load ptr, ptr %37, align 8, !tbaa !5
  %672 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %671, i32 0, i32 4
  %673 = load ptr, ptr %672, align 8, !tbaa !24
  %674 = load i64, ptr %55, align 8, !tbaa !9
  %675 = getelementptr inbounds i64, ptr %673, i64 %674
  %676 = load i64, ptr %675, align 8, !tbaa !9
  store i64 %676, ptr %50, align 8, !tbaa !9
  br label %677

677:                                              ; preds = %868, %670
  %678 = load i64, ptr %50, align 8, !tbaa !9
  %679 = load ptr, ptr %37, align 8, !tbaa !5
  %680 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %679, i32 0, i32 4
  %681 = load ptr, ptr %680, align 8, !tbaa !24
  %682 = load i64, ptr %55, align 8, !tbaa !9
  %683 = add nsw i64 %682, 1
  %684 = getelementptr inbounds i64, ptr %681, i64 %683
  %685 = load i64, ptr %684, align 8, !tbaa !9
  %686 = sub nsw i64 %685, 1
  %687 = icmp sle i64 %678, %686
  br i1 %687, label %688, label %871

688:                                              ; preds = %677
  %689 = load ptr, ptr %34, align 8, !tbaa !5
  %690 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %689, i32 0, i32 4
  %691 = load ptr, ptr %690, align 8, !tbaa !24
  %692 = load i64, ptr %54, align 8, !tbaa !9
  %693 = getelementptr inbounds i64, ptr %691, i64 %692
  %694 = load i64, ptr %693, align 8, !tbaa !9
  store i64 %694, ptr %49, align 8, !tbaa !9
  br label %695

695:                                              ; preds = %864, %688
  %696 = load i64, ptr %49, align 8, !tbaa !9
  %697 = load ptr, ptr %34, align 8, !tbaa !5
  %698 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %697, i32 0, i32 4
  %699 = load ptr, ptr %698, align 8, !tbaa !24
  %700 = load i64, ptr %54, align 8, !tbaa !9
  %701 = add nsw i64 %700, 1
  %702 = getelementptr inbounds i64, ptr %699, i64 %701
  %703 = load i64, ptr %702, align 8, !tbaa !9
  %704 = sub nsw i64 %703, 1
  %705 = icmp sle i64 %696, %704
  br i1 %705, label %706, label %867

706:                                              ; preds = %695
  %707 = load i8, ptr %77, align 1, !tbaa !11, !range !25, !noundef !26
  %708 = trunc i8 %707 to i1
  br i1 %708, label %737, label %709

709:                                              ; preds = %706
  %710 = load ptr, ptr %57, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %710, i32 0, i32 6
  %712 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %711, i32 0, i32 4
  %713 = load ptr, ptr %712, align 8, !tbaa !24
  %714 = load i64, ptr %49, align 8, !tbaa !9
  %715 = load ptr, ptr %34, align 8, !tbaa !5
  %716 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %715, i32 0, i32 4
  %717 = load ptr, ptr %716, align 8, !tbaa !24
  %718 = load i64, ptr %54, align 8, !tbaa !9
  %719 = getelementptr inbounds i64, ptr %717, i64 %718
  %720 = load i64, ptr %719, align 8, !tbaa !9
  %721 = sub nsw i64 %714, %720
  %722 = load i64, ptr %59, align 8, !tbaa !9
  %723 = load i64, ptr %50, align 8, !tbaa !9
  %724 = load ptr, ptr %37, align 8, !tbaa !5
  %725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %724, i32 0, i32 4
  %726 = load ptr, ptr %725, align 8, !tbaa !24
  %727 = load i64, ptr %55, align 8, !tbaa !9
  %728 = getelementptr inbounds i64, ptr %726, i64 %727
  %729 = load i64, ptr %728, align 8, !tbaa !9
  %730 = sub nsw i64 %723, %729
  %731 = mul nsw i64 %722, %730
  %732 = add nsw i64 %721, %731
  %733 = getelementptr inbounds i8, ptr %713, i64 %732
  %734 = load i8, ptr %733, align 1, !tbaa !11, !range !25, !noundef !26
  %735 = trunc i8 %734 to i1
  br i1 %735, label %737, label %736

736:                                              ; preds = %709
  br label %864

737:                                              ; preds = %709, %706
  %738 = load ptr, ptr %31, align 8, !tbaa !5
  %739 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %738, i32 0, i32 4
  %740 = load ptr, ptr %739, align 8, !tbaa !24
  %741 = load i64, ptr %53, align 8, !tbaa !9
  %742 = getelementptr inbounds i64, ptr %740, i64 %741
  %743 = load i64, ptr %742, align 8, !tbaa !9
  store i64 %743, ptr %48, align 8, !tbaa !9
  br label %744

744:                                              ; preds = %860, %737
  %745 = load i64, ptr %48, align 8, !tbaa !9
  %746 = load ptr, ptr %31, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %746, i32 0, i32 4
  %748 = load ptr, ptr %747, align 8, !tbaa !24
  %749 = load i64, ptr %53, align 8, !tbaa !9
  %750 = add nsw i64 %749, 1
  %751 = getelementptr inbounds i64, ptr %748, i64 %750
  %752 = load i64, ptr %751, align 8, !tbaa !9
  %753 = sub nsw i64 %752, 1
  %754 = icmp sle i64 %745, %753
  br i1 %754, label %755, label %863

755:                                              ; preds = %744
  %756 = load ptr, ptr %25, align 8, !tbaa !5
  %757 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %756, i32 0, i32 4
  %758 = load ptr, ptr %757, align 8, !tbaa !24
  %759 = load i64, ptr %48, align 8, !tbaa !9
  %760 = getelementptr inbounds double, ptr %758, i64 %759
  %761 = load double, ptr %760, align 8, !tbaa !13
  %762 = load ptr, ptr %57, align 8, !tbaa !5
  %763 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %762, i32 0, i32 0
  %764 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %763, i32 0, i32 4
  %765 = load ptr, ptr %764, align 8, !tbaa !24
  %766 = getelementptr inbounds double, ptr %765, i64 0
  store double %761, ptr %766, align 8, !tbaa !13
  %767 = load ptr, ptr %27, align 8, !tbaa !5
  %768 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %767, i32 0, i32 4
  %769 = load ptr, ptr %768, align 8, !tbaa !24
  %770 = load i64, ptr %49, align 8, !tbaa !9
  %771 = getelementptr inbounds double, ptr %769, i64 %770
  %772 = load double, ptr %771, align 8, !tbaa !13
  %773 = load ptr, ptr %57, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %773, i32 0, i32 0
  %775 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %774, i32 0, i32 4
  %776 = load ptr, ptr %775, align 8, !tbaa !24
  %777 = getelementptr inbounds double, ptr %776, i64 1
  store double %772, ptr %777, align 8, !tbaa !13
  %778 = load ptr, ptr %29, align 8, !tbaa !5
  %779 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %778, i32 0, i32 4
  %780 = load ptr, ptr %779, align 8, !tbaa !24
  %781 = load i64, ptr %50, align 8, !tbaa !9
  %782 = getelementptr inbounds double, ptr %780, i64 %781
  %783 = load double, ptr %782, align 8, !tbaa !13
  %784 = load ptr, ptr %57, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %784, i32 0, i32 0
  %786 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %785, i32 0, i32 4
  %787 = load ptr, ptr %786, align 8, !tbaa !24
  %788 = getelementptr inbounds double, ptr %787, i64 2
  store double %783, ptr %788, align 8, !tbaa !13
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %789

789:                                              ; preds = %856, %755
  %790 = load i64, ptr %52, align 8, !tbaa !9
  %791 = load ptr, ptr %24, align 8, !tbaa !5
  %792 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %791, i32 0, i32 0
  %793 = load i64, ptr %792, align 8, !tbaa !22
  %794 = sub nsw i64 %793, 1
  %795 = icmp sle i64 %790, %794
  br i1 %795, label %796, label %859

796:                                              ; preds = %789
  %797 = load ptr, ptr %24, align 8, !tbaa !5
  %798 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %797, i32 0, i32 8
  %799 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %798, i32 0, i32 6
  %800 = load ptr, ptr %799, align 8, !tbaa !24
  %801 = load i64, ptr %52, align 8, !tbaa !9
  %802 = getelementptr inbounds ptr, ptr %800, i64 %801
  %803 = load ptr, ptr %802, align 8, !tbaa !5
  %804 = load i64, ptr @_ZN11alglib_implL10rbfv1_mxnxE, align 8, !tbaa !9
  %805 = getelementptr inbounds double, ptr %803, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !13
  store double %806, ptr %65, align 8, !tbaa !13
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %807

807:                                              ; preds = %832, %796
  %808 = load i64, ptr %51, align 8, !tbaa !9
  %809 = load i64, ptr %63, align 8, !tbaa !9
  %810 = sub nsw i64 %809, 1
  %811 = icmp sle i64 %808, %810
  br i1 %811, label %812, label %835

812:                                              ; preds = %807
  %813 = load double, ptr %65, align 8, !tbaa !13
  %814 = load ptr, ptr %24, align 8, !tbaa !5
  %815 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %814, i32 0, i32 8
  %816 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %815, i32 0, i32 6
  %817 = load ptr, ptr %816, align 8, !tbaa !24
  %818 = load i64, ptr %52, align 8, !tbaa !9
  %819 = getelementptr inbounds ptr, ptr %817, i64 %818
  %820 = load ptr, ptr %819, align 8, !tbaa !5
  %821 = load i64, ptr %51, align 8, !tbaa !9
  %822 = getelementptr inbounds double, ptr %820, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !13
  %824 = load ptr, ptr %57, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %824, i32 0, i32 0
  %826 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %825, i32 0, i32 4
  %827 = load ptr, ptr %826, align 8, !tbaa !24
  %828 = load i64, ptr %51, align 8, !tbaa !9
  %829 = getelementptr inbounds double, ptr %827, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !13
  %831 = call double @llvm.fmuladd.f64(double %823, double %830, double %813)
  store double %831, ptr %65, align 8, !tbaa !13
  br label %832

832:                                              ; preds = %812
  %833 = load i64, ptr %51, align 8, !tbaa !9
  %834 = add nsw i64 %833, 1
  store i64 %834, ptr %51, align 8, !tbaa !9
  br label %807, !llvm.loop !35

835:                                              ; preds = %807
  %836 = load double, ptr %65, align 8, !tbaa !13
  %837 = load ptr, ptr %45, align 8, !tbaa !5
  %838 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %837, i32 0, i32 4
  %839 = load ptr, ptr %838, align 8, !tbaa !24
  %840 = load i64, ptr %52, align 8, !tbaa !9
  %841 = load i64, ptr %64, align 8, !tbaa !9
  %842 = load i64, ptr %48, align 8, !tbaa !9
  %843 = load i64, ptr %49, align 8, !tbaa !9
  %844 = load i64, ptr %26, align 8, !tbaa !9
  %845 = mul nsw i64 %843, %844
  %846 = add nsw i64 %842, %845
  %847 = load i64, ptr %50, align 8, !tbaa !9
  %848 = load i64, ptr %26, align 8, !tbaa !9
  %849 = mul nsw i64 %847, %848
  %850 = load i64, ptr %28, align 8, !tbaa !9
  %851 = mul nsw i64 %849, %850
  %852 = add nsw i64 %846, %851
  %853 = mul nsw i64 %841, %852
  %854 = add nsw i64 %840, %853
  %855 = getelementptr inbounds double, ptr %839, i64 %854
  store double %836, ptr %855, align 8, !tbaa !13
  br label %856

856:                                              ; preds = %835
  %857 = load i64, ptr %52, align 8, !tbaa !9
  %858 = add nsw i64 %857, 1
  store i64 %858, ptr %52, align 8, !tbaa !9
  br label %789, !llvm.loop !36

859:                                              ; preds = %789
  br label %860

860:                                              ; preds = %859
  %861 = load i64, ptr %48, align 8, !tbaa !9
  %862 = add nsw i64 %861, 1
  store i64 %862, ptr %48, align 8, !tbaa !9
  br label %744, !llvm.loop !37

863:                                              ; preds = %744
  br label %864

864:                                              ; preds = %863, %736
  %865 = load i64, ptr %49, align 8, !tbaa !9
  %866 = add nsw i64 %865, 1
  store i64 %866, ptr %49, align 8, !tbaa !9
  br label %695, !llvm.loop !38

867:                                              ; preds = %695
  br label %868

868:                                              ; preds = %867
  %869 = load i64, ptr %50, align 8, !tbaa !9
  %870 = add nsw i64 %869, 1
  store i64 %870, ptr %50, align 8, !tbaa !9
  br label %677, !llvm.loop !39

871:                                              ; preds = %677
  %872 = load ptr, ptr %25, align 8, !tbaa !5
  %873 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %872, i32 0, i32 4
  %874 = load ptr, ptr %873, align 8, !tbaa !24
  %875 = load ptr, ptr %31, align 8, !tbaa !5
  %876 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %875, i32 0, i32 4
  %877 = load ptr, ptr %876, align 8, !tbaa !24
  %878 = load i64, ptr %53, align 8, !tbaa !9
  %879 = getelementptr inbounds i64, ptr %877, i64 %878
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = getelementptr inbounds double, ptr %874, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !13
  %883 = load ptr, ptr %25, align 8, !tbaa !5
  %884 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %883, i32 0, i32 4
  %885 = load ptr, ptr %884, align 8, !tbaa !24
  %886 = load ptr, ptr %31, align 8, !tbaa !5
  %887 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %886, i32 0, i32 4
  %888 = load ptr, ptr %887, align 8, !tbaa !24
  %889 = load i64, ptr %53, align 8, !tbaa !9
  %890 = add nsw i64 %889, 1
  %891 = getelementptr inbounds i64, ptr %888, i64 %890
  %892 = load i64, ptr %891, align 8, !tbaa !9
  %893 = sub nsw i64 %892, 1
  %894 = getelementptr inbounds double, ptr %885, i64 %893
  %895 = load double, ptr %894, align 8, !tbaa !13
  %896 = fadd double %882, %895
  %897 = fmul double 5.000000e-01, %896
  %898 = load ptr, ptr %57, align 8, !tbaa !5
  %899 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %898, i32 0, i32 0
  %900 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %899, i32 0, i32 4
  %901 = load ptr, ptr %900, align 8, !tbaa !24
  %902 = getelementptr inbounds double, ptr %901, i64 0
  store double %897, ptr %902, align 8, !tbaa !13
  %903 = load ptr, ptr %27, align 8, !tbaa !5
  %904 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %903, i32 0, i32 4
  %905 = load ptr, ptr %904, align 8, !tbaa !24
  %906 = load ptr, ptr %34, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %906, i32 0, i32 4
  %908 = load ptr, ptr %907, align 8, !tbaa !24
  %909 = load i64, ptr %54, align 8, !tbaa !9
  %910 = getelementptr inbounds i64, ptr %908, i64 %909
  %911 = load i64, ptr %910, align 8, !tbaa !9
  %912 = getelementptr inbounds double, ptr %905, i64 %911
  %913 = load double, ptr %912, align 8, !tbaa !13
  %914 = load ptr, ptr %27, align 8, !tbaa !5
  %915 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %914, i32 0, i32 4
  %916 = load ptr, ptr %915, align 8, !tbaa !24
  %917 = load ptr, ptr %34, align 8, !tbaa !5
  %918 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %917, i32 0, i32 4
  %919 = load ptr, ptr %918, align 8, !tbaa !24
  %920 = load i64, ptr %54, align 8, !tbaa !9
  %921 = add nsw i64 %920, 1
  %922 = getelementptr inbounds i64, ptr %919, i64 %921
  %923 = load i64, ptr %922, align 8, !tbaa !9
  %924 = sub nsw i64 %923, 1
  %925 = getelementptr inbounds double, ptr %916, i64 %924
  %926 = load double, ptr %925, align 8, !tbaa !13
  %927 = fadd double %913, %926
  %928 = fmul double 5.000000e-01, %927
  %929 = load ptr, ptr %57, align 8, !tbaa !5
  %930 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %929, i32 0, i32 0
  %931 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %930, i32 0, i32 4
  %932 = load ptr, ptr %931, align 8, !tbaa !24
  %933 = getelementptr inbounds double, ptr %932, i64 1
  store double %928, ptr %933, align 8, !tbaa !13
  %934 = load ptr, ptr %29, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %934, i32 0, i32 4
  %936 = load ptr, ptr %935, align 8, !tbaa !24
  %937 = load ptr, ptr %37, align 8, !tbaa !5
  %938 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %937, i32 0, i32 4
  %939 = load ptr, ptr %938, align 8, !tbaa !24
  %940 = load i64, ptr %55, align 8, !tbaa !9
  %941 = getelementptr inbounds i64, ptr %939, i64 %940
  %942 = load i64, ptr %941, align 8, !tbaa !9
  %943 = getelementptr inbounds double, ptr %936, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !13
  %945 = load ptr, ptr %29, align 8, !tbaa !5
  %946 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %945, i32 0, i32 4
  %947 = load ptr, ptr %946, align 8, !tbaa !24
  %948 = load ptr, ptr %37, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %948, i32 0, i32 4
  %950 = load ptr, ptr %949, align 8, !tbaa !24
  %951 = load i64, ptr %55, align 8, !tbaa !9
  %952 = add nsw i64 %951, 1
  %953 = getelementptr inbounds i64, ptr %950, i64 %952
  %954 = load i64, ptr %953, align 8, !tbaa !9
  %955 = sub nsw i64 %954, 1
  %956 = getelementptr inbounds double, ptr %947, i64 %955
  %957 = load double, ptr %956, align 8, !tbaa !13
  %958 = fadd double %944, %957
  %959 = fmul double 5.000000e-01, %958
  %960 = load ptr, ptr %57, align 8, !tbaa !5
  %961 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %960, i32 0, i32 0
  %962 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %961, i32 0, i32 4
  %963 = load ptr, ptr %962, align 8, !tbaa !24
  %964 = getelementptr inbounds double, ptr %963, i64 2
  store double %959, ptr %964, align 8, !tbaa !13
  %965 = load ptr, ptr %24, align 8, !tbaa !5
  %966 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %965, i32 0, i32 4
  %967 = load ptr, ptr %57, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %967, i32 0, i32 10
  %969 = load ptr, ptr %57, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %969, i32 0, i32 0
  %971 = load double, ptr %42, align 8, !tbaa !13
  %972 = load ptr, ptr %46, align 8, !tbaa !5
  %973 = call noundef i64 @_ZN11alglib_impl16kdtreetsqueryrnnEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_vectorEdbPNS_8ae_stateE(ptr noundef %966, ptr noundef %968, ptr noundef %970, double noundef %971, i1 noundef zeroext true, ptr noundef %972)
  store i64 %973, ptr %66, align 8, !tbaa !9
  %974 = load ptr, ptr %24, align 8, !tbaa !5
  %975 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %974, i32 0, i32 4
  %976 = load ptr, ptr %57, align 8, !tbaa !5
  %977 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %976, i32 0, i32 10
  %978 = load ptr, ptr %57, align 8, !tbaa !5
  %979 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %978, i32 0, i32 11
  %980 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl21kdtreetsqueryresultsxEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef %975, ptr noundef %977, ptr noundef %979, ptr noundef %980)
  %981 = load ptr, ptr %24, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %981, i32 0, i32 4
  %983 = load ptr, ptr %57, align 8, !tbaa !5
  %984 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %983, i32 0, i32 10
  %985 = load ptr, ptr %57, align 8, !tbaa !5
  %986 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %985, i32 0, i32 12
  %987 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl24kdtreetsqueryresultstagsEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %982, ptr noundef %984, ptr noundef %986, ptr noundef %987)
  store i64 0, ptr %56, align 8, !tbaa !9
  br label %988

988:                                              ; preds = %1957, %871
  %989 = load i64, ptr %56, align 8, !tbaa !9
  %990 = load i64, ptr %66, align 8, !tbaa !9
  %991 = sub nsw i64 %990, 1
  %992 = icmp sle i64 %989, %991
  br i1 %992, label %993, label %1960

993:                                              ; preds = %988
  %994 = load ptr, ptr %57, align 8, !tbaa !5
  %995 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %994, i32 0, i32 11
  %996 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %995, i32 0, i32 6
  %997 = load ptr, ptr %996, align 8, !tbaa !24
  %998 = load i64, ptr %56, align 8, !tbaa !9
  %999 = getelementptr inbounds ptr, ptr %997, i64 %998
  %1000 = load ptr, ptr %999, align 8, !tbaa !5
  %1001 = getelementptr inbounds double, ptr %1000, i64 0
  %1002 = load double, ptr %1001, align 8, !tbaa !13
  %1003 = load ptr, ptr %57, align 8, !tbaa !5
  %1004 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1003, i32 0, i32 1
  %1005 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1004, i32 0, i32 4
  %1006 = load ptr, ptr %1005, align 8, !tbaa !24
  %1007 = getelementptr inbounds double, ptr %1006, i64 0
  store double %1002, ptr %1007, align 8, !tbaa !13
  %1008 = load ptr, ptr %57, align 8, !tbaa !5
  %1009 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1008, i32 0, i32 11
  %1010 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1009, i32 0, i32 6
  %1011 = load ptr, ptr %1010, align 8, !tbaa !24
  %1012 = load i64, ptr %56, align 8, !tbaa !9
  %1013 = getelementptr inbounds ptr, ptr %1011, i64 %1012
  %1014 = load ptr, ptr %1013, align 8, !tbaa !5
  %1015 = getelementptr inbounds double, ptr %1014, i64 1
  %1016 = load double, ptr %1015, align 8, !tbaa !13
  %1017 = load ptr, ptr %57, align 8, !tbaa !5
  %1018 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1017, i32 0, i32 1
  %1019 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1018, i32 0, i32 4
  %1020 = load ptr, ptr %1019, align 8, !tbaa !24
  %1021 = getelementptr inbounds double, ptr %1020, i64 1
  store double %1016, ptr %1021, align 8, !tbaa !13
  %1022 = load ptr, ptr %57, align 8, !tbaa !5
  %1023 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1022, i32 0, i32 11
  %1024 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1023, i32 0, i32 6
  %1025 = load ptr, ptr %1024, align 8, !tbaa !24
  %1026 = load i64, ptr %56, align 8, !tbaa !9
  %1027 = getelementptr inbounds ptr, ptr %1025, i64 %1026
  %1028 = load ptr, ptr %1027, align 8, !tbaa !5
  %1029 = getelementptr inbounds double, ptr %1028, i64 2
  %1030 = load double, ptr %1029, align 8, !tbaa !13
  %1031 = load ptr, ptr %57, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1031, i32 0, i32 1
  %1033 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1032, i32 0, i32 4
  %1034 = load ptr, ptr %1033, align 8, !tbaa !24
  %1035 = getelementptr inbounds double, ptr %1034, i64 2
  store double %1030, ptr %1035, align 8, !tbaa !13
  %1036 = load ptr, ptr %57, align 8, !tbaa !5
  %1037 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1036, i32 0, i32 12
  %1038 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1037, i32 0, i32 4
  %1039 = load ptr, ptr %1038, align 8, !tbaa !24
  %1040 = load i64, ptr %56, align 8, !tbaa !9
  %1041 = getelementptr inbounds i64, ptr %1039, i64 %1040
  %1042 = load i64, ptr %1041, align 8, !tbaa !9
  store i64 %1042, ptr %67, align 8, !tbaa !9
  %1043 = load ptr, ptr %24, align 8, !tbaa !5
  %1044 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1043, i32 0, i32 6
  %1045 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1044, i32 0, i32 6
  %1046 = load ptr, ptr %1045, align 8, !tbaa !24
  %1047 = load i64, ptr %67, align 8, !tbaa !9
  %1048 = getelementptr inbounds ptr, ptr %1046, i64 %1047
  %1049 = load ptr, ptr %1048, align 8, !tbaa !5
  %1050 = getelementptr inbounds double, ptr %1049, i64 0
  %1051 = load double, ptr %1050, align 8, !tbaa !13
  store double %1051, ptr %68, align 8, !tbaa !13
  %1052 = load double, ptr %68, align 8, !tbaa !13
  %1053 = load double, ptr %68, align 8, !tbaa !13
  %1054 = fmul double %1052, %1053
  store double %1054, ptr %69, align 8, !tbaa !13
  %1055 = load ptr, ptr %31, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1055, i32 0, i32 4
  %1057 = load ptr, ptr %1056, align 8, !tbaa !24
  %1058 = load i64, ptr %53, align 8, !tbaa !9
  %1059 = getelementptr inbounds i64, ptr %1057, i64 %1058
  %1060 = load i64, ptr %1059, align 8, !tbaa !9
  store i64 %1060, ptr %48, align 8, !tbaa !9
  br label %1061

1061:                                             ; preds = %1119, %993
  %1062 = load i64, ptr %48, align 8, !tbaa !9
  %1063 = load ptr, ptr %31, align 8, !tbaa !5
  %1064 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1063, i32 0, i32 4
  %1065 = load ptr, ptr %1064, align 8, !tbaa !24
  %1066 = load i64, ptr %53, align 8, !tbaa !9
  %1067 = add nsw i64 %1066, 1
  %1068 = getelementptr inbounds i64, ptr %1065, i64 %1067
  %1069 = load i64, ptr %1068, align 8, !tbaa !9
  %1070 = sub nsw i64 %1069, 1
  %1071 = icmp sle i64 %1062, %1070
  br i1 %1071, label %1072, label %1122

1072:                                             ; preds = %1061
  %1073 = load i8, ptr %77, align 1, !tbaa !11, !range !25, !noundef !26
  %1074 = trunc i8 %1073 to i1
  br i1 %1074, label %1084, label %1075

1075:                                             ; preds = %1072
  %1076 = load ptr, ptr %57, align 8, !tbaa !5
  %1077 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1076, i32 0, i32 3
  %1078 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1077, i32 0, i32 4
  %1079 = load ptr, ptr %1078, align 8, !tbaa !24
  %1080 = load i64, ptr %48, align 8, !tbaa !9
  %1081 = getelementptr inbounds i8, ptr %1079, i64 %1080
  %1082 = load i8, ptr %1081, align 1, !tbaa !11, !range !25, !noundef !26
  %1083 = trunc i8 %1082 to i1
  br i1 %1083, label %1084, label %1111

1084:                                             ; preds = %1075, %1072
  %1085 = load ptr, ptr %25, align 8, !tbaa !5
  %1086 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1085, i32 0, i32 4
  %1087 = load ptr, ptr %1086, align 8, !tbaa !24
  %1088 = load i64, ptr %48, align 8, !tbaa !9
  %1089 = getelementptr inbounds double, ptr %1087, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !13
  %1091 = load ptr, ptr %57, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1091, i32 0, i32 1
  %1093 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1092, i32 0, i32 4
  %1094 = load ptr, ptr %1093, align 8, !tbaa !24
  %1095 = getelementptr inbounds double, ptr %1094, i64 0
  %1096 = load double, ptr %1095, align 8, !tbaa !13
  %1097 = fsub double %1090, %1096
  %1098 = load ptr, ptr %46, align 8, !tbaa !5
  %1099 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1097, ptr noundef %1098)
  %1100 = fneg double %1099
  %1101 = load double, ptr %69, align 8, !tbaa !13
  %1102 = fdiv double %1100, %1101
  %1103 = load ptr, ptr %46, align 8, !tbaa !5
  %1104 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1102, ptr noundef %1103)
  %1105 = load ptr, ptr %57, align 8, !tbaa !5
  %1106 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1105, i32 0, i32 7
  %1107 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1106, i32 0, i32 4
  %1108 = load ptr, ptr %1107, align 8, !tbaa !24
  %1109 = load i64, ptr %48, align 8, !tbaa !9
  %1110 = getelementptr inbounds double, ptr %1108, i64 %1109
  store double %1104, ptr %1110, align 8, !tbaa !13
  br label %1118

1111:                                             ; preds = %1075
  %1112 = load ptr, ptr %57, align 8, !tbaa !5
  %1113 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1112, i32 0, i32 7
  %1114 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1113, i32 0, i32 4
  %1115 = load ptr, ptr %1114, align 8, !tbaa !24
  %1116 = load i64, ptr %48, align 8, !tbaa !9
  %1117 = getelementptr inbounds double, ptr %1115, i64 %1116
  store double 0.000000e+00, ptr %1117, align 8, !tbaa !13
  br label %1118

1118:                                             ; preds = %1111, %1084
  br label %1119

1119:                                             ; preds = %1118
  %1120 = load i64, ptr %48, align 8, !tbaa !9
  %1121 = add nsw i64 %1120, 1
  store i64 %1121, ptr %48, align 8, !tbaa !9
  br label %1061, !llvm.loop !40

1122:                                             ; preds = %1061
  %1123 = load ptr, ptr %34, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1123, i32 0, i32 4
  %1125 = load ptr, ptr %1124, align 8, !tbaa !24
  %1126 = load i64, ptr %54, align 8, !tbaa !9
  %1127 = getelementptr inbounds i64, ptr %1125, i64 %1126
  %1128 = load i64, ptr %1127, align 8, !tbaa !9
  store i64 %1128, ptr %49, align 8, !tbaa !9
  br label %1129

1129:                                             ; preds = %1187, %1122
  %1130 = load i64, ptr %49, align 8, !tbaa !9
  %1131 = load ptr, ptr %34, align 8, !tbaa !5
  %1132 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1131, i32 0, i32 4
  %1133 = load ptr, ptr %1132, align 8, !tbaa !24
  %1134 = load i64, ptr %54, align 8, !tbaa !9
  %1135 = add nsw i64 %1134, 1
  %1136 = getelementptr inbounds i64, ptr %1133, i64 %1135
  %1137 = load i64, ptr %1136, align 8, !tbaa !9
  %1138 = sub nsw i64 %1137, 1
  %1139 = icmp sle i64 %1130, %1138
  br i1 %1139, label %1140, label %1190

1140:                                             ; preds = %1129
  %1141 = load i8, ptr %77, align 1, !tbaa !11, !range !25, !noundef !26
  %1142 = trunc i8 %1141 to i1
  br i1 %1142, label %1152, label %1143

1143:                                             ; preds = %1140
  %1144 = load ptr, ptr %57, align 8, !tbaa !5
  %1145 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1144, i32 0, i32 4
  %1146 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1145, i32 0, i32 4
  %1147 = load ptr, ptr %1146, align 8, !tbaa !24
  %1148 = load i64, ptr %49, align 8, !tbaa !9
  %1149 = getelementptr inbounds i8, ptr %1147, i64 %1148
  %1150 = load i8, ptr %1149, align 1, !tbaa !11, !range !25, !noundef !26
  %1151 = trunc i8 %1150 to i1
  br i1 %1151, label %1152, label %1179

1152:                                             ; preds = %1143, %1140
  %1153 = load ptr, ptr %27, align 8, !tbaa !5
  %1154 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1153, i32 0, i32 4
  %1155 = load ptr, ptr %1154, align 8, !tbaa !24
  %1156 = load i64, ptr %49, align 8, !tbaa !9
  %1157 = getelementptr inbounds double, ptr %1155, i64 %1156
  %1158 = load double, ptr %1157, align 8, !tbaa !13
  %1159 = load ptr, ptr %57, align 8, !tbaa !5
  %1160 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1159, i32 0, i32 1
  %1161 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1160, i32 0, i32 4
  %1162 = load ptr, ptr %1161, align 8, !tbaa !24
  %1163 = getelementptr inbounds double, ptr %1162, i64 1
  %1164 = load double, ptr %1163, align 8, !tbaa !13
  %1165 = fsub double %1158, %1164
  %1166 = load ptr, ptr %46, align 8, !tbaa !5
  %1167 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1165, ptr noundef %1166)
  %1168 = fneg double %1167
  %1169 = load double, ptr %69, align 8, !tbaa !13
  %1170 = fdiv double %1168, %1169
  %1171 = load ptr, ptr %46, align 8, !tbaa !5
  %1172 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1170, ptr noundef %1171)
  %1173 = load ptr, ptr %57, align 8, !tbaa !5
  %1174 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1173, i32 0, i32 8
  %1175 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1174, i32 0, i32 4
  %1176 = load ptr, ptr %1175, align 8, !tbaa !24
  %1177 = load i64, ptr %49, align 8, !tbaa !9
  %1178 = getelementptr inbounds double, ptr %1176, i64 %1177
  store double %1172, ptr %1178, align 8, !tbaa !13
  br label %1186

1179:                                             ; preds = %1143
  %1180 = load ptr, ptr %57, align 8, !tbaa !5
  %1181 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1180, i32 0, i32 8
  %1182 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1181, i32 0, i32 4
  %1183 = load ptr, ptr %1182, align 8, !tbaa !24
  %1184 = load i64, ptr %49, align 8, !tbaa !9
  %1185 = getelementptr inbounds double, ptr %1183, i64 %1184
  store double 0.000000e+00, ptr %1185, align 8, !tbaa !13
  br label %1186

1186:                                             ; preds = %1179, %1152
  br label %1187

1187:                                             ; preds = %1186
  %1188 = load i64, ptr %49, align 8, !tbaa !9
  %1189 = add nsw i64 %1188, 1
  store i64 %1189, ptr %49, align 8, !tbaa !9
  br label %1129, !llvm.loop !41

1190:                                             ; preds = %1129
  %1191 = load ptr, ptr %37, align 8, !tbaa !5
  %1192 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1191, i32 0, i32 4
  %1193 = load ptr, ptr %1192, align 8, !tbaa !24
  %1194 = load i64, ptr %55, align 8, !tbaa !9
  %1195 = getelementptr inbounds i64, ptr %1193, i64 %1194
  %1196 = load i64, ptr %1195, align 8, !tbaa !9
  store i64 %1196, ptr %50, align 8, !tbaa !9
  br label %1197

1197:                                             ; preds = %1255, %1190
  %1198 = load i64, ptr %50, align 8, !tbaa !9
  %1199 = load ptr, ptr %37, align 8, !tbaa !5
  %1200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1199, i32 0, i32 4
  %1201 = load ptr, ptr %1200, align 8, !tbaa !24
  %1202 = load i64, ptr %55, align 8, !tbaa !9
  %1203 = add nsw i64 %1202, 1
  %1204 = getelementptr inbounds i64, ptr %1201, i64 %1203
  %1205 = load i64, ptr %1204, align 8, !tbaa !9
  %1206 = sub nsw i64 %1205, 1
  %1207 = icmp sle i64 %1198, %1206
  br i1 %1207, label %1208, label %1258

1208:                                             ; preds = %1197
  %1209 = load i8, ptr %77, align 1, !tbaa !11, !range !25, !noundef !26
  %1210 = trunc i8 %1209 to i1
  br i1 %1210, label %1220, label %1211

1211:                                             ; preds = %1208
  %1212 = load ptr, ptr %57, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1212, i32 0, i32 5
  %1214 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1213, i32 0, i32 4
  %1215 = load ptr, ptr %1214, align 8, !tbaa !24
  %1216 = load i64, ptr %50, align 8, !tbaa !9
  %1217 = getelementptr inbounds i8, ptr %1215, i64 %1216
  %1218 = load i8, ptr %1217, align 1, !tbaa !11, !range !25, !noundef !26
  %1219 = trunc i8 %1218 to i1
  br i1 %1219, label %1220, label %1247

1220:                                             ; preds = %1211, %1208
  %1221 = load ptr, ptr %29, align 8, !tbaa !5
  %1222 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1221, i32 0, i32 4
  %1223 = load ptr, ptr %1222, align 8, !tbaa !24
  %1224 = load i64, ptr %50, align 8, !tbaa !9
  %1225 = getelementptr inbounds double, ptr %1223, i64 %1224
  %1226 = load double, ptr %1225, align 8, !tbaa !13
  %1227 = load ptr, ptr %57, align 8, !tbaa !5
  %1228 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1227, i32 0, i32 1
  %1229 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1228, i32 0, i32 4
  %1230 = load ptr, ptr %1229, align 8, !tbaa !24
  %1231 = getelementptr inbounds double, ptr %1230, i64 2
  %1232 = load double, ptr %1231, align 8, !tbaa !13
  %1233 = fsub double %1226, %1232
  %1234 = load ptr, ptr %46, align 8, !tbaa !5
  %1235 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1233, ptr noundef %1234)
  %1236 = fneg double %1235
  %1237 = load double, ptr %69, align 8, !tbaa !13
  %1238 = fdiv double %1236, %1237
  %1239 = load ptr, ptr %46, align 8, !tbaa !5
  %1240 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1238, ptr noundef %1239)
  %1241 = load ptr, ptr %57, align 8, !tbaa !5
  %1242 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1241, i32 0, i32 9
  %1243 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1242, i32 0, i32 4
  %1244 = load ptr, ptr %1243, align 8, !tbaa !24
  %1245 = load i64, ptr %50, align 8, !tbaa !9
  %1246 = getelementptr inbounds double, ptr %1244, i64 %1245
  store double %1240, ptr %1246, align 8, !tbaa !13
  br label %1254

1247:                                             ; preds = %1211
  %1248 = load ptr, ptr %57, align 8, !tbaa !5
  %1249 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1248, i32 0, i32 9
  %1250 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1249, i32 0, i32 4
  %1251 = load ptr, ptr %1250, align 8, !tbaa !24
  %1252 = load i64, ptr %50, align 8, !tbaa !9
  %1253 = getelementptr inbounds double, ptr %1251, i64 %1252
  store double 0.000000e+00, ptr %1253, align 8, !tbaa !13
  br label %1254

1254:                                             ; preds = %1247, %1220
  br label %1255

1255:                                             ; preds = %1254
  %1256 = load i64, ptr %50, align 8, !tbaa !9
  %1257 = add nsw i64 %1256, 1
  store i64 %1257, ptr %50, align 8, !tbaa !9
  br label %1197, !llvm.loop !42

1258:                                             ; preds = %1197
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %1259

1259:                                             ; preds = %1953, %1258
  %1260 = load i64, ptr %51, align 8, !tbaa !9
  %1261 = load ptr, ptr %24, align 8, !tbaa !5
  %1262 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1261, i32 0, i32 3
  %1263 = load i64, ptr %1262, align 8, !tbaa !23
  %1264 = sub nsw i64 %1263, 1
  %1265 = icmp sle i64 %1260, %1264
  br i1 %1265, label %1266, label %1956

1266:                                             ; preds = %1259
  %1267 = load ptr, ptr %37, align 8, !tbaa !5
  %1268 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1267, i32 0, i32 4
  %1269 = load ptr, ptr %1268, align 8, !tbaa !24
  %1270 = load i64, ptr %55, align 8, !tbaa !9
  %1271 = getelementptr inbounds i64, ptr %1269, i64 %1270
  %1272 = load i64, ptr %1271, align 8, !tbaa !9
  store i64 %1272, ptr %50, align 8, !tbaa !9
  br label %1273

1273:                                             ; preds = %1761, %1266
  %1274 = load i64, ptr %50, align 8, !tbaa !9
  %1275 = load ptr, ptr %37, align 8, !tbaa !5
  %1276 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1275, i32 0, i32 4
  %1277 = load ptr, ptr %1276, align 8, !tbaa !24
  %1278 = load i64, ptr %55, align 8, !tbaa !9
  %1279 = add nsw i64 %1278, 1
  %1280 = getelementptr inbounds i64, ptr %1277, i64 %1279
  %1281 = load i64, ptr %1280, align 8, !tbaa !9
  %1282 = sub nsw i64 %1281, 1
  %1283 = icmp sle i64 %1274, %1282
  br i1 %1283, label %1284, label %1764

1284:                                             ; preds = %1273
  %1285 = load ptr, ptr %34, align 8, !tbaa !5
  %1286 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1285, i32 0, i32 4
  %1287 = load ptr, ptr %1286, align 8, !tbaa !24
  %1288 = load i64, ptr %54, align 8, !tbaa !9
  %1289 = getelementptr inbounds i64, ptr %1287, i64 %1288
  %1290 = load i64, ptr %1289, align 8, !tbaa !9
  store i64 %1290, ptr %49, align 8, !tbaa !9
  br label %1291

1291:                                             ; preds = %1757, %1284
  %1292 = load i64, ptr %49, align 8, !tbaa !9
  %1293 = load ptr, ptr %34, align 8, !tbaa !5
  %1294 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1293, i32 0, i32 4
  %1295 = load ptr, ptr %1294, align 8, !tbaa !24
  %1296 = load i64, ptr %54, align 8, !tbaa !9
  %1297 = add nsw i64 %1296, 1
  %1298 = getelementptr inbounds i64, ptr %1295, i64 %1297
  %1299 = load i64, ptr %1298, align 8, !tbaa !9
  %1300 = sub nsw i64 %1299, 1
  %1301 = icmp sle i64 %1292, %1300
  br i1 %1301, label %1302, label %1760

1302:                                             ; preds = %1291
  %1303 = load i8, ptr %77, align 1, !tbaa !11, !range !25, !noundef !26
  %1304 = trunc i8 %1303 to i1
  br i1 %1304, label %1333, label %1305

1305:                                             ; preds = %1302
  %1306 = load ptr, ptr %57, align 8, !tbaa !5
  %1307 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1306, i32 0, i32 6
  %1308 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1307, i32 0, i32 4
  %1309 = load ptr, ptr %1308, align 8, !tbaa !24
  %1310 = load i64, ptr %49, align 8, !tbaa !9
  %1311 = load ptr, ptr %34, align 8, !tbaa !5
  %1312 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1311, i32 0, i32 4
  %1313 = load ptr, ptr %1312, align 8, !tbaa !24
  %1314 = load i64, ptr %54, align 8, !tbaa !9
  %1315 = getelementptr inbounds i64, ptr %1313, i64 %1314
  %1316 = load i64, ptr %1315, align 8, !tbaa !9
  %1317 = sub nsw i64 %1310, %1316
  %1318 = load i64, ptr %59, align 8, !tbaa !9
  %1319 = load i64, ptr %50, align 8, !tbaa !9
  %1320 = load ptr, ptr %37, align 8, !tbaa !5
  %1321 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1320, i32 0, i32 4
  %1322 = load ptr, ptr %1321, align 8, !tbaa !24
  %1323 = load i64, ptr %55, align 8, !tbaa !9
  %1324 = getelementptr inbounds i64, ptr %1322, i64 %1323
  %1325 = load i64, ptr %1324, align 8, !tbaa !9
  %1326 = sub nsw i64 %1319, %1325
  %1327 = mul nsw i64 %1318, %1326
  %1328 = add nsw i64 %1317, %1327
  %1329 = getelementptr inbounds i8, ptr %1309, i64 %1328
  %1330 = load i8, ptr %1329, align 1, !tbaa !11, !range !25, !noundef !26
  %1331 = trunc i8 %1330 to i1
  br i1 %1331, label %1333, label %1332

1332:                                             ; preds = %1305
  br label %1757

1333:                                             ; preds = %1305, %1302
  %1334 = load i64, ptr %64, align 8, !tbaa !9
  %1335 = load ptr, ptr %31, align 8, !tbaa !5
  %1336 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1335, i32 0, i32 4
  %1337 = load ptr, ptr %1336, align 8, !tbaa !24
  %1338 = load i64, ptr %53, align 8, !tbaa !9
  %1339 = getelementptr inbounds i64, ptr %1337, i64 %1338
  %1340 = load i64, ptr %1339, align 8, !tbaa !9
  %1341 = load i64, ptr %49, align 8, !tbaa !9
  %1342 = load i64, ptr %26, align 8, !tbaa !9
  %1343 = mul nsw i64 %1341, %1342
  %1344 = add nsw i64 %1340, %1343
  %1345 = load i64, ptr %50, align 8, !tbaa !9
  %1346 = load i64, ptr %26, align 8, !tbaa !9
  %1347 = mul nsw i64 %1345, %1346
  %1348 = load i64, ptr %28, align 8, !tbaa !9
  %1349 = mul nsw i64 %1347, %1348
  %1350 = add nsw i64 %1344, %1349
  %1351 = mul nsw i64 %1334, %1350
  store i64 %1351, ptr %71, align 8, !tbaa !9
  %1352 = load ptr, ptr %57, align 8, !tbaa !5
  %1353 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1352, i32 0, i32 8
  %1354 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1353, i32 0, i32 4
  %1355 = load ptr, ptr %1354, align 8, !tbaa !24
  %1356 = load i64, ptr %49, align 8, !tbaa !9
  %1357 = getelementptr inbounds double, ptr %1355, i64 %1356
  %1358 = load double, ptr %1357, align 8, !tbaa !13
  %1359 = load ptr, ptr %57, align 8, !tbaa !5
  %1360 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1359, i32 0, i32 9
  %1361 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1360, i32 0, i32 4
  %1362 = load ptr, ptr %1361, align 8, !tbaa !24
  %1363 = load i64, ptr %50, align 8, !tbaa !9
  %1364 = getelementptr inbounds double, ptr %1362, i64 %1363
  %1365 = load double, ptr %1364, align 8, !tbaa !13
  %1366 = fmul double %1358, %1365
  store double %1366, ptr %65, align 8, !tbaa !13
  %1367 = load ptr, ptr %24, align 8, !tbaa !5
  %1368 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1367, i32 0, i32 0
  %1369 = load i64, ptr %1368, align 8, !tbaa !22
  %1370 = icmp eq i64 %1369, 1
  br i1 %1370, label %1371, label %1436

1371:                                             ; preds = %1333
  %1372 = load ptr, ptr %24, align 8, !tbaa !5
  %1373 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1372, i32 0, i32 6
  %1374 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1373, i32 0, i32 6
  %1375 = load ptr, ptr %1374, align 8, !tbaa !24
  %1376 = load i64, ptr %67, align 8, !tbaa !9
  %1377 = getelementptr inbounds ptr, ptr %1375, i64 %1376
  %1378 = load ptr, ptr %1377, align 8, !tbaa !5
  %1379 = load i64, ptr %51, align 8, !tbaa !9
  %1380 = load ptr, ptr %24, align 8, !tbaa !5
  %1381 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1380, i32 0, i32 0
  %1382 = load i64, ptr %1381, align 8, !tbaa !22
  %1383 = mul nsw i64 %1379, %1382
  %1384 = add nsw i64 1, %1383
  %1385 = add nsw i64 %1384, 0
  %1386 = getelementptr inbounds double, ptr %1378, i64 %1385
  %1387 = load double, ptr %1386, align 8, !tbaa !13
  store double %1387, ptr %74, align 8, !tbaa !13
  %1388 = load ptr, ptr %31, align 8, !tbaa !5
  %1389 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1388, i32 0, i32 4
  %1390 = load ptr, ptr %1389, align 8, !tbaa !24
  %1391 = load i64, ptr %53, align 8, !tbaa !9
  %1392 = add nsw i64 %1391, 1
  %1393 = getelementptr inbounds i64, ptr %1390, i64 %1392
  %1394 = load i64, ptr %1393, align 8, !tbaa !9
  %1395 = sub nsw i64 %1394, 1
  store i64 %1395, ptr %73, align 8, !tbaa !9
  %1396 = load ptr, ptr %31, align 8, !tbaa !5
  %1397 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1396, i32 0, i32 4
  %1398 = load ptr, ptr %1397, align 8, !tbaa !24
  %1399 = load i64, ptr %53, align 8, !tbaa !9
  %1400 = getelementptr inbounds i64, ptr %1398, i64 %1399
  %1401 = load i64, ptr %1400, align 8, !tbaa !9
  store i64 %1401, ptr %48, align 8, !tbaa !9
  br label %1402

1402:                                             ; preds = %1432, %1371
  %1403 = load i64, ptr %48, align 8, !tbaa !9
  %1404 = load i64, ptr %73, align 8, !tbaa !9
  %1405 = icmp sle i64 %1403, %1404
  br i1 %1405, label %1406, label %1435

1406:                                             ; preds = %1402
  %1407 = load ptr, ptr %57, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1407, i32 0, i32 7
  %1409 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1408, i32 0, i32 4
  %1410 = load ptr, ptr %1409, align 8, !tbaa !24
  %1411 = load i64, ptr %48, align 8, !tbaa !9
  %1412 = getelementptr inbounds double, ptr %1410, i64 %1411
  %1413 = load double, ptr %1412, align 8, !tbaa !13
  %1414 = load double, ptr %65, align 8, !tbaa !13
  %1415 = fmul double %1413, %1414
  store double %1415, ptr %70, align 8, !tbaa !13
  %1416 = load ptr, ptr %45, align 8, !tbaa !5
  %1417 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1416, i32 0, i32 4
  %1418 = load ptr, ptr %1417, align 8, !tbaa !24
  %1419 = load i64, ptr %71, align 8, !tbaa !9
  %1420 = getelementptr inbounds double, ptr %1418, i64 %1419
  %1421 = load double, ptr %1420, align 8, !tbaa !13
  %1422 = load double, ptr %70, align 8, !tbaa !13
  %1423 = load double, ptr %74, align 8, !tbaa !13
  %1424 = call double @llvm.fmuladd.f64(double %1422, double %1423, double %1421)
  %1425 = load ptr, ptr %45, align 8, !tbaa !5
  %1426 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1425, i32 0, i32 4
  %1427 = load ptr, ptr %1426, align 8, !tbaa !24
  %1428 = load i64, ptr %71, align 8, !tbaa !9
  %1429 = getelementptr inbounds double, ptr %1427, i64 %1428
  store double %1424, ptr %1429, align 8, !tbaa !13
  %1430 = load i64, ptr %71, align 8, !tbaa !9
  %1431 = add nsw i64 %1430, 1
  store i64 %1431, ptr %71, align 8, !tbaa !9
  br label %1432

1432:                                             ; preds = %1406
  %1433 = load i64, ptr %48, align 8, !tbaa !9
  %1434 = add nsw i64 %1433, 1
  store i64 %1434, ptr %48, align 8, !tbaa !9
  br label %1402, !llvm.loop !43

1435:                                             ; preds = %1402
  br label %1757

1436:                                             ; preds = %1333
  %1437 = load ptr, ptr %24, align 8, !tbaa !5
  %1438 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1437, i32 0, i32 0
  %1439 = load i64, ptr %1438, align 8, !tbaa !22
  %1440 = icmp eq i64 %1439, 2
  br i1 %1440, label %1441, label %1540

1441:                                             ; preds = %1436
  %1442 = load ptr, ptr %24, align 8, !tbaa !5
  %1443 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1442, i32 0, i32 6
  %1444 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1443, i32 0, i32 6
  %1445 = load ptr, ptr %1444, align 8, !tbaa !24
  %1446 = load i64, ptr %67, align 8, !tbaa !9
  %1447 = getelementptr inbounds ptr, ptr %1445, i64 %1446
  %1448 = load ptr, ptr %1447, align 8, !tbaa !5
  %1449 = load i64, ptr %51, align 8, !tbaa !9
  %1450 = load ptr, ptr %24, align 8, !tbaa !5
  %1451 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1450, i32 0, i32 0
  %1452 = load i64, ptr %1451, align 8, !tbaa !22
  %1453 = mul nsw i64 %1449, %1452
  %1454 = add nsw i64 1, %1453
  %1455 = add nsw i64 %1454, 0
  %1456 = getelementptr inbounds double, ptr %1448, i64 %1455
  %1457 = load double, ptr %1456, align 8, !tbaa !13
  store double %1457, ptr %74, align 8, !tbaa !13
  %1458 = load ptr, ptr %24, align 8, !tbaa !5
  %1459 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1458, i32 0, i32 6
  %1460 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1459, i32 0, i32 6
  %1461 = load ptr, ptr %1460, align 8, !tbaa !24
  %1462 = load i64, ptr %67, align 8, !tbaa !9
  %1463 = getelementptr inbounds ptr, ptr %1461, i64 %1462
  %1464 = load ptr, ptr %1463, align 8, !tbaa !5
  %1465 = load i64, ptr %51, align 8, !tbaa !9
  %1466 = load ptr, ptr %24, align 8, !tbaa !5
  %1467 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1466, i32 0, i32 0
  %1468 = load i64, ptr %1467, align 8, !tbaa !22
  %1469 = mul nsw i64 %1465, %1468
  %1470 = add nsw i64 1, %1469
  %1471 = add nsw i64 %1470, 1
  %1472 = getelementptr inbounds double, ptr %1464, i64 %1471
  %1473 = load double, ptr %1472, align 8, !tbaa !13
  store double %1473, ptr %75, align 8, !tbaa !13
  %1474 = load ptr, ptr %31, align 8, !tbaa !5
  %1475 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1474, i32 0, i32 4
  %1476 = load ptr, ptr %1475, align 8, !tbaa !24
  %1477 = load i64, ptr %53, align 8, !tbaa !9
  %1478 = add nsw i64 %1477, 1
  %1479 = getelementptr inbounds i64, ptr %1476, i64 %1478
  %1480 = load i64, ptr %1479, align 8, !tbaa !9
  %1481 = sub nsw i64 %1480, 1
  store i64 %1481, ptr %73, align 8, !tbaa !9
  %1482 = load ptr, ptr %31, align 8, !tbaa !5
  %1483 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1482, i32 0, i32 4
  %1484 = load ptr, ptr %1483, align 8, !tbaa !24
  %1485 = load i64, ptr %53, align 8, !tbaa !9
  %1486 = getelementptr inbounds i64, ptr %1484, i64 %1485
  %1487 = load i64, ptr %1486, align 8, !tbaa !9
  store i64 %1487, ptr %48, align 8, !tbaa !9
  br label %1488

1488:                                             ; preds = %1536, %1441
  %1489 = load i64, ptr %48, align 8, !tbaa !9
  %1490 = load i64, ptr %73, align 8, !tbaa !9
  %1491 = icmp sle i64 %1489, %1490
  br i1 %1491, label %1492, label %1539

1492:                                             ; preds = %1488
  %1493 = load ptr, ptr %57, align 8, !tbaa !5
  %1494 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1493, i32 0, i32 7
  %1495 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1494, i32 0, i32 4
  %1496 = load ptr, ptr %1495, align 8, !tbaa !24
  %1497 = load i64, ptr %48, align 8, !tbaa !9
  %1498 = getelementptr inbounds double, ptr %1496, i64 %1497
  %1499 = load double, ptr %1498, align 8, !tbaa !13
  %1500 = load double, ptr %65, align 8, !tbaa !13
  %1501 = fmul double %1499, %1500
  store double %1501, ptr %70, align 8, !tbaa !13
  %1502 = load ptr, ptr %45, align 8, !tbaa !5
  %1503 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1502, i32 0, i32 4
  %1504 = load ptr, ptr %1503, align 8, !tbaa !24
  %1505 = load i64, ptr %71, align 8, !tbaa !9
  %1506 = add nsw i64 %1505, 0
  %1507 = getelementptr inbounds double, ptr %1504, i64 %1506
  %1508 = load double, ptr %1507, align 8, !tbaa !13
  %1509 = load double, ptr %70, align 8, !tbaa !13
  %1510 = load double, ptr %74, align 8, !tbaa !13
  %1511 = call double @llvm.fmuladd.f64(double %1509, double %1510, double %1508)
  %1512 = load ptr, ptr %45, align 8, !tbaa !5
  %1513 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1512, i32 0, i32 4
  %1514 = load ptr, ptr %1513, align 8, !tbaa !24
  %1515 = load i64, ptr %71, align 8, !tbaa !9
  %1516 = add nsw i64 %1515, 0
  %1517 = getelementptr inbounds double, ptr %1514, i64 %1516
  store double %1511, ptr %1517, align 8, !tbaa !13
  %1518 = load ptr, ptr %45, align 8, !tbaa !5
  %1519 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1518, i32 0, i32 4
  %1520 = load ptr, ptr %1519, align 8, !tbaa !24
  %1521 = load i64, ptr %71, align 8, !tbaa !9
  %1522 = add nsw i64 %1521, 1
  %1523 = getelementptr inbounds double, ptr %1520, i64 %1522
  %1524 = load double, ptr %1523, align 8, !tbaa !13
  %1525 = load double, ptr %70, align 8, !tbaa !13
  %1526 = load double, ptr %75, align 8, !tbaa !13
  %1527 = call double @llvm.fmuladd.f64(double %1525, double %1526, double %1524)
  %1528 = load ptr, ptr %45, align 8, !tbaa !5
  %1529 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1528, i32 0, i32 4
  %1530 = load ptr, ptr %1529, align 8, !tbaa !24
  %1531 = load i64, ptr %71, align 8, !tbaa !9
  %1532 = add nsw i64 %1531, 1
  %1533 = getelementptr inbounds double, ptr %1530, i64 %1532
  store double %1527, ptr %1533, align 8, !tbaa !13
  %1534 = load i64, ptr %71, align 8, !tbaa !9
  %1535 = add nsw i64 %1534, 2
  store i64 %1535, ptr %71, align 8, !tbaa !9
  br label %1536

1536:                                             ; preds = %1492
  %1537 = load i64, ptr %48, align 8, !tbaa !9
  %1538 = add nsw i64 %1537, 1
  store i64 %1538, ptr %48, align 8, !tbaa !9
  br label %1488, !llvm.loop !44

1539:                                             ; preds = %1488
  br label %1757

1540:                                             ; preds = %1436
  %1541 = load ptr, ptr %24, align 8, !tbaa !5
  %1542 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1541, i32 0, i32 0
  %1543 = load i64, ptr %1542, align 8, !tbaa !22
  %1544 = icmp eq i64 %1543, 3
  br i1 %1544, label %1545, label %1676

1545:                                             ; preds = %1540
  %1546 = load ptr, ptr %24, align 8, !tbaa !5
  %1547 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1546, i32 0, i32 6
  %1548 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1547, i32 0, i32 6
  %1549 = load ptr, ptr %1548, align 8, !tbaa !24
  %1550 = load i64, ptr %67, align 8, !tbaa !9
  %1551 = getelementptr inbounds ptr, ptr %1549, i64 %1550
  %1552 = load ptr, ptr %1551, align 8, !tbaa !5
  %1553 = load i64, ptr %51, align 8, !tbaa !9
  %1554 = load ptr, ptr %24, align 8, !tbaa !5
  %1555 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1554, i32 0, i32 0
  %1556 = load i64, ptr %1555, align 8, !tbaa !22
  %1557 = mul nsw i64 %1553, %1556
  %1558 = add nsw i64 1, %1557
  %1559 = add nsw i64 %1558, 0
  %1560 = getelementptr inbounds double, ptr %1552, i64 %1559
  %1561 = load double, ptr %1560, align 8, !tbaa !13
  store double %1561, ptr %74, align 8, !tbaa !13
  %1562 = load ptr, ptr %24, align 8, !tbaa !5
  %1563 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1562, i32 0, i32 6
  %1564 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1563, i32 0, i32 6
  %1565 = load ptr, ptr %1564, align 8, !tbaa !24
  %1566 = load i64, ptr %67, align 8, !tbaa !9
  %1567 = getelementptr inbounds ptr, ptr %1565, i64 %1566
  %1568 = load ptr, ptr %1567, align 8, !tbaa !5
  %1569 = load i64, ptr %51, align 8, !tbaa !9
  %1570 = load ptr, ptr %24, align 8, !tbaa !5
  %1571 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1570, i32 0, i32 0
  %1572 = load i64, ptr %1571, align 8, !tbaa !22
  %1573 = mul nsw i64 %1569, %1572
  %1574 = add nsw i64 1, %1573
  %1575 = add nsw i64 %1574, 1
  %1576 = getelementptr inbounds double, ptr %1568, i64 %1575
  %1577 = load double, ptr %1576, align 8, !tbaa !13
  store double %1577, ptr %75, align 8, !tbaa !13
  %1578 = load ptr, ptr %24, align 8, !tbaa !5
  %1579 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1578, i32 0, i32 6
  %1580 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1579, i32 0, i32 6
  %1581 = load ptr, ptr %1580, align 8, !tbaa !24
  %1582 = load i64, ptr %67, align 8, !tbaa !9
  %1583 = getelementptr inbounds ptr, ptr %1581, i64 %1582
  %1584 = load ptr, ptr %1583, align 8, !tbaa !5
  %1585 = load i64, ptr %51, align 8, !tbaa !9
  %1586 = load ptr, ptr %24, align 8, !tbaa !5
  %1587 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1586, i32 0, i32 0
  %1588 = load i64, ptr %1587, align 8, !tbaa !22
  %1589 = mul nsw i64 %1585, %1588
  %1590 = add nsw i64 1, %1589
  %1591 = add nsw i64 %1590, 2
  %1592 = getelementptr inbounds double, ptr %1584, i64 %1591
  %1593 = load double, ptr %1592, align 8, !tbaa !13
  store double %1593, ptr %76, align 8, !tbaa !13
  %1594 = load ptr, ptr %31, align 8, !tbaa !5
  %1595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1594, i32 0, i32 4
  %1596 = load ptr, ptr %1595, align 8, !tbaa !24
  %1597 = load i64, ptr %53, align 8, !tbaa !9
  %1598 = add nsw i64 %1597, 1
  %1599 = getelementptr inbounds i64, ptr %1596, i64 %1598
  %1600 = load i64, ptr %1599, align 8, !tbaa !9
  %1601 = sub nsw i64 %1600, 1
  store i64 %1601, ptr %73, align 8, !tbaa !9
  %1602 = load ptr, ptr %31, align 8, !tbaa !5
  %1603 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1602, i32 0, i32 4
  %1604 = load ptr, ptr %1603, align 8, !tbaa !24
  %1605 = load i64, ptr %53, align 8, !tbaa !9
  %1606 = getelementptr inbounds i64, ptr %1604, i64 %1605
  %1607 = load i64, ptr %1606, align 8, !tbaa !9
  store i64 %1607, ptr %48, align 8, !tbaa !9
  br label %1608

1608:                                             ; preds = %1672, %1545
  %1609 = load i64, ptr %48, align 8, !tbaa !9
  %1610 = load i64, ptr %73, align 8, !tbaa !9
  %1611 = icmp sle i64 %1609, %1610
  br i1 %1611, label %1612, label %1675

1612:                                             ; preds = %1608
  %1613 = load ptr, ptr %57, align 8, !tbaa !5
  %1614 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1613, i32 0, i32 7
  %1615 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1614, i32 0, i32 4
  %1616 = load ptr, ptr %1615, align 8, !tbaa !24
  %1617 = load i64, ptr %48, align 8, !tbaa !9
  %1618 = getelementptr inbounds double, ptr %1616, i64 %1617
  %1619 = load double, ptr %1618, align 8, !tbaa !13
  %1620 = load double, ptr %65, align 8, !tbaa !13
  %1621 = fmul double %1619, %1620
  store double %1621, ptr %70, align 8, !tbaa !13
  %1622 = load ptr, ptr %45, align 8, !tbaa !5
  %1623 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1622, i32 0, i32 4
  %1624 = load ptr, ptr %1623, align 8, !tbaa !24
  %1625 = load i64, ptr %71, align 8, !tbaa !9
  %1626 = add nsw i64 %1625, 0
  %1627 = getelementptr inbounds double, ptr %1624, i64 %1626
  %1628 = load double, ptr %1627, align 8, !tbaa !13
  %1629 = load double, ptr %70, align 8, !tbaa !13
  %1630 = load double, ptr %74, align 8, !tbaa !13
  %1631 = call double @llvm.fmuladd.f64(double %1629, double %1630, double %1628)
  %1632 = load ptr, ptr %45, align 8, !tbaa !5
  %1633 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1632, i32 0, i32 4
  %1634 = load ptr, ptr %1633, align 8, !tbaa !24
  %1635 = load i64, ptr %71, align 8, !tbaa !9
  %1636 = add nsw i64 %1635, 0
  %1637 = getelementptr inbounds double, ptr %1634, i64 %1636
  store double %1631, ptr %1637, align 8, !tbaa !13
  %1638 = load ptr, ptr %45, align 8, !tbaa !5
  %1639 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1638, i32 0, i32 4
  %1640 = load ptr, ptr %1639, align 8, !tbaa !24
  %1641 = load i64, ptr %71, align 8, !tbaa !9
  %1642 = add nsw i64 %1641, 1
  %1643 = getelementptr inbounds double, ptr %1640, i64 %1642
  %1644 = load double, ptr %1643, align 8, !tbaa !13
  %1645 = load double, ptr %70, align 8, !tbaa !13
  %1646 = load double, ptr %75, align 8, !tbaa !13
  %1647 = call double @llvm.fmuladd.f64(double %1645, double %1646, double %1644)
  %1648 = load ptr, ptr %45, align 8, !tbaa !5
  %1649 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1648, i32 0, i32 4
  %1650 = load ptr, ptr %1649, align 8, !tbaa !24
  %1651 = load i64, ptr %71, align 8, !tbaa !9
  %1652 = add nsw i64 %1651, 1
  %1653 = getelementptr inbounds double, ptr %1650, i64 %1652
  store double %1647, ptr %1653, align 8, !tbaa !13
  %1654 = load ptr, ptr %45, align 8, !tbaa !5
  %1655 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1654, i32 0, i32 4
  %1656 = load ptr, ptr %1655, align 8, !tbaa !24
  %1657 = load i64, ptr %71, align 8, !tbaa !9
  %1658 = add nsw i64 %1657, 2
  %1659 = getelementptr inbounds double, ptr %1656, i64 %1658
  %1660 = load double, ptr %1659, align 8, !tbaa !13
  %1661 = load double, ptr %70, align 8, !tbaa !13
  %1662 = load double, ptr %76, align 8, !tbaa !13
  %1663 = call double @llvm.fmuladd.f64(double %1661, double %1662, double %1660)
  %1664 = load ptr, ptr %45, align 8, !tbaa !5
  %1665 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1664, i32 0, i32 4
  %1666 = load ptr, ptr %1665, align 8, !tbaa !24
  %1667 = load i64, ptr %71, align 8, !tbaa !9
  %1668 = add nsw i64 %1667, 2
  %1669 = getelementptr inbounds double, ptr %1666, i64 %1668
  store double %1663, ptr %1669, align 8, !tbaa !13
  %1670 = load i64, ptr %71, align 8, !tbaa !9
  %1671 = add nsw i64 %1670, 3
  store i64 %1671, ptr %71, align 8, !tbaa !9
  br label %1672

1672:                                             ; preds = %1612
  %1673 = load i64, ptr %48, align 8, !tbaa !9
  %1674 = add nsw i64 %1673, 1
  store i64 %1674, ptr %48, align 8, !tbaa !9
  br label %1608, !llvm.loop !45

1675:                                             ; preds = %1608
  br label %1757

1676:                                             ; preds = %1540
  %1677 = load ptr, ptr %31, align 8, !tbaa !5
  %1678 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1677, i32 0, i32 4
  %1679 = load ptr, ptr %1678, align 8, !tbaa !24
  %1680 = load i64, ptr %53, align 8, !tbaa !9
  %1681 = getelementptr inbounds i64, ptr %1679, i64 %1680
  %1682 = load i64, ptr %1681, align 8, !tbaa !9
  store i64 %1682, ptr %48, align 8, !tbaa !9
  br label %1683

1683:                                             ; preds = %1753, %1676
  %1684 = load i64, ptr %48, align 8, !tbaa !9
  %1685 = load ptr, ptr %31, align 8, !tbaa !5
  %1686 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1685, i32 0, i32 4
  %1687 = load ptr, ptr %1686, align 8, !tbaa !24
  %1688 = load i64, ptr %53, align 8, !tbaa !9
  %1689 = add nsw i64 %1688, 1
  %1690 = getelementptr inbounds i64, ptr %1687, i64 %1689
  %1691 = load i64, ptr %1690, align 8, !tbaa !9
  %1692 = sub nsw i64 %1691, 1
  %1693 = icmp sle i64 %1684, %1692
  br i1 %1693, label %1694, label %1756

1694:                                             ; preds = %1683
  %1695 = load ptr, ptr %57, align 8, !tbaa !5
  %1696 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1695, i32 0, i32 7
  %1697 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1696, i32 0, i32 4
  %1698 = load ptr, ptr %1697, align 8, !tbaa !24
  %1699 = load i64, ptr %48, align 8, !tbaa !9
  %1700 = getelementptr inbounds double, ptr %1698, i64 %1699
  %1701 = load double, ptr %1700, align 8, !tbaa !13
  %1702 = load double, ptr %65, align 8, !tbaa !13
  %1703 = fmul double %1701, %1702
  store double %1703, ptr %70, align 8, !tbaa !13
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1704

1704:                                             ; preds = %1746, %1694
  %1705 = load i64, ptr %52, align 8, !tbaa !9
  %1706 = load ptr, ptr %24, align 8, !tbaa !5
  %1707 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1706, i32 0, i32 0
  %1708 = load i64, ptr %1707, align 8, !tbaa !22
  %1709 = sub nsw i64 %1708, 1
  %1710 = icmp sle i64 %1705, %1709
  br i1 %1710, label %1711, label %1749

1711:                                             ; preds = %1704
  %1712 = load ptr, ptr %45, align 8, !tbaa !5
  %1713 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1712, i32 0, i32 4
  %1714 = load ptr, ptr %1713, align 8, !tbaa !24
  %1715 = load i64, ptr %52, align 8, !tbaa !9
  %1716 = load i64, ptr %71, align 8, !tbaa !9
  %1717 = add nsw i64 %1715, %1716
  %1718 = getelementptr inbounds double, ptr %1714, i64 %1717
  %1719 = load double, ptr %1718, align 8, !tbaa !13
  %1720 = load double, ptr %70, align 8, !tbaa !13
  %1721 = load ptr, ptr %24, align 8, !tbaa !5
  %1722 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1721, i32 0, i32 6
  %1723 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1722, i32 0, i32 6
  %1724 = load ptr, ptr %1723, align 8, !tbaa !24
  %1725 = load i64, ptr %67, align 8, !tbaa !9
  %1726 = getelementptr inbounds ptr, ptr %1724, i64 %1725
  %1727 = load ptr, ptr %1726, align 8, !tbaa !5
  %1728 = load i64, ptr %51, align 8, !tbaa !9
  %1729 = load ptr, ptr %24, align 8, !tbaa !5
  %1730 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1729, i32 0, i32 0
  %1731 = load i64, ptr %1730, align 8, !tbaa !22
  %1732 = mul nsw i64 %1728, %1731
  %1733 = add nsw i64 1, %1732
  %1734 = load i64, ptr %52, align 8, !tbaa !9
  %1735 = add nsw i64 %1733, %1734
  %1736 = getelementptr inbounds double, ptr %1727, i64 %1735
  %1737 = load double, ptr %1736, align 8, !tbaa !13
  %1738 = call double @llvm.fmuladd.f64(double %1720, double %1737, double %1719)
  %1739 = load ptr, ptr %45, align 8, !tbaa !5
  %1740 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1739, i32 0, i32 4
  %1741 = load ptr, ptr %1740, align 8, !tbaa !24
  %1742 = load i64, ptr %52, align 8, !tbaa !9
  %1743 = load i64, ptr %71, align 8, !tbaa !9
  %1744 = add nsw i64 %1742, %1743
  %1745 = getelementptr inbounds double, ptr %1741, i64 %1744
  store double %1738, ptr %1745, align 8, !tbaa !13
  br label %1746

1746:                                             ; preds = %1711
  %1747 = load i64, ptr %52, align 8, !tbaa !9
  %1748 = add nsw i64 %1747, 1
  store i64 %1748, ptr %52, align 8, !tbaa !9
  br label %1704, !llvm.loop !46

1749:                                             ; preds = %1704
  %1750 = load i64, ptr %71, align 8, !tbaa !9
  %1751 = load i64, ptr %64, align 8, !tbaa !9
  %1752 = add nsw i64 %1750, %1751
  store i64 %1752, ptr %71, align 8, !tbaa !9
  br label %1753

1753:                                             ; preds = %1749
  %1754 = load i64, ptr %48, align 8, !tbaa !9
  %1755 = add nsw i64 %1754, 1
  store i64 %1755, ptr %48, align 8, !tbaa !9
  br label %1683, !llvm.loop !47

1756:                                             ; preds = %1683
  br label %1757

1757:                                             ; preds = %1756, %1675, %1539, %1435, %1332
  %1758 = load i64, ptr %49, align 8, !tbaa !9
  %1759 = add nsw i64 %1758, 1
  store i64 %1759, ptr %49, align 8, !tbaa !9
  br label %1291, !llvm.loop !48

1760:                                             ; preds = %1291
  br label %1761

1761:                                             ; preds = %1760
  %1762 = load i64, ptr %50, align 8, !tbaa !9
  %1763 = add nsw i64 %1762, 1
  store i64 %1763, ptr %50, align 8, !tbaa !9
  br label %1273, !llvm.loop !49

1764:                                             ; preds = %1273
  %1765 = load i64, ptr %51, align 8, !tbaa !9
  %1766 = load ptr, ptr %24, align 8, !tbaa !5
  %1767 = getelementptr inbounds %"struct.alglib_impl::rbfv1model", ptr %1766, i32 0, i32 3
  %1768 = load i64, ptr %1767, align 8, !tbaa !23
  %1769 = sub nsw i64 %1768, 1
  %1770 = icmp ne i64 %1765, %1769
  br i1 %1770, label %1771, label %1952

1771:                                             ; preds = %1764
  %1772 = load ptr, ptr %31, align 8, !tbaa !5
  %1773 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1772, i32 0, i32 4
  %1774 = load ptr, ptr %1773, align 8, !tbaa !24
  %1775 = load i64, ptr %53, align 8, !tbaa !9
  %1776 = add nsw i64 %1775, 1
  %1777 = getelementptr inbounds i64, ptr %1774, i64 %1776
  %1778 = load i64, ptr %1777, align 8, !tbaa !9
  %1779 = sub nsw i64 %1778, 1
  store i64 %1779, ptr %73, align 8, !tbaa !9
  %1780 = load ptr, ptr %31, align 8, !tbaa !5
  %1781 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1780, i32 0, i32 4
  %1782 = load ptr, ptr %1781, align 8, !tbaa !24
  %1783 = load i64, ptr %53, align 8, !tbaa !9
  %1784 = getelementptr inbounds i64, ptr %1782, i64 %1783
  %1785 = load i64, ptr %1784, align 8, !tbaa !9
  store i64 %1785, ptr %48, align 8, !tbaa !9
  br label %1786

1786:                                             ; preds = %1828, %1771
  %1787 = load i64, ptr %48, align 8, !tbaa !9
  %1788 = load i64, ptr %73, align 8, !tbaa !9
  %1789 = icmp sle i64 %1787, %1788
  br i1 %1789, label %1790, label %1831

1790:                                             ; preds = %1786
  %1791 = load i8, ptr %77, align 1, !tbaa !11, !range !25, !noundef !26
  %1792 = trunc i8 %1791 to i1
  br i1 %1792, label %1802, label %1793

1793:                                             ; preds = %1790
  %1794 = load ptr, ptr %57, align 8, !tbaa !5
  %1795 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1794, i32 0, i32 3
  %1796 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1795, i32 0, i32 4
  %1797 = load ptr, ptr %1796, align 8, !tbaa !24
  %1798 = load i64, ptr %48, align 8, !tbaa !9
  %1799 = getelementptr inbounds i8, ptr %1797, i64 %1798
  %1800 = load i8, ptr %1799, align 1, !tbaa !11, !range !25, !noundef !26
  %1801 = trunc i8 %1800 to i1
  br i1 %1801, label %1802, label %1827

1802:                                             ; preds = %1793, %1790
  %1803 = load ptr, ptr %57, align 8, !tbaa !5
  %1804 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1803, i32 0, i32 7
  %1805 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1804, i32 0, i32 4
  %1806 = load ptr, ptr %1805, align 8, !tbaa !24
  %1807 = load i64, ptr %48, align 8, !tbaa !9
  %1808 = getelementptr inbounds double, ptr %1806, i64 %1807
  %1809 = load double, ptr %1808, align 8, !tbaa !13
  %1810 = load ptr, ptr %57, align 8, !tbaa !5
  %1811 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1810, i32 0, i32 7
  %1812 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1811, i32 0, i32 4
  %1813 = load ptr, ptr %1812, align 8, !tbaa !24
  %1814 = load i64, ptr %48, align 8, !tbaa !9
  %1815 = getelementptr inbounds double, ptr %1813, i64 %1814
  %1816 = load double, ptr %1815, align 8, !tbaa !13
  %1817 = fmul double %1809, %1816
  store double %1817, ptr %65, align 8, !tbaa !13
  %1818 = load double, ptr %65, align 8, !tbaa !13
  %1819 = load double, ptr %65, align 8, !tbaa !13
  %1820 = fmul double %1818, %1819
  %1821 = load ptr, ptr %57, align 8, !tbaa !5
  %1822 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1821, i32 0, i32 7
  %1823 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1822, i32 0, i32 4
  %1824 = load ptr, ptr %1823, align 8, !tbaa !24
  %1825 = load i64, ptr %48, align 8, !tbaa !9
  %1826 = getelementptr inbounds double, ptr %1824, i64 %1825
  store double %1820, ptr %1826, align 8, !tbaa !13
  br label %1827

1827:                                             ; preds = %1802, %1793
  br label %1828

1828:                                             ; preds = %1827
  %1829 = load i64, ptr %48, align 8, !tbaa !9
  %1830 = add nsw i64 %1829, 1
  store i64 %1830, ptr %48, align 8, !tbaa !9
  br label %1786, !llvm.loop !50

1831:                                             ; preds = %1786
  %1832 = load ptr, ptr %34, align 8, !tbaa !5
  %1833 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1832, i32 0, i32 4
  %1834 = load ptr, ptr %1833, align 8, !tbaa !24
  %1835 = load i64, ptr %54, align 8, !tbaa !9
  %1836 = add nsw i64 %1835, 1
  %1837 = getelementptr inbounds i64, ptr %1834, i64 %1836
  %1838 = load i64, ptr %1837, align 8, !tbaa !9
  %1839 = sub nsw i64 %1838, 1
  store i64 %1839, ptr %73, align 8, !tbaa !9
  %1840 = load ptr, ptr %34, align 8, !tbaa !5
  %1841 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1840, i32 0, i32 4
  %1842 = load ptr, ptr %1841, align 8, !tbaa !24
  %1843 = load i64, ptr %54, align 8, !tbaa !9
  %1844 = getelementptr inbounds i64, ptr %1842, i64 %1843
  %1845 = load i64, ptr %1844, align 8, !tbaa !9
  store i64 %1845, ptr %49, align 8, !tbaa !9
  br label %1846

1846:                                             ; preds = %1888, %1831
  %1847 = load i64, ptr %49, align 8, !tbaa !9
  %1848 = load i64, ptr %73, align 8, !tbaa !9
  %1849 = icmp sle i64 %1847, %1848
  br i1 %1849, label %1850, label %1891

1850:                                             ; preds = %1846
  %1851 = load i8, ptr %77, align 1, !tbaa !11, !range !25, !noundef !26
  %1852 = trunc i8 %1851 to i1
  br i1 %1852, label %1862, label %1853

1853:                                             ; preds = %1850
  %1854 = load ptr, ptr %57, align 8, !tbaa !5
  %1855 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1854, i32 0, i32 4
  %1856 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1855, i32 0, i32 4
  %1857 = load ptr, ptr %1856, align 8, !tbaa !24
  %1858 = load i64, ptr %49, align 8, !tbaa !9
  %1859 = getelementptr inbounds i8, ptr %1857, i64 %1858
  %1860 = load i8, ptr %1859, align 1, !tbaa !11, !range !25, !noundef !26
  %1861 = trunc i8 %1860 to i1
  br i1 %1861, label %1862, label %1887

1862:                                             ; preds = %1853, %1850
  %1863 = load ptr, ptr %57, align 8, !tbaa !5
  %1864 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1863, i32 0, i32 8
  %1865 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1864, i32 0, i32 4
  %1866 = load ptr, ptr %1865, align 8, !tbaa !24
  %1867 = load i64, ptr %49, align 8, !tbaa !9
  %1868 = getelementptr inbounds double, ptr %1866, i64 %1867
  %1869 = load double, ptr %1868, align 8, !tbaa !13
  %1870 = load ptr, ptr %57, align 8, !tbaa !5
  %1871 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1870, i32 0, i32 8
  %1872 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1871, i32 0, i32 4
  %1873 = load ptr, ptr %1872, align 8, !tbaa !24
  %1874 = load i64, ptr %49, align 8, !tbaa !9
  %1875 = getelementptr inbounds double, ptr %1873, i64 %1874
  %1876 = load double, ptr %1875, align 8, !tbaa !13
  %1877 = fmul double %1869, %1876
  store double %1877, ptr %65, align 8, !tbaa !13
  %1878 = load double, ptr %65, align 8, !tbaa !13
  %1879 = load double, ptr %65, align 8, !tbaa !13
  %1880 = fmul double %1878, %1879
  %1881 = load ptr, ptr %57, align 8, !tbaa !5
  %1882 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1881, i32 0, i32 8
  %1883 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1882, i32 0, i32 4
  %1884 = load ptr, ptr %1883, align 8, !tbaa !24
  %1885 = load i64, ptr %49, align 8, !tbaa !9
  %1886 = getelementptr inbounds double, ptr %1884, i64 %1885
  store double %1880, ptr %1886, align 8, !tbaa !13
  br label %1887

1887:                                             ; preds = %1862, %1853
  br label %1888

1888:                                             ; preds = %1887
  %1889 = load i64, ptr %49, align 8, !tbaa !9
  %1890 = add nsw i64 %1889, 1
  store i64 %1890, ptr %49, align 8, !tbaa !9
  br label %1846, !llvm.loop !51

1891:                                             ; preds = %1846
  %1892 = load ptr, ptr %37, align 8, !tbaa !5
  %1893 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1892, i32 0, i32 4
  %1894 = load ptr, ptr %1893, align 8, !tbaa !24
  %1895 = load i64, ptr %55, align 8, !tbaa !9
  %1896 = add nsw i64 %1895, 1
  %1897 = getelementptr inbounds i64, ptr %1894, i64 %1896
  %1898 = load i64, ptr %1897, align 8, !tbaa !9
  %1899 = sub nsw i64 %1898, 1
  store i64 %1899, ptr %73, align 8, !tbaa !9
  %1900 = load ptr, ptr %37, align 8, !tbaa !5
  %1901 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1900, i32 0, i32 4
  %1902 = load ptr, ptr %1901, align 8, !tbaa !24
  %1903 = load i64, ptr %55, align 8, !tbaa !9
  %1904 = getelementptr inbounds i64, ptr %1902, i64 %1903
  %1905 = load i64, ptr %1904, align 8, !tbaa !9
  store i64 %1905, ptr %50, align 8, !tbaa !9
  br label %1906

1906:                                             ; preds = %1948, %1891
  %1907 = load i64, ptr %50, align 8, !tbaa !9
  %1908 = load i64, ptr %73, align 8, !tbaa !9
  %1909 = icmp sle i64 %1907, %1908
  br i1 %1909, label %1910, label %1951

1910:                                             ; preds = %1906
  %1911 = load i8, ptr %77, align 1, !tbaa !11, !range !25, !noundef !26
  %1912 = trunc i8 %1911 to i1
  br i1 %1912, label %1922, label %1913

1913:                                             ; preds = %1910
  %1914 = load ptr, ptr %57, align 8, !tbaa !5
  %1915 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1914, i32 0, i32 5
  %1916 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1915, i32 0, i32 4
  %1917 = load ptr, ptr %1916, align 8, !tbaa !24
  %1918 = load i64, ptr %50, align 8, !tbaa !9
  %1919 = getelementptr inbounds i8, ptr %1917, i64 %1918
  %1920 = load i8, ptr %1919, align 1, !tbaa !11, !range !25, !noundef !26
  %1921 = trunc i8 %1920 to i1
  br i1 %1921, label %1922, label %1947

1922:                                             ; preds = %1913, %1910
  %1923 = load ptr, ptr %57, align 8, !tbaa !5
  %1924 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1923, i32 0, i32 9
  %1925 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1924, i32 0, i32 4
  %1926 = load ptr, ptr %1925, align 8, !tbaa !24
  %1927 = load i64, ptr %50, align 8, !tbaa !9
  %1928 = getelementptr inbounds double, ptr %1926, i64 %1927
  %1929 = load double, ptr %1928, align 8, !tbaa !13
  %1930 = load ptr, ptr %57, align 8, !tbaa !5
  %1931 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1930, i32 0, i32 9
  %1932 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1931, i32 0, i32 4
  %1933 = load ptr, ptr %1932, align 8, !tbaa !24
  %1934 = load i64, ptr %50, align 8, !tbaa !9
  %1935 = getelementptr inbounds double, ptr %1933, i64 %1934
  %1936 = load double, ptr %1935, align 8, !tbaa !13
  %1937 = fmul double %1929, %1936
  store double %1937, ptr %65, align 8, !tbaa !13
  %1938 = load double, ptr %65, align 8, !tbaa !13
  %1939 = load double, ptr %65, align 8, !tbaa !13
  %1940 = fmul double %1938, %1939
  %1941 = load ptr, ptr %57, align 8, !tbaa !5
  %1942 = getelementptr inbounds %"struct.alglib_impl::gridcalc3v1buf", ptr %1941, i32 0, i32 9
  %1943 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1942, i32 0, i32 4
  %1944 = load ptr, ptr %1943, align 8, !tbaa !24
  %1945 = load i64, ptr %50, align 8, !tbaa !9
  %1946 = getelementptr inbounds double, ptr %1944, i64 %1945
  store double %1940, ptr %1946, align 8, !tbaa !13
  br label %1947

1947:                                             ; preds = %1922, %1913
  br label %1948

1948:                                             ; preds = %1947
  %1949 = load i64, ptr %50, align 8, !tbaa !9
  %1950 = add nsw i64 %1949, 1
  store i64 %1950, ptr %50, align 8, !tbaa !9
  br label %1906, !llvm.loop !52

1951:                                             ; preds = %1906
  br label %1952

1952:                                             ; preds = %1951, %1764
  br label %1953

1953:                                             ; preds = %1952
  %1954 = load i64, ptr %51, align 8, !tbaa !9
  %1955 = add nsw i64 %1954, 1
  store i64 %1955, ptr %51, align 8, !tbaa !9
  br label %1259, !llvm.loop !53

1956:                                             ; preds = %1259
  br label %1957

1957:                                             ; preds = %1956
  %1958 = load i64, ptr %56, align 8, !tbaa !9
  %1959 = add nsw i64 %1958, 1
  store i64 %1959, ptr %56, align 8, !tbaa !9
  br label %988, !llvm.loop !54

1960:                                             ; preds = %988
  br label %1961

1961:                                             ; preds = %1960, %669
  %1962 = load i64, ptr %53, align 8, !tbaa !9
  %1963 = add nsw i64 %1962, 1
  store i64 %1963, ptr %53, align 8, !tbaa !9
  br label %379, !llvm.loop !55

1964:                                             ; preds = %379
  br label %1965

1965:                                             ; preds = %1964
  %1966 = load i64, ptr %54, align 8, !tbaa !9
  %1967 = add nsw i64 %1966, 1
  store i64 %1967, ptr %54, align 8, !tbaa !9
  br label %372, !llvm.loop !56

1968:                                             ; preds = %372
  br label %1969

1969:                                             ; preds = %1968
  %1970 = load i64, ptr %55, align 8, !tbaa !9
  %1971 = add nsw i64 %1970, 1
  store i64 %1971, ptr %55, align 8, !tbaa !9
  br label %365, !llvm.loop !57

1972:                                             ; preds = %365
  %1973 = load ptr, ptr %44, align 8, !tbaa !5
  %1974 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl22ae_shared_pool_recycleEPNS_14ae_shared_poolEPNS_12ae_smart_ptrEPNS_8ae_stateE(ptr noundef %1973, ptr noundef %58, ptr noundef %1974)
  %1975 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1975)
  store i32 0, ptr %79, align 4
  br label %1976

1976:                                             ; preds = %1972, %304, %242, %180
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #5
  %1977 = load i32, ptr %79, align 4
  switch i32 %1977, label %1979 [
    i32 0, label %1978
    i32 1, label %1978
  ]

1978:                                             ; preds = %1976, %1976
  ret void

1979:                                             ; preds = %1976
  unreachable
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!16, !10, i64 8}
!16 = !{!"_ZTSN11alglib_impl10rbfv1modelE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !17, i64 32, !18, i64 1032, !18, i64 1112, !14, i64 1192, !18, i64 1200, !20, i64 1280, !18, i64 1344, !20, i64 1424}
!17 = !{!"_ZTSN11alglib_impl6kdtreeE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !18, i64 32, !20, i64 112, !20, i64 176, !20, i64 240, !20, i64 304, !20, i64 368, !21, i64 432, !10, i64 992}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !12, i64 32, !19, i64 40, !7, i64 72}
!19 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!20 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !12, i64 16, !19, i64 24, !7, i64 56}
!21 = !{!"_ZTSN11alglib_impl19kdtreerequestbufferE", !20, i64 0, !20, i64 64, !20, i64 128, !10, i64 192, !14, i64 200, !12, i64 208, !14, i64 216, !10, i64 224, !20, i64 232, !20, i64 296, !20, i64 360, !20, i64 424, !20, i64 488, !14, i64 552}
!22 = !{!16, !10, i64 0}
!23 = !{!16, !10, i64 24}
!24 = !{!7, !7, i64 0}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !28}
!32 = distinct !{!32, !28}
!33 = distinct !{!33, !28}
!34 = distinct !{!34, !28}
!35 = distinct !{!35, !28}
!36 = distinct !{!36, !28}
!37 = distinct !{!37, !28}
!38 = distinct !{!38, !28}
!39 = distinct !{!39, !28}
!40 = distinct !{!40, !28}
!41 = distinct !{!41, !28}
!42 = distinct !{!42, !28}
!43 = distinct !{!43, !28}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !28}
!47 = distinct !{!47, !28}
!48 = distinct !{!48, !28}
!49 = distinct !{!49, !28}
!50 = distinct !{!50, !28}
!51 = distinct !{!51, !28}
!52 = distinct !{!52, !28}
!53 = distinct !{!53, !28}
!54 = distinct !{!54, !28}
!55 = distinct !{!55, !28}
!56 = distinct !{!56, !28}
!57 = distinct !{!57, !28}


; 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_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_smart_ptr" = type { ptr, ptr, i8, i8, ptr, %"struct.alglib_impl::ae_dyn_block" }

@_ZN11alglib_implL10rbfv1_mxnxE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL21rbfv1_minbasecasecostE = external hidden local_unnamed_addr global double, align 8

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

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

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

declare noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

declare noundef i64 @_ZN11alglib_impl16kdtreetsqueryrnnEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_vectorEdbPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, double noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #2

declare noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #2

declare noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef, double noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl17ae_smart_ptr_initEPNS_12ae_smart_ptrEPPvPNS_8ae_stateEb(ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

declare void @_ZN11alglib_impl23ae_shared_pool_retrieveEPNS_14ae_shared_poolEPNS_12ae_smart_ptrEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl22ae_shared_pool_recycleEPNS_14ae_shared_poolEPNS_12ae_smart_ptrEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl21kdtreetsqueryresultsxEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl24kdtreetsqueryresultstagsEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef %7, i64 noundef %8, i64 noundef %9, ptr noundef %10, i64 noundef %11, i64 noundef %12, ptr noundef %13, i64 noundef %14, i64 noundef %15, ptr noundef %16, i1 noundef zeroext %17, double noundef %18, double noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) local_unnamed_addr #4 {
  %24 = alloca %"struct.alglib_impl::ae_frame", align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"struct.alglib_impl::ae_smart_ptr", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #5
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %22, ptr noundef nonnull %24)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %26, i8 0, i64 64, i1 false)
  call void @_ZN11alglib_impl17ae_smart_ptr_initEPNS_12ae_smart_ptrEPPvPNS_8ae_stateEb(ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %22, i1 noundef zeroext true)
  %27 = getelementptr inbounds i8, ptr %0, i64 8
  %28 = load i64, ptr %27, align 8, !tbaa !5
  %29 = load i64, ptr %0, align 8, !tbaa !18
  %30 = getelementptr inbounds i8, ptr %0, i64 24
  %31 = load i64, ptr %30, align 8, !tbaa !19
  %32 = add nsw i64 %31, 1
  %33 = shl i64 %29, 1
  %34 = mul i64 %33, %32
  %35 = sitofp i64 %34 to double
  %36 = fadd double %19, 1.000000e+00
  %37 = fmul double %36, %35
  %38 = getelementptr inbounds i8, ptr %7, i64 56
  %39 = load ptr, ptr %38, align 8, !tbaa !20
  %40 = getelementptr inbounds i64, ptr %39, i64 %9
  %41 = load i64, ptr %40, align 8, !tbaa !21
  %42 = getelementptr inbounds i64, ptr %39, i64 %8
  %43 = load i64, ptr %42, align 8, !tbaa !21
  %44 = sub nsw i64 %41, %43
  %45 = sitofp i64 %44 to double
  %46 = fmul double %37, %45
  %47 = getelementptr inbounds i8, ptr %10, i64 56
  %48 = load ptr, ptr %47, align 8, !tbaa !20
  %49 = getelementptr inbounds i64, ptr %48, i64 %12
  %50 = load i64, ptr %49, align 8, !tbaa !21
  %51 = getelementptr inbounds i64, ptr %48, i64 %11
  %52 = load i64, ptr %51, align 8, !tbaa !21
  %53 = sub nsw i64 %50, %52
  %54 = sitofp i64 %53 to double
  %55 = fmul double %46, %54
  %56 = getelementptr inbounds i8, ptr %13, i64 56
  %57 = load ptr, ptr %56, align 8, !tbaa !20
  %58 = getelementptr inbounds i64, ptr %57, i64 %15
  %59 = load i64, ptr %58, align 8, !tbaa !21
  %60 = getelementptr inbounds i64, ptr %57, i64 %14
  %61 = load i64, ptr %60, align 8, !tbaa !21
  %62 = sub nsw i64 %59, %61
  %63 = sitofp i64 %62 to double
  %64 = fmul double %55, %63
  %65 = sub nsw i64 %9, %8
  %66 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef 0, i64 noundef %65, ptr noundef %22)
  %67 = sub nsw i64 %12, %11
  %68 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %66, i64 noundef %67, ptr noundef %22)
  %69 = sub nsw i64 %15, %14
  %70 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %68, i64 noundef %69, ptr noundef %22)
  %71 = load double, ptr @_ZN11alglib_implL21rbfv1_minbasecasecostE, align 8, !tbaa !22
  %72 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %64, double noundef %71)
  %73 = icmp sgt i64 %70, 1
  %or.cond = and i1 %73, %72
  br i1 %or.cond, label %74, label %89

74:                                               ; preds = %23
  %75 = icmp eq i64 %65, %70
  br i1 %75, label %76, label %79

76:                                               ; preds = %74
  %77 = lshr i64 %65, 1
  %78 = add nsw i64 %77, %8
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef nonnull %7, i64 noundef %8, i64 noundef %78, ptr noundef nonnull %10, i64 noundef %11, i64 noundef %12, ptr noundef nonnull %13, i64 noundef %14, i64 noundef %15, ptr noundef %16, i1 noundef zeroext %17, double noundef %18, double noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22)
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef nonnull %7, i64 noundef %78, i64 noundef %9, ptr noundef nonnull %10, i64 noundef %11, i64 noundef %12, ptr noundef nonnull %13, i64 noundef %14, i64 noundef %15, ptr noundef %16, i1 noundef zeroext %17, double noundef %18, double noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22)
  br label %994

79:                                               ; preds = %74
  %80 = icmp eq i64 %67, %70
  br i1 %80, label %81, label %84

81:                                               ; preds = %79
  %82 = lshr i64 %67, 1
  %83 = add nsw i64 %82, %11
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef nonnull %7, i64 noundef %8, i64 noundef %9, ptr noundef nonnull %10, i64 noundef %11, i64 noundef %83, ptr noundef nonnull %13, i64 noundef %14, i64 noundef %15, ptr noundef %16, i1 noundef zeroext %17, double noundef %18, double noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22)
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef nonnull %7, i64 noundef %8, i64 noundef %9, ptr noundef nonnull %10, i64 noundef %83, i64 noundef %12, ptr noundef nonnull %13, i64 noundef %14, i64 noundef %15, ptr noundef %16, i1 noundef zeroext %17, double noundef %18, double noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22)
  br label %994

84:                                               ; preds = %79
  %85 = icmp eq i64 %69, %70
  br i1 %85, label %86, label %89

86:                                               ; preds = %84
  %87 = lshr i64 %69, 1
  %88 = add nsw i64 %87, %14
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef nonnull %7, i64 noundef %8, i64 noundef %9, ptr noundef nonnull %10, i64 noundef %11, i64 noundef %12, ptr noundef nonnull %13, i64 noundef %14, i64 noundef %88, ptr noundef %16, i1 noundef zeroext %17, double noundef %18, double noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22)
  call void @_ZN11alglib_impl18rbfv1gridcalc3vrecEPNS_10rbfv1modelEPNS_9ae_vectorElS3_lS3_lS3_llS3_llS3_llS3_bddPNS_14ae_shared_poolES3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, i64 noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef nonnull %7, i64 noundef %8, i64 noundef %9, ptr noundef nonnull %10, i64 noundef %11, i64 noundef %12, ptr noundef nonnull %13, i64 noundef %88, i64 noundef %15, ptr noundef %16, i1 noundef zeroext %17, double noundef %18, double noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22)
  br label %994

89:                                               ; preds = %84, %23
  call void @_ZN11alglib_impl23ae_shared_pool_retrieveEPNS_14ae_shared_poolEPNS_12ae_smart_ptrEPNS_8ae_stateE(ptr noundef %20, ptr noundef nonnull %26, ptr noundef %22)
  %.not.not882 = icmp slt i64 %14, %15
  br i1 %.not.not882, label %.preheader703.lr.ph, label %._crit_edge

.preheader703.lr.ph:                              ; preds = %89
  %.not.not660857 = icmp slt i64 %11, %12
  %factor.op.mul738 = mul i64 %4, %2
  %90 = getelementptr inbounds i8, ptr %16, i64 56
  %91 = getelementptr inbounds i8, ptr %1, i64 56
  %92 = getelementptr inbounds i8, ptr %3, i64 56
  %93 = getelementptr inbounds i8, ptr %5, i64 56
  %94 = getelementptr inbounds i8, ptr %0, i64 1272
  %.not686.not749 = icmp sgt i64 %28, 0
  %95 = getelementptr inbounds i8, ptr %21, i64 56
  %96 = getelementptr inbounds i8, ptr %0, i64 32
  %97 = getelementptr inbounds i8, ptr %0, i64 1184
  %.not.not661852 = icmp slt i64 %8, %9
  %or.cond939 = and i1 %.not.not660857, %.not.not661852
  br i1 %or.cond939, label %.preheader703.us.us.preheader, label %._crit_edge

.preheader703.us.us.preheader:                    ; preds = %.preheader703.lr.ph
  %xtraiter983 = and i64 %28, 3
  %98 = icmp ult i64 %28, 4
  %unroll_iter987 = and i64 %28, 9223372036854775804
  %lcmp.mod985.not = icmp eq i64 %xtraiter983, 0
  br label %.preheader703.us.us

.preheader703.us.us:                              ; preds = %.preheader703.us.us.preheader, %._crit_edge859.split.us.us.us
  %.0655883.us.us = phi i64 [ %99, %._crit_edge859.split.us.us.us ], [ %14, %.preheader703.us.us.preheader ]
  %99 = add i64 %.0655883.us.us, 1
  br label %.preheader702.us.us.us

.preheader702.us.us.us:                           ; preds = %._crit_edge856.us.us.us, %.preheader703.us.us
  %.0654858.us.us.us = phi i64 [ %11, %.preheader703.us.us ], [ %100, %._crit_edge856.us.us.us ]
  %100 = add nsw i64 %.0654858.us.us.us, 1
  br label %101

101:                                              ; preds = %.loopexit700.us.us.us, %.preheader702.us.us.us
  %.0652853.us.us.us = phi i64 [ %8, %.preheader702.us.us.us ], [ %.pre-phi, %.loopexit700.us.us.us ]
  %102 = load ptr, ptr %47, align 8, !tbaa !20
  %103 = getelementptr inbounds i64, ptr %102, i64 %100
  %104 = load i64, ptr %103, align 8, !tbaa !21
  %105 = getelementptr inbounds i64, ptr %102, i64 %.0654858.us.us.us
  %106 = load i64, ptr %105, align 8, !tbaa !21
  %107 = sub nsw i64 %104, %106
  %.pre919 = load ptr, ptr %56, align 8, !tbaa !20
  br i1 %17, label %108, label %.thread.us.us.us

108:                                              ; preds = %101
  %109 = getelementptr inbounds i64, ptr %.pre919, i64 %99
  %110 = load i64, ptr %109, align 8, !tbaa !21
  %111 = getelementptr inbounds i64, ptr %.pre919, i64 %.0655883.us.us
  %112 = load i64, ptr %111, align 8, !tbaa !21
  %113 = sub nsw i64 %110, %112
  %114 = load ptr, ptr %25, align 8, !tbaa !23
  %115 = getelementptr inbounds i8, ptr %114, i64 192
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %115, i64 noundef %2, ptr noundef %22)
  %116 = load ptr, ptr %25, align 8, !tbaa !23
  %117 = getelementptr inbounds i8, ptr %116, i64 256
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %117, i64 noundef %4, ptr noundef %22)
  %118 = load ptr, ptr %25, align 8, !tbaa !23
  %119 = getelementptr inbounds i8, ptr %118, i64 320
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %119, i64 noundef %6, ptr noundef %22)
  %120 = load ptr, ptr %25, align 8, !tbaa !23
  %121 = getelementptr inbounds i8, ptr %120, i64 384
  %122 = mul nsw i64 %113, %107
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %121, i64 noundef %122, ptr noundef %22)
  %123 = load ptr, ptr %38, align 8, !tbaa !20
  %124 = getelementptr inbounds i64, ptr %123, i64 %.0652853.us.us.us
  %125 = load i64, ptr %124, align 8, !tbaa !21
  %126 = add i64 %.0652853.us.us.us, 1
  %127 = getelementptr inbounds i64, ptr %123, i64 %126
  %128 = load i64, ptr %127, align 8, !tbaa !21
  %.not.not662704.us.us.us = icmp slt i64 %125, %128
  br i1 %.not.not662704.us.us.us, label %.lr.ph.us.us.us, label %._crit_edge.us.us.us

._crit_edge.us.us.us:                             ; preds = %731, %108
  %129 = load ptr, ptr %47, align 8, !tbaa !20
  %130 = getelementptr inbounds i64, ptr %129, i64 %.0654858.us.us.us
  %131 = load i64, ptr %130, align 8, !tbaa !21
  %132 = getelementptr inbounds i64, ptr %129, i64 %100
  %133 = load i64, ptr %132, align 8, !tbaa !21
  %.not.not663706.us.us.us = icmp slt i64 %131, %133
  br i1 %.not.not663706.us.us.us, label %.lr.ph709.us.us.us, label %._crit_edge710.us.us.us

._crit_edge710.us.us.us:                          ; preds = %724, %._crit_edge.us.us.us
  %134 = load ptr, ptr %56, align 8, !tbaa !20
  %135 = getelementptr inbounds i64, ptr %134, i64 %.0655883.us.us
  %136 = load i64, ptr %135, align 8, !tbaa !21
  %137 = getelementptr inbounds i64, ptr %134, i64 %99
  %138 = load i64, ptr %137, align 8, !tbaa !21
  %.not.not664711.us.us.us = icmp slt i64 %136, %138
  br i1 %.not.not664711.us.us.us, label %.lr.ph714.us.us.us, label %.preheader701.us.us.us

._crit_edge718.us.us.us.loopexit.unr-lcssa:       ; preds = %704, %.lr.ph717.us.us.us
  %.1628716.us.us.us.unr = phi i64 [ 0, %.lr.ph717.us.us.us ], [ %716, %704 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge718.us.us.us.loopexit, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge718.us.us.us.loopexit.unr-lcssa, %.epil.preheader
  %.1628716.us.us.us.epil = phi i64 [ %141, %.epil.preheader ], [ %.1628716.us.us.us.unr, %._crit_edge718.us.us.us.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge718.us.us.us.loopexit.unr-lcssa ]
  %139 = load ptr, ptr %749, align 8, !tbaa !20
  %140 = getelementptr inbounds i8, ptr %139, i64 %.1628716.us.us.us.epil
  store i8 0, ptr %140, align 1, !tbaa !24
  %141 = add nuw nsw i64 %.1628716.us.us.us.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge718.us.us.us.loopexit, label %.epil.preheader, !llvm.loop !25

._crit_edge718.us.us.us.loopexit:                 ; preds = %.epil.preheader, %._crit_edge718.us.us.us.loopexit.unr-lcssa
  %.pre = load ptr, ptr %56, align 8, !tbaa !20
  br label %._crit_edge718.us.us.us

._crit_edge718.us.us.us:                          ; preds = %._crit_edge718.us.us.us.loopexit, %.preheader701.us.us.us
  %142 = phi ptr [ %.pre, %._crit_edge718.us.us.us.loopexit ], [ %741, %.preheader701.us.us.us ]
  %143 = getelementptr inbounds i64, ptr %142, i64 %.0655883.us.us
  %144 = load i64, ptr %143, align 8, !tbaa !21
  %145 = getelementptr inbounds i64, ptr %142, i64 %99
  %146 = load i64, ptr %145, align 8, !tbaa !21
  %.not.not666739.us.us.us = icmp slt i64 %144, %146
  br i1 %.not.not666739.us.us.us, label %.lr.ph745.us.us.us.preheader, label %.loopexit700.us.us.us

.lr.ph745.us.us.us.preheader:                     ; preds = %._crit_edge718.us.us.us
  %.pre915 = load ptr, ptr %47, align 8, !tbaa !20
  br label %.lr.ph745.us.us.us

._crit_edge746.us.us.us:                          ; preds = %._crit_edge734.us.us.us
  br i1 %.1.lcssa.us.us.us, label %.thread.us.us.us, label %.loopexit700.us.us.us

.thread.us.us.us:                                 ; preds = %._crit_edge746.us.us.us, %101
  %147 = phi ptr [ %652, %._crit_edge746.us.us.us ], [ %.pre919, %101 ]
  %.4626691.us.us.us = phi i8 [ %.1623.lcssa.us.us.us, %._crit_edge746.us.us.us ], [ 1, %101 ]
  %148 = getelementptr inbounds i64, ptr %147, i64 %.0655883.us.us
  %149 = load i64, ptr %148, align 8, !tbaa !21
  %150 = getelementptr inbounds i64, ptr %147, i64 %99
  %151 = load i64, ptr %150, align 8, !tbaa !21
  %.not.not667777.us.us.us = icmp slt i64 %149, %151
  br i1 %.not.not667777.us.us.us, label %.lr.ph779.us.us.us, label %._crit_edge780.us.us.us

._crit_edge780.us.us.us:                          ; preds = %._crit_edge776.us.us.us, %.thread.us.us.us
  %152 = load ptr, ptr %91, align 8, !tbaa !20
  %153 = load ptr, ptr %38, align 8, !tbaa !20
  %154 = getelementptr inbounds i64, ptr %153, i64 %.0652853.us.us.us
  %155 = load i64, ptr %154, align 8, !tbaa !21
  %156 = getelementptr inbounds double, ptr %152, i64 %155
  %157 = load double, ptr %156, align 8, !tbaa !22
  %158 = add i64 %.0652853.us.us.us, 1
  %159 = getelementptr inbounds i64, ptr %153, i64 %158
  %160 = load i64, ptr %159, align 8, !tbaa !21
  %161 = getelementptr double, ptr %152, i64 %160
  %162 = getelementptr i8, ptr %161, i64 -8
  %163 = load double, ptr %162, align 8, !tbaa !22
  %164 = fadd double %157, %163
  %165 = fmul double %164, 5.000000e-01
  %166 = load ptr, ptr %25, align 8, !tbaa !23
  %167 = getelementptr inbounds i8, ptr %166, i64 56
  %168 = load ptr, ptr %167, align 8, !tbaa !20
  store double %165, ptr %168, align 8, !tbaa !22
  %169 = load ptr, ptr %92, align 8, !tbaa !20
  %170 = load ptr, ptr %47, align 8, !tbaa !20
  %171 = getelementptr inbounds i64, ptr %170, i64 %.0654858.us.us.us
  %172 = load i64, ptr %171, align 8, !tbaa !21
  %173 = getelementptr inbounds double, ptr %169, i64 %172
  %174 = load double, ptr %173, align 8, !tbaa !22
  %175 = getelementptr inbounds i64, ptr %170, i64 %100
  %176 = load i64, ptr %175, align 8, !tbaa !21
  %177 = getelementptr double, ptr %169, i64 %176
  %178 = getelementptr i8, ptr %177, i64 -8
  %179 = load double, ptr %178, align 8, !tbaa !22
  %180 = fadd double %174, %179
  %181 = fmul double %180, 5.000000e-01
  %182 = load ptr, ptr %167, align 8, !tbaa !20
  %183 = getelementptr inbounds i8, ptr %182, i64 8
  store double %181, ptr %183, align 8, !tbaa !22
  %184 = load ptr, ptr %93, align 8, !tbaa !20
  %185 = load ptr, ptr %56, align 8, !tbaa !20
  %186 = getelementptr inbounds i64, ptr %185, i64 %.0655883.us.us
  %187 = load i64, ptr %186, align 8, !tbaa !21
  %188 = getelementptr inbounds double, ptr %184, i64 %187
  %189 = load double, ptr %188, align 8, !tbaa !22
  %190 = getelementptr inbounds i64, ptr %185, i64 %99
  %191 = load i64, ptr %190, align 8, !tbaa !21
  %192 = getelementptr double, ptr %184, i64 %191
  %193 = getelementptr i8, ptr %192, i64 -8
  %194 = load double, ptr %193, align 8, !tbaa !22
  %195 = fadd double %189, %194
  %196 = fmul double %195, 5.000000e-01
  %197 = load ptr, ptr %167, align 8, !tbaa !20
  %198 = getelementptr inbounds i8, ptr %197, i64 16
  store double %196, ptr %198, align 8, !tbaa !22
  %199 = getelementptr inbounds i8, ptr %166, i64 640
  %200 = call noundef i64 @_ZN11alglib_impl16kdtreetsqueryrnnEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_vectorEdbPNS_8ae_stateE(ptr noundef nonnull %96, ptr noundef nonnull %199, ptr noundef %166, double noundef %18, i1 noundef zeroext true, ptr noundef %22)
  %201 = load ptr, ptr %25, align 8, !tbaa !23
  %202 = getelementptr inbounds i8, ptr %201, i64 640
  %203 = getelementptr inbounds i8, ptr %201, i64 1200
  call void @_ZN11alglib_impl21kdtreetsqueryresultsxEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %96, ptr noundef nonnull %202, ptr noundef nonnull %203, ptr noundef %22)
  %204 = load ptr, ptr %25, align 8, !tbaa !23
  %205 = getelementptr inbounds i8, ptr %204, i64 640
  %206 = getelementptr inbounds i8, ptr %204, i64 1280
  call void @_ZN11alglib_impl24kdtreetsqueryresultstagsEPNS_6kdtreeEPNS_19kdtreerequestbufferEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %96, ptr noundef nonnull %205, ptr noundef nonnull %206, ptr noundef %22)
  %.not.not668848.us.us.us = icmp sgt i64 %200, 0
  br i1 %.not.not668848.us.us.us, label %.lr.ph851.us.us.us, label %.loopexit700.us.us.us

.loopexit700.us.us.us:                            ; preds = %._crit_edge847.us.us.us, %._crit_edge718.us.us.us, %._crit_edge780.us.us.us, %._crit_edge746.us.us.us
  %.pre-phi = phi i64 [ %158, %._crit_edge780.us.us.us ], [ %126, %._crit_edge746.us.us.us ], [ %126, %._crit_edge718.us.us.us ], [ %158, %._crit_edge847.us.us.us ]
  %exitcond912.not = icmp eq i64 %.pre-phi, %9
  br i1 %exitcond912.not, label %._crit_edge856.us.us.us, label %101, !llvm.loop !27

207:                                              ; preds = %.lr.ph851.us.us.us, %._crit_edge847.us.us.us
  %.0656849.us.us.us = phi i64 [ 0, %.lr.ph851.us.us.us ], [ %256, %._crit_edge847.us.us.us ]
  %208 = load ptr, ptr %25, align 8, !tbaa !23
  %209 = getelementptr inbounds i8, ptr %208, i64 1272
  %210 = load ptr, ptr %209, align 8, !tbaa !20
  %211 = getelementptr inbounds ptr, ptr %210, i64 %.0656849.us.us.us
  %212 = load ptr, ptr %211, align 8, !tbaa !23
  %213 = load double, ptr %212, align 8, !tbaa !22
  %214 = getelementptr inbounds i8, ptr %208, i64 120
  %215 = load ptr, ptr %214, align 8, !tbaa !20
  store double %213, ptr %215, align 8, !tbaa !22
  %216 = load ptr, ptr %209, align 8, !tbaa !20
  %217 = getelementptr inbounds ptr, ptr %216, i64 %.0656849.us.us.us
  %218 = load ptr, ptr %217, align 8, !tbaa !23
  %219 = getelementptr inbounds i8, ptr %218, i64 8
  %220 = load double, ptr %219, align 8, !tbaa !22
  %221 = load ptr, ptr %214, align 8, !tbaa !20
  %222 = getelementptr inbounds i8, ptr %221, i64 8
  store double %220, ptr %222, align 8, !tbaa !22
  %223 = load ptr, ptr %209, align 8, !tbaa !20
  %224 = getelementptr inbounds ptr, ptr %223, i64 %.0656849.us.us.us
  %225 = load ptr, ptr %224, align 8, !tbaa !23
  %226 = getelementptr inbounds i8, ptr %225, i64 16
  %227 = load double, ptr %226, align 8, !tbaa !22
  %228 = load ptr, ptr %214, align 8, !tbaa !20
  %229 = getelementptr inbounds i8, ptr %228, i64 16
  store double %227, ptr %229, align 8, !tbaa !22
  %230 = getelementptr inbounds i8, ptr %208, i64 1336
  %231 = load ptr, ptr %230, align 8, !tbaa !20
  %232 = getelementptr inbounds i64, ptr %231, i64 %.0656849.us.us.us
  %233 = load i64, ptr %232, align 8, !tbaa !21
  %234 = load ptr, ptr %97, align 8, !tbaa !20
  %235 = getelementptr inbounds ptr, ptr %234, i64 %233
  %236 = load ptr, ptr %235, align 8, !tbaa !23
  %237 = load double, ptr %236, align 8, !tbaa !22
  %238 = fmul double %237, %237
  %239 = load ptr, ptr %38, align 8, !tbaa !20
  %240 = getelementptr inbounds i64, ptr %239, i64 %.0652853.us.us.us
  %241 = load i64, ptr %240, align 8, !tbaa !21
  %242 = getelementptr inbounds i64, ptr %239, i64 %158
  %243 = load i64, ptr %242, align 8, !tbaa !21
  %.not.not669781.us.us.us = icmp slt i64 %241, %243
  br i1 %.not.not669781.us.us.us, label %.lr.ph784.us.us.us, label %._crit_edge785.us.us.us

._crit_edge785.us.us.us:                          ; preds = %580, %207
  %244 = phi ptr [ %208, %207 ], [ %.sink953, %580 ]
  %245 = load ptr, ptr %47, align 8, !tbaa !20
  %246 = getelementptr inbounds i64, ptr %245, i64 %.0654858.us.us.us
  %247 = load i64, ptr %246, align 8, !tbaa !21
  %248 = getelementptr inbounds i64, ptr %245, i64 %100
  %249 = load i64, ptr %248, align 8, !tbaa !21
  %.not.not670786.us.us.us = icmp slt i64 %247, %249
  br i1 %.not.not670786.us.us.us, label %.lr.ph789.us.us.us, label %._crit_edge790.us.us.us

._crit_edge790.us.us.us:                          ; preds = %553, %._crit_edge785.us.us.us
  %250 = phi ptr [ %244, %._crit_edge785.us.us.us ], [ %.sink948, %553 ]
  %251 = load ptr, ptr %56, align 8, !tbaa !20
  %252 = getelementptr inbounds i64, ptr %251, i64 %.0655883.us.us
  %253 = load i64, ptr %252, align 8, !tbaa !21
  %254 = getelementptr inbounds i64, ptr %251, i64 %99
  %255 = load i64, ptr %254, align 8, !tbaa !21
  %.not.not671791.us.us.us = icmp slt i64 %253, %255
  br i1 %.not.not671791.us.us.us, label %.lr.ph794.us.us.us, label %.preheader699.us.us.us

._crit_edge847.us.us.us:                          ; preds = %.loopexit697.us.us.us, %.preheader699.us.us.us
  %256 = add nuw nsw i64 %.0656849.us.us.us, 1
  %exitcond911.not = icmp eq i64 %256, %200
  br i1 %exitcond911.not, label %.loopexit700.us.us.us, label %207, !llvm.loop !29

257:                                              ; preds = %.lr.ph846.us.us.us, %.loopexit697.us.us.us
  %.1649844.us.us.us = phi i64 [ 0, %.lr.ph846.us.us.us ], [ %357, %.loopexit697.us.us.us ]
  %258 = load ptr, ptr %56, align 8, !tbaa !20
  %259 = getelementptr inbounds i64, ptr %258, i64 %.0655883.us.us
  %260 = load i64, ptr %259, align 8, !tbaa !21
  %261 = getelementptr inbounds i64, ptr %258, i64 %99
  %262 = load i64, ptr %261, align 8, !tbaa !21
  %.not.not673824.us.us.us = icmp slt i64 %260, %262
  br i1 %.not.not673824.us.us.us, label %.lr.ph827.us.us.us, label %._crit_edge828.us.us.us

._crit_edge828.us.us.us:                          ; preds = %._crit_edge823.us.us.us, %.lr.ph827.us.us.us, %257
  %.not.us.us.us = icmp eq i64 %.1649844.us.us.us, %992
  br i1 %.not.us.us.us, label %.loopexit697.us.us.us, label %263

263:                                              ; preds = %._crit_edge828.us.us.us
  %264 = load ptr, ptr %38, align 8, !tbaa !20
  %265 = getelementptr inbounds i64, ptr %264, i64 %158
  %266 = load i64, ptr %265, align 8, !tbaa !21
  %267 = getelementptr inbounds i64, ptr %264, i64 %.0652853.us.us.us
  %268 = load i64, ptr %267, align 8, !tbaa !21
  %.not674.not829.us.us.us = icmp slt i64 %268, %266
  br i1 %.not674.not829.us.us.us, label %.lr.ph832.us.us.us, label %._crit_edge833.us.us.us

._crit_edge833.us.us.us:                          ; preds = %.prol.loopexit, %355, %263
  %269 = load ptr, ptr %47, align 8, !tbaa !20
  %270 = getelementptr inbounds i64, ptr %269, i64 %100
  %271 = load i64, ptr %270, align 8, !tbaa !21
  %272 = getelementptr inbounds i64, ptr %269, i64 %.0654858.us.us.us
  %273 = load i64, ptr %272, align 8, !tbaa !21
  %.not675.not834.us.us.us = icmp slt i64 %273, %271
  br i1 %.not675.not834.us.us.us, label %.lr.ph837.us.us.us, label %._crit_edge838.us.us.us

._crit_edge838.us.us.us:                          ; preds = %.prol.loopexit1000, %329, %._crit_edge833.us.us.us
  %274 = load ptr, ptr %56, align 8, !tbaa !20
  %275 = getelementptr inbounds i64, ptr %274, i64 %99
  %276 = load i64, ptr %275, align 8, !tbaa !21
  %277 = getelementptr inbounds i64, ptr %274, i64 %.0655883.us.us
  %278 = load i64, ptr %277, align 8, !tbaa !21
  %.not676.not839.us.us.us = icmp slt i64 %278, %276
  br i1 %.not676.not839.us.us.us, label %.lr.ph842.us.us.us, label %.loopexit697.us.us.us

.lr.ph842.us.us.us.new:                           ; preds = %.prol.loopexit1004, %303
  %.5647840.us.us.us = phi i64 [ %304, %303 ], [ %.5647840.us.us.us.unr, %.prol.loopexit1004 ]
  br i1 %993, label %284, label %279

279:                                              ; preds = %.lr.ph842.us.us.us.new
  %280 = load ptr, ptr %976, align 8, !tbaa !20
  %281 = getelementptr inbounds i8, ptr %280, i64 %.5647840.us.us.us
  %282 = load i8, ptr %281, align 1, !tbaa !24, !range !30, !noundef !31
  %283 = trunc nuw i8 %282 to i1
  br i1 %283, label %284, label %290

284:                                              ; preds = %279, %.lr.ph842.us.us.us.new
  %285 = load ptr, ptr %977, align 8, !tbaa !20
  %286 = getelementptr inbounds double, ptr %285, i64 %.5647840.us.us.us
  %287 = load double, ptr %286, align 8, !tbaa !22
  %288 = fmul double %287, %287
  %289 = fmul double %288, %288
  store double %289, ptr %286, align 8, !tbaa !22
  br label %290

290:                                              ; preds = %284, %279
  %291 = add nsw i64 %.5647840.us.us.us, 1
  br i1 %993, label %297, label %292

292:                                              ; preds = %290
  %293 = load ptr, ptr %976, align 8, !tbaa !20
  %294 = getelementptr inbounds i8, ptr %293, i64 %291
  %295 = load i8, ptr %294, align 1, !tbaa !24, !range !30, !noundef !31
  %296 = trunc nuw i8 %295 to i1
  br i1 %296, label %297, label %303

297:                                              ; preds = %292, %290
  %298 = load ptr, ptr %977, align 8, !tbaa !20
  %299 = getelementptr inbounds double, ptr %298, i64 %291
  %300 = load double, ptr %299, align 8, !tbaa !22
  %301 = fmul double %300, %300
  %302 = fmul double %301, %301
  store double %302, ptr %299, align 8, !tbaa !22
  br label %303

303:                                              ; preds = %297, %292
  %304 = add nsw i64 %.5647840.us.us.us, 2
  %exitcond909.not.1 = icmp eq i64 %304, %276
  br i1 %exitcond909.not.1, label %.loopexit697.us.us.us, label %.lr.ph842.us.us.us.new, !llvm.loop !32

.lr.ph837.us.us.us.new:                           ; preds = %.prol.loopexit1000, %329
  %.5637835.us.us.us = phi i64 [ %330, %329 ], [ %.5637835.us.us.us.unr, %.prol.loopexit1000 ]
  br i1 %993, label %310, label %305

305:                                              ; preds = %.lr.ph837.us.us.us.new
  %306 = load ptr, ptr %959, align 8, !tbaa !20
  %307 = getelementptr inbounds i8, ptr %306, i64 %.5637835.us.us.us
  %308 = load i8, ptr %307, align 1, !tbaa !24, !range !30, !noundef !31
  %309 = trunc nuw i8 %308 to i1
  br i1 %309, label %310, label %316

310:                                              ; preds = %305, %.lr.ph837.us.us.us.new
  %311 = load ptr, ptr %960, align 8, !tbaa !20
  %312 = getelementptr inbounds double, ptr %311, i64 %.5637835.us.us.us
  %313 = load double, ptr %312, align 8, !tbaa !22
  %314 = fmul double %313, %313
  %315 = fmul double %314, %314
  store double %315, ptr %312, align 8, !tbaa !22
  br label %316

316:                                              ; preds = %310, %305
  %317 = add nsw i64 %.5637835.us.us.us, 1
  br i1 %993, label %323, label %318

318:                                              ; preds = %316
  %319 = load ptr, ptr %959, align 8, !tbaa !20
  %320 = getelementptr inbounds i8, ptr %319, i64 %317
  %321 = load i8, ptr %320, align 1, !tbaa !24, !range !30, !noundef !31
  %322 = trunc nuw i8 %321 to i1
  br i1 %322, label %323, label %329

323:                                              ; preds = %318, %316
  %324 = load ptr, ptr %960, align 8, !tbaa !20
  %325 = getelementptr inbounds double, ptr %324, i64 %317
  %326 = load double, ptr %325, align 8, !tbaa !22
  %327 = fmul double %326, %326
  %328 = fmul double %327, %327
  store double %328, ptr %325, align 8, !tbaa !22
  br label %329

329:                                              ; preds = %323, %318
  %330 = add nsw i64 %.5637835.us.us.us, 2
  %exitcond908.not.1 = icmp eq i64 %330, %271
  br i1 %exitcond908.not.1, label %._crit_edge838.us.us.us, label %.lr.ph837.us.us.us.new, !llvm.loop !33

.lr.ph832.us.us.us.new:                           ; preds = %.prol.loopexit, %355
  %.9830.us.us.us = phi i64 [ %356, %355 ], [ %.9830.us.us.us.unr, %.prol.loopexit ]
  br i1 %993, label %336, label %331

331:                                              ; preds = %.lr.ph832.us.us.us.new
  %332 = load ptr, ptr %942, align 8, !tbaa !20
  %333 = getelementptr inbounds i8, ptr %332, i64 %.9830.us.us.us
  %334 = load i8, ptr %333, align 1, !tbaa !24, !range !30, !noundef !31
  %335 = trunc nuw i8 %334 to i1
  br i1 %335, label %336, label %342

336:                                              ; preds = %331, %.lr.ph832.us.us.us.new
  %337 = load ptr, ptr %943, align 8, !tbaa !20
  %338 = getelementptr inbounds double, ptr %337, i64 %.9830.us.us.us
  %339 = load double, ptr %338, align 8, !tbaa !22
  %340 = fmul double %339, %339
  %341 = fmul double %340, %340
  store double %341, ptr %338, align 8, !tbaa !22
  br label %342

342:                                              ; preds = %336, %331
  %343 = add nsw i64 %.9830.us.us.us, 1
  br i1 %993, label %349, label %344

344:                                              ; preds = %342
  %345 = load ptr, ptr %942, align 8, !tbaa !20
  %346 = getelementptr inbounds i8, ptr %345, i64 %343
  %347 = load i8, ptr %346, align 1, !tbaa !24, !range !30, !noundef !31
  %348 = trunc nuw i8 %347 to i1
  br i1 %348, label %349, label %355

349:                                              ; preds = %344, %342
  %350 = load ptr, ptr %943, align 8, !tbaa !20
  %351 = getelementptr inbounds double, ptr %350, i64 %343
  %352 = load double, ptr %351, align 8, !tbaa !22
  %353 = fmul double %352, %352
  %354 = fmul double %353, %353
  store double %354, ptr %351, align 8, !tbaa !22
  br label %355

355:                                              ; preds = %349, %344
  %356 = add nsw i64 %.9830.us.us.us, 2
  %exitcond907.not.1 = icmp eq i64 %356, %266
  br i1 %exitcond907.not.1, label %._crit_edge833.us.us.us, label %.lr.ph832.us.us.us.new, !llvm.loop !34

.loopexit697.us.us.us:                            ; preds = %.prol.loopexit1004, %303, %._crit_edge838.us.us.us, %._crit_edge828.us.us.us
  %357 = add nuw nsw i64 %.1649844.us.us.us, 1
  %exitcond910.not = icmp eq i64 %357, %740
  br i1 %exitcond910.not, label %._crit_edge847.us.us.us, label %257, !llvm.loop !35

.lr.ph827.split.us881.us.us:                      ; preds = %.lr.ph827.us.us.us, %._crit_edge823.us.us.us
  %358 = phi ptr [ %364, %._crit_edge823.us.us.us ], [ %258, %.lr.ph827.us.us.us ]
  %359 = phi ptr [ %365, %._crit_edge823.us.us.us ], [ %935, %.lr.ph827.us.us.us ]
  %.4646825.us860.us.us = phi i64 [ %366, %._crit_edge823.us.us.us ], [ %260, %.lr.ph827.us.us.us ]
  %360 = getelementptr inbounds i64, ptr %359, i64 %.0654858.us.us.us
  %361 = load i64, ptr %360, align 8, !tbaa !21
  %362 = getelementptr inbounds i64, ptr %359, i64 %100
  %363 = load i64, ptr %362, align 8, !tbaa !21
  %.not677.not819.us.us.us = icmp slt i64 %361, %363
  br i1 %.not677.not819.us.us.us, label %.lr.ph822.us.us.us, label %._crit_edge823.us.us.us

._crit_edge823.us.us.us.loopexit:                 ; preds = %.loopexit.us.us.us
  %.pre923 = load ptr, ptr %56, align 8, !tbaa !20
  br label %._crit_edge823.us.us.us

._crit_edge823.us.us.us:                          ; preds = %._crit_edge823.us.us.us.loopexit, %.lr.ph827.split.us881.us.us
  %364 = phi ptr [ %.pre923, %._crit_edge823.us.us.us.loopexit ], [ %358, %.lr.ph827.split.us881.us.us ]
  %365 = phi ptr [ %500, %._crit_edge823.us.us.us.loopexit ], [ %359, %.lr.ph827.split.us881.us.us ]
  %366 = add nsw i64 %.4646825.us860.us.us, 1
  %367 = getelementptr inbounds i64, ptr %364, i64 %99
  %368 = load i64, ptr %367, align 8, !tbaa !21
  %.not.not673.us861.us.us = icmp slt i64 %366, %368
  br i1 %.not.not673.us861.us.us, label %.lr.ph827.split.us881.us.us, label %._crit_edge828.us.us.us, !llvm.loop !36

369:                                              ; preds = %.lr.ph822.us.us.us, %.loopexit.us.us.us
  %370 = phi ptr [ %359, %.lr.ph822.us.us.us ], [ %500, %.loopexit.us.us.us ]
  %.4636820.us.us.us = phi i64 [ %361, %.lr.ph822.us.us.us ], [ %499, %.loopexit.us.us.us ]
  br i1 %993, label %385, label %371

371:                                              ; preds = %369
  %372 = load ptr, ptr %928, align 8, !tbaa !20
  %373 = getelementptr inbounds i64, ptr %370, i64 %.0654858.us.us.us
  %374 = load i64, ptr %373, align 8, !tbaa !21
  %375 = sub nsw i64 %.4636820.us.us.us, %374
  %376 = load ptr, ptr %56, align 8, !tbaa !20
  %377 = getelementptr inbounds i64, ptr %376, i64 %.0655883.us.us
  %378 = load i64, ptr %377, align 8, !tbaa !21
  %379 = sub nsw i64 %.4646825.us860.us.us, %378
  %380 = mul nsw i64 %379, %107
  %381 = getelementptr i8, ptr %372, i64 %375
  %382 = getelementptr i8, ptr %381, i64 %380
  %383 = load i8, ptr %382, align 1, !tbaa !24, !range !30, !noundef !31
  %384 = trunc nuw i8 %383 to i1
  br i1 %384, label %385, label %.loopexit.us.us.us

385:                                              ; preds = %371, %369
  %386 = load ptr, ptr %38, align 8, !tbaa !20
  %387 = getelementptr inbounds i64, ptr %386, i64 %.0652853.us.us.us
  %388 = load i64, ptr %387, align 8, !tbaa !21
  %reass.add.us.us.us = add i64 %.4636820.us.us.us, %929
  %reass.mul.us.us.us = mul i64 %reass.add.us.us.us, %2
  %389 = add i64 %388, %reass.mul.us.us.us
  %390 = mul nsw i64 %389, %29
  %391 = load ptr, ptr %930, align 8, !tbaa !20
  %392 = getelementptr inbounds double, ptr %391, i64 %.4636820.us.us.us
  %393 = load double, ptr %392, align 8, !tbaa !22
  %394 = load ptr, ptr %931, align 8, !tbaa !20
  %395 = getelementptr inbounds double, ptr %394, i64 %.4646825.us860.us.us
  %396 = load double, ptr %395, align 8, !tbaa !22
  %397 = fmul double %393, %396
  %398 = load i64, ptr %0, align 8, !tbaa !18
  switch i64 %398, label %.preheader.us.us.us [
    i64 1, label %458
    i64 2, label %432
    i64 3, label %399
  ]

399:                                              ; preds = %385
  %400 = load ptr, ptr %97, align 8, !tbaa !20
  %401 = getelementptr inbounds ptr, ptr %400, i64 %233
  %402 = load ptr, ptr %401, align 8, !tbaa !23
  %403 = getelementptr inbounds i8, ptr %402, i64 %.idx.us.us.us
  %404 = getelementptr inbounds i8, ptr %403, i64 8
  %405 = load double, ptr %404, align 8, !tbaa !22
  %406 = getelementptr inbounds i8, ptr %403, i64 16
  %407 = load double, ptr %406, align 8, !tbaa !22
  %408 = getelementptr inbounds i8, ptr %403, i64 24
  %409 = load double, ptr %408, align 8, !tbaa !22
  %410 = getelementptr inbounds i64, ptr %386, i64 %158
  %411 = load i64, ptr %410, align 8, !tbaa !21
  %.not680.not795.us.us.us = icmp slt i64 %388, %411
  br i1 %.not680.not795.us.us.us, label %.lr.ph799.us.us.us, label %.loopexit.us.us.us

.lr.ph799.us.us.us:                               ; preds = %399, %.lr.ph799.us.us.us
  %.7797.us.us.us = phi i64 [ %431, %.lr.ph799.us.us.us ], [ %388, %399 ]
  %.2640796.us.us.us = phi i64 [ %430, %.lr.ph799.us.us.us ], [ %390, %399 ]
  %412 = load ptr, ptr %932, align 8, !tbaa !20
  %413 = getelementptr inbounds double, ptr %412, i64 %.7797.us.us.us
  %414 = load double, ptr %413, align 8, !tbaa !22
  %415 = fmul double %397, %414
  %416 = load ptr, ptr %95, align 8, !tbaa !20
  %417 = getelementptr inbounds double, ptr %416, i64 %.2640796.us.us.us
  %418 = load double, ptr %417, align 8, !tbaa !22
  %419 = call double @llvm.fmuladd.f64(double %415, double %405, double %418)
  store double %419, ptr %417, align 8, !tbaa !22
  %420 = load ptr, ptr %95, align 8, !tbaa !20
  %421 = getelementptr double, ptr %420, i64 %.2640796.us.us.us
  %422 = getelementptr i8, ptr %421, i64 8
  %423 = load double, ptr %422, align 8, !tbaa !22
  %424 = call double @llvm.fmuladd.f64(double %415, double %407, double %423)
  store double %424, ptr %422, align 8, !tbaa !22
  %425 = load ptr, ptr %95, align 8, !tbaa !20
  %426 = getelementptr double, ptr %425, i64 %.2640796.us.us.us
  %427 = getelementptr i8, ptr %426, i64 16
  %428 = load double, ptr %427, align 8, !tbaa !22
  %429 = call double @llvm.fmuladd.f64(double %415, double %409, double %428)
  store double %429, ptr %427, align 8, !tbaa !22
  %430 = add nsw i64 %.2640796.us.us.us, 3
  %431 = add nsw i64 %.7797.us.us.us, 1
  %exitcond903.not = icmp eq i64 %431, %411
  br i1 %exitcond903.not, label %.loopexit.us.us.us, label %.lr.ph799.us.us.us, !llvm.loop !38

432:                                              ; preds = %385
  %433 = load ptr, ptr %97, align 8, !tbaa !20
  %434 = getelementptr inbounds ptr, ptr %433, i64 %233
  %435 = load ptr, ptr %434, align 8, !tbaa !23
  %436 = getelementptr inbounds double, ptr %435, i64 %934
  %437 = load double, ptr %436, align 8, !tbaa !22
  %438 = getelementptr inbounds double, ptr %435, i64 %933
  %439 = getelementptr inbounds i8, ptr %438, i64 16
  %440 = load double, ptr %439, align 8, !tbaa !22
  %441 = getelementptr inbounds i64, ptr %386, i64 %158
  %442 = load i64, ptr %441, align 8, !tbaa !21
  %.not681.not800.us.us.us = icmp slt i64 %388, %442
  br i1 %.not681.not800.us.us.us, label %.lr.ph804.us.us.us, label %.loopexit.us.us.us

.lr.ph804.us.us.us:                               ; preds = %432, %.lr.ph804.us.us.us
  %.6802.us.us.us = phi i64 [ %457, %.lr.ph804.us.us.us ], [ %388, %432 ]
  %.1639801.us.us.us = phi i64 [ %456, %.lr.ph804.us.us.us ], [ %390, %432 ]
  %443 = load ptr, ptr %932, align 8, !tbaa !20
  %444 = getelementptr inbounds double, ptr %443, i64 %.6802.us.us.us
  %445 = load double, ptr %444, align 8, !tbaa !22
  %446 = fmul double %397, %445
  %447 = load ptr, ptr %95, align 8, !tbaa !20
  %448 = getelementptr inbounds double, ptr %447, i64 %.1639801.us.us.us
  %449 = load double, ptr %448, align 8, !tbaa !22
  %450 = call double @llvm.fmuladd.f64(double %446, double %437, double %449)
  store double %450, ptr %448, align 8, !tbaa !22
  %451 = load ptr, ptr %95, align 8, !tbaa !20
  %452 = getelementptr double, ptr %451, i64 %.1639801.us.us.us
  %453 = getelementptr i8, ptr %452, i64 8
  %454 = load double, ptr %453, align 8, !tbaa !22
  %455 = call double @llvm.fmuladd.f64(double %446, double %440, double %454)
  store double %455, ptr %453, align 8, !tbaa !22
  %456 = add nsw i64 %.1639801.us.us.us, 2
  %457 = add nsw i64 %.6802.us.us.us, 1
  %exitcond904.not = icmp eq i64 %457, %442
  br i1 %exitcond904.not, label %.loopexit.us.us.us, label %.lr.ph804.us.us.us, !llvm.loop !39

458:                                              ; preds = %385
  %459 = load ptr, ptr %97, align 8, !tbaa !20
  %460 = getelementptr inbounds ptr, ptr %459, i64 %233
  %461 = load ptr, ptr %460, align 8, !tbaa !23
  %462 = getelementptr inbounds double, ptr %461, i64 %.1649844.us.us.us
  %463 = getelementptr inbounds i8, ptr %462, i64 8
  %464 = load double, ptr %463, align 8, !tbaa !22
  %465 = getelementptr inbounds i64, ptr %386, i64 %158
  %466 = load i64, ptr %465, align 8, !tbaa !21
  %.not682.not805.us.us.us = icmp slt i64 %388, %466
  br i1 %.not682.not805.us.us.us, label %.lr.ph809.us.us.us.preheader, label %.loopexit.us.us.us

.lr.ph809.us.us.us.preheader:                     ; preds = %458
  %467 = sub i64 %466, %388
  %.neg = add i64 %388, 1
  %xtraiter989 = and i64 %467, 1
  %lcmp.mod990.not = icmp eq i64 %xtraiter989, 0
  br i1 %lcmp.mod990.not, label %.lr.ph809.us.us.us.prol.loopexit, label %.lr.ph809.us.us.us.prol

.lr.ph809.us.us.us.prol:                          ; preds = %.lr.ph809.us.us.us.preheader
  %468 = load ptr, ptr %932, align 8, !tbaa !20
  %469 = getelementptr inbounds double, ptr %468, i64 %388
  %470 = load double, ptr %469, align 8, !tbaa !22
  %471 = fmul double %397, %470
  %472 = load ptr, ptr %95, align 8, !tbaa !20
  %473 = getelementptr inbounds double, ptr %472, i64 %390
  %474 = load double, ptr %473, align 8, !tbaa !22
  %475 = call double @llvm.fmuladd.f64(double %471, double %464, double %474)
  store double %475, ptr %473, align 8, !tbaa !22
  %476 = add nsw i64 %390, 1
  %477 = add nsw i64 %388, 1
  br label %.lr.ph809.us.us.us.prol.loopexit

.lr.ph809.us.us.us.prol.loopexit:                 ; preds = %.lr.ph809.us.us.us.prol, %.lr.ph809.us.us.us.preheader
  %.5807.us.us.us.unr = phi i64 [ %388, %.lr.ph809.us.us.us.preheader ], [ %477, %.lr.ph809.us.us.us.prol ]
  %.0638806.us.us.us.unr = phi i64 [ %390, %.lr.ph809.us.us.us.preheader ], [ %476, %.lr.ph809.us.us.us.prol ]
  %478 = icmp eq i64 %466, %.neg
  br i1 %478, label %.loopexit.us.us.us, label %.lr.ph809.us.us.us

.lr.ph809.us.us.us:                               ; preds = %.lr.ph809.us.us.us.prol.loopexit, %.lr.ph809.us.us.us
  %.5807.us.us.us = phi i64 [ %498, %.lr.ph809.us.us.us ], [ %.5807.us.us.us.unr, %.lr.ph809.us.us.us.prol.loopexit ]
  %.0638806.us.us.us = phi i64 [ %497, %.lr.ph809.us.us.us ], [ %.0638806.us.us.us.unr, %.lr.ph809.us.us.us.prol.loopexit ]
  %479 = load ptr, ptr %932, align 8, !tbaa !20
  %480 = getelementptr inbounds double, ptr %479, i64 %.5807.us.us.us
  %481 = load double, ptr %480, align 8, !tbaa !22
  %482 = fmul double %397, %481
  %483 = load ptr, ptr %95, align 8, !tbaa !20
  %484 = getelementptr inbounds double, ptr %483, i64 %.0638806.us.us.us
  %485 = load double, ptr %484, align 8, !tbaa !22
  %486 = call double @llvm.fmuladd.f64(double %482, double %464, double %485)
  store double %486, ptr %484, align 8, !tbaa !22
  %487 = load ptr, ptr %932, align 8, !tbaa !20
  %488 = getelementptr double, ptr %487, i64 %.5807.us.us.us
  %489 = getelementptr i8, ptr %488, i64 8
  %490 = load double, ptr %489, align 8, !tbaa !22
  %491 = fmul double %397, %490
  %492 = load ptr, ptr %95, align 8, !tbaa !20
  %493 = getelementptr double, ptr %492, i64 %.0638806.us.us.us
  %494 = getelementptr i8, ptr %493, i64 8
  %495 = load double, ptr %494, align 8, !tbaa !22
  %496 = call double @llvm.fmuladd.f64(double %491, double %464, double %495)
  store double %496, ptr %494, align 8, !tbaa !22
  %497 = add nsw i64 %.0638806.us.us.us, 2
  %498 = add nsw i64 %.5807.us.us.us, 2
  %exitcond905.not.1 = icmp eq i64 %498, %466
  br i1 %exitcond905.not.1, label %.loopexit.us.us.us, label %.lr.ph809.us.us.us, !llvm.loop !40

.loopexit.us.us.us:                               ; preds = %.lr.ph799.us.us.us, %.lr.ph804.us.us.us, %.lr.ph809.us.us.us.prol.loopexit, %.lr.ph809.us.us.us, %._crit_edge814.us.us.us.us, %.lr.ph818.us.us.us, %399, %432, %458, %.preheader.us.us.us, %371
  %499 = add nsw i64 %.4636820.us.us.us, 1
  %500 = load ptr, ptr %47, align 8, !tbaa !20
  %501 = getelementptr inbounds i64, ptr %500, i64 %100
  %502 = load i64, ptr %501, align 8, !tbaa !21
  %.not677.not.us.us.us = icmp slt i64 %499, %502
  br i1 %.not677.not.us.us.us, label %369, label %._crit_edge823.us.us.us.loopexit, !llvm.loop !41

.lr.ph794.us.us.us:                               ; preds = %._crit_edge790.us.us.us, %524
  %503 = phi ptr [ %.sink943, %524 ], [ %250, %._crit_edge790.us.us.us ]
  %.3645792.us.us.us = phi i64 [ %528, %524 ], [ %253, %._crit_edge790.us.us.us ]
  br i1 %993, label %510, label %504

504:                                              ; preds = %.lr.ph794.us.us.us
  %505 = getelementptr inbounds i8, ptr %503, i64 376
  %506 = load ptr, ptr %505, align 8, !tbaa !20
  %507 = getelementptr inbounds i8, ptr %506, i64 %.3645792.us.us.us
  %508 = load i8, ptr %507, align 1, !tbaa !24, !range !30, !noundef !31
  %509 = trunc nuw i8 %508 to i1
  br i1 %509, label %510, label %524

510:                                              ; preds = %504, %.lr.ph794.us.us.us
  %511 = load ptr, ptr %93, align 8, !tbaa !20
  %512 = getelementptr inbounds double, ptr %511, i64 %.3645792.us.us.us
  %513 = load double, ptr %512, align 8, !tbaa !22
  %514 = getelementptr inbounds i8, ptr %503, i64 120
  %515 = load ptr, ptr %514, align 8, !tbaa !20
  %516 = getelementptr inbounds i8, ptr %515, i64 16
  %517 = load double, ptr %516, align 8, !tbaa !22
  %518 = fsub double %513, %517
  %519 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %518, ptr noundef %22)
  %520 = fneg double %519
  %521 = fdiv double %520, %238
  %522 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %521, ptr noundef %22)
  %523 = load ptr, ptr %25, align 8, !tbaa !23
  br label %524

524:                                              ; preds = %504, %510
  %.sink943 = phi ptr [ %523, %510 ], [ %503, %504 ]
  %.sink = phi double [ %522, %510 ], [ 0.000000e+00, %504 ]
  %525 = getelementptr inbounds i8, ptr %.sink943, i64 632
  %526 = load ptr, ptr %525, align 8, !tbaa !20
  %527 = getelementptr inbounds double, ptr %526, i64 %.3645792.us.us.us
  store double %.sink, ptr %527, align 8, !tbaa !22
  %528 = add nsw i64 %.3645792.us.us.us, 1
  %529 = load ptr, ptr %56, align 8, !tbaa !20
  %530 = getelementptr inbounds i64, ptr %529, i64 %99
  %531 = load i64, ptr %530, align 8, !tbaa !21
  %.not.not671.us.us.us = icmp slt i64 %528, %531
  br i1 %.not.not671.us.us.us, label %.lr.ph794.us.us.us, label %.preheader699.us.us.us, !llvm.loop !42

.lr.ph789.us.us.us:                               ; preds = %._crit_edge785.us.us.us, %553
  %532 = phi ptr [ %.sink948, %553 ], [ %244, %._crit_edge785.us.us.us ]
  %.3635787.us.us.us = phi i64 [ %557, %553 ], [ %247, %._crit_edge785.us.us.us ]
  br i1 %993, label %539, label %533

533:                                              ; preds = %.lr.ph789.us.us.us
  %534 = getelementptr inbounds i8, ptr %532, i64 312
  %535 = load ptr, ptr %534, align 8, !tbaa !20
  %536 = getelementptr inbounds i8, ptr %535, i64 %.3635787.us.us.us
  %537 = load i8, ptr %536, align 1, !tbaa !24, !range !30, !noundef !31
  %538 = trunc nuw i8 %537 to i1
  br i1 %538, label %539, label %553

539:                                              ; preds = %533, %.lr.ph789.us.us.us
  %540 = load ptr, ptr %92, align 8, !tbaa !20
  %541 = getelementptr inbounds double, ptr %540, i64 %.3635787.us.us.us
  %542 = load double, ptr %541, align 8, !tbaa !22
  %543 = getelementptr inbounds i8, ptr %532, i64 120
  %544 = load ptr, ptr %543, align 8, !tbaa !20
  %545 = getelementptr inbounds i8, ptr %544, i64 8
  %546 = load double, ptr %545, align 8, !tbaa !22
  %547 = fsub double %542, %546
  %548 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %547, ptr noundef %22)
  %549 = fneg double %548
  %550 = fdiv double %549, %238
  %551 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %550, ptr noundef %22)
  %552 = load ptr, ptr %25, align 8, !tbaa !23
  br label %553

553:                                              ; preds = %533, %539
  %.sink948 = phi ptr [ %552, %539 ], [ %532, %533 ]
  %.sink944 = phi double [ %551, %539 ], [ 0.000000e+00, %533 ]
  %554 = getelementptr inbounds i8, ptr %.sink948, i64 568
  %555 = load ptr, ptr %554, align 8, !tbaa !20
  %556 = getelementptr inbounds double, ptr %555, i64 %.3635787.us.us.us
  store double %.sink944, ptr %556, align 8, !tbaa !22
  %557 = add nsw i64 %.3635787.us.us.us, 1
  %558 = load ptr, ptr %47, align 8, !tbaa !20
  %559 = getelementptr inbounds i64, ptr %558, i64 %100
  %560 = load i64, ptr %559, align 8, !tbaa !21
  %.not.not670.us.us.us = icmp slt i64 %557, %560
  br i1 %.not.not670.us.us.us, label %.lr.ph789.us.us.us, label %._crit_edge790.us.us.us, !llvm.loop !43

.lr.ph784.us.us.us:                               ; preds = %207, %580
  %.4631782.us.us.us = phi i64 [ %584, %580 ], [ %241, %207 ]
  %.pre922 = load ptr, ptr %25, align 8, !tbaa !23
  br i1 %993, label %567, label %561

561:                                              ; preds = %.lr.ph784.us.us.us
  %562 = getelementptr inbounds i8, ptr %.pre922, i64 248
  %563 = load ptr, ptr %562, align 8, !tbaa !20
  %564 = getelementptr inbounds i8, ptr %563, i64 %.4631782.us.us.us
  %565 = load i8, ptr %564, align 1, !tbaa !24, !range !30, !noundef !31
  %566 = trunc nuw i8 %565 to i1
  br i1 %566, label %567, label %580

567:                                              ; preds = %561, %.lr.ph784.us.us.us
  %568 = load ptr, ptr %91, align 8, !tbaa !20
  %569 = getelementptr inbounds double, ptr %568, i64 %.4631782.us.us.us
  %570 = load double, ptr %569, align 8, !tbaa !22
  %571 = getelementptr inbounds i8, ptr %.pre922, i64 120
  %572 = load ptr, ptr %571, align 8, !tbaa !20
  %573 = load double, ptr %572, align 8, !tbaa !22
  %574 = fsub double %570, %573
  %575 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %574, ptr noundef %22)
  %576 = fneg double %575
  %577 = fdiv double %576, %238
  %578 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %577, ptr noundef %22)
  %579 = load ptr, ptr %25, align 8, !tbaa !23
  br label %580

580:                                              ; preds = %561, %567
  %.sink953 = phi ptr [ %579, %567 ], [ %.pre922, %561 ]
  %.sink949 = phi double [ %578, %567 ], [ 0.000000e+00, %561 ]
  %581 = getelementptr inbounds i8, ptr %.sink953, i64 504
  %582 = load ptr, ptr %581, align 8, !tbaa !20
  %583 = getelementptr inbounds double, ptr %582, i64 %.4631782.us.us.us
  store double %.sink949, ptr %583, align 8, !tbaa !22
  %584 = add nsw i64 %.4631782.us.us.us, 1
  %585 = load ptr, ptr %38, align 8, !tbaa !20
  %586 = getelementptr inbounds i64, ptr %585, i64 %158
  %587 = load i64, ptr %586, align 8, !tbaa !21
  %.not.not669.us.us.us = icmp slt i64 %584, %587
  br i1 %.not.not669.us.us.us, label %.lr.ph784.us.us.us, label %._crit_edge785.us.us.us, !llvm.loop !44

588:                                              ; preds = %.lr.ph779.us.us.us, %._crit_edge776.us.us.us
  %589 = phi ptr [ %147, %.lr.ph779.us.us.us ], [ %595, %._crit_edge776.us.us.us ]
  %590 = phi ptr [ %.pre920, %.lr.ph779.us.us.us ], [ %596, %._crit_edge776.us.us.us ]
  %.2644778.us.us.us = phi i64 [ %149, %.lr.ph779.us.us.us ], [ %597, %._crit_edge776.us.us.us ]
  %591 = getelementptr inbounds i64, ptr %590, i64 %.0654858.us.us.us
  %592 = load i64, ptr %591, align 8, !tbaa !21
  %593 = getelementptr inbounds i64, ptr %590, i64 %100
  %594 = load i64, ptr %593, align 8, !tbaa !21
  %.not683.not769.us.us.us = icmp slt i64 %592, %594
  br i1 %.not683.not769.us.us.us, label %.lr.ph775.us.us.us, label %._crit_edge776.us.us.us

._crit_edge776.us.us.us.loopexit:                 ; preds = %.loopexit698.us.us.us
  %.pre921 = load ptr, ptr %56, align 8, !tbaa !20
  br label %._crit_edge776.us.us.us

._crit_edge776.us.us.us:                          ; preds = %._crit_edge776.us.us.us.loopexit, %588
  %595 = phi ptr [ %.pre921, %._crit_edge776.us.us.us.loopexit ], [ %589, %588 ]
  %596 = phi ptr [ %623, %._crit_edge776.us.us.us.loopexit ], [ %590, %588 ]
  %597 = add nsw i64 %.2644778.us.us.us, 1
  %598 = getelementptr inbounds i64, ptr %595, i64 %99
  %599 = load i64, ptr %598, align 8, !tbaa !21
  %.not.not667.us.us.us = icmp slt i64 %597, %599
  br i1 %.not.not667.us.us.us, label %588, label %._crit_edge780.us.us.us, !llvm.loop !45

600:                                              ; preds = %.lr.ph775.us.us.us, %.loopexit698.us.us.us
  %601 = phi ptr [ %590, %.lr.ph775.us.us.us ], [ %623, %.loopexit698.us.us.us ]
  %.2634770.us.us.us = phi i64 [ %592, %.lr.ph775.us.us.us ], [ %622, %.loopexit698.us.us.us ]
  br i1 %877, label %616, label %602

602:                                              ; preds = %600
  %603 = load ptr, ptr %874, align 8, !tbaa !20
  %604 = getelementptr inbounds i64, ptr %601, i64 %.0654858.us.us.us
  %605 = load i64, ptr %604, align 8, !tbaa !21
  %606 = sub nsw i64 %.2634770.us.us.us, %605
  %607 = load ptr, ptr %56, align 8, !tbaa !20
  %608 = getelementptr inbounds i64, ptr %607, i64 %.0655883.us.us
  %609 = load i64, ptr %608, align 8, !tbaa !21
  %610 = sub nsw i64 %.2644778.us.us.us, %609
  %611 = mul nsw i64 %610, %107
  %612 = getelementptr i8, ptr %603, i64 %606
  %613 = getelementptr i8, ptr %612, i64 %611
  %614 = load i8, ptr %613, align 1, !tbaa !24, !range !30, !noundef !31
  %615 = trunc nuw i8 %614 to i1
  br i1 %615, label %616, label %.loopexit698.us.us.us

616:                                              ; preds = %602, %600
  %617 = load ptr, ptr %38, align 8, !tbaa !20
  %618 = getelementptr i64, ptr %617, i64 %.0652853.us.us.us
  %619 = load i64, ptr %618, align 8, !tbaa !21
  %620 = getelementptr i8, ptr %618, i64 8
  %621 = load i64, ptr %620, align 8, !tbaa !21
  %.not684.not761.us.us.us = icmp slt i64 %619, %621
  br i1 %.not684.not761.us.us.us, label %.lr.ph764.us.us.us, label %.loopexit698.us.us.us

.loopexit698.us.us.us:                            ; preds = %.lr.ph764.split.us872.us.us, %._crit_edge760.split.us767.us.us.us, %._crit_edge760.split.us.us.us.us.us.us, %616, %602
  %622 = add nsw i64 %.2634770.us.us.us, 1
  %623 = load ptr, ptr %47, align 8, !tbaa !20
  %624 = getelementptr inbounds i64, ptr %623, i64 %100
  %625 = load i64, ptr %624, align 8, !tbaa !21
  %.not683.not.us.us.us = icmp slt i64 %622, %625
  br i1 %.not683.not.us.us.us, label %600, label %._crit_edge776.us.us.us.loopexit, !llvm.loop !46

.lr.ph764.split.us872.us.us:                      ; preds = %.lr.ph764.us.us.us, %.lr.ph764.split.us872.us.us
  %.3630762.us865.us.us = phi i64 [ %640, %.lr.ph764.split.us872.us.us ], [ %619, %.lr.ph764.us.us.us ]
  %626 = load ptr, ptr %91, align 8, !tbaa !20
  %627 = getelementptr inbounds double, ptr %626, i64 %.3630762.us865.us.us
  %628 = load double, ptr %627, align 8, !tbaa !22
  %629 = load ptr, ptr %875, align 8, !tbaa !20
  store double %628, ptr %629, align 8, !tbaa !22
  %630 = load ptr, ptr %92, align 8, !tbaa !20
  %631 = getelementptr inbounds double, ptr %630, i64 %.2634770.us.us.us
  %632 = load double, ptr %631, align 8, !tbaa !22
  %633 = load ptr, ptr %875, align 8, !tbaa !20
  %634 = getelementptr inbounds i8, ptr %633, i64 8
  store double %632, ptr %634, align 8, !tbaa !22
  %635 = load ptr, ptr %93, align 8, !tbaa !20
  %636 = getelementptr inbounds double, ptr %635, i64 %.2644778.us.us.us
  %637 = load double, ptr %636, align 8, !tbaa !22
  %638 = load ptr, ptr %875, align 8, !tbaa !20
  %639 = getelementptr inbounds i8, ptr %638, i64 16
  store double %637, ptr %639, align 8, !tbaa !22
  %640 = add nsw i64 %.3630762.us865.us.us, 1
  %641 = load ptr, ptr %38, align 8, !tbaa !20
  %642 = getelementptr i64, ptr %641, i64 %.0652853.us.us.us
  %643 = getelementptr i8, ptr %642, i64 8
  %644 = load i64, ptr %643, align 8, !tbaa !21
  %.not684.not.us866.us.us = icmp slt i64 %640, %644
  br i1 %.not684.not.us866.us.us, label %.lr.ph764.split.us872.us.us, label %.loopexit698.us.us.us, !llvm.loop !47

.lr.ph745.us.us.us:                               ; preds = %.lr.ph745.us.us.us.preheader, %._crit_edge734.us.us.us
  %645 = phi ptr [ %652, %._crit_edge734.us.us.us ], [ %142, %.lr.ph745.us.us.us.preheader ]
  %646 = phi ptr [ %653, %._crit_edge734.us.us.us ], [ %.pre915, %.lr.ph745.us.us.us.preheader ]
  %647 = phi ptr [ %654, %._crit_edge734.us.us.us ], [ %.pre915, %.lr.ph745.us.us.us.preheader ]
  %.0743.us.us.us = phi i1 [ %.1.lcssa.us.us.us, %._crit_edge734.us.us.us ], [ false, %.lr.ph745.us.us.us.preheader ]
  %.0622742.us.us.us = phi i8 [ %.1623.lcssa.us.us.us, %._crit_edge734.us.us.us ], [ 1, %.lr.ph745.us.us.us.preheader ]
  %.1643740.us.us.us = phi i64 [ %655, %._crit_edge734.us.us.us ], [ %144, %.lr.ph745.us.us.us.preheader ]
  %648 = getelementptr inbounds i64, ptr %647, i64 %.0654858.us.us.us
  %649 = load i64, ptr %648, align 8, !tbaa !21
  %factor.op.mul.reass.us.us.us = mul i64 %factor.op.mul738, %.1643740.us.us.us
  %650 = getelementptr inbounds i64, ptr %647, i64 %100
  %651 = load i64, ptr %650, align 8, !tbaa !21
  %.not687.not728.us.us.us = icmp slt i64 %649, %651
  br i1 %.not687.not728.us.us.us, label %.lr.ph733.us.us.us, label %._crit_edge734.us.us.us

._crit_edge734.us.us.us.loopexit:                 ; preds = %._crit_edge725.us.us.us
  %.pre918 = load ptr, ptr %56, align 8, !tbaa !20
  br label %._crit_edge734.us.us.us

._crit_edge734.us.us.us:                          ; preds = %.lr.ph733.us.us.us, %._crit_edge734.us.us.us.loopexit, %.lr.ph745.us.us.us
  %652 = phi ptr [ %645, %.lr.ph745.us.us.us ], [ %.pre918, %._crit_edge734.us.us.us.loopexit ], [ %645, %.lr.ph733.us.us.us ]
  %653 = phi ptr [ %646, %.lr.ph745.us.us.us ], [ %675, %._crit_edge734.us.us.us.loopexit ], [ %646, %.lr.ph733.us.us.us ]
  %654 = phi ptr [ %647, %.lr.ph745.us.us.us ], [ %675, %._crit_edge734.us.us.us.loopexit ], [ %647, %.lr.ph733.us.us.us ]
  %.1623.lcssa.us.us.us = phi i8 [ %.0622742.us.us.us, %.lr.ph745.us.us.us ], [ %.2624.lcssa.us.us.us, %._crit_edge734.us.us.us.loopexit ], [ %.0622742.us.us.us, %.lr.ph733.us.us.us ]
  %.1.lcssa.us.us.us = phi i1 [ %.0743.us.us.us, %.lr.ph745.us.us.us ], [ %.2.lcssa.us.us.us, %._crit_edge734.us.us.us.loopexit ], [ %.0743.us.us.us, %.lr.ph733.us.us.us ]
  %655 = add nsw i64 %.1643740.us.us.us, 1
  %656 = getelementptr inbounds i64, ptr %652, i64 %99
  %657 = load i64, ptr %656, align 8, !tbaa !21
  %.not.not666.us.us.us = icmp slt i64 %655, %657
  br i1 %.not.not666.us.us.us, label %.lr.ph745.us.us.us, label %._crit_edge746.us.us.us, !llvm.loop !48

.lr.ph733.split.us870.us.us:                      ; preds = %.lr.ph733.us.us.us, %._crit_edge725.us.us.us
  %658 = phi ptr [ %675, %._crit_edge725.us.us.us ], [ %646, %.lr.ph733.us.us.us ]
  %659 = phi ptr [ %676, %._crit_edge725.us.us.us ], [ %756, %.lr.ph733.us.us.us ]
  %660 = phi ptr [ %677, %._crit_edge725.us.us.us ], [ %756, %.lr.ph733.us.us.us ]
  %661 = phi ptr [ %675, %._crit_edge725.us.us.us ], [ %647, %.lr.ph733.us.us.us ]
  %.1731.us.us.us = phi i1 [ %.2.lcssa.us.us.us, %._crit_edge725.us.us.us ], [ %.0743.us.us.us, %.lr.ph733.us.us.us ]
  %.1623730.us.us.us = phi i8 [ %.2624.lcssa.us.us.us, %._crit_edge725.us.us.us ], [ %.0622742.us.us.us, %.lr.ph733.us.us.us ]
  %.1633729.us867.us.us = phi i64 [ %678, %._crit_edge725.us.us.us ], [ %649, %.lr.ph733.us.us.us ]
  %662 = getelementptr inbounds i64, ptr %661, i64 %.0654858.us.us.us
  %663 = load i64, ptr %662, align 8, !tbaa !21
  %664 = sub nsw i64 %.1633729.us867.us.us, %663
  %665 = load ptr, ptr %56, align 8, !tbaa !20
  %666 = getelementptr inbounds i64, ptr %665, i64 %.0655883.us.us
  %667 = load i64, ptr %666, align 8, !tbaa !21
  %668 = sub nsw i64 %.1643740.us.us.us, %667
  %669 = mul nsw i64 %668, %107
  %670 = mul nsw i64 %.1633729.us867.us.us, %2
  %671 = getelementptr inbounds i64, ptr %660, i64 %.0652853.us.us.us
  %672 = load i64, ptr %671, align 8, !tbaa !21
  %673 = getelementptr inbounds i64, ptr %660, i64 %126
  %674 = load i64, ptr %673, align 8, !tbaa !21
  %.not688.not719.us.us.us = icmp slt i64 %672, %674
  br i1 %.not688.not719.us.us.us, label %.lr.ph724.us.us.us, label %._crit_edge725.us.us.us

._crit_edge725.us.us.us.loopexit:                 ; preds = %699
  %.pre917 = load ptr, ptr %47, align 8, !tbaa !20
  br label %._crit_edge725.us.us.us

._crit_edge725.us.us.us:                          ; preds = %._crit_edge725.us.us.us.loopexit, %.lr.ph733.split.us870.us.us
  %675 = phi ptr [ %658, %.lr.ph733.split.us870.us.us ], [ %.pre917, %._crit_edge725.us.us.us.loopexit ]
  %676 = phi ptr [ %659, %.lr.ph733.split.us870.us.us ], [ %700, %._crit_edge725.us.us.us.loopexit ]
  %677 = phi ptr [ %660, %.lr.ph733.split.us870.us.us ], [ %700, %._crit_edge725.us.us.us.loopexit ]
  %.2624.lcssa.us.us.us = phi i8 [ %.1623730.us.us.us, %.lr.ph733.split.us870.us.us ], [ %.3625.us.us.us, %._crit_edge725.us.us.us.loopexit ]
  %.2.lcssa.us.us.us = phi i1 [ %.1731.us.us.us, %.lr.ph733.split.us870.us.us ], [ %.3.us.us.us, %._crit_edge725.us.us.us.loopexit ]
  %678 = add nsw i64 %.1633729.us867.us.us, 1
  %679 = getelementptr inbounds i64, ptr %675, i64 %100
  %680 = load i64, ptr %679, align 8, !tbaa !21
  %.not687.not.us868.us.us = icmp slt i64 %678, %680
  br i1 %.not687.not.us868.us.us, label %.lr.ph733.split.us870.us.us, label %._crit_edge734.us.us.us.loopexit, !llvm.loop !49

681:                                              ; preds = %.lr.ph724.us.us.us, %699
  %682 = phi ptr [ %659, %.lr.ph724.us.us.us ], [ %700, %699 ]
  %.2722.us.us.us = phi i1 [ %.1731.us.us.us, %.lr.ph724.us.us.us ], [ %.3.us.us.us, %699 ]
  %.2624721.us.us.us = phi i8 [ %.1623730.us.us.us, %.lr.ph724.us.us.us ], [ %.3625.us.us.us, %699 ]
  %.2629720.us.us.us = phi i64 [ %672, %.lr.ph724.us.us.us ], [ %701, %699 ]
  %683 = load ptr, ptr %90, align 8, !tbaa !20
  %684 = getelementptr i8, ptr %683, i64 %670
  %685 = getelementptr i8, ptr %684, i64 %factor.op.mul.reass.us.us.us
  %686 = getelementptr i8, ptr %685, i64 %.2629720.us.us.us
  %687 = load i8, ptr %686, align 1, !tbaa !24, !range !30, !noundef !31
  %688 = trunc nuw i8 %687 to i1
  br i1 %688, label %689, label %699

689:                                              ; preds = %681
  %690 = load ptr, ptr %752, align 8, !tbaa !20
  %691 = getelementptr inbounds i8, ptr %690, i64 %.2629720.us.us.us
  store i8 1, ptr %691, align 1, !tbaa !24
  %692 = load ptr, ptr %753, align 8, !tbaa !20
  %693 = getelementptr inbounds i8, ptr %692, i64 %.1633729.us867.us.us
  store i8 1, ptr %693, align 1, !tbaa !24
  %694 = load ptr, ptr %754, align 8, !tbaa !20
  %695 = getelementptr inbounds i8, ptr %694, i64 %.1643740.us.us.us
  store i8 1, ptr %695, align 1, !tbaa !24
  %696 = load ptr, ptr %755, align 8, !tbaa !20
  %697 = getelementptr i8, ptr %696, i64 %664
  %698 = getelementptr i8, ptr %697, i64 %669
  store i8 1, ptr %698, align 1, !tbaa !24
  %.pre916 = load ptr, ptr %38, align 8, !tbaa !20
  br label %699

699:                                              ; preds = %689, %681
  %700 = phi ptr [ %.pre916, %689 ], [ %682, %681 ]
  %.3625.us.us.us = phi i8 [ %.2624721.us.us.us, %689 ], [ 0, %681 ]
  %.3.us.us.us = phi i1 [ true, %689 ], [ %.2722.us.us.us, %681 ]
  %701 = add nsw i64 %.2629720.us.us.us, 1
  %702 = getelementptr inbounds i64, ptr %700, i64 %126
  %703 = load i64, ptr %702, align 8, !tbaa !21
  %.not688.not.us.us.us = icmp slt i64 %701, %703
  br i1 %.not688.not.us.us.us, label %681, label %._crit_edge725.us.us.us.loopexit, !llvm.loop !50

704:                                              ; preds = %704, %.lr.ph717.us.us.us.new
  %.1628716.us.us.us = phi i64 [ 0, %.lr.ph717.us.us.us.new ], [ %716, %704 ]
  %niter = phi i64 [ 0, %.lr.ph717.us.us.us.new ], [ %niter.next.3, %704 ]
  %705 = load ptr, ptr %749, align 8, !tbaa !20
  %706 = getelementptr inbounds i8, ptr %705, i64 %.1628716.us.us.us
  store i8 0, ptr %706, align 1, !tbaa !24
  %707 = or disjoint i64 %.1628716.us.us.us, 1
  %708 = load ptr, ptr %749, align 8, !tbaa !20
  %709 = getelementptr inbounds i8, ptr %708, i64 %707
  store i8 0, ptr %709, align 1, !tbaa !24
  %710 = or disjoint i64 %.1628716.us.us.us, 2
  %711 = load ptr, ptr %749, align 8, !tbaa !20
  %712 = getelementptr inbounds i8, ptr %711, i64 %710
  store i8 0, ptr %712, align 1, !tbaa !24
  %713 = or disjoint i64 %.1628716.us.us.us, 3
  %714 = load ptr, ptr %749, align 8, !tbaa !20
  %715 = getelementptr inbounds i8, ptr %714, i64 %713
  store i8 0, ptr %715, align 1, !tbaa !24
  %716 = add nuw nsw i64 %.1628716.us.us.us, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge718.us.us.us.loopexit.unr-lcssa, label %704, !llvm.loop !51

717:                                              ; preds = %.lr.ph714.us.us.us, %717
  %.0642712.us.us.us = phi i64 [ %136, %.lr.ph714.us.us.us ], [ %720, %717 ]
  %718 = load ptr, ptr %747, align 8, !tbaa !20
  %719 = getelementptr inbounds i8, ptr %718, i64 %.0642712.us.us.us
  store i8 0, ptr %719, align 1, !tbaa !24
  %720 = add nsw i64 %.0642712.us.us.us, 1
  %721 = load ptr, ptr %56, align 8, !tbaa !20
  %722 = getelementptr inbounds i64, ptr %721, i64 %99
  %723 = load i64, ptr %722, align 8, !tbaa !21
  %.not.not664.us.us.us = icmp slt i64 %720, %723
  br i1 %.not.not664.us.us.us, label %717, label %.preheader701.us.us.us, !llvm.loop !52

724:                                              ; preds = %.lr.ph709.us.us.us, %724
  %.0632707.us.us.us = phi i64 [ %131, %.lr.ph709.us.us.us ], [ %727, %724 ]
  %725 = load ptr, ptr %745, align 8, !tbaa !20
  %726 = getelementptr inbounds i8, ptr %725, i64 %.0632707.us.us.us
  store i8 0, ptr %726, align 1, !tbaa !24
  %727 = add nsw i64 %.0632707.us.us.us, 1
  %728 = load ptr, ptr %47, align 8, !tbaa !20
  %729 = getelementptr inbounds i64, ptr %728, i64 %100
  %730 = load i64, ptr %729, align 8, !tbaa !21
  %.not.not663.us.us.us = icmp slt i64 %727, %730
  br i1 %.not.not663.us.us.us, label %724, label %._crit_edge710.us.us.us, !llvm.loop !53

731:                                              ; preds = %.lr.ph.us.us.us, %731
  %.0627705.us.us.us = phi i64 [ %125, %.lr.ph.us.us.us ], [ %734, %731 ]
  %732 = load ptr, ptr %743, align 8, !tbaa !20
  %733 = getelementptr inbounds i8, ptr %732, i64 %.0627705.us.us.us
  store i8 0, ptr %733, align 1, !tbaa !24
  %734 = add nsw i64 %.0627705.us.us.us, 1
  %735 = load ptr, ptr %38, align 8, !tbaa !20
  %736 = getelementptr inbounds i64, ptr %735, i64 %126
  %737 = load i64, ptr %736, align 8, !tbaa !21
  %.not.not662.us.us.us = icmp slt i64 %734, %737
  br i1 %.not.not662.us.us.us, label %731, label %._crit_edge.us.us.us, !llvm.loop !54

.preheader.us.us.us:                              ; preds = %385
  %738 = getelementptr inbounds i64, ptr %386, i64 %158
  %739 = load i64, ptr %738, align 8, !tbaa !21
  %.not678.not815.us.us.us = icmp slt i64 %388, %739
  br i1 %.not678.not815.us.us.us, label %.lr.ph818.us.us.us, label %.loopexit.us.us.us

.preheader699.us.us.us:                           ; preds = %524, %._crit_edge790.us.us.us
  %740 = load i64, ptr %30, align 8, !tbaa !19
  %.not.not672843.us.us.us = icmp sgt i64 %740, 0
  br i1 %.not.not672843.us.us.us, label %.lr.ph846.us.us.us, label %._crit_edge847.us.us.us

.preheader701.us.us.us:                           ; preds = %717, %._crit_edge710.us.us.us
  %741 = phi ptr [ %134, %._crit_edge710.us.us.us ], [ %721, %717 ]
  %.not.not665715.us.us.us = icmp sgt i64 %122, 0
  br i1 %.not.not665715.us.us.us, label %.lr.ph717.us.us.us, label %._crit_edge718.us.us.us

.lr.ph.us.us.us:                                  ; preds = %108
  %742 = load ptr, ptr %25, align 8, !tbaa !23
  %743 = getelementptr inbounds i8, ptr %742, i64 248
  br label %731

.lr.ph709.us.us.us:                               ; preds = %._crit_edge.us.us.us
  %744 = load ptr, ptr %25, align 8, !tbaa !23
  %745 = getelementptr inbounds i8, ptr %744, i64 312
  br label %724

.lr.ph714.us.us.us:                               ; preds = %._crit_edge710.us.us.us
  %746 = load ptr, ptr %25, align 8, !tbaa !23
  %747 = getelementptr inbounds i8, ptr %746, i64 376
  br label %717

.lr.ph717.us.us.us:                               ; preds = %.preheader701.us.us.us
  %748 = load ptr, ptr %25, align 8, !tbaa !23
  %749 = getelementptr inbounds i8, ptr %748, i64 440
  %xtraiter = and i64 %122, 3
  %750 = icmp ult i64 %122, 4
  br i1 %750, label %._crit_edge718.us.us.us.loopexit.unr-lcssa, label %.lr.ph717.us.us.us.new

.lr.ph717.us.us.us.new:                           ; preds = %.lr.ph717.us.us.us
  %unroll_iter = and i64 %122, 9223372036854775804
  br label %704

.lr.ph724.us.us.us:                               ; preds = %.lr.ph733.split.us870.us.us
  %751 = load ptr, ptr %25, align 8
  %752 = getelementptr inbounds i8, ptr %751, i64 248
  %753 = getelementptr inbounds i8, ptr %751, i64 312
  %754 = getelementptr inbounds i8, ptr %751, i64 376
  %755 = getelementptr inbounds i8, ptr %751, i64 440
  br label %681

.lr.ph733.us.us.us:                               ; preds = %.lr.ph745.us.us.us
  %756 = load ptr, ptr %38, align 8, !tbaa !20
  %757 = getelementptr inbounds i64, ptr %756, i64 %.0652853.us.us.us
  %758 = load i64, ptr %757, align 8, !tbaa !21
  %759 = getelementptr inbounds i64, ptr %756, i64 %126
  %760 = load i64, ptr %759, align 8, !tbaa !21
  %761 = icmp slt i64 %758, %760
  br i1 %761, label %.lr.ph733.split.us870.us.us, label %._crit_edge734.us.us.us

.lr.ph764.us.us.us:                               ; preds = %616
  %762 = load i64, ptr %0, align 8, !tbaa !18
  %.not685.not756.us.us.us = icmp sgt i64 %762, 0
  %763 = load i64, ptr @_ZN11alglib_implL10rbfv1_mxnxE, align 8
  %reass.add692.us.us.us = add i64 %.2634770.us.us.us, %876
  %reass.mul693.us.us.us = mul i64 %reass.add692.us.us.us, %2
  br i1 %.not685.not756.us.us.us, label %.lr.ph764.split.us.us.us.us, label %.lr.ph764.split.us872.us.us

.lr.ph764.split.us.us.us.us:                      ; preds = %.lr.ph764.us.us.us
  br i1 %.not686.not749, label %.lr.ph759.us.us.us.us.us, label %.lr.ph759.us.us873.us.us.preheader

.lr.ph759.us.us873.us.us.preheader:               ; preds = %.lr.ph764.split.us.us.us.us
  %xtraiter977 = and i64 %762, 1
  %764 = icmp eq i64 %762, 1
  %unroll_iter980 = and i64 %762, 9223372036854775806
  %lcmp.mod979.not = icmp eq i64 %xtraiter977, 0
  br label %.lr.ph759.us.us873.us.us

.lr.ph759.us.us873.us.us:                         ; preds = %.lr.ph759.us.us873.us.us.preheader, %._crit_edge760.split.us767.us.us.us
  %.3630762.us.us874.us.us = phi i64 [ %807, %._crit_edge760.split.us767.us.us.us ], [ %619, %.lr.ph759.us.us873.us.us.preheader ]
  %765 = load ptr, ptr %91, align 8, !tbaa !20
  %766 = getelementptr inbounds double, ptr %765, i64 %.3630762.us.us874.us.us
  %767 = load double, ptr %766, align 8, !tbaa !22
  %768 = load ptr, ptr %875, align 8, !tbaa !20
  store double %767, ptr %768, align 8, !tbaa !22
  %769 = load ptr, ptr %92, align 8, !tbaa !20
  %770 = getelementptr inbounds double, ptr %769, i64 %.2634770.us.us.us
  %771 = load double, ptr %770, align 8, !tbaa !22
  %772 = load ptr, ptr %875, align 8, !tbaa !20
  %773 = getelementptr inbounds i8, ptr %772, i64 8
  store double %771, ptr %773, align 8, !tbaa !22
  %774 = load ptr, ptr %93, align 8, !tbaa !20
  %775 = getelementptr inbounds double, ptr %774, i64 %.2644778.us.us.us
  %776 = load double, ptr %775, align 8, !tbaa !22
  %777 = load ptr, ptr %875, align 8, !tbaa !20
  %778 = getelementptr inbounds i8, ptr %777, i64 16
  store double %776, ptr %778, align 8, !tbaa !22
  %779 = add i64 %.3630762.us.us874.us.us, %reass.mul693.us.us.us
  %780 = mul nsw i64 %779, %29
  br i1 %764, label %._crit_edge760.split.us767.us.us.us.unr-lcssa, label %.lr.ph759.us.us873.us.us.new

.lr.ph759.us.us873.us.us.new:                     ; preds = %.lr.ph759.us.us873.us.us, %.lr.ph759.us.us873.us.us.new
  %.0650757.us765.us.us.us = phi i64 [ %798, %.lr.ph759.us.us873.us.us.new ], [ 0, %.lr.ph759.us.us873.us.us ]
  %niter981 = phi i64 [ %niter981.next.1, %.lr.ph759.us.us873.us.us.new ], [ 0, %.lr.ph759.us.us873.us.us ]
  %781 = load ptr, ptr %94, align 8, !tbaa !20
  %782 = getelementptr inbounds ptr, ptr %781, i64 %.0650757.us765.us.us.us
  %783 = load ptr, ptr %782, align 8, !tbaa !23
  %784 = getelementptr inbounds double, ptr %783, i64 %763
  %785 = load double, ptr %784, align 8, !tbaa !22
  %786 = load ptr, ptr %95, align 8, !tbaa !20
  %787 = getelementptr double, ptr %786, i64 %.0650757.us765.us.us.us
  %788 = getelementptr double, ptr %787, i64 %780
  store double %785, ptr %788, align 8, !tbaa !22
  %789 = or disjoint i64 %.0650757.us765.us.us.us, 1
  %790 = load ptr, ptr %94, align 8, !tbaa !20
  %791 = getelementptr inbounds ptr, ptr %790, i64 %789
  %792 = load ptr, ptr %791, align 8, !tbaa !23
  %793 = getelementptr inbounds double, ptr %792, i64 %763
  %794 = load double, ptr %793, align 8, !tbaa !22
  %795 = load ptr, ptr %95, align 8, !tbaa !20
  %796 = getelementptr double, ptr %795, i64 %789
  %797 = getelementptr double, ptr %796, i64 %780
  store double %794, ptr %797, align 8, !tbaa !22
  %798 = add nuw nsw i64 %.0650757.us765.us.us.us, 2
  %niter981.next.1 = add i64 %niter981, 2
  %niter981.ncmp.1 = icmp eq i64 %niter981.next.1, %unroll_iter980
  br i1 %niter981.ncmp.1, label %._crit_edge760.split.us767.us.us.us.unr-lcssa, label %.lr.ph759.us.us873.us.us.new, !llvm.loop !55

._crit_edge760.split.us767.us.us.us.unr-lcssa:    ; preds = %.lr.ph759.us.us873.us.us.new, %.lr.ph759.us.us873.us.us
  %.0650757.us765.us.us.us.unr = phi i64 [ 0, %.lr.ph759.us.us873.us.us ], [ %798, %.lr.ph759.us.us873.us.us.new ]
  br i1 %lcmp.mod979.not, label %._crit_edge760.split.us767.us.us.us, label %._crit_edge760.split.us767.us.us.us.epilog-lcssa

._crit_edge760.split.us767.us.us.us.epilog-lcssa: ; preds = %._crit_edge760.split.us767.us.us.us.unr-lcssa
  %799 = load ptr, ptr %94, align 8, !tbaa !20
  %800 = getelementptr inbounds ptr, ptr %799, i64 %.0650757.us765.us.us.us.unr
  %801 = load ptr, ptr %800, align 8, !tbaa !23
  %802 = getelementptr inbounds double, ptr %801, i64 %763
  %803 = load double, ptr %802, align 8, !tbaa !22
  %804 = load ptr, ptr %95, align 8, !tbaa !20
  %805 = getelementptr double, ptr %804, i64 %.0650757.us765.us.us.us.unr
  %806 = getelementptr double, ptr %805, i64 %780
  store double %803, ptr %806, align 8, !tbaa !22
  br label %._crit_edge760.split.us767.us.us.us

._crit_edge760.split.us767.us.us.us:              ; preds = %._crit_edge760.split.us767.us.us.us.unr-lcssa, %._crit_edge760.split.us767.us.us.us.epilog-lcssa
  %807 = add nsw i64 %.3630762.us.us874.us.us, 1
  %808 = load ptr, ptr %38, align 8, !tbaa !20
  %809 = getelementptr i64, ptr %808, i64 %.0652853.us.us.us
  %810 = getelementptr i8, ptr %809, i64 8
  %811 = load i64, ptr %810, align 8, !tbaa !21
  %.not684.not.us.us875.us.us = icmp slt i64 %807, %811
  br i1 %.not684.not.us.us875.us.us, label %.lr.ph759.us.us873.us.us, label %.loopexit698.us.us.us, !llvm.loop !47

.lr.ph759.us.us.us.us.us:                         ; preds = %.lr.ph764.split.us.us.us.us, %._crit_edge760.split.us.us.us.us.us.us
  %.3630762.us.us.us.us.us = phi i64 [ %868, %._crit_edge760.split.us.us.us.us.us.us ], [ %619, %.lr.ph764.split.us.us.us.us ]
  %812 = load ptr, ptr %91, align 8, !tbaa !20
  %813 = getelementptr inbounds double, ptr %812, i64 %.3630762.us.us.us.us.us
  %814 = load double, ptr %813, align 8, !tbaa !22
  %815 = load ptr, ptr %875, align 8, !tbaa !20
  store double %814, ptr %815, align 8, !tbaa !22
  %816 = load ptr, ptr %92, align 8, !tbaa !20
  %817 = getelementptr inbounds double, ptr %816, i64 %.2634770.us.us.us
  %818 = load double, ptr %817, align 8, !tbaa !22
  %819 = load ptr, ptr %875, align 8, !tbaa !20
  %820 = getelementptr inbounds i8, ptr %819, i64 8
  store double %818, ptr %820, align 8, !tbaa !22
  %821 = load ptr, ptr %93, align 8, !tbaa !20
  %822 = getelementptr inbounds double, ptr %821, i64 %.2644778.us.us.us
  %823 = load double, ptr %822, align 8, !tbaa !22
  %824 = load ptr, ptr %875, align 8, !tbaa !20
  %825 = getelementptr inbounds i8, ptr %824, i64 16
  store double %823, ptr %825, align 8, !tbaa !22
  %826 = add i64 %.3630762.us.us.us.us.us, %reass.mul693.us.us.us
  %827 = mul nsw i64 %826, %29
  br label %.lr.ph753.us.us.us.us.us.us

.lr.ph753.us.us.us.us.us.us:                      ; preds = %._crit_edge754.us.us.us.us.us.us, %.lr.ph759.us.us.us.us.us
  %.0650757.us.us.us.us.us.us = phi i64 [ 0, %.lr.ph759.us.us.us.us.us ], [ %867, %._crit_edge754.us.us.us.us.us.us ]
  %828 = load ptr, ptr %94, align 8, !tbaa !20
  %829 = getelementptr inbounds ptr, ptr %828, i64 %.0650757.us.us.us.us.us.us
  %830 = load ptr, ptr %829, align 8, !tbaa !23
  %831 = getelementptr inbounds double, ptr %830, i64 %763
  %832 = load double, ptr %831, align 8, !tbaa !22
  %833 = load ptr, ptr %875, align 8, !tbaa !20
  br i1 %98, label %._crit_edge754.us.us.us.us.us.us.unr-lcssa, label %.lr.ph753.us.us.us.us.us.us.new

.lr.ph753.us.us.us.us.us.us.new:                  ; preds = %.lr.ph753.us.us.us.us.us.us, %.lr.ph753.us.us.us.us.us.us.new
  %.0648751.us.us.us.us.us.us = phi i64 [ %857, %.lr.ph753.us.us.us.us.us.us.new ], [ 0, %.lr.ph753.us.us.us.us.us.us ]
  %.0653750.us.us.us.us.us.us = phi double [ %856, %.lr.ph753.us.us.us.us.us.us.new ], [ %832, %.lr.ph753.us.us.us.us.us.us ]
  %niter988 = phi i64 [ %niter988.next.3, %.lr.ph753.us.us.us.us.us.us.new ], [ 0, %.lr.ph753.us.us.us.us.us.us ]
  %834 = getelementptr inbounds double, ptr %830, i64 %.0648751.us.us.us.us.us.us
  %835 = load double, ptr %834, align 8, !tbaa !22
  %836 = getelementptr inbounds double, ptr %833, i64 %.0648751.us.us.us.us.us.us
  %837 = load double, ptr %836, align 8, !tbaa !22
  %838 = call double @llvm.fmuladd.f64(double %835, double %837, double %.0653750.us.us.us.us.us.us)
  %839 = or disjoint i64 %.0648751.us.us.us.us.us.us, 1
  %840 = getelementptr inbounds double, ptr %830, i64 %839
  %841 = load double, ptr %840, align 8, !tbaa !22
  %842 = getelementptr inbounds double, ptr %833, i64 %839
  %843 = load double, ptr %842, align 8, !tbaa !22
  %844 = call double @llvm.fmuladd.f64(double %841, double %843, double %838)
  %845 = or disjoint i64 %.0648751.us.us.us.us.us.us, 2
  %846 = getelementptr inbounds double, ptr %830, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !22
  %848 = getelementptr inbounds double, ptr %833, i64 %845
  %849 = load double, ptr %848, align 8, !tbaa !22
  %850 = call double @llvm.fmuladd.f64(double %847, double %849, double %844)
  %851 = or disjoint i64 %.0648751.us.us.us.us.us.us, 3
  %852 = getelementptr inbounds double, ptr %830, i64 %851
  %853 = load double, ptr %852, align 8, !tbaa !22
  %854 = getelementptr inbounds double, ptr %833, i64 %851
  %855 = load double, ptr %854, align 8, !tbaa !22
  %856 = call double @llvm.fmuladd.f64(double %853, double %855, double %850)
  %857 = add nuw nsw i64 %.0648751.us.us.us.us.us.us, 4
  %niter988.next.3 = add i64 %niter988, 4
  %niter988.ncmp.3 = icmp eq i64 %niter988.next.3, %unroll_iter987
  br i1 %niter988.ncmp.3, label %._crit_edge754.us.us.us.us.us.us.unr-lcssa, label %.lr.ph753.us.us.us.us.us.us.new, !llvm.loop !56

._crit_edge754.us.us.us.us.us.us.unr-lcssa:       ; preds = %.lr.ph753.us.us.us.us.us.us.new, %.lr.ph753.us.us.us.us.us.us
  %.lcssa973.ph = phi double [ poison, %.lr.ph753.us.us.us.us.us.us ], [ %856, %.lr.ph753.us.us.us.us.us.us.new ]
  %.0648751.us.us.us.us.us.us.unr = phi i64 [ 0, %.lr.ph753.us.us.us.us.us.us ], [ %857, %.lr.ph753.us.us.us.us.us.us.new ]
  %.0653750.us.us.us.us.us.us.unr = phi double [ %832, %.lr.ph753.us.us.us.us.us.us ], [ %856, %.lr.ph753.us.us.us.us.us.us.new ]
  br i1 %lcmp.mod985.not, label %._crit_edge754.us.us.us.us.us.us, label %.epil.preheader982

.epil.preheader982:                               ; preds = %._crit_edge754.us.us.us.us.us.us.unr-lcssa, %.epil.preheader982
  %.0648751.us.us.us.us.us.us.epil = phi i64 [ %863, %.epil.preheader982 ], [ %.0648751.us.us.us.us.us.us.unr, %._crit_edge754.us.us.us.us.us.us.unr-lcssa ]
  %.0653750.us.us.us.us.us.us.epil = phi double [ %862, %.epil.preheader982 ], [ %.0653750.us.us.us.us.us.us.unr, %._crit_edge754.us.us.us.us.us.us.unr-lcssa ]
  %epil.iter984 = phi i64 [ %epil.iter984.next, %.epil.preheader982 ], [ 0, %._crit_edge754.us.us.us.us.us.us.unr-lcssa ]
  %858 = getelementptr inbounds double, ptr %830, i64 %.0648751.us.us.us.us.us.us.epil
  %859 = load double, ptr %858, align 8, !tbaa !22
  %860 = getelementptr inbounds double, ptr %833, i64 %.0648751.us.us.us.us.us.us.epil
  %861 = load double, ptr %860, align 8, !tbaa !22
  %862 = call double @llvm.fmuladd.f64(double %859, double %861, double %.0653750.us.us.us.us.us.us.epil)
  %863 = add nuw nsw i64 %.0648751.us.us.us.us.us.us.epil, 1
  %epil.iter984.next = add i64 %epil.iter984, 1
  %epil.iter984.cmp.not = icmp eq i64 %epil.iter984.next, %xtraiter983
  br i1 %epil.iter984.cmp.not, label %._crit_edge754.us.us.us.us.us.us, label %.epil.preheader982, !llvm.loop !57

._crit_edge754.us.us.us.us.us.us:                 ; preds = %.epil.preheader982, %._crit_edge754.us.us.us.us.us.us.unr-lcssa
  %.lcssa973 = phi double [ %.lcssa973.ph, %._crit_edge754.us.us.us.us.us.us.unr-lcssa ], [ %862, %.epil.preheader982 ]
  %864 = load ptr, ptr %95, align 8, !tbaa !20
  %865 = getelementptr double, ptr %864, i64 %.0650757.us.us.us.us.us.us
  %866 = getelementptr double, ptr %865, i64 %827
  store double %.lcssa973, ptr %866, align 8, !tbaa !22
  %867 = add nuw nsw i64 %.0650757.us.us.us.us.us.us, 1
  %exitcond902.not = icmp eq i64 %867, %762
  br i1 %exitcond902.not, label %._crit_edge760.split.us.us.us.us.us.us, label %.lr.ph753.us.us.us.us.us.us, !llvm.loop !55

._crit_edge760.split.us.us.us.us.us.us:           ; preds = %._crit_edge754.us.us.us.us.us.us
  %868 = add nsw i64 %.3630762.us.us.us.us.us, 1
  %869 = load ptr, ptr %38, align 8, !tbaa !20
  %870 = getelementptr i64, ptr %869, i64 %.0652853.us.us.us
  %871 = getelementptr i8, ptr %870, i64 8
  %872 = load i64, ptr %871, align 8, !tbaa !21
  %.not684.not.us.us.us.us.us = icmp slt i64 %868, %872
  br i1 %.not684.not.us.us.us.us.us, label %.lr.ph759.us.us.us.us.us, label %.loopexit698.us.us.us, !llvm.loop !47

.lr.ph775.us.us.us:                               ; preds = %588
  %873 = load ptr, ptr %25, align 8
  %874 = getelementptr inbounds i8, ptr %873, i64 440
  %875 = getelementptr inbounds i8, ptr %873, i64 56
  %876 = mul i64 %.2644778.us.us.us, %4
  br label %600

.lr.ph779.us.us.us:                               ; preds = %.thread.us.us.us
  %877 = trunc nuw i8 %.4626691.us.us.us to i1
  %.pre920 = load ptr, ptr %47, align 8, !tbaa !20
  br label %588

.lr.ph818.us.us.us:                               ; preds = %.preheader.us.us.us
  %.not679.not810.us.us.us = icmp sgt i64 %398, 0
  %878 = mul nsw i64 %398, %.1649844.us.us.us
  br i1 %.not679.not810.us.us.us, label %.lr.ph813.us.us.us.us.preheader, label %.loopexit.us.us.us

.lr.ph813.us.us.us.us.preheader:                  ; preds = %.lr.ph818.us.us.us
  %xtraiter992 = and i64 %398, 1
  %879 = icmp eq i64 %398, 1
  %unroll_iter995 = and i64 %398, 9223372036854775806
  %lcmp.mod994.not = icmp eq i64 %xtraiter992, 0
  br label %.lr.ph813.us.us.us.us

.lr.ph813.us.us.us.us:                            ; preds = %.lr.ph813.us.us.us.us.preheader, %._crit_edge814.us.us.us.us
  %.8817.us.us.us.us = phi i64 [ %923, %._crit_edge814.us.us.us.us ], [ %388, %.lr.ph813.us.us.us.us.preheader ]
  %.3641816.us.us.us.us = phi i64 [ %922, %._crit_edge814.us.us.us.us ], [ %390, %.lr.ph813.us.us.us.us.preheader ]
  %880 = load ptr, ptr %932, align 8, !tbaa !20
  %881 = getelementptr inbounds double, ptr %880, i64 %.8817.us.us.us.us
  %882 = load double, ptr %881, align 8, !tbaa !22
  %883 = fmul double %397, %882
  br i1 %879, label %._crit_edge814.us.us.us.us.unr-lcssa, label %.lr.ph813.us.us.us.us.new

.lr.ph813.us.us.us.us.new:                        ; preds = %.lr.ph813.us.us.us.us, %.lr.ph813.us.us.us.us.new
  %.1651811.us.us.us.us = phi i64 [ %909, %.lr.ph813.us.us.us.us.new ], [ 0, %.lr.ph813.us.us.us.us ]
  %niter996 = phi i64 [ %niter996.next.1, %.lr.ph813.us.us.us.us.new ], [ 0, %.lr.ph813.us.us.us.us ]
  %884 = load ptr, ptr %95, align 8, !tbaa !20
  %885 = getelementptr double, ptr %884, i64 %.1651811.us.us.us.us
  %886 = getelementptr double, ptr %885, i64 %.3641816.us.us.us.us
  %887 = load double, ptr %886, align 8, !tbaa !22
  %888 = load ptr, ptr %97, align 8, !tbaa !20
  %889 = getelementptr inbounds ptr, ptr %888, i64 %233
  %890 = load ptr, ptr %889, align 8, !tbaa !23
  %891 = getelementptr double, ptr %890, i64 %878
  %892 = getelementptr i8, ptr %891, i64 8
  %893 = getelementptr double, ptr %892, i64 %.1651811.us.us.us.us
  %894 = load double, ptr %893, align 8, !tbaa !22
  %895 = call double @llvm.fmuladd.f64(double %883, double %894, double %887)
  store double %895, ptr %886, align 8, !tbaa !22
  %896 = or disjoint i64 %.1651811.us.us.us.us, 1
  %897 = load ptr, ptr %95, align 8, !tbaa !20
  %898 = getelementptr double, ptr %897, i64 %896
  %899 = getelementptr double, ptr %898, i64 %.3641816.us.us.us.us
  %900 = load double, ptr %899, align 8, !tbaa !22
  %901 = load ptr, ptr %97, align 8, !tbaa !20
  %902 = getelementptr inbounds ptr, ptr %901, i64 %233
  %903 = load ptr, ptr %902, align 8, !tbaa !23
  %904 = getelementptr double, ptr %903, i64 %878
  %905 = getelementptr i8, ptr %904, i64 8
  %906 = getelementptr double, ptr %905, i64 %896
  %907 = load double, ptr %906, align 8, !tbaa !22
  %908 = call double @llvm.fmuladd.f64(double %883, double %907, double %900)
  store double %908, ptr %899, align 8, !tbaa !22
  %909 = add nuw nsw i64 %.1651811.us.us.us.us, 2
  %niter996.next.1 = add i64 %niter996, 2
  %niter996.ncmp.1 = icmp eq i64 %niter996.next.1, %unroll_iter995
  br i1 %niter996.ncmp.1, label %._crit_edge814.us.us.us.us.unr-lcssa, label %.lr.ph813.us.us.us.us.new, !llvm.loop !58

._crit_edge814.us.us.us.us.unr-lcssa:             ; preds = %.lr.ph813.us.us.us.us.new, %.lr.ph813.us.us.us.us
  %.1651811.us.us.us.us.unr = phi i64 [ 0, %.lr.ph813.us.us.us.us ], [ %909, %.lr.ph813.us.us.us.us.new ]
  br i1 %lcmp.mod994.not, label %._crit_edge814.us.us.us.us, label %._crit_edge814.us.us.us.us.epilog-lcssa

._crit_edge814.us.us.us.us.epilog-lcssa:          ; preds = %._crit_edge814.us.us.us.us.unr-lcssa
  %910 = load ptr, ptr %95, align 8, !tbaa !20
  %911 = getelementptr double, ptr %910, i64 %.1651811.us.us.us.us.unr
  %912 = getelementptr double, ptr %911, i64 %.3641816.us.us.us.us
  %913 = load double, ptr %912, align 8, !tbaa !22
  %914 = load ptr, ptr %97, align 8, !tbaa !20
  %915 = getelementptr inbounds ptr, ptr %914, i64 %233
  %916 = load ptr, ptr %915, align 8, !tbaa !23
  %917 = getelementptr double, ptr %916, i64 %878
  %918 = getelementptr i8, ptr %917, i64 8
  %919 = getelementptr double, ptr %918, i64 %.1651811.us.us.us.us.unr
  %920 = load double, ptr %919, align 8, !tbaa !22
  %921 = call double @llvm.fmuladd.f64(double %883, double %920, double %913)
  store double %921, ptr %912, align 8, !tbaa !22
  br label %._crit_edge814.us.us.us.us

._crit_edge814.us.us.us.us:                       ; preds = %._crit_edge814.us.us.us.us.unr-lcssa, %._crit_edge814.us.us.us.us.epilog-lcssa
  %922 = add nsw i64 %.3641816.us.us.us.us, %29
  %923 = add nsw i64 %.8817.us.us.us.us, 1
  %924 = load ptr, ptr %38, align 8, !tbaa !20
  %925 = getelementptr inbounds i64, ptr %924, i64 %158
  %926 = load i64, ptr %925, align 8, !tbaa !21
  %.not678.not.us.us.us.us = icmp slt i64 %923, %926
  br i1 %.not678.not.us.us.us.us, label %.lr.ph813.us.us.us.us, label %.loopexit.us.us.us, !llvm.loop !59

.lr.ph822.us.us.us:                               ; preds = %.lr.ph827.split.us881.us.us
  %927 = load ptr, ptr %25, align 8
  %928 = getelementptr inbounds i8, ptr %927, i64 440
  %929 = mul i64 %.4646825.us860.us.us, %4
  %930 = getelementptr inbounds i8, ptr %927, i64 568
  %931 = getelementptr inbounds i8, ptr %927, i64 632
  %932 = getelementptr inbounds i8, ptr %927, i64 504
  br label %369

.lr.ph827.us.us.us:                               ; preds = %257
  %.idx.us.us.us = mul i64 %.1649844.us.us.us, 24
  %933 = shl nuw nsw i64 %.1649844.us.us.us, 1
  %934 = or disjoint i64 %933, 1
  %935 = load ptr, ptr %47, align 8, !tbaa !20
  %936 = getelementptr inbounds i64, ptr %935, i64 %.0654858.us.us.us
  %937 = load i64, ptr %936, align 8, !tbaa !21
  %938 = getelementptr inbounds i64, ptr %935, i64 %100
  %939 = load i64, ptr %938, align 8, !tbaa !21
  %940 = icmp slt i64 %937, %939
  br i1 %940, label %.lr.ph827.split.us881.us.us, label %._crit_edge828.us.us.us

.lr.ph832.us.us.us:                               ; preds = %263
  %941 = load ptr, ptr %25, align 8
  %942 = getelementptr inbounds i8, ptr %941, i64 248
  %943 = getelementptr inbounds i8, ptr %941, i64 504
  %944 = sub i64 %266, %268
  %.neg1007 = add i64 %268, 1
  %xtraiter997 = and i64 %944, 1
  %lcmp.mod998.not = icmp eq i64 %xtraiter997, 0
  br i1 %lcmp.mod998.not, label %.prol.loopexit, label %.prol.preheader

.prol.preheader:                                  ; preds = %.lr.ph832.us.us.us
  br i1 %993, label %950, label %945

945:                                              ; preds = %.prol.preheader
  %946 = load ptr, ptr %942, align 8, !tbaa !20
  %947 = getelementptr inbounds i8, ptr %946, i64 %268
  %948 = load i8, ptr %947, align 1, !tbaa !24, !range !30, !noundef !31
  %949 = trunc nuw i8 %948 to i1
  br i1 %949, label %950, label %.prol.loopexit.unr-lcssa

950:                                              ; preds = %945, %.prol.preheader
  %951 = load ptr, ptr %943, align 8, !tbaa !20
  %952 = getelementptr inbounds double, ptr %951, i64 %268
  %953 = load double, ptr %952, align 8, !tbaa !22
  %954 = fmul double %953, %953
  %955 = fmul double %954, %954
  store double %955, ptr %952, align 8, !tbaa !22
  br label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %950, %945
  %956 = add nsw i64 %268, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph832.us.us.us
  %.9830.us.us.us.unr = phi i64 [ %268, %.lr.ph832.us.us.us ], [ %956, %.prol.loopexit.unr-lcssa ]
  %957 = icmp eq i64 %266, %.neg1007
  br i1 %957, label %._crit_edge833.us.us.us, label %.lr.ph832.us.us.us.new

.lr.ph837.us.us.us:                               ; preds = %._crit_edge833.us.us.us
  %958 = load ptr, ptr %25, align 8
  %959 = getelementptr inbounds i8, ptr %958, i64 312
  %960 = getelementptr inbounds i8, ptr %958, i64 568
  %961 = sub i64 %271, %273
  %.neg1008 = add i64 %273, 1
  %xtraiter1001 = and i64 %961, 1
  %lcmp.mod1002.not = icmp eq i64 %xtraiter1001, 0
  br i1 %lcmp.mod1002.not, label %.prol.loopexit1000, label %.prol.preheader999

.prol.preheader999:                               ; preds = %.lr.ph837.us.us.us
  br i1 %993, label %967, label %962

962:                                              ; preds = %.prol.preheader999
  %963 = load ptr, ptr %959, align 8, !tbaa !20
  %964 = getelementptr inbounds i8, ptr %963, i64 %273
  %965 = load i8, ptr %964, align 1, !tbaa !24, !range !30, !noundef !31
  %966 = trunc nuw i8 %965 to i1
  br i1 %966, label %967, label %.prol.loopexit1000.unr-lcssa

967:                                              ; preds = %962, %.prol.preheader999
  %968 = load ptr, ptr %960, align 8, !tbaa !20
  %969 = getelementptr inbounds double, ptr %968, i64 %273
  %970 = load double, ptr %969, align 8, !tbaa !22
  %971 = fmul double %970, %970
  %972 = fmul double %971, %971
  store double %972, ptr %969, align 8, !tbaa !22
  br label %.prol.loopexit1000.unr-lcssa

.prol.loopexit1000.unr-lcssa:                     ; preds = %967, %962
  %973 = add nsw i64 %273, 1
  br label %.prol.loopexit1000

.prol.loopexit1000:                               ; preds = %.prol.loopexit1000.unr-lcssa, %.lr.ph837.us.us.us
  %.5637835.us.us.us.unr = phi i64 [ %273, %.lr.ph837.us.us.us ], [ %973, %.prol.loopexit1000.unr-lcssa ]
  %974 = icmp eq i64 %271, %.neg1008
  br i1 %974, label %._crit_edge838.us.us.us, label %.lr.ph837.us.us.us.new

.lr.ph842.us.us.us:                               ; preds = %._crit_edge838.us.us.us
  %975 = load ptr, ptr %25, align 8
  %976 = getelementptr inbounds i8, ptr %975, i64 376
  %977 = getelementptr inbounds i8, ptr %975, i64 632
  %978 = sub i64 %276, %278
  %.neg1009 = add i64 %278, 1
  %xtraiter1005 = and i64 %978, 1
  %lcmp.mod1006.not = icmp eq i64 %xtraiter1005, 0
  br i1 %lcmp.mod1006.not, label %.prol.loopexit1004, label %.prol.preheader1003

.prol.preheader1003:                              ; preds = %.lr.ph842.us.us.us
  br i1 %993, label %984, label %979

979:                                              ; preds = %.prol.preheader1003
  %980 = load ptr, ptr %976, align 8, !tbaa !20
  %981 = getelementptr inbounds i8, ptr %980, i64 %278
  %982 = load i8, ptr %981, align 1, !tbaa !24, !range !30, !noundef !31
  %983 = trunc nuw i8 %982 to i1
  br i1 %983, label %984, label %.prol.loopexit1004.unr-lcssa

984:                                              ; preds = %979, %.prol.preheader1003
  %985 = load ptr, ptr %977, align 8, !tbaa !20
  %986 = getelementptr inbounds double, ptr %985, i64 %278
  %987 = load double, ptr %986, align 8, !tbaa !22
  %988 = fmul double %987, %987
  %989 = fmul double %988, %988
  store double %989, ptr %986, align 8, !tbaa !22
  br label %.prol.loopexit1004.unr-lcssa

.prol.loopexit1004.unr-lcssa:                     ; preds = %984, %979
  %990 = add nsw i64 %278, 1
  br label %.prol.loopexit1004

.prol.loopexit1004:                               ; preds = %.prol.loopexit1004.unr-lcssa, %.lr.ph842.us.us.us
  %.5647840.us.us.us.unr = phi i64 [ %278, %.lr.ph842.us.us.us ], [ %990, %.prol.loopexit1004.unr-lcssa ]
  %991 = icmp eq i64 %276, %.neg1009
  br i1 %991, label %.loopexit697.us.us.us, label %.lr.ph842.us.us.us.new

.lr.ph846.us.us.us:                               ; preds = %.preheader699.us.us.us
  %992 = add nsw i64 %740, -1
  br label %257

.lr.ph851.us.us.us:                               ; preds = %._crit_edge780.us.us.us
  %993 = trunc nuw i8 %.4626691.us.us.us to i1
  br label %207

._crit_edge856.us.us.us:                          ; preds = %.loopexit700.us.us.us
  %exitcond913.not = icmp eq i64 %100, %12
  br i1 %exitcond913.not, label %._crit_edge859.split.us.us.us, label %.preheader702.us.us.us, !llvm.loop !60

._crit_edge859.split.us.us.us:                    ; preds = %._crit_edge856.us.us.us
  %exitcond914.not = icmp eq i64 %99, %15
  br i1 %exitcond914.not, label %._crit_edge, label %.preheader703.us.us, !llvm.loop !61

._crit_edge:                                      ; preds = %._crit_edge859.split.us.us.us, %.preheader703.lr.ph, %89
  call void @_ZN11alglib_impl22ae_shared_pool_recycleEPNS_14ae_shared_poolEPNS_12ae_smart_ptrEPNS_8ae_stateE(ptr noundef %20, ptr noundef nonnull %26, ptr noundef %22)
  br label %994

994:                                              ; preds = %._crit_edge, %86, %81, %76
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %22)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #5
  ret void
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !7, i64 8}
!6 = !{!"_ZTSN11alglib_impl10rbfv1modelE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !11, i64 1032, !11, i64 1112, !17, i64 1192, !11, i64 1200, !15, i64 1280, !11, i64 1344, !15, i64 1424}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11alglib_impl6kdtreeE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !15, i64 112, !15, i64 176, !15, i64 240, !15, i64 304, !15, i64 368, !16, i64 432, !7, i64 992}
!11 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !12, i64 32, !13, i64 40, !8, i64 72}
!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 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !12, i64 16, !13, i64 24, !8, i64 56}
!16 = !{!"_ZTSN11alglib_impl19kdtreerequestbufferE", !15, i64 0, !15, i64 64, !15, i64 128, !7, i64 192, !17, i64 200, !12, i64 208, !17, i64 216, !7, i64 224, !15, i64 232, !15, i64 296, !15, i64 360, !15, i64 424, !15, i64 488, !17, i64 552}
!17 = !{!"double", !8, i64 0}
!18 = !{!6, !7, i64 0}
!19 = !{!6, !7, i64 24}
!20 = !{!8, !8, i64 0}
!21 = !{!7, !7, i64 0}
!22 = !{!17, !17, i64 0}
!23 = !{!14, !14, i64 0}
!24 = !{!12, !12, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.unroll.disable"}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = !{i8 0, i8 2}
!31 = !{}
!32 = distinct !{!32, !28}
!33 = distinct !{!33, !28}
!34 = distinct !{!34, !28}
!35 = distinct !{!35, !28}
!36 = distinct !{!36, !28, !37}
!37 = !{!"llvm.loop.unswitch.partial.disable"}
!38 = distinct !{!38, !28}
!39 = distinct !{!39, !28}
!40 = distinct !{!40, !28}
!41 = distinct !{!41, !28}
!42 = distinct !{!42, !28}
!43 = distinct !{!43, !28}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !28}
!47 = distinct !{!47, !28}
!48 = distinct !{!48, !28}
!49 = distinct !{!49, !28, !37}
!50 = distinct !{!50, !28}
!51 = distinct !{!51, !28}
!52 = distinct !{!52, !28}
!53 = distinct !{!53, !28}
!54 = distinct !{!54, !28}
!55 = distinct !{!55, !28}
!56 = distinct !{!56, !28}
!57 = distinct !{!57, !26}
!58 = distinct !{!58, !28}
!59 = distinct !{!59, !28}
!60 = distinct !{!60, !28}
!61 = distinct !{!61, !28}


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