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

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

@.str.410 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.411 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.413 = external hidden unnamed_addr constant [37 x i8], align 1

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) #1

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef, ptr noundef) #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl15xlcconverttooldEPNS_18xlinearconstraintsEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca i64, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  %21 = load ptr, ptr %3, align 8, !tbaa !5
  %22 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %21, i32 0, i32 0
  %23 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %23, ptr %17, align 8, !tbaa !17
  %24 = load ptr, ptr %3, align 8, !tbaa !5
  %25 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %24, i32 0, i32 9
  store i64 0, ptr %25, align 8, !tbaa !18
  %26 = load ptr, ptr %3, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %26, i32 0, i32 10
  store i64 0, ptr %27, align 8, !tbaa !19
  store i64 0, ptr %5, align 8, !tbaa !17
  br label %28

28:                                               ; preds = %145, %2
  %29 = load i64, ptr %5, align 8, !tbaa !17
  %30 = load ptr, ptr %3, align 8, !tbaa !5
  %31 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %30, i32 0, i32 2
  %32 = load i64, ptr %31, align 8, !tbaa !20
  %33 = load ptr, ptr %3, align 8, !tbaa !5
  %34 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %33, i32 0, i32 1
  %35 = load i64, ptr %34, align 8, !tbaa !21
  %36 = add nsw i64 %32, %35
  %37 = sub nsw i64 %36, 1
  %38 = icmp sle i64 %29, %37
  br i1 %38, label %39, label %148

39:                                               ; preds = %28
  %40 = load i64, ptr %5, align 8, !tbaa !17
  %41 = load ptr, ptr %3, align 8, !tbaa !5
  %42 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %41, i32 0, i32 2
  %43 = load i64, ptr %42, align 8, !tbaa !20
  %44 = icmp slt i64 %40, %43
  br i1 %44, label %45, label %60

45:                                               ; preds = %39
  %46 = load ptr, ptr %3, align 8, !tbaa !5
  %47 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %46, i32 0, i32 7
  %48 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %47, i32 0, i32 4
  %49 = load ptr, ptr %48, align 8, !tbaa !22
  %50 = load i64, ptr %5, align 8, !tbaa !17
  %51 = getelementptr inbounds double, ptr %49, i64 %50
  %52 = load double, ptr %51, align 8, !tbaa !23
  store double %52, ptr %18, align 8, !tbaa !23
  %53 = load ptr, ptr %3, align 8, !tbaa !5
  %54 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %53, i32 0, i32 8
  %55 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %54, i32 0, i32 4
  %56 = load ptr, ptr %55, align 8, !tbaa !22
  %57 = load i64, ptr %5, align 8, !tbaa !17
  %58 = getelementptr inbounds double, ptr %56, i64 %57
  %59 = load double, ptr %58, align 8, !tbaa !23
  store double %59, ptr %19, align 8, !tbaa !23
  br label %83

60:                                               ; preds = %39
  %61 = load ptr, ptr %3, align 8, !tbaa !5
  %62 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %61, i32 0, i32 5
  %63 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %62, i32 0, i32 4
  %64 = load ptr, ptr %63, align 8, !tbaa !22
  %65 = load i64, ptr %5, align 8, !tbaa !17
  %66 = load ptr, ptr %3, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %66, i32 0, i32 2
  %68 = load i64, ptr %67, align 8, !tbaa !20
  %69 = sub nsw i64 %65, %68
  %70 = getelementptr inbounds double, ptr %64, i64 %69
  %71 = load double, ptr %70, align 8, !tbaa !23
  store double %71, ptr %18, align 8, !tbaa !23
  %72 = load ptr, ptr %3, align 8, !tbaa !5
  %73 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %72, i32 0, i32 6
  %74 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %73, i32 0, i32 4
  %75 = load ptr, ptr %74, align 8, !tbaa !22
  %76 = load i64, ptr %5, align 8, !tbaa !17
  %77 = load ptr, ptr %3, align 8, !tbaa !5
  %78 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %77, i32 0, i32 2
  %79 = load i64, ptr %78, align 8, !tbaa !20
  %80 = sub nsw i64 %76, %79
  %81 = getelementptr inbounds double, ptr %75, i64 %80
  %82 = load double, ptr %81, align 8, !tbaa !23
  store double %82, ptr %19, align 8, !tbaa !23
  br label %83

83:                                               ; preds = %60, %45
  %84 = load double, ptr %18, align 8, !tbaa !23
  %85 = load ptr, ptr %4, align 8, !tbaa !5
  %86 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %84, ptr noundef %85)
  br i1 %86, label %91, label %87

87:                                               ; preds = %83
  %88 = load double, ptr %18, align 8, !tbaa !23
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %88, ptr noundef %89)
  br label %91

91:                                               ; preds = %87, %83
  %92 = phi i1 [ true, %83 ], [ %90, %87 ]
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %92, ptr noundef @.str.410, ptr noundef %93)
  %94 = load double, ptr %19, align 8, !tbaa !23
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %94, ptr noundef %95)
  br i1 %96, label %101, label %97

97:                                               ; preds = %91
  %98 = load double, ptr %19, align 8, !tbaa !23
  %99 = load ptr, ptr %4, align 8, !tbaa !5
  %100 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %98, ptr noundef %99)
  br label %101

101:                                              ; preds = %97, %91
  %102 = phi i1 [ true, %91 ], [ %100, %97 ]
  %103 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %102, ptr noundef @.str.411, ptr noundef %103)
  %104 = load double, ptr %18, align 8, !tbaa !23
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %104, ptr noundef %105)
  br i1 %106, label %107, label %122

107:                                              ; preds = %101
  %108 = load double, ptr %19, align 8, !tbaa !23
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %108, ptr noundef %109)
  br i1 %110, label %111, label %122

111:                                              ; preds = %107
  %112 = load double, ptr %18, align 8, !tbaa !23
  %113 = load double, ptr %19, align 8, !tbaa !23
  %114 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %112, double noundef %113)
  br i1 %114, label %115, label %122

115:                                              ; preds = %111
  %116 = load ptr, ptr %3, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %116, i32 0, i32 9
  %118 = load i64, ptr %117, align 8, !tbaa !18
  %119 = add nsw i64 %118, 1
  %120 = load ptr, ptr %3, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %120, i32 0, i32 9
  store i64 %119, ptr %121, align 8, !tbaa !18
  br label %145

122:                                              ; preds = %111, %107, %101
  %123 = load double, ptr %18, align 8, !tbaa !23
  %124 = load ptr, ptr %4, align 8, !tbaa !5
  %125 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %123, ptr noundef %124)
  br i1 %125, label %126, label %133

126:                                              ; preds = %122
  %127 = load ptr, ptr %3, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %127, i32 0, i32 10
  %129 = load i64, ptr %128, align 8, !tbaa !19
  %130 = add nsw i64 %129, 1
  %131 = load ptr, ptr %3, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %131, i32 0, i32 10
  store i64 %130, ptr %132, align 8, !tbaa !19
  br label %133

133:                                              ; preds = %126, %122
  %134 = load double, ptr %19, align 8, !tbaa !23
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %134, ptr noundef %135)
  br i1 %136, label %137, label %144

137:                                              ; preds = %133
  %138 = load ptr, ptr %3, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %138, i32 0, i32 10
  %140 = load i64, ptr %139, align 8, !tbaa !19
  %141 = add nsw i64 %140, 1
  %142 = load ptr, ptr %3, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %142, i32 0, i32 10
  store i64 %141, ptr %143, align 8, !tbaa !19
  br label %144

144:                                              ; preds = %137, %133
  br label %145

145:                                              ; preds = %144, %115
  %146 = load i64, ptr %5, align 8, !tbaa !17
  %147 = add nsw i64 %146, 1
  store i64 %147, ptr %5, align 8, !tbaa !17
  br label %28, !llvm.loop !25

148:                                              ; preds = %28
  %149 = load ptr, ptr %3, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %149, i32 0, i32 9
  %151 = load i64, ptr %150, align 8, !tbaa !18
  %152 = load ptr, ptr %3, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %152, i32 0, i32 10
  %154 = load i64, ptr %153, align 8, !tbaa !19
  %155 = add nsw i64 %151, %154
  %156 = icmp eq i64 %155, 0
  br i1 %156, label %157, label %158

157:                                              ; preds = %148
  store i32 1, ptr %20, align 4
  br label %580

158:                                              ; preds = %148
  store i64 0, ptr %9, align 8, !tbaa !17
  %159 = load ptr, ptr %3, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %159, i32 0, i32 9
  %161 = load i64, ptr %160, align 8, !tbaa !18
  store i64 %161, ptr %10, align 8, !tbaa !17
  %162 = load ptr, ptr %3, align 8, !tbaa !5
  %163 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %162, i32 0, i32 9
  %164 = load i64, ptr %163, align 8, !tbaa !18
  %165 = load ptr, ptr %3, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %165, i32 0, i32 10
  %167 = load i64, ptr %166, align 8, !tbaa !19
  %168 = add nsw i64 %164, %167
  %169 = load i64, ptr %17, align 8, !tbaa !17
  %170 = add nsw i64 %169, 1
  %171 = load ptr, ptr %3, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %171, i32 0, i32 11
  %173 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocmEllPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %168, i64 noundef %170, ptr noundef %172, ptr noundef %173)
  %174 = load ptr, ptr %3, align 8, !tbaa !5
  %175 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %174, i32 0, i32 9
  %176 = load i64, ptr %175, align 8, !tbaa !18
  %177 = load ptr, ptr %3, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %177, i32 0, i32 10
  %179 = load i64, ptr %178, align 8, !tbaa !19
  %180 = add nsw i64 %176, %179
  %181 = load ptr, ptr %3, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %181, i32 0, i32 12
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %180, i64 noundef -1, ptr noundef %182, ptr noundef %183)
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %184, i32 0, i32 9
  %186 = load i64, ptr %185, align 8, !tbaa !18
  %187 = load ptr, ptr %3, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %187, i32 0, i32 10
  %189 = load i64, ptr %188, align 8, !tbaa !19
  %190 = add nsw i64 %186, %189
  %191 = load ptr, ptr %3, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %191, i32 0, i32 13
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %190, double noundef 0.000000e+00, ptr noundef %192, ptr noundef %193)
  store i64 0, ptr %5, align 8, !tbaa !17
  br label %194

194:                                              ; preds = %576, %158
  %195 = load i64, ptr %5, align 8, !tbaa !17
  %196 = load ptr, ptr %3, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %196, i32 0, i32 2
  %198 = load i64, ptr %197, align 8, !tbaa !20
  %199 = load ptr, ptr %3, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %199, i32 0, i32 1
  %201 = load i64, ptr %200, align 8, !tbaa !21
  %202 = add nsw i64 %198, %201
  %203 = sub nsw i64 %202, 1
  %204 = icmp sle i64 %195, %203
  br i1 %204, label %205, label %579

205:                                              ; preds = %194
  %206 = load i64, ptr %5, align 8, !tbaa !17
  %207 = load ptr, ptr %3, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %207, i32 0, i32 2
  %209 = load i64, ptr %208, align 8, !tbaa !20
  %210 = icmp slt i64 %206, %209
  br i1 %210, label %211, label %226

211:                                              ; preds = %205
  %212 = load ptr, ptr %3, align 8, !tbaa !5
  %213 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %212, i32 0, i32 7
  %214 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %213, i32 0, i32 4
  %215 = load ptr, ptr %214, align 8, !tbaa !22
  %216 = load i64, ptr %5, align 8, !tbaa !17
  %217 = getelementptr inbounds double, ptr %215, i64 %216
  %218 = load double, ptr %217, align 8, !tbaa !23
  store double %218, ptr %18, align 8, !tbaa !23
  %219 = load ptr, ptr %3, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %219, i32 0, i32 8
  %221 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %220, i32 0, i32 4
  %222 = load ptr, ptr %221, align 8, !tbaa !22
  %223 = load i64, ptr %5, align 8, !tbaa !17
  %224 = getelementptr inbounds double, ptr %222, i64 %223
  %225 = load double, ptr %224, align 8, !tbaa !23
  store double %225, ptr %19, align 8, !tbaa !23
  br label %249

226:                                              ; preds = %205
  %227 = load ptr, ptr %3, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %227, i32 0, i32 5
  %229 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %228, i32 0, i32 4
  %230 = load ptr, ptr %229, align 8, !tbaa !22
  %231 = load i64, ptr %5, align 8, !tbaa !17
  %232 = load ptr, ptr %3, align 8, !tbaa !5
  %233 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %232, i32 0, i32 2
  %234 = load i64, ptr %233, align 8, !tbaa !20
  %235 = sub nsw i64 %231, %234
  %236 = getelementptr inbounds double, ptr %230, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !23
  store double %237, ptr %18, align 8, !tbaa !23
  %238 = load ptr, ptr %3, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %238, i32 0, i32 6
  %240 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %239, i32 0, i32 4
  %241 = load ptr, ptr %240, align 8, !tbaa !22
  %242 = load i64, ptr %5, align 8, !tbaa !17
  %243 = load ptr, ptr %3, align 8, !tbaa !5
  %244 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %243, i32 0, i32 2
  %245 = load i64, ptr %244, align 8, !tbaa !20
  %246 = sub nsw i64 %242, %245
  %247 = getelementptr inbounds double, ptr %241, i64 %246
  %248 = load double, ptr %247, align 8, !tbaa !23
  store double %248, ptr %19, align 8, !tbaa !23
  br label %249

249:                                              ; preds = %226, %211
  %250 = load double, ptr %18, align 8, !tbaa !23
  %251 = load ptr, ptr %4, align 8, !tbaa !5
  %252 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %250, ptr noundef %251)
  br i1 %252, label %258, label %253

253:                                              ; preds = %249
  %254 = load double, ptr %19, align 8, !tbaa !23
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %254, ptr noundef %255)
  br i1 %256, label %258, label %257

257:                                              ; preds = %253
  br label %576

258:                                              ; preds = %253, %249
  store i64 -1, ptr %11, align 8, !tbaa !17
  store i64 -1, ptr %12, align 8, !tbaa !17
  store double 0.000000e+00, ptr %13, align 8, !tbaa !23
  store double 0.000000e+00, ptr %14, align 8, !tbaa !23
  store double 0.000000e+00, ptr %15, align 8, !tbaa !23
  store double 0.000000e+00, ptr %16, align 8, !tbaa !23
  %259 = load double, ptr %18, align 8, !tbaa !23
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %259, ptr noundef %260)
  br i1 %261, label %262, label %285

262:                                              ; preds = %258
  %263 = load double, ptr %19, align 8, !tbaa !23
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %263, ptr noundef %264)
  br i1 %265, label %266, label %285

266:                                              ; preds = %262
  %267 = load double, ptr %18, align 8, !tbaa !23
  %268 = load double, ptr %19, align 8, !tbaa !23
  %269 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %267, double noundef %268)
  br i1 %269, label %270, label %275

270:                                              ; preds = %266
  %271 = load i64, ptr %9, align 8, !tbaa !17
  store i64 %271, ptr %11, align 8, !tbaa !17
  store double 1.000000e+00, ptr %13, align 8, !tbaa !23
  %272 = load double, ptr %18, align 8, !tbaa !23
  store double %272, ptr %15, align 8, !tbaa !23
  %273 = load i64, ptr %9, align 8, !tbaa !17
  %274 = add nsw i64 %273, 1
  store i64 %274, ptr %9, align 8, !tbaa !17
  br label %284

275:                                              ; preds = %266
  %276 = load i64, ptr %10, align 8, !tbaa !17
  store i64 %276, ptr %11, align 8, !tbaa !17
  %277 = load i64, ptr %10, align 8, !tbaa !17
  %278 = add nsw i64 %277, 1
  store i64 %278, ptr %12, align 8, !tbaa !17
  store double -1.000000e+00, ptr %13, align 8, !tbaa !23
  store double 1.000000e+00, ptr %14, align 8, !tbaa !23
  %279 = load double, ptr %18, align 8, !tbaa !23
  %280 = fneg double %279
  store double %280, ptr %15, align 8, !tbaa !23
  %281 = load double, ptr %19, align 8, !tbaa !23
  store double %281, ptr %16, align 8, !tbaa !23
  %282 = load i64, ptr %10, align 8, !tbaa !17
  %283 = add nsw i64 %282, 2
  store i64 %283, ptr %10, align 8, !tbaa !17
  br label %284

284:                                              ; preds = %275, %270
  br label %305

285:                                              ; preds = %262, %258
  %286 = load double, ptr %18, align 8, !tbaa !23
  %287 = load ptr, ptr %4, align 8, !tbaa !5
  %288 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %286, ptr noundef %287)
  br i1 %288, label %289, label %295

289:                                              ; preds = %285
  %290 = load i64, ptr %10, align 8, !tbaa !17
  store i64 %290, ptr %11, align 8, !tbaa !17
  store double -1.000000e+00, ptr %13, align 8, !tbaa !23
  %291 = load double, ptr %18, align 8, !tbaa !23
  %292 = fneg double %291
  store double %292, ptr %15, align 8, !tbaa !23
  %293 = load i64, ptr %10, align 8, !tbaa !17
  %294 = add nsw i64 %293, 1
  store i64 %294, ptr %10, align 8, !tbaa !17
  br label %295

295:                                              ; preds = %289, %285
  %296 = load double, ptr %19, align 8, !tbaa !23
  %297 = load ptr, ptr %4, align 8, !tbaa !5
  %298 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %296, ptr noundef %297)
  br i1 %298, label %299, label %304

299:                                              ; preds = %295
  %300 = load i64, ptr %10, align 8, !tbaa !17
  store i64 %300, ptr %11, align 8, !tbaa !17
  store double 1.000000e+00, ptr %13, align 8, !tbaa !23
  %301 = load double, ptr %19, align 8, !tbaa !23
  store double %301, ptr %15, align 8, !tbaa !23
  %302 = load i64, ptr %10, align 8, !tbaa !17
  %303 = add nsw i64 %302, 1
  store i64 %303, ptr %10, align 8, !tbaa !17
  br label %304

304:                                              ; preds = %299, %295
  br label %305

305:                                              ; preds = %304, %284
  %306 = load i64, ptr %9, align 8, !tbaa !17
  %307 = load ptr, ptr %3, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %307, i32 0, i32 9
  %309 = load i64, ptr %308, align 8, !tbaa !18
  %310 = icmp sle i64 %306, %309
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %310, ptr noundef @.str.412, ptr noundef %311)
  %312 = load i64, ptr %10, align 8, !tbaa !17
  %313 = load ptr, ptr %3, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %313, i32 0, i32 9
  %315 = load i64, ptr %314, align 8, !tbaa !18
  %316 = load ptr, ptr %3, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %316, i32 0, i32 10
  %318 = load i64, ptr %317, align 8, !tbaa !19
  %319 = add nsw i64 %315, %318
  %320 = icmp sle i64 %312, %319
  %321 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %320, ptr noundef @.str.413, ptr noundef %321)
  %322 = load i64, ptr %5, align 8, !tbaa !17
  %323 = load ptr, ptr %3, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %323, i32 0, i32 2
  %325 = load i64, ptr %324, align 8, !tbaa !20
  %326 = icmp slt i64 %322, %325
  br i1 %326, label %327, label %474

327:                                              ; preds = %305
  %328 = load i64, ptr %11, align 8, !tbaa !17
  %329 = icmp sge i64 %328, 0
  br i1 %329, label %330, label %400

330:                                              ; preds = %327
  %331 = load i64, ptr %17, align 8, !tbaa !17
  %332 = load ptr, ptr %3, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %332, i32 0, i32 11
  %334 = load i64, ptr %11, align 8, !tbaa !17
  %335 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rsetrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %331, double noundef 0.000000e+00, ptr noundef %333, i64 noundef %334, ptr noundef %335)
  %336 = load ptr, ptr %3, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %336, i32 0, i32 4
  %338 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %337, i32 0, i32 2
  %339 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %338, i32 0, i32 4
  %340 = load ptr, ptr %339, align 8, !tbaa !22
  %341 = load i64, ptr %5, align 8, !tbaa !17
  %342 = getelementptr inbounds i64, ptr %340, i64 %341
  %343 = load i64, ptr %342, align 8, !tbaa !17
  store i64 %343, ptr %7, align 8, !tbaa !17
  %344 = load ptr, ptr %3, align 8, !tbaa !5
  %345 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %344, i32 0, i32 4
  %346 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %345, i32 0, i32 2
  %347 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %346, i32 0, i32 4
  %348 = load ptr, ptr %347, align 8, !tbaa !22
  %349 = load i64, ptr %5, align 8, !tbaa !17
  %350 = add nsw i64 %349, 1
  %351 = getelementptr inbounds i64, ptr %348, i64 %350
  %352 = load i64, ptr %351, align 8, !tbaa !17
  %353 = sub nsw i64 %352, 1
  store i64 %353, ptr %8, align 8, !tbaa !17
  %354 = load i64, ptr %7, align 8, !tbaa !17
  store i64 %354, ptr %6, align 8, !tbaa !17
  br label %355

355:                                              ; preds = %386, %330
  %356 = load i64, ptr %6, align 8, !tbaa !17
  %357 = load i64, ptr %8, align 8, !tbaa !17
  %358 = icmp sle i64 %356, %357
  br i1 %358, label %359, label %389

359:                                              ; preds = %355
  %360 = load double, ptr %13, align 8, !tbaa !23
  %361 = load ptr, ptr %3, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %361, i32 0, i32 4
  %363 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %362, i32 0, i32 0
  %364 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %363, i32 0, i32 4
  %365 = load ptr, ptr %364, align 8, !tbaa !22
  %366 = load i64, ptr %6, align 8, !tbaa !17
  %367 = getelementptr inbounds double, ptr %365, i64 %366
  %368 = load double, ptr %367, align 8, !tbaa !23
  %369 = fmul double %360, %368
  %370 = load ptr, ptr %3, align 8, !tbaa !5
  %371 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %370, i32 0, i32 11
  %372 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %371, i32 0, i32 6
  %373 = load ptr, ptr %372, align 8, !tbaa !22
  %374 = load i64, ptr %11, align 8, !tbaa !17
  %375 = getelementptr inbounds ptr, ptr %373, i64 %374
  %376 = load ptr, ptr %375, align 8, !tbaa !5
  %377 = load ptr, ptr %3, align 8, !tbaa !5
  %378 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %377, i32 0, i32 4
  %379 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %378, i32 0, i32 1
  %380 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %379, i32 0, i32 4
  %381 = load ptr, ptr %380, align 8, !tbaa !22
  %382 = load i64, ptr %6, align 8, !tbaa !17
  %383 = getelementptr inbounds i64, ptr %381, i64 %382
  %384 = load i64, ptr %383, align 8, !tbaa !17
  %385 = getelementptr inbounds double, ptr %376, i64 %384
  store double %369, ptr %385, align 8, !tbaa !23
  br label %386

386:                                              ; preds = %359
  %387 = load i64, ptr %6, align 8, !tbaa !17
  %388 = add nsw i64 %387, 1
  store i64 %388, ptr %6, align 8, !tbaa !17
  br label %355, !llvm.loop !27

389:                                              ; preds = %355
  %390 = load double, ptr %15, align 8, !tbaa !23
  %391 = load ptr, ptr %3, align 8, !tbaa !5
  %392 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %391, i32 0, i32 11
  %393 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %392, i32 0, i32 6
  %394 = load ptr, ptr %393, align 8, !tbaa !22
  %395 = load i64, ptr %11, align 8, !tbaa !17
  %396 = getelementptr inbounds ptr, ptr %394, i64 %395
  %397 = load ptr, ptr %396, align 8, !tbaa !5
  %398 = load i64, ptr %17, align 8, !tbaa !17
  %399 = getelementptr inbounds double, ptr %397, i64 %398
  store double %390, ptr %399, align 8, !tbaa !23
  br label %400

400:                                              ; preds = %389, %327
  %401 = load i64, ptr %12, align 8, !tbaa !17
  %402 = icmp sge i64 %401, 0
  br i1 %402, label %403, label %473

403:                                              ; preds = %400
  %404 = load i64, ptr %17, align 8, !tbaa !17
  %405 = load ptr, ptr %3, align 8, !tbaa !5
  %406 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %405, i32 0, i32 11
  %407 = load i64, ptr %12, align 8, !tbaa !17
  %408 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rsetrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %404, double noundef 0.000000e+00, ptr noundef %406, i64 noundef %407, ptr noundef %408)
  %409 = load ptr, ptr %3, align 8, !tbaa !5
  %410 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %409, i32 0, i32 4
  %411 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %410, i32 0, i32 2
  %412 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %411, i32 0, i32 4
  %413 = load ptr, ptr %412, align 8, !tbaa !22
  %414 = load i64, ptr %5, align 8, !tbaa !17
  %415 = getelementptr inbounds i64, ptr %413, i64 %414
  %416 = load i64, ptr %415, align 8, !tbaa !17
  store i64 %416, ptr %7, align 8, !tbaa !17
  %417 = load ptr, ptr %3, align 8, !tbaa !5
  %418 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %417, i32 0, i32 4
  %419 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %418, i32 0, i32 2
  %420 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %419, i32 0, i32 4
  %421 = load ptr, ptr %420, align 8, !tbaa !22
  %422 = load i64, ptr %5, align 8, !tbaa !17
  %423 = add nsw i64 %422, 1
  %424 = getelementptr inbounds i64, ptr %421, i64 %423
  %425 = load i64, ptr %424, align 8, !tbaa !17
  %426 = sub nsw i64 %425, 1
  store i64 %426, ptr %8, align 8, !tbaa !17
  %427 = load i64, ptr %7, align 8, !tbaa !17
  store i64 %427, ptr %6, align 8, !tbaa !17
  br label %428

428:                                              ; preds = %459, %403
  %429 = load i64, ptr %6, align 8, !tbaa !17
  %430 = load i64, ptr %8, align 8, !tbaa !17
  %431 = icmp sle i64 %429, %430
  br i1 %431, label %432, label %462

432:                                              ; preds = %428
  %433 = load double, ptr %14, align 8, !tbaa !23
  %434 = load ptr, ptr %3, align 8, !tbaa !5
  %435 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %434, i32 0, i32 4
  %436 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %435, i32 0, i32 0
  %437 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %436, i32 0, i32 4
  %438 = load ptr, ptr %437, align 8, !tbaa !22
  %439 = load i64, ptr %6, align 8, !tbaa !17
  %440 = getelementptr inbounds double, ptr %438, i64 %439
  %441 = load double, ptr %440, align 8, !tbaa !23
  %442 = fmul double %433, %441
  %443 = load ptr, ptr %3, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %443, i32 0, i32 11
  %445 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %444, i32 0, i32 6
  %446 = load ptr, ptr %445, align 8, !tbaa !22
  %447 = load i64, ptr %12, align 8, !tbaa !17
  %448 = getelementptr inbounds ptr, ptr %446, i64 %447
  %449 = load ptr, ptr %448, align 8, !tbaa !5
  %450 = load ptr, ptr %3, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %450, i32 0, i32 4
  %452 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %451, i32 0, i32 1
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %452, i32 0, i32 4
  %454 = load ptr, ptr %453, align 8, !tbaa !22
  %455 = load i64, ptr %6, align 8, !tbaa !17
  %456 = getelementptr inbounds i64, ptr %454, i64 %455
  %457 = load i64, ptr %456, align 8, !tbaa !17
  %458 = getelementptr inbounds double, ptr %449, i64 %457
  store double %442, ptr %458, align 8, !tbaa !23
  br label %459

459:                                              ; preds = %432
  %460 = load i64, ptr %6, align 8, !tbaa !17
  %461 = add nsw i64 %460, 1
  store i64 %461, ptr %6, align 8, !tbaa !17
  br label %428, !llvm.loop !28

462:                                              ; preds = %428
  %463 = load double, ptr %16, align 8, !tbaa !23
  %464 = load ptr, ptr %3, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %464, i32 0, i32 11
  %466 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %465, i32 0, i32 6
  %467 = load ptr, ptr %466, align 8, !tbaa !22
  %468 = load i64, ptr %12, align 8, !tbaa !17
  %469 = getelementptr inbounds ptr, ptr %467, i64 %468
  %470 = load ptr, ptr %469, align 8, !tbaa !5
  %471 = load i64, ptr %17, align 8, !tbaa !17
  %472 = getelementptr inbounds double, ptr %470, i64 %471
  store double %463, ptr %472, align 8, !tbaa !23
  br label %473

473:                                              ; preds = %462, %400
  br label %539

474:                                              ; preds = %305
  %475 = load i64, ptr %11, align 8, !tbaa !17
  %476 = icmp sge i64 %475, 0
  br i1 %476, label %477, label %506

477:                                              ; preds = %474
  %478 = load i64, ptr %17, align 8, !tbaa !17
  %479 = load ptr, ptr %3, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %479, i32 0, i32 3
  %481 = load i64, ptr %5, align 8, !tbaa !17
  %482 = load ptr, ptr %3, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %482, i32 0, i32 2
  %484 = load i64, ptr %483, align 8, !tbaa !20
  %485 = sub nsw i64 %481, %484
  %486 = load ptr, ptr %3, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %486, i32 0, i32 11
  %488 = load i64, ptr %11, align 8, !tbaa !17
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyrrElPKNS_9ae_matrixElPS0_lPNS_8ae_stateE(i64 noundef %478, ptr noundef %480, i64 noundef %485, ptr noundef %487, i64 noundef %488, ptr noundef %489)
  %490 = load i64, ptr %17, align 8, !tbaa !17
  %491 = load double, ptr %13, align 8, !tbaa !23
  %492 = load ptr, ptr %3, align 8, !tbaa !5
  %493 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %492, i32 0, i32 11
  %494 = load i64, ptr %11, align 8, !tbaa !17
  %495 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rmulrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %490, double noundef %491, ptr noundef %493, i64 noundef %494, ptr noundef %495)
  %496 = load double, ptr %15, align 8, !tbaa !23
  %497 = load ptr, ptr %3, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %497, i32 0, i32 11
  %499 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %498, i32 0, i32 6
  %500 = load ptr, ptr %499, align 8, !tbaa !22
  %501 = load i64, ptr %11, align 8, !tbaa !17
  %502 = getelementptr inbounds ptr, ptr %500, i64 %501
  %503 = load ptr, ptr %502, align 8, !tbaa !5
  %504 = load i64, ptr %17, align 8, !tbaa !17
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  store double %496, ptr %505, align 8, !tbaa !23
  br label %506

506:                                              ; preds = %477, %474
  %507 = load i64, ptr %12, align 8, !tbaa !17
  %508 = icmp sge i64 %507, 0
  br i1 %508, label %509, label %538

509:                                              ; preds = %506
  %510 = load i64, ptr %17, align 8, !tbaa !17
  %511 = load ptr, ptr %3, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %511, i32 0, i32 3
  %513 = load i64, ptr %5, align 8, !tbaa !17
  %514 = load ptr, ptr %3, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %514, i32 0, i32 2
  %516 = load i64, ptr %515, align 8, !tbaa !20
  %517 = sub nsw i64 %513, %516
  %518 = load ptr, ptr %3, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %518, i32 0, i32 11
  %520 = load i64, ptr %12, align 8, !tbaa !17
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyrrElPKNS_9ae_matrixElPS0_lPNS_8ae_stateE(i64 noundef %510, ptr noundef %512, i64 noundef %517, ptr noundef %519, i64 noundef %520, ptr noundef %521)
  %522 = load i64, ptr %17, align 8, !tbaa !17
  %523 = load double, ptr %14, align 8, !tbaa !23
  %524 = load ptr, ptr %3, align 8, !tbaa !5
  %525 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %524, i32 0, i32 11
  %526 = load i64, ptr %12, align 8, !tbaa !17
  %527 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rmulrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %522, double noundef %523, ptr noundef %525, i64 noundef %526, ptr noundef %527)
  %528 = load double, ptr %16, align 8, !tbaa !23
  %529 = load ptr, ptr %3, align 8, !tbaa !5
  %530 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %529, i32 0, i32 11
  %531 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %530, i32 0, i32 6
  %532 = load ptr, ptr %531, align 8, !tbaa !22
  %533 = load i64, ptr %12, align 8, !tbaa !17
  %534 = getelementptr inbounds ptr, ptr %532, i64 %533
  %535 = load ptr, ptr %534, align 8, !tbaa !5
  %536 = load i64, ptr %17, align 8, !tbaa !17
  %537 = getelementptr inbounds double, ptr %535, i64 %536
  store double %528, ptr %537, align 8, !tbaa !23
  br label %538

538:                                              ; preds = %509, %506
  br label %539

539:                                              ; preds = %538, %473
  %540 = load i64, ptr %11, align 8, !tbaa !17
  %541 = icmp sge i64 %540, 0
  br i1 %541, label %542, label %557

542:                                              ; preds = %539
  %543 = load i64, ptr %5, align 8, !tbaa !17
  %544 = load ptr, ptr %3, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %544, i32 0, i32 12
  %546 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %545, i32 0, i32 4
  %547 = load ptr, ptr %546, align 8, !tbaa !22
  %548 = load i64, ptr %11, align 8, !tbaa !17
  %549 = getelementptr inbounds i64, ptr %547, i64 %548
  store i64 %543, ptr %549, align 8, !tbaa !17
  %550 = load double, ptr %13, align 8, !tbaa !23
  %551 = load ptr, ptr %3, align 8, !tbaa !5
  %552 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %551, i32 0, i32 13
  %553 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %552, i32 0, i32 4
  %554 = load ptr, ptr %553, align 8, !tbaa !22
  %555 = load i64, ptr %11, align 8, !tbaa !17
  %556 = getelementptr inbounds double, ptr %554, i64 %555
  store double %550, ptr %556, align 8, !tbaa !23
  br label %557

557:                                              ; preds = %542, %539
  %558 = load i64, ptr %12, align 8, !tbaa !17
  %559 = icmp sge i64 %558, 0
  br i1 %559, label %560, label %575

560:                                              ; preds = %557
  %561 = load i64, ptr %5, align 8, !tbaa !17
  %562 = load ptr, ptr %3, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %562, i32 0, i32 12
  %564 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %563, i32 0, i32 4
  %565 = load ptr, ptr %564, align 8, !tbaa !22
  %566 = load i64, ptr %12, align 8, !tbaa !17
  %567 = getelementptr inbounds i64, ptr %565, i64 %566
  store i64 %561, ptr %567, align 8, !tbaa !17
  %568 = load double, ptr %14, align 8, !tbaa !23
  %569 = load ptr, ptr %3, align 8, !tbaa !5
  %570 = getelementptr inbounds %"struct.alglib_impl::xlinearconstraints", ptr %569, i32 0, i32 13
  %571 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %570, i32 0, i32 4
  %572 = load ptr, ptr %571, align 8, !tbaa !22
  %573 = load i64, ptr %12, align 8, !tbaa !17
  %574 = getelementptr inbounds double, ptr %572, i64 %573
  store double %568, ptr %574, align 8, !tbaa !23
  br label %575

575:                                              ; preds = %560, %557
  br label %576

576:                                              ; preds = %575, %257
  %577 = load i64, ptr %5, align 8, !tbaa !17
  %578 = add nsw i64 %577, 1
  store i64 %578, ptr %5, align 8, !tbaa !17
  br label %194, !llvm.loop !29

579:                                              ; preds = %194
  store i32 0, ptr %20, align 4
  br label %580

580:                                              ; preds = %579, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #3
  %581 = load i32, ptr %20, align 4
  switch i32 %581, label %583 [
    i32 0, label %582
    i32 1, label %582
  ]

582:                                              ; preds = %580, %580
  ret void

583:                                              ; preds = %580
  unreachable
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSN11alglib_impl18xlinearconstraintsE", !11, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !15, i64 104, !16, i64 472, !16, i64 536, !16, i64 600, !16, i64 664, !11, i64 728, !11, i64 736, !12, i64 744, !16, i64 824, !16, i64 888, !15, i64 952, !16, i64 1320, !16, i64 1384, !15, i64 1448}
!11 = !{!"long", !7, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !14, i64 40, !7, i64 72}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!15 = !{!"_ZTSN11alglib_impl12sparsematrixE", !16, i64 0, !16, i64 64, !16, i64 128, !16, i64 192, !16, i64 256, !11, i64 320, !11, i64 328, !11, i64 336, !11, i64 344, !11, i64 352, !11, i64 360}
!16 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !13, i64 16, !14, i64 24, !7, i64 56}
!17 = !{!11, !11, i64 0}
!18 = !{!10, !11, i64 728}
!19 = !{!10, !11, i64 736}
!20 = !{!10, !11, i64 16}
!21 = !{!10, !11, i64 8}
!22 = !{!7, !7, i64 0}
!23 = !{!24, !24, i64 0}
!24 = !{!"double", !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = distinct !{!28, !26}
!29 = distinct !{!29, !26}


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

@.str.410 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.411 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.413 = external hidden unnamed_addr constant [37 x i8], align 1

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl15xlcconverttooldEPNS_18xlinearconstraintsEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 {
  %3 = load i64, ptr %0, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 728
  %5 = getelementptr inbounds i8, ptr %0, i64 736
  %6 = getelementptr inbounds i8, ptr %0, i64 16
  %7 = getelementptr inbounds i8, ptr %0, i64 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, i8 0, i64 16, i1 false)
  %8 = load i64, ptr %6, align 8, !tbaa !16
  %9 = load i64, ptr %7, align 8, !tbaa !17
  %10 = add nsw i64 %9, %8
  %.not.not237 = icmp sgt i64 %10, 0
  br i1 %.not.not237, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %2
  %11 = getelementptr inbounds i8, ptr %0, i64 528
  %12 = getelementptr inbounds i8, ptr %0, i64 592
  %13 = getelementptr inbounds i8, ptr %0, i64 656
  %14 = getelementptr inbounds i8, ptr %0, i64 720
  br label %15

15:                                               ; preds = %.lr.ph, %52
  %16 = phi i64 [ %8, %.lr.ph ], [ %54, %52 ]
  %.0211238 = phi i64 [ 0, %.lr.ph ], [ %53, %52 ]
  %17 = icmp slt i64 %.0211238, %16
  br i1 %17, label %18, label %21

18:                                               ; preds = %15
  %19 = load ptr, ptr %13, align 8, !tbaa !18
  %20 = getelementptr inbounds double, ptr %19, i64 %.0211238
  br label %25

21:                                               ; preds = %15
  %22 = load ptr, ptr %11, align 8, !tbaa !18
  %23 = sub nsw i64 %.0211238, %16
  %24 = getelementptr inbounds double, ptr %22, i64 %23
  br label %25

25:                                               ; preds = %21, %18
  %.sink258 = phi ptr [ %12, %21 ], [ %14, %18 ]
  %.sink257 = phi i64 [ %23, %21 ], [ %.0211238, %18 ]
  %.0209.in = phi ptr [ %24, %21 ], [ %20, %18 ]
  %26 = load ptr, ptr %.sink258, align 8, !tbaa !18
  %27 = getelementptr inbounds double, ptr %26, i64 %.sink257
  %.0 = load double, ptr %27, align 8, !tbaa !19
  %.0209 = load double, ptr %.0209.in, align 8, !tbaa !19
  %28 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.0209, ptr noundef %1)
  br i1 %28, label %31, label %29

29:                                               ; preds = %25
  %30 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %.0209, ptr noundef %1)
  br label %31

31:                                               ; preds = %29, %25
  %32 = phi i1 [ true, %25 ], [ %30, %29 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %32, ptr noundef nonnull @.str.410, ptr noundef %1)
  %33 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.0, ptr noundef %1)
  br i1 %33, label %36, label %34

34:                                               ; preds = %31
  %35 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %.0, ptr noundef %1)
  br label %36

36:                                               ; preds = %34, %31
  %37 = phi i1 [ true, %31 ], [ %35, %34 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %37, ptr noundef nonnull @.str.411, ptr noundef %1)
  %38 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.0209, ptr noundef %1)
  br i1 %38, label %39, label %43

39:                                               ; preds = %36
  %40 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.0, ptr noundef %1)
  br i1 %40, label %41, label %43

41:                                               ; preds = %39
  %42 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %.0209, double noundef %.0)
  br i1 %42, label %.sink.split, label %43

43:                                               ; preds = %41, %39, %36
  %44 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.0209, ptr noundef %1)
  br i1 %44, label %45, label %48

45:                                               ; preds = %43
  %46 = load i64, ptr %5, align 8, !tbaa !21
  %47 = add nsw i64 %46, 1
  store i64 %47, ptr %5, align 8, !tbaa !21
  br label %48

48:                                               ; preds = %45, %43
  %49 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.0, ptr noundef %1)
  br i1 %49, label %.sink.split, label %52

.sink.split:                                      ; preds = %48, %41
  %.sink = phi ptr [ %4, %41 ], [ %5, %48 ]
  %50 = load i64, ptr %.sink, align 8, !tbaa !22
  %51 = add nsw i64 %50, 1
  store i64 %51, ptr %.sink, align 8, !tbaa !22
  br label %52

52:                                               ; preds = %.sink.split, %48
  %53 = add nuw nsw i64 %.0211238, 1
  %54 = load i64, ptr %6, align 8, !tbaa !16
  %55 = load i64, ptr %7, align 8, !tbaa !17
  %56 = add nsw i64 %55, %54
  %.not.not = icmp slt i64 %53, %56
  br i1 %.not.not, label %15, label %._crit_edge.loopexit, !llvm.loop !23

._crit_edge.loopexit:                             ; preds = %52
  %.pre = load i64, ptr %4, align 8, !tbaa !25
  %.pre256 = load i64, ptr %5, align 8, !tbaa !21
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %2
  %57 = phi i64 [ %.pre256, %._crit_edge.loopexit ], [ 0, %2 ]
  %58 = phi i64 [ %.pre, %._crit_edge.loopexit ], [ 0, %2 ]
  %59 = add nsw i64 %57, %58
  %60 = icmp eq i64 %59, 0
  br i1 %60, label %.loopexit, label %61

61:                                               ; preds = %._crit_edge
  %62 = add nsw i64 %3, 1
  %63 = getelementptr inbounds i8, ptr %0, i64 744
  tail call void @_ZN11alglib_impl7rallocmEllPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %59, i64 noundef %62, ptr noundef nonnull %63, ptr noundef %1)
  %64 = load i64, ptr %4, align 8, !tbaa !25
  %65 = load i64, ptr %5, align 8, !tbaa !21
  %66 = add nsw i64 %65, %64
  %67 = getelementptr inbounds i8, ptr %0, i64 824
  tail call void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %66, i64 noundef -1, ptr noundef nonnull %67, ptr noundef %1)
  %68 = load i64, ptr %4, align 8, !tbaa !25
  %69 = load i64, ptr %5, align 8, !tbaa !21
  %70 = add nsw i64 %69, %68
  %71 = getelementptr inbounds i8, ptr %0, i64 888
  tail call void @_ZN11alglib_impl10rsetallocvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %70, double noundef 0.000000e+00, ptr noundef nonnull %71, ptr noundef %1)
  %72 = load i64, ptr %6, align 8, !tbaa !16
  %73 = load i64, ptr %7, align 8, !tbaa !17
  %74 = add nsw i64 %73, %72
  %.not.not233249 = icmp sgt i64 %74, 0
  br i1 %.not.not233249, label %.lr.ph254, label %.loopexit

.lr.ph254:                                        ; preds = %61
  %75 = getelementptr inbounds i8, ptr %0, i64 528
  %76 = getelementptr inbounds i8, ptr %0, i64 592
  %77 = getelementptr inbounds i8, ptr %0, i64 656
  %78 = getelementptr inbounds i8, ptr %0, i64 720
  %79 = getelementptr inbounds i8, ptr %0, i64 24
  %80 = getelementptr inbounds i8, ptr %0, i64 816
  %81 = getelementptr inbounds i8, ptr %0, i64 288
  %82 = getelementptr inbounds i8, ptr %0, i64 160
  %83 = getelementptr inbounds i8, ptr %0, i64 224
  %84 = getelementptr inbounds i8, ptr %0, i64 880
  %85 = getelementptr inbounds i8, ptr %0, i64 944
  br label %86

86:                                               ; preds = %.lr.ph254, %258
  %87 = phi i64 [ %72, %.lr.ph254 ], [ %260, %258 ]
  %.1212252 = phi i64 [ 0, %.lr.ph254 ], [ %259, %258 ]
  %.0222251 = phi i64 [ %58, %.lr.ph254 ], [ %.3, %258 ]
  %.0224250 = phi i64 [ 0, %.lr.ph254 ], [ %.2226, %258 ]
  %88 = icmp slt i64 %.1212252, %87
  br i1 %88, label %89, label %92

89:                                               ; preds = %86
  %90 = load ptr, ptr %77, align 8, !tbaa !18
  %91 = getelementptr inbounds double, ptr %90, i64 %.1212252
  br label %96

92:                                               ; preds = %86
  %93 = load ptr, ptr %75, align 8, !tbaa !18
  %94 = sub nsw i64 %.1212252, %87
  %95 = getelementptr inbounds double, ptr %93, i64 %94
  br label %96

96:                                               ; preds = %92, %89
  %.sink263 = phi ptr [ %76, %92 ], [ %78, %89 ]
  %.sink262 = phi i64 [ %94, %92 ], [ %.1212252, %89 ]
  %.1210.in = phi ptr [ %95, %92 ], [ %91, %89 ]
  %97 = load ptr, ptr %.sink263, align 8, !tbaa !18
  %98 = getelementptr inbounds double, ptr %97, i64 %.sink262
  %.1 = load double, ptr %98, align 8, !tbaa !19
  %.1210 = load double, ptr %.1210.in, align 8, !tbaa !19
  %99 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.1210, ptr noundef %1)
  br i1 %99, label %102, label %100

100:                                              ; preds = %96
  %101 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.1, ptr noundef %1)
  br i1 %101, label %102, label %258

102:                                              ; preds = %100, %96
  %103 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.1210, ptr noundef %1)
  br i1 %103, label %104, label %114

104:                                              ; preds = %102
  %105 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.1, ptr noundef %1)
  br i1 %105, label %106, label %114

106:                                              ; preds = %104
  %107 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %.1210, double noundef %.1)
  br i1 %107, label %108, label %110

108:                                              ; preds = %106
  %109 = add nsw i64 %.0224250, 1
  br label %123

110:                                              ; preds = %106
  %111 = add nsw i64 %.0222251, 1
  %112 = fneg double %.1210
  %113 = add nsw i64 %.0222251, 2
  br label %123

114:                                              ; preds = %104, %102
  %115 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.1210, ptr noundef %1)
  br i1 %115, label %116, label %119

116:                                              ; preds = %114
  %117 = fneg double %.1210
  %118 = add nsw i64 %.0222251, 1
  br label %119

119:                                              ; preds = %116, %114
  %.1223 = phi i64 [ %118, %116 ], [ %.0222251, %114 ]
  %.0220 = phi i64 [ %.0222251, %116 ], [ -1, %114 ]
  %.0217 = phi double [ -1.000000e+00, %116 ], [ 0.000000e+00, %114 ]
  %.0214 = phi double [ %117, %116 ], [ 0.000000e+00, %114 ]
  %120 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.1, ptr noundef %1)
  br i1 %120, label %121, label %123

121:                                              ; preds = %119
  %122 = add nsw i64 %.1223, 1
  br label %123

123:                                              ; preds = %119, %121, %108, %110
  %.1225 = phi i64 [ %109, %108 ], [ %.0224250, %110 ], [ %.0224250, %121 ], [ %.0224250, %119 ]
  %.2 = phi i64 [ %.0222251, %108 ], [ %113, %110 ], [ %122, %121 ], [ %.1223, %119 ]
  %.1221 = phi i64 [ %.0224250, %108 ], [ %.0222251, %110 ], [ %.1223, %121 ], [ %.0220, %119 ]
  %.0219 = phi i64 [ -1, %108 ], [ %111, %110 ], [ -1, %121 ], [ -1, %119 ]
  %.1218 = phi double [ 1.000000e+00, %108 ], [ -1.000000e+00, %110 ], [ 1.000000e+00, %121 ], [ %.0217, %119 ]
  %.0216 = phi double [ 0.000000e+00, %108 ], [ 1.000000e+00, %110 ], [ 0.000000e+00, %121 ], [ 0.000000e+00, %119 ]
  %.1215 = phi double [ %.1210, %108 ], [ %112, %110 ], [ %.1, %121 ], [ %.0214, %119 ]
  %.0213 = phi double [ 0.000000e+00, %108 ], [ %.1, %110 ], [ 0.000000e+00, %121 ], [ 0.000000e+00, %119 ]
  %124 = load i64, ptr %4, align 8, !tbaa !25
  %125 = icmp sle i64 %.1225, %124
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %125, ptr noundef nonnull @.str.412, ptr noundef %1)
  %126 = load i64, ptr %4, align 8, !tbaa !25
  %127 = load i64, ptr %5, align 8, !tbaa !21
  %128 = add nsw i64 %127, %126
  %129 = icmp sle i64 %.2, %128
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %129, ptr noundef nonnull @.str.413, ptr noundef %1)
  %130 = load i64, ptr %6, align 8, !tbaa !16
  %131 = icmp slt i64 %.1212252, %130
  %132 = icmp sgt i64 %.1221, -1
  br i1 %131, label %133, label %228

133:                                              ; preds = %123
  br i1 %132, label %134, label %182

134:                                              ; preds = %133
  tail call void @_ZN11alglib_impl5rsetrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %3, double noundef 0.000000e+00, ptr noundef nonnull %63, i64 noundef %.1221, ptr noundef %1)
  %135 = load ptr, ptr %81, align 8, !tbaa !18
  %136 = getelementptr inbounds i64, ptr %135, i64 %.1212252
  %137 = load i64, ptr %136, align 8, !tbaa !22
  %138 = getelementptr inbounds i8, ptr %136, i64 8
  %139 = load i64, ptr %138, align 8, !tbaa !22
  %.not.not234239 = icmp slt i64 %137, %139
  br i1 %.not.not234239, label %.lr.ph242.preheader, label %._crit_edge243

.lr.ph242.preheader:                              ; preds = %134
  %140 = sub i64 %139, %137
  %.neg = add i64 %137, 1
  %xtraiter = and i64 %140, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph242.prol.loopexit, label %.lr.ph242.prol

.lr.ph242.prol:                                   ; preds = %.lr.ph242.preheader
  %141 = load ptr, ptr %82, align 8, !tbaa !18
  %142 = getelementptr inbounds double, ptr %141, i64 %137
  %143 = load double, ptr %142, align 8, !tbaa !19
  %144 = fmul double %.1218, %143
  %145 = load ptr, ptr %80, align 8, !tbaa !18
  %146 = getelementptr inbounds ptr, ptr %145, i64 %.1221
  %147 = load ptr, ptr %146, align 8, !tbaa !26
  %148 = load ptr, ptr %83, align 8, !tbaa !18
  %149 = getelementptr inbounds i64, ptr %148, i64 %137
  %150 = load i64, ptr %149, align 8, !tbaa !22
  %151 = getelementptr inbounds double, ptr %147, i64 %150
  store double %144, ptr %151, align 8, !tbaa !19
  %152 = add nsw i64 %137, 1
  br label %.lr.ph242.prol.loopexit

.lr.ph242.prol.loopexit:                          ; preds = %.lr.ph242.prol, %.lr.ph242.preheader
  %.0227240.unr = phi i64 [ %137, %.lr.ph242.preheader ], [ %152, %.lr.ph242.prol ]
  %153 = icmp eq i64 %139, %.neg
  br i1 %153, label %._crit_edge243, label %.lr.ph242

.lr.ph242:                                        ; preds = %.lr.ph242.prol.loopexit, %.lr.ph242
  %.0227240 = phi i64 [ %177, %.lr.ph242 ], [ %.0227240.unr, %.lr.ph242.prol.loopexit ]
  %154 = load ptr, ptr %82, align 8, !tbaa !18
  %155 = getelementptr inbounds double, ptr %154, i64 %.0227240
  %156 = load double, ptr %155, align 8, !tbaa !19
  %157 = fmul double %.1218, %156
  %158 = load ptr, ptr %80, align 8, !tbaa !18
  %159 = getelementptr inbounds ptr, ptr %158, i64 %.1221
  %160 = load ptr, ptr %159, align 8, !tbaa !26
  %161 = load ptr, ptr %83, align 8, !tbaa !18
  %162 = getelementptr inbounds i64, ptr %161, i64 %.0227240
  %163 = load i64, ptr %162, align 8, !tbaa !22
  %164 = getelementptr inbounds double, ptr %160, i64 %163
  store double %157, ptr %164, align 8, !tbaa !19
  %165 = add nsw i64 %.0227240, 1
  %166 = load ptr, ptr %82, align 8, !tbaa !18
  %167 = getelementptr inbounds double, ptr %166, i64 %165
  %168 = load double, ptr %167, align 8, !tbaa !19
  %169 = fmul double %.1218, %168
  %170 = load ptr, ptr %80, align 8, !tbaa !18
  %171 = getelementptr inbounds ptr, ptr %170, i64 %.1221
  %172 = load ptr, ptr %171, align 8, !tbaa !26
  %173 = load ptr, ptr %83, align 8, !tbaa !18
  %174 = getelementptr inbounds i64, ptr %173, i64 %165
  %175 = load i64, ptr %174, align 8, !tbaa !22
  %176 = getelementptr inbounds double, ptr %172, i64 %175
  store double %169, ptr %176, align 8, !tbaa !19
  %177 = add nsw i64 %.0227240, 2
  %exitcond.not.1 = icmp eq i64 %177, %139
  br i1 %exitcond.not.1, label %._crit_edge243, label %.lr.ph242, !llvm.loop !27

._crit_edge243:                                   ; preds = %.lr.ph242.prol.loopexit, %.lr.ph242, %134
  %178 = load ptr, ptr %80, align 8, !tbaa !18
  %179 = getelementptr inbounds ptr, ptr %178, i64 %.1221
  %180 = load ptr, ptr %179, align 8, !tbaa !26
  %181 = getelementptr inbounds double, ptr %180, i64 %3
  store double %.1215, ptr %181, align 8, !tbaa !19
  br label %182

182:                                              ; preds = %._crit_edge243, %133
  %183 = icmp sgt i64 %.0219, -1
  br i1 %183, label %184, label %244

184:                                              ; preds = %182
  tail call void @_ZN11alglib_impl5rsetrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %3, double noundef 0.000000e+00, ptr noundef nonnull %63, i64 noundef %.0219, ptr noundef %1)
  %185 = load ptr, ptr %81, align 8, !tbaa !18
  %186 = getelementptr inbounds i64, ptr %185, i64 %.1212252
  %187 = load i64, ptr %186, align 8, !tbaa !22
  %188 = getelementptr inbounds i8, ptr %186, i64 8
  %189 = load i64, ptr %188, align 8, !tbaa !22
  %.not.not235244 = icmp slt i64 %187, %189
  br i1 %.not.not235244, label %.lr.ph247.preheader, label %.sink.split264

.lr.ph247.preheader:                              ; preds = %184
  %190 = sub i64 %189, %187
  %.neg271 = add i64 %187, 1
  %xtraiter269 = and i64 %190, 1
  %lcmp.mod270.not = icmp eq i64 %xtraiter269, 0
  br i1 %lcmp.mod270.not, label %.lr.ph247.prol.loopexit, label %.lr.ph247.prol

.lr.ph247.prol:                                   ; preds = %.lr.ph247.preheader
  %191 = load ptr, ptr %82, align 8, !tbaa !18
  %192 = getelementptr inbounds double, ptr %191, i64 %187
  %193 = load double, ptr %192, align 8, !tbaa !19
  %194 = fmul double %.0216, %193
  %195 = load ptr, ptr %80, align 8, !tbaa !18
  %196 = getelementptr inbounds ptr, ptr %195, i64 %.0219
  %197 = load ptr, ptr %196, align 8, !tbaa !26
  %198 = load ptr, ptr %83, align 8, !tbaa !18
  %199 = getelementptr inbounds i64, ptr %198, i64 %187
  %200 = load i64, ptr %199, align 8, !tbaa !22
  %201 = getelementptr inbounds double, ptr %197, i64 %200
  store double %194, ptr %201, align 8, !tbaa !19
  %202 = add nsw i64 %187, 1
  br label %.lr.ph247.prol.loopexit

.lr.ph247.prol.loopexit:                          ; preds = %.lr.ph247.prol, %.lr.ph247.preheader
  %.1228245.unr = phi i64 [ %187, %.lr.ph247.preheader ], [ %202, %.lr.ph247.prol ]
  %203 = icmp eq i64 %189, %.neg271
  br i1 %203, label %.sink.split264, label %.lr.ph247

.lr.ph247:                                        ; preds = %.lr.ph247.prol.loopexit, %.lr.ph247
  %.1228245 = phi i64 [ %227, %.lr.ph247 ], [ %.1228245.unr, %.lr.ph247.prol.loopexit ]
  %204 = load ptr, ptr %82, align 8, !tbaa !18
  %205 = getelementptr inbounds double, ptr %204, i64 %.1228245
  %206 = load double, ptr %205, align 8, !tbaa !19
  %207 = fmul double %.0216, %206
  %208 = load ptr, ptr %80, align 8, !tbaa !18
  %209 = getelementptr inbounds ptr, ptr %208, i64 %.0219
  %210 = load ptr, ptr %209, align 8, !tbaa !26
  %211 = load ptr, ptr %83, align 8, !tbaa !18
  %212 = getelementptr inbounds i64, ptr %211, i64 %.1228245
  %213 = load i64, ptr %212, align 8, !tbaa !22
  %214 = getelementptr inbounds double, ptr %210, i64 %213
  store double %207, ptr %214, align 8, !tbaa !19
  %215 = add nsw i64 %.1228245, 1
  %216 = load ptr, ptr %82, align 8, !tbaa !18
  %217 = getelementptr inbounds double, ptr %216, i64 %215
  %218 = load double, ptr %217, align 8, !tbaa !19
  %219 = fmul double %.0216, %218
  %220 = load ptr, ptr %80, align 8, !tbaa !18
  %221 = getelementptr inbounds ptr, ptr %220, i64 %.0219
  %222 = load ptr, ptr %221, align 8, !tbaa !26
  %223 = load ptr, ptr %83, align 8, !tbaa !18
  %224 = getelementptr inbounds i64, ptr %223, i64 %215
  %225 = load i64, ptr %224, align 8, !tbaa !22
  %226 = getelementptr inbounds double, ptr %222, i64 %225
  store double %219, ptr %226, align 8, !tbaa !19
  %227 = add nsw i64 %.1228245, 2
  %exitcond255.not.1 = icmp eq i64 %227, %189
  br i1 %exitcond255.not.1, label %.sink.split264, label %.lr.ph247, !llvm.loop !28

228:                                              ; preds = %123
  br i1 %132, label %229, label %235

229:                                              ; preds = %228
  %230 = sub nsw i64 %.1212252, %130
  tail call void @_ZN11alglib_impl7rcopyrrElPKNS_9ae_matrixElPS0_lPNS_8ae_stateE(i64 noundef %3, ptr noundef nonnull %79, i64 noundef %230, ptr noundef nonnull %63, i64 noundef %.1221, ptr noundef %1)
  tail call void @_ZN11alglib_impl5rmulrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %3, double noundef %.1218, ptr noundef nonnull %63, i64 noundef %.1221, ptr noundef %1)
  %231 = load ptr, ptr %80, align 8, !tbaa !18
  %232 = getelementptr inbounds ptr, ptr %231, i64 %.1221
  %233 = load ptr, ptr %232, align 8, !tbaa !26
  %234 = getelementptr inbounds double, ptr %233, i64 %3
  store double %.1215, ptr %234, align 8, !tbaa !19
  br label %235

235:                                              ; preds = %229, %228
  %236 = icmp sgt i64 %.0219, -1
  br i1 %236, label %237, label %244

237:                                              ; preds = %235
  %238 = load i64, ptr %6, align 8, !tbaa !16
  %239 = sub nsw i64 %.1212252, %238
  tail call void @_ZN11alglib_impl7rcopyrrElPKNS_9ae_matrixElPS0_lPNS_8ae_stateE(i64 noundef %3, ptr noundef nonnull %79, i64 noundef %239, ptr noundef nonnull %63, i64 noundef %.0219, ptr noundef %1)
  tail call void @_ZN11alglib_impl5rmulrEldPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %3, double noundef %.0216, ptr noundef nonnull %63, i64 noundef %.0219, ptr noundef %1)
  br label %.sink.split264

.sink.split264:                                   ; preds = %.lr.ph247.prol.loopexit, %.lr.ph247, %184, %237
  %240 = load ptr, ptr %80, align 8, !tbaa !18
  %241 = getelementptr inbounds ptr, ptr %240, i64 %.0219
  %242 = load ptr, ptr %241, align 8, !tbaa !26
  %243 = getelementptr inbounds double, ptr %242, i64 %3
  store double %.0213, ptr %243, align 8, !tbaa !19
  br label %244

244:                                              ; preds = %.sink.split264, %235, %182
  %245 = icmp sgt i64 %.1221, -1
  br i1 %245, label %246, label %251

246:                                              ; preds = %244
  %247 = load ptr, ptr %84, align 8, !tbaa !18
  %248 = getelementptr inbounds i64, ptr %247, i64 %.1221
  store i64 %.1212252, ptr %248, align 8, !tbaa !22
  %249 = load ptr, ptr %85, align 8, !tbaa !18
  %250 = getelementptr inbounds double, ptr %249, i64 %.1221
  store double %.1218, ptr %250, align 8, !tbaa !19
  br label %251

251:                                              ; preds = %246, %244
  %252 = icmp sgt i64 %.0219, -1
  br i1 %252, label %253, label %258

253:                                              ; preds = %251
  %254 = load ptr, ptr %84, align 8, !tbaa !18
  %255 = getelementptr inbounds i64, ptr %254, i64 %.0219
  store i64 %.1212252, ptr %255, align 8, !tbaa !22
  %256 = load ptr, ptr %85, align 8, !tbaa !18
  %257 = getelementptr inbounds double, ptr %256, i64 %.0219
  store double %.0216, ptr %257, align 8, !tbaa !19
  br label %258

258:                                              ; preds = %251, %253, %100
  %.2226 = phi i64 [ %.1225, %253 ], [ %.1225, %251 ], [ %.0224250, %100 ]
  %.3 = phi i64 [ %.2, %253 ], [ %.2, %251 ], [ %.0222251, %100 ]
  %259 = add nuw nsw i64 %.1212252, 1
  %260 = load i64, ptr %6, align 8, !tbaa !16
  %261 = load i64, ptr %7, align 8, !tbaa !17
  %262 = add nsw i64 %261, %260
  %.not.not233 = icmp slt i64 %259, %262
  br i1 %.not.not233, label %86, label %.loopexit, !llvm.loop !29

.loopexit:                                        ; preds = %258, %61, %._crit_edge
  ret void
}

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

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

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

!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 0}
!6 = !{!"_ZTSN11alglib_impl18xlinearconstraintsE", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !14, i64 104, !15, i64 472, !15, i64 536, !15, i64 600, !15, i64 664, !7, i64 728, !7, i64 736, !10, i64 744, !15, i64 824, !15, i64 888, !14, i64 952, !15, i64 1320, !15, i64 1384, !14, i64 1448}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !12, i64 40, !8, i64 72}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl12sparsematrixE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !7, i64 360}
!15 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !12, i64 24, !8, i64 56}
!16 = !{!6, !7, i64 16}
!17 = !{!6, !7, i64 8}
!18 = !{!8, !8, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"double", !8, i64 0}
!21 = !{!6, !7, i64 736}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!6, !7, i64 728}
!26 = !{!13, !13, i64 0}
!27 = distinct !{!27, !24}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass