; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dlaqtr)

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_false = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c_b21 = external hidden global double, align 8
@c_b25 = external hidden global double, align 8
@c_true = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @dlaqtr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) #0 {
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca [4 x double], align 16
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca [4 x double], align 16
  %39 = alloca double, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca i64, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca i64, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca i64, align 8
  %60 = alloca double, align 8
  %61 = alloca i32, align 4
  store ptr %0, ptr %13, align 8, !tbaa !5
  store ptr %1, ptr %14, align 8, !tbaa !5
  store ptr %2, ptr %15, align 8, !tbaa !5
  store ptr %3, ptr %16, align 8, !tbaa !5
  store ptr %4, ptr %17, align 8, !tbaa !5
  store ptr %5, ptr %18, align 8, !tbaa !5
  store ptr %6, ptr %19, align 8, !tbaa !5
  store ptr %7, ptr %20, align 8, !tbaa !5
  store ptr %8, ptr %21, align 8, !tbaa !5
  store ptr %9, ptr %22, align 8, !tbaa !5
  store ptr %10, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  %62 = load ptr, ptr %17, align 8, !tbaa !5
  %63 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %63, ptr %24, align 8, !tbaa !9
  %64 = load i64, ptr %24, align 8, !tbaa !9
  %65 = add nsw i64 1, %64
  store i64 %65, ptr %25, align 8, !tbaa !9
  %66 = load i64, ptr %25, align 8, !tbaa !9
  %67 = load ptr, ptr %16, align 8, !tbaa !5
  %68 = sub i64 0, %66
  %69 = getelementptr inbounds double, ptr %67, i64 %68
  store ptr %69, ptr %16, align 8, !tbaa !5
  %70 = load ptr, ptr %18, align 8, !tbaa !5
  %71 = getelementptr inbounds double, ptr %70, i32 -1
  store ptr %71, ptr %18, align 8, !tbaa !5
  %72 = load ptr, ptr %21, align 8, !tbaa !5
  %73 = getelementptr inbounds double, ptr %72, i32 -1
  store ptr %73, ptr %21, align 8, !tbaa !5
  %74 = load ptr, ptr %22, align 8, !tbaa !5
  %75 = getelementptr inbounds double, ptr %74, i32 -1
  store ptr %75, ptr %22, align 8, !tbaa !5
  %76 = load ptr, ptr %13, align 8, !tbaa !5
  %77 = load i64, ptr %76, align 8, !tbaa !9
  %78 = icmp ne i64 %77, 0
  %79 = xor i1 %78, true
  %80 = zext i1 %79 to i32
  %81 = sext i32 %80 to i64
  store i64 %81, ptr %59, align 8, !tbaa !9
  %82 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %82, align 8, !tbaa !9
  %83 = load ptr, ptr %15, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  %85 = icmp eq i64 %84, 0
  br i1 %85, label %86, label %87

86:                                               ; preds = %11
  store i32 0, ptr %12, align 4
  store i32 1, ptr %61, align 4
  br label %2523

87:                                               ; preds = %11
  %88 = call double @dlamch_(ptr noundef @.str)
  store double %88, ptr %48, align 8, !tbaa !11
  %89 = call double @dlamch_(ptr noundef @.str.1)
  %90 = load double, ptr %48, align 8, !tbaa !11
  %91 = fdiv double %89, %90
  store double %91, ptr %60, align 8, !tbaa !11
  %92 = load double, ptr %60, align 8, !tbaa !11
  %93 = fdiv double 1.000000e+00, %92
  store double %93, ptr %58, align 8, !tbaa !11
  %94 = load ptr, ptr %15, align 8, !tbaa !5
  %95 = load ptr, ptr %15, align 8, !tbaa !5
  %96 = load ptr, ptr %16, align 8, !tbaa !5
  %97 = load i64, ptr %25, align 8, !tbaa !9
  %98 = getelementptr inbounds double, ptr %96, i64 %97
  %99 = load ptr, ptr %17, align 8, !tbaa !5
  %100 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  %101 = call double @dlange_(ptr noundef @.str.2, ptr noundef %94, ptr noundef %95, ptr noundef %98, ptr noundef %99, ptr noundef %100)
  store double %101, ptr %56, align 8, !tbaa !11
  %102 = load ptr, ptr %14, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = icmp ne i64 %103, 0
  br i1 %104, label %143, label %105

105:                                              ; preds = %87
  %106 = load double, ptr %56, align 8, !tbaa !11
  store double %106, ptr %28, align 8, !tbaa !11
  %107 = load ptr, ptr %19, align 8, !tbaa !5
  %108 = load double, ptr %107, align 8, !tbaa !11
  %109 = fcmp oge double %108, 0.000000e+00
  br i1 %109, label %110, label %113

110:                                              ; preds = %105
  %111 = load ptr, ptr %19, align 8, !tbaa !5
  %112 = load double, ptr %111, align 8, !tbaa !11
  br label %117

113:                                              ; preds = %105
  %114 = load ptr, ptr %19, align 8, !tbaa !5
  %115 = load double, ptr %114, align 8, !tbaa !11
  %116 = fneg double %115
  br label %117

117:                                              ; preds = %113, %110
  %118 = phi double [ %112, %110 ], [ %116, %113 ]
  store double %118, ptr %29, align 8, !tbaa !11
  %119 = load double, ptr %28, align 8, !tbaa !11
  %120 = load double, ptr %29, align 8, !tbaa !11
  %121 = fcmp oge double %119, %120
  br i1 %121, label %122, label %124

122:                                              ; preds = %117
  %123 = load double, ptr %28, align 8, !tbaa !11
  br label %126

124:                                              ; preds = %117
  %125 = load double, ptr %29, align 8, !tbaa !11
  br label %126

126:                                              ; preds = %124, %122
  %127 = phi double [ %123, %122 ], [ %125, %124 ]
  store double %127, ptr %28, align 8, !tbaa !11
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = load ptr, ptr %18, align 8, !tbaa !5
  %130 = getelementptr inbounds double, ptr %129, i64 1
  %131 = load ptr, ptr %15, align 8, !tbaa !5
  %132 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  %133 = call double @dlange_(ptr noundef @.str.2, ptr noundef %128, ptr noundef @c__1, ptr noundef %130, ptr noundef %131, ptr noundef %132)
  store double %133, ptr %29, align 8, !tbaa !11
  %134 = load double, ptr %28, align 8, !tbaa !11
  %135 = load double, ptr %29, align 8, !tbaa !11
  %136 = fcmp oge double %134, %135
  br i1 %136, label %137, label %139

137:                                              ; preds = %126
  %138 = load double, ptr %28, align 8, !tbaa !11
  br label %141

139:                                              ; preds = %126
  %140 = load double, ptr %29, align 8, !tbaa !11
  br label %141

141:                                              ; preds = %139, %137
  %142 = phi double [ %138, %137 ], [ %140, %139 ]
  store double %142, ptr %56, align 8, !tbaa !11
  br label %143

143:                                              ; preds = %141, %87
  %144 = load double, ptr %60, align 8, !tbaa !11
  store double %144, ptr %28, align 8, !tbaa !11
  %145 = load double, ptr %48, align 8, !tbaa !11
  %146 = load double, ptr %56, align 8, !tbaa !11
  %147 = fmul double %145, %146
  store double %147, ptr %29, align 8, !tbaa !11
  %148 = load double, ptr %28, align 8, !tbaa !11
  %149 = load double, ptr %29, align 8, !tbaa !11
  %150 = fcmp oge double %148, %149
  br i1 %150, label %151, label %153

151:                                              ; preds = %143
  %152 = load double, ptr %28, align 8, !tbaa !11
  br label %155

153:                                              ; preds = %143
  %154 = load double, ptr %29, align 8, !tbaa !11
  br label %155

155:                                              ; preds = %153, %151
  %156 = phi double [ %152, %151 ], [ %154, %153 ]
  store double %156, ptr %52, align 8, !tbaa !11
  %157 = load ptr, ptr %22, align 8, !tbaa !5
  %158 = getelementptr inbounds double, ptr %157, i64 1
  store double 0.000000e+00, ptr %158, align 8, !tbaa !11
  %159 = load ptr, ptr %15, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  store i64 %160, ptr %26, align 8, !tbaa !9
  store i64 2, ptr %36, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %178, %155
  %162 = load i64, ptr %36, align 8, !tbaa !9
  %163 = load i64, ptr %26, align 8, !tbaa !9
  %164 = icmp sle i64 %162, %163
  br i1 %164, label %165, label %181

165:                                              ; preds = %161
  %166 = load i64, ptr %36, align 8, !tbaa !9
  %167 = sub nsw i64 %166, 1
  store i64 %167, ptr %27, align 8, !tbaa !9
  %168 = load ptr, ptr %16, align 8, !tbaa !5
  %169 = load i64, ptr %36, align 8, !tbaa !9
  %170 = load i64, ptr %24, align 8, !tbaa !9
  %171 = mul nsw i64 %169, %170
  %172 = add nsw i64 %171, 1
  %173 = getelementptr inbounds double, ptr %168, i64 %172
  %174 = call double @f2c_dasum(ptr noundef %27, ptr noundef %173, ptr noundef @c__1)
  %175 = load ptr, ptr %22, align 8, !tbaa !5
  %176 = load i64, ptr %36, align 8, !tbaa !9
  %177 = getelementptr inbounds double, ptr %175, i64 %176
  store double %174, ptr %177, align 8, !tbaa !11
  br label %178

178:                                              ; preds = %165
  %179 = load i64, ptr %36, align 8, !tbaa !9
  %180 = add nsw i64 %179, 1
  store i64 %180, ptr %36, align 8, !tbaa !9
  br label %161, !llvm.loop !13

181:                                              ; preds = %161
  %182 = load ptr, ptr %14, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = icmp ne i64 %183, 0
  br i1 %184, label %215, label %185

185:                                              ; preds = %181
  %186 = load ptr, ptr %15, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  store i64 %187, ptr %26, align 8, !tbaa !9
  store i64 2, ptr %35, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %211, %185
  %189 = load i64, ptr %35, align 8, !tbaa !9
  %190 = load i64, ptr %26, align 8, !tbaa !9
  %191 = icmp sle i64 %189, %190
  br i1 %191, label %192, label %214

192:                                              ; preds = %188
  %193 = load ptr, ptr %18, align 8, !tbaa !5
  %194 = load i64, ptr %35, align 8, !tbaa !9
  %195 = getelementptr inbounds double, ptr %193, i64 %194
  %196 = load double, ptr %195, align 8, !tbaa !11
  store double %196, ptr %28, align 8, !tbaa !11
  %197 = load double, ptr %28, align 8, !tbaa !11
  %198 = fcmp oge double %197, 0.000000e+00
  br i1 %198, label %199, label %201

199:                                              ; preds = %192
  %200 = load double, ptr %28, align 8, !tbaa !11
  br label %204

201:                                              ; preds = %192
  %202 = load double, ptr %28, align 8, !tbaa !11
  %203 = fneg double %202
  br label %204

204:                                              ; preds = %201, %199
  %205 = phi double [ %200, %199 ], [ %203, %201 ]
  %206 = load ptr, ptr %22, align 8, !tbaa !5
  %207 = load i64, ptr %35, align 8, !tbaa !9
  %208 = getelementptr inbounds double, ptr %206, i64 %207
  %209 = load double, ptr %208, align 8, !tbaa !11
  %210 = fadd double %209, %205
  store double %210, ptr %208, align 8, !tbaa !11
  br label %211

211:                                              ; preds = %204
  %212 = load i64, ptr %35, align 8, !tbaa !9
  %213 = add nsw i64 %212, 1
  store i64 %213, ptr %35, align 8, !tbaa !9
  br label %188, !llvm.loop !15

214:                                              ; preds = %188
  br label %215

215:                                              ; preds = %214, %181
  %216 = load ptr, ptr %15, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = shl i64 %217, 1
  store i64 %218, ptr %43, align 8, !tbaa !9
  %219 = load ptr, ptr %15, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  store i64 %220, ptr %42, align 8, !tbaa !9
  %221 = load ptr, ptr %14, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp ne i64 %222, 0
  br i1 %223, label %226, label %224

224:                                              ; preds = %215
  %225 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %225, ptr %42, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %224, %215
  %227 = load ptr, ptr %21, align 8, !tbaa !5
  %228 = getelementptr inbounds double, ptr %227, i64 1
  %229 = call i64 @f2c_idamax(ptr noundef %42, ptr noundef %228, ptr noundef @c__1)
  store i64 %229, ptr %37, align 8, !tbaa !9
  %230 = load ptr, ptr %21, align 8, !tbaa !5
  %231 = load i64, ptr %37, align 8, !tbaa !9
  %232 = getelementptr inbounds double, ptr %230, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !11
  store double %233, ptr %28, align 8, !tbaa !11
  %234 = load double, ptr %28, align 8, !tbaa !11
  %235 = fcmp oge double %234, 0.000000e+00
  br i1 %235, label %236, label %238

236:                                              ; preds = %226
  %237 = load double, ptr %28, align 8, !tbaa !11
  br label %241

238:                                              ; preds = %226
  %239 = load double, ptr %28, align 8, !tbaa !11
  %240 = fneg double %239
  br label %241

241:                                              ; preds = %238, %236
  %242 = phi double [ %237, %236 ], [ %240, %238 ]
  store double %242, ptr %53, align 8, !tbaa !11
  %243 = load ptr, ptr %20, align 8, !tbaa !5
  store double 1.000000e+00, ptr %243, align 8, !tbaa !11
  %244 = load double, ptr %53, align 8, !tbaa !11
  %245 = load double, ptr %58, align 8, !tbaa !11
  %246 = fcmp ogt double %244, %245
  br i1 %246, label %247, label %257

247:                                              ; preds = %241
  %248 = load double, ptr %58, align 8, !tbaa !11
  %249 = load double, ptr %53, align 8, !tbaa !11
  %250 = fdiv double %248, %249
  %251 = load ptr, ptr %20, align 8, !tbaa !5
  store double %250, ptr %251, align 8, !tbaa !11
  %252 = load ptr, ptr %20, align 8, !tbaa !5
  %253 = load ptr, ptr %21, align 8, !tbaa !5
  %254 = getelementptr inbounds double, ptr %253, i64 1
  %255 = call i32 @f2c_dscal(ptr noundef %42, ptr noundef %252, ptr noundef %254, ptr noundef @c__1)
  %256 = load double, ptr %58, align 8, !tbaa !11
  store double %256, ptr %53, align 8, !tbaa !11
  br label %257

257:                                              ; preds = %247, %241
  %258 = load ptr, ptr %14, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp ne i64 %259, 0
  br i1 %260, label %261, label %1045

261:                                              ; preds = %257
  %262 = load i64, ptr %59, align 8, !tbaa !9
  %263 = icmp ne i64 %262, 0
  br i1 %263, label %264, label %644

264:                                              ; preds = %261
  %265 = load ptr, ptr %15, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  store i64 %266, ptr %54, align 8, !tbaa !9
  %267 = load ptr, ptr %15, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  store i64 %268, ptr %36, align 8, !tbaa !9
  br label %269

269:                                              ; preds = %640, %264
  %270 = load i64, ptr %36, align 8, !tbaa !9
  %271 = icmp sge i64 %270, 1
  br i1 %271, label %272, label %643

272:                                              ; preds = %269
  %273 = load i64, ptr %36, align 8, !tbaa !9
  %274 = load i64, ptr %54, align 8, !tbaa !9
  %275 = icmp sgt i64 %273, %274
  br i1 %275, label %276, label %277

276:                                              ; preds = %272
  br label %639

277:                                              ; preds = %272
  %278 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %278, ptr %40, align 8, !tbaa !9
  %279 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %279, ptr %41, align 8, !tbaa !9
  %280 = load i64, ptr %36, align 8, !tbaa !9
  %281 = sub nsw i64 %280, 1
  store i64 %281, ptr %54, align 8, !tbaa !9
  %282 = load i64, ptr %36, align 8, !tbaa !9
  %283 = icmp sgt i64 %282, 1
  br i1 %283, label %284, label %301

284:                                              ; preds = %277
  %285 = load ptr, ptr %16, align 8, !tbaa !5
  %286 = load i64, ptr %36, align 8, !tbaa !9
  %287 = load i64, ptr %36, align 8, !tbaa !9
  %288 = sub nsw i64 %287, 1
  %289 = load i64, ptr %24, align 8, !tbaa !9
  %290 = mul nsw i64 %288, %289
  %291 = add nsw i64 %286, %290
  %292 = getelementptr inbounds double, ptr %285, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !11
  %294 = fcmp une double %293, 0.000000e+00
  br i1 %294, label %295, label %300

295:                                              ; preds = %284
  %296 = load i64, ptr %36, align 8, !tbaa !9
  %297 = sub nsw i64 %296, 1
  store i64 %297, ptr %40, align 8, !tbaa !9
  %298 = load i64, ptr %36, align 8, !tbaa !9
  %299 = sub nsw i64 %298, 2
  store i64 %299, ptr %54, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %295, %284
  br label %301

301:                                              ; preds = %300, %277
  %302 = load i64, ptr %40, align 8, !tbaa !9
  %303 = load i64, ptr %41, align 8, !tbaa !9
  %304 = icmp eq i64 %302, %303
  br i1 %304, label %305, label %463

305:                                              ; preds = %301
  %306 = load ptr, ptr %21, align 8, !tbaa !5
  %307 = load i64, ptr %40, align 8, !tbaa !9
  %308 = getelementptr inbounds double, ptr %306, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !11
  store double %309, ptr %28, align 8, !tbaa !11
  %310 = load double, ptr %28, align 8, !tbaa !11
  %311 = fcmp oge double %310, 0.000000e+00
  br i1 %311, label %312, label %314

312:                                              ; preds = %305
  %313 = load double, ptr %28, align 8, !tbaa !11
  br label %317

314:                                              ; preds = %305
  %315 = load double, ptr %28, align 8, !tbaa !11
  %316 = fneg double %315
  br label %317

317:                                              ; preds = %314, %312
  %318 = phi double [ %313, %312 ], [ %316, %314 ]
  store double %318, ptr %45, align 8, !tbaa !11
  %319 = load ptr, ptr %16, align 8, !tbaa !5
  %320 = load i64, ptr %40, align 8, !tbaa !9
  %321 = load i64, ptr %40, align 8, !tbaa !9
  %322 = load i64, ptr %24, align 8, !tbaa !9
  %323 = mul nsw i64 %321, %322
  %324 = add nsw i64 %320, %323
  %325 = getelementptr inbounds double, ptr %319, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !11
  store double %326, ptr %28, align 8, !tbaa !11
  %327 = load double, ptr %28, align 8, !tbaa !11
  %328 = fcmp oge double %327, 0.000000e+00
  br i1 %328, label %329, label %331

329:                                              ; preds = %317
  %330 = load double, ptr %28, align 8, !tbaa !11
  br label %334

331:                                              ; preds = %317
  %332 = load double, ptr %28, align 8, !tbaa !11
  %333 = fneg double %332
  br label %334

334:                                              ; preds = %331, %329
  %335 = phi double [ %330, %329 ], [ %333, %331 ]
  store double %335, ptr %49, align 8, !tbaa !11
  %336 = load ptr, ptr %16, align 8, !tbaa !5
  %337 = load i64, ptr %40, align 8, !tbaa !9
  %338 = load i64, ptr %40, align 8, !tbaa !9
  %339 = load i64, ptr %24, align 8, !tbaa !9
  %340 = mul nsw i64 %338, %339
  %341 = add nsw i64 %337, %340
  %342 = getelementptr inbounds double, ptr %336, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !11
  store double %343, ptr %50, align 8, !tbaa !11
  %344 = load double, ptr %49, align 8, !tbaa !11
  %345 = load double, ptr %52, align 8, !tbaa !11
  %346 = fcmp olt double %344, %345
  br i1 %346, label %347, label %351

347:                                              ; preds = %334
  %348 = load double, ptr %52, align 8, !tbaa !11
  store double %348, ptr %50, align 8, !tbaa !11
  %349 = load double, ptr %52, align 8, !tbaa !11
  store double %349, ptr %49, align 8, !tbaa !11
  %350 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 1, ptr %350, align 8, !tbaa !9
  br label %351

351:                                              ; preds = %347, %334
  %352 = load double, ptr %45, align 8, !tbaa !11
  %353 = fcmp oeq double %352, 0.000000e+00
  br i1 %353, label %354, label %355

354:                                              ; preds = %351
  br label %639

355:                                              ; preds = %351
  %356 = load double, ptr %49, align 8, !tbaa !11
  %357 = fcmp olt double %356, 1.000000e+00
  br i1 %357, label %358, label %379

358:                                              ; preds = %355
  %359 = load double, ptr %45, align 8, !tbaa !11
  %360 = load double, ptr %58, align 8, !tbaa !11
  %361 = load double, ptr %49, align 8, !tbaa !11
  %362 = fmul double %360, %361
  %363 = fcmp ogt double %359, %362
  br i1 %363, label %364, label %378

364:                                              ; preds = %358
  %365 = load double, ptr %45, align 8, !tbaa !11
  %366 = fdiv double 1.000000e+00, %365
  store double %366, ptr %47, align 8, !tbaa !11
  %367 = load ptr, ptr %15, align 8, !tbaa !5
  %368 = load ptr, ptr %21, align 8, !tbaa !5
  %369 = getelementptr inbounds double, ptr %368, i64 1
  %370 = call i32 @f2c_dscal(ptr noundef %367, ptr noundef %47, ptr noundef %369, ptr noundef @c__1)
  %371 = load double, ptr %47, align 8, !tbaa !11
  %372 = load ptr, ptr %20, align 8, !tbaa !5
  %373 = load double, ptr %372, align 8, !tbaa !11
  %374 = fmul double %373, %371
  store double %374, ptr %372, align 8, !tbaa !11
  %375 = load double, ptr %47, align 8, !tbaa !11
  %376 = load double, ptr %53, align 8, !tbaa !11
  %377 = fmul double %376, %375
  store double %377, ptr %53, align 8, !tbaa !11
  br label %378

378:                                              ; preds = %364, %358
  br label %379

379:                                              ; preds = %378, %355
  %380 = load double, ptr %50, align 8, !tbaa !11
  %381 = load ptr, ptr %21, align 8, !tbaa !5
  %382 = load i64, ptr %40, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %381, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = fdiv double %384, %380
  store double %385, ptr %383, align 8, !tbaa !11
  %386 = load ptr, ptr %21, align 8, !tbaa !5
  %387 = load i64, ptr %40, align 8, !tbaa !9
  %388 = getelementptr inbounds double, ptr %386, i64 %387
  %389 = load double, ptr %388, align 8, !tbaa !11
  store double %389, ptr %28, align 8, !tbaa !11
  %390 = load double, ptr %28, align 8, !tbaa !11
  %391 = fcmp oge double %390, 0.000000e+00
  br i1 %391, label %392, label %394

392:                                              ; preds = %379
  %393 = load double, ptr %28, align 8, !tbaa !11
  br label %397

394:                                              ; preds = %379
  %395 = load double, ptr %28, align 8, !tbaa !11
  %396 = fneg double %395
  br label %397

397:                                              ; preds = %394, %392
  %398 = phi double [ %393, %392 ], [ %396, %394 ]
  store double %398, ptr %45, align 8, !tbaa !11
  %399 = load double, ptr %45, align 8, !tbaa !11
  %400 = fcmp ogt double %399, 1.000000e+00
  br i1 %400, label %401, label %424

401:                                              ; preds = %397
  %402 = load double, ptr %45, align 8, !tbaa !11
  %403 = fdiv double 1.000000e+00, %402
  store double %403, ptr %47, align 8, !tbaa !11
  %404 = load ptr, ptr %22, align 8, !tbaa !5
  %405 = load i64, ptr %40, align 8, !tbaa !9
  %406 = getelementptr inbounds double, ptr %404, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !11
  %408 = load double, ptr %58, align 8, !tbaa !11
  %409 = load double, ptr %53, align 8, !tbaa !11
  %410 = fsub double %408, %409
  %411 = load double, ptr %47, align 8, !tbaa !11
  %412 = fmul double %410, %411
  %413 = fcmp ogt double %407, %412
  br i1 %413, label %414, label %423

414:                                              ; preds = %401
  %415 = load ptr, ptr %15, align 8, !tbaa !5
  %416 = load ptr, ptr %21, align 8, !tbaa !5
  %417 = getelementptr inbounds double, ptr %416, i64 1
  %418 = call i32 @f2c_dscal(ptr noundef %415, ptr noundef %47, ptr noundef %417, ptr noundef @c__1)
  %419 = load double, ptr %47, align 8, !tbaa !11
  %420 = load ptr, ptr %20, align 8, !tbaa !5
  %421 = load double, ptr %420, align 8, !tbaa !11
  %422 = fmul double %421, %419
  store double %422, ptr %420, align 8, !tbaa !11
  br label %423

423:                                              ; preds = %414, %401
  br label %424

424:                                              ; preds = %423, %397
  %425 = load i64, ptr %40, align 8, !tbaa !9
  %426 = icmp sgt i64 %425, 1
  br i1 %426, label %427, label %462

427:                                              ; preds = %424
  %428 = load i64, ptr %40, align 8, !tbaa !9
  %429 = sub nsw i64 %428, 1
  store i64 %429, ptr %26, align 8, !tbaa !9
  %430 = load ptr, ptr %21, align 8, !tbaa !5
  %431 = load i64, ptr %40, align 8, !tbaa !9
  %432 = getelementptr inbounds double, ptr %430, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !11
  %434 = fneg double %433
  store double %434, ptr %28, align 8, !tbaa !11
  %435 = load ptr, ptr %16, align 8, !tbaa !5
  %436 = load i64, ptr %40, align 8, !tbaa !9
  %437 = load i64, ptr %24, align 8, !tbaa !9
  %438 = mul nsw i64 %436, %437
  %439 = add nsw i64 %438, 1
  %440 = getelementptr inbounds double, ptr %435, i64 %439
  %441 = load ptr, ptr %21, align 8, !tbaa !5
  %442 = getelementptr inbounds double, ptr %441, i64 1
  %443 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %440, ptr noundef @c__1, ptr noundef %442, ptr noundef @c__1)
  %444 = load i64, ptr %40, align 8, !tbaa !9
  %445 = sub nsw i64 %444, 1
  store i64 %445, ptr %26, align 8, !tbaa !9
  %446 = load ptr, ptr %21, align 8, !tbaa !5
  %447 = getelementptr inbounds double, ptr %446, i64 1
  %448 = call i64 @f2c_idamax(ptr noundef %26, ptr noundef %447, ptr noundef @c__1)
  store i64 %448, ptr %37, align 8, !tbaa !9
  %449 = load ptr, ptr %21, align 8, !tbaa !5
  %450 = load i64, ptr %37, align 8, !tbaa !9
  %451 = getelementptr inbounds double, ptr %449, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !11
  store double %452, ptr %28, align 8, !tbaa !11
  %453 = load double, ptr %28, align 8, !tbaa !11
  %454 = fcmp oge double %453, 0.000000e+00
  br i1 %454, label %455, label %457

455:                                              ; preds = %427
  %456 = load double, ptr %28, align 8, !tbaa !11
  br label %460

457:                                              ; preds = %427
  %458 = load double, ptr %28, align 8, !tbaa !11
  %459 = fneg double %458
  br label %460

460:                                              ; preds = %457, %455
  %461 = phi double [ %456, %455 ], [ %459, %457 ]
  store double %461, ptr %53, align 8, !tbaa !11
  br label %462

462:                                              ; preds = %460, %424
  br label %638

463:                                              ; preds = %301
  %464 = load ptr, ptr %21, align 8, !tbaa !5
  %465 = load i64, ptr %40, align 8, !tbaa !9
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !11
  %468 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  store double %467, ptr %468, align 16, !tbaa !11
  %469 = load ptr, ptr %21, align 8, !tbaa !5
  %470 = load i64, ptr %41, align 8, !tbaa !9
  %471 = getelementptr inbounds double, ptr %469, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !11
  %473 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 1
  store double %472, ptr %473, align 8, !tbaa !11
  %474 = load ptr, ptr %16, align 8, !tbaa !5
  %475 = load i64, ptr %40, align 8, !tbaa !9
  %476 = load i64, ptr %40, align 8, !tbaa !9
  %477 = load i64, ptr %24, align 8, !tbaa !9
  %478 = mul nsw i64 %476, %477
  %479 = add nsw i64 %475, %478
  %480 = getelementptr inbounds double, ptr %474, i64 %479
  %481 = load ptr, ptr %17, align 8, !tbaa !5
  %482 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  %483 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %484 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %52, ptr noundef @c_b21, ptr noundef %480, ptr noundef %481, ptr noundef @c_b21, ptr noundef @c_b21, ptr noundef %482, ptr noundef @c__2, ptr noundef @c_b25, ptr noundef @c_b25, ptr noundef %483, ptr noundef @c__2, ptr noundef %57, ptr noundef %56, ptr noundef %51)
  %485 = load i64, ptr %51, align 8, !tbaa !9
  %486 = icmp ne i64 %485, 0
  br i1 %486, label %487, label %489

487:                                              ; preds = %463
  %488 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 2, ptr %488, align 8, !tbaa !9
  br label %489

489:                                              ; preds = %487, %463
  %490 = load double, ptr %57, align 8, !tbaa !11
  %491 = fcmp une double %490, 1.000000e+00
  br i1 %491, label %492, label %501

492:                                              ; preds = %489
  %493 = load ptr, ptr %15, align 8, !tbaa !5
  %494 = load ptr, ptr %21, align 8, !tbaa !5
  %495 = getelementptr inbounds double, ptr %494, i64 1
  %496 = call i32 @f2c_dscal(ptr noundef %493, ptr noundef %57, ptr noundef %495, ptr noundef @c__1)
  %497 = load double, ptr %57, align 8, !tbaa !11
  %498 = load ptr, ptr %20, align 8, !tbaa !5
  %499 = load double, ptr %498, align 8, !tbaa !11
  %500 = fmul double %499, %497
  store double %500, ptr %498, align 8, !tbaa !11
  br label %501

501:                                              ; preds = %492, %489
  %502 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %503 = load double, ptr %502, align 16, !tbaa !11
  %504 = load ptr, ptr %21, align 8, !tbaa !5
  %505 = load i64, ptr %40, align 8, !tbaa !9
  %506 = getelementptr inbounds double, ptr %504, i64 %505
  store double %503, ptr %506, align 8, !tbaa !11
  %507 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %508 = load double, ptr %507, align 8, !tbaa !11
  %509 = load ptr, ptr %21, align 8, !tbaa !5
  %510 = load i64, ptr %41, align 8, !tbaa !9
  %511 = getelementptr inbounds double, ptr %509, i64 %510
  store double %508, ptr %511, align 8, !tbaa !11
  %512 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %513 = load double, ptr %512, align 16, !tbaa !11
  %514 = fcmp oge double %513, 0.000000e+00
  br i1 %514, label %515, label %518

515:                                              ; preds = %501
  %516 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %517 = load double, ptr %516, align 16, !tbaa !11
  br label %522

518:                                              ; preds = %501
  %519 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %520 = load double, ptr %519, align 16, !tbaa !11
  %521 = fneg double %520
  br label %522

522:                                              ; preds = %518, %515
  %523 = phi double [ %517, %515 ], [ %521, %518 ]
  store double %523, ptr %28, align 8, !tbaa !11
  %524 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %525 = load double, ptr %524, align 8, !tbaa !11
  %526 = fcmp oge double %525, 0.000000e+00
  br i1 %526, label %527, label %530

527:                                              ; preds = %522
  %528 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %529 = load double, ptr %528, align 8, !tbaa !11
  br label %534

530:                                              ; preds = %522
  %531 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %532 = load double, ptr %531, align 8, !tbaa !11
  %533 = fneg double %532
  br label %534

534:                                              ; preds = %530, %527
  %535 = phi double [ %529, %527 ], [ %533, %530 ]
  store double %535, ptr %29, align 8, !tbaa !11
  %536 = load double, ptr %28, align 8, !tbaa !11
  %537 = load double, ptr %29, align 8, !tbaa !11
  %538 = fcmp oge double %536, %537
  br i1 %538, label %539, label %541

539:                                              ; preds = %534
  %540 = load double, ptr %28, align 8, !tbaa !11
  br label %543

541:                                              ; preds = %534
  %542 = load double, ptr %29, align 8, !tbaa !11
  br label %543

543:                                              ; preds = %541, %539
  %544 = phi double [ %540, %539 ], [ %542, %541 ]
  store double %544, ptr %45, align 8, !tbaa !11
  %545 = load double, ptr %45, align 8, !tbaa !11
  %546 = fcmp ogt double %545, 1.000000e+00
  br i1 %546, label %547, label %583

547:                                              ; preds = %543
  %548 = load double, ptr %45, align 8, !tbaa !11
  %549 = fdiv double 1.000000e+00, %548
  store double %549, ptr %47, align 8, !tbaa !11
  %550 = load ptr, ptr %22, align 8, !tbaa !5
  %551 = load i64, ptr %40, align 8, !tbaa !9
  %552 = getelementptr inbounds double, ptr %550, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !11
  store double %553, ptr %28, align 8, !tbaa !11
  %554 = load ptr, ptr %22, align 8, !tbaa !5
  %555 = load i64, ptr %41, align 8, !tbaa !9
  %556 = getelementptr inbounds double, ptr %554, i64 %555
  %557 = load double, ptr %556, align 8, !tbaa !11
  store double %557, ptr %29, align 8, !tbaa !11
  %558 = load double, ptr %28, align 8, !tbaa !11
  %559 = load double, ptr %29, align 8, !tbaa !11
  %560 = fcmp oge double %558, %559
  br i1 %560, label %561, label %563

561:                                              ; preds = %547
  %562 = load double, ptr %28, align 8, !tbaa !11
  br label %565

563:                                              ; preds = %547
  %564 = load double, ptr %29, align 8, !tbaa !11
  br label %565

565:                                              ; preds = %563, %561
  %566 = phi double [ %562, %561 ], [ %564, %563 ]
  %567 = load double, ptr %58, align 8, !tbaa !11
  %568 = load double, ptr %53, align 8, !tbaa !11
  %569 = fsub double %567, %568
  %570 = load double, ptr %47, align 8, !tbaa !11
  %571 = fmul double %569, %570
  %572 = fcmp ogt double %566, %571
  br i1 %572, label %573, label %582

573:                                              ; preds = %565
  %574 = load ptr, ptr %15, align 8, !tbaa !5
  %575 = load ptr, ptr %21, align 8, !tbaa !5
  %576 = getelementptr inbounds double, ptr %575, i64 1
  %577 = call i32 @f2c_dscal(ptr noundef %574, ptr noundef %47, ptr noundef %576, ptr noundef @c__1)
  %578 = load double, ptr %47, align 8, !tbaa !11
  %579 = load ptr, ptr %20, align 8, !tbaa !5
  %580 = load double, ptr %579, align 8, !tbaa !11
  %581 = fmul double %580, %578
  store double %581, ptr %579, align 8, !tbaa !11
  br label %582

582:                                              ; preds = %573, %565
  br label %583

583:                                              ; preds = %582, %543
  %584 = load i64, ptr %40, align 8, !tbaa !9
  %585 = icmp sgt i64 %584, 1
  br i1 %585, label %586, label %637

586:                                              ; preds = %583
  %587 = load i64, ptr %40, align 8, !tbaa !9
  %588 = sub nsw i64 %587, 1
  store i64 %588, ptr %26, align 8, !tbaa !9
  %589 = load ptr, ptr %21, align 8, !tbaa !5
  %590 = load i64, ptr %40, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !11
  %593 = fneg double %592
  store double %593, ptr %28, align 8, !tbaa !11
  %594 = load ptr, ptr %16, align 8, !tbaa !5
  %595 = load i64, ptr %40, align 8, !tbaa !9
  %596 = load i64, ptr %24, align 8, !tbaa !9
  %597 = mul nsw i64 %595, %596
  %598 = add nsw i64 %597, 1
  %599 = getelementptr inbounds double, ptr %594, i64 %598
  %600 = load ptr, ptr %21, align 8, !tbaa !5
  %601 = getelementptr inbounds double, ptr %600, i64 1
  %602 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %599, ptr noundef @c__1, ptr noundef %601, ptr noundef @c__1)
  %603 = load i64, ptr %40, align 8, !tbaa !9
  %604 = sub nsw i64 %603, 1
  store i64 %604, ptr %26, align 8, !tbaa !9
  %605 = load ptr, ptr %21, align 8, !tbaa !5
  %606 = load i64, ptr %41, align 8, !tbaa !9
  %607 = getelementptr inbounds double, ptr %605, i64 %606
  %608 = load double, ptr %607, align 8, !tbaa !11
  %609 = fneg double %608
  store double %609, ptr %28, align 8, !tbaa !11
  %610 = load ptr, ptr %16, align 8, !tbaa !5
  %611 = load i64, ptr %41, align 8, !tbaa !9
  %612 = load i64, ptr %24, align 8, !tbaa !9
  %613 = mul nsw i64 %611, %612
  %614 = add nsw i64 %613, 1
  %615 = getelementptr inbounds double, ptr %610, i64 %614
  %616 = load ptr, ptr %21, align 8, !tbaa !5
  %617 = getelementptr inbounds double, ptr %616, i64 1
  %618 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %615, ptr noundef @c__1, ptr noundef %617, ptr noundef @c__1)
  %619 = load i64, ptr %40, align 8, !tbaa !9
  %620 = sub nsw i64 %619, 1
  store i64 %620, ptr %26, align 8, !tbaa !9
  %621 = load ptr, ptr %21, align 8, !tbaa !5
  %622 = getelementptr inbounds double, ptr %621, i64 1
  %623 = call i64 @f2c_idamax(ptr noundef %26, ptr noundef %622, ptr noundef @c__1)
  store i64 %623, ptr %37, align 8, !tbaa !9
  %624 = load ptr, ptr %21, align 8, !tbaa !5
  %625 = load i64, ptr %37, align 8, !tbaa !9
  %626 = getelementptr inbounds double, ptr %624, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  store double %627, ptr %28, align 8, !tbaa !11
  %628 = load double, ptr %28, align 8, !tbaa !11
  %629 = fcmp oge double %628, 0.000000e+00
  br i1 %629, label %630, label %632

630:                                              ; preds = %586
  %631 = load double, ptr %28, align 8, !tbaa !11
  br label %635

632:                                              ; preds = %586
  %633 = load double, ptr %28, align 8, !tbaa !11
  %634 = fneg double %633
  br label %635

635:                                              ; preds = %632, %630
  %636 = phi double [ %631, %630 ], [ %634, %632 ]
  store double %636, ptr %53, align 8, !tbaa !11
  br label %637

637:                                              ; preds = %635, %583
  br label %638

638:                                              ; preds = %637, %462
  br label %639

639:                                              ; preds = %638, %354, %276
  br label %640

640:                                              ; preds = %639
  %641 = load i64, ptr %36, align 8, !tbaa !9
  %642 = add nsw i64 %641, -1
  store i64 %642, ptr %36, align 8, !tbaa !9
  br label %269, !llvm.loop !16

643:                                              ; preds = %269
  br label %1044

644:                                              ; preds = %261
  store i64 1, ptr %54, align 8, !tbaa !9
  %645 = load ptr, ptr %15, align 8, !tbaa !5
  %646 = load i64, ptr %645, align 8, !tbaa !9
  store i64 %646, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %647

647:                                              ; preds = %1040, %644
  %648 = load i64, ptr %36, align 8, !tbaa !9
  %649 = load i64, ptr %26, align 8, !tbaa !9
  %650 = icmp sle i64 %648, %649
  br i1 %650, label %651, label %1043

651:                                              ; preds = %647
  %652 = load i64, ptr %36, align 8, !tbaa !9
  %653 = load i64, ptr %54, align 8, !tbaa !9
  %654 = icmp slt i64 %652, %653
  br i1 %654, label %655, label %656

655:                                              ; preds = %651
  br label %1039

656:                                              ; preds = %651
  %657 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %657, ptr %40, align 8, !tbaa !9
  %658 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %658, ptr %41, align 8, !tbaa !9
  %659 = load i64, ptr %36, align 8, !tbaa !9
  %660 = add nsw i64 %659, 1
  store i64 %660, ptr %54, align 8, !tbaa !9
  %661 = load i64, ptr %36, align 8, !tbaa !9
  %662 = load ptr, ptr %15, align 8, !tbaa !5
  %663 = load i64, ptr %662, align 8, !tbaa !9
  %664 = icmp slt i64 %661, %663
  br i1 %664, label %665, label %682

665:                                              ; preds = %656
  %666 = load ptr, ptr %16, align 8, !tbaa !5
  %667 = load i64, ptr %36, align 8, !tbaa !9
  %668 = add nsw i64 %667, 1
  %669 = load i64, ptr %36, align 8, !tbaa !9
  %670 = load i64, ptr %24, align 8, !tbaa !9
  %671 = mul nsw i64 %669, %670
  %672 = add nsw i64 %668, %671
  %673 = getelementptr inbounds double, ptr %666, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = fcmp une double %674, 0.000000e+00
  br i1 %675, label %676, label %681

676:                                              ; preds = %665
  %677 = load i64, ptr %36, align 8, !tbaa !9
  %678 = add nsw i64 %677, 1
  store i64 %678, ptr %41, align 8, !tbaa !9
  %679 = load i64, ptr %36, align 8, !tbaa !9
  %680 = add nsw i64 %679, 2
  store i64 %680, ptr %54, align 8, !tbaa !9
  br label %681

681:                                              ; preds = %676, %665
  br label %682

682:                                              ; preds = %681, %656
  %683 = load i64, ptr %40, align 8, !tbaa !9
  %684 = load i64, ptr %41, align 8, !tbaa !9
  %685 = icmp eq i64 %683, %684
  br i1 %685, label %686, label %844

686:                                              ; preds = %682
  %687 = load ptr, ptr %21, align 8, !tbaa !5
  %688 = load i64, ptr %40, align 8, !tbaa !9
  %689 = getelementptr inbounds double, ptr %687, i64 %688
  %690 = load double, ptr %689, align 8, !tbaa !11
  store double %690, ptr %28, align 8, !tbaa !11
  %691 = load double, ptr %28, align 8, !tbaa !11
  %692 = fcmp oge double %691, 0.000000e+00
  br i1 %692, label %693, label %695

693:                                              ; preds = %686
  %694 = load double, ptr %28, align 8, !tbaa !11
  br label %698

695:                                              ; preds = %686
  %696 = load double, ptr %28, align 8, !tbaa !11
  %697 = fneg double %696
  br label %698

698:                                              ; preds = %695, %693
  %699 = phi double [ %694, %693 ], [ %697, %695 ]
  store double %699, ptr %45, align 8, !tbaa !11
  %700 = load double, ptr %53, align 8, !tbaa !11
  %701 = fcmp ogt double %700, 1.000000e+00
  br i1 %701, label %702, label %728

702:                                              ; preds = %698
  %703 = load double, ptr %53, align 8, !tbaa !11
  %704 = fdiv double 1.000000e+00, %703
  store double %704, ptr %47, align 8, !tbaa !11
  %705 = load ptr, ptr %22, align 8, !tbaa !5
  %706 = load i64, ptr %40, align 8, !tbaa !9
  %707 = getelementptr inbounds double, ptr %705, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !11
  %709 = load double, ptr %58, align 8, !tbaa !11
  %710 = load double, ptr %45, align 8, !tbaa !11
  %711 = fsub double %709, %710
  %712 = load double, ptr %47, align 8, !tbaa !11
  %713 = fmul double %711, %712
  %714 = fcmp ogt double %708, %713
  br i1 %714, label %715, label %727

715:                                              ; preds = %702
  %716 = load ptr, ptr %15, align 8, !tbaa !5
  %717 = load ptr, ptr %21, align 8, !tbaa !5
  %718 = getelementptr inbounds double, ptr %717, i64 1
  %719 = call i32 @f2c_dscal(ptr noundef %716, ptr noundef %47, ptr noundef %718, ptr noundef @c__1)
  %720 = load double, ptr %47, align 8, !tbaa !11
  %721 = load ptr, ptr %20, align 8, !tbaa !5
  %722 = load double, ptr %721, align 8, !tbaa !11
  %723 = fmul double %722, %720
  store double %723, ptr %721, align 8, !tbaa !11
  %724 = load double, ptr %47, align 8, !tbaa !11
  %725 = load double, ptr %53, align 8, !tbaa !11
  %726 = fmul double %725, %724
  store double %726, ptr %53, align 8, !tbaa !11
  br label %727

727:                                              ; preds = %715, %702
  br label %728

728:                                              ; preds = %727, %698
  %729 = load i64, ptr %40, align 8, !tbaa !9
  %730 = sub nsw i64 %729, 1
  store i64 %730, ptr %27, align 8, !tbaa !9
  %731 = load ptr, ptr %16, align 8, !tbaa !5
  %732 = load i64, ptr %40, align 8, !tbaa !9
  %733 = load i64, ptr %24, align 8, !tbaa !9
  %734 = mul nsw i64 %732, %733
  %735 = add nsw i64 %734, 1
  %736 = getelementptr inbounds double, ptr %731, i64 %735
  %737 = load ptr, ptr %21, align 8, !tbaa !5
  %738 = getelementptr inbounds double, ptr %737, i64 1
  %739 = call double @f2c_ddot(ptr noundef %27, ptr noundef %736, ptr noundef @c__1, ptr noundef %738, ptr noundef @c__1)
  %740 = load ptr, ptr %21, align 8, !tbaa !5
  %741 = load i64, ptr %40, align 8, !tbaa !9
  %742 = getelementptr inbounds double, ptr %740, i64 %741
  %743 = load double, ptr %742, align 8, !tbaa !11
  %744 = fsub double %743, %739
  store double %744, ptr %742, align 8, !tbaa !11
  %745 = load ptr, ptr %21, align 8, !tbaa !5
  %746 = load i64, ptr %40, align 8, !tbaa !9
  %747 = getelementptr inbounds double, ptr %745, i64 %746
  %748 = load double, ptr %747, align 8, !tbaa !11
  store double %748, ptr %28, align 8, !tbaa !11
  %749 = load double, ptr %28, align 8, !tbaa !11
  %750 = fcmp oge double %749, 0.000000e+00
  br i1 %750, label %751, label %753

751:                                              ; preds = %728
  %752 = load double, ptr %28, align 8, !tbaa !11
  br label %756

753:                                              ; preds = %728
  %754 = load double, ptr %28, align 8, !tbaa !11
  %755 = fneg double %754
  br label %756

756:                                              ; preds = %753, %751
  %757 = phi double [ %752, %751 ], [ %755, %753 ]
  store double %757, ptr %45, align 8, !tbaa !11
  %758 = load ptr, ptr %16, align 8, !tbaa !5
  %759 = load i64, ptr %40, align 8, !tbaa !9
  %760 = load i64, ptr %40, align 8, !tbaa !9
  %761 = load i64, ptr %24, align 8, !tbaa !9
  %762 = mul nsw i64 %760, %761
  %763 = add nsw i64 %759, %762
  %764 = getelementptr inbounds double, ptr %758, i64 %763
  %765 = load double, ptr %764, align 8, !tbaa !11
  store double %765, ptr %28, align 8, !tbaa !11
  %766 = load double, ptr %28, align 8, !tbaa !11
  %767 = fcmp oge double %766, 0.000000e+00
  br i1 %767, label %768, label %770

768:                                              ; preds = %756
  %769 = load double, ptr %28, align 8, !tbaa !11
  br label %773

770:                                              ; preds = %756
  %771 = load double, ptr %28, align 8, !tbaa !11
  %772 = fneg double %771
  br label %773

773:                                              ; preds = %770, %768
  %774 = phi double [ %769, %768 ], [ %772, %770 ]
  store double %774, ptr %49, align 8, !tbaa !11
  %775 = load ptr, ptr %16, align 8, !tbaa !5
  %776 = load i64, ptr %40, align 8, !tbaa !9
  %777 = load i64, ptr %40, align 8, !tbaa !9
  %778 = load i64, ptr %24, align 8, !tbaa !9
  %779 = mul nsw i64 %777, %778
  %780 = add nsw i64 %776, %779
  %781 = getelementptr inbounds double, ptr %775, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !11
  store double %782, ptr %50, align 8, !tbaa !11
  %783 = load double, ptr %49, align 8, !tbaa !11
  %784 = load double, ptr %52, align 8, !tbaa !11
  %785 = fcmp olt double %783, %784
  br i1 %785, label %786, label %790

786:                                              ; preds = %773
  %787 = load double, ptr %52, align 8, !tbaa !11
  store double %787, ptr %50, align 8, !tbaa !11
  %788 = load double, ptr %52, align 8, !tbaa !11
  store double %788, ptr %49, align 8, !tbaa !11
  %789 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 1, ptr %789, align 8, !tbaa !9
  br label %790

790:                                              ; preds = %786, %773
  %791 = load double, ptr %49, align 8, !tbaa !11
  %792 = fcmp olt double %791, 1.000000e+00
  br i1 %792, label %793, label %814

793:                                              ; preds = %790
  %794 = load double, ptr %45, align 8, !tbaa !11
  %795 = load double, ptr %58, align 8, !tbaa !11
  %796 = load double, ptr %49, align 8, !tbaa !11
  %797 = fmul double %795, %796
  %798 = fcmp ogt double %794, %797
  br i1 %798, label %799, label %813

799:                                              ; preds = %793
  %800 = load double, ptr %45, align 8, !tbaa !11
  %801 = fdiv double 1.000000e+00, %800
  store double %801, ptr %47, align 8, !tbaa !11
  %802 = load ptr, ptr %15, align 8, !tbaa !5
  %803 = load ptr, ptr %21, align 8, !tbaa !5
  %804 = getelementptr inbounds double, ptr %803, i64 1
  %805 = call i32 @f2c_dscal(ptr noundef %802, ptr noundef %47, ptr noundef %804, ptr noundef @c__1)
  %806 = load double, ptr %47, align 8, !tbaa !11
  %807 = load ptr, ptr %20, align 8, !tbaa !5
  %808 = load double, ptr %807, align 8, !tbaa !11
  %809 = fmul double %808, %806
  store double %809, ptr %807, align 8, !tbaa !11
  %810 = load double, ptr %47, align 8, !tbaa !11
  %811 = load double, ptr %53, align 8, !tbaa !11
  %812 = fmul double %811, %810
  store double %812, ptr %53, align 8, !tbaa !11
  br label %813

813:                                              ; preds = %799, %793
  br label %814

814:                                              ; preds = %813, %790
  %815 = load double, ptr %50, align 8, !tbaa !11
  %816 = load ptr, ptr %21, align 8, !tbaa !5
  %817 = load i64, ptr %40, align 8, !tbaa !9
  %818 = getelementptr inbounds double, ptr %816, i64 %817
  %819 = load double, ptr %818, align 8, !tbaa !11
  %820 = fdiv double %819, %815
  store double %820, ptr %818, align 8, !tbaa !11
  %821 = load double, ptr %53, align 8, !tbaa !11
  store double %821, ptr %29, align 8, !tbaa !11
  %822 = load ptr, ptr %21, align 8, !tbaa !5
  %823 = load i64, ptr %40, align 8, !tbaa !9
  %824 = getelementptr inbounds double, ptr %822, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !11
  store double %825, ptr %28, align 8, !tbaa !11
  %826 = load double, ptr %28, align 8, !tbaa !11
  %827 = fcmp oge double %826, 0.000000e+00
  br i1 %827, label %828, label %830

828:                                              ; preds = %814
  %829 = load double, ptr %28, align 8, !tbaa !11
  br label %833

830:                                              ; preds = %814
  %831 = load double, ptr %28, align 8, !tbaa !11
  %832 = fneg double %831
  br label %833

833:                                              ; preds = %830, %828
  %834 = phi double [ %829, %828 ], [ %832, %830 ]
  store double %834, ptr %30, align 8, !tbaa !11
  %835 = load double, ptr %29, align 8, !tbaa !11
  %836 = load double, ptr %30, align 8, !tbaa !11
  %837 = fcmp oge double %835, %836
  br i1 %837, label %838, label %840

838:                                              ; preds = %833
  %839 = load double, ptr %29, align 8, !tbaa !11
  br label %842

840:                                              ; preds = %833
  %841 = load double, ptr %30, align 8, !tbaa !11
  br label %842

842:                                              ; preds = %840, %838
  %843 = phi double [ %839, %838 ], [ %841, %840 ]
  store double %843, ptr %53, align 8, !tbaa !11
  br label %1038

844:                                              ; preds = %682
  %845 = load ptr, ptr %21, align 8, !tbaa !5
  %846 = load i64, ptr %40, align 8, !tbaa !9
  %847 = getelementptr inbounds double, ptr %845, i64 %846
  %848 = load double, ptr %847, align 8, !tbaa !11
  store double %848, ptr %28, align 8, !tbaa !11
  %849 = load double, ptr %28, align 8, !tbaa !11
  %850 = fcmp oge double %849, 0.000000e+00
  br i1 %850, label %851, label %853

851:                                              ; preds = %844
  %852 = load double, ptr %28, align 8, !tbaa !11
  br label %856

853:                                              ; preds = %844
  %854 = load double, ptr %28, align 8, !tbaa !11
  %855 = fneg double %854
  br label %856

856:                                              ; preds = %853, %851
  %857 = phi double [ %852, %851 ], [ %855, %853 ]
  store double %857, ptr %30, align 8, !tbaa !11
  %858 = load ptr, ptr %21, align 8, !tbaa !5
  %859 = load i64, ptr %41, align 8, !tbaa !9
  %860 = getelementptr inbounds double, ptr %858, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !11
  store double %861, ptr %29, align 8, !tbaa !11
  %862 = load double, ptr %29, align 8, !tbaa !11
  %863 = fcmp oge double %862, 0.000000e+00
  br i1 %863, label %864, label %866

864:                                              ; preds = %856
  %865 = load double, ptr %29, align 8, !tbaa !11
  br label %869

866:                                              ; preds = %856
  %867 = load double, ptr %29, align 8, !tbaa !11
  %868 = fneg double %867
  br label %869

869:                                              ; preds = %866, %864
  %870 = phi double [ %865, %864 ], [ %868, %866 ]
  store double %870, ptr %31, align 8, !tbaa !11
  %871 = load double, ptr %30, align 8, !tbaa !11
  %872 = load double, ptr %31, align 8, !tbaa !11
  %873 = fcmp oge double %871, %872
  br i1 %873, label %874, label %876

874:                                              ; preds = %869
  %875 = load double, ptr %30, align 8, !tbaa !11
  br label %878

876:                                              ; preds = %869
  %877 = load double, ptr %31, align 8, !tbaa !11
  br label %878

878:                                              ; preds = %876, %874
  %879 = phi double [ %875, %874 ], [ %877, %876 ]
  store double %879, ptr %45, align 8, !tbaa !11
  %880 = load double, ptr %53, align 8, !tbaa !11
  %881 = fcmp ogt double %880, 1.000000e+00
  br i1 %881, label %882, label %921

882:                                              ; preds = %878
  %883 = load double, ptr %53, align 8, !tbaa !11
  %884 = fdiv double 1.000000e+00, %883
  store double %884, ptr %47, align 8, !tbaa !11
  %885 = load ptr, ptr %22, align 8, !tbaa !5
  %886 = load i64, ptr %41, align 8, !tbaa !9
  %887 = getelementptr inbounds double, ptr %885, i64 %886
  %888 = load double, ptr %887, align 8, !tbaa !11
  store double %888, ptr %28, align 8, !tbaa !11
  %889 = load ptr, ptr %22, align 8, !tbaa !5
  %890 = load i64, ptr %40, align 8, !tbaa !9
  %891 = getelementptr inbounds double, ptr %889, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !11
  store double %892, ptr %29, align 8, !tbaa !11
  %893 = load double, ptr %28, align 8, !tbaa !11
  %894 = load double, ptr %29, align 8, !tbaa !11
  %895 = fcmp oge double %893, %894
  br i1 %895, label %896, label %898

896:                                              ; preds = %882
  %897 = load double, ptr %28, align 8, !tbaa !11
  br label %900

898:                                              ; preds = %882
  %899 = load double, ptr %29, align 8, !tbaa !11
  br label %900

900:                                              ; preds = %898, %896
  %901 = phi double [ %897, %896 ], [ %899, %898 ]
  %902 = load double, ptr %58, align 8, !tbaa !11
  %903 = load double, ptr %45, align 8, !tbaa !11
  %904 = fsub double %902, %903
  %905 = load double, ptr %47, align 8, !tbaa !11
  %906 = fmul double %904, %905
  %907 = fcmp ogt double %901, %906
  br i1 %907, label %908, label %920

908:                                              ; preds = %900
  %909 = load ptr, ptr %15, align 8, !tbaa !5
  %910 = load ptr, ptr %21, align 8, !tbaa !5
  %911 = getelementptr inbounds double, ptr %910, i64 1
  %912 = call i32 @f2c_dscal(ptr noundef %909, ptr noundef %47, ptr noundef %911, ptr noundef @c__1)
  %913 = load double, ptr %47, align 8, !tbaa !11
  %914 = load ptr, ptr %20, align 8, !tbaa !5
  %915 = load double, ptr %914, align 8, !tbaa !11
  %916 = fmul double %915, %913
  store double %916, ptr %914, align 8, !tbaa !11
  %917 = load double, ptr %47, align 8, !tbaa !11
  %918 = load double, ptr %53, align 8, !tbaa !11
  %919 = fmul double %918, %917
  store double %919, ptr %53, align 8, !tbaa !11
  br label %920

920:                                              ; preds = %908, %900
  br label %921

921:                                              ; preds = %920, %878
  %922 = load i64, ptr %40, align 8, !tbaa !9
  %923 = sub nsw i64 %922, 1
  store i64 %923, ptr %27, align 8, !tbaa !9
  %924 = load ptr, ptr %21, align 8, !tbaa !5
  %925 = load i64, ptr %40, align 8, !tbaa !9
  %926 = getelementptr inbounds double, ptr %924, i64 %925
  %927 = load double, ptr %926, align 8, !tbaa !11
  %928 = load ptr, ptr %16, align 8, !tbaa !5
  %929 = load i64, ptr %40, align 8, !tbaa !9
  %930 = load i64, ptr %24, align 8, !tbaa !9
  %931 = mul nsw i64 %929, %930
  %932 = add nsw i64 %931, 1
  %933 = getelementptr inbounds double, ptr %928, i64 %932
  %934 = load ptr, ptr %21, align 8, !tbaa !5
  %935 = getelementptr inbounds double, ptr %934, i64 1
  %936 = call double @f2c_ddot(ptr noundef %27, ptr noundef %933, ptr noundef @c__1, ptr noundef %935, ptr noundef @c__1)
  %937 = fsub double %927, %936
  %938 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  store double %937, ptr %938, align 16, !tbaa !11
  %939 = load i64, ptr %40, align 8, !tbaa !9
  %940 = sub nsw i64 %939, 1
  store i64 %940, ptr %27, align 8, !tbaa !9
  %941 = load ptr, ptr %21, align 8, !tbaa !5
  %942 = load i64, ptr %41, align 8, !tbaa !9
  %943 = getelementptr inbounds double, ptr %941, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !11
  %945 = load ptr, ptr %16, align 8, !tbaa !5
  %946 = load i64, ptr %41, align 8, !tbaa !9
  %947 = load i64, ptr %24, align 8, !tbaa !9
  %948 = mul nsw i64 %946, %947
  %949 = add nsw i64 %948, 1
  %950 = getelementptr inbounds double, ptr %945, i64 %949
  %951 = load ptr, ptr %21, align 8, !tbaa !5
  %952 = getelementptr inbounds double, ptr %951, i64 1
  %953 = call double @f2c_ddot(ptr noundef %27, ptr noundef %950, ptr noundef @c__1, ptr noundef %952, ptr noundef @c__1)
  %954 = fsub double %944, %953
  %955 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 1
  store double %954, ptr %955, align 8, !tbaa !11
  %956 = load ptr, ptr %16, align 8, !tbaa !5
  %957 = load i64, ptr %40, align 8, !tbaa !9
  %958 = load i64, ptr %40, align 8, !tbaa !9
  %959 = load i64, ptr %24, align 8, !tbaa !9
  %960 = mul nsw i64 %958, %959
  %961 = add nsw i64 %957, %960
  %962 = getelementptr inbounds double, ptr %956, i64 %961
  %963 = load ptr, ptr %17, align 8, !tbaa !5
  %964 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  %965 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %966 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %52, ptr noundef @c_b21, ptr noundef %962, ptr noundef %963, ptr noundef @c_b21, ptr noundef @c_b21, ptr noundef %964, ptr noundef @c__2, ptr noundef @c_b25, ptr noundef @c_b25, ptr noundef %965, ptr noundef @c__2, ptr noundef %57, ptr noundef %56, ptr noundef %51)
  %967 = load i64, ptr %51, align 8, !tbaa !9
  %968 = icmp ne i64 %967, 0
  br i1 %968, label %969, label %971

969:                                              ; preds = %921
  %970 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 2, ptr %970, align 8, !tbaa !9
  br label %971

971:                                              ; preds = %969, %921
  %972 = load double, ptr %57, align 8, !tbaa !11
  %973 = fcmp une double %972, 1.000000e+00
  br i1 %973, label %974, label %983

974:                                              ; preds = %971
  %975 = load ptr, ptr %15, align 8, !tbaa !5
  %976 = load ptr, ptr %21, align 8, !tbaa !5
  %977 = getelementptr inbounds double, ptr %976, i64 1
  %978 = call i32 @f2c_dscal(ptr noundef %975, ptr noundef %57, ptr noundef %977, ptr noundef @c__1)
  %979 = load double, ptr %57, align 8, !tbaa !11
  %980 = load ptr, ptr %20, align 8, !tbaa !5
  %981 = load double, ptr %980, align 8, !tbaa !11
  %982 = fmul double %981, %979
  store double %982, ptr %980, align 8, !tbaa !11
  br label %983

983:                                              ; preds = %974, %971
  %984 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %985 = load double, ptr %984, align 16, !tbaa !11
  %986 = load ptr, ptr %21, align 8, !tbaa !5
  %987 = load i64, ptr %40, align 8, !tbaa !9
  %988 = getelementptr inbounds double, ptr %986, i64 %987
  store double %985, ptr %988, align 8, !tbaa !11
  %989 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %990 = load double, ptr %989, align 8, !tbaa !11
  %991 = load ptr, ptr %21, align 8, !tbaa !5
  %992 = load i64, ptr %41, align 8, !tbaa !9
  %993 = getelementptr inbounds double, ptr %991, i64 %992
  store double %990, ptr %993, align 8, !tbaa !11
  %994 = load ptr, ptr %21, align 8, !tbaa !5
  %995 = load i64, ptr %40, align 8, !tbaa !9
  %996 = getelementptr inbounds double, ptr %994, i64 %995
  %997 = load double, ptr %996, align 8, !tbaa !11
  store double %997, ptr %28, align 8, !tbaa !11
  %998 = load double, ptr %28, align 8, !tbaa !11
  %999 = fcmp oge double %998, 0.000000e+00
  br i1 %999, label %1000, label %1002

1000:                                             ; preds = %983
  %1001 = load double, ptr %28, align 8, !tbaa !11
  br label %1005

1002:                                             ; preds = %983
  %1003 = load double, ptr %28, align 8, !tbaa !11
  %1004 = fneg double %1003
  br label %1005

1005:                                             ; preds = %1002, %1000
  %1006 = phi double [ %1001, %1000 ], [ %1004, %1002 ]
  store double %1006, ptr %30, align 8, !tbaa !11
  %1007 = load ptr, ptr %21, align 8, !tbaa !5
  %1008 = load i64, ptr %41, align 8, !tbaa !9
  %1009 = getelementptr inbounds double, ptr %1007, i64 %1008
  %1010 = load double, ptr %1009, align 8, !tbaa !11
  store double %1010, ptr %29, align 8, !tbaa !11
  %1011 = load double, ptr %29, align 8, !tbaa !11
  %1012 = fcmp oge double %1011, 0.000000e+00
  br i1 %1012, label %1013, label %1015

1013:                                             ; preds = %1005
  %1014 = load double, ptr %29, align 8, !tbaa !11
  br label %1018

1015:                                             ; preds = %1005
  %1016 = load double, ptr %29, align 8, !tbaa !11
  %1017 = fneg double %1016
  br label %1018

1018:                                             ; preds = %1015, %1013
  %1019 = phi double [ %1014, %1013 ], [ %1017, %1015 ]
  store double %1019, ptr %31, align 8, !tbaa !11
  %1020 = load double, ptr %30, align 8, !tbaa !11
  %1021 = load double, ptr %31, align 8, !tbaa !11
  %1022 = fcmp oge double %1020, %1021
  br i1 %1022, label %1023, label %1025

1023:                                             ; preds = %1018
  %1024 = load double, ptr %30, align 8, !tbaa !11
  br label %1027

1025:                                             ; preds = %1018
  %1026 = load double, ptr %31, align 8, !tbaa !11
  br label %1027

1027:                                             ; preds = %1025, %1023
  %1028 = phi double [ %1024, %1023 ], [ %1026, %1025 ]
  store double %1028, ptr %30, align 8, !tbaa !11
  %1029 = load double, ptr %30, align 8, !tbaa !11
  %1030 = load double, ptr %53, align 8, !tbaa !11
  %1031 = fcmp oge double %1029, %1030
  br i1 %1031, label %1032, label %1034

1032:                                             ; preds = %1027
  %1033 = load double, ptr %30, align 8, !tbaa !11
  br label %1036

1034:                                             ; preds = %1027
  %1035 = load double, ptr %53, align 8, !tbaa !11
  br label %1036

1036:                                             ; preds = %1034, %1032
  %1037 = phi double [ %1033, %1032 ], [ %1035, %1034 ]
  store double %1037, ptr %53, align 8, !tbaa !11
  br label %1038

1038:                                             ; preds = %1036, %842
  br label %1039

1039:                                             ; preds = %1038, %655
  br label %1040

1040:                                             ; preds = %1039
  %1041 = load i64, ptr %36, align 8, !tbaa !9
  %1042 = add nsw i64 %1041, 1
  store i64 %1042, ptr %36, align 8, !tbaa !9
  br label %647, !llvm.loop !17

1043:                                             ; preds = %647
  br label %1044

1044:                                             ; preds = %1043, %643
  br label %2522

1045:                                             ; preds = %257
  %1046 = load double, ptr %48, align 8, !tbaa !11
  %1047 = load ptr, ptr %19, align 8, !tbaa !5
  %1048 = load double, ptr %1047, align 8, !tbaa !11
  %1049 = fcmp oge double %1048, 0.000000e+00
  br i1 %1049, label %1050, label %1053

1050:                                             ; preds = %1045
  %1051 = load ptr, ptr %19, align 8, !tbaa !5
  %1052 = load double, ptr %1051, align 8, !tbaa !11
  br label %1057

1053:                                             ; preds = %1045
  %1054 = load ptr, ptr %19, align 8, !tbaa !5
  %1055 = load double, ptr %1054, align 8, !tbaa !11
  %1056 = fneg double %1055
  br label %1057

1057:                                             ; preds = %1053, %1050
  %1058 = phi double [ %1052, %1050 ], [ %1056, %1053 ]
  %1059 = fmul double %1046, %1058
  store double %1059, ptr %28, align 8, !tbaa !11
  %1060 = load double, ptr %28, align 8, !tbaa !11
  %1061 = load double, ptr %52, align 8, !tbaa !11
  %1062 = fcmp oge double %1060, %1061
  br i1 %1062, label %1063, label %1065

1063:                                             ; preds = %1057
  %1064 = load double, ptr %28, align 8, !tbaa !11
  br label %1067

1065:                                             ; preds = %1057
  %1066 = load double, ptr %52, align 8, !tbaa !11
  br label %1067

1067:                                             ; preds = %1065, %1063
  %1068 = phi double [ %1064, %1063 ], [ %1066, %1065 ]
  store double %1068, ptr %55, align 8, !tbaa !11
  %1069 = load i64, ptr %59, align 8, !tbaa !9
  %1070 = icmp ne i64 %1069, 0
  br i1 %1070, label %1071, label %1802

1071:                                             ; preds = %1067
  %1072 = load ptr, ptr %15, align 8, !tbaa !5
  %1073 = load i64, ptr %1072, align 8, !tbaa !9
  store i64 %1073, ptr %54, align 8, !tbaa !9
  %1074 = load ptr, ptr %15, align 8, !tbaa !5
  %1075 = load i64, ptr %1074, align 8, !tbaa !9
  store i64 %1075, ptr %36, align 8, !tbaa !9
  br label %1076

1076:                                             ; preds = %1798, %1071
  %1077 = load i64, ptr %36, align 8, !tbaa !9
  %1078 = icmp sge i64 %1077, 1
  br i1 %1078, label %1079, label %1801

1079:                                             ; preds = %1076
  %1080 = load i64, ptr %36, align 8, !tbaa !9
  %1081 = load i64, ptr %54, align 8, !tbaa !9
  %1082 = icmp sgt i64 %1080, %1081
  br i1 %1082, label %1083, label %1084

1083:                                             ; preds = %1079
  br label %1797

1084:                                             ; preds = %1079
  %1085 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %1085, ptr %40, align 8, !tbaa !9
  %1086 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %1086, ptr %41, align 8, !tbaa !9
  %1087 = load i64, ptr %36, align 8, !tbaa !9
  %1088 = sub nsw i64 %1087, 1
  store i64 %1088, ptr %54, align 8, !tbaa !9
  %1089 = load i64, ptr %36, align 8, !tbaa !9
  %1090 = icmp sgt i64 %1089, 1
  br i1 %1090, label %1091, label %1108

1091:                                             ; preds = %1084
  %1092 = load ptr, ptr %16, align 8, !tbaa !5
  %1093 = load i64, ptr %36, align 8, !tbaa !9
  %1094 = load i64, ptr %36, align 8, !tbaa !9
  %1095 = sub nsw i64 %1094, 1
  %1096 = load i64, ptr %24, align 8, !tbaa !9
  %1097 = mul nsw i64 %1095, %1096
  %1098 = add nsw i64 %1093, %1097
  %1099 = getelementptr inbounds double, ptr %1092, i64 %1098
  %1100 = load double, ptr %1099, align 8, !tbaa !11
  %1101 = fcmp une double %1100, 0.000000e+00
  br i1 %1101, label %1102, label %1107

1102:                                             ; preds = %1091
  %1103 = load i64, ptr %36, align 8, !tbaa !9
  %1104 = sub nsw i64 %1103, 1
  store i64 %1104, ptr %40, align 8, !tbaa !9
  %1105 = load i64, ptr %36, align 8, !tbaa !9
  %1106 = sub nsw i64 %1105, 2
  store i64 %1106, ptr %54, align 8, !tbaa !9
  br label %1107

1107:                                             ; preds = %1102, %1091
  br label %1108

1108:                                             ; preds = %1107, %1084
  %1109 = load i64, ptr %40, align 8, !tbaa !9
  %1110 = load i64, ptr %41, align 8, !tbaa !9
  %1111 = icmp eq i64 %1109, %1110
  br i1 %1111, label %1112, label %1422

1112:                                             ; preds = %1108
  %1113 = load ptr, ptr %19, align 8, !tbaa !5
  %1114 = load double, ptr %1113, align 8, !tbaa !11
  store double %1114, ptr %39, align 8, !tbaa !11
  %1115 = load i64, ptr %40, align 8, !tbaa !9
  %1116 = icmp eq i64 %1115, 1
  br i1 %1116, label %1117, label %1121

1117:                                             ; preds = %1112
  %1118 = load ptr, ptr %18, align 8, !tbaa !5
  %1119 = getelementptr inbounds double, ptr %1118, i64 1
  %1120 = load double, ptr %1119, align 8, !tbaa !11
  store double %1120, ptr %39, align 8, !tbaa !11
  br label %1121

1121:                                             ; preds = %1117, %1112
  %1122 = load ptr, ptr %21, align 8, !tbaa !5
  %1123 = load i64, ptr %40, align 8, !tbaa !9
  %1124 = getelementptr inbounds double, ptr %1122, i64 %1123
  %1125 = load double, ptr %1124, align 8, !tbaa !11
  store double %1125, ptr %28, align 8, !tbaa !11
  %1126 = load double, ptr %28, align 8, !tbaa !11
  %1127 = fcmp oge double %1126, 0.000000e+00
  br i1 %1127, label %1128, label %1130

1128:                                             ; preds = %1121
  %1129 = load double, ptr %28, align 8, !tbaa !11
  br label %1133

1130:                                             ; preds = %1121
  %1131 = load double, ptr %28, align 8, !tbaa !11
  %1132 = fneg double %1131
  br label %1133

1133:                                             ; preds = %1130, %1128
  %1134 = phi double [ %1129, %1128 ], [ %1132, %1130 ]
  %1135 = load ptr, ptr %21, align 8, !tbaa !5
  %1136 = load ptr, ptr %15, align 8, !tbaa !5
  %1137 = load i64, ptr %1136, align 8, !tbaa !9
  %1138 = load i64, ptr %40, align 8, !tbaa !9
  %1139 = add nsw i64 %1137, %1138
  %1140 = getelementptr inbounds double, ptr %1135, i64 %1139
  %1141 = load double, ptr %1140, align 8, !tbaa !11
  store double %1141, ptr %29, align 8, !tbaa !11
  %1142 = load double, ptr %29, align 8, !tbaa !11
  %1143 = fcmp oge double %1142, 0.000000e+00
  br i1 %1143, label %1144, label %1146

1144:                                             ; preds = %1133
  %1145 = load double, ptr %29, align 8, !tbaa !11
  br label %1149

1146:                                             ; preds = %1133
  %1147 = load double, ptr %29, align 8, !tbaa !11
  %1148 = fneg double %1147
  br label %1149

1149:                                             ; preds = %1146, %1144
  %1150 = phi double [ %1145, %1144 ], [ %1148, %1146 ]
  %1151 = fadd double %1134, %1150
  store double %1151, ptr %45, align 8, !tbaa !11
  %1152 = load ptr, ptr %16, align 8, !tbaa !5
  %1153 = load i64, ptr %40, align 8, !tbaa !9
  %1154 = load i64, ptr %40, align 8, !tbaa !9
  %1155 = load i64, ptr %24, align 8, !tbaa !9
  %1156 = mul nsw i64 %1154, %1155
  %1157 = add nsw i64 %1153, %1156
  %1158 = getelementptr inbounds double, ptr %1152, i64 %1157
  %1159 = load double, ptr %1158, align 8, !tbaa !11
  store double %1159, ptr %28, align 8, !tbaa !11
  %1160 = load double, ptr %28, align 8, !tbaa !11
  %1161 = fcmp oge double %1160, 0.000000e+00
  br i1 %1161, label %1162, label %1164

1162:                                             ; preds = %1149
  %1163 = load double, ptr %28, align 8, !tbaa !11
  br label %1167

1164:                                             ; preds = %1149
  %1165 = load double, ptr %28, align 8, !tbaa !11
  %1166 = fneg double %1165
  br label %1167

1167:                                             ; preds = %1164, %1162
  %1168 = phi double [ %1163, %1162 ], [ %1166, %1164 ]
  %1169 = load double, ptr %39, align 8, !tbaa !11
  %1170 = fcmp oge double %1169, 0.000000e+00
  br i1 %1170, label %1171, label %1173

1171:                                             ; preds = %1167
  %1172 = load double, ptr %39, align 8, !tbaa !11
  br label %1176

1173:                                             ; preds = %1167
  %1174 = load double, ptr %39, align 8, !tbaa !11
  %1175 = fneg double %1174
  br label %1176

1176:                                             ; preds = %1173, %1171
  %1177 = phi double [ %1172, %1171 ], [ %1175, %1173 ]
  %1178 = fadd double %1168, %1177
  store double %1178, ptr %49, align 8, !tbaa !11
  %1179 = load ptr, ptr %16, align 8, !tbaa !5
  %1180 = load i64, ptr %40, align 8, !tbaa !9
  %1181 = load i64, ptr %40, align 8, !tbaa !9
  %1182 = load i64, ptr %24, align 8, !tbaa !9
  %1183 = mul nsw i64 %1181, %1182
  %1184 = add nsw i64 %1180, %1183
  %1185 = getelementptr inbounds double, ptr %1179, i64 %1184
  %1186 = load double, ptr %1185, align 8, !tbaa !11
  store double %1186, ptr %50, align 8, !tbaa !11
  %1187 = load double, ptr %49, align 8, !tbaa !11
  %1188 = load double, ptr %55, align 8, !tbaa !11
  %1189 = fcmp olt double %1187, %1188
  br i1 %1189, label %1190, label %1194

1190:                                             ; preds = %1176
  %1191 = load double, ptr %55, align 8, !tbaa !11
  store double %1191, ptr %50, align 8, !tbaa !11
  %1192 = load double, ptr %55, align 8, !tbaa !11
  store double %1192, ptr %49, align 8, !tbaa !11
  %1193 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 1, ptr %1193, align 8, !tbaa !9
  br label %1194

1194:                                             ; preds = %1190, %1176
  %1195 = load double, ptr %45, align 8, !tbaa !11
  %1196 = fcmp oeq double %1195, 0.000000e+00
  br i1 %1196, label %1197, label %1198

1197:                                             ; preds = %1194
  br label %1797

1198:                                             ; preds = %1194
  %1199 = load double, ptr %49, align 8, !tbaa !11
  %1200 = fcmp olt double %1199, 1.000000e+00
  br i1 %1200, label %1201, label %1221

1201:                                             ; preds = %1198
  %1202 = load double, ptr %45, align 8, !tbaa !11
  %1203 = load double, ptr %58, align 8, !tbaa !11
  %1204 = load double, ptr %49, align 8, !tbaa !11
  %1205 = fmul double %1203, %1204
  %1206 = fcmp ogt double %1202, %1205
  br i1 %1206, label %1207, label %1220

1207:                                             ; preds = %1201
  %1208 = load double, ptr %45, align 8, !tbaa !11
  %1209 = fdiv double 1.000000e+00, %1208
  store double %1209, ptr %47, align 8, !tbaa !11
  %1210 = load ptr, ptr %21, align 8, !tbaa !5
  %1211 = getelementptr inbounds double, ptr %1210, i64 1
  %1212 = call i32 @f2c_dscal(ptr noundef %43, ptr noundef %47, ptr noundef %1211, ptr noundef @c__1)
  %1213 = load double, ptr %47, align 8, !tbaa !11
  %1214 = load ptr, ptr %20, align 8, !tbaa !5
  %1215 = load double, ptr %1214, align 8, !tbaa !11
  %1216 = fmul double %1215, %1213
  store double %1216, ptr %1214, align 8, !tbaa !11
  %1217 = load double, ptr %47, align 8, !tbaa !11
  %1218 = load double, ptr %53, align 8, !tbaa !11
  %1219 = fmul double %1218, %1217
  store double %1219, ptr %53, align 8, !tbaa !11
  br label %1220

1220:                                             ; preds = %1207, %1201
  br label %1221

1221:                                             ; preds = %1220, %1198
  %1222 = load ptr, ptr %21, align 8, !tbaa !5
  %1223 = load i64, ptr %40, align 8, !tbaa !9
  %1224 = getelementptr inbounds double, ptr %1222, i64 %1223
  %1225 = load ptr, ptr %21, align 8, !tbaa !5
  %1226 = load ptr, ptr %15, align 8, !tbaa !5
  %1227 = load i64, ptr %1226, align 8, !tbaa !9
  %1228 = load i64, ptr %40, align 8, !tbaa !9
  %1229 = add nsw i64 %1227, %1228
  %1230 = getelementptr inbounds double, ptr %1225, i64 %1229
  %1231 = call i32 @dladiv_(ptr noundef %1224, ptr noundef %1230, ptr noundef %50, ptr noundef %39, ptr noundef %46, ptr noundef %44)
  %1232 = load double, ptr %46, align 8, !tbaa !11
  %1233 = load ptr, ptr %21, align 8, !tbaa !5
  %1234 = load i64, ptr %40, align 8, !tbaa !9
  %1235 = getelementptr inbounds double, ptr %1233, i64 %1234
  store double %1232, ptr %1235, align 8, !tbaa !11
  %1236 = load double, ptr %44, align 8, !tbaa !11
  %1237 = load ptr, ptr %21, align 8, !tbaa !5
  %1238 = load ptr, ptr %15, align 8, !tbaa !5
  %1239 = load i64, ptr %1238, align 8, !tbaa !9
  %1240 = load i64, ptr %40, align 8, !tbaa !9
  %1241 = add nsw i64 %1239, %1240
  %1242 = getelementptr inbounds double, ptr %1237, i64 %1241
  store double %1236, ptr %1242, align 8, !tbaa !11
  %1243 = load ptr, ptr %21, align 8, !tbaa !5
  %1244 = load i64, ptr %40, align 8, !tbaa !9
  %1245 = getelementptr inbounds double, ptr %1243, i64 %1244
  %1246 = load double, ptr %1245, align 8, !tbaa !11
  store double %1246, ptr %28, align 8, !tbaa !11
  %1247 = load double, ptr %28, align 8, !tbaa !11
  %1248 = fcmp oge double %1247, 0.000000e+00
  br i1 %1248, label %1249, label %1251

1249:                                             ; preds = %1221
  %1250 = load double, ptr %28, align 8, !tbaa !11
  br label %1254

1251:                                             ; preds = %1221
  %1252 = load double, ptr %28, align 8, !tbaa !11
  %1253 = fneg double %1252
  br label %1254

1254:                                             ; preds = %1251, %1249
  %1255 = phi double [ %1250, %1249 ], [ %1253, %1251 ]
  %1256 = load ptr, ptr %21, align 8, !tbaa !5
  %1257 = load ptr, ptr %15, align 8, !tbaa !5
  %1258 = load i64, ptr %1257, align 8, !tbaa !9
  %1259 = load i64, ptr %40, align 8, !tbaa !9
  %1260 = add nsw i64 %1258, %1259
  %1261 = getelementptr inbounds double, ptr %1256, i64 %1260
  %1262 = load double, ptr %1261, align 8, !tbaa !11
  store double %1262, ptr %29, align 8, !tbaa !11
  %1263 = load double, ptr %29, align 8, !tbaa !11
  %1264 = fcmp oge double %1263, 0.000000e+00
  br i1 %1264, label %1265, label %1267

1265:                                             ; preds = %1254
  %1266 = load double, ptr %29, align 8, !tbaa !11
  br label %1270

1267:                                             ; preds = %1254
  %1268 = load double, ptr %29, align 8, !tbaa !11
  %1269 = fneg double %1268
  br label %1270

1270:                                             ; preds = %1267, %1265
  %1271 = phi double [ %1266, %1265 ], [ %1269, %1267 ]
  %1272 = fadd double %1255, %1271
  store double %1272, ptr %45, align 8, !tbaa !11
  %1273 = load double, ptr %45, align 8, !tbaa !11
  %1274 = fcmp ogt double %1273, 1.000000e+00
  br i1 %1274, label %1275, label %1297

1275:                                             ; preds = %1270
  %1276 = load double, ptr %45, align 8, !tbaa !11
  %1277 = fdiv double 1.000000e+00, %1276
  store double %1277, ptr %47, align 8, !tbaa !11
  %1278 = load ptr, ptr %22, align 8, !tbaa !5
  %1279 = load i64, ptr %40, align 8, !tbaa !9
  %1280 = getelementptr inbounds double, ptr %1278, i64 %1279
  %1281 = load double, ptr %1280, align 8, !tbaa !11
  %1282 = load double, ptr %58, align 8, !tbaa !11
  %1283 = load double, ptr %53, align 8, !tbaa !11
  %1284 = fsub double %1282, %1283
  %1285 = load double, ptr %47, align 8, !tbaa !11
  %1286 = fmul double %1284, %1285
  %1287 = fcmp ogt double %1281, %1286
  br i1 %1287, label %1288, label %1296

1288:                                             ; preds = %1275
  %1289 = load ptr, ptr %21, align 8, !tbaa !5
  %1290 = getelementptr inbounds double, ptr %1289, i64 1
  %1291 = call i32 @f2c_dscal(ptr noundef %43, ptr noundef %47, ptr noundef %1290, ptr noundef @c__1)
  %1292 = load double, ptr %47, align 8, !tbaa !11
  %1293 = load ptr, ptr %20, align 8, !tbaa !5
  %1294 = load double, ptr %1293, align 8, !tbaa !11
  %1295 = fmul double %1294, %1292
  store double %1295, ptr %1293, align 8, !tbaa !11
  br label %1296

1296:                                             ; preds = %1288, %1275
  br label %1297

1297:                                             ; preds = %1296, %1270
  %1298 = load i64, ptr %40, align 8, !tbaa !9
  %1299 = icmp sgt i64 %1298, 1
  br i1 %1299, label %1300, label %1421

1300:                                             ; preds = %1297
  %1301 = load i64, ptr %40, align 8, !tbaa !9
  %1302 = sub nsw i64 %1301, 1
  store i64 %1302, ptr %26, align 8, !tbaa !9
  %1303 = load ptr, ptr %21, align 8, !tbaa !5
  %1304 = load i64, ptr %40, align 8, !tbaa !9
  %1305 = getelementptr inbounds double, ptr %1303, i64 %1304
  %1306 = load double, ptr %1305, align 8, !tbaa !11
  %1307 = fneg double %1306
  store double %1307, ptr %28, align 8, !tbaa !11
  %1308 = load ptr, ptr %16, align 8, !tbaa !5
  %1309 = load i64, ptr %40, align 8, !tbaa !9
  %1310 = load i64, ptr %24, align 8, !tbaa !9
  %1311 = mul nsw i64 %1309, %1310
  %1312 = add nsw i64 %1311, 1
  %1313 = getelementptr inbounds double, ptr %1308, i64 %1312
  %1314 = load ptr, ptr %21, align 8, !tbaa !5
  %1315 = getelementptr inbounds double, ptr %1314, i64 1
  %1316 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %1313, ptr noundef @c__1, ptr noundef %1315, ptr noundef @c__1)
  %1317 = load i64, ptr %40, align 8, !tbaa !9
  %1318 = sub nsw i64 %1317, 1
  store i64 %1318, ptr %26, align 8, !tbaa !9
  %1319 = load ptr, ptr %21, align 8, !tbaa !5
  %1320 = load ptr, ptr %15, align 8, !tbaa !5
  %1321 = load i64, ptr %1320, align 8, !tbaa !9
  %1322 = load i64, ptr %40, align 8, !tbaa !9
  %1323 = add nsw i64 %1321, %1322
  %1324 = getelementptr inbounds double, ptr %1319, i64 %1323
  %1325 = load double, ptr %1324, align 8, !tbaa !11
  %1326 = fneg double %1325
  store double %1326, ptr %28, align 8, !tbaa !11
  %1327 = load ptr, ptr %16, align 8, !tbaa !5
  %1328 = load i64, ptr %40, align 8, !tbaa !9
  %1329 = load i64, ptr %24, align 8, !tbaa !9
  %1330 = mul nsw i64 %1328, %1329
  %1331 = add nsw i64 %1330, 1
  %1332 = getelementptr inbounds double, ptr %1327, i64 %1331
  %1333 = load ptr, ptr %21, align 8, !tbaa !5
  %1334 = load ptr, ptr %15, align 8, !tbaa !5
  %1335 = load i64, ptr %1334, align 8, !tbaa !9
  %1336 = add nsw i64 %1335, 1
  %1337 = getelementptr inbounds double, ptr %1333, i64 %1336
  %1338 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %1332, ptr noundef @c__1, ptr noundef %1337, ptr noundef @c__1)
  %1339 = load ptr, ptr %18, align 8, !tbaa !5
  %1340 = load i64, ptr %40, align 8, !tbaa !9
  %1341 = getelementptr inbounds double, ptr %1339, i64 %1340
  %1342 = load double, ptr %1341, align 8, !tbaa !11
  %1343 = load ptr, ptr %21, align 8, !tbaa !5
  %1344 = load ptr, ptr %15, align 8, !tbaa !5
  %1345 = load i64, ptr %1344, align 8, !tbaa !9
  %1346 = load i64, ptr %40, align 8, !tbaa !9
  %1347 = add nsw i64 %1345, %1346
  %1348 = getelementptr inbounds double, ptr %1343, i64 %1347
  %1349 = load double, ptr %1348, align 8, !tbaa !11
  %1350 = load ptr, ptr %21, align 8, !tbaa !5
  %1351 = getelementptr inbounds double, ptr %1350, i64 1
  %1352 = load double, ptr %1351, align 8, !tbaa !11
  %1353 = call double @llvm.fmuladd.f64(double %1342, double %1349, double %1352)
  store double %1353, ptr %1351, align 8, !tbaa !11
  %1354 = load ptr, ptr %18, align 8, !tbaa !5
  %1355 = load i64, ptr %40, align 8, !tbaa !9
  %1356 = getelementptr inbounds double, ptr %1354, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !11
  %1358 = load ptr, ptr %21, align 8, !tbaa !5
  %1359 = load i64, ptr %40, align 8, !tbaa !9
  %1360 = getelementptr inbounds double, ptr %1358, i64 %1359
  %1361 = load double, ptr %1360, align 8, !tbaa !11
  %1362 = load ptr, ptr %21, align 8, !tbaa !5
  %1363 = load ptr, ptr %15, align 8, !tbaa !5
  %1364 = load i64, ptr %1363, align 8, !tbaa !9
  %1365 = add nsw i64 %1364, 1
  %1366 = getelementptr inbounds double, ptr %1362, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = fneg double %1357
  %1369 = call double @llvm.fmuladd.f64(double %1368, double %1361, double %1367)
  store double %1369, ptr %1366, align 8, !tbaa !11
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  %1370 = load i64, ptr %40, align 8, !tbaa !9
  %1371 = sub nsw i64 %1370, 1
  store i64 %1371, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1372

1372:                                             ; preds = %1417, %1300
  %1373 = load i64, ptr %37, align 8, !tbaa !9
  %1374 = load i64, ptr %26, align 8, !tbaa !9
  %1375 = icmp sle i64 %1373, %1374
  br i1 %1375, label %1376, label %1420

1376:                                             ; preds = %1372
  %1377 = load double, ptr %53, align 8, !tbaa !11
  store double %1377, ptr %30, align 8, !tbaa !11
  %1378 = load ptr, ptr %21, align 8, !tbaa !5
  %1379 = load i64, ptr %37, align 8, !tbaa !9
  %1380 = getelementptr inbounds double, ptr %1378, i64 %1379
  %1381 = load double, ptr %1380, align 8, !tbaa !11
  store double %1381, ptr %28, align 8, !tbaa !11
  %1382 = load double, ptr %28, align 8, !tbaa !11
  %1383 = fcmp oge double %1382, 0.000000e+00
  br i1 %1383, label %1384, label %1386

1384:                                             ; preds = %1376
  %1385 = load double, ptr %28, align 8, !tbaa !11
  br label %1389

1386:                                             ; preds = %1376
  %1387 = load double, ptr %28, align 8, !tbaa !11
  %1388 = fneg double %1387
  br label %1389

1389:                                             ; preds = %1386, %1384
  %1390 = phi double [ %1385, %1384 ], [ %1388, %1386 ]
  %1391 = load ptr, ptr %21, align 8, !tbaa !5
  %1392 = load i64, ptr %37, align 8, !tbaa !9
  %1393 = load ptr, ptr %15, align 8, !tbaa !5
  %1394 = load i64, ptr %1393, align 8, !tbaa !9
  %1395 = add nsw i64 %1392, %1394
  %1396 = getelementptr inbounds double, ptr %1391, i64 %1395
  %1397 = load double, ptr %1396, align 8, !tbaa !11
  store double %1397, ptr %29, align 8, !tbaa !11
  %1398 = load double, ptr %29, align 8, !tbaa !11
  %1399 = fcmp oge double %1398, 0.000000e+00
  br i1 %1399, label %1400, label %1402

1400:                                             ; preds = %1389
  %1401 = load double, ptr %29, align 8, !tbaa !11
  br label %1405

1402:                                             ; preds = %1389
  %1403 = load double, ptr %29, align 8, !tbaa !11
  %1404 = fneg double %1403
  br label %1405

1405:                                             ; preds = %1402, %1400
  %1406 = phi double [ %1401, %1400 ], [ %1404, %1402 ]
  %1407 = fadd double %1390, %1406
  store double %1407, ptr %31, align 8, !tbaa !11
  %1408 = load double, ptr %30, align 8, !tbaa !11
  %1409 = load double, ptr %31, align 8, !tbaa !11
  %1410 = fcmp oge double %1408, %1409
  br i1 %1410, label %1411, label %1413

1411:                                             ; preds = %1405
  %1412 = load double, ptr %30, align 8, !tbaa !11
  br label %1415

1413:                                             ; preds = %1405
  %1414 = load double, ptr %31, align 8, !tbaa !11
  br label %1415

1415:                                             ; preds = %1413, %1411
  %1416 = phi double [ %1412, %1411 ], [ %1414, %1413 ]
  store double %1416, ptr %53, align 8, !tbaa !11
  br label %1417

1417:                                             ; preds = %1415
  %1418 = load i64, ptr %37, align 8, !tbaa !9
  %1419 = add nsw i64 %1418, 1
  store i64 %1419, ptr %37, align 8, !tbaa !9
  br label %1372, !llvm.loop !18

1420:                                             ; preds = %1372
  br label %1421

1421:                                             ; preds = %1420, %1297
  br label %1796

1422:                                             ; preds = %1108
  %1423 = load ptr, ptr %21, align 8, !tbaa !5
  %1424 = load i64, ptr %40, align 8, !tbaa !9
  %1425 = getelementptr inbounds double, ptr %1423, i64 %1424
  %1426 = load double, ptr %1425, align 8, !tbaa !11
  %1427 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  store double %1426, ptr %1427, align 16, !tbaa !11
  %1428 = load ptr, ptr %21, align 8, !tbaa !5
  %1429 = load i64, ptr %41, align 8, !tbaa !9
  %1430 = getelementptr inbounds double, ptr %1428, i64 %1429
  %1431 = load double, ptr %1430, align 8, !tbaa !11
  %1432 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 1
  store double %1431, ptr %1432, align 8, !tbaa !11
  %1433 = load ptr, ptr %21, align 8, !tbaa !5
  %1434 = load ptr, ptr %15, align 8, !tbaa !5
  %1435 = load i64, ptr %1434, align 8, !tbaa !9
  %1436 = load i64, ptr %40, align 8, !tbaa !9
  %1437 = add nsw i64 %1435, %1436
  %1438 = getelementptr inbounds double, ptr %1433, i64 %1437
  %1439 = load double, ptr %1438, align 8, !tbaa !11
  %1440 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 2
  store double %1439, ptr %1440, align 16, !tbaa !11
  %1441 = load ptr, ptr %21, align 8, !tbaa !5
  %1442 = load ptr, ptr %15, align 8, !tbaa !5
  %1443 = load i64, ptr %1442, align 8, !tbaa !9
  %1444 = load i64, ptr %41, align 8, !tbaa !9
  %1445 = add nsw i64 %1443, %1444
  %1446 = getelementptr inbounds double, ptr %1441, i64 %1445
  %1447 = load double, ptr %1446, align 8, !tbaa !11
  %1448 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 3
  store double %1447, ptr %1448, align 8, !tbaa !11
  %1449 = load ptr, ptr %19, align 8, !tbaa !5
  %1450 = load double, ptr %1449, align 8, !tbaa !11
  %1451 = fneg double %1450
  store double %1451, ptr %28, align 8, !tbaa !11
  %1452 = load ptr, ptr %16, align 8, !tbaa !5
  %1453 = load i64, ptr %40, align 8, !tbaa !9
  %1454 = load i64, ptr %40, align 8, !tbaa !9
  %1455 = load i64, ptr %24, align 8, !tbaa !9
  %1456 = mul nsw i64 %1454, %1455
  %1457 = add nsw i64 %1453, %1456
  %1458 = getelementptr inbounds double, ptr %1452, i64 %1457
  %1459 = load ptr, ptr %17, align 8, !tbaa !5
  %1460 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  %1461 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %1462 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %55, ptr noundef @c_b21, ptr noundef %1458, ptr noundef %1459, ptr noundef @c_b21, ptr noundef @c_b21, ptr noundef %1460, ptr noundef @c__2, ptr noundef @c_b25, ptr noundef %28, ptr noundef %1461, ptr noundef @c__2, ptr noundef %57, ptr noundef %56, ptr noundef %51)
  %1463 = load i64, ptr %51, align 8, !tbaa !9
  %1464 = icmp ne i64 %1463, 0
  br i1 %1464, label %1465, label %1467

1465:                                             ; preds = %1422
  %1466 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 2, ptr %1466, align 8, !tbaa !9
  br label %1467

1467:                                             ; preds = %1465, %1422
  %1468 = load double, ptr %57, align 8, !tbaa !11
  %1469 = fcmp une double %1468, 1.000000e+00
  br i1 %1469, label %1470, label %1482

1470:                                             ; preds = %1467
  %1471 = load ptr, ptr %15, align 8, !tbaa !5
  %1472 = load i64, ptr %1471, align 8, !tbaa !9
  %1473 = shl i64 %1472, 1
  store i64 %1473, ptr %26, align 8, !tbaa !9
  %1474 = load ptr, ptr %21, align 8, !tbaa !5
  %1475 = getelementptr inbounds double, ptr %1474, i64 1
  %1476 = call i32 @f2c_dscal(ptr noundef %26, ptr noundef %57, ptr noundef %1475, ptr noundef @c__1)
  %1477 = load double, ptr %57, align 8, !tbaa !11
  %1478 = load ptr, ptr %20, align 8, !tbaa !5
  %1479 = load double, ptr %1478, align 8, !tbaa !11
  %1480 = fmul double %1477, %1479
  %1481 = load ptr, ptr %20, align 8, !tbaa !5
  store double %1480, ptr %1481, align 8, !tbaa !11
  br label %1482

1482:                                             ; preds = %1470, %1467
  %1483 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %1484 = load double, ptr %1483, align 16, !tbaa !11
  %1485 = load ptr, ptr %21, align 8, !tbaa !5
  %1486 = load i64, ptr %40, align 8, !tbaa !9
  %1487 = getelementptr inbounds double, ptr %1485, i64 %1486
  store double %1484, ptr %1487, align 8, !tbaa !11
  %1488 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %1489 = load double, ptr %1488, align 8, !tbaa !11
  %1490 = load ptr, ptr %21, align 8, !tbaa !5
  %1491 = load i64, ptr %41, align 8, !tbaa !9
  %1492 = getelementptr inbounds double, ptr %1490, i64 %1491
  store double %1489, ptr %1492, align 8, !tbaa !11
  %1493 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 2
  %1494 = load double, ptr %1493, align 16, !tbaa !11
  %1495 = load ptr, ptr %21, align 8, !tbaa !5
  %1496 = load ptr, ptr %15, align 8, !tbaa !5
  %1497 = load i64, ptr %1496, align 8, !tbaa !9
  %1498 = load i64, ptr %40, align 8, !tbaa !9
  %1499 = add nsw i64 %1497, %1498
  %1500 = getelementptr inbounds double, ptr %1495, i64 %1499
  store double %1494, ptr %1500, align 8, !tbaa !11
  %1501 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 3
  %1502 = load double, ptr %1501, align 8, !tbaa !11
  %1503 = load ptr, ptr %21, align 8, !tbaa !5
  %1504 = load ptr, ptr %15, align 8, !tbaa !5
  %1505 = load i64, ptr %1504, align 8, !tbaa !9
  %1506 = load i64, ptr %41, align 8, !tbaa !9
  %1507 = add nsw i64 %1505, %1506
  %1508 = getelementptr inbounds double, ptr %1503, i64 %1507
  store double %1502, ptr %1508, align 8, !tbaa !11
  %1509 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %1510 = load double, ptr %1509, align 16, !tbaa !11
  %1511 = fcmp oge double %1510, 0.000000e+00
  br i1 %1511, label %1512, label %1515

1512:                                             ; preds = %1482
  %1513 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %1514 = load double, ptr %1513, align 16, !tbaa !11
  br label %1519

1515:                                             ; preds = %1482
  %1516 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %1517 = load double, ptr %1516, align 16, !tbaa !11
  %1518 = fneg double %1517
  br label %1519

1519:                                             ; preds = %1515, %1512
  %1520 = phi double [ %1514, %1512 ], [ %1518, %1515 ]
  %1521 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 2
  %1522 = load double, ptr %1521, align 16, !tbaa !11
  %1523 = fcmp oge double %1522, 0.000000e+00
  br i1 %1523, label %1524, label %1527

1524:                                             ; preds = %1519
  %1525 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 2
  %1526 = load double, ptr %1525, align 16, !tbaa !11
  br label %1531

1527:                                             ; preds = %1519
  %1528 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 2
  %1529 = load double, ptr %1528, align 16, !tbaa !11
  %1530 = fneg double %1529
  br label %1531

1531:                                             ; preds = %1527, %1524
  %1532 = phi double [ %1526, %1524 ], [ %1530, %1527 ]
  %1533 = fadd double %1520, %1532
  store double %1533, ptr %28, align 8, !tbaa !11
  %1534 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %1535 = load double, ptr %1534, align 8, !tbaa !11
  %1536 = fcmp oge double %1535, 0.000000e+00
  br i1 %1536, label %1537, label %1540

1537:                                             ; preds = %1531
  %1538 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %1539 = load double, ptr %1538, align 8, !tbaa !11
  br label %1544

1540:                                             ; preds = %1531
  %1541 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %1542 = load double, ptr %1541, align 8, !tbaa !11
  %1543 = fneg double %1542
  br label %1544

1544:                                             ; preds = %1540, %1537
  %1545 = phi double [ %1539, %1537 ], [ %1543, %1540 ]
  %1546 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 3
  %1547 = load double, ptr %1546, align 8, !tbaa !11
  %1548 = fcmp oge double %1547, 0.000000e+00
  br i1 %1548, label %1549, label %1552

1549:                                             ; preds = %1544
  %1550 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 3
  %1551 = load double, ptr %1550, align 8, !tbaa !11
  br label %1556

1552:                                             ; preds = %1544
  %1553 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 3
  %1554 = load double, ptr %1553, align 8, !tbaa !11
  %1555 = fneg double %1554
  br label %1556

1556:                                             ; preds = %1552, %1549
  %1557 = phi double [ %1551, %1549 ], [ %1555, %1552 ]
  %1558 = fadd double %1545, %1557
  store double %1558, ptr %29, align 8, !tbaa !11
  %1559 = load double, ptr %28, align 8, !tbaa !11
  %1560 = load double, ptr %29, align 8, !tbaa !11
  %1561 = fcmp oge double %1559, %1560
  br i1 %1561, label %1562, label %1564

1562:                                             ; preds = %1556
  %1563 = load double, ptr %28, align 8, !tbaa !11
  br label %1566

1564:                                             ; preds = %1556
  %1565 = load double, ptr %29, align 8, !tbaa !11
  br label %1566

1566:                                             ; preds = %1564, %1562
  %1567 = phi double [ %1563, %1562 ], [ %1565, %1564 ]
  store double %1567, ptr %45, align 8, !tbaa !11
  %1568 = load double, ptr %45, align 8, !tbaa !11
  %1569 = fcmp ogt double %1568, 1.000000e+00
  br i1 %1569, label %1570, label %1605

1570:                                             ; preds = %1566
  %1571 = load double, ptr %45, align 8, !tbaa !11
  %1572 = fdiv double 1.000000e+00, %1571
  store double %1572, ptr %47, align 8, !tbaa !11
  %1573 = load ptr, ptr %22, align 8, !tbaa !5
  %1574 = load i64, ptr %40, align 8, !tbaa !9
  %1575 = getelementptr inbounds double, ptr %1573, i64 %1574
  %1576 = load double, ptr %1575, align 8, !tbaa !11
  store double %1576, ptr %28, align 8, !tbaa !11
  %1577 = load ptr, ptr %22, align 8, !tbaa !5
  %1578 = load i64, ptr %41, align 8, !tbaa !9
  %1579 = getelementptr inbounds double, ptr %1577, i64 %1578
  %1580 = load double, ptr %1579, align 8, !tbaa !11
  store double %1580, ptr %29, align 8, !tbaa !11
  %1581 = load double, ptr %28, align 8, !tbaa !11
  %1582 = load double, ptr %29, align 8, !tbaa !11
  %1583 = fcmp oge double %1581, %1582
  br i1 %1583, label %1584, label %1586

1584:                                             ; preds = %1570
  %1585 = load double, ptr %28, align 8, !tbaa !11
  br label %1588

1586:                                             ; preds = %1570
  %1587 = load double, ptr %29, align 8, !tbaa !11
  br label %1588

1588:                                             ; preds = %1586, %1584
  %1589 = phi double [ %1585, %1584 ], [ %1587, %1586 ]
  %1590 = load double, ptr %58, align 8, !tbaa !11
  %1591 = load double, ptr %53, align 8, !tbaa !11
  %1592 = fsub double %1590, %1591
  %1593 = load double, ptr %47, align 8, !tbaa !11
  %1594 = fmul double %1592, %1593
  %1595 = fcmp ogt double %1589, %1594
  br i1 %1595, label %1596, label %1604

1596:                                             ; preds = %1588
  %1597 = load ptr, ptr %21, align 8, !tbaa !5
  %1598 = getelementptr inbounds double, ptr %1597, i64 1
  %1599 = call i32 @f2c_dscal(ptr noundef %43, ptr noundef %47, ptr noundef %1598, ptr noundef @c__1)
  %1600 = load double, ptr %47, align 8, !tbaa !11
  %1601 = load ptr, ptr %20, align 8, !tbaa !5
  %1602 = load double, ptr %1601, align 8, !tbaa !11
  %1603 = fmul double %1602, %1600
  store double %1603, ptr %1601, align 8, !tbaa !11
  br label %1604

1604:                                             ; preds = %1596, %1588
  br label %1605

1605:                                             ; preds = %1604, %1566
  %1606 = load i64, ptr %40, align 8, !tbaa !9
  %1607 = icmp sgt i64 %1606, 1
  br i1 %1607, label %1608, label %1795

1608:                                             ; preds = %1605
  %1609 = load i64, ptr %40, align 8, !tbaa !9
  %1610 = sub nsw i64 %1609, 1
  store i64 %1610, ptr %26, align 8, !tbaa !9
  %1611 = load ptr, ptr %21, align 8, !tbaa !5
  %1612 = load i64, ptr %40, align 8, !tbaa !9
  %1613 = getelementptr inbounds double, ptr %1611, i64 %1612
  %1614 = load double, ptr %1613, align 8, !tbaa !11
  %1615 = fneg double %1614
  store double %1615, ptr %28, align 8, !tbaa !11
  %1616 = load ptr, ptr %16, align 8, !tbaa !5
  %1617 = load i64, ptr %40, align 8, !tbaa !9
  %1618 = load i64, ptr %24, align 8, !tbaa !9
  %1619 = mul nsw i64 %1617, %1618
  %1620 = add nsw i64 %1619, 1
  %1621 = getelementptr inbounds double, ptr %1616, i64 %1620
  %1622 = load ptr, ptr %21, align 8, !tbaa !5
  %1623 = getelementptr inbounds double, ptr %1622, i64 1
  %1624 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %1621, ptr noundef @c__1, ptr noundef %1623, ptr noundef @c__1)
  %1625 = load i64, ptr %40, align 8, !tbaa !9
  %1626 = sub nsw i64 %1625, 1
  store i64 %1626, ptr %26, align 8, !tbaa !9
  %1627 = load ptr, ptr %21, align 8, !tbaa !5
  %1628 = load i64, ptr %41, align 8, !tbaa !9
  %1629 = getelementptr inbounds double, ptr %1627, i64 %1628
  %1630 = load double, ptr %1629, align 8, !tbaa !11
  %1631 = fneg double %1630
  store double %1631, ptr %28, align 8, !tbaa !11
  %1632 = load ptr, ptr %16, align 8, !tbaa !5
  %1633 = load i64, ptr %41, align 8, !tbaa !9
  %1634 = load i64, ptr %24, align 8, !tbaa !9
  %1635 = mul nsw i64 %1633, %1634
  %1636 = add nsw i64 %1635, 1
  %1637 = getelementptr inbounds double, ptr %1632, i64 %1636
  %1638 = load ptr, ptr %21, align 8, !tbaa !5
  %1639 = getelementptr inbounds double, ptr %1638, i64 1
  %1640 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %1637, ptr noundef @c__1, ptr noundef %1639, ptr noundef @c__1)
  %1641 = load i64, ptr %40, align 8, !tbaa !9
  %1642 = sub nsw i64 %1641, 1
  store i64 %1642, ptr %26, align 8, !tbaa !9
  %1643 = load ptr, ptr %21, align 8, !tbaa !5
  %1644 = load ptr, ptr %15, align 8, !tbaa !5
  %1645 = load i64, ptr %1644, align 8, !tbaa !9
  %1646 = load i64, ptr %40, align 8, !tbaa !9
  %1647 = add nsw i64 %1645, %1646
  %1648 = getelementptr inbounds double, ptr %1643, i64 %1647
  %1649 = load double, ptr %1648, align 8, !tbaa !11
  %1650 = fneg double %1649
  store double %1650, ptr %28, align 8, !tbaa !11
  %1651 = load ptr, ptr %16, align 8, !tbaa !5
  %1652 = load i64, ptr %40, align 8, !tbaa !9
  %1653 = load i64, ptr %24, align 8, !tbaa !9
  %1654 = mul nsw i64 %1652, %1653
  %1655 = add nsw i64 %1654, 1
  %1656 = getelementptr inbounds double, ptr %1651, i64 %1655
  %1657 = load ptr, ptr %21, align 8, !tbaa !5
  %1658 = load ptr, ptr %15, align 8, !tbaa !5
  %1659 = load i64, ptr %1658, align 8, !tbaa !9
  %1660 = add nsw i64 %1659, 1
  %1661 = getelementptr inbounds double, ptr %1657, i64 %1660
  %1662 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %1656, ptr noundef @c__1, ptr noundef %1661, ptr noundef @c__1)
  %1663 = load i64, ptr %40, align 8, !tbaa !9
  %1664 = sub nsw i64 %1663, 1
  store i64 %1664, ptr %26, align 8, !tbaa !9
  %1665 = load ptr, ptr %21, align 8, !tbaa !5
  %1666 = load ptr, ptr %15, align 8, !tbaa !5
  %1667 = load i64, ptr %1666, align 8, !tbaa !9
  %1668 = load i64, ptr %41, align 8, !tbaa !9
  %1669 = add nsw i64 %1667, %1668
  %1670 = getelementptr inbounds double, ptr %1665, i64 %1669
  %1671 = load double, ptr %1670, align 8, !tbaa !11
  %1672 = fneg double %1671
  store double %1672, ptr %28, align 8, !tbaa !11
  %1673 = load ptr, ptr %16, align 8, !tbaa !5
  %1674 = load i64, ptr %41, align 8, !tbaa !9
  %1675 = load i64, ptr %24, align 8, !tbaa !9
  %1676 = mul nsw i64 %1674, %1675
  %1677 = add nsw i64 %1676, 1
  %1678 = getelementptr inbounds double, ptr %1673, i64 %1677
  %1679 = load ptr, ptr %21, align 8, !tbaa !5
  %1680 = load ptr, ptr %15, align 8, !tbaa !5
  %1681 = load i64, ptr %1680, align 8, !tbaa !9
  %1682 = add nsw i64 %1681, 1
  %1683 = getelementptr inbounds double, ptr %1679, i64 %1682
  %1684 = call i32 @f2c_daxpy(ptr noundef %26, ptr noundef %28, ptr noundef %1678, ptr noundef @c__1, ptr noundef %1683, ptr noundef @c__1)
  %1685 = load ptr, ptr %21, align 8, !tbaa !5
  %1686 = getelementptr inbounds double, ptr %1685, i64 1
  %1687 = load double, ptr %1686, align 8, !tbaa !11
  %1688 = load ptr, ptr %18, align 8, !tbaa !5
  %1689 = load i64, ptr %40, align 8, !tbaa !9
  %1690 = getelementptr inbounds double, ptr %1688, i64 %1689
  %1691 = load double, ptr %1690, align 8, !tbaa !11
  %1692 = load ptr, ptr %21, align 8, !tbaa !5
  %1693 = load ptr, ptr %15, align 8, !tbaa !5
  %1694 = load i64, ptr %1693, align 8, !tbaa !9
  %1695 = load i64, ptr %40, align 8, !tbaa !9
  %1696 = add nsw i64 %1694, %1695
  %1697 = getelementptr inbounds double, ptr %1692, i64 %1696
  %1698 = load double, ptr %1697, align 8, !tbaa !11
  %1699 = call double @llvm.fmuladd.f64(double %1691, double %1698, double %1687)
  %1700 = load ptr, ptr %18, align 8, !tbaa !5
  %1701 = load i64, ptr %41, align 8, !tbaa !9
  %1702 = getelementptr inbounds double, ptr %1700, i64 %1701
  %1703 = load double, ptr %1702, align 8, !tbaa !11
  %1704 = load ptr, ptr %21, align 8, !tbaa !5
  %1705 = load ptr, ptr %15, align 8, !tbaa !5
  %1706 = load i64, ptr %1705, align 8, !tbaa !9
  %1707 = load i64, ptr %41, align 8, !tbaa !9
  %1708 = add nsw i64 %1706, %1707
  %1709 = getelementptr inbounds double, ptr %1704, i64 %1708
  %1710 = load double, ptr %1709, align 8, !tbaa !11
  %1711 = call double @llvm.fmuladd.f64(double %1703, double %1710, double %1699)
  %1712 = load ptr, ptr %21, align 8, !tbaa !5
  %1713 = getelementptr inbounds double, ptr %1712, i64 1
  store double %1711, ptr %1713, align 8, !tbaa !11
  %1714 = load ptr, ptr %21, align 8, !tbaa !5
  %1715 = load ptr, ptr %15, align 8, !tbaa !5
  %1716 = load i64, ptr %1715, align 8, !tbaa !9
  %1717 = add nsw i64 %1716, 1
  %1718 = getelementptr inbounds double, ptr %1714, i64 %1717
  %1719 = load double, ptr %1718, align 8, !tbaa !11
  %1720 = load ptr, ptr %18, align 8, !tbaa !5
  %1721 = load i64, ptr %40, align 8, !tbaa !9
  %1722 = getelementptr inbounds double, ptr %1720, i64 %1721
  %1723 = load double, ptr %1722, align 8, !tbaa !11
  %1724 = load ptr, ptr %21, align 8, !tbaa !5
  %1725 = load i64, ptr %40, align 8, !tbaa !9
  %1726 = getelementptr inbounds double, ptr %1724, i64 %1725
  %1727 = load double, ptr %1726, align 8, !tbaa !11
  %1728 = fneg double %1723
  %1729 = call double @llvm.fmuladd.f64(double %1728, double %1727, double %1719)
  %1730 = load ptr, ptr %18, align 8, !tbaa !5
  %1731 = load i64, ptr %41, align 8, !tbaa !9
  %1732 = getelementptr inbounds double, ptr %1730, i64 %1731
  %1733 = load double, ptr %1732, align 8, !tbaa !11
  %1734 = load ptr, ptr %21, align 8, !tbaa !5
  %1735 = load i64, ptr %41, align 8, !tbaa !9
  %1736 = getelementptr inbounds double, ptr %1734, i64 %1735
  %1737 = load double, ptr %1736, align 8, !tbaa !11
  %1738 = fneg double %1733
  %1739 = call double @llvm.fmuladd.f64(double %1738, double %1737, double %1729)
  %1740 = load ptr, ptr %21, align 8, !tbaa !5
  %1741 = load ptr, ptr %15, align 8, !tbaa !5
  %1742 = load i64, ptr %1741, align 8, !tbaa !9
  %1743 = add nsw i64 %1742, 1
  %1744 = getelementptr inbounds double, ptr %1740, i64 %1743
  store double %1739, ptr %1744, align 8, !tbaa !11
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  %1745 = load i64, ptr %40, align 8, !tbaa !9
  %1746 = sub nsw i64 %1745, 1
  store i64 %1746, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1747

1747:                                             ; preds = %1791, %1608
  %1748 = load i64, ptr %37, align 8, !tbaa !9
  %1749 = load i64, ptr %26, align 8, !tbaa !9
  %1750 = icmp sle i64 %1748, %1749
  br i1 %1750, label %1751, label %1794

1751:                                             ; preds = %1747
  %1752 = load ptr, ptr %21, align 8, !tbaa !5
  %1753 = load i64, ptr %37, align 8, !tbaa !9
  %1754 = getelementptr inbounds double, ptr %1752, i64 %1753
  %1755 = load double, ptr %1754, align 8, !tbaa !11
  store double %1755, ptr %28, align 8, !tbaa !11
  %1756 = load double, ptr %28, align 8, !tbaa !11
  %1757 = fcmp oge double %1756, 0.000000e+00
  br i1 %1757, label %1758, label %1760

1758:                                             ; preds = %1751
  %1759 = load double, ptr %28, align 8, !tbaa !11
  br label %1763

1760:                                             ; preds = %1751
  %1761 = load double, ptr %28, align 8, !tbaa !11
  %1762 = fneg double %1761
  br label %1763

1763:                                             ; preds = %1760, %1758
  %1764 = phi double [ %1759, %1758 ], [ %1762, %1760 ]
  %1765 = load ptr, ptr %21, align 8, !tbaa !5
  %1766 = load i64, ptr %37, align 8, !tbaa !9
  %1767 = load ptr, ptr %15, align 8, !tbaa !5
  %1768 = load i64, ptr %1767, align 8, !tbaa !9
  %1769 = add nsw i64 %1766, %1768
  %1770 = getelementptr inbounds double, ptr %1765, i64 %1769
  %1771 = load double, ptr %1770, align 8, !tbaa !11
  store double %1771, ptr %29, align 8, !tbaa !11
  %1772 = load double, ptr %29, align 8, !tbaa !11
  %1773 = fcmp oge double %1772, 0.000000e+00
  br i1 %1773, label %1774, label %1776

1774:                                             ; preds = %1763
  %1775 = load double, ptr %29, align 8, !tbaa !11
  br label %1779

1776:                                             ; preds = %1763
  %1777 = load double, ptr %29, align 8, !tbaa !11
  %1778 = fneg double %1777
  br label %1779

1779:                                             ; preds = %1776, %1774
  %1780 = phi double [ %1775, %1774 ], [ %1778, %1776 ]
  %1781 = fadd double %1764, %1780
  store double %1781, ptr %30, align 8, !tbaa !11
  %1782 = load double, ptr %30, align 8, !tbaa !11
  %1783 = load double, ptr %53, align 8, !tbaa !11
  %1784 = fcmp oge double %1782, %1783
  br i1 %1784, label %1785, label %1787

1785:                                             ; preds = %1779
  %1786 = load double, ptr %30, align 8, !tbaa !11
  br label %1789

1787:                                             ; preds = %1779
  %1788 = load double, ptr %53, align 8, !tbaa !11
  br label %1789

1789:                                             ; preds = %1787, %1785
  %1790 = phi double [ %1786, %1785 ], [ %1788, %1787 ]
  store double %1790, ptr %53, align 8, !tbaa !11
  br label %1791

1791:                                             ; preds = %1789
  %1792 = load i64, ptr %37, align 8, !tbaa !9
  %1793 = add nsw i64 %1792, 1
  store i64 %1793, ptr %37, align 8, !tbaa !9
  br label %1747, !llvm.loop !19

1794:                                             ; preds = %1747
  br label %1795

1795:                                             ; preds = %1794, %1605
  br label %1796

1796:                                             ; preds = %1795, %1421
  br label %1797

1797:                                             ; preds = %1796, %1197, %1083
  br label %1798

1798:                                             ; preds = %1797
  %1799 = load i64, ptr %36, align 8, !tbaa !9
  %1800 = add nsw i64 %1799, -1
  store i64 %1800, ptr %36, align 8, !tbaa !9
  br label %1076, !llvm.loop !20

1801:                                             ; preds = %1076
  br label %2521

1802:                                             ; preds = %1067
  store i64 1, ptr %54, align 8, !tbaa !9
  %1803 = load ptr, ptr %15, align 8, !tbaa !5
  %1804 = load i64, ptr %1803, align 8, !tbaa !9
  store i64 %1804, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %1805

1805:                                             ; preds = %2517, %1802
  %1806 = load i64, ptr %36, align 8, !tbaa !9
  %1807 = load i64, ptr %26, align 8, !tbaa !9
  %1808 = icmp sle i64 %1806, %1807
  br i1 %1808, label %1809, label %2520

1809:                                             ; preds = %1805
  %1810 = load i64, ptr %36, align 8, !tbaa !9
  %1811 = load i64, ptr %54, align 8, !tbaa !9
  %1812 = icmp slt i64 %1810, %1811
  br i1 %1812, label %1813, label %1814

1813:                                             ; preds = %1809
  br label %2516

1814:                                             ; preds = %1809
  %1815 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %1815, ptr %40, align 8, !tbaa !9
  %1816 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %1816, ptr %41, align 8, !tbaa !9
  %1817 = load i64, ptr %36, align 8, !tbaa !9
  %1818 = add nsw i64 %1817, 1
  store i64 %1818, ptr %54, align 8, !tbaa !9
  %1819 = load i64, ptr %36, align 8, !tbaa !9
  %1820 = load ptr, ptr %15, align 8, !tbaa !5
  %1821 = load i64, ptr %1820, align 8, !tbaa !9
  %1822 = icmp slt i64 %1819, %1821
  br i1 %1822, label %1823, label %1840

1823:                                             ; preds = %1814
  %1824 = load ptr, ptr %16, align 8, !tbaa !5
  %1825 = load i64, ptr %36, align 8, !tbaa !9
  %1826 = add nsw i64 %1825, 1
  %1827 = load i64, ptr %36, align 8, !tbaa !9
  %1828 = load i64, ptr %24, align 8, !tbaa !9
  %1829 = mul nsw i64 %1827, %1828
  %1830 = add nsw i64 %1826, %1829
  %1831 = getelementptr inbounds double, ptr %1824, i64 %1830
  %1832 = load double, ptr %1831, align 8, !tbaa !11
  %1833 = fcmp une double %1832, 0.000000e+00
  br i1 %1833, label %1834, label %1839

1834:                                             ; preds = %1823
  %1835 = load i64, ptr %36, align 8, !tbaa !9
  %1836 = add nsw i64 %1835, 1
  store i64 %1836, ptr %41, align 8, !tbaa !9
  %1837 = load i64, ptr %36, align 8, !tbaa !9
  %1838 = add nsw i64 %1837, 2
  store i64 %1838, ptr %54, align 8, !tbaa !9
  br label %1839

1839:                                             ; preds = %1834, %1823
  br label %1840

1840:                                             ; preds = %1839, %1814
  %1841 = load i64, ptr %40, align 8, !tbaa !9
  %1842 = load i64, ptr %41, align 8, !tbaa !9
  %1843 = icmp eq i64 %1841, %1842
  br i1 %1843, label %1844, label %2143

1844:                                             ; preds = %1840
  %1845 = load ptr, ptr %21, align 8, !tbaa !5
  %1846 = load i64, ptr %40, align 8, !tbaa !9
  %1847 = getelementptr inbounds double, ptr %1845, i64 %1846
  %1848 = load double, ptr %1847, align 8, !tbaa !11
  store double %1848, ptr %28, align 8, !tbaa !11
  %1849 = load double, ptr %28, align 8, !tbaa !11
  %1850 = fcmp oge double %1849, 0.000000e+00
  br i1 %1850, label %1851, label %1853

1851:                                             ; preds = %1844
  %1852 = load double, ptr %28, align 8, !tbaa !11
  br label %1856

1853:                                             ; preds = %1844
  %1854 = load double, ptr %28, align 8, !tbaa !11
  %1855 = fneg double %1854
  br label %1856

1856:                                             ; preds = %1853, %1851
  %1857 = phi double [ %1852, %1851 ], [ %1855, %1853 ]
  %1858 = load ptr, ptr %21, align 8, !tbaa !5
  %1859 = load i64, ptr %40, align 8, !tbaa !9
  %1860 = load ptr, ptr %15, align 8, !tbaa !5
  %1861 = load i64, ptr %1860, align 8, !tbaa !9
  %1862 = add nsw i64 %1859, %1861
  %1863 = getelementptr inbounds double, ptr %1858, i64 %1862
  %1864 = load double, ptr %1863, align 8, !tbaa !11
  store double %1864, ptr %29, align 8, !tbaa !11
  %1865 = load double, ptr %29, align 8, !tbaa !11
  %1866 = fcmp oge double %1865, 0.000000e+00
  br i1 %1866, label %1867, label %1869

1867:                                             ; preds = %1856
  %1868 = load double, ptr %29, align 8, !tbaa !11
  br label %1872

1869:                                             ; preds = %1856
  %1870 = load double, ptr %29, align 8, !tbaa !11
  %1871 = fneg double %1870
  br label %1872

1872:                                             ; preds = %1869, %1867
  %1873 = phi double [ %1868, %1867 ], [ %1871, %1869 ]
  %1874 = fadd double %1857, %1873
  store double %1874, ptr %45, align 8, !tbaa !11
  %1875 = load double, ptr %53, align 8, !tbaa !11
  %1876 = fcmp ogt double %1875, 1.000000e+00
  br i1 %1876, label %1877, label %1902

1877:                                             ; preds = %1872
  %1878 = load double, ptr %53, align 8, !tbaa !11
  %1879 = fdiv double 1.000000e+00, %1878
  store double %1879, ptr %47, align 8, !tbaa !11
  %1880 = load ptr, ptr %22, align 8, !tbaa !5
  %1881 = load i64, ptr %40, align 8, !tbaa !9
  %1882 = getelementptr inbounds double, ptr %1880, i64 %1881
  %1883 = load double, ptr %1882, align 8, !tbaa !11
  %1884 = load double, ptr %58, align 8, !tbaa !11
  %1885 = load double, ptr %45, align 8, !tbaa !11
  %1886 = fsub double %1884, %1885
  %1887 = load double, ptr %47, align 8, !tbaa !11
  %1888 = fmul double %1886, %1887
  %1889 = fcmp ogt double %1883, %1888
  br i1 %1889, label %1890, label %1901

1890:                                             ; preds = %1877
  %1891 = load ptr, ptr %21, align 8, !tbaa !5
  %1892 = getelementptr inbounds double, ptr %1891, i64 1
  %1893 = call i32 @f2c_dscal(ptr noundef %43, ptr noundef %47, ptr noundef %1892, ptr noundef @c__1)
  %1894 = load double, ptr %47, align 8, !tbaa !11
  %1895 = load ptr, ptr %20, align 8, !tbaa !5
  %1896 = load double, ptr %1895, align 8, !tbaa !11
  %1897 = fmul double %1896, %1894
  store double %1897, ptr %1895, align 8, !tbaa !11
  %1898 = load double, ptr %47, align 8, !tbaa !11
  %1899 = load double, ptr %53, align 8, !tbaa !11
  %1900 = fmul double %1899, %1898
  store double %1900, ptr %53, align 8, !tbaa !11
  br label %1901

1901:                                             ; preds = %1890, %1877
  br label %1902

1902:                                             ; preds = %1901, %1872
  %1903 = load i64, ptr %40, align 8, !tbaa !9
  %1904 = sub nsw i64 %1903, 1
  store i64 %1904, ptr %27, align 8, !tbaa !9
  %1905 = load ptr, ptr %16, align 8, !tbaa !5
  %1906 = load i64, ptr %40, align 8, !tbaa !9
  %1907 = load i64, ptr %24, align 8, !tbaa !9
  %1908 = mul nsw i64 %1906, %1907
  %1909 = add nsw i64 %1908, 1
  %1910 = getelementptr inbounds double, ptr %1905, i64 %1909
  %1911 = load ptr, ptr %21, align 8, !tbaa !5
  %1912 = getelementptr inbounds double, ptr %1911, i64 1
  %1913 = call double @f2c_ddot(ptr noundef %27, ptr noundef %1910, ptr noundef @c__1, ptr noundef %1912, ptr noundef @c__1)
  %1914 = load ptr, ptr %21, align 8, !tbaa !5
  %1915 = load i64, ptr %40, align 8, !tbaa !9
  %1916 = getelementptr inbounds double, ptr %1914, i64 %1915
  %1917 = load double, ptr %1916, align 8, !tbaa !11
  %1918 = fsub double %1917, %1913
  store double %1918, ptr %1916, align 8, !tbaa !11
  %1919 = load i64, ptr %40, align 8, !tbaa !9
  %1920 = sub nsw i64 %1919, 1
  store i64 %1920, ptr %27, align 8, !tbaa !9
  %1921 = load ptr, ptr %16, align 8, !tbaa !5
  %1922 = load i64, ptr %40, align 8, !tbaa !9
  %1923 = load i64, ptr %24, align 8, !tbaa !9
  %1924 = mul nsw i64 %1922, %1923
  %1925 = add nsw i64 %1924, 1
  %1926 = getelementptr inbounds double, ptr %1921, i64 %1925
  %1927 = load ptr, ptr %21, align 8, !tbaa !5
  %1928 = load ptr, ptr %15, align 8, !tbaa !5
  %1929 = load i64, ptr %1928, align 8, !tbaa !9
  %1930 = add nsw i64 %1929, 1
  %1931 = getelementptr inbounds double, ptr %1927, i64 %1930
  %1932 = call double @f2c_ddot(ptr noundef %27, ptr noundef %1926, ptr noundef @c__1, ptr noundef %1931, ptr noundef @c__1)
  %1933 = load ptr, ptr %21, align 8, !tbaa !5
  %1934 = load ptr, ptr %15, align 8, !tbaa !5
  %1935 = load i64, ptr %1934, align 8, !tbaa !9
  %1936 = load i64, ptr %40, align 8, !tbaa !9
  %1937 = add nsw i64 %1935, %1936
  %1938 = getelementptr inbounds double, ptr %1933, i64 %1937
  %1939 = load double, ptr %1938, align 8, !tbaa !11
  %1940 = fsub double %1939, %1932
  store double %1940, ptr %1938, align 8, !tbaa !11
  %1941 = load i64, ptr %40, align 8, !tbaa !9
  %1942 = icmp sgt i64 %1941, 1
  br i1 %1942, label %1943, label %1975

1943:                                             ; preds = %1902
  %1944 = load ptr, ptr %18, align 8, !tbaa !5
  %1945 = load i64, ptr %40, align 8, !tbaa !9
  %1946 = getelementptr inbounds double, ptr %1944, i64 %1945
  %1947 = load double, ptr %1946, align 8, !tbaa !11
  %1948 = load ptr, ptr %21, align 8, !tbaa !5
  %1949 = load ptr, ptr %15, align 8, !tbaa !5
  %1950 = load i64, ptr %1949, align 8, !tbaa !9
  %1951 = add nsw i64 %1950, 1
  %1952 = getelementptr inbounds double, ptr %1948, i64 %1951
  %1953 = load double, ptr %1952, align 8, !tbaa !11
  %1954 = load ptr, ptr %21, align 8, !tbaa !5
  %1955 = load i64, ptr %40, align 8, !tbaa !9
  %1956 = getelementptr inbounds double, ptr %1954, i64 %1955
  %1957 = load double, ptr %1956, align 8, !tbaa !11
  %1958 = fneg double %1947
  %1959 = call double @llvm.fmuladd.f64(double %1958, double %1953, double %1957)
  store double %1959, ptr %1956, align 8, !tbaa !11
  %1960 = load ptr, ptr %18, align 8, !tbaa !5
  %1961 = load i64, ptr %40, align 8, !tbaa !9
  %1962 = getelementptr inbounds double, ptr %1960, i64 %1961
  %1963 = load double, ptr %1962, align 8, !tbaa !11
  %1964 = load ptr, ptr %21, align 8, !tbaa !5
  %1965 = getelementptr inbounds double, ptr %1964, i64 1
  %1966 = load double, ptr %1965, align 8, !tbaa !11
  %1967 = load ptr, ptr %21, align 8, !tbaa !5
  %1968 = load ptr, ptr %15, align 8, !tbaa !5
  %1969 = load i64, ptr %1968, align 8, !tbaa !9
  %1970 = load i64, ptr %40, align 8, !tbaa !9
  %1971 = add nsw i64 %1969, %1970
  %1972 = getelementptr inbounds double, ptr %1967, i64 %1971
  %1973 = load double, ptr %1972, align 8, !tbaa !11
  %1974 = call double @llvm.fmuladd.f64(double %1963, double %1966, double %1973)
  store double %1974, ptr %1972, align 8, !tbaa !11
  br label %1975

1975:                                             ; preds = %1943, %1902
  %1976 = load ptr, ptr %21, align 8, !tbaa !5
  %1977 = load i64, ptr %40, align 8, !tbaa !9
  %1978 = getelementptr inbounds double, ptr %1976, i64 %1977
  %1979 = load double, ptr %1978, align 8, !tbaa !11
  store double %1979, ptr %28, align 8, !tbaa !11
  %1980 = load double, ptr %28, align 8, !tbaa !11
  %1981 = fcmp oge double %1980, 0.000000e+00
  br i1 %1981, label %1982, label %1984

1982:                                             ; preds = %1975
  %1983 = load double, ptr %28, align 8, !tbaa !11
  br label %1987

1984:                                             ; preds = %1975
  %1985 = load double, ptr %28, align 8, !tbaa !11
  %1986 = fneg double %1985
  br label %1987

1987:                                             ; preds = %1984, %1982
  %1988 = phi double [ %1983, %1982 ], [ %1986, %1984 ]
  %1989 = load ptr, ptr %21, align 8, !tbaa !5
  %1990 = load i64, ptr %40, align 8, !tbaa !9
  %1991 = load ptr, ptr %15, align 8, !tbaa !5
  %1992 = load i64, ptr %1991, align 8, !tbaa !9
  %1993 = add nsw i64 %1990, %1992
  %1994 = getelementptr inbounds double, ptr %1989, i64 %1993
  %1995 = load double, ptr %1994, align 8, !tbaa !11
  store double %1995, ptr %29, align 8, !tbaa !11
  %1996 = load double, ptr %29, align 8, !tbaa !11
  %1997 = fcmp oge double %1996, 0.000000e+00
  br i1 %1997, label %1998, label %2000

1998:                                             ; preds = %1987
  %1999 = load double, ptr %29, align 8, !tbaa !11
  br label %2003

2000:                                             ; preds = %1987
  %2001 = load double, ptr %29, align 8, !tbaa !11
  %2002 = fneg double %2001
  br label %2003

2003:                                             ; preds = %2000, %1998
  %2004 = phi double [ %1999, %1998 ], [ %2002, %2000 ]
  %2005 = fadd double %1988, %2004
  store double %2005, ptr %45, align 8, !tbaa !11
  %2006 = load ptr, ptr %19, align 8, !tbaa !5
  %2007 = load double, ptr %2006, align 8, !tbaa !11
  store double %2007, ptr %39, align 8, !tbaa !11
  %2008 = load i64, ptr %40, align 8, !tbaa !9
  %2009 = icmp eq i64 %2008, 1
  br i1 %2009, label %2010, label %2014

2010:                                             ; preds = %2003
  %2011 = load ptr, ptr %18, align 8, !tbaa !5
  %2012 = getelementptr inbounds double, ptr %2011, i64 1
  %2013 = load double, ptr %2012, align 8, !tbaa !11
  store double %2013, ptr %39, align 8, !tbaa !11
  br label %2014

2014:                                             ; preds = %2010, %2003
  %2015 = load ptr, ptr %16, align 8, !tbaa !5
  %2016 = load i64, ptr %40, align 8, !tbaa !9
  %2017 = load i64, ptr %40, align 8, !tbaa !9
  %2018 = load i64, ptr %24, align 8, !tbaa !9
  %2019 = mul nsw i64 %2017, %2018
  %2020 = add nsw i64 %2016, %2019
  %2021 = getelementptr inbounds double, ptr %2015, i64 %2020
  %2022 = load double, ptr %2021, align 8, !tbaa !11
  store double %2022, ptr %28, align 8, !tbaa !11
  %2023 = load double, ptr %28, align 8, !tbaa !11
  %2024 = fcmp oge double %2023, 0.000000e+00
  br i1 %2024, label %2025, label %2027

2025:                                             ; preds = %2014
  %2026 = load double, ptr %28, align 8, !tbaa !11
  br label %2030

2027:                                             ; preds = %2014
  %2028 = load double, ptr %28, align 8, !tbaa !11
  %2029 = fneg double %2028
  br label %2030

2030:                                             ; preds = %2027, %2025
  %2031 = phi double [ %2026, %2025 ], [ %2029, %2027 ]
  %2032 = load double, ptr %39, align 8, !tbaa !11
  %2033 = fcmp oge double %2032, 0.000000e+00
  br i1 %2033, label %2034, label %2036

2034:                                             ; preds = %2030
  %2035 = load double, ptr %39, align 8, !tbaa !11
  br label %2039

2036:                                             ; preds = %2030
  %2037 = load double, ptr %39, align 8, !tbaa !11
  %2038 = fneg double %2037
  br label %2039

2039:                                             ; preds = %2036, %2034
  %2040 = phi double [ %2035, %2034 ], [ %2038, %2036 ]
  %2041 = fadd double %2031, %2040
  store double %2041, ptr %49, align 8, !tbaa !11
  %2042 = load ptr, ptr %16, align 8, !tbaa !5
  %2043 = load i64, ptr %40, align 8, !tbaa !9
  %2044 = load i64, ptr %40, align 8, !tbaa !9
  %2045 = load i64, ptr %24, align 8, !tbaa !9
  %2046 = mul nsw i64 %2044, %2045
  %2047 = add nsw i64 %2043, %2046
  %2048 = getelementptr inbounds double, ptr %2042, i64 %2047
  %2049 = load double, ptr %2048, align 8, !tbaa !11
  store double %2049, ptr %50, align 8, !tbaa !11
  %2050 = load double, ptr %49, align 8, !tbaa !11
  %2051 = load double, ptr %55, align 8, !tbaa !11
  %2052 = fcmp olt double %2050, %2051
  br i1 %2052, label %2053, label %2057

2053:                                             ; preds = %2039
  %2054 = load double, ptr %55, align 8, !tbaa !11
  store double %2054, ptr %50, align 8, !tbaa !11
  %2055 = load double, ptr %55, align 8, !tbaa !11
  store double %2055, ptr %49, align 8, !tbaa !11
  %2056 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 1, ptr %2056, align 8, !tbaa !9
  br label %2057

2057:                                             ; preds = %2053, %2039
  %2058 = load double, ptr %49, align 8, !tbaa !11
  %2059 = fcmp olt double %2058, 1.000000e+00
  br i1 %2059, label %2060, label %2080

2060:                                             ; preds = %2057
  %2061 = load double, ptr %45, align 8, !tbaa !11
  %2062 = load double, ptr %58, align 8, !tbaa !11
  %2063 = load double, ptr %49, align 8, !tbaa !11
  %2064 = fmul double %2062, %2063
  %2065 = fcmp ogt double %2061, %2064
  br i1 %2065, label %2066, label %2079

2066:                                             ; preds = %2060
  %2067 = load double, ptr %45, align 8, !tbaa !11
  %2068 = fdiv double 1.000000e+00, %2067
  store double %2068, ptr %47, align 8, !tbaa !11
  %2069 = load ptr, ptr %21, align 8, !tbaa !5
  %2070 = getelementptr inbounds double, ptr %2069, i64 1
  %2071 = call i32 @f2c_dscal(ptr noundef %43, ptr noundef %47, ptr noundef %2070, ptr noundef @c__1)
  %2072 = load double, ptr %47, align 8, !tbaa !11
  %2073 = load ptr, ptr %20, align 8, !tbaa !5
  %2074 = load double, ptr %2073, align 8, !tbaa !11
  %2075 = fmul double %2074, %2072
  store double %2075, ptr %2073, align 8, !tbaa !11
  %2076 = load double, ptr %47, align 8, !tbaa !11
  %2077 = load double, ptr %53, align 8, !tbaa !11
  %2078 = fmul double %2077, %2076
  store double %2078, ptr %53, align 8, !tbaa !11
  br label %2079

2079:                                             ; preds = %2066, %2060
  br label %2080

2080:                                             ; preds = %2079, %2057
  %2081 = load double, ptr %39, align 8, !tbaa !11
  %2082 = fneg double %2081
  store double %2082, ptr %28, align 8, !tbaa !11
  %2083 = load ptr, ptr %21, align 8, !tbaa !5
  %2084 = load i64, ptr %40, align 8, !tbaa !9
  %2085 = getelementptr inbounds double, ptr %2083, i64 %2084
  %2086 = load ptr, ptr %21, align 8, !tbaa !5
  %2087 = load ptr, ptr %15, align 8, !tbaa !5
  %2088 = load i64, ptr %2087, align 8, !tbaa !9
  %2089 = load i64, ptr %40, align 8, !tbaa !9
  %2090 = add nsw i64 %2088, %2089
  %2091 = getelementptr inbounds double, ptr %2086, i64 %2090
  %2092 = call i32 @dladiv_(ptr noundef %2085, ptr noundef %2091, ptr noundef %50, ptr noundef %28, ptr noundef %46, ptr noundef %44)
  %2093 = load double, ptr %46, align 8, !tbaa !11
  %2094 = load ptr, ptr %21, align 8, !tbaa !5
  %2095 = load i64, ptr %40, align 8, !tbaa !9
  %2096 = getelementptr inbounds double, ptr %2094, i64 %2095
  store double %2093, ptr %2096, align 8, !tbaa !11
  %2097 = load double, ptr %44, align 8, !tbaa !11
  %2098 = load ptr, ptr %21, align 8, !tbaa !5
  %2099 = load i64, ptr %40, align 8, !tbaa !9
  %2100 = load ptr, ptr %15, align 8, !tbaa !5
  %2101 = load i64, ptr %2100, align 8, !tbaa !9
  %2102 = add nsw i64 %2099, %2101
  %2103 = getelementptr inbounds double, ptr %2098, i64 %2102
  store double %2097, ptr %2103, align 8, !tbaa !11
  %2104 = load ptr, ptr %21, align 8, !tbaa !5
  %2105 = load i64, ptr %40, align 8, !tbaa !9
  %2106 = getelementptr inbounds double, ptr %2104, i64 %2105
  %2107 = load double, ptr %2106, align 8, !tbaa !11
  store double %2107, ptr %28, align 8, !tbaa !11
  %2108 = load double, ptr %28, align 8, !tbaa !11
  %2109 = fcmp oge double %2108, 0.000000e+00
  br i1 %2109, label %2110, label %2112

2110:                                             ; preds = %2080
  %2111 = load double, ptr %28, align 8, !tbaa !11
  br label %2115

2112:                                             ; preds = %2080
  %2113 = load double, ptr %28, align 8, !tbaa !11
  %2114 = fneg double %2113
  br label %2115

2115:                                             ; preds = %2112, %2110
  %2116 = phi double [ %2111, %2110 ], [ %2114, %2112 ]
  %2117 = load ptr, ptr %21, align 8, !tbaa !5
  %2118 = load i64, ptr %40, align 8, !tbaa !9
  %2119 = load ptr, ptr %15, align 8, !tbaa !5
  %2120 = load i64, ptr %2119, align 8, !tbaa !9
  %2121 = add nsw i64 %2118, %2120
  %2122 = getelementptr inbounds double, ptr %2117, i64 %2121
  %2123 = load double, ptr %2122, align 8, !tbaa !11
  store double %2123, ptr %29, align 8, !tbaa !11
  %2124 = load double, ptr %29, align 8, !tbaa !11
  %2125 = fcmp oge double %2124, 0.000000e+00
  br i1 %2125, label %2126, label %2128

2126:                                             ; preds = %2115
  %2127 = load double, ptr %29, align 8, !tbaa !11
  br label %2131

2128:                                             ; preds = %2115
  %2129 = load double, ptr %29, align 8, !tbaa !11
  %2130 = fneg double %2129
  br label %2131

2131:                                             ; preds = %2128, %2126
  %2132 = phi double [ %2127, %2126 ], [ %2130, %2128 ]
  %2133 = fadd double %2116, %2132
  store double %2133, ptr %30, align 8, !tbaa !11
  %2134 = load double, ptr %30, align 8, !tbaa !11
  %2135 = load double, ptr %53, align 8, !tbaa !11
  %2136 = fcmp oge double %2134, %2135
  br i1 %2136, label %2137, label %2139

2137:                                             ; preds = %2131
  %2138 = load double, ptr %30, align 8, !tbaa !11
  br label %2141

2139:                                             ; preds = %2131
  %2140 = load double, ptr %53, align 8, !tbaa !11
  br label %2141

2141:                                             ; preds = %2139, %2137
  %2142 = phi double [ %2138, %2137 ], [ %2140, %2139 ]
  store double %2142, ptr %53, align 8, !tbaa !11
  br label %2515

2143:                                             ; preds = %1840
  %2144 = load ptr, ptr %21, align 8, !tbaa !5
  %2145 = load i64, ptr %40, align 8, !tbaa !9
  %2146 = getelementptr inbounds double, ptr %2144, i64 %2145
  %2147 = load double, ptr %2146, align 8, !tbaa !11
  store double %2147, ptr %28, align 8, !tbaa !11
  %2148 = load double, ptr %28, align 8, !tbaa !11
  %2149 = fcmp oge double %2148, 0.000000e+00
  br i1 %2149, label %2150, label %2152

2150:                                             ; preds = %2143
  %2151 = load double, ptr %28, align 8, !tbaa !11
  br label %2155

2152:                                             ; preds = %2143
  %2153 = load double, ptr %28, align 8, !tbaa !11
  %2154 = fneg double %2153
  br label %2155

2155:                                             ; preds = %2152, %2150
  %2156 = phi double [ %2151, %2150 ], [ %2154, %2152 ]
  %2157 = load ptr, ptr %21, align 8, !tbaa !5
  %2158 = load ptr, ptr %15, align 8, !tbaa !5
  %2159 = load i64, ptr %2158, align 8, !tbaa !9
  %2160 = load i64, ptr %40, align 8, !tbaa !9
  %2161 = add nsw i64 %2159, %2160
  %2162 = getelementptr inbounds double, ptr %2157, i64 %2161
  %2163 = load double, ptr %2162, align 8, !tbaa !11
  store double %2163, ptr %29, align 8, !tbaa !11
  %2164 = load double, ptr %29, align 8, !tbaa !11
  %2165 = fcmp oge double %2164, 0.000000e+00
  br i1 %2165, label %2166, label %2168

2166:                                             ; preds = %2155
  %2167 = load double, ptr %29, align 8, !tbaa !11
  br label %2171

2168:                                             ; preds = %2155
  %2169 = load double, ptr %29, align 8, !tbaa !11
  %2170 = fneg double %2169
  br label %2171

2171:                                             ; preds = %2168, %2166
  %2172 = phi double [ %2167, %2166 ], [ %2170, %2168 ]
  %2173 = fadd double %2156, %2172
  store double %2173, ptr %32, align 8, !tbaa !11
  %2174 = load ptr, ptr %21, align 8, !tbaa !5
  %2175 = load i64, ptr %41, align 8, !tbaa !9
  %2176 = getelementptr inbounds double, ptr %2174, i64 %2175
  %2177 = load double, ptr %2176, align 8, !tbaa !11
  store double %2177, ptr %30, align 8, !tbaa !11
  %2178 = load double, ptr %30, align 8, !tbaa !11
  %2179 = fcmp oge double %2178, 0.000000e+00
  br i1 %2179, label %2180, label %2182

2180:                                             ; preds = %2171
  %2181 = load double, ptr %30, align 8, !tbaa !11
  br label %2185

2182:                                             ; preds = %2171
  %2183 = load double, ptr %30, align 8, !tbaa !11
  %2184 = fneg double %2183
  br label %2185

2185:                                             ; preds = %2182, %2180
  %2186 = phi double [ %2181, %2180 ], [ %2184, %2182 ]
  %2187 = load ptr, ptr %21, align 8, !tbaa !5
  %2188 = load ptr, ptr %15, align 8, !tbaa !5
  %2189 = load i64, ptr %2188, align 8, !tbaa !9
  %2190 = load i64, ptr %41, align 8, !tbaa !9
  %2191 = add nsw i64 %2189, %2190
  %2192 = getelementptr inbounds double, ptr %2187, i64 %2191
  %2193 = load double, ptr %2192, align 8, !tbaa !11
  store double %2193, ptr %31, align 8, !tbaa !11
  %2194 = load double, ptr %31, align 8, !tbaa !11
  %2195 = fcmp oge double %2194, 0.000000e+00
  br i1 %2195, label %2196, label %2198

2196:                                             ; preds = %2185
  %2197 = load double, ptr %31, align 8, !tbaa !11
  br label %2201

2198:                                             ; preds = %2185
  %2199 = load double, ptr %31, align 8, !tbaa !11
  %2200 = fneg double %2199
  br label %2201

2201:                                             ; preds = %2198, %2196
  %2202 = phi double [ %2197, %2196 ], [ %2200, %2198 ]
  %2203 = fadd double %2186, %2202
  store double %2203, ptr %33, align 8, !tbaa !11
  %2204 = load double, ptr %32, align 8, !tbaa !11
  %2205 = load double, ptr %33, align 8, !tbaa !11
  %2206 = fcmp oge double %2204, %2205
  br i1 %2206, label %2207, label %2209

2207:                                             ; preds = %2201
  %2208 = load double, ptr %32, align 8, !tbaa !11
  br label %2211

2209:                                             ; preds = %2201
  %2210 = load double, ptr %33, align 8, !tbaa !11
  br label %2211

2211:                                             ; preds = %2209, %2207
  %2212 = phi double [ %2208, %2207 ], [ %2210, %2209 ]
  store double %2212, ptr %45, align 8, !tbaa !11
  %2213 = load double, ptr %53, align 8, !tbaa !11
  %2214 = fcmp ogt double %2213, 1.000000e+00
  br i1 %2214, label %2215, label %2253

2215:                                             ; preds = %2211
  %2216 = load double, ptr %53, align 8, !tbaa !11
  %2217 = fdiv double 1.000000e+00, %2216
  store double %2217, ptr %47, align 8, !tbaa !11
  %2218 = load ptr, ptr %22, align 8, !tbaa !5
  %2219 = load i64, ptr %40, align 8, !tbaa !9
  %2220 = getelementptr inbounds double, ptr %2218, i64 %2219
  %2221 = load double, ptr %2220, align 8, !tbaa !11
  store double %2221, ptr %28, align 8, !tbaa !11
  %2222 = load ptr, ptr %22, align 8, !tbaa !5
  %2223 = load i64, ptr %41, align 8, !tbaa !9
  %2224 = getelementptr inbounds double, ptr %2222, i64 %2223
  %2225 = load double, ptr %2224, align 8, !tbaa !11
  store double %2225, ptr %29, align 8, !tbaa !11
  %2226 = load double, ptr %28, align 8, !tbaa !11
  %2227 = load double, ptr %29, align 8, !tbaa !11
  %2228 = fcmp oge double %2226, %2227
  br i1 %2228, label %2229, label %2231

2229:                                             ; preds = %2215
  %2230 = load double, ptr %28, align 8, !tbaa !11
  br label %2233

2231:                                             ; preds = %2215
  %2232 = load double, ptr %29, align 8, !tbaa !11
  br label %2233

2233:                                             ; preds = %2231, %2229
  %2234 = phi double [ %2230, %2229 ], [ %2232, %2231 ]
  %2235 = load double, ptr %58, align 8, !tbaa !11
  %2236 = load double, ptr %45, align 8, !tbaa !11
  %2237 = fsub double %2235, %2236
  %2238 = load double, ptr %53, align 8, !tbaa !11
  %2239 = fdiv double %2237, %2238
  %2240 = fcmp ogt double %2234, %2239
  br i1 %2240, label %2241, label %2252

2241:                                             ; preds = %2233
  %2242 = load ptr, ptr %21, align 8, !tbaa !5
  %2243 = getelementptr inbounds double, ptr %2242, i64 1
  %2244 = call i32 @f2c_dscal(ptr noundef %43, ptr noundef %47, ptr noundef %2243, ptr noundef @c__1)
  %2245 = load double, ptr %47, align 8, !tbaa !11
  %2246 = load ptr, ptr %20, align 8, !tbaa !5
  %2247 = load double, ptr %2246, align 8, !tbaa !11
  %2248 = fmul double %2247, %2245
  store double %2248, ptr %2246, align 8, !tbaa !11
  %2249 = load double, ptr %47, align 8, !tbaa !11
  %2250 = load double, ptr %53, align 8, !tbaa !11
  %2251 = fmul double %2250, %2249
  store double %2251, ptr %53, align 8, !tbaa !11
  br label %2252

2252:                                             ; preds = %2241, %2233
  br label %2253

2253:                                             ; preds = %2252, %2211
  %2254 = load i64, ptr %40, align 8, !tbaa !9
  %2255 = sub nsw i64 %2254, 1
  store i64 %2255, ptr %27, align 8, !tbaa !9
  %2256 = load ptr, ptr %21, align 8, !tbaa !5
  %2257 = load i64, ptr %40, align 8, !tbaa !9
  %2258 = getelementptr inbounds double, ptr %2256, i64 %2257
  %2259 = load double, ptr %2258, align 8, !tbaa !11
  %2260 = load ptr, ptr %16, align 8, !tbaa !5
  %2261 = load i64, ptr %40, align 8, !tbaa !9
  %2262 = load i64, ptr %24, align 8, !tbaa !9
  %2263 = mul nsw i64 %2261, %2262
  %2264 = add nsw i64 %2263, 1
  %2265 = getelementptr inbounds double, ptr %2260, i64 %2264
  %2266 = load ptr, ptr %21, align 8, !tbaa !5
  %2267 = getelementptr inbounds double, ptr %2266, i64 1
  %2268 = call double @f2c_ddot(ptr noundef %27, ptr noundef %2265, ptr noundef @c__1, ptr noundef %2267, ptr noundef @c__1)
  %2269 = fsub double %2259, %2268
  %2270 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  store double %2269, ptr %2270, align 16, !tbaa !11
  %2271 = load i64, ptr %40, align 8, !tbaa !9
  %2272 = sub nsw i64 %2271, 1
  store i64 %2272, ptr %27, align 8, !tbaa !9
  %2273 = load ptr, ptr %21, align 8, !tbaa !5
  %2274 = load i64, ptr %41, align 8, !tbaa !9
  %2275 = getelementptr inbounds double, ptr %2273, i64 %2274
  %2276 = load double, ptr %2275, align 8, !tbaa !11
  %2277 = load ptr, ptr %16, align 8, !tbaa !5
  %2278 = load i64, ptr %41, align 8, !tbaa !9
  %2279 = load i64, ptr %24, align 8, !tbaa !9
  %2280 = mul nsw i64 %2278, %2279
  %2281 = add nsw i64 %2280, 1
  %2282 = getelementptr inbounds double, ptr %2277, i64 %2281
  %2283 = load ptr, ptr %21, align 8, !tbaa !5
  %2284 = getelementptr inbounds double, ptr %2283, i64 1
  %2285 = call double @f2c_ddot(ptr noundef %27, ptr noundef %2282, ptr noundef @c__1, ptr noundef %2284, ptr noundef @c__1)
  %2286 = fsub double %2276, %2285
  %2287 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 1
  store double %2286, ptr %2287, align 8, !tbaa !11
  %2288 = load i64, ptr %40, align 8, !tbaa !9
  %2289 = sub nsw i64 %2288, 1
  store i64 %2289, ptr %27, align 8, !tbaa !9
  %2290 = load ptr, ptr %21, align 8, !tbaa !5
  %2291 = load ptr, ptr %15, align 8, !tbaa !5
  %2292 = load i64, ptr %2291, align 8, !tbaa !9
  %2293 = load i64, ptr %40, align 8, !tbaa !9
  %2294 = add nsw i64 %2292, %2293
  %2295 = getelementptr inbounds double, ptr %2290, i64 %2294
  %2296 = load double, ptr %2295, align 8, !tbaa !11
  %2297 = load ptr, ptr %16, align 8, !tbaa !5
  %2298 = load i64, ptr %40, align 8, !tbaa !9
  %2299 = load i64, ptr %24, align 8, !tbaa !9
  %2300 = mul nsw i64 %2298, %2299
  %2301 = add nsw i64 %2300, 1
  %2302 = getelementptr inbounds double, ptr %2297, i64 %2301
  %2303 = load ptr, ptr %21, align 8, !tbaa !5
  %2304 = load ptr, ptr %15, align 8, !tbaa !5
  %2305 = load i64, ptr %2304, align 8, !tbaa !9
  %2306 = add nsw i64 %2305, 1
  %2307 = getelementptr inbounds double, ptr %2303, i64 %2306
  %2308 = call double @f2c_ddot(ptr noundef %27, ptr noundef %2302, ptr noundef @c__1, ptr noundef %2307, ptr noundef @c__1)
  %2309 = fsub double %2296, %2308
  %2310 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 2
  store double %2309, ptr %2310, align 16, !tbaa !11
  %2311 = load i64, ptr %40, align 8, !tbaa !9
  %2312 = sub nsw i64 %2311, 1
  store i64 %2312, ptr %27, align 8, !tbaa !9
  %2313 = load ptr, ptr %21, align 8, !tbaa !5
  %2314 = load ptr, ptr %15, align 8, !tbaa !5
  %2315 = load i64, ptr %2314, align 8, !tbaa !9
  %2316 = load i64, ptr %41, align 8, !tbaa !9
  %2317 = add nsw i64 %2315, %2316
  %2318 = getelementptr inbounds double, ptr %2313, i64 %2317
  %2319 = load double, ptr %2318, align 8, !tbaa !11
  %2320 = load ptr, ptr %16, align 8, !tbaa !5
  %2321 = load i64, ptr %41, align 8, !tbaa !9
  %2322 = load i64, ptr %24, align 8, !tbaa !9
  %2323 = mul nsw i64 %2321, %2322
  %2324 = add nsw i64 %2323, 1
  %2325 = getelementptr inbounds double, ptr %2320, i64 %2324
  %2326 = load ptr, ptr %21, align 8, !tbaa !5
  %2327 = load ptr, ptr %15, align 8, !tbaa !5
  %2328 = load i64, ptr %2327, align 8, !tbaa !9
  %2329 = add nsw i64 %2328, 1
  %2330 = getelementptr inbounds double, ptr %2326, i64 %2329
  %2331 = call double @f2c_ddot(ptr noundef %27, ptr noundef %2325, ptr noundef @c__1, ptr noundef %2330, ptr noundef @c__1)
  %2332 = fsub double %2319, %2331
  %2333 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 3
  store double %2332, ptr %2333, align 8, !tbaa !11
  %2334 = load ptr, ptr %18, align 8, !tbaa !5
  %2335 = load i64, ptr %40, align 8, !tbaa !9
  %2336 = getelementptr inbounds double, ptr %2334, i64 %2335
  %2337 = load double, ptr %2336, align 8, !tbaa !11
  %2338 = load ptr, ptr %21, align 8, !tbaa !5
  %2339 = load ptr, ptr %15, align 8, !tbaa !5
  %2340 = load i64, ptr %2339, align 8, !tbaa !9
  %2341 = add nsw i64 %2340, 1
  %2342 = getelementptr inbounds double, ptr %2338, i64 %2341
  %2343 = load double, ptr %2342, align 8, !tbaa !11
  %2344 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  %2345 = load double, ptr %2344, align 16, !tbaa !11
  %2346 = fneg double %2337
  %2347 = call double @llvm.fmuladd.f64(double %2346, double %2343, double %2345)
  store double %2347, ptr %2344, align 16, !tbaa !11
  %2348 = load ptr, ptr %18, align 8, !tbaa !5
  %2349 = load i64, ptr %41, align 8, !tbaa !9
  %2350 = getelementptr inbounds double, ptr %2348, i64 %2349
  %2351 = load double, ptr %2350, align 8, !tbaa !11
  %2352 = load ptr, ptr %21, align 8, !tbaa !5
  %2353 = load ptr, ptr %15, align 8, !tbaa !5
  %2354 = load i64, ptr %2353, align 8, !tbaa !9
  %2355 = add nsw i64 %2354, 1
  %2356 = getelementptr inbounds double, ptr %2352, i64 %2355
  %2357 = load double, ptr %2356, align 8, !tbaa !11
  %2358 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 1
  %2359 = load double, ptr %2358, align 8, !tbaa !11
  %2360 = fneg double %2351
  %2361 = call double @llvm.fmuladd.f64(double %2360, double %2357, double %2359)
  store double %2361, ptr %2358, align 8, !tbaa !11
  %2362 = load ptr, ptr %18, align 8, !tbaa !5
  %2363 = load i64, ptr %40, align 8, !tbaa !9
  %2364 = getelementptr inbounds double, ptr %2362, i64 %2363
  %2365 = load double, ptr %2364, align 8, !tbaa !11
  %2366 = load ptr, ptr %21, align 8, !tbaa !5
  %2367 = getelementptr inbounds double, ptr %2366, i64 1
  %2368 = load double, ptr %2367, align 8, !tbaa !11
  %2369 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 2
  %2370 = load double, ptr %2369, align 16, !tbaa !11
  %2371 = call double @llvm.fmuladd.f64(double %2365, double %2368, double %2370)
  store double %2371, ptr %2369, align 16, !tbaa !11
  %2372 = load ptr, ptr %18, align 8, !tbaa !5
  %2373 = load i64, ptr %41, align 8, !tbaa !9
  %2374 = getelementptr inbounds double, ptr %2372, i64 %2373
  %2375 = load double, ptr %2374, align 8, !tbaa !11
  %2376 = load ptr, ptr %21, align 8, !tbaa !5
  %2377 = getelementptr inbounds double, ptr %2376, i64 1
  %2378 = load double, ptr %2377, align 8, !tbaa !11
  %2379 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 3
  %2380 = load double, ptr %2379, align 8, !tbaa !11
  %2381 = call double @llvm.fmuladd.f64(double %2375, double %2378, double %2380)
  store double %2381, ptr %2379, align 8, !tbaa !11
  %2382 = load ptr, ptr %16, align 8, !tbaa !5
  %2383 = load i64, ptr %40, align 8, !tbaa !9
  %2384 = load i64, ptr %40, align 8, !tbaa !9
  %2385 = load i64, ptr %24, align 8, !tbaa !9
  %2386 = mul nsw i64 %2384, %2385
  %2387 = add nsw i64 %2383, %2386
  %2388 = getelementptr inbounds double, ptr %2382, i64 %2387
  %2389 = load ptr, ptr %17, align 8, !tbaa !5
  %2390 = getelementptr inbounds [4 x double], ptr %34, i64 0, i64 0
  %2391 = load ptr, ptr %19, align 8, !tbaa !5
  %2392 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %2393 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %55, ptr noundef @c_b21, ptr noundef %2388, ptr noundef %2389, ptr noundef @c_b21, ptr noundef @c_b21, ptr noundef %2390, ptr noundef @c__2, ptr noundef @c_b25, ptr noundef %2391, ptr noundef %2392, ptr noundef @c__2, ptr noundef %57, ptr noundef %56, ptr noundef %51)
  %2394 = load i64, ptr %51, align 8, !tbaa !9
  %2395 = icmp ne i64 %2394, 0
  br i1 %2395, label %2396, label %2398

2396:                                             ; preds = %2253
  %2397 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 2, ptr %2397, align 8, !tbaa !9
  br label %2398

2398:                                             ; preds = %2396, %2253
  %2399 = load double, ptr %57, align 8, !tbaa !11
  %2400 = fcmp une double %2399, 1.000000e+00
  br i1 %2400, label %2401, label %2410

2401:                                             ; preds = %2398
  %2402 = load ptr, ptr %21, align 8, !tbaa !5
  %2403 = getelementptr inbounds double, ptr %2402, i64 1
  %2404 = call i32 @f2c_dscal(ptr noundef %43, ptr noundef %57, ptr noundef %2403, ptr noundef @c__1)
  %2405 = load double, ptr %57, align 8, !tbaa !11
  %2406 = load ptr, ptr %20, align 8, !tbaa !5
  %2407 = load double, ptr %2406, align 8, !tbaa !11
  %2408 = fmul double %2405, %2407
  %2409 = load ptr, ptr %20, align 8, !tbaa !5
  store double %2408, ptr %2409, align 8, !tbaa !11
  br label %2410

2410:                                             ; preds = %2401, %2398
  %2411 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 0
  %2412 = load double, ptr %2411, align 16, !tbaa !11
  %2413 = load ptr, ptr %21, align 8, !tbaa !5
  %2414 = load i64, ptr %40, align 8, !tbaa !9
  %2415 = getelementptr inbounds double, ptr %2413, i64 %2414
  store double %2412, ptr %2415, align 8, !tbaa !11
  %2416 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 1
  %2417 = load double, ptr %2416, align 8, !tbaa !11
  %2418 = load ptr, ptr %21, align 8, !tbaa !5
  %2419 = load i64, ptr %41, align 8, !tbaa !9
  %2420 = getelementptr inbounds double, ptr %2418, i64 %2419
  store double %2417, ptr %2420, align 8, !tbaa !11
  %2421 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 2
  %2422 = load double, ptr %2421, align 16, !tbaa !11
  %2423 = load ptr, ptr %21, align 8, !tbaa !5
  %2424 = load ptr, ptr %15, align 8, !tbaa !5
  %2425 = load i64, ptr %2424, align 8, !tbaa !9
  %2426 = load i64, ptr %40, align 8, !tbaa !9
  %2427 = add nsw i64 %2425, %2426
  %2428 = getelementptr inbounds double, ptr %2423, i64 %2427
  store double %2422, ptr %2428, align 8, !tbaa !11
  %2429 = getelementptr inbounds [4 x double], ptr %38, i64 0, i64 3
  %2430 = load double, ptr %2429, align 8, !tbaa !11
  %2431 = load ptr, ptr %21, align 8, !tbaa !5
  %2432 = load ptr, ptr %15, align 8, !tbaa !5
  %2433 = load i64, ptr %2432, align 8, !tbaa !9
  %2434 = load i64, ptr %41, align 8, !tbaa !9
  %2435 = add nsw i64 %2433, %2434
  %2436 = getelementptr inbounds double, ptr %2431, i64 %2435
  store double %2430, ptr %2436, align 8, !tbaa !11
  %2437 = load ptr, ptr %21, align 8, !tbaa !5
  %2438 = load i64, ptr %40, align 8, !tbaa !9
  %2439 = getelementptr inbounds double, ptr %2437, i64 %2438
  %2440 = load double, ptr %2439, align 8, !tbaa !11
  store double %2440, ptr %28, align 8, !tbaa !11
  %2441 = load double, ptr %28, align 8, !tbaa !11
  %2442 = fcmp oge double %2441, 0.000000e+00
  br i1 %2442, label %2443, label %2445

2443:                                             ; preds = %2410
  %2444 = load double, ptr %28, align 8, !tbaa !11
  br label %2448

2445:                                             ; preds = %2410
  %2446 = load double, ptr %28, align 8, !tbaa !11
  %2447 = fneg double %2446
  br label %2448

2448:                                             ; preds = %2445, %2443
  %2449 = phi double [ %2444, %2443 ], [ %2447, %2445 ]
  %2450 = load ptr, ptr %21, align 8, !tbaa !5
  %2451 = load ptr, ptr %15, align 8, !tbaa !5
  %2452 = load i64, ptr %2451, align 8, !tbaa !9
  %2453 = load i64, ptr %40, align 8, !tbaa !9
  %2454 = add nsw i64 %2452, %2453
  %2455 = getelementptr inbounds double, ptr %2450, i64 %2454
  %2456 = load double, ptr %2455, align 8, !tbaa !11
  store double %2456, ptr %29, align 8, !tbaa !11
  %2457 = load double, ptr %29, align 8, !tbaa !11
  %2458 = fcmp oge double %2457, 0.000000e+00
  br i1 %2458, label %2459, label %2461

2459:                                             ; preds = %2448
  %2460 = load double, ptr %29, align 8, !tbaa !11
  br label %2464

2461:                                             ; preds = %2448
  %2462 = load double, ptr %29, align 8, !tbaa !11
  %2463 = fneg double %2462
  br label %2464

2464:                                             ; preds = %2461, %2459
  %2465 = phi double [ %2460, %2459 ], [ %2463, %2461 ]
  %2466 = fadd double %2449, %2465
  store double %2466, ptr %32, align 8, !tbaa !11
  %2467 = load ptr, ptr %21, align 8, !tbaa !5
  %2468 = load i64, ptr %41, align 8, !tbaa !9
  %2469 = getelementptr inbounds double, ptr %2467, i64 %2468
  %2470 = load double, ptr %2469, align 8, !tbaa !11
  store double %2470, ptr %30, align 8, !tbaa !11
  %2471 = load double, ptr %30, align 8, !tbaa !11
  %2472 = fcmp oge double %2471, 0.000000e+00
  br i1 %2472, label %2473, label %2475

2473:                                             ; preds = %2464
  %2474 = load double, ptr %30, align 8, !tbaa !11
  br label %2478

2475:                                             ; preds = %2464
  %2476 = load double, ptr %30, align 8, !tbaa !11
  %2477 = fneg double %2476
  br label %2478

2478:                                             ; preds = %2475, %2473
  %2479 = phi double [ %2474, %2473 ], [ %2477, %2475 ]
  %2480 = load ptr, ptr %21, align 8, !tbaa !5
  %2481 = load ptr, ptr %15, align 8, !tbaa !5
  %2482 = load i64, ptr %2481, align 8, !tbaa !9
  %2483 = load i64, ptr %41, align 8, !tbaa !9
  %2484 = add nsw i64 %2482, %2483
  %2485 = getelementptr inbounds double, ptr %2480, i64 %2484
  %2486 = load double, ptr %2485, align 8, !tbaa !11
  store double %2486, ptr %31, align 8, !tbaa !11
  %2487 = load double, ptr %31, align 8, !tbaa !11
  %2488 = fcmp oge double %2487, 0.000000e+00
  br i1 %2488, label %2489, label %2491

2489:                                             ; preds = %2478
  %2490 = load double, ptr %31, align 8, !tbaa !11
  br label %2494

2491:                                             ; preds = %2478
  %2492 = load double, ptr %31, align 8, !tbaa !11
  %2493 = fneg double %2492
  br label %2494

2494:                                             ; preds = %2491, %2489
  %2495 = phi double [ %2490, %2489 ], [ %2493, %2491 ]
  %2496 = fadd double %2479, %2495
  store double %2496, ptr %33, align 8, !tbaa !11
  %2497 = load double, ptr %32, align 8, !tbaa !11
  %2498 = load double, ptr %33, align 8, !tbaa !11
  %2499 = fcmp oge double %2497, %2498
  br i1 %2499, label %2500, label %2502

2500:                                             ; preds = %2494
  %2501 = load double, ptr %32, align 8, !tbaa !11
  br label %2504

2502:                                             ; preds = %2494
  %2503 = load double, ptr %33, align 8, !tbaa !11
  br label %2504

2504:                                             ; preds = %2502, %2500
  %2505 = phi double [ %2501, %2500 ], [ %2503, %2502 ]
  store double %2505, ptr %32, align 8, !tbaa !11
  %2506 = load double, ptr %32, align 8, !tbaa !11
  %2507 = load double, ptr %53, align 8, !tbaa !11
  %2508 = fcmp oge double %2506, %2507
  br i1 %2508, label %2509, label %2511

2509:                                             ; preds = %2504
  %2510 = load double, ptr %32, align 8, !tbaa !11
  br label %2513

2511:                                             ; preds = %2504
  %2512 = load double, ptr %53, align 8, !tbaa !11
  br label %2513

2513:                                             ; preds = %2511, %2509
  %2514 = phi double [ %2510, %2509 ], [ %2512, %2511 ]
  store double %2514, ptr %53, align 8, !tbaa !11
  br label %2515

2515:                                             ; preds = %2513, %2141
  br label %2516

2516:                                             ; preds = %2515, %1813
  br label %2517

2517:                                             ; preds = %2516
  %2518 = load i64, ptr %36, align 8, !tbaa !9
  %2519 = add nsw i64 %2518, 1
  store i64 %2519, ptr %36, align 8, !tbaa !9
  br label %1805, !llvm.loop !21

2520:                                             ; preds = %1805
  br label %2521

2521:                                             ; preds = %2520, %1801
  br label %2522

2522:                                             ; preds = %2521, %1044
  store i32 0, ptr %12, align 4
  store i32 1, ptr %61, align 4
  br label %2523

2523:                                             ; preds = %2522, %86
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  %2524 = load i32, ptr %12, align 4
  ret i32 %2524
}

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

declare double @dlamch_(ptr noundef) #2

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

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

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

declare i32 @f2c_dscal(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @f2c_daxpy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @dlaln2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @dladiv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}


; 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 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_false = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c_b21 = external hidden global double, align 8
@c_b25 = external hidden global double, align 8
@c_true = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlaqtr_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef %9, ptr nocapture noundef writeonly %10) local_unnamed_addr #0 {
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca double, align 8
  %15 = alloca [4 x double], align 16
  %16 = alloca [4 x double], align 16
  %17 = alloca double, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  %29 = load i64, ptr %4, align 8, !tbaa !5
  %30 = xor i64 %29, -1
  %31 = getelementptr inbounds double, ptr %3, i64 %30
  %32 = getelementptr inbounds i8, ptr %5, i64 -8
  %33 = getelementptr inbounds i8, ptr %8, i64 -8
  %34 = getelementptr inbounds i8, ptr %9, i64 -8
  %35 = load i64, ptr %0, align 8, !tbaa !5
  %.not = icmp eq i64 %35, 0
  store i64 0, ptr %10, align 8, !tbaa !5
  %36 = load i64, ptr %2, align 8, !tbaa !5
  %37 = icmp eq i64 %36, 0
  br i1 %37, label %.loopexit908, label %38

38:                                               ; preds = %11
  %39 = tail call double @dlamch_(ptr noundef nonnull @.str) #5
  %40 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #5
  %41 = fdiv double %40, %39
  %42 = fdiv double 1.000000e+00, %41
  %43 = call double @dlange_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %15) #5
  store double %43, ptr %27, align 8, !tbaa !9
  %44 = load i64, ptr %1, align 8, !tbaa !5
  %.not854 = icmp eq i64 %44, 0
  br i1 %.not854, label %45, label %56

45:                                               ; preds = %38
  %46 = load double, ptr %6, align 8, !tbaa !9
  %47 = fcmp ult double %46, 0.000000e+00
  %48 = fneg double %46
  %49 = select i1 %47, double %48, double %46
  %50 = fcmp oge double %43, %49
  %51 = select i1 %50, double %43, double %49
  store double %51, ptr %14, align 8, !tbaa !9
  %52 = call double @dlange_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %2, ptr noundef nonnull %15) #5
  %53 = load double, ptr %14, align 8
  %54 = fcmp oge double %53, %52
  %55 = select i1 %54, double %53, double %52
  store double %55, ptr %27, align 8, !tbaa !9
  br label %56

56:                                               ; preds = %45, %38
  %57 = phi double [ %55, %45 ], [ %43, %38 ]
  %58 = fmul double %39, %57
  %59 = fcmp oge double %41, %58
  %60 = select i1 %59, double %41, double %58
  store double %60, ptr %25, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  %61 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %61, ptr %12, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %31, i64 8
  %.not855912 = icmp slt i64 %61, 2
  br i1 %.not855912, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %56, %.lr.ph
  %.0826913 = phi i64 [ %66, %.lr.ph ], [ 2, %56 ]
  %62 = add nsw i64 %.0826913, -1
  store i64 %62, ptr %13, align 8, !tbaa !5
  %63 = mul nsw i64 %.0826913, %29
  %gep = getelementptr double, ptr %invariant.gep, i64 %63
  %64 = call double @f2c_dasum(ptr noundef nonnull %13, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %65 = getelementptr inbounds double, ptr %34, i64 %.0826913
  store double %64, ptr %65, align 8, !tbaa !9
  %66 = add nuw nsw i64 %.0826913, 1
  %67 = load i64, ptr %12, align 8, !tbaa !5
  %.not855.not = icmp slt i64 %.0826913, %67
  br i1 %.not855.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %56
  %68 = load i64, ptr %1, align 8, !tbaa !5
  %.not856 = icmp eq i64 %68, 0
  %69 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not856, label %71, label %.thread

.thread:                                          ; preds = %._crit_edge
  %70 = shl i64 %69, 1
  br label %118

71:                                               ; preds = %._crit_edge
  store i64 %69, ptr %12, align 8, !tbaa !5
  %.not857914 = icmp slt i64 %69, 2
  br i1 %.not857914, label %._crit_edge918, label %.lr.ph917.preheader

.lr.ph917.preheader:                              ; preds = %71
  %72 = add nsw i64 %69, -1
  %min.iters.check = icmp ult i64 %69, 5
  br i1 %min.iters.check, label %.lr.ph917.preheader1039, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph917.preheader
  %scevgep = getelementptr i8, ptr %9, i64 8
  %73 = shl i64 %69, 3
  %scevgep1027 = getelementptr i8, ptr %9, i64 %73
  %scevgep1028 = getelementptr i8, ptr %5, i64 8
  %scevgep1029 = getelementptr i8, ptr %5, i64 %73
  %bound0 = icmp ult ptr %scevgep, %scevgep1029
  %bound1 = icmp ult ptr %scevgep1028, %scevgep1027
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph917.preheader1039, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %72, -4
  %ind.end = or disjoint i64 %n.vec, 2
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 2
  %74 = getelementptr inbounds double, ptr %32, i64 %offset.idx
  %75 = getelementptr inbounds i8, ptr %74, i64 16
  %wide.load = load <2 x double>, ptr %74, align 8, !tbaa !9, !alias.scope !13
  %wide.load1030 = load <2 x double>, ptr %75, align 8, !tbaa !9, !alias.scope !13
  %76 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %77 = fcmp oge <2 x double> %wide.load1030, zeroinitializer
  %78 = fneg <2 x double> %wide.load
  %79 = fneg <2 x double> %wide.load1030
  %80 = select <2 x i1> %76, <2 x double> %wide.load, <2 x double> %78
  %81 = select <2 x i1> %77, <2 x double> %wide.load1030, <2 x double> %79
  %82 = getelementptr inbounds double, ptr %34, i64 %offset.idx
  %83 = getelementptr inbounds i8, ptr %82, i64 16
  %wide.load1031 = load <2 x double>, ptr %82, align 8, !tbaa !9, !alias.scope !16, !noalias !13
  %wide.load1032 = load <2 x double>, ptr %83, align 8, !tbaa !9, !alias.scope !16, !noalias !13
  %84 = fadd <2 x double> %wide.load1031, %80
  %85 = fadd <2 x double> %wide.load1032, %81
  store <2 x double> %84, ptr %82, align 8, !tbaa !9, !alias.scope !16, !noalias !13
  store <2 x double> %85, ptr %83, align 8, !tbaa !9, !alias.scope !16, !noalias !13
  %index.next = add nuw i64 %index, 4
  %86 = icmp eq i64 %index.next, %n.vec
  br i1 %86, label %middle.block, label %vector.body, !llvm.loop !18

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %72, %n.vec
  br i1 %cmp.n, label %._crit_edge918, label %.lr.ph917.preheader1039

.lr.ph917.preheader1039:                          ; preds = %middle.block, %vector.memcheck, %.lr.ph917.preheader
  %.0831915.ph = phi i64 [ 2, %vector.memcheck ], [ 2, %.lr.ph917.preheader ], [ %ind.end, %middle.block ]
  %87 = add i64 %69, %.0831915.ph
  %88 = and i64 %87, 1
  %lcmp.mod.not.not = icmp eq i64 %88, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph917.prol, label %.lr.ph917.prol.loopexit

.lr.ph917.prol:                                   ; preds = %.lr.ph917.preheader1039
  %89 = getelementptr inbounds double, ptr %32, i64 %.0831915.ph
  %90 = load double, ptr %89, align 8, !tbaa !9
  %91 = fcmp oge double %90, 0.000000e+00
  %92 = fneg double %90
  %93 = select i1 %91, double %90, double %92
  %94 = getelementptr inbounds double, ptr %34, i64 %.0831915.ph
  %95 = load double, ptr %94, align 8, !tbaa !9
  %96 = fadd double %95, %93
  store double %96, ptr %94, align 8, !tbaa !9
  %97 = add nuw i64 %.0831915.ph, 1
  br label %.lr.ph917.prol.loopexit

.lr.ph917.prol.loopexit:                          ; preds = %.lr.ph917.prol, %.lr.ph917.preheader1039
  %.0831915.unr = phi i64 [ %.0831915.ph, %.lr.ph917.preheader1039 ], [ %97, %.lr.ph917.prol ]
  %98 = icmp eq i64 %69, %.0831915.ph
  br i1 %98, label %._crit_edge918, label %.lr.ph917

.lr.ph917:                                        ; preds = %.lr.ph917.prol.loopexit, %.lr.ph917
  %.0831915 = phi i64 [ %116, %.lr.ph917 ], [ %.0831915.unr, %.lr.ph917.prol.loopexit ]
  %99 = getelementptr inbounds double, ptr %32, i64 %.0831915
  %100 = load double, ptr %99, align 8, !tbaa !9
  %101 = fcmp oge double %100, 0.000000e+00
  %102 = fneg double %100
  %103 = select i1 %101, double %100, double %102
  %104 = getelementptr inbounds double, ptr %34, i64 %.0831915
  %105 = load double, ptr %104, align 8, !tbaa !9
  %106 = fadd double %105, %103
  store double %106, ptr %104, align 8, !tbaa !9
  %107 = add nuw i64 %.0831915, 1
  %108 = getelementptr double, ptr %5, i64 %.0831915
  %109 = load double, ptr %108, align 8, !tbaa !9
  %110 = fcmp oge double %109, 0.000000e+00
  %111 = fneg double %109
  %112 = select i1 %110, double %109, double %111
  %113 = getelementptr double, ptr %9, i64 %.0831915
  %114 = load double, ptr %113, align 8, !tbaa !9
  %115 = fadd double %114, %112
  store double %115, ptr %113, align 8, !tbaa !9
  %116 = add nuw i64 %.0831915, 2
  %exitcond.not.1 = icmp eq i64 %107, %69
  br i1 %exitcond.not.1, label %._crit_edge918, label %.lr.ph917, !llvm.loop !21

._crit_edge918:                                   ; preds = %.lr.ph917.prol.loopexit, %.lr.ph917, %middle.block, %71
  %117 = shl i64 %69, 1
  br label %118

118:                                              ; preds = %._crit_edge918, %.thread
  %storemerge1020 = phi i64 [ %70, %.thread ], [ %117, %._crit_edge918 ]
  %storemerge = phi i64 [ %69, %.thread ], [ %117, %._crit_edge918 ]
  store i64 %storemerge1020, ptr %19, align 8, !tbaa !5
  store i64 %storemerge, ptr %18, align 8
  %119 = call i64 @f2c_idamax(ptr noundef nonnull %18, ptr noundef %8, ptr noundef nonnull @c__1) #5
  %120 = getelementptr inbounds double, ptr %33, i64 %119
  %121 = load double, ptr %120, align 8, !tbaa !9
  store double %121, ptr %14, align 8, !tbaa !9
  %122 = fcmp oge double %121, 0.000000e+00
  %123 = fneg double %121
  %124 = select i1 %122, double %121, double %123
  store double 1.000000e+00, ptr %7, align 8, !tbaa !9
  %125 = fcmp ogt double %124, %42
  br i1 %125, label %126, label %129

126:                                              ; preds = %118
  %127 = fdiv double %42, %124
  store double %127, ptr %7, align 8, !tbaa !9
  %128 = call i32 @f2c_dscal(ptr noundef nonnull %18, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  br label %129

129:                                              ; preds = %126, %118
  %.0804 = phi double [ %42, %126 ], [ %124, %118 ]
  %130 = load i64, ptr %1, align 8, !tbaa !5
  %.not859 = icmp eq i64 %130, 0
  br i1 %.not859, label %407, label %131

131:                                              ; preds = %129
  %132 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not, label %133, label %263

133:                                              ; preds = %131
  %134 = icmp sgt i64 %132, 0
  br i1 %134, label %.lr.ph941, label %.loopexit908

.lr.ph941:                                        ; preds = %133, %._crit_edge996
  %.0803939 = phi i64 [ %.2, %._crit_edge996 ], [ %132, %133 ]
  %.1805938 = phi double [ %.3807, %._crit_edge996 ], [ %.0804, %133 ]
  %.1827937 = phi i64 [ %.pre1003, %._crit_edge996 ], [ %132, %133 ]
  %135 = icmp sgt i64 %.1827937, %.0803939
  %.pre1003 = add nsw i64 %.1827937, -1
  br i1 %135, label %._crit_edge996, label %136

136:                                              ; preds = %.lr.ph941
  %.not868 = icmp eq i64 %.1827937, 1
  br i1 %.not868, label %.thread877, label %137

137:                                              ; preds = %136
  %138 = mul nsw i64 %.pre1003, %29
  %139 = getelementptr double, ptr %31, i64 %.1827937
  %140 = getelementptr double, ptr %139, i64 %138
  %141 = load double, ptr %140, align 8, !tbaa !9
  %142 = fcmp une double %141, 0.000000e+00
  br i1 %142, label %.thread882, label %.thread877

.thread882:                                       ; preds = %137
  %143 = add nsw i64 %.1827937, -2
  %144 = getelementptr inbounds double, ptr %33, i64 %.pre1003
  %145 = getelementptr inbounds double, ptr %33, i64 %.1827937
  %146 = load <2 x double>, ptr %144, align 8, !tbaa !9
  store <2 x double> %146, ptr %15, align 16, !tbaa !9
  %147 = getelementptr double, ptr %31, i64 %.pre1003
  %148 = getelementptr double, ptr %147, i64 %138
  %149 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %25, ptr noundef nonnull @c_b21, ptr noundef %148, ptr noundef nonnull %4, ptr noundef nonnull @c_b21, ptr noundef nonnull @c_b21, ptr noundef nonnull %15, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b25, ptr noundef nonnull @c_b25, ptr noundef nonnull %16, ptr noundef nonnull @c__2, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %24) #5
  %150 = load i64, ptr %24, align 8, !tbaa !5
  %.not869 = icmp eq i64 %150, 0
  br i1 %.not869, label %212, label %211

.thread877:                                       ; preds = %136, %137
  %.1881 = phi i64 [ %.pre1003, %137 ], [ 0, %136 ]
  %151 = getelementptr inbounds double, ptr %33, i64 %.1827937
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = fcmp oge double %152, 0.000000e+00
  %154 = fneg double %152
  %155 = select i1 %153, double %152, double %154
  %156 = mul nsw i64 %.1827937, %29
  %157 = getelementptr double, ptr %31, i64 %.1827937
  %158 = getelementptr double, ptr %157, i64 %156
  %159 = load double, ptr %158, align 8, !tbaa !9
  store double %159, ptr %14, align 8, !tbaa !9
  %160 = fcmp oge double %159, 0.000000e+00
  %161 = fneg double %159
  %162 = select i1 %160, double %159, double %161
  store double %159, ptr %23, align 8, !tbaa !9
  %163 = load double, ptr %25, align 8, !tbaa !9
  %164 = fcmp olt double %162, %163
  br i1 %164, label %165, label %166

165:                                              ; preds = %.thread877
  store double %163, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %166

166:                                              ; preds = %165, %.thread877
  %167 = phi double [ %163, %165 ], [ %159, %.thread877 ]
  %.0816 = phi double [ %163, %165 ], [ %162, %.thread877 ]
  %168 = fcmp oeq double %152, 0.000000e+00
  br i1 %168, label %._crit_edge996, label %169

169:                                              ; preds = %166
  %170 = fcmp olt double %.0816, 1.000000e+00
  %171 = fmul double %42, %.0816
  %172 = fcmp ogt double %155, %171
  %or.cond = select i1 %170, i1 %172, i1 false
  br i1 %or.cond, label %173, label %180

173:                                              ; preds = %169
  %174 = fdiv double 1.000000e+00, %155
  store double %174, ptr %22, align 8, !tbaa !9
  %175 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %176 = load double, ptr %22, align 8, !tbaa !9
  %177 = load double, ptr %7, align 8, !tbaa !9
  %178 = fmul double %176, %177
  store double %178, ptr %7, align 8, !tbaa !9
  %179 = fmul double %.1805938, %176
  %.pre988 = load double, ptr %23, align 8, !tbaa !9
  %.pre989 = load double, ptr %151, align 8, !tbaa !9
  br label %180

180:                                              ; preds = %173, %169
  %181 = phi double [ %.pre989, %173 ], [ %152, %169 ]
  %182 = phi double [ %.pre988, %173 ], [ %167, %169 ]
  %.2806 = phi double [ %179, %173 ], [ %.1805938, %169 ]
  %183 = fdiv double %181, %182
  store double %183, ptr %151, align 8, !tbaa !9
  store double %183, ptr %14, align 8, !tbaa !9
  %184 = fcmp oge double %183, 0.000000e+00
  %185 = fneg double %183
  %186 = select i1 %184, double %183, double %185
  %187 = fcmp ogt double %186, 1.000000e+00
  br i1 %187, label %188, label %200

188:                                              ; preds = %180
  %189 = fdiv double 1.000000e+00, %186
  store double %189, ptr %22, align 8, !tbaa !9
  %190 = getelementptr inbounds double, ptr %34, i64 %.1827937
  %191 = load double, ptr %190, align 8, !tbaa !9
  %192 = fsub double %42, %.2806
  %193 = fmul double %192, %189
  %194 = fcmp ogt double %191, %193
  br i1 %194, label %195, label %200

195:                                              ; preds = %188
  %196 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %197 = load double, ptr %22, align 8, !tbaa !9
  %198 = load double, ptr %7, align 8, !tbaa !9
  %199 = fmul double %197, %198
  store double %199, ptr %7, align 8, !tbaa !9
  br label %200

200:                                              ; preds = %188, %195, %180
  br i1 %.not868, label %.loopexit908, label %201

201:                                              ; preds = %200
  store i64 %.pre1003, ptr %12, align 8, !tbaa !5
  %202 = load double, ptr %151, align 8, !tbaa !9
  %203 = fneg double %202
  store double %203, ptr %14, align 8, !tbaa !9
  %gep936 = getelementptr double, ptr %invariant.gep, i64 %156
  %204 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep936, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i64 %.pre1003, ptr %12, align 8, !tbaa !5
  %205 = call i64 @f2c_idamax(ptr noundef nonnull %12, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %206 = getelementptr inbounds double, ptr %33, i64 %205
  %207 = load double, ptr %206, align 8, !tbaa !9
  store double %207, ptr %14, align 8, !tbaa !9
  %208 = fcmp oge double %207, 0.000000e+00
  %209 = fneg double %207
  %210 = select i1 %208, double %207, double %209
  br label %._crit_edge996

211:                                              ; preds = %.thread882
  store i64 2, ptr %10, align 8, !tbaa !5
  br label %212

212:                                              ; preds = %211, %.thread882
  %213 = load double, ptr %28, align 8, !tbaa !9
  %214 = fcmp une double %213, 1.000000e+00
  br i1 %214, label %215, label %220

215:                                              ; preds = %212
  %216 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %217 = load double, ptr %28, align 8, !tbaa !9
  %218 = load double, ptr %7, align 8, !tbaa !9
  %219 = fmul double %217, %218
  store double %219, ptr %7, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %215, %212
  %221 = load <2 x double>, ptr %16, align 16
  store <2 x double> %221, ptr %144, align 8, !tbaa !9
  %222 = fcmp oge <2 x double> %221, zeroinitializer
  %223 = fneg <2 x double> %221
  %224 = select <2 x i1> %222, <2 x double> %221, <2 x double> %223
  %225 = extractelement <2 x double> %224, i64 0
  store double %225, ptr %14, align 8, !tbaa !9
  %226 = extractelement <2 x double> %224, i64 1
  %227 = fcmp oge double %225, %226
  %228 = select i1 %227, double %225, double %226
  %229 = fcmp ogt double %228, 1.000000e+00
  br i1 %229, label %230, label %246

230:                                              ; preds = %220
  %231 = fdiv double 1.000000e+00, %228
  store double %231, ptr %22, align 8, !tbaa !9
  %232 = getelementptr inbounds double, ptr %34, i64 %.pre1003
  %233 = load double, ptr %232, align 8, !tbaa !9
  store double %233, ptr %14, align 8, !tbaa !9
  %234 = getelementptr inbounds double, ptr %34, i64 %.1827937
  %235 = load double, ptr %234, align 8, !tbaa !9
  %236 = fcmp oge double %233, %235
  %237 = select i1 %236, double %233, double %235
  %238 = fsub double %42, %.1805938
  %239 = fmul double %238, %231
  %240 = fcmp ogt double %237, %239
  br i1 %240, label %241, label %246

241:                                              ; preds = %230
  %242 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %243 = load double, ptr %22, align 8, !tbaa !9
  %244 = load double, ptr %7, align 8, !tbaa !9
  %245 = fmul double %243, %244
  store double %245, ptr %7, align 8, !tbaa !9
  br label %246

246:                                              ; preds = %230, %241, %220
  %247 = icmp ugt i64 %.pre1003, 1
  br i1 %247, label %248, label %._crit_edge996

248:                                              ; preds = %246
  store i64 %143, ptr %12, align 8, !tbaa !5
  %249 = load double, ptr %144, align 8, !tbaa !9
  %250 = fneg double %249
  store double %250, ptr %14, align 8, !tbaa !9
  %gep932 = getelementptr double, ptr %invariant.gep, i64 %138
  %251 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep932, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i64 %143, ptr %12, align 8, !tbaa !5
  %252 = load double, ptr %145, align 8, !tbaa !9
  %253 = fneg double %252
  store double %253, ptr %14, align 8, !tbaa !9
  %254 = mul nsw i64 %.1827937, %29
  %gep934 = getelementptr double, ptr %invariant.gep, i64 %254
  %255 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep934, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i64 %143, ptr %12, align 8, !tbaa !5
  %256 = call i64 @f2c_idamax(ptr noundef nonnull %12, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %257 = getelementptr inbounds double, ptr %33, i64 %256
  %258 = load double, ptr %257, align 8, !tbaa !9
  store double %258, ptr %14, align 8, !tbaa !9
  %259 = fcmp oge double %258, 0.000000e+00
  %260 = fneg double %258
  %261 = select i1 %259, double %258, double %260
  br label %._crit_edge996

._crit_edge996:                                   ; preds = %.lr.ph941, %166, %246, %248, %201
  %.3807 = phi double [ %.1805938, %166 ], [ %.1805938, %246 ], [ %261, %248 ], [ %210, %201 ], [ %.1805938, %.lr.ph941 ]
  %.2 = phi i64 [ %.1881, %166 ], [ %143, %246 ], [ %143, %248 ], [ %.1881, %201 ], [ %.0803939, %.lr.ph941 ]
  %262 = icmp sgt i64 %.1827937, 1
  br i1 %262, label %.lr.ph941, label %.loopexit908, !llvm.loop !22

263:                                              ; preds = %131
  store i64 %132, ptr %12, align 8, !tbaa !5
  %.not866925 = icmp slt i64 %132, 1
  br i1 %.not866925, label %.loopexit908, label %.lr.ph930

.lr.ph930:                                        ; preds = %263
  %264 = getelementptr inbounds i8, ptr %15, i64 8
  %265 = getelementptr inbounds i8, ptr %16, i64 8
  br label %266

266:                                              ; preds = %.lr.ph930, %._crit_edge995
  %.3928 = phi i64 [ 1, %.lr.ph930 ], [ %.5, %._crit_edge995 ]
  %.4808927 = phi double [ %.0804, %.lr.ph930 ], [ %.8812, %._crit_edge995 ]
  %.2828926 = phi i64 [ 1, %.lr.ph930 ], [ %.pre1005, %._crit_edge995 ]
  %267 = icmp slt i64 %.2828926, %.3928
  %.pre1005 = add nuw nsw i64 %.2828926, 1
  br i1 %267, label %._crit_edge995, label %268

268:                                              ; preds = %266
  %269 = load i64, ptr %2, align 8, !tbaa !5
  %270 = icmp slt i64 %.2828926, %269
  br i1 %270, label %271, label %279

271:                                              ; preds = %268
  %272 = mul nsw i64 %.2828926, %29
  %273 = getelementptr double, ptr %31, i64 %.pre1005
  %274 = getelementptr double, ptr %273, i64 %272
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = fcmp une double %275, 0.000000e+00
  br i1 %276, label %277, label %279

277:                                              ; preds = %271
  %278 = add nuw nsw i64 %.2828926, 2
  br label %279

279:                                              ; preds = %271, %277, %268
  %.0820 = phi i64 [ %.pre1005, %277 ], [ %.2828926, %271 ], [ %.2828926, %268 ]
  %.4 = phi i64 [ %278, %277 ], [ %.pre1005, %271 ], [ %.pre1005, %268 ]
  %280 = icmp eq i64 %.2828926, %.0820
  %281 = getelementptr inbounds double, ptr %33, i64 %.2828926
  %282 = load double, ptr %281, align 8, !tbaa !9
  store double %282, ptr %14, align 8, !tbaa !9
  br i1 %280, label %283, label %340

283:                                              ; preds = %279
  %284 = fcmp ogt double %.4808927, 1.000000e+00
  br i1 %284, label %285, label %301

285:                                              ; preds = %283
  %286 = fcmp oge double %282, 0.000000e+00
  %287 = fneg double %282
  %288 = select i1 %286, double %282, double %287
  %289 = fdiv double 1.000000e+00, %.4808927
  store double %289, ptr %22, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %34, i64 %.2828926
  %291 = load double, ptr %290, align 8, !tbaa !9
  %292 = fsub double %42, %288
  %293 = fmul double %289, %292
  %294 = fcmp ogt double %291, %293
  br i1 %294, label %295, label %301

295:                                              ; preds = %285
  %296 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %297 = load double, ptr %22, align 8, !tbaa !9
  %298 = load double, ptr %7, align 8, !tbaa !9
  %299 = fmul double %297, %298
  store double %299, ptr %7, align 8, !tbaa !9
  %300 = fmul double %.4808927, %297
  br label %301

301:                                              ; preds = %285, %295, %283
  %.5809 = phi double [ %300, %295 ], [ %.4808927, %285 ], [ %.4808927, %283 ]
  %302 = add nsw i64 %.2828926, -1
  store i64 %302, ptr %13, align 8, !tbaa !5
  %303 = mul nsw i64 %.2828926, %29
  %gep924 = getelementptr double, ptr %invariant.gep, i64 %303
  %304 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep924, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %305 = load double, ptr %281, align 8, !tbaa !9
  %306 = fsub double %305, %304
  store double %306, ptr %281, align 8, !tbaa !9
  %307 = fcmp oge double %306, 0.000000e+00
  %308 = fneg double %306
  %309 = select i1 %307, double %306, double %308
  %310 = getelementptr double, ptr %31, i64 %.2828926
  %311 = getelementptr double, ptr %310, i64 %303
  %312 = load double, ptr %311, align 8, !tbaa !9
  store double %312, ptr %14, align 8, !tbaa !9
  %313 = fcmp oge double %312, 0.000000e+00
  %314 = fneg double %312
  %315 = select i1 %313, double %312, double %314
  store double %312, ptr %23, align 8, !tbaa !9
  %316 = load double, ptr %25, align 8, !tbaa !9
  %317 = fcmp olt double %315, %316
  br i1 %317, label %318, label %319

318:                                              ; preds = %301
  store double %316, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %319

319:                                              ; preds = %318, %301
  %320 = phi double [ %316, %318 ], [ %312, %301 ]
  %.1817 = phi double [ %316, %318 ], [ %315, %301 ]
  %321 = fcmp olt double %.1817, 1.000000e+00
  %322 = fmul double %42, %.1817
  %323 = fcmp ogt double %309, %322
  %or.cond872 = select i1 %321, i1 %323, i1 false
  br i1 %or.cond872, label %324, label %331

324:                                              ; preds = %319
  %325 = fdiv double 1.000000e+00, %309
  store double %325, ptr %22, align 8, !tbaa !9
  %326 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %327 = load double, ptr %22, align 8, !tbaa !9
  %328 = load double, ptr %7, align 8, !tbaa !9
  %329 = fmul double %327, %328
  store double %329, ptr %7, align 8, !tbaa !9
  %330 = fmul double %.5809, %327
  %.pre986 = load double, ptr %23, align 8, !tbaa !9
  %.pre987 = load double, ptr %281, align 8, !tbaa !9
  br label %331

331:                                              ; preds = %324, %319
  %332 = phi double [ %.pre987, %324 ], [ %306, %319 ]
  %333 = phi double [ %.pre986, %324 ], [ %320, %319 ]
  %.6810 = phi double [ %330, %324 ], [ %.5809, %319 ]
  %334 = fdiv double %332, %333
  store double %334, ptr %281, align 8, !tbaa !9
  store double %334, ptr %14, align 8, !tbaa !9
  %335 = fcmp oge double %334, 0.000000e+00
  %336 = fneg double %334
  %337 = select i1 %335, double %334, double %336
  %338 = fcmp oge double %.6810, %337
  %339 = select i1 %338, double %.6810, double %337
  br label %._crit_edge995

340:                                              ; preds = %279
  %341 = getelementptr inbounds double, ptr %33, i64 %.0820
  %342 = fcmp ogt double %.4808927, 1.000000e+00
  br i1 %342, label %343, label %369

343:                                              ; preds = %340
  %344 = fcmp oge double %282, 0.000000e+00
  %345 = fneg double %282
  %346 = select i1 %344, double %282, double %345
  %347 = load double, ptr %341, align 8, !tbaa !9
  %348 = fcmp oge double %347, 0.000000e+00
  %349 = fneg double %347
  %350 = select i1 %348, double %347, double %349
  %351 = fcmp oge double %346, %350
  %352 = select i1 %351, double %346, double %350
  %353 = fdiv double 1.000000e+00, %.4808927
  store double %353, ptr %22, align 8, !tbaa !9
  %354 = getelementptr inbounds double, ptr %34, i64 %.0820
  %355 = load double, ptr %354, align 8, !tbaa !9
  store double %355, ptr %14, align 8, !tbaa !9
  %356 = getelementptr inbounds double, ptr %34, i64 %.2828926
  %357 = load double, ptr %356, align 8, !tbaa !9
  %358 = fcmp oge double %355, %357
  %359 = select i1 %358, double %355, double %357
  %360 = fsub double %42, %352
  %361 = fmul double %353, %360
  %362 = fcmp ogt double %359, %361
  br i1 %362, label %363, label %369

363:                                              ; preds = %343
  %364 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %365 = load double, ptr %22, align 8, !tbaa !9
  %366 = load double, ptr %7, align 8, !tbaa !9
  %367 = fmul double %365, %366
  store double %367, ptr %7, align 8, !tbaa !9
  %368 = fmul double %.4808927, %365
  %.pre = load double, ptr %281, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %343, %363, %340
  %370 = phi double [ %.pre, %363 ], [ %282, %343 ], [ %282, %340 ]
  %.7811 = phi double [ %368, %363 ], [ %.4808927, %343 ], [ %.4808927, %340 ]
  %371 = add nsw i64 %.2828926, -1
  store i64 %371, ptr %13, align 8, !tbaa !5
  %372 = mul nsw i64 %.2828926, %29
  %gep920 = getelementptr double, ptr %invariant.gep, i64 %372
  %373 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep920, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %374 = fsub double %370, %373
  store double %374, ptr %15, align 16, !tbaa !9
  store i64 %371, ptr %13, align 8, !tbaa !5
  %375 = load double, ptr %341, align 8, !tbaa !9
  %376 = mul nsw i64 %.0820, %29
  %gep922 = getelementptr double, ptr %invariant.gep, i64 %376
  %377 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep922, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %378 = fsub double %375, %377
  store double %378, ptr %264, align 8, !tbaa !9
  %379 = getelementptr double, ptr %31, i64 %.2828926
  %380 = getelementptr double, ptr %379, i64 %372
  %381 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %25, ptr noundef nonnull @c_b21, ptr noundef %380, ptr noundef nonnull %4, ptr noundef nonnull @c_b21, ptr noundef nonnull @c_b21, ptr noundef nonnull %15, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b25, ptr noundef nonnull @c_b25, ptr noundef nonnull %16, ptr noundef nonnull @c__2, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %24) #5
  %382 = load i64, ptr %24, align 8, !tbaa !5
  %.not867 = icmp eq i64 %382, 0
  br i1 %.not867, label %384, label %383

383:                                              ; preds = %369
  store i64 2, ptr %10, align 8, !tbaa !5
  br label %384

384:                                              ; preds = %383, %369
  %385 = load double, ptr %28, align 8, !tbaa !9
  %386 = fcmp une double %385, 1.000000e+00
  br i1 %386, label %387, label %392

387:                                              ; preds = %384
  %388 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %389 = load double, ptr %28, align 8, !tbaa !9
  %390 = load double, ptr %7, align 8, !tbaa !9
  %391 = fmul double %389, %390
  store double %391, ptr %7, align 8, !tbaa !9
  br label %392

392:                                              ; preds = %387, %384
  %393 = load double, ptr %16, align 16, !tbaa !9
  store double %393, ptr %281, align 8, !tbaa !9
  %394 = load double, ptr %265, align 8, !tbaa !9
  store double %394, ptr %341, align 8, !tbaa !9
  %395 = load double, ptr %281, align 8, !tbaa !9
  store double %395, ptr %14, align 8, !tbaa !9
  %396 = fcmp oge double %395, 0.000000e+00
  %397 = fneg double %395
  %398 = select i1 %396, double %395, double %397
  %399 = fcmp oge double %394, 0.000000e+00
  %400 = fneg double %394
  %401 = select i1 %399, double %394, double %400
  %402 = fcmp oge double %398, %401
  %403 = select i1 %402, double %398, double %401
  %404 = fcmp oge double %403, %.7811
  %405 = select i1 %404, double %403, double %.7811
  br label %._crit_edge995

._crit_edge995:                                   ; preds = %266, %392, %331
  %.8812 = phi double [ %405, %392 ], [ %339, %331 ], [ %.4808927, %266 ]
  %.5 = phi i64 [ %.4, %392 ], [ %.4, %331 ], [ %.3928, %266 ]
  %406 = load i64, ptr %12, align 8, !tbaa !5
  %.not866.not = icmp slt i64 %.2828926, %406
  br i1 %.not866.not, label %266, label %.loopexit908, !llvm.loop !23

407:                                              ; preds = %129
  %408 = load double, ptr %6, align 8, !tbaa !9
  %409 = fcmp ult double %408, 0.000000e+00
  %410 = fneg double %408
  %411 = select i1 %409, double %410, double %408
  %412 = fmul double %39, %411
  %413 = load double, ptr %25, align 8
  %414 = fcmp oge double %412, %413
  %415 = select i1 %414, double %412, double %413
  store double %415, ptr %26, align 8, !tbaa !9
  %416 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not, label %417, label %667

417:                                              ; preds = %407
  %418 = icmp sgt i64 %416, 0
  br i1 %418, label %.lr.ph978, label %.loopexit908

.lr.ph978:                                        ; preds = %417
  %419 = getelementptr inbounds i8, ptr %15, i64 16
  %420 = getelementptr inbounds i8, ptr %16, i64 16
  br label %421

421:                                              ; preds = %.lr.ph978, %.loopexit
  %.6976 = phi i64 [ %416, %.lr.ph978 ], [ %.8, %.loopexit ]
  %.9813975 = phi double [ %.0804, %.lr.ph978 ], [ %.13, %.loopexit ]
  %.3829973 = phi i64 [ %416, %.lr.ph978 ], [ %.pre999, %.loopexit ]
  %422 = icmp sgt i64 %.3829973, %.6976
  %.pre999 = add nsw i64 %.3829973, -1
  br i1 %422, label %.loopexit, label %423

423:                                              ; preds = %421
  %.not862 = icmp eq i64 %.3829973, 1
  br i1 %.not862, label %443, label %424

424:                                              ; preds = %423
  %425 = mul nsw i64 %.pre999, %29
  %426 = getelementptr double, ptr %31, i64 %.3829973
  %427 = getelementptr double, ptr %426, i64 %425
  %428 = load double, ptr %427, align 8, !tbaa !9
  %429 = fcmp une double %428, 0.000000e+00
  %.pre993 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %429, label %.thread892, label %444

.thread892:                                       ; preds = %424
  %430 = add nsw i64 %.3829973, -2
  %431 = getelementptr inbounds double, ptr %33, i64 %.pre999
  %432 = getelementptr inbounds double, ptr %33, i64 %.3829973
  %433 = load <2 x double>, ptr %431, align 8, !tbaa !9
  store <2 x double> %433, ptr %15, align 16, !tbaa !9
  %434 = getelementptr double, ptr %33, i64 %.pre993
  %435 = getelementptr double, ptr %434, i64 %.pre999
  %436 = load <2 x double>, ptr %435, align 8, !tbaa !9
  store <2 x double> %436, ptr %419, align 16, !tbaa !9
  %437 = load double, ptr %6, align 8, !tbaa !9
  %438 = fneg double %437
  store double %438, ptr %14, align 8, !tbaa !9
  %439 = getelementptr double, ptr %31, i64 %.pre999
  %440 = getelementptr double, ptr %439, i64 %425
  %441 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %26, ptr noundef nonnull @c_b21, ptr noundef %440, ptr noundef nonnull %4, ptr noundef nonnull @c_b21, ptr noundef nonnull @c_b21, ptr noundef nonnull %15, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b25, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull @c__2, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %24) #5
  %442 = load i64, ptr %24, align 8, !tbaa !5
  %.not863 = icmp eq i64 %442, 0
  br i1 %.not863, label %557, label %556

443:                                              ; preds = %423
  %.pre992 = load i64, ptr %2, align 8, !tbaa !5
  br label %444

444:                                              ; preds = %424, %443
  %445 = phi i64 [ %.pre992, %443 ], [ %.pre993, %424 ]
  %storemerge905.in = phi ptr [ %5, %443 ], [ %6, %424 ]
  %.7891900 = phi i64 [ 0, %443 ], [ %.pre999, %424 ]
  %storemerge905 = load double, ptr %storemerge905.in, align 8, !tbaa !9
  store double %storemerge905, ptr %17, align 8, !tbaa !9
  %446 = getelementptr inbounds double, ptr %33, i64 %.3829973
  %447 = load double, ptr %446, align 8, !tbaa !9
  %448 = fcmp oge double %447, 0.000000e+00
  %449 = fneg double %447
  %450 = select i1 %448, double %447, double %449
  %451 = getelementptr double, ptr %33, i64 %445
  %452 = getelementptr double, ptr %451, i64 %.3829973
  %453 = load double, ptr %452, align 8, !tbaa !9
  %454 = fcmp oge double %453, 0.000000e+00
  %455 = fneg double %453
  %456 = select i1 %454, double %453, double %455
  %457 = fadd double %450, %456
  %458 = mul nsw i64 %.3829973, %29
  %459 = getelementptr double, ptr %31, i64 %.3829973
  %460 = getelementptr double, ptr %459, i64 %458
  %461 = load double, ptr %460, align 8, !tbaa !9
  store double %461, ptr %14, align 8, !tbaa !9
  %462 = fcmp oge double %461, 0.000000e+00
  %463 = fneg double %461
  %464 = select i1 %462, double %461, double %463
  %465 = fcmp oge double %storemerge905, 0.000000e+00
  %466 = fneg double %storemerge905
  %467 = select i1 %465, double %storemerge905, double %466
  %468 = fadd double %464, %467
  store double %461, ptr %23, align 8, !tbaa !9
  %469 = load double, ptr %26, align 8, !tbaa !9
  %470 = fcmp olt double %468, %469
  br i1 %470, label %471, label %472

471:                                              ; preds = %444
  store double %469, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %472

472:                                              ; preds = %471, %444
  %.2818 = phi double [ %469, %471 ], [ %468, %444 ]
  %473 = fcmp oeq double %457, 0.000000e+00
  br i1 %473, label %.loopexit, label %474

474:                                              ; preds = %472
  %475 = fcmp olt double %.2818, 1.000000e+00
  %476 = fmul double %42, %.2818
  %477 = fcmp ogt double %457, %476
  %or.cond874 = select i1 %475, i1 %477, i1 false
  br i1 %or.cond874, label %478, label %485

478:                                              ; preds = %474
  %479 = fdiv double 1.000000e+00, %457
  store double %479, ptr %22, align 8, !tbaa !9
  %480 = call i32 @f2c_dscal(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %481 = load double, ptr %22, align 8, !tbaa !9
  %482 = load double, ptr %7, align 8, !tbaa !9
  %483 = fmul double %481, %482
  store double %483, ptr %7, align 8, !tbaa !9
  %484 = fmul double %.9813975, %481
  br label %485

485:                                              ; preds = %478, %474
  %.10814 = phi double [ %484, %478 ], [ %.9813975, %474 ]
  %486 = load i64, ptr %2, align 8, !tbaa !5
  %487 = getelementptr double, ptr %33, i64 %486
  %488 = getelementptr double, ptr %487, i64 %.3829973
  %489 = call i32 @dladiv_(ptr noundef nonnull %446, ptr noundef %488, ptr noundef nonnull %23, ptr noundef nonnull %17, ptr noundef nonnull %21, ptr noundef nonnull %20) #5
  %490 = load double, ptr %21, align 8, !tbaa !9
  store double %490, ptr %446, align 8, !tbaa !9
  %491 = load double, ptr %20, align 8, !tbaa !9
  %492 = load i64, ptr %2, align 8, !tbaa !5
  %493 = getelementptr double, ptr %33, i64 %492
  %494 = getelementptr double, ptr %493, i64 %.3829973
  store double %491, ptr %494, align 8, !tbaa !9
  %495 = load double, ptr %446, align 8, !tbaa !9
  store double %495, ptr %14, align 8, !tbaa !9
  %496 = fcmp oge double %495, 0.000000e+00
  %497 = fneg double %495
  %498 = select i1 %496, double %495, double %497
  %499 = fcmp oge double %491, 0.000000e+00
  %500 = fneg double %491
  %501 = select i1 %499, double %491, double %500
  %502 = fadd double %501, %498
  %503 = fcmp ogt double %502, 1.000000e+00
  br i1 %503, label %504, label %516

504:                                              ; preds = %485
  %505 = fdiv double 1.000000e+00, %502
  store double %505, ptr %22, align 8, !tbaa !9
  %506 = getelementptr inbounds double, ptr %34, i64 %.3829973
  %507 = load double, ptr %506, align 8, !tbaa !9
  %508 = fsub double %42, %.10814
  %509 = fmul double %508, %505
  %510 = fcmp ogt double %507, %509
  br i1 %510, label %511, label %516

511:                                              ; preds = %504
  %512 = call i32 @f2c_dscal(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %513 = load double, ptr %22, align 8, !tbaa !9
  %514 = load double, ptr %7, align 8, !tbaa !9
  %515 = fmul double %513, %514
  store double %515, ptr %7, align 8, !tbaa !9
  br label %516

516:                                              ; preds = %504, %511, %485
  br i1 %.not862, label %.loopexit908, label %517

517:                                              ; preds = %516
  store i64 %.pre999, ptr %12, align 8, !tbaa !5
  %518 = load double, ptr %446, align 8, !tbaa !9
  %519 = fneg double %518
  store double %519, ptr %14, align 8, !tbaa !9
  %gep972 = getelementptr double, ptr %invariant.gep, i64 %458
  %520 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep972, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i64 %.pre999, ptr %12, align 8, !tbaa !5
  %521 = load i64, ptr %2, align 8, !tbaa !5
  %522 = getelementptr double, ptr %33, i64 %521
  %523 = getelementptr double, ptr %522, i64 %.3829973
  %524 = load double, ptr %523, align 8, !tbaa !9
  %525 = fneg double %524
  store double %525, ptr %14, align 8, !tbaa !9
  %526 = getelementptr double, ptr %8, i64 %521
  %527 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep972, ptr noundef nonnull @c__1, ptr noundef %526, ptr noundef nonnull @c__1) #5
  %528 = getelementptr inbounds double, ptr %32, i64 %.3829973
  %529 = load double, ptr %528, align 8, !tbaa !9
  %530 = load i64, ptr %2, align 8, !tbaa !5
  %531 = getelementptr double, ptr %33, i64 %530
  %532 = getelementptr double, ptr %531, i64 %.3829973
  %533 = load double, ptr %532, align 8, !tbaa !9
  %534 = load double, ptr %8, align 8, !tbaa !9
  %535 = call double @llvm.fmuladd.f64(double %529, double %533, double %534)
  store double %535, ptr %8, align 8, !tbaa !9
  %536 = load double, ptr %528, align 8, !tbaa !9
  %537 = load double, ptr %446, align 8, !tbaa !9
  %538 = getelementptr double, ptr %8, i64 %530
  %539 = load double, ptr %538, align 8, !tbaa !9
  %540 = fneg double %536
  %541 = call double @llvm.fmuladd.f64(double %540, double %537, double %539)
  store double %541, ptr %538, align 8, !tbaa !9
  store i64 %.pre999, ptr %12, align 8, !tbaa !5
  %.not865.not960 = icmp sgt i64 %.3829973, 1
  br i1 %.not865.not960, label %.lr.ph964, label %.loopexit908

.lr.ph964:                                        ; preds = %517, %.lr.ph964
  %.11815962 = phi double [ %554, %.lr.ph964 ], [ 0.000000e+00, %517 ]
  %.0824961 = phi i64 [ %555, %.lr.ph964 ], [ 1, %517 ]
  %542 = getelementptr inbounds double, ptr %33, i64 %.0824961
  %543 = load double, ptr %542, align 8, !tbaa !9
  %544 = fcmp oge double %543, 0.000000e+00
  %545 = fneg double %543
  %546 = select i1 %544, double %543, double %545
  %547 = getelementptr double, ptr %542, i64 %530
  %548 = load double, ptr %547, align 8, !tbaa !9
  %549 = fcmp oge double %548, 0.000000e+00
  %550 = fneg double %548
  %551 = select i1 %549, double %548, double %550
  %552 = fadd double %546, %551
  %553 = fcmp oge double %.11815962, %552
  %554 = select i1 %553, double %.11815962, double %552
  %555 = add nuw nsw i64 %.0824961, 1
  %.not865.not = icmp slt i64 %555, %.3829973
  br i1 %.not865.not, label %.lr.ph964, label %..loopexit_crit_edge, !llvm.loop !24

556:                                              ; preds = %.thread892
  store i64 2, ptr %10, align 8, !tbaa !5
  br label %557

557:                                              ; preds = %556, %.thread892
  %558 = load double, ptr %28, align 8, !tbaa !9
  %559 = fcmp une double %558, 1.000000e+00
  br i1 %559, label %560, label %567

560:                                              ; preds = %557
  %561 = load i64, ptr %2, align 8, !tbaa !5
  %562 = shl i64 %561, 1
  store i64 %562, ptr %12, align 8, !tbaa !5
  %563 = call i32 @f2c_dscal(ptr noundef nonnull %12, ptr noundef nonnull %28, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %564 = load double, ptr %28, align 8, !tbaa !9
  %565 = load double, ptr %7, align 8, !tbaa !9
  %566 = fmul double %564, %565
  store double %566, ptr %7, align 8, !tbaa !9
  br label %567

567:                                              ; preds = %560, %557
  %568 = load <2 x double>, ptr %16, align 16
  store <2 x double> %568, ptr %431, align 8, !tbaa !9
  %569 = load i64, ptr %2, align 8, !tbaa !5
  %570 = getelementptr double, ptr %33, i64 %569
  %571 = getelementptr double, ptr %570, i64 %.pre999
  %572 = load <2 x double>, ptr %420, align 16
  store <2 x double> %572, ptr %571, align 8, !tbaa !9
  %573 = shufflevector <2 x double> %568, <2 x double> %572, <2 x i32> <i32 0, i32 2>
  %574 = fcmp oge <2 x double> %573, zeroinitializer
  %575 = fneg <2 x double> %573
  %576 = select <2 x i1> %574, <2 x double> %573, <2 x double> %575
  %577 = shufflevector <2 x double> %568, <2 x double> %572, <2 x i32> <i32 1, i32 3>
  %578 = fcmp oge <2 x double> %577, zeroinitializer
  %579 = fneg <2 x double> %577
  %580 = select <2 x i1> %578, <2 x double> %577, <2 x double> %579
  %581 = shufflevector <2 x double> %576, <2 x double> %580, <2 x i32> <i32 0, i32 2>
  %582 = shufflevector <2 x double> %576, <2 x double> %580, <2 x i32> <i32 1, i32 3>
  %583 = fadd <2 x double> %581, %582
  %584 = extractelement <2 x double> %583, i64 0
  store double %584, ptr %14, align 8, !tbaa !9
  %585 = extractelement <2 x double> %583, i64 1
  %586 = fcmp oge double %584, %585
  %587 = select i1 %586, double %584, double %585
  %588 = fcmp ogt double %587, 1.000000e+00
  br i1 %588, label %589, label %605

589:                                              ; preds = %567
  %590 = fdiv double 1.000000e+00, %587
  store double %590, ptr %22, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %34, i64 %.pre999
  %592 = load double, ptr %591, align 8, !tbaa !9
  store double %592, ptr %14, align 8, !tbaa !9
  %593 = getelementptr inbounds double, ptr %34, i64 %.3829973
  %594 = load double, ptr %593, align 8, !tbaa !9
  %595 = fcmp oge double %592, %594
  %596 = select i1 %595, double %592, double %594
  %597 = fsub double %42, %.9813975
  %598 = fmul double %597, %590
  %599 = fcmp ogt double %596, %598
  br i1 %599, label %600, label %605

600:                                              ; preds = %589
  %601 = call i32 @f2c_dscal(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %602 = load double, ptr %22, align 8, !tbaa !9
  %603 = load double, ptr %7, align 8, !tbaa !9
  %604 = fmul double %602, %603
  store double %604, ptr %7, align 8, !tbaa !9
  br label %605

605:                                              ; preds = %589, %600, %567
  %606 = icmp ugt i64 %.pre999, 1
  br i1 %606, label %607, label %.loopexit

607:                                              ; preds = %605
  store i64 %430, ptr %12, align 8, !tbaa !5
  %608 = load double, ptr %431, align 8, !tbaa !9
  %609 = fneg double %608
  store double %609, ptr %14, align 8, !tbaa !9
  %gep968 = getelementptr double, ptr %invariant.gep, i64 %425
  %610 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep968, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i64 %430, ptr %12, align 8, !tbaa !5
  %611 = load double, ptr %432, align 8, !tbaa !9
  %612 = fneg double %611
  store double %612, ptr %14, align 8, !tbaa !9
  %613 = mul nsw i64 %.3829973, %29
  %gep970 = getelementptr double, ptr %invariant.gep, i64 %613
  %614 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep970, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  store i64 %430, ptr %12, align 8, !tbaa !5
  %615 = load i64, ptr %2, align 8, !tbaa !5
  %616 = getelementptr double, ptr %33, i64 %615
  %617 = getelementptr double, ptr %616, i64 %.pre999
  %618 = load double, ptr %617, align 8, !tbaa !9
  %619 = fneg double %618
  store double %619, ptr %14, align 8, !tbaa !9
  %620 = getelementptr double, ptr %8, i64 %615
  %621 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep968, ptr noundef nonnull @c__1, ptr noundef %620, ptr noundef nonnull @c__1) #5
  store i64 %430, ptr %12, align 8, !tbaa !5
  %622 = load i64, ptr %2, align 8, !tbaa !5
  %623 = getelementptr double, ptr %33, i64 %622
  %624 = getelementptr double, ptr %623, i64 %.3829973
  %625 = load double, ptr %624, align 8, !tbaa !9
  %626 = fneg double %625
  store double %626, ptr %14, align 8, !tbaa !9
  %627 = getelementptr double, ptr %8, i64 %622
  %628 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep970, ptr noundef nonnull @c__1, ptr noundef %627, ptr noundef nonnull @c__1) #5
  %629 = load double, ptr %8, align 8, !tbaa !9
  %630 = getelementptr inbounds double, ptr %32, i64 %.pre999
  %631 = load double, ptr %630, align 8, !tbaa !9
  %632 = load i64, ptr %2, align 8, !tbaa !5
  %633 = getelementptr double, ptr %33, i64 %632
  %634 = getelementptr double, ptr %633, i64 %.pre999
  %635 = load double, ptr %634, align 8, !tbaa !9
  %636 = call double @llvm.fmuladd.f64(double %631, double %635, double %629)
  %637 = getelementptr inbounds double, ptr %32, i64 %.3829973
  %638 = load double, ptr %637, align 8, !tbaa !9
  %639 = getelementptr double, ptr %633, i64 %.3829973
  %640 = load double, ptr %639, align 8, !tbaa !9
  %641 = call double @llvm.fmuladd.f64(double %638, double %640, double %636)
  store double %641, ptr %8, align 8, !tbaa !9
  %642 = getelementptr double, ptr %8, i64 %632
  %643 = load double, ptr %642, align 8, !tbaa !9
  %644 = load double, ptr %630, align 8, !tbaa !9
  %645 = load double, ptr %431, align 8, !tbaa !9
  %646 = fneg double %644
  %647 = call double @llvm.fmuladd.f64(double %646, double %645, double %643)
  %648 = load double, ptr %637, align 8, !tbaa !9
  %649 = load double, ptr %432, align 8, !tbaa !9
  %650 = fneg double %648
  %651 = call double @llvm.fmuladd.f64(double %650, double %649, double %647)
  store double %651, ptr %642, align 8, !tbaa !9
  store i64 %430, ptr %12, align 8, !tbaa !5
  %.not864954 = icmp slt i64 %.3829973, 3
  br i1 %.not864954, label %.loopexit908, label %.lr.ph958

.lr.ph958:                                        ; preds = %607, %.lr.ph958
  %.12956 = phi double [ %664, %.lr.ph958 ], [ 0.000000e+00, %607 ]
  %.1825955 = phi i64 [ %665, %.lr.ph958 ], [ 1, %607 ]
  %652 = getelementptr inbounds double, ptr %33, i64 %.1825955
  %653 = load double, ptr %652, align 8, !tbaa !9
  %654 = fcmp oge double %653, 0.000000e+00
  %655 = fneg double %653
  %656 = select i1 %654, double %653, double %655
  %657 = getelementptr double, ptr %652, i64 %632
  %658 = load double, ptr %657, align 8, !tbaa !9
  %659 = fcmp oge double %658, 0.000000e+00
  %660 = fneg double %658
  %661 = select i1 %659, double %658, double %660
  %662 = fadd double %656, %661
  %663 = fcmp oge double %662, %.12956
  %664 = select i1 %663, double %662, double %.12956
  %665 = add nuw nsw i64 %.1825955, 1
  %.not864.not = icmp slt i64 %.1825955, %430
  br i1 %.not864.not, label %.lr.ph958, label %..loopexit907_crit_edge, !llvm.loop !25

..loopexit_crit_edge:                             ; preds = %.lr.ph964
  store double %543, ptr %14, align 8, !tbaa !9
  br label %.loopexit

..loopexit907_crit_edge:                          ; preds = %.lr.ph958
  store double %653, ptr %14, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %421, %..loopexit907_crit_edge, %..loopexit_crit_edge, %472, %605
  %.13 = phi double [ %664, %..loopexit907_crit_edge ], [ %554, %..loopexit_crit_edge ], [ %.9813975, %472 ], [ %.9813975, %605 ], [ %.9813975, %421 ]
  %.8 = phi i64 [ %430, %..loopexit907_crit_edge ], [ %.7891900, %..loopexit_crit_edge ], [ %.7891900, %472 ], [ %430, %605 ], [ %.6976, %421 ]
  %666 = icmp sgt i64 %.3829973, 1
  br i1 %666, label %421, label %.loopexit908, !llvm.loop !26

667:                                              ; preds = %407
  store i64 %416, ptr %12, align 8, !tbaa !5
  %.not860948 = icmp slt i64 %416, 1
  br i1 %.not860948, label %.loopexit908, label %.lr.ph953

.lr.ph953:                                        ; preds = %667
  %668 = getelementptr inbounds i8, ptr %15, i64 8
  %669 = getelementptr inbounds i8, ptr %15, i64 16
  %670 = getelementptr inbounds i8, ptr %16, i64 8
  %671 = getelementptr inbounds i8, ptr %16, i64 16
  %672 = getelementptr inbounds i8, ptr %16, i64 24
  br label %673

673:                                              ; preds = %.lr.ph953, %._crit_edge997
  %674 = phi i64 [ %416, %.lr.ph953 ], [ %927, %._crit_edge997 ]
  %.9951 = phi i64 [ 1, %.lr.ph953 ], [ %.11, %._crit_edge997 ]
  %.14950 = phi double [ %.0804, %.lr.ph953 ], [ %.18, %._crit_edge997 ]
  %.4830949 = phi i64 [ 1, %.lr.ph953 ], [ %.pre1001, %._crit_edge997 ]
  %675 = icmp slt i64 %.4830949, %.9951
  %.pre1001 = add nuw nsw i64 %.4830949, 1
  br i1 %675, label %._crit_edge997, label %676

676:                                              ; preds = %673
  %677 = icmp slt i64 %.4830949, %674
  br i1 %677, label %678, label %686

678:                                              ; preds = %676
  %679 = mul nsw i64 %.4830949, %29
  %680 = getelementptr double, ptr %31, i64 %.pre1001
  %681 = getelementptr double, ptr %680, i64 %679
  %682 = load double, ptr %681, align 8, !tbaa !9
  %683 = fcmp une double %682, 0.000000e+00
  br i1 %683, label %684, label %686

684:                                              ; preds = %678
  %685 = add nuw nsw i64 %.4830949, 2
  br label %686

686:                                              ; preds = %678, %684, %676
  %.1821 = phi i64 [ %.pre1001, %684 ], [ %.4830949, %678 ], [ %.4830949, %676 ]
  %.10 = phi i64 [ %685, %684 ], [ %.pre1001, %678 ], [ %.pre1001, %676 ]
  %687 = icmp eq i64 %.4830949, %.1821
  %688 = getelementptr inbounds double, ptr %33, i64 %.4830949
  %689 = load double, ptr %688, align 8, !tbaa !9
  store double %689, ptr %14, align 8, !tbaa !9
  br i1 %687, label %690, label %800

690:                                              ; preds = %686
  %691 = fcmp ogt double %.14950, 1.000000e+00
  br i1 %691, label %692, label %714

692:                                              ; preds = %690
  %693 = fcmp oge double %689, 0.000000e+00
  %694 = fneg double %689
  %695 = select i1 %693, double %689, double %694
  %696 = getelementptr double, ptr %688, i64 %674
  %697 = load double, ptr %696, align 8, !tbaa !9
  %698 = fcmp oge double %697, 0.000000e+00
  %699 = fneg double %697
  %700 = select i1 %698, double %697, double %699
  %701 = fadd double %695, %700
  %702 = fdiv double 1.000000e+00, %.14950
  store double %702, ptr %22, align 8, !tbaa !9
  %703 = getelementptr inbounds double, ptr %34, i64 %.4830949
  %704 = load double, ptr %703, align 8, !tbaa !9
  %705 = fsub double %42, %701
  %706 = fmul double %702, %705
  %707 = fcmp ogt double %704, %706
  br i1 %707, label %708, label %714

708:                                              ; preds = %692
  %709 = call i32 @f2c_dscal(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %710 = load double, ptr %22, align 8, !tbaa !9
  %711 = load double, ptr %7, align 8, !tbaa !9
  %712 = fmul double %710, %711
  store double %712, ptr %7, align 8, !tbaa !9
  %713 = fmul double %.14950, %710
  br label %714

714:                                              ; preds = %692, %708, %690
  %.15 = phi double [ %713, %708 ], [ %.14950, %692 ], [ %.14950, %690 ]
  %715 = add nsw i64 %.4830949, -1
  store i64 %715, ptr %13, align 8, !tbaa !5
  %716 = mul nsw i64 %.4830949, %29
  %gep947 = getelementptr double, ptr %invariant.gep, i64 %716
  %717 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep947, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %718 = load double, ptr %688, align 8, !tbaa !9
  %719 = fsub double %718, %717
  store double %719, ptr %688, align 8, !tbaa !9
  store i64 %715, ptr %13, align 8, !tbaa !5
  %720 = load i64, ptr %2, align 8, !tbaa !5
  %721 = getelementptr double, ptr %8, i64 %720
  %722 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep947, ptr noundef nonnull @c__1, ptr noundef %721, ptr noundef nonnull @c__1) #5
  %723 = load i64, ptr %2, align 8, !tbaa !5
  %724 = getelementptr double, ptr %33, i64 %723
  %725 = getelementptr double, ptr %724, i64 %.4830949
  %726 = load double, ptr %725, align 8, !tbaa !9
  %727 = fsub double %726, %722
  store double %727, ptr %725, align 8, !tbaa !9
  %728 = icmp ugt i64 %.4830949, 1
  br i1 %728, label %729, label %741

729:                                              ; preds = %714
  %730 = getelementptr inbounds double, ptr %32, i64 %.4830949
  %731 = load double, ptr %730, align 8, !tbaa !9
  %732 = getelementptr double, ptr %8, i64 %723
  %733 = load double, ptr %732, align 8, !tbaa !9
  %734 = load double, ptr %688, align 8, !tbaa !9
  %735 = fneg double %731
  %736 = call double @llvm.fmuladd.f64(double %735, double %733, double %734)
  store double %736, ptr %688, align 8, !tbaa !9
  %737 = load double, ptr %730, align 8, !tbaa !9
  %738 = load double, ptr %8, align 8, !tbaa !9
  %739 = load double, ptr %725, align 8, !tbaa !9
  %740 = call double @llvm.fmuladd.f64(double %737, double %738, double %739)
  store double %740, ptr %725, align 8, !tbaa !9
  br label %741

741:                                              ; preds = %729, %714
  %742 = phi double [ %740, %729 ], [ %727, %714 ]
  %743 = load double, ptr %688, align 8, !tbaa !9
  %744 = fcmp oge double %743, 0.000000e+00
  %745 = fneg double %743
  %746 = select i1 %744, double %743, double %745
  %747 = fcmp oge double %742, 0.000000e+00
  %748 = fneg double %742
  %749 = select i1 %747, double %742, double %748
  %750 = fadd double %746, %749
  %751 = load double, ptr %6, align 8, !tbaa !9
  store double %751, ptr %17, align 8, !tbaa !9
  %752 = icmp eq i64 %.4830949, 1
  br i1 %752, label %753, label %755

753:                                              ; preds = %741
  %754 = load double, ptr %5, align 8, !tbaa !9
  store double %754, ptr %17, align 8, !tbaa !9
  br label %755

755:                                              ; preds = %753, %741
  %756 = phi double [ %754, %753 ], [ %751, %741 ]
  %757 = getelementptr double, ptr %31, i64 %.4830949
  %758 = getelementptr double, ptr %757, i64 %716
  %759 = load double, ptr %758, align 8, !tbaa !9
  store double %759, ptr %14, align 8, !tbaa !9
  %760 = fcmp oge double %759, 0.000000e+00
  %761 = fneg double %759
  %762 = select i1 %760, double %759, double %761
  %763 = fcmp oge double %756, 0.000000e+00
  %764 = fneg double %756
  %765 = select i1 %763, double %756, double %764
  %766 = fadd double %762, %765
  store double %759, ptr %23, align 8, !tbaa !9
  %767 = load double, ptr %26, align 8, !tbaa !9
  %768 = fcmp olt double %766, %767
  br i1 %768, label %769, label %770

769:                                              ; preds = %755
  store double %767, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %770

770:                                              ; preds = %769, %755
  %.3819 = phi double [ %767, %769 ], [ %766, %755 ]
  %771 = fcmp olt double %.3819, 1.000000e+00
  %772 = fmul double %42, %.3819
  %773 = fcmp ogt double %750, %772
  %or.cond876 = select i1 %771, i1 %773, i1 false
  br i1 %or.cond876, label %774, label %781

774:                                              ; preds = %770
  %775 = fdiv double 1.000000e+00, %750
  store double %775, ptr %22, align 8, !tbaa !9
  %776 = call i32 @f2c_dscal(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %777 = load double, ptr %22, align 8, !tbaa !9
  %778 = load double, ptr %7, align 8, !tbaa !9
  %779 = fmul double %777, %778
  store double %779, ptr %7, align 8, !tbaa !9
  %780 = fmul double %.15, %777
  %.pre991 = load double, ptr %17, align 8, !tbaa !9
  %.pre994 = fneg double %.pre991
  br label %781

781:                                              ; preds = %774, %770
  %.pre-phi = phi double [ %.pre994, %774 ], [ %764, %770 ]
  %.16 = phi double [ %780, %774 ], [ %.15, %770 ]
  store double %.pre-phi, ptr %14, align 8, !tbaa !9
  %782 = load i64, ptr %2, align 8, !tbaa !5
  %783 = getelementptr double, ptr %33, i64 %782
  %784 = getelementptr double, ptr %783, i64 %.4830949
  %785 = call i32 @dladiv_(ptr noundef nonnull %688, ptr noundef %784, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %21, ptr noundef nonnull %20) #5
  %786 = load double, ptr %21, align 8, !tbaa !9
  store double %786, ptr %688, align 8, !tbaa !9
  %787 = load double, ptr %20, align 8, !tbaa !9
  %788 = load i64, ptr %2, align 8, !tbaa !5
  %789 = getelementptr double, ptr %688, i64 %788
  store double %787, ptr %789, align 8, !tbaa !9
  %790 = load double, ptr %688, align 8, !tbaa !9
  store double %790, ptr %14, align 8, !tbaa !9
  %791 = fcmp oge double %790, 0.000000e+00
  %792 = fneg double %790
  %793 = select i1 %791, double %790, double %792
  %794 = fcmp oge double %787, 0.000000e+00
  %795 = fneg double %787
  %796 = select i1 %794, double %787, double %795
  %797 = fadd double %796, %793
  %798 = fcmp oge double %797, %.16
  %799 = select i1 %798, double %797, double %.16
  br label %._crit_edge997

800:                                              ; preds = %686
  %801 = getelementptr inbounds double, ptr %33, i64 %.1821
  %802 = fcmp ogt double %.14950, 1.000000e+00
  br i1 %802, label %803, label %841

803:                                              ; preds = %800
  %804 = getelementptr double, ptr %33, i64 %674
  %805 = getelementptr double, ptr %804, i64 %.4830949
  %806 = load double, ptr %805, align 8, !tbaa !9
  %807 = load double, ptr %801, align 8, !tbaa !9
  %808 = getelementptr double, ptr %804, i64 %.1821
  %809 = load double, ptr %808, align 8, !tbaa !9
  %810 = insertelement <2 x double> poison, double %689, i64 0
  %811 = insertelement <2 x double> %810, double %807, i64 1
  %812 = fcmp oge <2 x double> %811, zeroinitializer
  %813 = fneg <2 x double> %811
  %814 = select <2 x i1> %812, <2 x double> %811, <2 x double> %813
  %815 = insertelement <2 x double> poison, double %806, i64 0
  %816 = insertelement <2 x double> %815, double %809, i64 1
  %817 = fcmp oge <2 x double> %816, zeroinitializer
  %818 = fneg <2 x double> %816
  %819 = select <2 x i1> %817, <2 x double> %816, <2 x double> %818
  %820 = fadd <2 x double> %814, %819
  %821 = extractelement <2 x double> %820, i64 0
  %822 = extractelement <2 x double> %820, i64 1
  %823 = fcmp oge double %821, %822
  %824 = select i1 %823, double %821, double %822
  %825 = fdiv double 1.000000e+00, %.14950
  store double %825, ptr %22, align 8, !tbaa !9
  %826 = getelementptr inbounds double, ptr %34, i64 %.4830949
  %827 = load double, ptr %826, align 8, !tbaa !9
  store double %827, ptr %14, align 8, !tbaa !9
  %828 = getelementptr inbounds double, ptr %34, i64 %.1821
  %829 = load double, ptr %828, align 8, !tbaa !9
  %830 = fcmp oge double %827, %829
  %831 = select i1 %830, double %827, double %829
  %832 = fsub double %42, %824
  %833 = fdiv double %832, %.14950
  %834 = fcmp ogt double %831, %833
  br i1 %834, label %835, label %841

835:                                              ; preds = %803
  %836 = call i32 @f2c_dscal(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %837 = load double, ptr %22, align 8, !tbaa !9
  %838 = load double, ptr %7, align 8, !tbaa !9
  %839 = fmul double %837, %838
  store double %839, ptr %7, align 8, !tbaa !9
  %840 = fmul double %.14950, %837
  %.pre990 = load double, ptr %688, align 8, !tbaa !9
  br label %841

841:                                              ; preds = %803, %835, %800
  %842 = phi double [ %.pre990, %835 ], [ %689, %803 ], [ %689, %800 ]
  %.17 = phi double [ %840, %835 ], [ %.14950, %803 ], [ %.14950, %800 ]
  %843 = add nsw i64 %.4830949, -1
  store i64 %843, ptr %13, align 8, !tbaa !5
  %844 = mul nsw i64 %.4830949, %29
  %gep943 = getelementptr double, ptr %invariant.gep, i64 %844
  %845 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep943, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %846 = fsub double %842, %845
  store double %846, ptr %15, align 16, !tbaa !9
  store i64 %843, ptr %13, align 8, !tbaa !5
  %847 = load double, ptr %801, align 8, !tbaa !9
  %848 = mul nsw i64 %.1821, %29
  %gep945 = getelementptr double, ptr %invariant.gep, i64 %848
  %849 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep945, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %850 = fsub double %847, %849
  store double %850, ptr %668, align 8, !tbaa !9
  store i64 %843, ptr %13, align 8, !tbaa !5
  %851 = load i64, ptr %2, align 8, !tbaa !5
  %852 = getelementptr double, ptr %33, i64 %851
  %853 = getelementptr double, ptr %852, i64 %.4830949
  %854 = load double, ptr %853, align 8, !tbaa !9
  %855 = getelementptr double, ptr %8, i64 %851
  %856 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep943, ptr noundef nonnull @c__1, ptr noundef %855, ptr noundef nonnull @c__1) #5
  %857 = fsub double %854, %856
  store double %857, ptr %669, align 16, !tbaa !9
  store i64 %843, ptr %13, align 8, !tbaa !5
  %858 = load i64, ptr %2, align 8, !tbaa !5
  %859 = getelementptr double, ptr %33, i64 %858
  %860 = getelementptr double, ptr %859, i64 %.1821
  %861 = load double, ptr %860, align 8, !tbaa !9
  %862 = getelementptr double, ptr %8, i64 %858
  %863 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %gep945, ptr noundef nonnull @c__1, ptr noundef %862, ptr noundef nonnull @c__1) #5
  %864 = fsub double %861, %863
  %865 = getelementptr inbounds double, ptr %32, i64 %.4830949
  %866 = load double, ptr %865, align 8, !tbaa !9
  %867 = load i64, ptr %2, align 8, !tbaa !5
  %868 = getelementptr double, ptr %8, i64 %867
  %869 = load double, ptr %868, align 8, !tbaa !9
  %870 = getelementptr inbounds double, ptr %32, i64 %.1821
  %871 = load double, ptr %870, align 8, !tbaa !9
  %872 = load <2 x double>, ptr %15, align 16, !tbaa !9
  %873 = insertelement <2 x double> poison, double %866, i64 0
  %874 = insertelement <2 x double> %873, double %871, i64 1
  %875 = fneg <2 x double> %874
  %876 = insertelement <2 x double> poison, double %869, i64 0
  %877 = shufflevector <2 x double> %876, <2 x double> poison, <2 x i32> zeroinitializer
  %878 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %875, <2 x double> %877, <2 x double> %872)
  store <2 x double> %878, ptr %15, align 16, !tbaa !9
  %879 = load double, ptr %8, align 8, !tbaa !9
  %880 = load <2 x double>, ptr %669, align 16
  %881 = insertelement <2 x double> poison, double %879, i64 0
  %882 = shufflevector <2 x double> %881, <2 x double> poison, <2 x i32> zeroinitializer
  %883 = insertelement <2 x double> %880, double %864, i64 1
  %884 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %874, <2 x double> %882, <2 x double> %883)
  store <2 x double> %884, ptr %669, align 16, !tbaa !9
  %885 = getelementptr double, ptr %31, i64 %.4830949
  %886 = getelementptr double, ptr %885, i64 %844
  %887 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %26, ptr noundef nonnull @c_b21, ptr noundef %886, ptr noundef nonnull %4, ptr noundef nonnull @c_b21, ptr noundef nonnull @c_b21, ptr noundef nonnull %15, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b25, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c__2, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %24) #5
  %888 = load i64, ptr %24, align 8, !tbaa !5
  %.not861 = icmp eq i64 %888, 0
  br i1 %.not861, label %890, label %889

889:                                              ; preds = %841
  store i64 2, ptr %10, align 8, !tbaa !5
  br label %890

890:                                              ; preds = %889, %841
  %891 = load double, ptr %28, align 8, !tbaa !9
  %892 = fcmp une double %891, 1.000000e+00
  br i1 %892, label %893, label %898

893:                                              ; preds = %890
  %894 = call i32 @f2c_dscal(ptr noundef nonnull %19, ptr noundef nonnull %28, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  %895 = load double, ptr %28, align 8, !tbaa !9
  %896 = load double, ptr %7, align 8, !tbaa !9
  %897 = fmul double %895, %896
  store double %897, ptr %7, align 8, !tbaa !9
  br label %898

898:                                              ; preds = %893, %890
  %899 = load double, ptr %16, align 16, !tbaa !9
  store double %899, ptr %688, align 8, !tbaa !9
  %900 = load double, ptr %670, align 8, !tbaa !9
  store double %900, ptr %801, align 8, !tbaa !9
  %901 = load double, ptr %671, align 16, !tbaa !9
  %902 = load i64, ptr %2, align 8, !tbaa !5
  %903 = getelementptr double, ptr %33, i64 %902
  %904 = getelementptr double, ptr %903, i64 %.4830949
  store double %901, ptr %904, align 8, !tbaa !9
  %905 = load double, ptr %672, align 8, !tbaa !9
  %906 = getelementptr double, ptr %903, i64 %.1821
  store double %905, ptr %906, align 8, !tbaa !9
  %907 = load double, ptr %688, align 8, !tbaa !9
  store double %907, ptr %14, align 8, !tbaa !9
  %908 = load double, ptr %904, align 8, !tbaa !9
  %909 = load double, ptr %801, align 8, !tbaa !9
  %910 = insertelement <2 x double> poison, double %908, i64 0
  %911 = insertelement <2 x double> %910, double %909, i64 1
  %912 = fcmp oge <2 x double> %911, zeroinitializer
  %913 = fneg <2 x double> %911
  %914 = select <2 x i1> %912, <2 x double> %911, <2 x double> %913
  %915 = insertelement <2 x double> poison, double %907, i64 0
  %916 = insertelement <2 x double> %915, double %905, i64 1
  %917 = fcmp oge <2 x double> %916, zeroinitializer
  %918 = fneg <2 x double> %916
  %919 = select <2 x i1> %917, <2 x double> %916, <2 x double> %918
  %920 = fadd <2 x double> %919, %914
  %921 = extractelement <2 x double> %920, i64 0
  %922 = extractelement <2 x double> %920, i64 1
  %923 = fcmp oge double %921, %922
  %924 = select i1 %923, double %921, double %922
  %925 = fcmp oge double %924, %.17
  %926 = select i1 %925, double %924, double %.17
  br label %._crit_edge997

._crit_edge997:                                   ; preds = %673, %898, %781
  %927 = phi i64 [ %902, %898 ], [ %788, %781 ], [ %674, %673 ]
  %.18 = phi double [ %926, %898 ], [ %799, %781 ], [ %.14950, %673 ]
  %.11 = phi i64 [ %.10, %898 ], [ %.10, %781 ], [ %.9951, %673 ]
  %928 = load i64, ptr %12, align 8, !tbaa !5
  %.not860.not = icmp slt i64 %.4830949, %928
  br i1 %.not860.not, label %673, label %.loopexit908, !llvm.loop !27

.loopexit908:                                     ; preds = %._crit_edge995, %200, %._crit_edge996, %._crit_edge997, %516, %517, %607, %.loopexit, %263, %133, %667, %417, %11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  ret i32 0
}

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @f2c_dscal(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @f2c_daxpy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dlaln2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @dladiv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr 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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14}
!14 = distinct !{!14, !15}
!15 = distinct !{!15, !"LVerDomain"}
!16 = !{!17}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !12, !19, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !12, !19}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass