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

; 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
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @dlansf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca double, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  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
  %34 = load ptr, ptr %11, align 8, !tbaa !5
  %35 = load i64, ptr %34, align 8, !tbaa !9
  %36 = icmp eq i64 %35, 0
  br i1 %36, label %37, label %39

37:                                               ; preds = %6
  store double 0.000000e+00, ptr %16, align 8, !tbaa !11
  %38 = load double, ptr %16, align 8, !tbaa !11
  store double %38, ptr %7, align 8
  store i32 1, ptr %33, align 4
  br label %2928

39:                                               ; preds = %6
  store i64 1, ptr %29, align 8, !tbaa !9
  %40 = load ptr, ptr %11, align 8, !tbaa !5
  %41 = load i64, ptr %40, align 8, !tbaa !9
  %42 = srem i64 %41, 2
  %43 = icmp eq i64 %42, 0
  br i1 %43, label %44, label %45

44:                                               ; preds = %39
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %45

45:                                               ; preds = %44, %39
  store i64 1, ptr %28, align 8, !tbaa !9
  %46 = load ptr, ptr %9, align 8, !tbaa !5
  %47 = call i64 @lsame_(ptr noundef %46, ptr noundef @.str)
  %48 = icmp ne i64 %47, 0
  br i1 %48, label %49, label %50

49:                                               ; preds = %45
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %50

50:                                               ; preds = %49, %45
  store i64 1, ptr %30, align 8, !tbaa !9
  %51 = load ptr, ptr %10, align 8, !tbaa !5
  %52 = call i64 @lsame_(ptr noundef %51, ptr noundef @.str.1)
  %53 = icmp ne i64 %52, 0
  br i1 %53, label %54, label %55

54:                                               ; preds = %50
  store i64 0, ptr %30, align 8, !tbaa !9
  br label %55

55:                                               ; preds = %54, %50
  %56 = load i64, ptr %28, align 8, !tbaa !9
  %57 = icmp eq i64 %56, 1
  br i1 %57, label %58, label %69

58:                                               ; preds = %55
  %59 = load i64, ptr %29, align 8, !tbaa !9
  %60 = icmp eq i64 %59, 1
  br i1 %60, label %61, label %64

61:                                               ; preds = %58
  %62 = load ptr, ptr %11, align 8, !tbaa !5
  %63 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %63, ptr %27, align 8, !tbaa !9
  br label %68

64:                                               ; preds = %58
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load i64, ptr %65, align 8, !tbaa !9
  %67 = add nsw i64 %66, 1
  store i64 %67, ptr %27, align 8, !tbaa !9
  br label %68

68:                                               ; preds = %64, %61
  br label %74

69:                                               ; preds = %55
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  %72 = add nsw i64 %71, 1
  %73 = sdiv i64 %72, 2
  store i64 %73, ptr %27, align 8, !tbaa !9
  br label %74

74:                                               ; preds = %69, %68
  %75 = load ptr, ptr %8, align 8, !tbaa !5
  %76 = call i64 @lsame_(ptr noundef %75, ptr noundef @.str.2)
  %77 = icmp ne i64 %76, 0
  br i1 %77, label %78, label %296

78:                                               ; preds = %74
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = load i64, ptr %79, align 8, !tbaa !9
  %81 = add nsw i64 %80, 1
  %82 = sdiv i64 %81, 2
  store i64 %82, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %32, align 8, !tbaa !11
  %83 = load i64, ptr %29, align 8, !tbaa !9
  %84 = icmp eq i64 %83, 1
  br i1 %84, label %85, label %191

85:                                               ; preds = %78
  %86 = load i64, ptr %28, align 8, !tbaa !9
  %87 = icmp eq i64 %86, 1
  br i1 %87, label %88, label %139

88:                                               ; preds = %85
  %89 = load i64, ptr %22, align 8, !tbaa !9
  %90 = sub nsw i64 %89, 1
  store i64 %90, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %91

91:                                               ; preds = %135, %88
  %92 = load i64, ptr %21, align 8, !tbaa !9
  %93 = load i64, ptr %14, align 8, !tbaa !9
  %94 = icmp sle i64 %92, %93
  br i1 %94, label %95, label %138

95:                                               ; preds = %91
  %96 = load ptr, ptr %11, align 8, !tbaa !5
  %97 = load i64, ptr %96, align 8, !tbaa !9
  %98 = sub nsw i64 %97, 1
  store i64 %98, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %99

99:                                               ; preds = %131, %95
  %100 = load i64, ptr %20, align 8, !tbaa !9
  %101 = load i64, ptr %15, align 8, !tbaa !9
  %102 = icmp sle i64 %100, %101
  br i1 %102, label %103, label %134

103:                                              ; preds = %99
  %104 = load double, ptr %32, align 8, !tbaa !11
  store double %104, ptr %18, align 8, !tbaa !11
  %105 = load ptr, ptr %12, align 8, !tbaa !5
  %106 = load i64, ptr %20, align 8, !tbaa !9
  %107 = load i64, ptr %21, align 8, !tbaa !9
  %108 = load i64, ptr %27, align 8, !tbaa !9
  %109 = mul nsw i64 %107, %108
  %110 = add nsw i64 %106, %109
  %111 = getelementptr inbounds double, ptr %105, i64 %110
  %112 = load double, ptr %111, align 8, !tbaa !11
  store double %112, ptr %17, align 8, !tbaa !11
  %113 = load double, ptr %17, align 8, !tbaa !11
  %114 = fcmp oge double %113, 0.000000e+00
  br i1 %114, label %115, label %117

115:                                              ; preds = %103
  %116 = load double, ptr %17, align 8, !tbaa !11
  br label %120

117:                                              ; preds = %103
  %118 = load double, ptr %17, align 8, !tbaa !11
  %119 = fneg double %118
  br label %120

120:                                              ; preds = %117, %115
  %121 = phi double [ %116, %115 ], [ %119, %117 ]
  store double %121, ptr %19, align 8, !tbaa !11
  %122 = load double, ptr %18, align 8, !tbaa !11
  %123 = load double, ptr %19, align 8, !tbaa !11
  %124 = fcmp oge double %122, %123
  br i1 %124, label %125, label %127

125:                                              ; preds = %120
  %126 = load double, ptr %18, align 8, !tbaa !11
  br label %129

127:                                              ; preds = %120
  %128 = load double, ptr %19, align 8, !tbaa !11
  br label %129

129:                                              ; preds = %127, %125
  %130 = phi double [ %126, %125 ], [ %128, %127 ]
  store double %130, ptr %32, align 8, !tbaa !11
  br label %131

131:                                              ; preds = %129
  %132 = load i64, ptr %20, align 8, !tbaa !9
  %133 = add nsw i64 %132, 1
  store i64 %133, ptr %20, align 8, !tbaa !9
  br label %99, !llvm.loop !13

134:                                              ; preds = %99
  br label %135

135:                                              ; preds = %134
  %136 = load i64, ptr %21, align 8, !tbaa !9
  %137 = add nsw i64 %136, 1
  store i64 %137, ptr %21, align 8, !tbaa !9
  br label %91, !llvm.loop !15

138:                                              ; preds = %91
  br label %190

139:                                              ; preds = %85
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = sub nsw i64 %141, 1
  store i64 %142, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %143

143:                                              ; preds = %186, %139
  %144 = load i64, ptr %21, align 8, !tbaa !9
  %145 = load i64, ptr %14, align 8, !tbaa !9
  %146 = icmp sle i64 %144, %145
  br i1 %146, label %147, label %189

147:                                              ; preds = %143
  %148 = load i64, ptr %22, align 8, !tbaa !9
  %149 = sub nsw i64 %148, 1
  store i64 %149, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %150

150:                                              ; preds = %182, %147
  %151 = load i64, ptr %20, align 8, !tbaa !9
  %152 = load i64, ptr %15, align 8, !tbaa !9
  %153 = icmp sle i64 %151, %152
  br i1 %153, label %154, label %185

154:                                              ; preds = %150
  %155 = load double, ptr %32, align 8, !tbaa !11
  store double %155, ptr %18, align 8, !tbaa !11
  %156 = load ptr, ptr %12, align 8, !tbaa !5
  %157 = load i64, ptr %20, align 8, !tbaa !9
  %158 = load i64, ptr %21, align 8, !tbaa !9
  %159 = load i64, ptr %27, align 8, !tbaa !9
  %160 = mul nsw i64 %158, %159
  %161 = add nsw i64 %157, %160
  %162 = getelementptr inbounds double, ptr %156, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !11
  store double %163, ptr %17, align 8, !tbaa !11
  %164 = load double, ptr %17, align 8, !tbaa !11
  %165 = fcmp oge double %164, 0.000000e+00
  br i1 %165, label %166, label %168

166:                                              ; preds = %154
  %167 = load double, ptr %17, align 8, !tbaa !11
  br label %171

168:                                              ; preds = %154
  %169 = load double, ptr %17, align 8, !tbaa !11
  %170 = fneg double %169
  br label %171

171:                                              ; preds = %168, %166
  %172 = phi double [ %167, %166 ], [ %170, %168 ]
  store double %172, ptr %19, align 8, !tbaa !11
  %173 = load double, ptr %18, align 8, !tbaa !11
  %174 = load double, ptr %19, align 8, !tbaa !11
  %175 = fcmp oge double %173, %174
  br i1 %175, label %176, label %178

176:                                              ; preds = %171
  %177 = load double, ptr %18, align 8, !tbaa !11
  br label %180

178:                                              ; preds = %171
  %179 = load double, ptr %19, align 8, !tbaa !11
  br label %180

180:                                              ; preds = %178, %176
  %181 = phi double [ %177, %176 ], [ %179, %178 ]
  store double %181, ptr %32, align 8, !tbaa !11
  br label %182

182:                                              ; preds = %180
  %183 = load i64, ptr %20, align 8, !tbaa !9
  %184 = add nsw i64 %183, 1
  store i64 %184, ptr %20, align 8, !tbaa !9
  br label %150, !llvm.loop !16

185:                                              ; preds = %150
  br label %186

186:                                              ; preds = %185
  %187 = load i64, ptr %21, align 8, !tbaa !9
  %188 = add nsw i64 %187, 1
  store i64 %188, ptr %21, align 8, !tbaa !9
  br label %143, !llvm.loop !17

189:                                              ; preds = %143
  br label %190

190:                                              ; preds = %189, %138
  br label %295

191:                                              ; preds = %78
  %192 = load i64, ptr %28, align 8, !tbaa !9
  %193 = icmp eq i64 %192, 1
  br i1 %193, label %194, label %244

194:                                              ; preds = %191
  %195 = load i64, ptr %22, align 8, !tbaa !9
  %196 = sub nsw i64 %195, 1
  store i64 %196, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %240, %194
  %198 = load i64, ptr %21, align 8, !tbaa !9
  %199 = load i64, ptr %14, align 8, !tbaa !9
  %200 = icmp sle i64 %198, %199
  br i1 %200, label %201, label %243

201:                                              ; preds = %197
  %202 = load ptr, ptr %11, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  store i64 %203, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %236, %201
  %205 = load i64, ptr %20, align 8, !tbaa !9
  %206 = load i64, ptr %15, align 8, !tbaa !9
  %207 = icmp sle i64 %205, %206
  br i1 %207, label %208, label %239

208:                                              ; preds = %204
  %209 = load double, ptr %32, align 8, !tbaa !11
  store double %209, ptr %18, align 8, !tbaa !11
  %210 = load ptr, ptr %12, align 8, !tbaa !5
  %211 = load i64, ptr %20, align 8, !tbaa !9
  %212 = load i64, ptr %21, align 8, !tbaa !9
  %213 = load i64, ptr %27, align 8, !tbaa !9
  %214 = mul nsw i64 %212, %213
  %215 = add nsw i64 %211, %214
  %216 = getelementptr inbounds double, ptr %210, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !11
  store double %217, ptr %17, align 8, !tbaa !11
  %218 = load double, ptr %17, align 8, !tbaa !11
  %219 = fcmp oge double %218, 0.000000e+00
  br i1 %219, label %220, label %222

220:                                              ; preds = %208
  %221 = load double, ptr %17, align 8, !tbaa !11
  br label %225

222:                                              ; preds = %208
  %223 = load double, ptr %17, align 8, !tbaa !11
  %224 = fneg double %223
  br label %225

225:                                              ; preds = %222, %220
  %226 = phi double [ %221, %220 ], [ %224, %222 ]
  store double %226, ptr %19, align 8, !tbaa !11
  %227 = load double, ptr %18, align 8, !tbaa !11
  %228 = load double, ptr %19, align 8, !tbaa !11
  %229 = fcmp oge double %227, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %225
  %231 = load double, ptr %18, align 8, !tbaa !11
  br label %234

232:                                              ; preds = %225
  %233 = load double, ptr %19, align 8, !tbaa !11
  br label %234

234:                                              ; preds = %232, %230
  %235 = phi double [ %231, %230 ], [ %233, %232 ]
  store double %235, ptr %32, align 8, !tbaa !11
  br label %236

236:                                              ; preds = %234
  %237 = load i64, ptr %20, align 8, !tbaa !9
  %238 = add nsw i64 %237, 1
  store i64 %238, ptr %20, align 8, !tbaa !9
  br label %204, !llvm.loop !18

239:                                              ; preds = %204
  br label %240

240:                                              ; preds = %239
  %241 = load i64, ptr %21, align 8, !tbaa !9
  %242 = add nsw i64 %241, 1
  store i64 %242, ptr %21, align 8, !tbaa !9
  br label %197, !llvm.loop !19

243:                                              ; preds = %197
  br label %294

244:                                              ; preds = %191
  %245 = load ptr, ptr %11, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  store i64 %246, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %247

247:                                              ; preds = %290, %244
  %248 = load i64, ptr %21, align 8, !tbaa !9
  %249 = load i64, ptr %14, align 8, !tbaa !9
  %250 = icmp sle i64 %248, %249
  br i1 %250, label %251, label %293

251:                                              ; preds = %247
  %252 = load i64, ptr %22, align 8, !tbaa !9
  %253 = sub nsw i64 %252, 1
  store i64 %253, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %286, %251
  %255 = load i64, ptr %20, align 8, !tbaa !9
  %256 = load i64, ptr %15, align 8, !tbaa !9
  %257 = icmp sle i64 %255, %256
  br i1 %257, label %258, label %289

258:                                              ; preds = %254
  %259 = load double, ptr %32, align 8, !tbaa !11
  store double %259, ptr %18, align 8, !tbaa !11
  %260 = load ptr, ptr %12, align 8, !tbaa !5
  %261 = load i64, ptr %20, align 8, !tbaa !9
  %262 = load i64, ptr %21, align 8, !tbaa !9
  %263 = load i64, ptr %27, align 8, !tbaa !9
  %264 = mul nsw i64 %262, %263
  %265 = add nsw i64 %261, %264
  %266 = getelementptr inbounds double, ptr %260, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !11
  store double %267, ptr %17, align 8, !tbaa !11
  %268 = load double, ptr %17, align 8, !tbaa !11
  %269 = fcmp oge double %268, 0.000000e+00
  br i1 %269, label %270, label %272

270:                                              ; preds = %258
  %271 = load double, ptr %17, align 8, !tbaa !11
  br label %275

272:                                              ; preds = %258
  %273 = load double, ptr %17, align 8, !tbaa !11
  %274 = fneg double %273
  br label %275

275:                                              ; preds = %272, %270
  %276 = phi double [ %271, %270 ], [ %274, %272 ]
  store double %276, ptr %19, align 8, !tbaa !11
  %277 = load double, ptr %18, align 8, !tbaa !11
  %278 = load double, ptr %19, align 8, !tbaa !11
  %279 = fcmp oge double %277, %278
  br i1 %279, label %280, label %282

280:                                              ; preds = %275
  %281 = load double, ptr %18, align 8, !tbaa !11
  br label %284

282:                                              ; preds = %275
  %283 = load double, ptr %19, align 8, !tbaa !11
  br label %284

284:                                              ; preds = %282, %280
  %285 = phi double [ %281, %280 ], [ %283, %282 ]
  store double %285, ptr %32, align 8, !tbaa !11
  br label %286

286:                                              ; preds = %284
  %287 = load i64, ptr %20, align 8, !tbaa !9
  %288 = add nsw i64 %287, 1
  store i64 %288, ptr %20, align 8, !tbaa !9
  br label %254, !llvm.loop !20

289:                                              ; preds = %254
  br label %290

290:                                              ; preds = %289
  %291 = load i64, ptr %21, align 8, !tbaa !9
  %292 = add nsw i64 %291, 1
  store i64 %292, ptr %21, align 8, !tbaa !9
  br label %247, !llvm.loop !21

293:                                              ; preds = %247
  br label %294

294:                                              ; preds = %293, %243
  br label %295

295:                                              ; preds = %294, %190
  br label %2925

296:                                              ; preds = %74
  %297 = load ptr, ptr %8, align 8, !tbaa !5
  %298 = call i64 @lsame_(ptr noundef %297, ptr noundef @.str.3)
  %299 = icmp ne i64 %298, 0
  br i1 %299, label %309, label %300

300:                                              ; preds = %296
  %301 = load ptr, ptr %8, align 8, !tbaa !5
  %302 = call i64 @lsame_(ptr noundef %301, ptr noundef @.str.4)
  %303 = icmp ne i64 %302, 0
  br i1 %303, label %309, label %304

304:                                              ; preds = %300
  %305 = load ptr, ptr %8, align 8, !tbaa !5
  %306 = load i8, ptr %305, align 1, !tbaa !22
  %307 = zext i8 %306 to i32
  %308 = icmp eq i32 %307, 49
  br i1 %308, label %309, label %2316

309:                                              ; preds = %304, %300, %296
  %310 = load i64, ptr %28, align 8, !tbaa !9
  %311 = icmp eq i64 %310, 1
  br i1 %311, label %312, label %1026

312:                                              ; preds = %309
  %313 = load ptr, ptr %11, align 8, !tbaa !5
  %314 = load i64, ptr %313, align 8, !tbaa !9
  %315 = sdiv i64 %314, 2
  store i64 %315, ptr %22, align 8, !tbaa !9
  %316 = load i64, ptr %29, align 8, !tbaa !9
  %317 = icmp eq i64 %316, 1
  br i1 %317, label %318, label %678

318:                                              ; preds = %312
  %319 = load i64, ptr %30, align 8, !tbaa !9
  %320 = icmp eq i64 %319, 0
  br i1 %320, label %321, label %498

321:                                              ; preds = %318
  %322 = load i64, ptr %22, align 8, !tbaa !9
  %323 = sub nsw i64 %322, 1
  store i64 %323, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %324

324:                                              ; preds = %332, %321
  %325 = load i64, ptr %20, align 8, !tbaa !9
  %326 = load i64, ptr %14, align 8, !tbaa !9
  %327 = icmp sle i64 %325, %326
  br i1 %327, label %328, label %335

328:                                              ; preds = %324
  %329 = load ptr, ptr %13, align 8, !tbaa !5
  %330 = load i64, ptr %20, align 8, !tbaa !9
  %331 = getelementptr inbounds double, ptr %329, i64 %330
  store double 0.000000e+00, ptr %331, align 8, !tbaa !11
  br label %332

332:                                              ; preds = %328
  %333 = load i64, ptr %20, align 8, !tbaa !9
  %334 = add nsw i64 %333, 1
  store i64 %334, ptr %20, align 8, !tbaa !9
  br label %324, !llvm.loop !23

335:                                              ; preds = %324
  %336 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %336, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %337

337:                                              ; preds = %485, %335
  %338 = load i64, ptr %21, align 8, !tbaa !9
  %339 = load i64, ptr %14, align 8, !tbaa !9
  %340 = icmp sle i64 %338, %339
  br i1 %340, label %341, label %488

341:                                              ; preds = %337
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %342 = load i64, ptr %22, align 8, !tbaa !9
  %343 = load i64, ptr %21, align 8, !tbaa !9
  %344 = add nsw i64 %342, %343
  %345 = sub nsw i64 %344, 1
  store i64 %345, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %346

346:                                              ; preds = %377, %341
  %347 = load i64, ptr %20, align 8, !tbaa !9
  %348 = load i64, ptr %15, align 8, !tbaa !9
  %349 = icmp sle i64 %347, %348
  br i1 %349, label %350, label %380

350:                                              ; preds = %346
  %351 = load ptr, ptr %12, align 8, !tbaa !5
  %352 = load i64, ptr %20, align 8, !tbaa !9
  %353 = load i64, ptr %21, align 8, !tbaa !9
  %354 = load i64, ptr %27, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %352, %355
  %357 = getelementptr inbounds double, ptr %351, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !11
  store double %358, ptr %17, align 8, !tbaa !11
  %359 = load double, ptr %17, align 8, !tbaa !11
  %360 = fcmp oge double %359, 0.000000e+00
  br i1 %360, label %361, label %363

361:                                              ; preds = %350
  %362 = load double, ptr %17, align 8, !tbaa !11
  br label %366

363:                                              ; preds = %350
  %364 = load double, ptr %17, align 8, !tbaa !11
  %365 = fneg double %364
  br label %366

366:                                              ; preds = %363, %361
  %367 = phi double [ %362, %361 ], [ %365, %363 ]
  store double %367, ptr %26, align 8, !tbaa !11
  %368 = load double, ptr %26, align 8, !tbaa !11
  %369 = load double, ptr %24, align 8, !tbaa !11
  %370 = fadd double %369, %368
  store double %370, ptr %24, align 8, !tbaa !11
  %371 = load double, ptr %26, align 8, !tbaa !11
  %372 = load ptr, ptr %13, align 8, !tbaa !5
  %373 = load i64, ptr %20, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %372, i64 %373
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = fadd double %375, %371
  store double %376, ptr %374, align 8, !tbaa !11
  br label %377

377:                                              ; preds = %366
  %378 = load i64, ptr %20, align 8, !tbaa !9
  %379 = add nsw i64 %378, 1
  store i64 %379, ptr %20, align 8, !tbaa !9
  br label %346, !llvm.loop !24

380:                                              ; preds = %346
  %381 = load ptr, ptr %12, align 8, !tbaa !5
  %382 = load i64, ptr %20, align 8, !tbaa !9
  %383 = load i64, ptr %21, align 8, !tbaa !9
  %384 = load i64, ptr %27, align 8, !tbaa !9
  %385 = mul nsw i64 %383, %384
  %386 = add nsw i64 %382, %385
  %387 = getelementptr inbounds double, ptr %381, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !11
  store double %388, ptr %17, align 8, !tbaa !11
  %389 = load double, ptr %17, align 8, !tbaa !11
  %390 = fcmp oge double %389, 0.000000e+00
  br i1 %390, label %391, label %393

391:                                              ; preds = %380
  %392 = load double, ptr %17, align 8, !tbaa !11
  br label %396

393:                                              ; preds = %380
  %394 = load double, ptr %17, align 8, !tbaa !11
  %395 = fneg double %394
  br label %396

396:                                              ; preds = %393, %391
  %397 = phi double [ %392, %391 ], [ %395, %393 ]
  store double %397, ptr %26, align 8, !tbaa !11
  %398 = load double, ptr %24, align 8, !tbaa !11
  %399 = load double, ptr %26, align 8, !tbaa !11
  %400 = fadd double %398, %399
  %401 = load ptr, ptr %13, align 8, !tbaa !5
  %402 = load i64, ptr %21, align 8, !tbaa !9
  %403 = load i64, ptr %22, align 8, !tbaa !9
  %404 = add nsw i64 %402, %403
  %405 = getelementptr inbounds double, ptr %401, i64 %404
  store double %400, ptr %405, align 8, !tbaa !11
  %406 = load i64, ptr %20, align 8, !tbaa !9
  %407 = load i64, ptr %22, align 8, !tbaa !9
  %408 = load i64, ptr %22, align 8, !tbaa !9
  %409 = add nsw i64 %407, %408
  %410 = icmp eq i64 %406, %409
  br i1 %410, label %411, label %412

411:                                              ; preds = %396
  br label %489

412:                                              ; preds = %396
  %413 = load i64, ptr %20, align 8, !tbaa !9
  %414 = add nsw i64 %413, 1
  store i64 %414, ptr %20, align 8, !tbaa !9
  %415 = load ptr, ptr %12, align 8, !tbaa !5
  %416 = load i64, ptr %20, align 8, !tbaa !9
  %417 = load i64, ptr %21, align 8, !tbaa !9
  %418 = load i64, ptr %27, align 8, !tbaa !9
  %419 = mul nsw i64 %417, %418
  %420 = add nsw i64 %416, %419
  %421 = getelementptr inbounds double, ptr %415, i64 %420
  %422 = load double, ptr %421, align 8, !tbaa !11
  store double %422, ptr %17, align 8, !tbaa !11
  %423 = load double, ptr %17, align 8, !tbaa !11
  %424 = fcmp oge double %423, 0.000000e+00
  br i1 %424, label %425, label %427

425:                                              ; preds = %412
  %426 = load double, ptr %17, align 8, !tbaa !11
  br label %430

427:                                              ; preds = %412
  %428 = load double, ptr %17, align 8, !tbaa !11
  %429 = fneg double %428
  br label %430

430:                                              ; preds = %427, %425
  %431 = phi double [ %426, %425 ], [ %429, %427 ]
  store double %431, ptr %26, align 8, !tbaa !11
  %432 = load double, ptr %26, align 8, !tbaa !11
  %433 = load ptr, ptr %13, align 8, !tbaa !5
  %434 = load i64, ptr %21, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !11
  %437 = fadd double %436, %432
  store double %437, ptr %435, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %438 = load i64, ptr %22, align 8, !tbaa !9
  %439 = sub nsw i64 %438, 1
  store i64 %439, ptr %15, align 8, !tbaa !9
  %440 = load i64, ptr %21, align 8, !tbaa !9
  %441 = add nsw i64 %440, 1
  store i64 %441, ptr %23, align 8, !tbaa !9
  br label %442

442:                                              ; preds = %475, %430
  %443 = load i64, ptr %23, align 8, !tbaa !9
  %444 = load i64, ptr %15, align 8, !tbaa !9
  %445 = icmp sle i64 %443, %444
  br i1 %445, label %446, label %478

446:                                              ; preds = %442
  %447 = load i64, ptr %20, align 8, !tbaa !9
  %448 = add nsw i64 %447, 1
  store i64 %448, ptr %20, align 8, !tbaa !9
  %449 = load ptr, ptr %12, align 8, !tbaa !5
  %450 = load i64, ptr %20, align 8, !tbaa !9
  %451 = load i64, ptr %21, align 8, !tbaa !9
  %452 = load i64, ptr %27, align 8, !tbaa !9
  %453 = mul nsw i64 %451, %452
  %454 = add nsw i64 %450, %453
  %455 = getelementptr inbounds double, ptr %449, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !11
  store double %456, ptr %17, align 8, !tbaa !11
  %457 = load double, ptr %17, align 8, !tbaa !11
  %458 = fcmp oge double %457, 0.000000e+00
  br i1 %458, label %459, label %461

459:                                              ; preds = %446
  %460 = load double, ptr %17, align 8, !tbaa !11
  br label %464

461:                                              ; preds = %446
  %462 = load double, ptr %17, align 8, !tbaa !11
  %463 = fneg double %462
  br label %464

464:                                              ; preds = %461, %459
  %465 = phi double [ %460, %459 ], [ %463, %461 ]
  store double %465, ptr %26, align 8, !tbaa !11
  %466 = load double, ptr %26, align 8, !tbaa !11
  %467 = load double, ptr %24, align 8, !tbaa !11
  %468 = fadd double %467, %466
  store double %468, ptr %24, align 8, !tbaa !11
  %469 = load double, ptr %26, align 8, !tbaa !11
  %470 = load ptr, ptr %13, align 8, !tbaa !5
  %471 = load i64, ptr %23, align 8, !tbaa !9
  %472 = getelementptr inbounds double, ptr %470, i64 %471
  %473 = load double, ptr %472, align 8, !tbaa !11
  %474 = fadd double %473, %469
  store double %474, ptr %472, align 8, !tbaa !11
  br label %475

475:                                              ; preds = %464
  %476 = load i64, ptr %23, align 8, !tbaa !9
  %477 = add nsw i64 %476, 1
  store i64 %477, ptr %23, align 8, !tbaa !9
  br label %442, !llvm.loop !25

478:                                              ; preds = %442
  %479 = load double, ptr %24, align 8, !tbaa !11
  %480 = load ptr, ptr %13, align 8, !tbaa !5
  %481 = load i64, ptr %21, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !11
  %484 = fadd double %483, %479
  store double %484, ptr %482, align 8, !tbaa !11
  br label %485

485:                                              ; preds = %478
  %486 = load i64, ptr %21, align 8, !tbaa !9
  %487 = add nsw i64 %486, 1
  store i64 %487, ptr %21, align 8, !tbaa !9
  br label %337, !llvm.loop !26

488:                                              ; preds = %337
  br label %489

489:                                              ; preds = %488, %411
  %490 = load ptr, ptr %11, align 8, !tbaa !5
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  %492 = call i64 @f2c_idamax(ptr noundef %490, ptr noundef %491, ptr noundef @c__1)
  store i64 %492, ptr %20, align 8, !tbaa !9
  %493 = load ptr, ptr %13, align 8, !tbaa !5
  %494 = load i64, ptr %20, align 8, !tbaa !9
  %495 = sub nsw i64 %494, 1
  %496 = getelementptr inbounds double, ptr %493, i64 %495
  %497 = load double, ptr %496, align 8, !tbaa !11
  store double %497, ptr %32, align 8, !tbaa !11
  br label %677

498:                                              ; preds = %318
  %499 = load i64, ptr %22, align 8, !tbaa !9
  %500 = add nsw i64 %499, 1
  store i64 %500, ptr %22, align 8, !tbaa !9
  %501 = load ptr, ptr %11, align 8, !tbaa !5
  %502 = load i64, ptr %501, align 8, !tbaa !9
  %503 = sub nsw i64 %502, 1
  store i64 %503, ptr %14, align 8, !tbaa !9
  %504 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %504, ptr %20, align 8, !tbaa !9
  br label %505

505:                                              ; preds = %513, %498
  %506 = load i64, ptr %20, align 8, !tbaa !9
  %507 = load i64, ptr %14, align 8, !tbaa !9
  %508 = icmp sle i64 %506, %507
  br i1 %508, label %509, label %516

509:                                              ; preds = %505
  %510 = load ptr, ptr %13, align 8, !tbaa !5
  %511 = load i64, ptr %20, align 8, !tbaa !9
  %512 = getelementptr inbounds double, ptr %510, i64 %511
  store double 0.000000e+00, ptr %512, align 8, !tbaa !11
  br label %513

513:                                              ; preds = %509
  %514 = load i64, ptr %20, align 8, !tbaa !9
  %515 = add nsw i64 %514, 1
  store i64 %515, ptr %20, align 8, !tbaa !9
  br label %505, !llvm.loop !27

516:                                              ; preds = %505
  %517 = load i64, ptr %22, align 8, !tbaa !9
  %518 = sub nsw i64 %517, 1
  store i64 %518, ptr %21, align 8, !tbaa !9
  br label %519

519:                                              ; preds = %665, %516
  %520 = load i64, ptr %21, align 8, !tbaa !9
  %521 = icmp sge i64 %520, 0
  br i1 %521, label %522, label %668

522:                                              ; preds = %519
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %523 = load i64, ptr %21, align 8, !tbaa !9
  %524 = sub nsw i64 %523, 2
  store i64 %524, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %525

525:                                              ; preds = %558, %522
  %526 = load i64, ptr %20, align 8, !tbaa !9
  %527 = load i64, ptr %14, align 8, !tbaa !9
  %528 = icmp sle i64 %526, %527
  br i1 %528, label %529, label %561

529:                                              ; preds = %525
  %530 = load ptr, ptr %12, align 8, !tbaa !5
  %531 = load i64, ptr %20, align 8, !tbaa !9
  %532 = load i64, ptr %21, align 8, !tbaa !9
  %533 = load i64, ptr %27, align 8, !tbaa !9
  %534 = mul nsw i64 %532, %533
  %535 = add nsw i64 %531, %534
  %536 = getelementptr inbounds double, ptr %530, i64 %535
  %537 = load double, ptr %536, align 8, !tbaa !11
  store double %537, ptr %17, align 8, !tbaa !11
  %538 = load double, ptr %17, align 8, !tbaa !11
  %539 = fcmp oge double %538, 0.000000e+00
  br i1 %539, label %540, label %542

540:                                              ; preds = %529
  %541 = load double, ptr %17, align 8, !tbaa !11
  br label %545

542:                                              ; preds = %529
  %543 = load double, ptr %17, align 8, !tbaa !11
  %544 = fneg double %543
  br label %545

545:                                              ; preds = %542, %540
  %546 = phi double [ %541, %540 ], [ %544, %542 ]
  store double %546, ptr %26, align 8, !tbaa !11
  %547 = load double, ptr %26, align 8, !tbaa !11
  %548 = load double, ptr %24, align 8, !tbaa !11
  %549 = fadd double %548, %547
  store double %549, ptr %24, align 8, !tbaa !11
  %550 = load double, ptr %26, align 8, !tbaa !11
  %551 = load ptr, ptr %13, align 8, !tbaa !5
  %552 = load i64, ptr %20, align 8, !tbaa !9
  %553 = load i64, ptr %22, align 8, !tbaa !9
  %554 = add nsw i64 %552, %553
  %555 = getelementptr inbounds double, ptr %551, i64 %554
  %556 = load double, ptr %555, align 8, !tbaa !11
  %557 = fadd double %556, %550
  store double %557, ptr %555, align 8, !tbaa !11
  br label %558

558:                                              ; preds = %545
  %559 = load i64, ptr %20, align 8, !tbaa !9
  %560 = add nsw i64 %559, 1
  store i64 %560, ptr %20, align 8, !tbaa !9
  br label %525, !llvm.loop !28

561:                                              ; preds = %525
  %562 = load i64, ptr %21, align 8, !tbaa !9
  %563 = icmp sgt i64 %562, 0
  br i1 %563, label %564, label %595

564:                                              ; preds = %561
  %565 = load ptr, ptr %12, align 8, !tbaa !5
  %566 = load i64, ptr %20, align 8, !tbaa !9
  %567 = load i64, ptr %21, align 8, !tbaa !9
  %568 = load i64, ptr %27, align 8, !tbaa !9
  %569 = mul nsw i64 %567, %568
  %570 = add nsw i64 %566, %569
  %571 = getelementptr inbounds double, ptr %565, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !11
  store double %572, ptr %17, align 8, !tbaa !11
  %573 = load double, ptr %17, align 8, !tbaa !11
  %574 = fcmp oge double %573, 0.000000e+00
  br i1 %574, label %575, label %577

575:                                              ; preds = %564
  %576 = load double, ptr %17, align 8, !tbaa !11
  br label %580

577:                                              ; preds = %564
  %578 = load double, ptr %17, align 8, !tbaa !11
  %579 = fneg double %578
  br label %580

580:                                              ; preds = %577, %575
  %581 = phi double [ %576, %575 ], [ %579, %577 ]
  store double %581, ptr %26, align 8, !tbaa !11
  %582 = load double, ptr %26, align 8, !tbaa !11
  %583 = load double, ptr %24, align 8, !tbaa !11
  %584 = fadd double %583, %582
  store double %584, ptr %24, align 8, !tbaa !11
  %585 = load double, ptr %24, align 8, !tbaa !11
  %586 = load ptr, ptr %13, align 8, !tbaa !5
  %587 = load i64, ptr %20, align 8, !tbaa !9
  %588 = load i64, ptr %22, align 8, !tbaa !9
  %589 = add nsw i64 %587, %588
  %590 = getelementptr inbounds double, ptr %586, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !11
  %592 = fadd double %591, %585
  store double %592, ptr %590, align 8, !tbaa !11
  %593 = load i64, ptr %20, align 8, !tbaa !9
  %594 = add nsw i64 %593, 1
  store i64 %594, ptr %20, align 8, !tbaa !9
  br label %595

595:                                              ; preds = %580, %561
  %596 = load ptr, ptr %12, align 8, !tbaa !5
  %597 = load i64, ptr %20, align 8, !tbaa !9
  %598 = load i64, ptr %21, align 8, !tbaa !9
  %599 = load i64, ptr %27, align 8, !tbaa !9
  %600 = mul nsw i64 %598, %599
  %601 = add nsw i64 %597, %600
  %602 = getelementptr inbounds double, ptr %596, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !11
  store double %603, ptr %17, align 8, !tbaa !11
  %604 = load double, ptr %17, align 8, !tbaa !11
  %605 = fcmp oge double %604, 0.000000e+00
  br i1 %605, label %606, label %608

606:                                              ; preds = %595
  %607 = load double, ptr %17, align 8, !tbaa !11
  br label %611

608:                                              ; preds = %595
  %609 = load double, ptr %17, align 8, !tbaa !11
  %610 = fneg double %609
  br label %611

611:                                              ; preds = %608, %606
  %612 = phi double [ %607, %606 ], [ %610, %608 ]
  store double %612, ptr %26, align 8, !tbaa !11
  %613 = load double, ptr %26, align 8, !tbaa !11
  %614 = load ptr, ptr %13, align 8, !tbaa !5
  %615 = load i64, ptr %21, align 8, !tbaa !9
  %616 = getelementptr inbounds double, ptr %614, i64 %615
  store double %613, ptr %616, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %617 = load ptr, ptr %11, align 8, !tbaa !5
  %618 = load i64, ptr %617, align 8, !tbaa !9
  %619 = sub nsw i64 %618, 1
  store i64 %619, ptr %14, align 8, !tbaa !9
  %620 = load i64, ptr %21, align 8, !tbaa !9
  %621 = add nsw i64 %620, 1
  store i64 %621, ptr %23, align 8, !tbaa !9
  br label %622

622:                                              ; preds = %655, %611
  %623 = load i64, ptr %23, align 8, !tbaa !9
  %624 = load i64, ptr %14, align 8, !tbaa !9
  %625 = icmp sle i64 %623, %624
  br i1 %625, label %626, label %658

626:                                              ; preds = %622
  %627 = load i64, ptr %20, align 8, !tbaa !9
  %628 = add nsw i64 %627, 1
  store i64 %628, ptr %20, align 8, !tbaa !9
  %629 = load ptr, ptr %12, align 8, !tbaa !5
  %630 = load i64, ptr %20, align 8, !tbaa !9
  %631 = load i64, ptr %21, align 8, !tbaa !9
  %632 = load i64, ptr %27, align 8, !tbaa !9
  %633 = mul nsw i64 %631, %632
  %634 = add nsw i64 %630, %633
  %635 = getelementptr inbounds double, ptr %629, i64 %634
  %636 = load double, ptr %635, align 8, !tbaa !11
  store double %636, ptr %17, align 8, !tbaa !11
  %637 = load double, ptr %17, align 8, !tbaa !11
  %638 = fcmp oge double %637, 0.000000e+00
  br i1 %638, label %639, label %641

639:                                              ; preds = %626
  %640 = load double, ptr %17, align 8, !tbaa !11
  br label %644

641:                                              ; preds = %626
  %642 = load double, ptr %17, align 8, !tbaa !11
  %643 = fneg double %642
  br label %644

644:                                              ; preds = %641, %639
  %645 = phi double [ %640, %639 ], [ %643, %641 ]
  store double %645, ptr %26, align 8, !tbaa !11
  %646 = load double, ptr %26, align 8, !tbaa !11
  %647 = load double, ptr %24, align 8, !tbaa !11
  %648 = fadd double %647, %646
  store double %648, ptr %24, align 8, !tbaa !11
  %649 = load double, ptr %26, align 8, !tbaa !11
  %650 = load ptr, ptr %13, align 8, !tbaa !5
  %651 = load i64, ptr %23, align 8, !tbaa !9
  %652 = getelementptr inbounds double, ptr %650, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !11
  %654 = fadd double %653, %649
  store double %654, ptr %652, align 8, !tbaa !11
  br label %655

655:                                              ; preds = %644
  %656 = load i64, ptr %23, align 8, !tbaa !9
  %657 = add nsw i64 %656, 1
  store i64 %657, ptr %23, align 8, !tbaa !9
  br label %622, !llvm.loop !29

658:                                              ; preds = %622
  %659 = load double, ptr %24, align 8, !tbaa !11
  %660 = load ptr, ptr %13, align 8, !tbaa !5
  %661 = load i64, ptr %21, align 8, !tbaa !9
  %662 = getelementptr inbounds double, ptr %660, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !11
  %664 = fadd double %663, %659
  store double %664, ptr %662, align 8, !tbaa !11
  br label %665

665:                                              ; preds = %658
  %666 = load i64, ptr %21, align 8, !tbaa !9
  %667 = add nsw i64 %666, -1
  store i64 %667, ptr %21, align 8, !tbaa !9
  br label %519, !llvm.loop !30

668:                                              ; preds = %519
  %669 = load ptr, ptr %11, align 8, !tbaa !5
  %670 = load ptr, ptr %13, align 8, !tbaa !5
  %671 = call i64 @f2c_idamax(ptr noundef %669, ptr noundef %670, ptr noundef @c__1)
  store i64 %671, ptr %20, align 8, !tbaa !9
  %672 = load ptr, ptr %13, align 8, !tbaa !5
  %673 = load i64, ptr %20, align 8, !tbaa !9
  %674 = sub nsw i64 %673, 1
  %675 = getelementptr inbounds double, ptr %672, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !11
  store double %676, ptr %32, align 8, !tbaa !11
  br label %677

677:                                              ; preds = %668, %489
  br label %1025

678:                                              ; preds = %312
  %679 = load i64, ptr %30, align 8, !tbaa !9
  %680 = icmp eq i64 %679, 0
  br i1 %680, label %681, label %851

681:                                              ; preds = %678
  %682 = load i64, ptr %22, align 8, !tbaa !9
  %683 = sub nsw i64 %682, 1
  store i64 %683, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %684

684:                                              ; preds = %692, %681
  %685 = load i64, ptr %20, align 8, !tbaa !9
  %686 = load i64, ptr %14, align 8, !tbaa !9
  %687 = icmp sle i64 %685, %686
  br i1 %687, label %688, label %695

688:                                              ; preds = %684
  %689 = load ptr, ptr %13, align 8, !tbaa !5
  %690 = load i64, ptr %20, align 8, !tbaa !9
  %691 = getelementptr inbounds double, ptr %689, i64 %690
  store double 0.000000e+00, ptr %691, align 8, !tbaa !11
  br label %692

692:                                              ; preds = %688
  %693 = load i64, ptr %20, align 8, !tbaa !9
  %694 = add nsw i64 %693, 1
  store i64 %694, ptr %20, align 8, !tbaa !9
  br label %684, !llvm.loop !31

695:                                              ; preds = %684
  %696 = load i64, ptr %22, align 8, !tbaa !9
  %697 = sub nsw i64 %696, 1
  store i64 %697, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %698

698:                                              ; preds = %839, %695
  %699 = load i64, ptr %21, align 8, !tbaa !9
  %700 = load i64, ptr %14, align 8, !tbaa !9
  %701 = icmp sle i64 %699, %700
  br i1 %701, label %702, label %842

702:                                              ; preds = %698
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %703 = load i64, ptr %22, align 8, !tbaa !9
  %704 = load i64, ptr %21, align 8, !tbaa !9
  %705 = add nsw i64 %703, %704
  %706 = sub nsw i64 %705, 1
  store i64 %706, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %707

707:                                              ; preds = %738, %702
  %708 = load i64, ptr %20, align 8, !tbaa !9
  %709 = load i64, ptr %15, align 8, !tbaa !9
  %710 = icmp sle i64 %708, %709
  br i1 %710, label %711, label %741

711:                                              ; preds = %707
  %712 = load ptr, ptr %12, align 8, !tbaa !5
  %713 = load i64, ptr %20, align 8, !tbaa !9
  %714 = load i64, ptr %21, align 8, !tbaa !9
  %715 = load i64, ptr %27, align 8, !tbaa !9
  %716 = mul nsw i64 %714, %715
  %717 = add nsw i64 %713, %716
  %718 = getelementptr inbounds double, ptr %712, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !11
  store double %719, ptr %17, align 8, !tbaa !11
  %720 = load double, ptr %17, align 8, !tbaa !11
  %721 = fcmp oge double %720, 0.000000e+00
  br i1 %721, label %722, label %724

722:                                              ; preds = %711
  %723 = load double, ptr %17, align 8, !tbaa !11
  br label %727

724:                                              ; preds = %711
  %725 = load double, ptr %17, align 8, !tbaa !11
  %726 = fneg double %725
  br label %727

727:                                              ; preds = %724, %722
  %728 = phi double [ %723, %722 ], [ %726, %724 ]
  store double %728, ptr %26, align 8, !tbaa !11
  %729 = load double, ptr %26, align 8, !tbaa !11
  %730 = load double, ptr %24, align 8, !tbaa !11
  %731 = fadd double %730, %729
  store double %731, ptr %24, align 8, !tbaa !11
  %732 = load double, ptr %26, align 8, !tbaa !11
  %733 = load ptr, ptr %13, align 8, !tbaa !5
  %734 = load i64, ptr %20, align 8, !tbaa !9
  %735 = getelementptr inbounds double, ptr %733, i64 %734
  %736 = load double, ptr %735, align 8, !tbaa !11
  %737 = fadd double %736, %732
  store double %737, ptr %735, align 8, !tbaa !11
  br label %738

738:                                              ; preds = %727
  %739 = load i64, ptr %20, align 8, !tbaa !9
  %740 = add nsw i64 %739, 1
  store i64 %740, ptr %20, align 8, !tbaa !9
  br label %707, !llvm.loop !32

741:                                              ; preds = %707
  %742 = load ptr, ptr %12, align 8, !tbaa !5
  %743 = load i64, ptr %20, align 8, !tbaa !9
  %744 = load i64, ptr %21, align 8, !tbaa !9
  %745 = load i64, ptr %27, align 8, !tbaa !9
  %746 = mul nsw i64 %744, %745
  %747 = add nsw i64 %743, %746
  %748 = getelementptr inbounds double, ptr %742, i64 %747
  %749 = load double, ptr %748, align 8, !tbaa !11
  store double %749, ptr %17, align 8, !tbaa !11
  %750 = load double, ptr %17, align 8, !tbaa !11
  %751 = fcmp oge double %750, 0.000000e+00
  br i1 %751, label %752, label %754

752:                                              ; preds = %741
  %753 = load double, ptr %17, align 8, !tbaa !11
  br label %757

754:                                              ; preds = %741
  %755 = load double, ptr %17, align 8, !tbaa !11
  %756 = fneg double %755
  br label %757

757:                                              ; preds = %754, %752
  %758 = phi double [ %753, %752 ], [ %756, %754 ]
  store double %758, ptr %26, align 8, !tbaa !11
  %759 = load double, ptr %24, align 8, !tbaa !11
  %760 = load double, ptr %26, align 8, !tbaa !11
  %761 = fadd double %759, %760
  %762 = load ptr, ptr %13, align 8, !tbaa !5
  %763 = load i64, ptr %21, align 8, !tbaa !9
  %764 = load i64, ptr %22, align 8, !tbaa !9
  %765 = add nsw i64 %763, %764
  %766 = getelementptr inbounds double, ptr %762, i64 %765
  store double %761, ptr %766, align 8, !tbaa !11
  %767 = load i64, ptr %20, align 8, !tbaa !9
  %768 = add nsw i64 %767, 1
  store i64 %768, ptr %20, align 8, !tbaa !9
  %769 = load ptr, ptr %12, align 8, !tbaa !5
  %770 = load i64, ptr %20, align 8, !tbaa !9
  %771 = load i64, ptr %21, align 8, !tbaa !9
  %772 = load i64, ptr %27, align 8, !tbaa !9
  %773 = mul nsw i64 %771, %772
  %774 = add nsw i64 %770, %773
  %775 = getelementptr inbounds double, ptr %769, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  store double %776, ptr %17, align 8, !tbaa !11
  %777 = load double, ptr %17, align 8, !tbaa !11
  %778 = fcmp oge double %777, 0.000000e+00
  br i1 %778, label %779, label %781

779:                                              ; preds = %757
  %780 = load double, ptr %17, align 8, !tbaa !11
  br label %784

781:                                              ; preds = %757
  %782 = load double, ptr %17, align 8, !tbaa !11
  %783 = fneg double %782
  br label %784

784:                                              ; preds = %781, %779
  %785 = phi double [ %780, %779 ], [ %783, %781 ]
  store double %785, ptr %26, align 8, !tbaa !11
  %786 = load double, ptr %26, align 8, !tbaa !11
  %787 = load ptr, ptr %13, align 8, !tbaa !5
  %788 = load i64, ptr %21, align 8, !tbaa !9
  %789 = getelementptr inbounds double, ptr %787, i64 %788
  %790 = load double, ptr %789, align 8, !tbaa !11
  %791 = fadd double %790, %786
  store double %791, ptr %789, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %792 = load i64, ptr %22, align 8, !tbaa !9
  %793 = sub nsw i64 %792, 1
  store i64 %793, ptr %15, align 8, !tbaa !9
  %794 = load i64, ptr %21, align 8, !tbaa !9
  %795 = add nsw i64 %794, 1
  store i64 %795, ptr %23, align 8, !tbaa !9
  br label %796

796:                                              ; preds = %829, %784
  %797 = load i64, ptr %23, align 8, !tbaa !9
  %798 = load i64, ptr %15, align 8, !tbaa !9
  %799 = icmp sle i64 %797, %798
  br i1 %799, label %800, label %832

800:                                              ; preds = %796
  %801 = load i64, ptr %20, align 8, !tbaa !9
  %802 = add nsw i64 %801, 1
  store i64 %802, ptr %20, align 8, !tbaa !9
  %803 = load ptr, ptr %12, align 8, !tbaa !5
  %804 = load i64, ptr %20, align 8, !tbaa !9
  %805 = load i64, ptr %21, align 8, !tbaa !9
  %806 = load i64, ptr %27, align 8, !tbaa !9
  %807 = mul nsw i64 %805, %806
  %808 = add nsw i64 %804, %807
  %809 = getelementptr inbounds double, ptr %803, i64 %808
  %810 = load double, ptr %809, align 8, !tbaa !11
  store double %810, ptr %17, align 8, !tbaa !11
  %811 = load double, ptr %17, align 8, !tbaa !11
  %812 = fcmp oge double %811, 0.000000e+00
  br i1 %812, label %813, label %815

813:                                              ; preds = %800
  %814 = load double, ptr %17, align 8, !tbaa !11
  br label %818

815:                                              ; preds = %800
  %816 = load double, ptr %17, align 8, !tbaa !11
  %817 = fneg double %816
  br label %818

818:                                              ; preds = %815, %813
  %819 = phi double [ %814, %813 ], [ %817, %815 ]
  store double %819, ptr %26, align 8, !tbaa !11
  %820 = load double, ptr %26, align 8, !tbaa !11
  %821 = load double, ptr %24, align 8, !tbaa !11
  %822 = fadd double %821, %820
  store double %822, ptr %24, align 8, !tbaa !11
  %823 = load double, ptr %26, align 8, !tbaa !11
  %824 = load ptr, ptr %13, align 8, !tbaa !5
  %825 = load i64, ptr %23, align 8, !tbaa !9
  %826 = getelementptr inbounds double, ptr %824, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !11
  %828 = fadd double %827, %823
  store double %828, ptr %826, align 8, !tbaa !11
  br label %829

829:                                              ; preds = %818
  %830 = load i64, ptr %23, align 8, !tbaa !9
  %831 = add nsw i64 %830, 1
  store i64 %831, ptr %23, align 8, !tbaa !9
  br label %796, !llvm.loop !33

832:                                              ; preds = %796
  %833 = load double, ptr %24, align 8, !tbaa !11
  %834 = load ptr, ptr %13, align 8, !tbaa !5
  %835 = load i64, ptr %21, align 8, !tbaa !9
  %836 = getelementptr inbounds double, ptr %834, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !11
  %838 = fadd double %837, %833
  store double %838, ptr %836, align 8, !tbaa !11
  br label %839

839:                                              ; preds = %832
  %840 = load i64, ptr %21, align 8, !tbaa !9
  %841 = add nsw i64 %840, 1
  store i64 %841, ptr %21, align 8, !tbaa !9
  br label %698, !llvm.loop !34

842:                                              ; preds = %698
  %843 = load ptr, ptr %11, align 8, !tbaa !5
  %844 = load ptr, ptr %13, align 8, !tbaa !5
  %845 = call i64 @f2c_idamax(ptr noundef %843, ptr noundef %844, ptr noundef @c__1)
  store i64 %845, ptr %20, align 8, !tbaa !9
  %846 = load ptr, ptr %13, align 8, !tbaa !5
  %847 = load i64, ptr %20, align 8, !tbaa !9
  %848 = sub nsw i64 %847, 1
  %849 = getelementptr inbounds double, ptr %846, i64 %848
  %850 = load double, ptr %849, align 8, !tbaa !11
  store double %850, ptr %32, align 8, !tbaa !11
  br label %1024

851:                                              ; preds = %678
  %852 = load ptr, ptr %11, align 8, !tbaa !5
  %853 = load i64, ptr %852, align 8, !tbaa !9
  %854 = sub nsw i64 %853, 1
  store i64 %854, ptr %14, align 8, !tbaa !9
  %855 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %855, ptr %20, align 8, !tbaa !9
  br label %856

856:                                              ; preds = %864, %851
  %857 = load i64, ptr %20, align 8, !tbaa !9
  %858 = load i64, ptr %14, align 8, !tbaa !9
  %859 = icmp sle i64 %857, %858
  br i1 %859, label %860, label %867

860:                                              ; preds = %856
  %861 = load ptr, ptr %13, align 8, !tbaa !5
  %862 = load i64, ptr %20, align 8, !tbaa !9
  %863 = getelementptr inbounds double, ptr %861, i64 %862
  store double 0.000000e+00, ptr %863, align 8, !tbaa !11
  br label %864

864:                                              ; preds = %860
  %865 = load i64, ptr %20, align 8, !tbaa !9
  %866 = add nsw i64 %865, 1
  store i64 %866, ptr %20, align 8, !tbaa !9
  br label %856, !llvm.loop !35

867:                                              ; preds = %856
  %868 = load i64, ptr %22, align 8, !tbaa !9
  %869 = sub nsw i64 %868, 1
  store i64 %869, ptr %21, align 8, !tbaa !9
  br label %870

870:                                              ; preds = %1012, %867
  %871 = load i64, ptr %21, align 8, !tbaa !9
  %872 = icmp sge i64 %871, 0
  br i1 %872, label %873, label %1015

873:                                              ; preds = %870
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %874 = load i64, ptr %21, align 8, !tbaa !9
  %875 = sub nsw i64 %874, 1
  store i64 %875, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %876

876:                                              ; preds = %909, %873
  %877 = load i64, ptr %20, align 8, !tbaa !9
  %878 = load i64, ptr %14, align 8, !tbaa !9
  %879 = icmp sle i64 %877, %878
  br i1 %879, label %880, label %912

880:                                              ; preds = %876
  %881 = load ptr, ptr %12, align 8, !tbaa !5
  %882 = load i64, ptr %20, align 8, !tbaa !9
  %883 = load i64, ptr %21, align 8, !tbaa !9
  %884 = load i64, ptr %27, align 8, !tbaa !9
  %885 = mul nsw i64 %883, %884
  %886 = add nsw i64 %882, %885
  %887 = getelementptr inbounds double, ptr %881, i64 %886
  %888 = load double, ptr %887, align 8, !tbaa !11
  store double %888, ptr %17, align 8, !tbaa !11
  %889 = load double, ptr %17, align 8, !tbaa !11
  %890 = fcmp oge double %889, 0.000000e+00
  br i1 %890, label %891, label %893

891:                                              ; preds = %880
  %892 = load double, ptr %17, align 8, !tbaa !11
  br label %896

893:                                              ; preds = %880
  %894 = load double, ptr %17, align 8, !tbaa !11
  %895 = fneg double %894
  br label %896

896:                                              ; preds = %893, %891
  %897 = phi double [ %892, %891 ], [ %895, %893 ]
  store double %897, ptr %26, align 8, !tbaa !11
  %898 = load double, ptr %26, align 8, !tbaa !11
  %899 = load double, ptr %24, align 8, !tbaa !11
  %900 = fadd double %899, %898
  store double %900, ptr %24, align 8, !tbaa !11
  %901 = load double, ptr %26, align 8, !tbaa !11
  %902 = load ptr, ptr %13, align 8, !tbaa !5
  %903 = load i64, ptr %20, align 8, !tbaa !9
  %904 = load i64, ptr %22, align 8, !tbaa !9
  %905 = add nsw i64 %903, %904
  %906 = getelementptr inbounds double, ptr %902, i64 %905
  %907 = load double, ptr %906, align 8, !tbaa !11
  %908 = fadd double %907, %901
  store double %908, ptr %906, align 8, !tbaa !11
  br label %909

909:                                              ; preds = %896
  %910 = load i64, ptr %20, align 8, !tbaa !9
  %911 = add nsw i64 %910, 1
  store i64 %911, ptr %20, align 8, !tbaa !9
  br label %876, !llvm.loop !36

912:                                              ; preds = %876
  %913 = load ptr, ptr %12, align 8, !tbaa !5
  %914 = load i64, ptr %20, align 8, !tbaa !9
  %915 = load i64, ptr %21, align 8, !tbaa !9
  %916 = load i64, ptr %27, align 8, !tbaa !9
  %917 = mul nsw i64 %915, %916
  %918 = add nsw i64 %914, %917
  %919 = getelementptr inbounds double, ptr %913, i64 %918
  %920 = load double, ptr %919, align 8, !tbaa !11
  store double %920, ptr %17, align 8, !tbaa !11
  %921 = load double, ptr %17, align 8, !tbaa !11
  %922 = fcmp oge double %921, 0.000000e+00
  br i1 %922, label %923, label %925

923:                                              ; preds = %912
  %924 = load double, ptr %17, align 8, !tbaa !11
  br label %928

925:                                              ; preds = %912
  %926 = load double, ptr %17, align 8, !tbaa !11
  %927 = fneg double %926
  br label %928

928:                                              ; preds = %925, %923
  %929 = phi double [ %924, %923 ], [ %927, %925 ]
  store double %929, ptr %26, align 8, !tbaa !11
  %930 = load double, ptr %26, align 8, !tbaa !11
  %931 = load double, ptr %24, align 8, !tbaa !11
  %932 = fadd double %931, %930
  store double %932, ptr %24, align 8, !tbaa !11
  %933 = load double, ptr %24, align 8, !tbaa !11
  %934 = load ptr, ptr %13, align 8, !tbaa !5
  %935 = load i64, ptr %20, align 8, !tbaa !9
  %936 = load i64, ptr %22, align 8, !tbaa !9
  %937 = add nsw i64 %935, %936
  %938 = getelementptr inbounds double, ptr %934, i64 %937
  %939 = load double, ptr %938, align 8, !tbaa !11
  %940 = fadd double %939, %933
  store double %940, ptr %938, align 8, !tbaa !11
  %941 = load i64, ptr %20, align 8, !tbaa !9
  %942 = add nsw i64 %941, 1
  store i64 %942, ptr %20, align 8, !tbaa !9
  %943 = load ptr, ptr %12, align 8, !tbaa !5
  %944 = load i64, ptr %20, align 8, !tbaa !9
  %945 = load i64, ptr %21, align 8, !tbaa !9
  %946 = load i64, ptr %27, align 8, !tbaa !9
  %947 = mul nsw i64 %945, %946
  %948 = add nsw i64 %944, %947
  %949 = getelementptr inbounds double, ptr %943, i64 %948
  %950 = load double, ptr %949, align 8, !tbaa !11
  store double %950, ptr %17, align 8, !tbaa !11
  %951 = load double, ptr %17, align 8, !tbaa !11
  %952 = fcmp oge double %951, 0.000000e+00
  br i1 %952, label %953, label %955

953:                                              ; preds = %928
  %954 = load double, ptr %17, align 8, !tbaa !11
  br label %958

955:                                              ; preds = %928
  %956 = load double, ptr %17, align 8, !tbaa !11
  %957 = fneg double %956
  br label %958

958:                                              ; preds = %955, %953
  %959 = phi double [ %954, %953 ], [ %957, %955 ]
  store double %959, ptr %26, align 8, !tbaa !11
  %960 = load double, ptr %26, align 8, !tbaa !11
  %961 = load ptr, ptr %13, align 8, !tbaa !5
  %962 = load i64, ptr %21, align 8, !tbaa !9
  %963 = getelementptr inbounds double, ptr %961, i64 %962
  store double %960, ptr %963, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %964 = load ptr, ptr %11, align 8, !tbaa !5
  %965 = load i64, ptr %964, align 8, !tbaa !9
  %966 = sub nsw i64 %965, 1
  store i64 %966, ptr %14, align 8, !tbaa !9
  %967 = load i64, ptr %21, align 8, !tbaa !9
  %968 = add nsw i64 %967, 1
  store i64 %968, ptr %23, align 8, !tbaa !9
  br label %969

969:                                              ; preds = %1002, %958
  %970 = load i64, ptr %23, align 8, !tbaa !9
  %971 = load i64, ptr %14, align 8, !tbaa !9
  %972 = icmp sle i64 %970, %971
  br i1 %972, label %973, label %1005

973:                                              ; preds = %969
  %974 = load i64, ptr %20, align 8, !tbaa !9
  %975 = add nsw i64 %974, 1
  store i64 %975, ptr %20, align 8, !tbaa !9
  %976 = load ptr, ptr %12, align 8, !tbaa !5
  %977 = load i64, ptr %20, align 8, !tbaa !9
  %978 = load i64, ptr %21, align 8, !tbaa !9
  %979 = load i64, ptr %27, align 8, !tbaa !9
  %980 = mul nsw i64 %978, %979
  %981 = add nsw i64 %977, %980
  %982 = getelementptr inbounds double, ptr %976, i64 %981
  %983 = load double, ptr %982, align 8, !tbaa !11
  store double %983, ptr %17, align 8, !tbaa !11
  %984 = load double, ptr %17, align 8, !tbaa !11
  %985 = fcmp oge double %984, 0.000000e+00
  br i1 %985, label %986, label %988

986:                                              ; preds = %973
  %987 = load double, ptr %17, align 8, !tbaa !11
  br label %991

988:                                              ; preds = %973
  %989 = load double, ptr %17, align 8, !tbaa !11
  %990 = fneg double %989
  br label %991

991:                                              ; preds = %988, %986
  %992 = phi double [ %987, %986 ], [ %990, %988 ]
  store double %992, ptr %26, align 8, !tbaa !11
  %993 = load double, ptr %26, align 8, !tbaa !11
  %994 = load double, ptr %24, align 8, !tbaa !11
  %995 = fadd double %994, %993
  store double %995, ptr %24, align 8, !tbaa !11
  %996 = load double, ptr %26, align 8, !tbaa !11
  %997 = load ptr, ptr %13, align 8, !tbaa !5
  %998 = load i64, ptr %23, align 8, !tbaa !9
  %999 = getelementptr inbounds double, ptr %997, i64 %998
  %1000 = load double, ptr %999, align 8, !tbaa !11
  %1001 = fadd double %1000, %996
  store double %1001, ptr %999, align 8, !tbaa !11
  br label %1002

1002:                                             ; preds = %991
  %1003 = load i64, ptr %23, align 8, !tbaa !9
  %1004 = add nsw i64 %1003, 1
  store i64 %1004, ptr %23, align 8, !tbaa !9
  br label %969, !llvm.loop !37

1005:                                             ; preds = %969
  %1006 = load double, ptr %24, align 8, !tbaa !11
  %1007 = load ptr, ptr %13, align 8, !tbaa !5
  %1008 = load i64, ptr %21, align 8, !tbaa !9
  %1009 = getelementptr inbounds double, ptr %1007, i64 %1008
  %1010 = load double, ptr %1009, align 8, !tbaa !11
  %1011 = fadd double %1010, %1006
  store double %1011, ptr %1009, align 8, !tbaa !11
  br label %1012

1012:                                             ; preds = %1005
  %1013 = load i64, ptr %21, align 8, !tbaa !9
  %1014 = add nsw i64 %1013, -1
  store i64 %1014, ptr %21, align 8, !tbaa !9
  br label %870, !llvm.loop !38

1015:                                             ; preds = %870
  %1016 = load ptr, ptr %11, align 8, !tbaa !5
  %1017 = load ptr, ptr %13, align 8, !tbaa !5
  %1018 = call i64 @f2c_idamax(ptr noundef %1016, ptr noundef %1017, ptr noundef @c__1)
  store i64 %1018, ptr %20, align 8, !tbaa !9
  %1019 = load ptr, ptr %13, align 8, !tbaa !5
  %1020 = load i64, ptr %20, align 8, !tbaa !9
  %1021 = sub nsw i64 %1020, 1
  %1022 = getelementptr inbounds double, ptr %1019, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  store double %1023, ptr %32, align 8, !tbaa !11
  br label %1024

1024:                                             ; preds = %1015, %842
  br label %1025

1025:                                             ; preds = %1024, %677
  br label %2315

1026:                                             ; preds = %309
  %1027 = load ptr, ptr %11, align 8, !tbaa !5
  %1028 = load i64, ptr %1027, align 8, !tbaa !9
  %1029 = sdiv i64 %1028, 2
  store i64 %1029, ptr %22, align 8, !tbaa !9
  %1030 = load i64, ptr %29, align 8, !tbaa !9
  %1031 = icmp eq i64 %1030, 1
  br i1 %1031, label %1032, label %1613

1032:                                             ; preds = %1026
  %1033 = load i64, ptr %30, align 8, !tbaa !9
  %1034 = icmp eq i64 %1033, 0
  br i1 %1034, label %1035, label %1324

1035:                                             ; preds = %1032
  %1036 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %1036, ptr %25, align 8, !tbaa !9
  %1037 = load i64, ptr %22, align 8, !tbaa !9
  %1038 = add nsw i64 %1037, 1
  store i64 %1038, ptr %22, align 8, !tbaa !9
  %1039 = load ptr, ptr %11, align 8, !tbaa !5
  %1040 = load i64, ptr %1039, align 8, !tbaa !9
  %1041 = sub nsw i64 %1040, 1
  store i64 %1041, ptr %14, align 8, !tbaa !9
  %1042 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %1042, ptr %20, align 8, !tbaa !9
  br label %1043

1043:                                             ; preds = %1051, %1035
  %1044 = load i64, ptr %20, align 8, !tbaa !9
  %1045 = load i64, ptr %14, align 8, !tbaa !9
  %1046 = icmp sle i64 %1044, %1045
  br i1 %1046, label %1047, label %1054

1047:                                             ; preds = %1043
  %1048 = load ptr, ptr %13, align 8, !tbaa !5
  %1049 = load i64, ptr %20, align 8, !tbaa !9
  %1050 = getelementptr inbounds double, ptr %1048, i64 %1049
  store double 0.000000e+00, ptr %1050, align 8, !tbaa !11
  br label %1051

1051:                                             ; preds = %1047
  %1052 = load i64, ptr %20, align 8, !tbaa !9
  %1053 = add nsw i64 %1052, 1
  store i64 %1053, ptr %20, align 8, !tbaa !9
  br label %1043, !llvm.loop !39

1054:                                             ; preds = %1043
  %1055 = load i64, ptr %25, align 8, !tbaa !9
  %1056 = sub nsw i64 %1055, 1
  store i64 %1056, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %1057

1057:                                             ; preds = %1105, %1054
  %1058 = load i64, ptr %21, align 8, !tbaa !9
  %1059 = load i64, ptr %14, align 8, !tbaa !9
  %1060 = icmp sle i64 %1058, %1059
  br i1 %1060, label %1061, label %1108

1061:                                             ; preds = %1057
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1062 = load i64, ptr %22, align 8, !tbaa !9
  %1063 = sub nsw i64 %1062, 1
  store i64 %1063, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1064

1064:                                             ; preds = %1097, %1061
  %1065 = load i64, ptr %20, align 8, !tbaa !9
  %1066 = load i64, ptr %15, align 8, !tbaa !9
  %1067 = icmp sle i64 %1065, %1066
  br i1 %1067, label %1068, label %1100

1068:                                             ; preds = %1064
  %1069 = load ptr, ptr %12, align 8, !tbaa !5
  %1070 = load i64, ptr %20, align 8, !tbaa !9
  %1071 = load i64, ptr %21, align 8, !tbaa !9
  %1072 = load i64, ptr %27, align 8, !tbaa !9
  %1073 = mul nsw i64 %1071, %1072
  %1074 = add nsw i64 %1070, %1073
  %1075 = getelementptr inbounds double, ptr %1069, i64 %1074
  %1076 = load double, ptr %1075, align 8, !tbaa !11
  store double %1076, ptr %17, align 8, !tbaa !11
  %1077 = load double, ptr %17, align 8, !tbaa !11
  %1078 = fcmp oge double %1077, 0.000000e+00
  br i1 %1078, label %1079, label %1081

1079:                                             ; preds = %1068
  %1080 = load double, ptr %17, align 8, !tbaa !11
  br label %1084

1081:                                             ; preds = %1068
  %1082 = load double, ptr %17, align 8, !tbaa !11
  %1083 = fneg double %1082
  br label %1084

1084:                                             ; preds = %1081, %1079
  %1085 = phi double [ %1080, %1079 ], [ %1083, %1081 ]
  store double %1085, ptr %26, align 8, !tbaa !11
  %1086 = load double, ptr %26, align 8, !tbaa !11
  %1087 = load ptr, ptr %13, align 8, !tbaa !5
  %1088 = load i64, ptr %20, align 8, !tbaa !9
  %1089 = load i64, ptr %25, align 8, !tbaa !9
  %1090 = add nsw i64 %1088, %1089
  %1091 = getelementptr inbounds double, ptr %1087, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  %1093 = fadd double %1092, %1086
  store double %1093, ptr %1091, align 8, !tbaa !11
  %1094 = load double, ptr %26, align 8, !tbaa !11
  %1095 = load double, ptr %24, align 8, !tbaa !11
  %1096 = fadd double %1095, %1094
  store double %1096, ptr %24, align 8, !tbaa !11
  br label %1097

1097:                                             ; preds = %1084
  %1098 = load i64, ptr %20, align 8, !tbaa !9
  %1099 = add nsw i64 %1098, 1
  store i64 %1099, ptr %20, align 8, !tbaa !9
  br label %1064, !llvm.loop !40

1100:                                             ; preds = %1064
  %1101 = load double, ptr %24, align 8, !tbaa !11
  %1102 = load ptr, ptr %13, align 8, !tbaa !5
  %1103 = load i64, ptr %21, align 8, !tbaa !9
  %1104 = getelementptr inbounds double, ptr %1102, i64 %1103
  store double %1101, ptr %1104, align 8, !tbaa !11
  br label %1105

1105:                                             ; preds = %1100
  %1106 = load i64, ptr %21, align 8, !tbaa !9
  %1107 = add nsw i64 %1106, 1
  store i64 %1107, ptr %21, align 8, !tbaa !9
  br label %1057, !llvm.loop !41

1108:                                             ; preds = %1057
  %1109 = load ptr, ptr %12, align 8, !tbaa !5
  %1110 = load i64, ptr %21, align 8, !tbaa !9
  %1111 = load i64, ptr %27, align 8, !tbaa !9
  %1112 = mul nsw i64 %1110, %1111
  %1113 = getelementptr inbounds double, ptr %1109, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !11
  store double %1114, ptr %17, align 8, !tbaa !11
  %1115 = load double, ptr %17, align 8, !tbaa !11
  %1116 = fcmp oge double %1115, 0.000000e+00
  br i1 %1116, label %1117, label %1119

1117:                                             ; preds = %1108
  %1118 = load double, ptr %17, align 8, !tbaa !11
  br label %1122

1119:                                             ; preds = %1108
  %1120 = load double, ptr %17, align 8, !tbaa !11
  %1121 = fneg double %1120
  br label %1122

1122:                                             ; preds = %1119, %1117
  %1123 = phi double [ %1118, %1117 ], [ %1121, %1119 ]
  store double %1123, ptr %24, align 8, !tbaa !11
  %1124 = load i64, ptr %22, align 8, !tbaa !9
  %1125 = sub nsw i64 %1124, 1
  store i64 %1125, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %1126

1126:                                             ; preds = %1159, %1122
  %1127 = load i64, ptr %20, align 8, !tbaa !9
  %1128 = load i64, ptr %14, align 8, !tbaa !9
  %1129 = icmp sle i64 %1127, %1128
  br i1 %1129, label %1130, label %1162

1130:                                             ; preds = %1126
  %1131 = load ptr, ptr %12, align 8, !tbaa !5
  %1132 = load i64, ptr %20, align 8, !tbaa !9
  %1133 = load i64, ptr %21, align 8, !tbaa !9
  %1134 = load i64, ptr %27, align 8, !tbaa !9
  %1135 = mul nsw i64 %1133, %1134
  %1136 = add nsw i64 %1132, %1135
  %1137 = getelementptr inbounds double, ptr %1131, i64 %1136
  %1138 = load double, ptr %1137, align 8, !tbaa !11
  store double %1138, ptr %17, align 8, !tbaa !11
  %1139 = load double, ptr %17, align 8, !tbaa !11
  %1140 = fcmp oge double %1139, 0.000000e+00
  br i1 %1140, label %1141, label %1143

1141:                                             ; preds = %1130
  %1142 = load double, ptr %17, align 8, !tbaa !11
  br label %1146

1143:                                             ; preds = %1130
  %1144 = load double, ptr %17, align 8, !tbaa !11
  %1145 = fneg double %1144
  br label %1146

1146:                                             ; preds = %1143, %1141
  %1147 = phi double [ %1142, %1141 ], [ %1145, %1143 ]
  store double %1147, ptr %26, align 8, !tbaa !11
  %1148 = load double, ptr %26, align 8, !tbaa !11
  %1149 = load ptr, ptr %13, align 8, !tbaa !5
  %1150 = load i64, ptr %20, align 8, !tbaa !9
  %1151 = load i64, ptr %25, align 8, !tbaa !9
  %1152 = add nsw i64 %1150, %1151
  %1153 = getelementptr inbounds double, ptr %1149, i64 %1152
  %1154 = load double, ptr %1153, align 8, !tbaa !11
  %1155 = fadd double %1154, %1148
  store double %1155, ptr %1153, align 8, !tbaa !11
  %1156 = load double, ptr %26, align 8, !tbaa !11
  %1157 = load double, ptr %24, align 8, !tbaa !11
  %1158 = fadd double %1157, %1156
  store double %1158, ptr %24, align 8, !tbaa !11
  br label %1159

1159:                                             ; preds = %1146
  %1160 = load i64, ptr %20, align 8, !tbaa !9
  %1161 = add nsw i64 %1160, 1
  store i64 %1161, ptr %20, align 8, !tbaa !9
  br label %1126, !llvm.loop !42

1162:                                             ; preds = %1126
  %1163 = load double, ptr %24, align 8, !tbaa !11
  %1164 = load ptr, ptr %13, align 8, !tbaa !5
  %1165 = load i64, ptr %21, align 8, !tbaa !9
  %1166 = getelementptr inbounds double, ptr %1164, i64 %1165
  %1167 = load double, ptr %1166, align 8, !tbaa !11
  %1168 = fadd double %1167, %1163
  store double %1168, ptr %1166, align 8, !tbaa !11
  %1169 = load ptr, ptr %11, align 8, !tbaa !5
  %1170 = load i64, ptr %1169, align 8, !tbaa !9
  %1171 = sub nsw i64 %1170, 1
  store i64 %1171, ptr %14, align 8, !tbaa !9
  %1172 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %1172, ptr %21, align 8, !tbaa !9
  br label %1173

1173:                                             ; preds = %1312, %1162
  %1174 = load i64, ptr %21, align 8, !tbaa !9
  %1175 = load i64, ptr %14, align 8, !tbaa !9
  %1176 = icmp sle i64 %1174, %1175
  br i1 %1176, label %1177, label %1315

1177:                                             ; preds = %1173
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1178 = load i64, ptr %21, align 8, !tbaa !9
  %1179 = load i64, ptr %22, align 8, !tbaa !9
  %1180 = sub nsw i64 %1178, %1179
  %1181 = sub nsw i64 %1180, 1
  store i64 %1181, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1182

1182:                                             ; preds = %1213, %1177
  %1183 = load i64, ptr %20, align 8, !tbaa !9
  %1184 = load i64, ptr %15, align 8, !tbaa !9
  %1185 = icmp sle i64 %1183, %1184
  br i1 %1185, label %1186, label %1216

1186:                                             ; preds = %1182
  %1187 = load ptr, ptr %12, align 8, !tbaa !5
  %1188 = load i64, ptr %20, align 8, !tbaa !9
  %1189 = load i64, ptr %21, align 8, !tbaa !9
  %1190 = load i64, ptr %27, align 8, !tbaa !9
  %1191 = mul nsw i64 %1189, %1190
  %1192 = add nsw i64 %1188, %1191
  %1193 = getelementptr inbounds double, ptr %1187, i64 %1192
  %1194 = load double, ptr %1193, align 8, !tbaa !11
  store double %1194, ptr %17, align 8, !tbaa !11
  %1195 = load double, ptr %17, align 8, !tbaa !11
  %1196 = fcmp oge double %1195, 0.000000e+00
  br i1 %1196, label %1197, label %1199

1197:                                             ; preds = %1186
  %1198 = load double, ptr %17, align 8, !tbaa !11
  br label %1202

1199:                                             ; preds = %1186
  %1200 = load double, ptr %17, align 8, !tbaa !11
  %1201 = fneg double %1200
  br label %1202

1202:                                             ; preds = %1199, %1197
  %1203 = phi double [ %1198, %1197 ], [ %1201, %1199 ]
  store double %1203, ptr %26, align 8, !tbaa !11
  %1204 = load double, ptr %26, align 8, !tbaa !11
  %1205 = load ptr, ptr %13, align 8, !tbaa !5
  %1206 = load i64, ptr %20, align 8, !tbaa !9
  %1207 = getelementptr inbounds double, ptr %1205, i64 %1206
  %1208 = load double, ptr %1207, align 8, !tbaa !11
  %1209 = fadd double %1208, %1204
  store double %1209, ptr %1207, align 8, !tbaa !11
  %1210 = load double, ptr %26, align 8, !tbaa !11
  %1211 = load double, ptr %24, align 8, !tbaa !11
  %1212 = fadd double %1211, %1210
  store double %1212, ptr %24, align 8, !tbaa !11
  br label %1213

1213:                                             ; preds = %1202
  %1214 = load i64, ptr %20, align 8, !tbaa !9
  %1215 = add nsw i64 %1214, 1
  store i64 %1215, ptr %20, align 8, !tbaa !9
  br label %1182, !llvm.loop !43

1216:                                             ; preds = %1182
  %1217 = load ptr, ptr %12, align 8, !tbaa !5
  %1218 = load i64, ptr %20, align 8, !tbaa !9
  %1219 = load i64, ptr %21, align 8, !tbaa !9
  %1220 = load i64, ptr %27, align 8, !tbaa !9
  %1221 = mul nsw i64 %1219, %1220
  %1222 = add nsw i64 %1218, %1221
  %1223 = getelementptr inbounds double, ptr %1217, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !11
  store double %1224, ptr %17, align 8, !tbaa !11
  %1225 = load double, ptr %17, align 8, !tbaa !11
  %1226 = fcmp oge double %1225, 0.000000e+00
  br i1 %1226, label %1227, label %1229

1227:                                             ; preds = %1216
  %1228 = load double, ptr %17, align 8, !tbaa !11
  br label %1232

1229:                                             ; preds = %1216
  %1230 = load double, ptr %17, align 8, !tbaa !11
  %1231 = fneg double %1230
  br label %1232

1232:                                             ; preds = %1229, %1227
  %1233 = phi double [ %1228, %1227 ], [ %1231, %1229 ]
  store double %1233, ptr %26, align 8, !tbaa !11
  %1234 = load double, ptr %26, align 8, !tbaa !11
  %1235 = load double, ptr %24, align 8, !tbaa !11
  %1236 = fadd double %1235, %1234
  store double %1236, ptr %24, align 8, !tbaa !11
  %1237 = load double, ptr %24, align 8, !tbaa !11
  %1238 = load ptr, ptr %13, align 8, !tbaa !5
  %1239 = load i64, ptr %21, align 8, !tbaa !9
  %1240 = load i64, ptr %22, align 8, !tbaa !9
  %1241 = sub nsw i64 %1239, %1240
  %1242 = getelementptr inbounds double, ptr %1238, i64 %1241
  %1243 = load double, ptr %1242, align 8, !tbaa !11
  %1244 = fadd double %1243, %1237
  store double %1244, ptr %1242, align 8, !tbaa !11
  %1245 = load i64, ptr %20, align 8, !tbaa !9
  %1246 = add nsw i64 %1245, 1
  store i64 %1246, ptr %20, align 8, !tbaa !9
  %1247 = load ptr, ptr %12, align 8, !tbaa !5
  %1248 = load i64, ptr %20, align 8, !tbaa !9
  %1249 = load i64, ptr %21, align 8, !tbaa !9
  %1250 = load i64, ptr %27, align 8, !tbaa !9
  %1251 = mul nsw i64 %1249, %1250
  %1252 = add nsw i64 %1248, %1251
  %1253 = getelementptr inbounds double, ptr %1247, i64 %1252
  %1254 = load double, ptr %1253, align 8, !tbaa !11
  store double %1254, ptr %17, align 8, !tbaa !11
  %1255 = load double, ptr %17, align 8, !tbaa !11
  %1256 = fcmp oge double %1255, 0.000000e+00
  br i1 %1256, label %1257, label %1259

1257:                                             ; preds = %1232
  %1258 = load double, ptr %17, align 8, !tbaa !11
  br label %1262

1259:                                             ; preds = %1232
  %1260 = load double, ptr %17, align 8, !tbaa !11
  %1261 = fneg double %1260
  br label %1262

1262:                                             ; preds = %1259, %1257
  %1263 = phi double [ %1258, %1257 ], [ %1261, %1259 ]
  store double %1263, ptr %24, align 8, !tbaa !11
  %1264 = load ptr, ptr %11, align 8, !tbaa !5
  %1265 = load i64, ptr %1264, align 8, !tbaa !9
  %1266 = sub nsw i64 %1265, 1
  store i64 %1266, ptr %15, align 8, !tbaa !9
  %1267 = load i64, ptr %21, align 8, !tbaa !9
  %1268 = add nsw i64 %1267, 1
  store i64 %1268, ptr %23, align 8, !tbaa !9
  br label %1269

1269:                                             ; preds = %1302, %1262
  %1270 = load i64, ptr %23, align 8, !tbaa !9
  %1271 = load i64, ptr %15, align 8, !tbaa !9
  %1272 = icmp sle i64 %1270, %1271
  br i1 %1272, label %1273, label %1305

1273:                                             ; preds = %1269
  %1274 = load i64, ptr %20, align 8, !tbaa !9
  %1275 = add nsw i64 %1274, 1
  store i64 %1275, ptr %20, align 8, !tbaa !9
  %1276 = load ptr, ptr %12, align 8, !tbaa !5
  %1277 = load i64, ptr %20, align 8, !tbaa !9
  %1278 = load i64, ptr %21, align 8, !tbaa !9
  %1279 = load i64, ptr %27, align 8, !tbaa !9
  %1280 = mul nsw i64 %1278, %1279
  %1281 = add nsw i64 %1277, %1280
  %1282 = getelementptr inbounds double, ptr %1276, i64 %1281
  %1283 = load double, ptr %1282, align 8, !tbaa !11
  store double %1283, ptr %17, align 8, !tbaa !11
  %1284 = load double, ptr %17, align 8, !tbaa !11
  %1285 = fcmp oge double %1284, 0.000000e+00
  br i1 %1285, label %1286, label %1288

1286:                                             ; preds = %1273
  %1287 = load double, ptr %17, align 8, !tbaa !11
  br label %1291

1288:                                             ; preds = %1273
  %1289 = load double, ptr %17, align 8, !tbaa !11
  %1290 = fneg double %1289
  br label %1291

1291:                                             ; preds = %1288, %1286
  %1292 = phi double [ %1287, %1286 ], [ %1290, %1288 ]
  store double %1292, ptr %26, align 8, !tbaa !11
  %1293 = load double, ptr %26, align 8, !tbaa !11
  %1294 = load ptr, ptr %13, align 8, !tbaa !5
  %1295 = load i64, ptr %23, align 8, !tbaa !9
  %1296 = getelementptr inbounds double, ptr %1294, i64 %1295
  %1297 = load double, ptr %1296, align 8, !tbaa !11
  %1298 = fadd double %1297, %1293
  store double %1298, ptr %1296, align 8, !tbaa !11
  %1299 = load double, ptr %26, align 8, !tbaa !11
  %1300 = load double, ptr %24, align 8, !tbaa !11
  %1301 = fadd double %1300, %1299
  store double %1301, ptr %24, align 8, !tbaa !11
  br label %1302

1302:                                             ; preds = %1291
  %1303 = load i64, ptr %23, align 8, !tbaa !9
  %1304 = add nsw i64 %1303, 1
  store i64 %1304, ptr %23, align 8, !tbaa !9
  br label %1269, !llvm.loop !44

1305:                                             ; preds = %1269
  %1306 = load double, ptr %24, align 8, !tbaa !11
  %1307 = load ptr, ptr %13, align 8, !tbaa !5
  %1308 = load i64, ptr %21, align 8, !tbaa !9
  %1309 = getelementptr inbounds double, ptr %1307, i64 %1308
  %1310 = load double, ptr %1309, align 8, !tbaa !11
  %1311 = fadd double %1310, %1306
  store double %1311, ptr %1309, align 8, !tbaa !11
  br label %1312

1312:                                             ; preds = %1305
  %1313 = load i64, ptr %21, align 8, !tbaa !9
  %1314 = add nsw i64 %1313, 1
  store i64 %1314, ptr %21, align 8, !tbaa !9
  br label %1173, !llvm.loop !45

1315:                                             ; preds = %1173
  %1316 = load ptr, ptr %11, align 8, !tbaa !5
  %1317 = load ptr, ptr %13, align 8, !tbaa !5
  %1318 = call i64 @f2c_idamax(ptr noundef %1316, ptr noundef %1317, ptr noundef @c__1)
  store i64 %1318, ptr %20, align 8, !tbaa !9
  %1319 = load ptr, ptr %13, align 8, !tbaa !5
  %1320 = load i64, ptr %20, align 8, !tbaa !9
  %1321 = sub nsw i64 %1320, 1
  %1322 = getelementptr inbounds double, ptr %1319, i64 %1321
  %1323 = load double, ptr %1322, align 8, !tbaa !11
  store double %1323, ptr %32, align 8, !tbaa !11
  br label %1612

1324:                                             ; preds = %1032
  %1325 = load i64, ptr %22, align 8, !tbaa !9
  %1326 = add nsw i64 %1325, 1
  store i64 %1326, ptr %22, align 8, !tbaa !9
  %1327 = load ptr, ptr %11, align 8, !tbaa !5
  %1328 = load i64, ptr %1327, align 8, !tbaa !9
  %1329 = sub nsw i64 %1328, 1
  store i64 %1329, ptr %14, align 8, !tbaa !9
  %1330 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %1330, ptr %20, align 8, !tbaa !9
  br label %1331

1331:                                             ; preds = %1339, %1324
  %1332 = load i64, ptr %20, align 8, !tbaa !9
  %1333 = load i64, ptr %14, align 8, !tbaa !9
  %1334 = icmp sle i64 %1332, %1333
  br i1 %1334, label %1335, label %1342

1335:                                             ; preds = %1331
  %1336 = load ptr, ptr %13, align 8, !tbaa !5
  %1337 = load i64, ptr %20, align 8, !tbaa !9
  %1338 = getelementptr inbounds double, ptr %1336, i64 %1337
  store double 0.000000e+00, ptr %1338, align 8, !tbaa !11
  br label %1339

1339:                                             ; preds = %1335
  %1340 = load i64, ptr %20, align 8, !tbaa !9
  %1341 = add nsw i64 %1340, 1
  store i64 %1341, ptr %20, align 8, !tbaa !9
  br label %1331, !llvm.loop !46

1342:                                             ; preds = %1331
  %1343 = load i64, ptr %22, align 8, !tbaa !9
  %1344 = sub nsw i64 %1343, 2
  store i64 %1344, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %1345

1345:                                             ; preds = %1483, %1342
  %1346 = load i64, ptr %21, align 8, !tbaa !9
  %1347 = load i64, ptr %14, align 8, !tbaa !9
  %1348 = icmp sle i64 %1346, %1347
  br i1 %1348, label %1349, label %1486

1349:                                             ; preds = %1345
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1350 = load i64, ptr %21, align 8, !tbaa !9
  %1351 = sub nsw i64 %1350, 1
  store i64 %1351, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1352

1352:                                             ; preds = %1383, %1349
  %1353 = load i64, ptr %20, align 8, !tbaa !9
  %1354 = load i64, ptr %15, align 8, !tbaa !9
  %1355 = icmp sle i64 %1353, %1354
  br i1 %1355, label %1356, label %1386

1356:                                             ; preds = %1352
  %1357 = load ptr, ptr %12, align 8, !tbaa !5
  %1358 = load i64, ptr %20, align 8, !tbaa !9
  %1359 = load i64, ptr %21, align 8, !tbaa !9
  %1360 = load i64, ptr %27, align 8, !tbaa !9
  %1361 = mul nsw i64 %1359, %1360
  %1362 = add nsw i64 %1358, %1361
  %1363 = getelementptr inbounds double, ptr %1357, i64 %1362
  %1364 = load double, ptr %1363, align 8, !tbaa !11
  store double %1364, ptr %17, align 8, !tbaa !11
  %1365 = load double, ptr %17, align 8, !tbaa !11
  %1366 = fcmp oge double %1365, 0.000000e+00
  br i1 %1366, label %1367, label %1369

1367:                                             ; preds = %1356
  %1368 = load double, ptr %17, align 8, !tbaa !11
  br label %1372

1369:                                             ; preds = %1356
  %1370 = load double, ptr %17, align 8, !tbaa !11
  %1371 = fneg double %1370
  br label %1372

1372:                                             ; preds = %1369, %1367
  %1373 = phi double [ %1368, %1367 ], [ %1371, %1369 ]
  store double %1373, ptr %26, align 8, !tbaa !11
  %1374 = load double, ptr %26, align 8, !tbaa !11
  %1375 = load ptr, ptr %13, align 8, !tbaa !5
  %1376 = load i64, ptr %20, align 8, !tbaa !9
  %1377 = getelementptr inbounds double, ptr %1375, i64 %1376
  %1378 = load double, ptr %1377, align 8, !tbaa !11
  %1379 = fadd double %1378, %1374
  store double %1379, ptr %1377, align 8, !tbaa !11
  %1380 = load double, ptr %26, align 8, !tbaa !11
  %1381 = load double, ptr %24, align 8, !tbaa !11
  %1382 = fadd double %1381, %1380
  store double %1382, ptr %24, align 8, !tbaa !11
  br label %1383

1383:                                             ; preds = %1372
  %1384 = load i64, ptr %20, align 8, !tbaa !9
  %1385 = add nsw i64 %1384, 1
  store i64 %1385, ptr %20, align 8, !tbaa !9
  br label %1352, !llvm.loop !47

1386:                                             ; preds = %1352
  %1387 = load ptr, ptr %12, align 8, !tbaa !5
  %1388 = load i64, ptr %20, align 8, !tbaa !9
  %1389 = load i64, ptr %21, align 8, !tbaa !9
  %1390 = load i64, ptr %27, align 8, !tbaa !9
  %1391 = mul nsw i64 %1389, %1390
  %1392 = add nsw i64 %1388, %1391
  %1393 = getelementptr inbounds double, ptr %1387, i64 %1392
  %1394 = load double, ptr %1393, align 8, !tbaa !11
  store double %1394, ptr %17, align 8, !tbaa !11
  %1395 = load double, ptr %17, align 8, !tbaa !11
  %1396 = fcmp oge double %1395, 0.000000e+00
  br i1 %1396, label %1397, label %1399

1397:                                             ; preds = %1386
  %1398 = load double, ptr %17, align 8, !tbaa !11
  br label %1402

1399:                                             ; preds = %1386
  %1400 = load double, ptr %17, align 8, !tbaa !11
  %1401 = fneg double %1400
  br label %1402

1402:                                             ; preds = %1399, %1397
  %1403 = phi double [ %1398, %1397 ], [ %1401, %1399 ]
  store double %1403, ptr %26, align 8, !tbaa !11
  %1404 = load double, ptr %26, align 8, !tbaa !11
  %1405 = load double, ptr %24, align 8, !tbaa !11
  %1406 = fadd double %1405, %1404
  store double %1406, ptr %24, align 8, !tbaa !11
  %1407 = load double, ptr %24, align 8, !tbaa !11
  %1408 = load ptr, ptr %13, align 8, !tbaa !5
  %1409 = load i64, ptr %21, align 8, !tbaa !9
  %1410 = getelementptr inbounds double, ptr %1408, i64 %1409
  store double %1407, ptr %1410, align 8, !tbaa !11
  %1411 = load i64, ptr %20, align 8, !tbaa !9
  %1412 = add nsw i64 %1411, 1
  store i64 %1412, ptr %20, align 8, !tbaa !9
  %1413 = load ptr, ptr %12, align 8, !tbaa !5
  %1414 = load i64, ptr %20, align 8, !tbaa !9
  %1415 = load i64, ptr %21, align 8, !tbaa !9
  %1416 = load i64, ptr %27, align 8, !tbaa !9
  %1417 = mul nsw i64 %1415, %1416
  %1418 = add nsw i64 %1414, %1417
  %1419 = getelementptr inbounds double, ptr %1413, i64 %1418
  %1420 = load double, ptr %1419, align 8, !tbaa !11
  store double %1420, ptr %17, align 8, !tbaa !11
  %1421 = load double, ptr %17, align 8, !tbaa !11
  %1422 = fcmp oge double %1421, 0.000000e+00
  br i1 %1422, label %1423, label %1425

1423:                                             ; preds = %1402
  %1424 = load double, ptr %17, align 8, !tbaa !11
  br label %1428

1425:                                             ; preds = %1402
  %1426 = load double, ptr %17, align 8, !tbaa !11
  %1427 = fneg double %1426
  br label %1428

1428:                                             ; preds = %1425, %1423
  %1429 = phi double [ %1424, %1423 ], [ %1427, %1425 ]
  store double %1429, ptr %26, align 8, !tbaa !11
  %1430 = load double, ptr %26, align 8, !tbaa !11
  store double %1430, ptr %24, align 8, !tbaa !11
  %1431 = load ptr, ptr %11, align 8, !tbaa !5
  %1432 = load i64, ptr %1431, align 8, !tbaa !9
  %1433 = sub nsw i64 %1432, 1
  store i64 %1433, ptr %15, align 8, !tbaa !9
  %1434 = load i64, ptr %22, align 8, !tbaa !9
  %1435 = load i64, ptr %21, align 8, !tbaa !9
  %1436 = add nsw i64 %1434, %1435
  %1437 = add nsw i64 %1436, 1
  store i64 %1437, ptr %23, align 8, !tbaa !9
  br label %1438

1438:                                             ; preds = %1471, %1428
  %1439 = load i64, ptr %23, align 8, !tbaa !9
  %1440 = load i64, ptr %15, align 8, !tbaa !9
  %1441 = icmp sle i64 %1439, %1440
  br i1 %1441, label %1442, label %1474

1442:                                             ; preds = %1438
  %1443 = load i64, ptr %20, align 8, !tbaa !9
  %1444 = add nsw i64 %1443, 1
  store i64 %1444, ptr %20, align 8, !tbaa !9
  %1445 = load ptr, ptr %12, align 8, !tbaa !5
  %1446 = load i64, ptr %20, align 8, !tbaa !9
  %1447 = load i64, ptr %21, align 8, !tbaa !9
  %1448 = load i64, ptr %27, align 8, !tbaa !9
  %1449 = mul nsw i64 %1447, %1448
  %1450 = add nsw i64 %1446, %1449
  %1451 = getelementptr inbounds double, ptr %1445, i64 %1450
  %1452 = load double, ptr %1451, align 8, !tbaa !11
  store double %1452, ptr %17, align 8, !tbaa !11
  %1453 = load double, ptr %17, align 8, !tbaa !11
  %1454 = fcmp oge double %1453, 0.000000e+00
  br i1 %1454, label %1455, label %1457

1455:                                             ; preds = %1442
  %1456 = load double, ptr %17, align 8, !tbaa !11
  br label %1460

1457:                                             ; preds = %1442
  %1458 = load double, ptr %17, align 8, !tbaa !11
  %1459 = fneg double %1458
  br label %1460

1460:                                             ; preds = %1457, %1455
  %1461 = phi double [ %1456, %1455 ], [ %1459, %1457 ]
  store double %1461, ptr %26, align 8, !tbaa !11
  %1462 = load double, ptr %26, align 8, !tbaa !11
  %1463 = load double, ptr %24, align 8, !tbaa !11
  %1464 = fadd double %1463, %1462
  store double %1464, ptr %24, align 8, !tbaa !11
  %1465 = load double, ptr %26, align 8, !tbaa !11
  %1466 = load ptr, ptr %13, align 8, !tbaa !5
  %1467 = load i64, ptr %23, align 8, !tbaa !9
  %1468 = getelementptr inbounds double, ptr %1466, i64 %1467
  %1469 = load double, ptr %1468, align 8, !tbaa !11
  %1470 = fadd double %1469, %1465
  store double %1470, ptr %1468, align 8, !tbaa !11
  br label %1471

1471:                                             ; preds = %1460
  %1472 = load i64, ptr %23, align 8, !tbaa !9
  %1473 = add nsw i64 %1472, 1
  store i64 %1473, ptr %23, align 8, !tbaa !9
  br label %1438, !llvm.loop !48

1474:                                             ; preds = %1438
  %1475 = load double, ptr %24, align 8, !tbaa !11
  %1476 = load ptr, ptr %13, align 8, !tbaa !5
  %1477 = load i64, ptr %22, align 8, !tbaa !9
  %1478 = load i64, ptr %21, align 8, !tbaa !9
  %1479 = add nsw i64 %1477, %1478
  %1480 = getelementptr inbounds double, ptr %1476, i64 %1479
  %1481 = load double, ptr %1480, align 8, !tbaa !11
  %1482 = fadd double %1481, %1475
  store double %1482, ptr %1480, align 8, !tbaa !11
  br label %1483

1483:                                             ; preds = %1474
  %1484 = load i64, ptr %21, align 8, !tbaa !9
  %1485 = add nsw i64 %1484, 1
  store i64 %1485, ptr %21, align 8, !tbaa !9
  br label %1345, !llvm.loop !49

1486:                                             ; preds = %1345
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1487 = load i64, ptr %22, align 8, !tbaa !9
  %1488 = sub nsw i64 %1487, 2
  store i64 %1488, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1489

1489:                                             ; preds = %1520, %1486
  %1490 = load i64, ptr %20, align 8, !tbaa !9
  %1491 = load i64, ptr %14, align 8, !tbaa !9
  %1492 = icmp sle i64 %1490, %1491
  br i1 %1492, label %1493, label %1523

1493:                                             ; preds = %1489
  %1494 = load ptr, ptr %12, align 8, !tbaa !5
  %1495 = load i64, ptr %20, align 8, !tbaa !9
  %1496 = load i64, ptr %21, align 8, !tbaa !9
  %1497 = load i64, ptr %27, align 8, !tbaa !9
  %1498 = mul nsw i64 %1496, %1497
  %1499 = add nsw i64 %1495, %1498
  %1500 = getelementptr inbounds double, ptr %1494, i64 %1499
  %1501 = load double, ptr %1500, align 8, !tbaa !11
  store double %1501, ptr %17, align 8, !tbaa !11
  %1502 = load double, ptr %17, align 8, !tbaa !11
  %1503 = fcmp oge double %1502, 0.000000e+00
  br i1 %1503, label %1504, label %1506

1504:                                             ; preds = %1493
  %1505 = load double, ptr %17, align 8, !tbaa !11
  br label %1509

1506:                                             ; preds = %1493
  %1507 = load double, ptr %17, align 8, !tbaa !11
  %1508 = fneg double %1507
  br label %1509

1509:                                             ; preds = %1506, %1504
  %1510 = phi double [ %1505, %1504 ], [ %1508, %1506 ]
  store double %1510, ptr %26, align 8, !tbaa !11
  %1511 = load double, ptr %26, align 8, !tbaa !11
  %1512 = load ptr, ptr %13, align 8, !tbaa !5
  %1513 = load i64, ptr %20, align 8, !tbaa !9
  %1514 = getelementptr inbounds double, ptr %1512, i64 %1513
  %1515 = load double, ptr %1514, align 8, !tbaa !11
  %1516 = fadd double %1515, %1511
  store double %1516, ptr %1514, align 8, !tbaa !11
  %1517 = load double, ptr %26, align 8, !tbaa !11
  %1518 = load double, ptr %24, align 8, !tbaa !11
  %1519 = fadd double %1518, %1517
  store double %1519, ptr %24, align 8, !tbaa !11
  br label %1520

1520:                                             ; preds = %1509
  %1521 = load i64, ptr %20, align 8, !tbaa !9
  %1522 = add nsw i64 %1521, 1
  store i64 %1522, ptr %20, align 8, !tbaa !9
  br label %1489, !llvm.loop !50

1523:                                             ; preds = %1489
  %1524 = load ptr, ptr %12, align 8, !tbaa !5
  %1525 = load i64, ptr %20, align 8, !tbaa !9
  %1526 = load i64, ptr %21, align 8, !tbaa !9
  %1527 = load i64, ptr %27, align 8, !tbaa !9
  %1528 = mul nsw i64 %1526, %1527
  %1529 = add nsw i64 %1525, %1528
  %1530 = getelementptr inbounds double, ptr %1524, i64 %1529
  %1531 = load double, ptr %1530, align 8, !tbaa !11
  store double %1531, ptr %17, align 8, !tbaa !11
  %1532 = load double, ptr %17, align 8, !tbaa !11
  %1533 = fcmp oge double %1532, 0.000000e+00
  br i1 %1533, label %1534, label %1536

1534:                                             ; preds = %1523
  %1535 = load double, ptr %17, align 8, !tbaa !11
  br label %1539

1536:                                             ; preds = %1523
  %1537 = load double, ptr %17, align 8, !tbaa !11
  %1538 = fneg double %1537
  br label %1539

1539:                                             ; preds = %1536, %1534
  %1540 = phi double [ %1535, %1534 ], [ %1538, %1536 ]
  store double %1540, ptr %26, align 8, !tbaa !11
  %1541 = load double, ptr %26, align 8, !tbaa !11
  %1542 = load double, ptr %24, align 8, !tbaa !11
  %1543 = fadd double %1542, %1541
  store double %1543, ptr %24, align 8, !tbaa !11
  %1544 = load double, ptr %24, align 8, !tbaa !11
  %1545 = load ptr, ptr %13, align 8, !tbaa !5
  %1546 = load i64, ptr %20, align 8, !tbaa !9
  %1547 = getelementptr inbounds double, ptr %1545, i64 %1546
  store double %1544, ptr %1547, align 8, !tbaa !11
  %1548 = load ptr, ptr %11, align 8, !tbaa !5
  %1549 = load i64, ptr %1548, align 8, !tbaa !9
  %1550 = sub nsw i64 %1549, 1
  store i64 %1550, ptr %14, align 8, !tbaa !9
  %1551 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %1551, ptr %21, align 8, !tbaa !9
  br label %1552

1552:                                             ; preds = %1600, %1539
  %1553 = load i64, ptr %21, align 8, !tbaa !9
  %1554 = load i64, ptr %14, align 8, !tbaa !9
  %1555 = icmp sle i64 %1553, %1554
  br i1 %1555, label %1556, label %1603

1556:                                             ; preds = %1552
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1557 = load i64, ptr %22, align 8, !tbaa !9
  %1558 = sub nsw i64 %1557, 1
  store i64 %1558, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1559

1559:                                             ; preds = %1590, %1556
  %1560 = load i64, ptr %20, align 8, !tbaa !9
  %1561 = load i64, ptr %15, align 8, !tbaa !9
  %1562 = icmp sle i64 %1560, %1561
  br i1 %1562, label %1563, label %1593

1563:                                             ; preds = %1559
  %1564 = load ptr, ptr %12, align 8, !tbaa !5
  %1565 = load i64, ptr %20, align 8, !tbaa !9
  %1566 = load i64, ptr %21, align 8, !tbaa !9
  %1567 = load i64, ptr %27, align 8, !tbaa !9
  %1568 = mul nsw i64 %1566, %1567
  %1569 = add nsw i64 %1565, %1568
  %1570 = getelementptr inbounds double, ptr %1564, i64 %1569
  %1571 = load double, ptr %1570, align 8, !tbaa !11
  store double %1571, ptr %17, align 8, !tbaa !11
  %1572 = load double, ptr %17, align 8, !tbaa !11
  %1573 = fcmp oge double %1572, 0.000000e+00
  br i1 %1573, label %1574, label %1576

1574:                                             ; preds = %1563
  %1575 = load double, ptr %17, align 8, !tbaa !11
  br label %1579

1576:                                             ; preds = %1563
  %1577 = load double, ptr %17, align 8, !tbaa !11
  %1578 = fneg double %1577
  br label %1579

1579:                                             ; preds = %1576, %1574
  %1580 = phi double [ %1575, %1574 ], [ %1578, %1576 ]
  store double %1580, ptr %26, align 8, !tbaa !11
  %1581 = load double, ptr %26, align 8, !tbaa !11
  %1582 = load ptr, ptr %13, align 8, !tbaa !5
  %1583 = load i64, ptr %20, align 8, !tbaa !9
  %1584 = getelementptr inbounds double, ptr %1582, i64 %1583
  %1585 = load double, ptr %1584, align 8, !tbaa !11
  %1586 = fadd double %1585, %1581
  store double %1586, ptr %1584, align 8, !tbaa !11
  %1587 = load double, ptr %26, align 8, !tbaa !11
  %1588 = load double, ptr %24, align 8, !tbaa !11
  %1589 = fadd double %1588, %1587
  store double %1589, ptr %24, align 8, !tbaa !11
  br label %1590

1590:                                             ; preds = %1579
  %1591 = load i64, ptr %20, align 8, !tbaa !9
  %1592 = add nsw i64 %1591, 1
  store i64 %1592, ptr %20, align 8, !tbaa !9
  br label %1559, !llvm.loop !51

1593:                                             ; preds = %1559
  %1594 = load double, ptr %24, align 8, !tbaa !11
  %1595 = load ptr, ptr %13, align 8, !tbaa !5
  %1596 = load i64, ptr %21, align 8, !tbaa !9
  %1597 = getelementptr inbounds double, ptr %1595, i64 %1596
  %1598 = load double, ptr %1597, align 8, !tbaa !11
  %1599 = fadd double %1598, %1594
  store double %1599, ptr %1597, align 8, !tbaa !11
  br label %1600

1600:                                             ; preds = %1593
  %1601 = load i64, ptr %21, align 8, !tbaa !9
  %1602 = add nsw i64 %1601, 1
  store i64 %1602, ptr %21, align 8, !tbaa !9
  br label %1552, !llvm.loop !52

1603:                                             ; preds = %1552
  %1604 = load ptr, ptr %11, align 8, !tbaa !5
  %1605 = load ptr, ptr %13, align 8, !tbaa !5
  %1606 = call i64 @f2c_idamax(ptr noundef %1604, ptr noundef %1605, ptr noundef @c__1)
  store i64 %1606, ptr %20, align 8, !tbaa !9
  %1607 = load ptr, ptr %13, align 8, !tbaa !5
  %1608 = load i64, ptr %20, align 8, !tbaa !9
  %1609 = sub nsw i64 %1608, 1
  %1610 = getelementptr inbounds double, ptr %1607, i64 %1609
  %1611 = load double, ptr %1610, align 8, !tbaa !11
  store double %1611, ptr %32, align 8, !tbaa !11
  br label %1612

1612:                                             ; preds = %1603, %1315
  br label %2314

1613:                                             ; preds = %1026
  %1614 = load i64, ptr %30, align 8, !tbaa !9
  %1615 = icmp eq i64 %1614, 0
  br i1 %1615, label %1616, label %1969

1616:                                             ; preds = %1613
  %1617 = load ptr, ptr %11, align 8, !tbaa !5
  %1618 = load i64, ptr %1617, align 8, !tbaa !9
  %1619 = sub nsw i64 %1618, 1
  store i64 %1619, ptr %14, align 8, !tbaa !9
  %1620 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %1620, ptr %20, align 8, !tbaa !9
  br label %1621

1621:                                             ; preds = %1629, %1616
  %1622 = load i64, ptr %20, align 8, !tbaa !9
  %1623 = load i64, ptr %14, align 8, !tbaa !9
  %1624 = icmp sle i64 %1622, %1623
  br i1 %1624, label %1625, label %1632

1625:                                             ; preds = %1621
  %1626 = load ptr, ptr %13, align 8, !tbaa !5
  %1627 = load i64, ptr %20, align 8, !tbaa !9
  %1628 = getelementptr inbounds double, ptr %1626, i64 %1627
  store double 0.000000e+00, ptr %1628, align 8, !tbaa !11
  br label %1629

1629:                                             ; preds = %1625
  %1630 = load i64, ptr %20, align 8, !tbaa !9
  %1631 = add nsw i64 %1630, 1
  store i64 %1631, ptr %20, align 8, !tbaa !9
  br label %1621, !llvm.loop !53

1632:                                             ; preds = %1621
  %1633 = load i64, ptr %22, align 8, !tbaa !9
  %1634 = sub nsw i64 %1633, 1
  store i64 %1634, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %1635

1635:                                             ; preds = %1683, %1632
  %1636 = load i64, ptr %21, align 8, !tbaa !9
  %1637 = load i64, ptr %14, align 8, !tbaa !9
  %1638 = icmp sle i64 %1636, %1637
  br i1 %1638, label %1639, label %1686

1639:                                             ; preds = %1635
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1640 = load i64, ptr %22, align 8, !tbaa !9
  %1641 = sub nsw i64 %1640, 1
  store i64 %1641, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1642

1642:                                             ; preds = %1675, %1639
  %1643 = load i64, ptr %20, align 8, !tbaa !9
  %1644 = load i64, ptr %15, align 8, !tbaa !9
  %1645 = icmp sle i64 %1643, %1644
  br i1 %1645, label %1646, label %1678

1646:                                             ; preds = %1642
  %1647 = load ptr, ptr %12, align 8, !tbaa !5
  %1648 = load i64, ptr %20, align 8, !tbaa !9
  %1649 = load i64, ptr %21, align 8, !tbaa !9
  %1650 = load i64, ptr %27, align 8, !tbaa !9
  %1651 = mul nsw i64 %1649, %1650
  %1652 = add nsw i64 %1648, %1651
  %1653 = getelementptr inbounds double, ptr %1647, i64 %1652
  %1654 = load double, ptr %1653, align 8, !tbaa !11
  store double %1654, ptr %17, align 8, !tbaa !11
  %1655 = load double, ptr %17, align 8, !tbaa !11
  %1656 = fcmp oge double %1655, 0.000000e+00
  br i1 %1656, label %1657, label %1659

1657:                                             ; preds = %1646
  %1658 = load double, ptr %17, align 8, !tbaa !11
  br label %1662

1659:                                             ; preds = %1646
  %1660 = load double, ptr %17, align 8, !tbaa !11
  %1661 = fneg double %1660
  br label %1662

1662:                                             ; preds = %1659, %1657
  %1663 = phi double [ %1658, %1657 ], [ %1661, %1659 ]
  store double %1663, ptr %26, align 8, !tbaa !11
  %1664 = load double, ptr %26, align 8, !tbaa !11
  %1665 = load ptr, ptr %13, align 8, !tbaa !5
  %1666 = load i64, ptr %20, align 8, !tbaa !9
  %1667 = load i64, ptr %22, align 8, !tbaa !9
  %1668 = add nsw i64 %1666, %1667
  %1669 = getelementptr inbounds double, ptr %1665, i64 %1668
  %1670 = load double, ptr %1669, align 8, !tbaa !11
  %1671 = fadd double %1670, %1664
  store double %1671, ptr %1669, align 8, !tbaa !11
  %1672 = load double, ptr %26, align 8, !tbaa !11
  %1673 = load double, ptr %24, align 8, !tbaa !11
  %1674 = fadd double %1673, %1672
  store double %1674, ptr %24, align 8, !tbaa !11
  br label %1675

1675:                                             ; preds = %1662
  %1676 = load i64, ptr %20, align 8, !tbaa !9
  %1677 = add nsw i64 %1676, 1
  store i64 %1677, ptr %20, align 8, !tbaa !9
  br label %1642, !llvm.loop !54

1678:                                             ; preds = %1642
  %1679 = load double, ptr %24, align 8, !tbaa !11
  %1680 = load ptr, ptr %13, align 8, !tbaa !5
  %1681 = load i64, ptr %21, align 8, !tbaa !9
  %1682 = getelementptr inbounds double, ptr %1680, i64 %1681
  store double %1679, ptr %1682, align 8, !tbaa !11
  br label %1683

1683:                                             ; preds = %1678
  %1684 = load i64, ptr %21, align 8, !tbaa !9
  %1685 = add nsw i64 %1684, 1
  store i64 %1685, ptr %21, align 8, !tbaa !9
  br label %1635, !llvm.loop !55

1686:                                             ; preds = %1635
  %1687 = load ptr, ptr %12, align 8, !tbaa !5
  %1688 = load i64, ptr %21, align 8, !tbaa !9
  %1689 = load i64, ptr %27, align 8, !tbaa !9
  %1690 = mul nsw i64 %1688, %1689
  %1691 = getelementptr inbounds double, ptr %1687, i64 %1690
  %1692 = load double, ptr %1691, align 8, !tbaa !11
  store double %1692, ptr %17, align 8, !tbaa !11
  %1693 = load double, ptr %17, align 8, !tbaa !11
  %1694 = fcmp oge double %1693, 0.000000e+00
  br i1 %1694, label %1695, label %1697

1695:                                             ; preds = %1686
  %1696 = load double, ptr %17, align 8, !tbaa !11
  br label %1700

1697:                                             ; preds = %1686
  %1698 = load double, ptr %17, align 8, !tbaa !11
  %1699 = fneg double %1698
  br label %1700

1700:                                             ; preds = %1697, %1695
  %1701 = phi double [ %1696, %1695 ], [ %1699, %1697 ]
  store double %1701, ptr %26, align 8, !tbaa !11
  %1702 = load double, ptr %26, align 8, !tbaa !11
  store double %1702, ptr %24, align 8, !tbaa !11
  %1703 = load i64, ptr %22, align 8, !tbaa !9
  %1704 = sub nsw i64 %1703, 1
  store i64 %1704, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %1705

1705:                                             ; preds = %1738, %1700
  %1706 = load i64, ptr %20, align 8, !tbaa !9
  %1707 = load i64, ptr %14, align 8, !tbaa !9
  %1708 = icmp sle i64 %1706, %1707
  br i1 %1708, label %1709, label %1741

1709:                                             ; preds = %1705
  %1710 = load ptr, ptr %12, align 8, !tbaa !5
  %1711 = load i64, ptr %20, align 8, !tbaa !9
  %1712 = load i64, ptr %21, align 8, !tbaa !9
  %1713 = load i64, ptr %27, align 8, !tbaa !9
  %1714 = mul nsw i64 %1712, %1713
  %1715 = add nsw i64 %1711, %1714
  %1716 = getelementptr inbounds double, ptr %1710, i64 %1715
  %1717 = load double, ptr %1716, align 8, !tbaa !11
  store double %1717, ptr %17, align 8, !tbaa !11
  %1718 = load double, ptr %17, align 8, !tbaa !11
  %1719 = fcmp oge double %1718, 0.000000e+00
  br i1 %1719, label %1720, label %1722

1720:                                             ; preds = %1709
  %1721 = load double, ptr %17, align 8, !tbaa !11
  br label %1725

1722:                                             ; preds = %1709
  %1723 = load double, ptr %17, align 8, !tbaa !11
  %1724 = fneg double %1723
  br label %1725

1725:                                             ; preds = %1722, %1720
  %1726 = phi double [ %1721, %1720 ], [ %1724, %1722 ]
  store double %1726, ptr %26, align 8, !tbaa !11
  %1727 = load double, ptr %26, align 8, !tbaa !11
  %1728 = load ptr, ptr %13, align 8, !tbaa !5
  %1729 = load i64, ptr %20, align 8, !tbaa !9
  %1730 = load i64, ptr %22, align 8, !tbaa !9
  %1731 = add nsw i64 %1729, %1730
  %1732 = getelementptr inbounds double, ptr %1728, i64 %1731
  %1733 = load double, ptr %1732, align 8, !tbaa !11
  %1734 = fadd double %1733, %1727
  store double %1734, ptr %1732, align 8, !tbaa !11
  %1735 = load double, ptr %26, align 8, !tbaa !11
  %1736 = load double, ptr %24, align 8, !tbaa !11
  %1737 = fadd double %1736, %1735
  store double %1737, ptr %24, align 8, !tbaa !11
  br label %1738

1738:                                             ; preds = %1725
  %1739 = load i64, ptr %20, align 8, !tbaa !9
  %1740 = add nsw i64 %1739, 1
  store i64 %1740, ptr %20, align 8, !tbaa !9
  br label %1705, !llvm.loop !56

1741:                                             ; preds = %1705
  %1742 = load double, ptr %24, align 8, !tbaa !11
  %1743 = load ptr, ptr %13, align 8, !tbaa !5
  %1744 = load i64, ptr %21, align 8, !tbaa !9
  %1745 = getelementptr inbounds double, ptr %1743, i64 %1744
  %1746 = load double, ptr %1745, align 8, !tbaa !11
  %1747 = fadd double %1746, %1742
  store double %1747, ptr %1745, align 8, !tbaa !11
  %1748 = load ptr, ptr %11, align 8, !tbaa !5
  %1749 = load i64, ptr %1748, align 8, !tbaa !9
  %1750 = sub nsw i64 %1749, 1
  store i64 %1750, ptr %14, align 8, !tbaa !9
  %1751 = load i64, ptr %22, align 8, !tbaa !9
  %1752 = add nsw i64 %1751, 1
  store i64 %1752, ptr %21, align 8, !tbaa !9
  br label %1753

1753:                                             ; preds = %1894, %1741
  %1754 = load i64, ptr %21, align 8, !tbaa !9
  %1755 = load i64, ptr %14, align 8, !tbaa !9
  %1756 = icmp sle i64 %1754, %1755
  br i1 %1756, label %1757, label %1897

1757:                                             ; preds = %1753
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1758 = load i64, ptr %21, align 8, !tbaa !9
  %1759 = sub nsw i64 %1758, 2
  %1760 = load i64, ptr %22, align 8, !tbaa !9
  %1761 = sub nsw i64 %1759, %1760
  store i64 %1761, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1762

1762:                                             ; preds = %1793, %1757
  %1763 = load i64, ptr %20, align 8, !tbaa !9
  %1764 = load i64, ptr %15, align 8, !tbaa !9
  %1765 = icmp sle i64 %1763, %1764
  br i1 %1765, label %1766, label %1796

1766:                                             ; preds = %1762
  %1767 = load ptr, ptr %12, align 8, !tbaa !5
  %1768 = load i64, ptr %20, align 8, !tbaa !9
  %1769 = load i64, ptr %21, align 8, !tbaa !9
  %1770 = load i64, ptr %27, align 8, !tbaa !9
  %1771 = mul nsw i64 %1769, %1770
  %1772 = add nsw i64 %1768, %1771
  %1773 = getelementptr inbounds double, ptr %1767, i64 %1772
  %1774 = load double, ptr %1773, align 8, !tbaa !11
  store double %1774, ptr %17, align 8, !tbaa !11
  %1775 = load double, ptr %17, align 8, !tbaa !11
  %1776 = fcmp oge double %1775, 0.000000e+00
  br i1 %1776, label %1777, label %1779

1777:                                             ; preds = %1766
  %1778 = load double, ptr %17, align 8, !tbaa !11
  br label %1782

1779:                                             ; preds = %1766
  %1780 = load double, ptr %17, align 8, !tbaa !11
  %1781 = fneg double %1780
  br label %1782

1782:                                             ; preds = %1779, %1777
  %1783 = phi double [ %1778, %1777 ], [ %1781, %1779 ]
  store double %1783, ptr %26, align 8, !tbaa !11
  %1784 = load double, ptr %26, align 8, !tbaa !11
  %1785 = load ptr, ptr %13, align 8, !tbaa !5
  %1786 = load i64, ptr %20, align 8, !tbaa !9
  %1787 = getelementptr inbounds double, ptr %1785, i64 %1786
  %1788 = load double, ptr %1787, align 8, !tbaa !11
  %1789 = fadd double %1788, %1784
  store double %1789, ptr %1787, align 8, !tbaa !11
  %1790 = load double, ptr %26, align 8, !tbaa !11
  %1791 = load double, ptr %24, align 8, !tbaa !11
  %1792 = fadd double %1791, %1790
  store double %1792, ptr %24, align 8, !tbaa !11
  br label %1793

1793:                                             ; preds = %1782
  %1794 = load i64, ptr %20, align 8, !tbaa !9
  %1795 = add nsw i64 %1794, 1
  store i64 %1795, ptr %20, align 8, !tbaa !9
  br label %1762, !llvm.loop !57

1796:                                             ; preds = %1762
  %1797 = load ptr, ptr %12, align 8, !tbaa !5
  %1798 = load i64, ptr %20, align 8, !tbaa !9
  %1799 = load i64, ptr %21, align 8, !tbaa !9
  %1800 = load i64, ptr %27, align 8, !tbaa !9
  %1801 = mul nsw i64 %1799, %1800
  %1802 = add nsw i64 %1798, %1801
  %1803 = getelementptr inbounds double, ptr %1797, i64 %1802
  %1804 = load double, ptr %1803, align 8, !tbaa !11
  store double %1804, ptr %17, align 8, !tbaa !11
  %1805 = load double, ptr %17, align 8, !tbaa !11
  %1806 = fcmp oge double %1805, 0.000000e+00
  br i1 %1806, label %1807, label %1809

1807:                                             ; preds = %1796
  %1808 = load double, ptr %17, align 8, !tbaa !11
  br label %1812

1809:                                             ; preds = %1796
  %1810 = load double, ptr %17, align 8, !tbaa !11
  %1811 = fneg double %1810
  br label %1812

1812:                                             ; preds = %1809, %1807
  %1813 = phi double [ %1808, %1807 ], [ %1811, %1809 ]
  store double %1813, ptr %26, align 8, !tbaa !11
  %1814 = load double, ptr %26, align 8, !tbaa !11
  %1815 = load double, ptr %24, align 8, !tbaa !11
  %1816 = fadd double %1815, %1814
  store double %1816, ptr %24, align 8, !tbaa !11
  %1817 = load double, ptr %24, align 8, !tbaa !11
  %1818 = load ptr, ptr %13, align 8, !tbaa !5
  %1819 = load i64, ptr %21, align 8, !tbaa !9
  %1820 = load i64, ptr %22, align 8, !tbaa !9
  %1821 = sub nsw i64 %1819, %1820
  %1822 = sub nsw i64 %1821, 1
  %1823 = getelementptr inbounds double, ptr %1818, i64 %1822
  %1824 = load double, ptr %1823, align 8, !tbaa !11
  %1825 = fadd double %1824, %1817
  store double %1825, ptr %1823, align 8, !tbaa !11
  %1826 = load i64, ptr %20, align 8, !tbaa !9
  %1827 = add nsw i64 %1826, 1
  store i64 %1827, ptr %20, align 8, !tbaa !9
  %1828 = load ptr, ptr %12, align 8, !tbaa !5
  %1829 = load i64, ptr %20, align 8, !tbaa !9
  %1830 = load i64, ptr %21, align 8, !tbaa !9
  %1831 = load i64, ptr %27, align 8, !tbaa !9
  %1832 = mul nsw i64 %1830, %1831
  %1833 = add nsw i64 %1829, %1832
  %1834 = getelementptr inbounds double, ptr %1828, i64 %1833
  %1835 = load double, ptr %1834, align 8, !tbaa !11
  store double %1835, ptr %17, align 8, !tbaa !11
  %1836 = load double, ptr %17, align 8, !tbaa !11
  %1837 = fcmp oge double %1836, 0.000000e+00
  br i1 %1837, label %1838, label %1840

1838:                                             ; preds = %1812
  %1839 = load double, ptr %17, align 8, !tbaa !11
  br label %1843

1840:                                             ; preds = %1812
  %1841 = load double, ptr %17, align 8, !tbaa !11
  %1842 = fneg double %1841
  br label %1843

1843:                                             ; preds = %1840, %1838
  %1844 = phi double [ %1839, %1838 ], [ %1842, %1840 ]
  store double %1844, ptr %26, align 8, !tbaa !11
  %1845 = load double, ptr %26, align 8, !tbaa !11
  store double %1845, ptr %24, align 8, !tbaa !11
  %1846 = load ptr, ptr %11, align 8, !tbaa !5
  %1847 = load i64, ptr %1846, align 8, !tbaa !9
  %1848 = sub nsw i64 %1847, 1
  store i64 %1848, ptr %15, align 8, !tbaa !9
  %1849 = load i64, ptr %21, align 8, !tbaa !9
  %1850 = add nsw i64 %1849, 1
  store i64 %1850, ptr %23, align 8, !tbaa !9
  br label %1851

1851:                                             ; preds = %1884, %1843
  %1852 = load i64, ptr %23, align 8, !tbaa !9
  %1853 = load i64, ptr %15, align 8, !tbaa !9
  %1854 = icmp sle i64 %1852, %1853
  br i1 %1854, label %1855, label %1887

1855:                                             ; preds = %1851
  %1856 = load i64, ptr %20, align 8, !tbaa !9
  %1857 = add nsw i64 %1856, 1
  store i64 %1857, ptr %20, align 8, !tbaa !9
  %1858 = load ptr, ptr %12, align 8, !tbaa !5
  %1859 = load i64, ptr %20, align 8, !tbaa !9
  %1860 = load i64, ptr %21, align 8, !tbaa !9
  %1861 = load i64, ptr %27, align 8, !tbaa !9
  %1862 = mul nsw i64 %1860, %1861
  %1863 = add nsw i64 %1859, %1862
  %1864 = getelementptr inbounds double, ptr %1858, i64 %1863
  %1865 = load double, ptr %1864, align 8, !tbaa !11
  store double %1865, ptr %17, align 8, !tbaa !11
  %1866 = load double, ptr %17, align 8, !tbaa !11
  %1867 = fcmp oge double %1866, 0.000000e+00
  br i1 %1867, label %1868, label %1870

1868:                                             ; preds = %1855
  %1869 = load double, ptr %17, align 8, !tbaa !11
  br label %1873

1870:                                             ; preds = %1855
  %1871 = load double, ptr %17, align 8, !tbaa !11
  %1872 = fneg double %1871
  br label %1873

1873:                                             ; preds = %1870, %1868
  %1874 = phi double [ %1869, %1868 ], [ %1872, %1870 ]
  store double %1874, ptr %26, align 8, !tbaa !11
  %1875 = load double, ptr %26, align 8, !tbaa !11
  %1876 = load ptr, ptr %13, align 8, !tbaa !5
  %1877 = load i64, ptr %23, align 8, !tbaa !9
  %1878 = getelementptr inbounds double, ptr %1876, i64 %1877
  %1879 = load double, ptr %1878, align 8, !tbaa !11
  %1880 = fadd double %1879, %1875
  store double %1880, ptr %1878, align 8, !tbaa !11
  %1881 = load double, ptr %26, align 8, !tbaa !11
  %1882 = load double, ptr %24, align 8, !tbaa !11
  %1883 = fadd double %1882, %1881
  store double %1883, ptr %24, align 8, !tbaa !11
  br label %1884

1884:                                             ; preds = %1873
  %1885 = load i64, ptr %23, align 8, !tbaa !9
  %1886 = add nsw i64 %1885, 1
  store i64 %1886, ptr %23, align 8, !tbaa !9
  br label %1851, !llvm.loop !58

1887:                                             ; preds = %1851
  %1888 = load double, ptr %24, align 8, !tbaa !11
  %1889 = load ptr, ptr %13, align 8, !tbaa !5
  %1890 = load i64, ptr %21, align 8, !tbaa !9
  %1891 = getelementptr inbounds double, ptr %1889, i64 %1890
  %1892 = load double, ptr %1891, align 8, !tbaa !11
  %1893 = fadd double %1892, %1888
  store double %1893, ptr %1891, align 8, !tbaa !11
  br label %1894

1894:                                             ; preds = %1887
  %1895 = load i64, ptr %21, align 8, !tbaa !9
  %1896 = add nsw i64 %1895, 1
  store i64 %1896, ptr %21, align 8, !tbaa !9
  br label %1753, !llvm.loop !59

1897:                                             ; preds = %1753
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %1898 = load i64, ptr %22, align 8, !tbaa !9
  %1899 = sub nsw i64 %1898, 2
  store i64 %1899, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1900

1900:                                             ; preds = %1931, %1897
  %1901 = load i64, ptr %20, align 8, !tbaa !9
  %1902 = load i64, ptr %14, align 8, !tbaa !9
  %1903 = icmp sle i64 %1901, %1902
  br i1 %1903, label %1904, label %1934

1904:                                             ; preds = %1900
  %1905 = load ptr, ptr %12, align 8, !tbaa !5
  %1906 = load i64, ptr %20, align 8, !tbaa !9
  %1907 = load i64, ptr %21, align 8, !tbaa !9
  %1908 = load i64, ptr %27, align 8, !tbaa !9
  %1909 = mul nsw i64 %1907, %1908
  %1910 = add nsw i64 %1906, %1909
  %1911 = getelementptr inbounds double, ptr %1905, i64 %1910
  %1912 = load double, ptr %1911, align 8, !tbaa !11
  store double %1912, ptr %17, align 8, !tbaa !11
  %1913 = load double, ptr %17, align 8, !tbaa !11
  %1914 = fcmp oge double %1913, 0.000000e+00
  br i1 %1914, label %1915, label %1917

1915:                                             ; preds = %1904
  %1916 = load double, ptr %17, align 8, !tbaa !11
  br label %1920

1917:                                             ; preds = %1904
  %1918 = load double, ptr %17, align 8, !tbaa !11
  %1919 = fneg double %1918
  br label %1920

1920:                                             ; preds = %1917, %1915
  %1921 = phi double [ %1916, %1915 ], [ %1919, %1917 ]
  store double %1921, ptr %26, align 8, !tbaa !11
  %1922 = load double, ptr %26, align 8, !tbaa !11
  %1923 = load ptr, ptr %13, align 8, !tbaa !5
  %1924 = load i64, ptr %20, align 8, !tbaa !9
  %1925 = getelementptr inbounds double, ptr %1923, i64 %1924
  %1926 = load double, ptr %1925, align 8, !tbaa !11
  %1927 = fadd double %1926, %1922
  store double %1927, ptr %1925, align 8, !tbaa !11
  %1928 = load double, ptr %26, align 8, !tbaa !11
  %1929 = load double, ptr %24, align 8, !tbaa !11
  %1930 = fadd double %1929, %1928
  store double %1930, ptr %24, align 8, !tbaa !11
  br label %1931

1931:                                             ; preds = %1920
  %1932 = load i64, ptr %20, align 8, !tbaa !9
  %1933 = add nsw i64 %1932, 1
  store i64 %1933, ptr %20, align 8, !tbaa !9
  br label %1900, !llvm.loop !60

1934:                                             ; preds = %1900
  %1935 = load ptr, ptr %12, align 8, !tbaa !5
  %1936 = load i64, ptr %20, align 8, !tbaa !9
  %1937 = load i64, ptr %21, align 8, !tbaa !9
  %1938 = load i64, ptr %27, align 8, !tbaa !9
  %1939 = mul nsw i64 %1937, %1938
  %1940 = add nsw i64 %1936, %1939
  %1941 = getelementptr inbounds double, ptr %1935, i64 %1940
  %1942 = load double, ptr %1941, align 8, !tbaa !11
  store double %1942, ptr %17, align 8, !tbaa !11
  %1943 = load double, ptr %17, align 8, !tbaa !11
  %1944 = fcmp oge double %1943, 0.000000e+00
  br i1 %1944, label %1945, label %1947

1945:                                             ; preds = %1934
  %1946 = load double, ptr %17, align 8, !tbaa !11
  br label %1950

1947:                                             ; preds = %1934
  %1948 = load double, ptr %17, align 8, !tbaa !11
  %1949 = fneg double %1948
  br label %1950

1950:                                             ; preds = %1947, %1945
  %1951 = phi double [ %1946, %1945 ], [ %1949, %1947 ]
  store double %1951, ptr %26, align 8, !tbaa !11
  %1952 = load double, ptr %26, align 8, !tbaa !11
  %1953 = load double, ptr %24, align 8, !tbaa !11
  %1954 = fadd double %1953, %1952
  store double %1954, ptr %24, align 8, !tbaa !11
  %1955 = load double, ptr %24, align 8, !tbaa !11
  %1956 = load ptr, ptr %13, align 8, !tbaa !5
  %1957 = load i64, ptr %20, align 8, !tbaa !9
  %1958 = getelementptr inbounds double, ptr %1956, i64 %1957
  %1959 = load double, ptr %1958, align 8, !tbaa !11
  %1960 = fadd double %1959, %1955
  store double %1960, ptr %1958, align 8, !tbaa !11
  %1961 = load ptr, ptr %11, align 8, !tbaa !5
  %1962 = load ptr, ptr %13, align 8, !tbaa !5
  %1963 = call i64 @f2c_idamax(ptr noundef %1961, ptr noundef %1962, ptr noundef @c__1)
  store i64 %1963, ptr %20, align 8, !tbaa !9
  %1964 = load ptr, ptr %13, align 8, !tbaa !5
  %1965 = load i64, ptr %20, align 8, !tbaa !9
  %1966 = sub nsw i64 %1965, 1
  %1967 = getelementptr inbounds double, ptr %1964, i64 %1966
  %1968 = load double, ptr %1967, align 8, !tbaa !11
  store double %1968, ptr %32, align 8, !tbaa !11
  br label %2313

1969:                                             ; preds = %1613
  %1970 = load ptr, ptr %11, align 8, !tbaa !5
  %1971 = load i64, ptr %1970, align 8, !tbaa !9
  %1972 = sub nsw i64 %1971, 1
  store i64 %1972, ptr %14, align 8, !tbaa !9
  %1973 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %1973, ptr %20, align 8, !tbaa !9
  br label %1974

1974:                                             ; preds = %1982, %1969
  %1975 = load i64, ptr %20, align 8, !tbaa !9
  %1976 = load i64, ptr %14, align 8, !tbaa !9
  %1977 = icmp sle i64 %1975, %1976
  br i1 %1977, label %1978, label %1985

1978:                                             ; preds = %1974
  %1979 = load ptr, ptr %13, align 8, !tbaa !5
  %1980 = load i64, ptr %20, align 8, !tbaa !9
  %1981 = getelementptr inbounds double, ptr %1979, i64 %1980
  store double 0.000000e+00, ptr %1981, align 8, !tbaa !11
  br label %1982

1982:                                             ; preds = %1978
  %1983 = load i64, ptr %20, align 8, !tbaa !9
  %1984 = add nsw i64 %1983, 1
  store i64 %1984, ptr %20, align 8, !tbaa !9
  br label %1974, !llvm.loop !61

1985:                                             ; preds = %1974
  %1986 = load ptr, ptr %12, align 8, !tbaa !5
  %1987 = getelementptr inbounds double, ptr %1986, i64 0
  %1988 = load double, ptr %1987, align 8, !tbaa !11
  %1989 = fcmp oge double %1988, 0.000000e+00
  br i1 %1989, label %1990, label %1994

1990:                                             ; preds = %1985
  %1991 = load ptr, ptr %12, align 8, !tbaa !5
  %1992 = getelementptr inbounds double, ptr %1991, i64 0
  %1993 = load double, ptr %1992, align 8, !tbaa !11
  br label %1999

1994:                                             ; preds = %1985
  %1995 = load ptr, ptr %12, align 8, !tbaa !5
  %1996 = getelementptr inbounds double, ptr %1995, i64 0
  %1997 = load double, ptr %1996, align 8, !tbaa !11
  %1998 = fneg double %1997
  br label %1999

1999:                                             ; preds = %1994, %1990
  %2000 = phi double [ %1993, %1990 ], [ %1998, %1994 ]
  store double %2000, ptr %24, align 8, !tbaa !11
  %2001 = load i64, ptr %22, align 8, !tbaa !9
  %2002 = sub nsw i64 %2001, 1
  store i64 %2002, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %2003

2003:                                             ; preds = %2032, %1999
  %2004 = load i64, ptr %20, align 8, !tbaa !9
  %2005 = load i64, ptr %14, align 8, !tbaa !9
  %2006 = icmp sle i64 %2004, %2005
  br i1 %2006, label %2007, label %2035

2007:                                             ; preds = %2003
  %2008 = load ptr, ptr %12, align 8, !tbaa !5
  %2009 = load i64, ptr %20, align 8, !tbaa !9
  %2010 = getelementptr inbounds double, ptr %2008, i64 %2009
  %2011 = load double, ptr %2010, align 8, !tbaa !11
  store double %2011, ptr %17, align 8, !tbaa !11
  %2012 = load double, ptr %17, align 8, !tbaa !11
  %2013 = fcmp oge double %2012, 0.000000e+00
  br i1 %2013, label %2014, label %2016

2014:                                             ; preds = %2007
  %2015 = load double, ptr %17, align 8, !tbaa !11
  br label %2019

2016:                                             ; preds = %2007
  %2017 = load double, ptr %17, align 8, !tbaa !11
  %2018 = fneg double %2017
  br label %2019

2019:                                             ; preds = %2016, %2014
  %2020 = phi double [ %2015, %2014 ], [ %2018, %2016 ]
  store double %2020, ptr %26, align 8, !tbaa !11
  %2021 = load double, ptr %26, align 8, !tbaa !11
  %2022 = load ptr, ptr %13, align 8, !tbaa !5
  %2023 = load i64, ptr %20, align 8, !tbaa !9
  %2024 = load i64, ptr %22, align 8, !tbaa !9
  %2025 = add nsw i64 %2023, %2024
  %2026 = getelementptr inbounds double, ptr %2022, i64 %2025
  %2027 = load double, ptr %2026, align 8, !tbaa !11
  %2028 = fadd double %2027, %2021
  store double %2028, ptr %2026, align 8, !tbaa !11
  %2029 = load double, ptr %26, align 8, !tbaa !11
  %2030 = load double, ptr %24, align 8, !tbaa !11
  %2031 = fadd double %2030, %2029
  store double %2031, ptr %24, align 8, !tbaa !11
  br label %2032

2032:                                             ; preds = %2019
  %2033 = load i64, ptr %20, align 8, !tbaa !9
  %2034 = add nsw i64 %2033, 1
  store i64 %2034, ptr %20, align 8, !tbaa !9
  br label %2003, !llvm.loop !62

2035:                                             ; preds = %2003
  %2036 = load double, ptr %24, align 8, !tbaa !11
  %2037 = load ptr, ptr %13, align 8, !tbaa !5
  %2038 = load i64, ptr %22, align 8, !tbaa !9
  %2039 = getelementptr inbounds double, ptr %2037, i64 %2038
  %2040 = load double, ptr %2039, align 8, !tbaa !11
  %2041 = fadd double %2040, %2036
  store double %2041, ptr %2039, align 8, !tbaa !11
  %2042 = load i64, ptr %22, align 8, !tbaa !9
  %2043 = sub nsw i64 %2042, 1
  store i64 %2043, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %2044

2044:                                             ; preds = %2183, %2035
  %2045 = load i64, ptr %21, align 8, !tbaa !9
  %2046 = load i64, ptr %14, align 8, !tbaa !9
  %2047 = icmp sle i64 %2045, %2046
  br i1 %2047, label %2048, label %2186

2048:                                             ; preds = %2044
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2049 = load i64, ptr %21, align 8, !tbaa !9
  %2050 = sub nsw i64 %2049, 2
  store i64 %2050, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2051

2051:                                             ; preds = %2082, %2048
  %2052 = load i64, ptr %20, align 8, !tbaa !9
  %2053 = load i64, ptr %15, align 8, !tbaa !9
  %2054 = icmp sle i64 %2052, %2053
  br i1 %2054, label %2055, label %2085

2055:                                             ; preds = %2051
  %2056 = load ptr, ptr %12, align 8, !tbaa !5
  %2057 = load i64, ptr %20, align 8, !tbaa !9
  %2058 = load i64, ptr %21, align 8, !tbaa !9
  %2059 = load i64, ptr %27, align 8, !tbaa !9
  %2060 = mul nsw i64 %2058, %2059
  %2061 = add nsw i64 %2057, %2060
  %2062 = getelementptr inbounds double, ptr %2056, i64 %2061
  %2063 = load double, ptr %2062, align 8, !tbaa !11
  store double %2063, ptr %17, align 8, !tbaa !11
  %2064 = load double, ptr %17, align 8, !tbaa !11
  %2065 = fcmp oge double %2064, 0.000000e+00
  br i1 %2065, label %2066, label %2068

2066:                                             ; preds = %2055
  %2067 = load double, ptr %17, align 8, !tbaa !11
  br label %2071

2068:                                             ; preds = %2055
  %2069 = load double, ptr %17, align 8, !tbaa !11
  %2070 = fneg double %2069
  br label %2071

2071:                                             ; preds = %2068, %2066
  %2072 = phi double [ %2067, %2066 ], [ %2070, %2068 ]
  store double %2072, ptr %26, align 8, !tbaa !11
  %2073 = load double, ptr %26, align 8, !tbaa !11
  %2074 = load ptr, ptr %13, align 8, !tbaa !5
  %2075 = load i64, ptr %20, align 8, !tbaa !9
  %2076 = getelementptr inbounds double, ptr %2074, i64 %2075
  %2077 = load double, ptr %2076, align 8, !tbaa !11
  %2078 = fadd double %2077, %2073
  store double %2078, ptr %2076, align 8, !tbaa !11
  %2079 = load double, ptr %26, align 8, !tbaa !11
  %2080 = load double, ptr %24, align 8, !tbaa !11
  %2081 = fadd double %2080, %2079
  store double %2081, ptr %24, align 8, !tbaa !11
  br label %2082

2082:                                             ; preds = %2071
  %2083 = load i64, ptr %20, align 8, !tbaa !9
  %2084 = add nsw i64 %2083, 1
  store i64 %2084, ptr %20, align 8, !tbaa !9
  br label %2051, !llvm.loop !63

2085:                                             ; preds = %2051
  %2086 = load ptr, ptr %12, align 8, !tbaa !5
  %2087 = load i64, ptr %20, align 8, !tbaa !9
  %2088 = load i64, ptr %21, align 8, !tbaa !9
  %2089 = load i64, ptr %27, align 8, !tbaa !9
  %2090 = mul nsw i64 %2088, %2089
  %2091 = add nsw i64 %2087, %2090
  %2092 = getelementptr inbounds double, ptr %2086, i64 %2091
  %2093 = load double, ptr %2092, align 8, !tbaa !11
  store double %2093, ptr %17, align 8, !tbaa !11
  %2094 = load double, ptr %17, align 8, !tbaa !11
  %2095 = fcmp oge double %2094, 0.000000e+00
  br i1 %2095, label %2096, label %2098

2096:                                             ; preds = %2085
  %2097 = load double, ptr %17, align 8, !tbaa !11
  br label %2101

2098:                                             ; preds = %2085
  %2099 = load double, ptr %17, align 8, !tbaa !11
  %2100 = fneg double %2099
  br label %2101

2101:                                             ; preds = %2098, %2096
  %2102 = phi double [ %2097, %2096 ], [ %2100, %2098 ]
  store double %2102, ptr %26, align 8, !tbaa !11
  %2103 = load double, ptr %26, align 8, !tbaa !11
  %2104 = load double, ptr %24, align 8, !tbaa !11
  %2105 = fadd double %2104, %2103
  store double %2105, ptr %24, align 8, !tbaa !11
  %2106 = load double, ptr %24, align 8, !tbaa !11
  %2107 = load ptr, ptr %13, align 8, !tbaa !5
  %2108 = load i64, ptr %21, align 8, !tbaa !9
  %2109 = sub nsw i64 %2108, 1
  %2110 = getelementptr inbounds double, ptr %2107, i64 %2109
  store double %2106, ptr %2110, align 8, !tbaa !11
  %2111 = load i64, ptr %20, align 8, !tbaa !9
  %2112 = add nsw i64 %2111, 1
  store i64 %2112, ptr %20, align 8, !tbaa !9
  %2113 = load ptr, ptr %12, align 8, !tbaa !5
  %2114 = load i64, ptr %20, align 8, !tbaa !9
  %2115 = load i64, ptr %21, align 8, !tbaa !9
  %2116 = load i64, ptr %27, align 8, !tbaa !9
  %2117 = mul nsw i64 %2115, %2116
  %2118 = add nsw i64 %2114, %2117
  %2119 = getelementptr inbounds double, ptr %2113, i64 %2118
  %2120 = load double, ptr %2119, align 8, !tbaa !11
  store double %2120, ptr %17, align 8, !tbaa !11
  %2121 = load double, ptr %17, align 8, !tbaa !11
  %2122 = fcmp oge double %2121, 0.000000e+00
  br i1 %2122, label %2123, label %2125

2123:                                             ; preds = %2101
  %2124 = load double, ptr %17, align 8, !tbaa !11
  br label %2128

2125:                                             ; preds = %2101
  %2126 = load double, ptr %17, align 8, !tbaa !11
  %2127 = fneg double %2126
  br label %2128

2128:                                             ; preds = %2125, %2123
  %2129 = phi double [ %2124, %2123 ], [ %2127, %2125 ]
  store double %2129, ptr %26, align 8, !tbaa !11
  %2130 = load double, ptr %26, align 8, !tbaa !11
  store double %2130, ptr %24, align 8, !tbaa !11
  %2131 = load ptr, ptr %11, align 8, !tbaa !5
  %2132 = load i64, ptr %2131, align 8, !tbaa !9
  %2133 = sub nsw i64 %2132, 1
  store i64 %2133, ptr %15, align 8, !tbaa !9
  %2134 = load i64, ptr %22, align 8, !tbaa !9
  %2135 = load i64, ptr %21, align 8, !tbaa !9
  %2136 = add nsw i64 %2134, %2135
  %2137 = add nsw i64 %2136, 1
  store i64 %2137, ptr %23, align 8, !tbaa !9
  br label %2138

2138:                                             ; preds = %2171, %2128
  %2139 = load i64, ptr %23, align 8, !tbaa !9
  %2140 = load i64, ptr %15, align 8, !tbaa !9
  %2141 = icmp sle i64 %2139, %2140
  br i1 %2141, label %2142, label %2174

2142:                                             ; preds = %2138
  %2143 = load i64, ptr %20, align 8, !tbaa !9
  %2144 = add nsw i64 %2143, 1
  store i64 %2144, ptr %20, align 8, !tbaa !9
  %2145 = load ptr, ptr %12, align 8, !tbaa !5
  %2146 = load i64, ptr %20, align 8, !tbaa !9
  %2147 = load i64, ptr %21, align 8, !tbaa !9
  %2148 = load i64, ptr %27, align 8, !tbaa !9
  %2149 = mul nsw i64 %2147, %2148
  %2150 = add nsw i64 %2146, %2149
  %2151 = getelementptr inbounds double, ptr %2145, i64 %2150
  %2152 = load double, ptr %2151, align 8, !tbaa !11
  store double %2152, ptr %17, align 8, !tbaa !11
  %2153 = load double, ptr %17, align 8, !tbaa !11
  %2154 = fcmp oge double %2153, 0.000000e+00
  br i1 %2154, label %2155, label %2157

2155:                                             ; preds = %2142
  %2156 = load double, ptr %17, align 8, !tbaa !11
  br label %2160

2157:                                             ; preds = %2142
  %2158 = load double, ptr %17, align 8, !tbaa !11
  %2159 = fneg double %2158
  br label %2160

2160:                                             ; preds = %2157, %2155
  %2161 = phi double [ %2156, %2155 ], [ %2159, %2157 ]
  store double %2161, ptr %26, align 8, !tbaa !11
  %2162 = load double, ptr %26, align 8, !tbaa !11
  %2163 = load double, ptr %24, align 8, !tbaa !11
  %2164 = fadd double %2163, %2162
  store double %2164, ptr %24, align 8, !tbaa !11
  %2165 = load double, ptr %26, align 8, !tbaa !11
  %2166 = load ptr, ptr %13, align 8, !tbaa !5
  %2167 = load i64, ptr %23, align 8, !tbaa !9
  %2168 = getelementptr inbounds double, ptr %2166, i64 %2167
  %2169 = load double, ptr %2168, align 8, !tbaa !11
  %2170 = fadd double %2169, %2165
  store double %2170, ptr %2168, align 8, !tbaa !11
  br label %2171

2171:                                             ; preds = %2160
  %2172 = load i64, ptr %23, align 8, !tbaa !9
  %2173 = add nsw i64 %2172, 1
  store i64 %2173, ptr %23, align 8, !tbaa !9
  br label %2138, !llvm.loop !64

2174:                                             ; preds = %2138
  %2175 = load double, ptr %24, align 8, !tbaa !11
  %2176 = load ptr, ptr %13, align 8, !tbaa !5
  %2177 = load i64, ptr %22, align 8, !tbaa !9
  %2178 = load i64, ptr %21, align 8, !tbaa !9
  %2179 = add nsw i64 %2177, %2178
  %2180 = getelementptr inbounds double, ptr %2176, i64 %2179
  %2181 = load double, ptr %2180, align 8, !tbaa !11
  %2182 = fadd double %2181, %2175
  store double %2182, ptr %2180, align 8, !tbaa !11
  br label %2183

2183:                                             ; preds = %2174
  %2184 = load i64, ptr %21, align 8, !tbaa !9
  %2185 = add nsw i64 %2184, 1
  store i64 %2185, ptr %21, align 8, !tbaa !9
  br label %2044, !llvm.loop !65

2186:                                             ; preds = %2044
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2187 = load i64, ptr %22, align 8, !tbaa !9
  %2188 = sub nsw i64 %2187, 2
  store i64 %2188, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2189

2189:                                             ; preds = %2220, %2186
  %2190 = load i64, ptr %20, align 8, !tbaa !9
  %2191 = load i64, ptr %14, align 8, !tbaa !9
  %2192 = icmp sle i64 %2190, %2191
  br i1 %2192, label %2193, label %2223

2193:                                             ; preds = %2189
  %2194 = load ptr, ptr %12, align 8, !tbaa !5
  %2195 = load i64, ptr %20, align 8, !tbaa !9
  %2196 = load i64, ptr %21, align 8, !tbaa !9
  %2197 = load i64, ptr %27, align 8, !tbaa !9
  %2198 = mul nsw i64 %2196, %2197
  %2199 = add nsw i64 %2195, %2198
  %2200 = getelementptr inbounds double, ptr %2194, i64 %2199
  %2201 = load double, ptr %2200, align 8, !tbaa !11
  store double %2201, ptr %17, align 8, !tbaa !11
  %2202 = load double, ptr %17, align 8, !tbaa !11
  %2203 = fcmp oge double %2202, 0.000000e+00
  br i1 %2203, label %2204, label %2206

2204:                                             ; preds = %2193
  %2205 = load double, ptr %17, align 8, !tbaa !11
  br label %2209

2206:                                             ; preds = %2193
  %2207 = load double, ptr %17, align 8, !tbaa !11
  %2208 = fneg double %2207
  br label %2209

2209:                                             ; preds = %2206, %2204
  %2210 = phi double [ %2205, %2204 ], [ %2208, %2206 ]
  store double %2210, ptr %26, align 8, !tbaa !11
  %2211 = load double, ptr %26, align 8, !tbaa !11
  %2212 = load ptr, ptr %13, align 8, !tbaa !5
  %2213 = load i64, ptr %20, align 8, !tbaa !9
  %2214 = getelementptr inbounds double, ptr %2212, i64 %2213
  %2215 = load double, ptr %2214, align 8, !tbaa !11
  %2216 = fadd double %2215, %2211
  store double %2216, ptr %2214, align 8, !tbaa !11
  %2217 = load double, ptr %26, align 8, !tbaa !11
  %2218 = load double, ptr %24, align 8, !tbaa !11
  %2219 = fadd double %2218, %2217
  store double %2219, ptr %24, align 8, !tbaa !11
  br label %2220

2220:                                             ; preds = %2209
  %2221 = load i64, ptr %20, align 8, !tbaa !9
  %2222 = add nsw i64 %2221, 1
  store i64 %2222, ptr %20, align 8, !tbaa !9
  br label %2189, !llvm.loop !66

2223:                                             ; preds = %2189
  %2224 = load ptr, ptr %12, align 8, !tbaa !5
  %2225 = load i64, ptr %20, align 8, !tbaa !9
  %2226 = load i64, ptr %21, align 8, !tbaa !9
  %2227 = load i64, ptr %27, align 8, !tbaa !9
  %2228 = mul nsw i64 %2226, %2227
  %2229 = add nsw i64 %2225, %2228
  %2230 = getelementptr inbounds double, ptr %2224, i64 %2229
  %2231 = load double, ptr %2230, align 8, !tbaa !11
  store double %2231, ptr %17, align 8, !tbaa !11
  %2232 = load double, ptr %17, align 8, !tbaa !11
  %2233 = fcmp oge double %2232, 0.000000e+00
  br i1 %2233, label %2234, label %2236

2234:                                             ; preds = %2223
  %2235 = load double, ptr %17, align 8, !tbaa !11
  br label %2239

2236:                                             ; preds = %2223
  %2237 = load double, ptr %17, align 8, !tbaa !11
  %2238 = fneg double %2237
  br label %2239

2239:                                             ; preds = %2236, %2234
  %2240 = phi double [ %2235, %2234 ], [ %2238, %2236 ]
  store double %2240, ptr %26, align 8, !tbaa !11
  %2241 = load double, ptr %26, align 8, !tbaa !11
  %2242 = load double, ptr %24, align 8, !tbaa !11
  %2243 = fadd double %2242, %2241
  store double %2243, ptr %24, align 8, !tbaa !11
  %2244 = load double, ptr %24, align 8, !tbaa !11
  %2245 = load ptr, ptr %13, align 8, !tbaa !5
  %2246 = load i64, ptr %20, align 8, !tbaa !9
  %2247 = getelementptr inbounds double, ptr %2245, i64 %2246
  store double %2244, ptr %2247, align 8, !tbaa !11
  %2248 = load ptr, ptr %11, align 8, !tbaa !5
  %2249 = load i64, ptr %2248, align 8, !tbaa !9
  store i64 %2249, ptr %14, align 8, !tbaa !9
  %2250 = load i64, ptr %22, align 8, !tbaa !9
  %2251 = add nsw i64 %2250, 1
  store i64 %2251, ptr %21, align 8, !tbaa !9
  br label %2252

2252:                                             ; preds = %2301, %2239
  %2253 = load i64, ptr %21, align 8, !tbaa !9
  %2254 = load i64, ptr %14, align 8, !tbaa !9
  %2255 = icmp sle i64 %2253, %2254
  br i1 %2255, label %2256, label %2304

2256:                                             ; preds = %2252
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2257 = load i64, ptr %22, align 8, !tbaa !9
  %2258 = sub nsw i64 %2257, 1
  store i64 %2258, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2259

2259:                                             ; preds = %2290, %2256
  %2260 = load i64, ptr %20, align 8, !tbaa !9
  %2261 = load i64, ptr %15, align 8, !tbaa !9
  %2262 = icmp sle i64 %2260, %2261
  br i1 %2262, label %2263, label %2293

2263:                                             ; preds = %2259
  %2264 = load ptr, ptr %12, align 8, !tbaa !5
  %2265 = load i64, ptr %20, align 8, !tbaa !9
  %2266 = load i64, ptr %21, align 8, !tbaa !9
  %2267 = load i64, ptr %27, align 8, !tbaa !9
  %2268 = mul nsw i64 %2266, %2267
  %2269 = add nsw i64 %2265, %2268
  %2270 = getelementptr inbounds double, ptr %2264, i64 %2269
  %2271 = load double, ptr %2270, align 8, !tbaa !11
  store double %2271, ptr %17, align 8, !tbaa !11
  %2272 = load double, ptr %17, align 8, !tbaa !11
  %2273 = fcmp oge double %2272, 0.000000e+00
  br i1 %2273, label %2274, label %2276

2274:                                             ; preds = %2263
  %2275 = load double, ptr %17, align 8, !tbaa !11
  br label %2279

2276:                                             ; preds = %2263
  %2277 = load double, ptr %17, align 8, !tbaa !11
  %2278 = fneg double %2277
  br label %2279

2279:                                             ; preds = %2276, %2274
  %2280 = phi double [ %2275, %2274 ], [ %2278, %2276 ]
  store double %2280, ptr %26, align 8, !tbaa !11
  %2281 = load double, ptr %26, align 8, !tbaa !11
  %2282 = load ptr, ptr %13, align 8, !tbaa !5
  %2283 = load i64, ptr %20, align 8, !tbaa !9
  %2284 = getelementptr inbounds double, ptr %2282, i64 %2283
  %2285 = load double, ptr %2284, align 8, !tbaa !11
  %2286 = fadd double %2285, %2281
  store double %2286, ptr %2284, align 8, !tbaa !11
  %2287 = load double, ptr %26, align 8, !tbaa !11
  %2288 = load double, ptr %24, align 8, !tbaa !11
  %2289 = fadd double %2288, %2287
  store double %2289, ptr %24, align 8, !tbaa !11
  br label %2290

2290:                                             ; preds = %2279
  %2291 = load i64, ptr %20, align 8, !tbaa !9
  %2292 = add nsw i64 %2291, 1
  store i64 %2292, ptr %20, align 8, !tbaa !9
  br label %2259, !llvm.loop !67

2293:                                             ; preds = %2259
  %2294 = load double, ptr %24, align 8, !tbaa !11
  %2295 = load ptr, ptr %13, align 8, !tbaa !5
  %2296 = load i64, ptr %21, align 8, !tbaa !9
  %2297 = sub nsw i64 %2296, 1
  %2298 = getelementptr inbounds double, ptr %2295, i64 %2297
  %2299 = load double, ptr %2298, align 8, !tbaa !11
  %2300 = fadd double %2299, %2294
  store double %2300, ptr %2298, align 8, !tbaa !11
  br label %2301

2301:                                             ; preds = %2293
  %2302 = load i64, ptr %21, align 8, !tbaa !9
  %2303 = add nsw i64 %2302, 1
  store i64 %2303, ptr %21, align 8, !tbaa !9
  br label %2252, !llvm.loop !68

2304:                                             ; preds = %2252
  %2305 = load ptr, ptr %11, align 8, !tbaa !5
  %2306 = load ptr, ptr %13, align 8, !tbaa !5
  %2307 = call i64 @f2c_idamax(ptr noundef %2305, ptr noundef %2306, ptr noundef @c__1)
  store i64 %2307, ptr %20, align 8, !tbaa !9
  %2308 = load ptr, ptr %13, align 8, !tbaa !5
  %2309 = load i64, ptr %20, align 8, !tbaa !9
  %2310 = sub nsw i64 %2309, 1
  %2311 = getelementptr inbounds double, ptr %2308, i64 %2310
  %2312 = load double, ptr %2311, align 8, !tbaa !11
  store double %2312, ptr %32, align 8, !tbaa !11
  br label %2313

2313:                                             ; preds = %2304, %1950
  br label %2314

2314:                                             ; preds = %2313, %1612
  br label %2315

2315:                                             ; preds = %2314, %1025
  br label %2924

2316:                                             ; preds = %304
  %2317 = load ptr, ptr %8, align 8, !tbaa !5
  %2318 = call i64 @lsame_(ptr noundef %2317, ptr noundef @.str.5)
  %2319 = icmp ne i64 %2318, 0
  br i1 %2319, label %2324, label %2320

2320:                                             ; preds = %2316
  %2321 = load ptr, ptr %8, align 8, !tbaa !5
  %2322 = call i64 @lsame_(ptr noundef %2321, ptr noundef @.str.6)
  %2323 = icmp ne i64 %2322, 0
  br i1 %2323, label %2324, label %2923

2324:                                             ; preds = %2320, %2316
  %2325 = load ptr, ptr %11, align 8, !tbaa !5
  %2326 = load i64, ptr %2325, align 8, !tbaa !9
  %2327 = add nsw i64 %2326, 1
  %2328 = sdiv i64 %2327, 2
  store i64 %2328, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  store double 1.000000e+00, ptr %24, align 8, !tbaa !11
  %2329 = load i64, ptr %29, align 8, !tbaa !9
  %2330 = icmp eq i64 %2329, 1
  br i1 %2330, label %2331, label %2629

2331:                                             ; preds = %2324
  %2332 = load i64, ptr %28, align 8, !tbaa !9
  %2333 = icmp eq i64 %2332, 1
  br i1 %2333, label %2334, label %2463

2334:                                             ; preds = %2331
  %2335 = load i64, ptr %30, align 8, !tbaa !9
  %2336 = icmp eq i64 %2335, 0
  br i1 %2336, label %2337, label %2403

2337:                                             ; preds = %2334
  %2338 = load i64, ptr %22, align 8, !tbaa !9
  %2339 = sub nsw i64 %2338, 3
  store i64 %2339, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2340

2340:                                             ; preds = %2360, %2337
  %2341 = load i64, ptr %21, align 8, !tbaa !9
  %2342 = load i64, ptr %14, align 8, !tbaa !9
  %2343 = icmp sle i64 %2341, %2342
  br i1 %2343, label %2344, label %2363

2344:                                             ; preds = %2340
  %2345 = load i64, ptr %22, align 8, !tbaa !9
  %2346 = load i64, ptr %21, align 8, !tbaa !9
  %2347 = sub nsw i64 %2345, %2346
  %2348 = sub nsw i64 %2347, 2
  store i64 %2348, ptr %15, align 8, !tbaa !9
  %2349 = load ptr, ptr %12, align 8, !tbaa !5
  %2350 = load i64, ptr %22, align 8, !tbaa !9
  %2351 = load i64, ptr %21, align 8, !tbaa !9
  %2352 = add nsw i64 %2350, %2351
  %2353 = add nsw i64 %2352, 1
  %2354 = load i64, ptr %21, align 8, !tbaa !9
  %2355 = load i64, ptr %27, align 8, !tbaa !9
  %2356 = mul nsw i64 %2354, %2355
  %2357 = add nsw i64 %2353, %2356
  %2358 = getelementptr inbounds double, ptr %2349, i64 %2357
  %2359 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2358, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2360

2360:                                             ; preds = %2344
  %2361 = load i64, ptr %21, align 8, !tbaa !9
  %2362 = add nsw i64 %2361, 1
  store i64 %2362, ptr %21, align 8, !tbaa !9
  br label %2340, !llvm.loop !69

2363:                                             ; preds = %2340
  %2364 = load i64, ptr %22, align 8, !tbaa !9
  %2365 = sub nsw i64 %2364, 1
  store i64 %2365, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2366

2366:                                             ; preds = %2381, %2363
  %2367 = load i64, ptr %21, align 8, !tbaa !9
  %2368 = load i64, ptr %14, align 8, !tbaa !9
  %2369 = icmp sle i64 %2367, %2368
  br i1 %2369, label %2370, label %2384

2370:                                             ; preds = %2366
  %2371 = load i64, ptr %22, align 8, !tbaa !9
  %2372 = load i64, ptr %21, align 8, !tbaa !9
  %2373 = add nsw i64 %2371, %2372
  %2374 = sub nsw i64 %2373, 1
  store i64 %2374, ptr %15, align 8, !tbaa !9
  %2375 = load ptr, ptr %12, align 8, !tbaa !5
  %2376 = load i64, ptr %21, align 8, !tbaa !9
  %2377 = load i64, ptr %27, align 8, !tbaa !9
  %2378 = mul nsw i64 %2376, %2377
  %2379 = getelementptr inbounds double, ptr %2375, i64 %2378
  %2380 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2379, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2381

2381:                                             ; preds = %2370
  %2382 = load i64, ptr %21, align 8, !tbaa !9
  %2383 = add nsw i64 %2382, 1
  store i64 %2383, ptr %21, align 8, !tbaa !9
  br label %2366, !llvm.loop !70

2384:                                             ; preds = %2366
  %2385 = load double, ptr %24, align 8, !tbaa !11
  %2386 = load double, ptr %24, align 8, !tbaa !11
  %2387 = fadd double %2386, %2385
  store double %2387, ptr %24, align 8, !tbaa !11
  %2388 = load i64, ptr %22, align 8, !tbaa !9
  %2389 = sub nsw i64 %2388, 1
  store i64 %2389, ptr %14, align 8, !tbaa !9
  %2390 = load i64, ptr %27, align 8, !tbaa !9
  %2391 = add nsw i64 %2390, 1
  store i64 %2391, ptr %15, align 8, !tbaa !9
  %2392 = load ptr, ptr %12, align 8, !tbaa !5
  %2393 = load i64, ptr %22, align 8, !tbaa !9
  %2394 = getelementptr inbounds double, ptr %2392, i64 %2393
  %2395 = call i32 @dlassq_(ptr noundef %14, ptr noundef %2394, ptr noundef %15, ptr noundef %31, ptr noundef %24)
  %2396 = load i64, ptr %27, align 8, !tbaa !9
  %2397 = add nsw i64 %2396, 1
  store i64 %2397, ptr %14, align 8, !tbaa !9
  %2398 = load ptr, ptr %12, align 8, !tbaa !5
  %2399 = load i64, ptr %22, align 8, !tbaa !9
  %2400 = sub nsw i64 %2399, 1
  %2401 = getelementptr inbounds double, ptr %2398, i64 %2400
  %2402 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2401, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  br label %2462

2403:                                             ; preds = %2334
  %2404 = load i64, ptr %22, align 8, !tbaa !9
  %2405 = sub nsw i64 %2404, 1
  store i64 %2405, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2406

2406:                                             ; preds = %2425, %2403
  %2407 = load i64, ptr %21, align 8, !tbaa !9
  %2408 = load i64, ptr %14, align 8, !tbaa !9
  %2409 = icmp sle i64 %2407, %2408
  br i1 %2409, label %2410, label %2428

2410:                                             ; preds = %2406
  %2411 = load ptr, ptr %11, align 8, !tbaa !5
  %2412 = load i64, ptr %2411, align 8, !tbaa !9
  %2413 = load i64, ptr %21, align 8, !tbaa !9
  %2414 = sub nsw i64 %2412, %2413
  %2415 = sub nsw i64 %2414, 1
  store i64 %2415, ptr %15, align 8, !tbaa !9
  %2416 = load ptr, ptr %12, align 8, !tbaa !5
  %2417 = load i64, ptr %21, align 8, !tbaa !9
  %2418 = add nsw i64 %2417, 1
  %2419 = load i64, ptr %21, align 8, !tbaa !9
  %2420 = load i64, ptr %27, align 8, !tbaa !9
  %2421 = mul nsw i64 %2419, %2420
  %2422 = add nsw i64 %2418, %2421
  %2423 = getelementptr inbounds double, ptr %2416, i64 %2422
  %2424 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2423, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2425

2425:                                             ; preds = %2410
  %2426 = load i64, ptr %21, align 8, !tbaa !9
  %2427 = add nsw i64 %2426, 1
  store i64 %2427, ptr %21, align 8, !tbaa !9
  br label %2406, !llvm.loop !71

2428:                                             ; preds = %2406
  %2429 = load i64, ptr %22, align 8, !tbaa !9
  %2430 = sub nsw i64 %2429, 2
  store i64 %2430, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2431

2431:                                             ; preds = %2443, %2428
  %2432 = load i64, ptr %21, align 8, !tbaa !9
  %2433 = load i64, ptr %14, align 8, !tbaa !9
  %2434 = icmp sle i64 %2432, %2433
  br i1 %2434, label %2435, label %2446

2435:                                             ; preds = %2431
  %2436 = load ptr, ptr %12, align 8, !tbaa !5
  %2437 = load i64, ptr %21, align 8, !tbaa !9
  %2438 = add nsw i64 %2437, 1
  %2439 = load i64, ptr %27, align 8, !tbaa !9
  %2440 = mul nsw i64 %2438, %2439
  %2441 = getelementptr inbounds double, ptr %2436, i64 %2440
  %2442 = call i32 @dlassq_(ptr noundef %21, ptr noundef %2441, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2443

2443:                                             ; preds = %2435
  %2444 = load i64, ptr %21, align 8, !tbaa !9
  %2445 = add nsw i64 %2444, 1
  store i64 %2445, ptr %21, align 8, !tbaa !9
  br label %2431, !llvm.loop !72

2446:                                             ; preds = %2431
  %2447 = load double, ptr %24, align 8, !tbaa !11
  %2448 = load double, ptr %24, align 8, !tbaa !11
  %2449 = fadd double %2448, %2447
  store double %2449, ptr %24, align 8, !tbaa !11
  %2450 = load i64, ptr %27, align 8, !tbaa !9
  %2451 = add nsw i64 %2450, 1
  store i64 %2451, ptr %14, align 8, !tbaa !9
  %2452 = load ptr, ptr %12, align 8, !tbaa !5
  %2453 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2452, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  %2454 = load i64, ptr %22, align 8, !tbaa !9
  %2455 = sub nsw i64 %2454, 1
  store i64 %2455, ptr %14, align 8, !tbaa !9
  %2456 = load i64, ptr %27, align 8, !tbaa !9
  %2457 = add nsw i64 %2456, 1
  store i64 %2457, ptr %15, align 8, !tbaa !9
  %2458 = load ptr, ptr %12, align 8, !tbaa !5
  %2459 = load i64, ptr %27, align 8, !tbaa !9
  %2460 = getelementptr inbounds double, ptr %2458, i64 %2459
  %2461 = call i32 @dlassq_(ptr noundef %14, ptr noundef %2460, ptr noundef %15, ptr noundef %31, ptr noundef %24)
  br label %2462

2462:                                             ; preds = %2446, %2384
  br label %2628

2463:                                             ; preds = %2331
  %2464 = load i64, ptr %30, align 8, !tbaa !9
  %2465 = icmp eq i64 %2464, 0
  br i1 %2465, label %2466, label %2552

2466:                                             ; preds = %2463
  %2467 = load i64, ptr %22, align 8, !tbaa !9
  %2468 = sub nsw i64 %2467, 2
  store i64 %2468, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %2469

2469:                                             ; preds = %2482, %2466
  %2470 = load i64, ptr %21, align 8, !tbaa !9
  %2471 = load i64, ptr %14, align 8, !tbaa !9
  %2472 = icmp sle i64 %2470, %2471
  br i1 %2472, label %2473, label %2485

2473:                                             ; preds = %2469
  %2474 = load ptr, ptr %12, align 8, !tbaa !5
  %2475 = load i64, ptr %22, align 8, !tbaa !9
  %2476 = load i64, ptr %21, align 8, !tbaa !9
  %2477 = add nsw i64 %2475, %2476
  %2478 = load i64, ptr %27, align 8, !tbaa !9
  %2479 = mul nsw i64 %2477, %2478
  %2480 = getelementptr inbounds double, ptr %2474, i64 %2479
  %2481 = call i32 @dlassq_(ptr noundef %21, ptr noundef %2480, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2482

2482:                                             ; preds = %2473
  %2483 = load i64, ptr %21, align 8, !tbaa !9
  %2484 = add nsw i64 %2483, 1
  store i64 %2484, ptr %21, align 8, !tbaa !9
  br label %2469, !llvm.loop !73

2485:                                             ; preds = %2469
  %2486 = load i64, ptr %22, align 8, !tbaa !9
  %2487 = sub nsw i64 %2486, 2
  store i64 %2487, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2488

2488:                                             ; preds = %2499, %2485
  %2489 = load i64, ptr %21, align 8, !tbaa !9
  %2490 = load i64, ptr %14, align 8, !tbaa !9
  %2491 = icmp sle i64 %2489, %2490
  br i1 %2491, label %2492, label %2502

2492:                                             ; preds = %2488
  %2493 = load ptr, ptr %12, align 8, !tbaa !5
  %2494 = load i64, ptr %21, align 8, !tbaa !9
  %2495 = load i64, ptr %27, align 8, !tbaa !9
  %2496 = mul nsw i64 %2494, %2495
  %2497 = getelementptr inbounds double, ptr %2493, i64 %2496
  %2498 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2497, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2499

2499:                                             ; preds = %2492
  %2500 = load i64, ptr %21, align 8, !tbaa !9
  %2501 = add nsw i64 %2500, 1
  store i64 %2501, ptr %21, align 8, !tbaa !9
  br label %2488, !llvm.loop !74

2502:                                             ; preds = %2488
  %2503 = load i64, ptr %22, align 8, !tbaa !9
  %2504 = sub nsw i64 %2503, 2
  store i64 %2504, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2505

2505:                                             ; preds = %2526, %2502
  %2506 = load i64, ptr %21, align 8, !tbaa !9
  %2507 = load i64, ptr %14, align 8, !tbaa !9
  %2508 = icmp sle i64 %2506, %2507
  br i1 %2508, label %2509, label %2529

2509:                                             ; preds = %2505
  %2510 = load i64, ptr %22, align 8, !tbaa !9
  %2511 = load i64, ptr %21, align 8, !tbaa !9
  %2512 = sub nsw i64 %2510, %2511
  %2513 = sub nsw i64 %2512, 1
  store i64 %2513, ptr %15, align 8, !tbaa !9
  %2514 = load ptr, ptr %12, align 8, !tbaa !5
  %2515 = load i64, ptr %21, align 8, !tbaa !9
  %2516 = add nsw i64 %2515, 1
  %2517 = load i64, ptr %21, align 8, !tbaa !9
  %2518 = load i64, ptr %22, align 8, !tbaa !9
  %2519 = add nsw i64 %2517, %2518
  %2520 = sub nsw i64 %2519, 1
  %2521 = load i64, ptr %27, align 8, !tbaa !9
  %2522 = mul nsw i64 %2520, %2521
  %2523 = add nsw i64 %2516, %2522
  %2524 = getelementptr inbounds double, ptr %2514, i64 %2523
  %2525 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2524, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2526

2526:                                             ; preds = %2509
  %2527 = load i64, ptr %21, align 8, !tbaa !9
  %2528 = add nsw i64 %2527, 1
  store i64 %2528, ptr %21, align 8, !tbaa !9
  br label %2505, !llvm.loop !75

2529:                                             ; preds = %2505
  %2530 = load double, ptr %24, align 8, !tbaa !11
  %2531 = load double, ptr %24, align 8, !tbaa !11
  %2532 = fadd double %2531, %2530
  store double %2532, ptr %24, align 8, !tbaa !11
  %2533 = load i64, ptr %22, align 8, !tbaa !9
  %2534 = sub nsw i64 %2533, 1
  store i64 %2534, ptr %14, align 8, !tbaa !9
  %2535 = load i64, ptr %27, align 8, !tbaa !9
  %2536 = add nsw i64 %2535, 1
  store i64 %2536, ptr %15, align 8, !tbaa !9
  %2537 = load ptr, ptr %12, align 8, !tbaa !5
  %2538 = load i64, ptr %22, align 8, !tbaa !9
  %2539 = load i64, ptr %27, align 8, !tbaa !9
  %2540 = mul nsw i64 %2538, %2539
  %2541 = getelementptr inbounds double, ptr %2537, i64 %2540
  %2542 = call i32 @dlassq_(ptr noundef %14, ptr noundef %2541, ptr noundef %15, ptr noundef %31, ptr noundef %24)
  %2543 = load i64, ptr %27, align 8, !tbaa !9
  %2544 = add nsw i64 %2543, 1
  store i64 %2544, ptr %14, align 8, !tbaa !9
  %2545 = load ptr, ptr %12, align 8, !tbaa !5
  %2546 = load i64, ptr %22, align 8, !tbaa !9
  %2547 = sub nsw i64 %2546, 1
  %2548 = load i64, ptr %27, align 8, !tbaa !9
  %2549 = mul nsw i64 %2547, %2548
  %2550 = getelementptr inbounds double, ptr %2545, i64 %2549
  %2551 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2550, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  br label %2627

2552:                                             ; preds = %2463
  %2553 = load i64, ptr %22, align 8, !tbaa !9
  %2554 = sub nsw i64 %2553, 1
  store i64 %2554, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %2555

2555:                                             ; preds = %2566, %2552
  %2556 = load i64, ptr %21, align 8, !tbaa !9
  %2557 = load i64, ptr %14, align 8, !tbaa !9
  %2558 = icmp sle i64 %2556, %2557
  br i1 %2558, label %2559, label %2569

2559:                                             ; preds = %2555
  %2560 = load ptr, ptr %12, align 8, !tbaa !5
  %2561 = load i64, ptr %21, align 8, !tbaa !9
  %2562 = load i64, ptr %27, align 8, !tbaa !9
  %2563 = mul nsw i64 %2561, %2562
  %2564 = getelementptr inbounds double, ptr %2560, i64 %2563
  %2565 = call i32 @dlassq_(ptr noundef %21, ptr noundef %2564, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2566

2566:                                             ; preds = %2559
  %2567 = load i64, ptr %21, align 8, !tbaa !9
  %2568 = add nsw i64 %2567, 1
  store i64 %2568, ptr %21, align 8, !tbaa !9
  br label %2555, !llvm.loop !76

2569:                                             ; preds = %2555
  %2570 = load ptr, ptr %11, align 8, !tbaa !5
  %2571 = load i64, ptr %2570, align 8, !tbaa !9
  %2572 = sub nsw i64 %2571, 1
  store i64 %2572, ptr %14, align 8, !tbaa !9
  %2573 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %2573, ptr %21, align 8, !tbaa !9
  br label %2574

2574:                                             ; preds = %2585, %2569
  %2575 = load i64, ptr %21, align 8, !tbaa !9
  %2576 = load i64, ptr %14, align 8, !tbaa !9
  %2577 = icmp sle i64 %2575, %2576
  br i1 %2577, label %2578, label %2588

2578:                                             ; preds = %2574
  %2579 = load ptr, ptr %12, align 8, !tbaa !5
  %2580 = load i64, ptr %21, align 8, !tbaa !9
  %2581 = load i64, ptr %27, align 8, !tbaa !9
  %2582 = mul nsw i64 %2580, %2581
  %2583 = getelementptr inbounds double, ptr %2579, i64 %2582
  %2584 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2583, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2585

2585:                                             ; preds = %2578
  %2586 = load i64, ptr %21, align 8, !tbaa !9
  %2587 = add nsw i64 %2586, 1
  store i64 %2587, ptr %21, align 8, !tbaa !9
  br label %2574, !llvm.loop !77

2588:                                             ; preds = %2574
  %2589 = load i64, ptr %22, align 8, !tbaa !9
  %2590 = sub nsw i64 %2589, 3
  store i64 %2590, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2591

2591:                                             ; preds = %2609, %2588
  %2592 = load i64, ptr %21, align 8, !tbaa !9
  %2593 = load i64, ptr %14, align 8, !tbaa !9
  %2594 = icmp sle i64 %2592, %2593
  br i1 %2594, label %2595, label %2612

2595:                                             ; preds = %2591
  %2596 = load i64, ptr %22, align 8, !tbaa !9
  %2597 = load i64, ptr %21, align 8, !tbaa !9
  %2598 = sub nsw i64 %2596, %2597
  %2599 = sub nsw i64 %2598, 2
  store i64 %2599, ptr %15, align 8, !tbaa !9
  %2600 = load ptr, ptr %12, align 8, !tbaa !5
  %2601 = load i64, ptr %21, align 8, !tbaa !9
  %2602 = add nsw i64 %2601, 2
  %2603 = load i64, ptr %21, align 8, !tbaa !9
  %2604 = load i64, ptr %27, align 8, !tbaa !9
  %2605 = mul nsw i64 %2603, %2604
  %2606 = add nsw i64 %2602, %2605
  %2607 = getelementptr inbounds double, ptr %2600, i64 %2606
  %2608 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2607, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2609

2609:                                             ; preds = %2595
  %2610 = load i64, ptr %21, align 8, !tbaa !9
  %2611 = add nsw i64 %2610, 1
  store i64 %2611, ptr %21, align 8, !tbaa !9
  br label %2591, !llvm.loop !78

2612:                                             ; preds = %2591
  %2613 = load double, ptr %24, align 8, !tbaa !11
  %2614 = load double, ptr %24, align 8, !tbaa !11
  %2615 = fadd double %2614, %2613
  store double %2615, ptr %24, align 8, !tbaa !11
  %2616 = load i64, ptr %27, align 8, !tbaa !9
  %2617 = add nsw i64 %2616, 1
  store i64 %2617, ptr %14, align 8, !tbaa !9
  %2618 = load ptr, ptr %12, align 8, !tbaa !5
  %2619 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2618, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  %2620 = load i64, ptr %22, align 8, !tbaa !9
  %2621 = sub nsw i64 %2620, 1
  store i64 %2621, ptr %14, align 8, !tbaa !9
  %2622 = load i64, ptr %27, align 8, !tbaa !9
  %2623 = add nsw i64 %2622, 1
  store i64 %2623, ptr %15, align 8, !tbaa !9
  %2624 = load ptr, ptr %12, align 8, !tbaa !5
  %2625 = getelementptr inbounds double, ptr %2624, i64 1
  %2626 = call i32 @dlassq_(ptr noundef %14, ptr noundef %2625, ptr noundef %15, ptr noundef %31, ptr noundef %24)
  br label %2627

2627:                                             ; preds = %2612, %2529
  br label %2628

2628:                                             ; preds = %2627, %2462
  br label %2918

2629:                                             ; preds = %2324
  %2630 = load i64, ptr %28, align 8, !tbaa !9
  %2631 = icmp eq i64 %2630, 1
  br i1 %2631, label %2632, label %2754

2632:                                             ; preds = %2629
  %2633 = load i64, ptr %30, align 8, !tbaa !9
  %2634 = icmp eq i64 %2633, 0
  br i1 %2634, label %2635, label %2698

2635:                                             ; preds = %2632
  %2636 = load i64, ptr %22, align 8, !tbaa !9
  %2637 = sub nsw i64 %2636, 2
  store i64 %2637, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2638

2638:                                             ; preds = %2658, %2635
  %2639 = load i64, ptr %21, align 8, !tbaa !9
  %2640 = load i64, ptr %14, align 8, !tbaa !9
  %2641 = icmp sle i64 %2639, %2640
  br i1 %2641, label %2642, label %2661

2642:                                             ; preds = %2638
  %2643 = load i64, ptr %22, align 8, !tbaa !9
  %2644 = load i64, ptr %21, align 8, !tbaa !9
  %2645 = sub nsw i64 %2643, %2644
  %2646 = sub nsw i64 %2645, 1
  store i64 %2646, ptr %15, align 8, !tbaa !9
  %2647 = load ptr, ptr %12, align 8, !tbaa !5
  %2648 = load i64, ptr %22, align 8, !tbaa !9
  %2649 = load i64, ptr %21, align 8, !tbaa !9
  %2650 = add nsw i64 %2648, %2649
  %2651 = add nsw i64 %2650, 2
  %2652 = load i64, ptr %21, align 8, !tbaa !9
  %2653 = load i64, ptr %27, align 8, !tbaa !9
  %2654 = mul nsw i64 %2652, %2653
  %2655 = add nsw i64 %2651, %2654
  %2656 = getelementptr inbounds double, ptr %2647, i64 %2655
  %2657 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2656, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2658

2658:                                             ; preds = %2642
  %2659 = load i64, ptr %21, align 8, !tbaa !9
  %2660 = add nsw i64 %2659, 1
  store i64 %2660, ptr %21, align 8, !tbaa !9
  br label %2638, !llvm.loop !79

2661:                                             ; preds = %2638
  %2662 = load i64, ptr %22, align 8, !tbaa !9
  %2663 = sub nsw i64 %2662, 1
  store i64 %2663, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2664

2664:                                             ; preds = %2678, %2661
  %2665 = load i64, ptr %21, align 8, !tbaa !9
  %2666 = load i64, ptr %14, align 8, !tbaa !9
  %2667 = icmp sle i64 %2665, %2666
  br i1 %2667, label %2668, label %2681

2668:                                             ; preds = %2664
  %2669 = load i64, ptr %22, align 8, !tbaa !9
  %2670 = load i64, ptr %21, align 8, !tbaa !9
  %2671 = add nsw i64 %2669, %2670
  store i64 %2671, ptr %15, align 8, !tbaa !9
  %2672 = load ptr, ptr %12, align 8, !tbaa !5
  %2673 = load i64, ptr %21, align 8, !tbaa !9
  %2674 = load i64, ptr %27, align 8, !tbaa !9
  %2675 = mul nsw i64 %2673, %2674
  %2676 = getelementptr inbounds double, ptr %2672, i64 %2675
  %2677 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2676, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2678

2678:                                             ; preds = %2668
  %2679 = load i64, ptr %21, align 8, !tbaa !9
  %2680 = add nsw i64 %2679, 1
  store i64 %2680, ptr %21, align 8, !tbaa !9
  br label %2664, !llvm.loop !80

2681:                                             ; preds = %2664
  %2682 = load double, ptr %24, align 8, !tbaa !11
  %2683 = load double, ptr %24, align 8, !tbaa !11
  %2684 = fadd double %2683, %2682
  store double %2684, ptr %24, align 8, !tbaa !11
  %2685 = load i64, ptr %27, align 8, !tbaa !9
  %2686 = add nsw i64 %2685, 1
  store i64 %2686, ptr %14, align 8, !tbaa !9
  %2687 = load ptr, ptr %12, align 8, !tbaa !5
  %2688 = load i64, ptr %22, align 8, !tbaa !9
  %2689 = add nsw i64 %2688, 1
  %2690 = getelementptr inbounds double, ptr %2687, i64 %2689
  %2691 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2690, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  %2692 = load i64, ptr %27, align 8, !tbaa !9
  %2693 = add nsw i64 %2692, 1
  store i64 %2693, ptr %14, align 8, !tbaa !9
  %2694 = load ptr, ptr %12, align 8, !tbaa !5
  %2695 = load i64, ptr %22, align 8, !tbaa !9
  %2696 = getelementptr inbounds double, ptr %2694, i64 %2695
  %2697 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2696, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  br label %2753

2698:                                             ; preds = %2632
  %2699 = load i64, ptr %22, align 8, !tbaa !9
  %2700 = sub nsw i64 %2699, 1
  store i64 %2700, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2701

2701:                                             ; preds = %2720, %2698
  %2702 = load i64, ptr %21, align 8, !tbaa !9
  %2703 = load i64, ptr %14, align 8, !tbaa !9
  %2704 = icmp sle i64 %2702, %2703
  br i1 %2704, label %2705, label %2723

2705:                                             ; preds = %2701
  %2706 = load ptr, ptr %11, align 8, !tbaa !5
  %2707 = load i64, ptr %2706, align 8, !tbaa !9
  %2708 = load i64, ptr %21, align 8, !tbaa !9
  %2709 = sub nsw i64 %2707, %2708
  %2710 = sub nsw i64 %2709, 1
  store i64 %2710, ptr %15, align 8, !tbaa !9
  %2711 = load ptr, ptr %12, align 8, !tbaa !5
  %2712 = load i64, ptr %21, align 8, !tbaa !9
  %2713 = add nsw i64 %2712, 2
  %2714 = load i64, ptr %21, align 8, !tbaa !9
  %2715 = load i64, ptr %27, align 8, !tbaa !9
  %2716 = mul nsw i64 %2714, %2715
  %2717 = add nsw i64 %2713, %2716
  %2718 = getelementptr inbounds double, ptr %2711, i64 %2717
  %2719 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2718, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2720

2720:                                             ; preds = %2705
  %2721 = load i64, ptr %21, align 8, !tbaa !9
  %2722 = add nsw i64 %2721, 1
  store i64 %2722, ptr %21, align 8, !tbaa !9
  br label %2701, !llvm.loop !81

2723:                                             ; preds = %2701
  %2724 = load i64, ptr %22, align 8, !tbaa !9
  %2725 = sub nsw i64 %2724, 1
  store i64 %2725, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %2726

2726:                                             ; preds = %2737, %2723
  %2727 = load i64, ptr %21, align 8, !tbaa !9
  %2728 = load i64, ptr %14, align 8, !tbaa !9
  %2729 = icmp sle i64 %2727, %2728
  br i1 %2729, label %2730, label %2740

2730:                                             ; preds = %2726
  %2731 = load ptr, ptr %12, align 8, !tbaa !5
  %2732 = load i64, ptr %21, align 8, !tbaa !9
  %2733 = load i64, ptr %27, align 8, !tbaa !9
  %2734 = mul nsw i64 %2732, %2733
  %2735 = getelementptr inbounds double, ptr %2731, i64 %2734
  %2736 = call i32 @dlassq_(ptr noundef %21, ptr noundef %2735, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2737

2737:                                             ; preds = %2730
  %2738 = load i64, ptr %21, align 8, !tbaa !9
  %2739 = add nsw i64 %2738, 1
  store i64 %2739, ptr %21, align 8, !tbaa !9
  br label %2726, !llvm.loop !82

2740:                                             ; preds = %2726
  %2741 = load double, ptr %24, align 8, !tbaa !11
  %2742 = load double, ptr %24, align 8, !tbaa !11
  %2743 = fadd double %2742, %2741
  store double %2743, ptr %24, align 8, !tbaa !11
  %2744 = load i64, ptr %27, align 8, !tbaa !9
  %2745 = add nsw i64 %2744, 1
  store i64 %2745, ptr %14, align 8, !tbaa !9
  %2746 = load ptr, ptr %12, align 8, !tbaa !5
  %2747 = getelementptr inbounds double, ptr %2746, i64 1
  %2748 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2747, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  %2749 = load i64, ptr %27, align 8, !tbaa !9
  %2750 = add nsw i64 %2749, 1
  store i64 %2750, ptr %14, align 8, !tbaa !9
  %2751 = load ptr, ptr %12, align 8, !tbaa !5
  %2752 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2751, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  br label %2753

2753:                                             ; preds = %2740, %2681
  br label %2917

2754:                                             ; preds = %2629
  %2755 = load i64, ptr %30, align 8, !tbaa !9
  %2756 = icmp eq i64 %2755, 0
  br i1 %2756, label %2757, label %2841

2757:                                             ; preds = %2754
  %2758 = load i64, ptr %22, align 8, !tbaa !9
  %2759 = sub nsw i64 %2758, 1
  store i64 %2759, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %2760

2760:                                             ; preds = %2774, %2757
  %2761 = load i64, ptr %21, align 8, !tbaa !9
  %2762 = load i64, ptr %14, align 8, !tbaa !9
  %2763 = icmp sle i64 %2761, %2762
  br i1 %2763, label %2764, label %2777

2764:                                             ; preds = %2760
  %2765 = load ptr, ptr %12, align 8, !tbaa !5
  %2766 = load i64, ptr %22, align 8, !tbaa !9
  %2767 = add nsw i64 %2766, 1
  %2768 = load i64, ptr %21, align 8, !tbaa !9
  %2769 = add nsw i64 %2767, %2768
  %2770 = load i64, ptr %27, align 8, !tbaa !9
  %2771 = mul nsw i64 %2769, %2770
  %2772 = getelementptr inbounds double, ptr %2765, i64 %2771
  %2773 = call i32 @dlassq_(ptr noundef %21, ptr noundef %2772, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2774

2774:                                             ; preds = %2764
  %2775 = load i64, ptr %21, align 8, !tbaa !9
  %2776 = add nsw i64 %2775, 1
  store i64 %2776, ptr %21, align 8, !tbaa !9
  br label %2760, !llvm.loop !83

2777:                                             ; preds = %2760
  %2778 = load i64, ptr %22, align 8, !tbaa !9
  %2779 = sub nsw i64 %2778, 1
  store i64 %2779, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2780

2780:                                             ; preds = %2791, %2777
  %2781 = load i64, ptr %21, align 8, !tbaa !9
  %2782 = load i64, ptr %14, align 8, !tbaa !9
  %2783 = icmp sle i64 %2781, %2782
  br i1 %2783, label %2784, label %2794

2784:                                             ; preds = %2780
  %2785 = load ptr, ptr %12, align 8, !tbaa !5
  %2786 = load i64, ptr %21, align 8, !tbaa !9
  %2787 = load i64, ptr %27, align 8, !tbaa !9
  %2788 = mul nsw i64 %2786, %2787
  %2789 = getelementptr inbounds double, ptr %2785, i64 %2788
  %2790 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2789, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2791

2791:                                             ; preds = %2784
  %2792 = load i64, ptr %21, align 8, !tbaa !9
  %2793 = add nsw i64 %2792, 1
  store i64 %2793, ptr %21, align 8, !tbaa !9
  br label %2780, !llvm.loop !84

2794:                                             ; preds = %2780
  %2795 = load i64, ptr %22, align 8, !tbaa !9
  %2796 = sub nsw i64 %2795, 2
  store i64 %2796, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2797

2797:                                             ; preds = %2817, %2794
  %2798 = load i64, ptr %21, align 8, !tbaa !9
  %2799 = load i64, ptr %14, align 8, !tbaa !9
  %2800 = icmp sle i64 %2798, %2799
  br i1 %2800, label %2801, label %2820

2801:                                             ; preds = %2797
  %2802 = load i64, ptr %22, align 8, !tbaa !9
  %2803 = load i64, ptr %21, align 8, !tbaa !9
  %2804 = sub nsw i64 %2802, %2803
  %2805 = sub nsw i64 %2804, 1
  store i64 %2805, ptr %15, align 8, !tbaa !9
  %2806 = load ptr, ptr %12, align 8, !tbaa !5
  %2807 = load i64, ptr %21, align 8, !tbaa !9
  %2808 = add nsw i64 %2807, 1
  %2809 = load i64, ptr %21, align 8, !tbaa !9
  %2810 = load i64, ptr %22, align 8, !tbaa !9
  %2811 = add nsw i64 %2809, %2810
  %2812 = load i64, ptr %27, align 8, !tbaa !9
  %2813 = mul nsw i64 %2811, %2812
  %2814 = add nsw i64 %2808, %2813
  %2815 = getelementptr inbounds double, ptr %2806, i64 %2814
  %2816 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2815, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2817

2817:                                             ; preds = %2801
  %2818 = load i64, ptr %21, align 8, !tbaa !9
  %2819 = add nsw i64 %2818, 1
  store i64 %2819, ptr %21, align 8, !tbaa !9
  br label %2797, !llvm.loop !85

2820:                                             ; preds = %2797
  %2821 = load double, ptr %24, align 8, !tbaa !11
  %2822 = load double, ptr %24, align 8, !tbaa !11
  %2823 = fadd double %2822, %2821
  store double %2823, ptr %24, align 8, !tbaa !11
  %2824 = load i64, ptr %27, align 8, !tbaa !9
  %2825 = add nsw i64 %2824, 1
  store i64 %2825, ptr %14, align 8, !tbaa !9
  %2826 = load ptr, ptr %12, align 8, !tbaa !5
  %2827 = load i64, ptr %22, align 8, !tbaa !9
  %2828 = add nsw i64 %2827, 1
  %2829 = load i64, ptr %27, align 8, !tbaa !9
  %2830 = mul nsw i64 %2828, %2829
  %2831 = getelementptr inbounds double, ptr %2826, i64 %2830
  %2832 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2831, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  %2833 = load i64, ptr %27, align 8, !tbaa !9
  %2834 = add nsw i64 %2833, 1
  store i64 %2834, ptr %14, align 8, !tbaa !9
  %2835 = load ptr, ptr %12, align 8, !tbaa !5
  %2836 = load i64, ptr %22, align 8, !tbaa !9
  %2837 = load i64, ptr %27, align 8, !tbaa !9
  %2838 = mul nsw i64 %2836, %2837
  %2839 = getelementptr inbounds double, ptr %2835, i64 %2838
  %2840 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2839, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  br label %2916

2841:                                             ; preds = %2754
  %2842 = load i64, ptr %22, align 8, !tbaa !9
  %2843 = sub nsw i64 %2842, 1
  store i64 %2843, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %2844

2844:                                             ; preds = %2856, %2841
  %2845 = load i64, ptr %21, align 8, !tbaa !9
  %2846 = load i64, ptr %14, align 8, !tbaa !9
  %2847 = icmp sle i64 %2845, %2846
  br i1 %2847, label %2848, label %2859

2848:                                             ; preds = %2844
  %2849 = load ptr, ptr %12, align 8, !tbaa !5
  %2850 = load i64, ptr %21, align 8, !tbaa !9
  %2851 = add nsw i64 %2850, 1
  %2852 = load i64, ptr %27, align 8, !tbaa !9
  %2853 = mul nsw i64 %2851, %2852
  %2854 = getelementptr inbounds double, ptr %2849, i64 %2853
  %2855 = call i32 @dlassq_(ptr noundef %21, ptr noundef %2854, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2856

2856:                                             ; preds = %2848
  %2857 = load i64, ptr %21, align 8, !tbaa !9
  %2858 = add nsw i64 %2857, 1
  store i64 %2858, ptr %21, align 8, !tbaa !9
  br label %2844, !llvm.loop !86

2859:                                             ; preds = %2844
  %2860 = load ptr, ptr %11, align 8, !tbaa !5
  %2861 = load i64, ptr %2860, align 8, !tbaa !9
  store i64 %2861, ptr %14, align 8, !tbaa !9
  %2862 = load i64, ptr %22, align 8, !tbaa !9
  %2863 = add nsw i64 %2862, 1
  store i64 %2863, ptr %21, align 8, !tbaa !9
  br label %2864

2864:                                             ; preds = %2875, %2859
  %2865 = load i64, ptr %21, align 8, !tbaa !9
  %2866 = load i64, ptr %14, align 8, !tbaa !9
  %2867 = icmp sle i64 %2865, %2866
  br i1 %2867, label %2868, label %2878

2868:                                             ; preds = %2864
  %2869 = load ptr, ptr %12, align 8, !tbaa !5
  %2870 = load i64, ptr %21, align 8, !tbaa !9
  %2871 = load i64, ptr %27, align 8, !tbaa !9
  %2872 = mul nsw i64 %2870, %2871
  %2873 = getelementptr inbounds double, ptr %2869, i64 %2872
  %2874 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2873, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2875

2875:                                             ; preds = %2868
  %2876 = load i64, ptr %21, align 8, !tbaa !9
  %2877 = add nsw i64 %2876, 1
  store i64 %2877, ptr %21, align 8, !tbaa !9
  br label %2864, !llvm.loop !87

2878:                                             ; preds = %2864
  %2879 = load i64, ptr %22, align 8, !tbaa !9
  %2880 = sub nsw i64 %2879, 2
  store i64 %2880, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2881

2881:                                             ; preds = %2899, %2878
  %2882 = load i64, ptr %21, align 8, !tbaa !9
  %2883 = load i64, ptr %14, align 8, !tbaa !9
  %2884 = icmp sle i64 %2882, %2883
  br i1 %2884, label %2885, label %2902

2885:                                             ; preds = %2881
  %2886 = load i64, ptr %22, align 8, !tbaa !9
  %2887 = load i64, ptr %21, align 8, !tbaa !9
  %2888 = sub nsw i64 %2886, %2887
  %2889 = sub nsw i64 %2888, 1
  store i64 %2889, ptr %15, align 8, !tbaa !9
  %2890 = load ptr, ptr %12, align 8, !tbaa !5
  %2891 = load i64, ptr %21, align 8, !tbaa !9
  %2892 = add nsw i64 %2891, 1
  %2893 = load i64, ptr %21, align 8, !tbaa !9
  %2894 = load i64, ptr %27, align 8, !tbaa !9
  %2895 = mul nsw i64 %2893, %2894
  %2896 = add nsw i64 %2892, %2895
  %2897 = getelementptr inbounds double, ptr %2890, i64 %2896
  %2898 = call i32 @dlassq_(ptr noundef %15, ptr noundef %2897, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %2899

2899:                                             ; preds = %2885
  %2900 = load i64, ptr %21, align 8, !tbaa !9
  %2901 = add nsw i64 %2900, 1
  store i64 %2901, ptr %21, align 8, !tbaa !9
  br label %2881, !llvm.loop !88

2902:                                             ; preds = %2881
  %2903 = load double, ptr %24, align 8, !tbaa !11
  %2904 = load double, ptr %24, align 8, !tbaa !11
  %2905 = fadd double %2904, %2903
  store double %2905, ptr %24, align 8, !tbaa !11
  %2906 = load i64, ptr %27, align 8, !tbaa !9
  %2907 = add nsw i64 %2906, 1
  store i64 %2907, ptr %14, align 8, !tbaa !9
  %2908 = load ptr, ptr %12, align 8, !tbaa !5
  %2909 = load i64, ptr %27, align 8, !tbaa !9
  %2910 = getelementptr inbounds double, ptr %2908, i64 %2909
  %2911 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2910, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  %2912 = load i64, ptr %27, align 8, !tbaa !9
  %2913 = add nsw i64 %2912, 1
  store i64 %2913, ptr %14, align 8, !tbaa !9
  %2914 = load ptr, ptr %12, align 8, !tbaa !5
  %2915 = call i32 @dlassq_(ptr noundef %22, ptr noundef %2914, ptr noundef %14, ptr noundef %31, ptr noundef %24)
  br label %2916

2916:                                             ; preds = %2902, %2820
  br label %2917

2917:                                             ; preds = %2916, %2753
  br label %2918

2918:                                             ; preds = %2917, %2628
  %2919 = load double, ptr %31, align 8, !tbaa !11
  %2920 = load double, ptr %24, align 8, !tbaa !11
  %2921 = call double @sqrt(double noundef %2920) #4
  %2922 = fmul double %2919, %2921
  store double %2922, ptr %32, align 8, !tbaa !11
  br label %2923

2923:                                             ; preds = %2918, %2320
  br label %2924

2924:                                             ; preds = %2923, %2315
  br label %2925

2925:                                             ; preds = %2924, %295
  %2926 = load double, ptr %32, align 8, !tbaa !11
  store double %2926, ptr %16, align 8, !tbaa !11
  %2927 = load double, ptr %16, align 8, !tbaa !11
  store double %2927, ptr %7, align 8
  store i32 1, ptr %33, align 4
  br label %2928

2928:                                             ; preds = %2925, %37
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  %2929 = load double, ptr %7, align 8
  ret double %2929
}

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

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

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #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 = { nounwind "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 #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}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}
!49 = distinct !{!49, !14}
!50 = distinct !{!50, !14}
!51 = distinct !{!51, !14}
!52 = distinct !{!52, !14}
!53 = distinct !{!53, !14}
!54 = distinct !{!54, !14}
!55 = distinct !{!55, !14}
!56 = distinct !{!56, !14}
!57 = distinct !{!57, !14}
!58 = distinct !{!58, !14}
!59 = distinct !{!59, !14}
!60 = distinct !{!60, !14}
!61 = distinct !{!61, !14}
!62 = distinct !{!62, !14}
!63 = distinct !{!63, !14}
!64 = distinct !{!64, !14}
!65 = distinct !{!65, !14}
!66 = distinct !{!66, !14}
!67 = distinct !{!67, !14}
!68 = distinct !{!68, !14}
!69 = distinct !{!69, !14}
!70 = distinct !{!70, !14}
!71 = distinct !{!71, !14}
!72 = distinct !{!72, !14}
!73 = distinct !{!73, !14}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14}
!76 = distinct !{!76, !14}
!77 = distinct !{!77, !14}
!78 = distinct !{!78, !14}
!79 = distinct !{!79, !14}
!80 = distinct !{!80, !14}
!81 = distinct !{!81, !14}
!82 = distinct !{!82, !14}
!83 = distinct !{!83, !14}
!84 = distinct !{!84, !14}
!85 = distinct !{!85, !14}
!86 = distinct !{!86, !14}
!87 = distinct !{!87, !14}
!88 = distinct !{!88, !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
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @dlansf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 {
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %13 = load i64, ptr %3, align 8, !tbaa !5
  %14 = icmp eq i64 %13, 0
  br i1 %14, label %.loopexit, label %15

15:                                               ; preds = %6
  %16 = and i64 %13, 1
  %17 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %.not = icmp eq i64 %17, 0
  %18 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not817.not.not.not.not.not.not.not.not = icmp eq i64 %18, 0
  %19 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not, label %20, label %22

20:                                               ; preds = %15
  %21 = xor i64 %16, 1
  %spec.select = add i64 %19, %21
  br label %25

22:                                               ; preds = %15
  %23 = add nsw i64 %19, 1
  %24 = sdiv i64 %23, 2
  br label %25

25:                                               ; preds = %20, %22
  %.0772 = phi i64 [ %24, %22 ], [ %spec.select, %20 ]
  %26 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not819 = icmp eq i64 %26, 0
  br i1 %.not819, label %131, label %27

27:                                               ; preds = %25
  %28 = load i64, ptr %3, align 8, !tbaa !5
  %29 = add i64 %28, 1
  %30 = sdiv i64 %29, 2
  %.not922 = icmp eq i64 %16, 0
  br i1 %.not922, label %80, label %31

31:                                               ; preds = %27
  %.not933.not962 = icmp sgt i64 %28, 0
  br i1 %.not, label %32, label %56

32:                                               ; preds = %31
  br i1 %.not933.not962, label %.lr.ph966, label %.loopexit

.lr.ph966:                                        ; preds = %32
  %smax1656 = tail call i64 @llvm.smax.i64(i64 %30, i64 1)
  %xtraiter1912 = and i64 %28, 1
  %33 = icmp eq i64 %28, 1
  %unroll_iter1915 = and i64 %28, 9223372036854775806
  %lcmp.mod1913.not = icmp eq i64 %xtraiter1912, 0
  br label %.lr.ph955

.lr.ph955:                                        ; preds = %._crit_edge956, %.lr.ph966
  %.0964 = phi double [ 0.000000e+00, %.lr.ph966 ], [ %.lcssa1907, %._crit_edge956 ]
  %storemerge932963 = phi i64 [ 0, %.lr.ph966 ], [ %55, %._crit_edge956 ]
  %34 = mul nsw i64 %storemerge932963, %.0772
  %invariant.gep958 = getelementptr double, ptr %4, i64 %34
  br i1 %33, label %._crit_edge956.unr-lcssa, label %.lr.ph955.new

.lr.ph955.new:                                    ; preds = %.lr.ph955, %.lr.ph955.new
  %.1953 = phi double [ %47, %.lr.ph955.new ], [ %.0964, %.lr.ph955 ]
  %.0782952 = phi i64 [ %48, %.lr.ph955.new ], [ 0, %.lr.ph955 ]
  %niter1916 = phi i64 [ %niter1916.next.1, %.lr.ph955.new ], [ 0, %.lr.ph955 ]
  %gep959 = getelementptr double, ptr %invariant.gep958, i64 %.0782952
  %35 = load double, ptr %gep959, align 8, !tbaa !9
  %36 = fcmp oge double %35, 0.000000e+00
  %37 = fneg double %35
  %38 = select i1 %36, double %35, double %37
  %39 = fcmp oge double %.1953, %38
  %40 = select i1 %39, double %.1953, double %38
  %41 = or disjoint i64 %.0782952, 1
  %gep959.1 = getelementptr double, ptr %invariant.gep958, i64 %41
  %42 = load double, ptr %gep959.1, align 8, !tbaa !9
  %43 = fcmp oge double %42, 0.000000e+00
  %44 = fneg double %42
  %45 = select i1 %43, double %42, double %44
  %46 = fcmp oge double %40, %45
  %47 = select i1 %46, double %40, double %45
  %48 = add nuw nsw i64 %.0782952, 2
  %niter1916.next.1 = add i64 %niter1916, 2
  %niter1916.ncmp.1 = icmp eq i64 %niter1916.next.1, %unroll_iter1915
  br i1 %niter1916.ncmp.1, label %._crit_edge956.unr-lcssa, label %.lr.ph955.new, !llvm.loop !11

._crit_edge956.unr-lcssa:                         ; preds = %.lr.ph955.new, %.lr.ph955
  %.lcssa1907.ph = phi double [ poison, %.lr.ph955 ], [ %47, %.lr.ph955.new ]
  %.1953.unr = phi double [ %.0964, %.lr.ph955 ], [ %47, %.lr.ph955.new ]
  %.0782952.unr = phi i64 [ 0, %.lr.ph955 ], [ %48, %.lr.ph955.new ]
  br i1 %lcmp.mod1913.not, label %._crit_edge956, label %._crit_edge956.epilog-lcssa

._crit_edge956.epilog-lcssa:                      ; preds = %._crit_edge956.unr-lcssa
  %gep959.epil = getelementptr double, ptr %invariant.gep958, i64 %.0782952.unr
  %49 = load double, ptr %gep959.epil, align 8, !tbaa !9
  %50 = fcmp oge double %49, 0.000000e+00
  %51 = fneg double %49
  %52 = select i1 %50, double %49, double %51
  %53 = fcmp oge double %.1953.unr, %52
  %54 = select i1 %53, double %.1953.unr, double %52
  br label %._crit_edge956

._crit_edge956:                                   ; preds = %._crit_edge956.unr-lcssa, %._crit_edge956.epilog-lcssa
  %.lcssa1907 = phi double [ %.lcssa1907.ph, %._crit_edge956.unr-lcssa ], [ %54, %._crit_edge956.epilog-lcssa ]
  %55 = add nuw nsw i64 %storemerge932963, 1
  %exitcond1657.not = icmp eq i64 %55, %smax1656
  br i1 %exitcond1657.not, label %.loopexit, label %.lr.ph955, !llvm.loop !13

56:                                               ; preds = %31
  br i1 %.not933.not962, label %.lr.ph947, label %.loopexit

.lr.ph947:                                        ; preds = %56
  %smax = tail call i64 @llvm.smax.i64(i64 %30, i64 1)
  %xtraiter = and i64 %smax, 1
  %57 = icmp slt i64 %29, 4
  %unroll_iter = and i64 %smax, 4611686018427387902
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.lr.ph

.lr.ph:                                           ; preds = %._crit_edge, %.lr.ph947
  %.2945 = phi double [ 0.000000e+00, %.lr.ph947 ], [ %.lcssa1909, %._crit_edge ]
  %storemerge929944 = phi i64 [ 0, %.lr.ph947 ], [ %79, %._crit_edge ]
  %58 = mul nsw i64 %storemerge929944, %.0772
  %invariant.gep = getelementptr double, ptr %4, i64 %58
  br i1 %57, label %._crit_edge.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph, %.lr.ph.new
  %.3942 = phi double [ %71, %.lr.ph.new ], [ %.2945, %.lr.ph ]
  %.1783941 = phi i64 [ %72, %.lr.ph.new ], [ 0, %.lr.ph ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph.new ], [ 0, %.lr.ph ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.1783941
  %59 = load double, ptr %gep, align 8, !tbaa !9
  %60 = fcmp oge double %59, 0.000000e+00
  %61 = fneg double %59
  %62 = select i1 %60, double %59, double %61
  %63 = fcmp oge double %.3942, %62
  %64 = select i1 %63, double %.3942, double %62
  %65 = or disjoint i64 %.1783941, 1
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %65
  %66 = load double, ptr %gep.1, align 8, !tbaa !9
  %67 = fcmp oge double %66, 0.000000e+00
  %68 = fneg double %66
  %69 = select i1 %67, double %66, double %68
  %70 = fcmp oge double %64, %69
  %71 = select i1 %70, double %64, double %69
  %72 = add nuw nsw i64 %.1783941, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph.new, !llvm.loop !14

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph.new, %.lr.ph
  %.lcssa1909.ph = phi double [ poison, %.lr.ph ], [ %71, %.lr.ph.new ]
  %.3942.unr = phi double [ %.2945, %.lr.ph ], [ %71, %.lr.ph.new ]
  %.1783941.unr = phi i64 [ 0, %.lr.ph ], [ %72, %.lr.ph.new ]
  br i1 %lcmp.mod.not, label %._crit_edge, label %._crit_edge.epilog-lcssa

._crit_edge.epilog-lcssa:                         ; preds = %._crit_edge.unr-lcssa
  %gep.epil = getelementptr double, ptr %invariant.gep, i64 %.1783941.unr
  %73 = load double, ptr %gep.epil, align 8, !tbaa !9
  %74 = fcmp oge double %73, 0.000000e+00
  %75 = fneg double %73
  %76 = select i1 %74, double %73, double %75
  %77 = fcmp oge double %.3942.unr, %76
  %78 = select i1 %77, double %.3942.unr, double %76
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %._crit_edge.epilog-lcssa
  %.lcssa1909 = phi double [ %.lcssa1909.ph, %._crit_edge.unr-lcssa ], [ %78, %._crit_edge.epilog-lcssa ]
  %79 = add nuw nsw i64 %storemerge929944, 1
  %exitcond1654.not = icmp eq i64 %79, %28
  br i1 %exitcond1654.not, label %.loopexit, label %.lr.ph, !llvm.loop !15

80:                                               ; preds = %27
  br i1 %.not, label %81, label %106

81:                                               ; preds = %80
  %.not927.not1000 = icmp sgt i64 %28, 0
  br i1 %.not927.not1000, label %.lr.ph1004, label %.loopexit

.lr.ph1004:                                       ; preds = %81
  %smax1662 = tail call i64 @llvm.smax.i64(i64 %30, i64 1)
  %unroll_iter1927 = and i64 %29, -2
  %82 = and i64 %28, 1
  %lcmp.mod1925.not.not = icmp eq i64 %82, 0
  br label %.lr.ph993

.lr.ph993:                                        ; preds = %._crit_edge994, %.lr.ph1004
  %.41002 = phi double [ 0.000000e+00, %.lr.ph1004 ], [ %.lcssa1903, %._crit_edge994 ]
  %storemerge9261001 = phi i64 [ 0, %.lr.ph1004 ], [ %105, %._crit_edge994 ]
  %83 = mul nsw i64 %storemerge9261001, %.0772
  %invariant.gep996 = getelementptr double, ptr %4, i64 %83
  br label %84

84:                                               ; preds = %84, %.lr.ph993
  %.5991 = phi double [ %.41002, %.lr.ph993 ], [ %97, %84 ]
  %.2784990 = phi i64 [ 0, %.lr.ph993 ], [ %98, %84 ]
  %niter1928 = phi i64 [ 0, %.lr.ph993 ], [ %niter1928.next.1, %84 ]
  %gep997 = getelementptr double, ptr %invariant.gep996, i64 %.2784990
  %85 = load double, ptr %gep997, align 8, !tbaa !9
  %86 = fcmp oge double %85, 0.000000e+00
  %87 = fneg double %85
  %88 = select i1 %86, double %85, double %87
  %89 = fcmp oge double %.5991, %88
  %90 = select i1 %89, double %.5991, double %88
  %91 = or disjoint i64 %.2784990, 1
  %gep997.1 = getelementptr double, ptr %invariant.gep996, i64 %91
  %92 = load double, ptr %gep997.1, align 8, !tbaa !9
  %93 = fcmp oge double %92, 0.000000e+00
  %94 = fneg double %92
  %95 = select i1 %93, double %92, double %94
  %96 = fcmp oge double %90, %95
  %97 = select i1 %96, double %90, double %95
  %98 = add nuw i64 %.2784990, 2
  %niter1928.next.1 = add i64 %niter1928, 2
  %niter1928.ncmp.1 = icmp eq i64 %niter1928.next.1, %unroll_iter1927
  br i1 %niter1928.ncmp.1, label %._crit_edge994.unr-lcssa, label %84, !llvm.loop !16

._crit_edge994.unr-lcssa:                         ; preds = %84
  br i1 %lcmp.mod1925.not.not, label %._crit_edge994.epilog-lcssa, label %._crit_edge994

._crit_edge994.epilog-lcssa:                      ; preds = %._crit_edge994.unr-lcssa
  %gep997.epil = getelementptr double, ptr %invariant.gep996, i64 %98
  %99 = load double, ptr %gep997.epil, align 8, !tbaa !9
  %100 = fcmp oge double %99, 0.000000e+00
  %101 = fneg double %99
  %102 = select i1 %100, double %99, double %101
  %103 = fcmp oge double %97, %102
  %104 = select i1 %103, double %97, double %102
  br label %._crit_edge994

._crit_edge994:                                   ; preds = %._crit_edge994.unr-lcssa, %._crit_edge994.epilog-lcssa
  %.lcssa1903 = phi double [ %97, %._crit_edge994.unr-lcssa ], [ %104, %._crit_edge994.epilog-lcssa ]
  %105 = add nuw nsw i64 %storemerge9261001, 1
  %exitcond1663.not = icmp eq i64 %105, %smax1662
  br i1 %exitcond1663.not, label %.loopexit, label %.lr.ph993, !llvm.loop !17

106:                                              ; preds = %80
  %.not924981 = icmp slt i64 %28, 0
  br i1 %.not924981, label %.loopexit, label %.lr.ph985

.lr.ph985:                                        ; preds = %106
  %.not925.not970.not = icmp eq i64 %28, 0
  %smax1658 = tail call i64 @llvm.smax.i64(i64 %30, i64 1)
  %xtraiter1918 = and i64 %smax1658, 1
  %107 = icmp slt i64 %29, 4
  %unroll_iter1921 = and i64 %smax1658, 4611686018427387902
  %lcmp.mod1919.not = icmp eq i64 %xtraiter1918, 0
  br label %108

108:                                              ; preds = %.lr.ph985, %._crit_edge975
  %.6983 = phi double [ 0.000000e+00, %.lr.ph985 ], [ %.7.lcssa, %._crit_edge975 ]
  %storemerge923982 = phi i64 [ 0, %.lr.ph985 ], [ %130, %._crit_edge975 ]
  br i1 %.not925.not970.not, label %._crit_edge975, label %.lr.ph974

.lr.ph974:                                        ; preds = %108
  %109 = mul nsw i64 %storemerge923982, %.0772
  %invariant.gep977 = getelementptr double, ptr %4, i64 %109
  br i1 %107, label %._crit_edge975.loopexit.unr-lcssa, label %.lr.ph974.new

.lr.ph974.new:                                    ; preds = %.lr.ph974, %.lr.ph974.new
  %.7972 = phi double [ %122, %.lr.ph974.new ], [ %.6983, %.lr.ph974 ]
  %.3785971 = phi i64 [ %123, %.lr.ph974.new ], [ 0, %.lr.ph974 ]
  %niter1922 = phi i64 [ %niter1922.next.1, %.lr.ph974.new ], [ 0, %.lr.ph974 ]
  %gep978 = getelementptr double, ptr %invariant.gep977, i64 %.3785971
  %110 = load double, ptr %gep978, align 8, !tbaa !9
  %111 = fcmp oge double %110, 0.000000e+00
  %112 = fneg double %110
  %113 = select i1 %111, double %110, double %112
  %114 = fcmp oge double %.7972, %113
  %115 = select i1 %114, double %.7972, double %113
  %116 = or disjoint i64 %.3785971, 1
  %gep978.1 = getelementptr double, ptr %invariant.gep977, i64 %116
  %117 = load double, ptr %gep978.1, align 8, !tbaa !9
  %118 = fcmp oge double %117, 0.000000e+00
  %119 = fneg double %117
  %120 = select i1 %118, double %117, double %119
  %121 = fcmp oge double %115, %120
  %122 = select i1 %121, double %115, double %120
  %123 = add nuw nsw i64 %.3785971, 2
  %niter1922.next.1 = add i64 %niter1922, 2
  %niter1922.ncmp.1 = icmp eq i64 %niter1922.next.1, %unroll_iter1921
  br i1 %niter1922.ncmp.1, label %._crit_edge975.loopexit.unr-lcssa, label %.lr.ph974.new, !llvm.loop !18

._crit_edge975.loopexit.unr-lcssa:                ; preds = %.lr.ph974.new, %.lr.ph974
  %.lcssa1905.ph = phi double [ poison, %.lr.ph974 ], [ %122, %.lr.ph974.new ]
  %.7972.unr = phi double [ %.6983, %.lr.ph974 ], [ %122, %.lr.ph974.new ]
  %.3785971.unr = phi i64 [ 0, %.lr.ph974 ], [ %123, %.lr.ph974.new ]
  br i1 %lcmp.mod1919.not, label %._crit_edge975, label %._crit_edge975.loopexit.epilog-lcssa

._crit_edge975.loopexit.epilog-lcssa:             ; preds = %._crit_edge975.loopexit.unr-lcssa
  %gep978.epil = getelementptr double, ptr %invariant.gep977, i64 %.3785971.unr
  %124 = load double, ptr %gep978.epil, align 8, !tbaa !9
  %125 = fcmp oge double %124, 0.000000e+00
  %126 = fneg double %124
  %127 = select i1 %125, double %124, double %126
  %128 = fcmp oge double %.7972.unr, %127
  %129 = select i1 %128, double %.7972.unr, double %127
  br label %._crit_edge975

._crit_edge975:                                   ; preds = %._crit_edge975.loopexit.epilog-lcssa, %._crit_edge975.loopexit.unr-lcssa, %108
  %.7.lcssa = phi double [ %.6983, %108 ], [ %.lcssa1905.ph, %._crit_edge975.loopexit.unr-lcssa ], [ %129, %._crit_edge975.loopexit.epilog-lcssa ]
  %130 = add nuw i64 %storemerge923982, 1
  %exitcond1660.not = icmp eq i64 %storemerge923982, %28
  br i1 %exitcond1660.not, label %.loopexit, label %108, !llvm.loop !19

131:                                              ; preds = %25
  %132 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not820 = icmp eq i64 %132, 0
  br i1 %.not820, label %133, label %138

133:                                              ; preds = %131
  %134 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not821 = icmp eq i64 %134, 0
  br i1 %.not821, label %135, label %138

135:                                              ; preds = %133
  %136 = load i8, ptr %0, align 1, !tbaa !20
  %137 = icmp eq i8 %136, 49
  br i1 %137, label %138, label %1085

138:                                              ; preds = %135, %133, %131
  %139 = load i64, ptr %3, align 8, !tbaa !5
  %140 = sdiv i64 %139, 2
  %.not903 = icmp eq i64 %16, 0
  br i1 %.not, label %141, label %432

141:                                              ; preds = %138
  br i1 %.not903, label %291, label %142

142:                                              ; preds = %141
  br i1 %.not817.not.not.not.not.not.not.not.not, label %217, label %143

143:                                              ; preds = %142
  %144 = add nsw i64 %140, -1
  %.not917.not1436 = icmp sgt i64 %139, 1
  br i1 %.not917.not1436, label %._crit_edge1440.thread, label %._crit_edge1440

._crit_edge1440.thread:                           ; preds = %143
  %145 = shl nuw i64 %140, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %145, i1 false), !tbaa !9
  br label %.lr.ph1468

._crit_edge1440:                                  ; preds = %143
  %.not9191465 = icmp slt i64 %139, -1
  br i1 %.not9191465, label %._crit_edge1469, label %.lr.ph1468

.lr.ph1468:                                       ; preds = %._crit_edge1440.thread, %._crit_edge1440
  %146 = shl nsw i64 %140, 1
  %invariant.op = sub nsw i64 0, %140
  %147 = add nsw i64 %140, -1
  br label %148

148:                                              ; preds = %.lr.ph1468, %._crit_edge1459
  %indvars.iv1698 = phi i64 [ %140, %.lr.ph1468 ], [ %indvars.iv.next1699, %._crit_edge1459 ]
  %storemerge9181466 = phi i64 [ 0, %.lr.ph1468 ], [ %212, %._crit_edge1459 ]
  %.not920.not1442 = icmp sgt i64 %storemerge9181466, %invariant.op
  %149 = mul nsw i64 %storemerge9181466, %.0772
  br i1 %.not920.not1442, label %.lr.ph1445, label %._crit_edge1446

.lr.ph1445:                                       ; preds = %148
  %invariant.gep1448 = getelementptr double, ptr %4, i64 %149
  %xtraiter2024 = and i64 %indvars.iv1698, 1
  %150 = sub nsw i64 0, %storemerge9181466
  %151 = icmp eq i64 %147, %150
  br i1 %151, label %._crit_edge1446.loopexit.unr-lcssa, label %.lr.ph1445.new

.lr.ph1445.new:                                   ; preds = %.lr.ph1445
  %unroll_iter2028 = and i64 %indvars.iv1698, -2
  br label %152

152:                                              ; preds = %152, %.lr.ph1445.new
  %.57871443 = phi i64 [ 0, %.lr.ph1445.new ], [ %171, %152 ]
  %153 = phi double [ 0.000000e+00, %.lr.ph1445.new ], [ %167, %152 ]
  %niter2029 = phi i64 [ 0, %.lr.ph1445.new ], [ %niter2029.next.1, %152 ]
  %gep1449 = getelementptr double, ptr %invariant.gep1448, i64 %.57871443
  %154 = load double, ptr %gep1449, align 8, !tbaa !9
  %155 = fcmp oge double %154, 0.000000e+00
  %156 = fneg double %154
  %157 = select i1 %155, double %154, double %156
  %158 = fadd double %153, %157
  %159 = getelementptr inbounds double, ptr %5, i64 %.57871443
  %160 = load double, ptr %159, align 8, !tbaa !9
  %161 = fadd double %157, %160
  store double %161, ptr %159, align 8, !tbaa !9
  %162 = or disjoint i64 %.57871443, 1
  %gep1449.1 = getelementptr double, ptr %invariant.gep1448, i64 %162
  %163 = load double, ptr %gep1449.1, align 8, !tbaa !9
  %164 = fcmp oge double %163, 0.000000e+00
  %165 = fneg double %163
  %166 = select i1 %164, double %163, double %165
  %167 = fadd double %158, %166
  %168 = getelementptr inbounds double, ptr %5, i64 %162
  %169 = load double, ptr %168, align 8, !tbaa !9
  %170 = fadd double %166, %169
  store double %170, ptr %168, align 8, !tbaa !9
  %171 = add nuw nsw i64 %.57871443, 2
  %niter2029.next.1 = add i64 %niter2029, 2
  %niter2029.ncmp.1 = icmp eq i64 %niter2029.next.1, %unroll_iter2028
  br i1 %niter2029.ncmp.1, label %._crit_edge1446.loopexit.unr-lcssa, label %152, !llvm.loop !21

._crit_edge1446.loopexit.unr-lcssa:               ; preds = %152, %.lr.ph1445
  %.lcssa1876.ph = phi double [ poison, %.lr.ph1445 ], [ %167, %152 ]
  %.57871443.unr = phi i64 [ 0, %.lr.ph1445 ], [ %171, %152 ]
  %.unr2025 = phi double [ 0.000000e+00, %.lr.ph1445 ], [ %167, %152 ]
  %lcmp.mod2026.not = icmp eq i64 %xtraiter2024, 0
  br i1 %lcmp.mod2026.not, label %._crit_edge1446, label %._crit_edge1446.loopexit.epilog-lcssa

._crit_edge1446.loopexit.epilog-lcssa:            ; preds = %._crit_edge1446.loopexit.unr-lcssa
  %gep1449.epil = getelementptr double, ptr %invariant.gep1448, i64 %.57871443.unr
  %172 = load double, ptr %gep1449.epil, align 8, !tbaa !9
  %173 = fcmp oge double %172, 0.000000e+00
  %174 = fneg double %172
  %175 = select i1 %173, double %172, double %174
  %176 = fadd double %.unr2025, %175
  %177 = getelementptr inbounds double, ptr %5, i64 %.57871443.unr
  %178 = load double, ptr %177, align 8, !tbaa !9
  %179 = fadd double %175, %178
  store double %179, ptr %177, align 8, !tbaa !9
  br label %._crit_edge1446

._crit_edge1446:                                  ; preds = %._crit_edge1446.loopexit.epilog-lcssa, %._crit_edge1446.loopexit.unr-lcssa, %148
  %.lcssa14601463 = phi double [ 0.000000e+00, %148 ], [ %.lcssa1876.ph, %._crit_edge1446.loopexit.unr-lcssa ], [ %176, %._crit_edge1446.loopexit.epilog-lcssa ]
  %.5787.lcssa = phi i64 [ 0, %148 ], [ %indvars.iv1698, %._crit_edge1446.loopexit.unr-lcssa ], [ %indvars.iv1698, %._crit_edge1446.loopexit.epilog-lcssa ]
  %180 = getelementptr double, ptr %4, i64 %.5787.lcssa
  %181 = getelementptr double, ptr %180, i64 %149
  %182 = load double, ptr %181, align 8, !tbaa !9
  %183 = fcmp oge double %182, 0.000000e+00
  %184 = fneg double %182
  %185 = select i1 %183, double %182, double %184
  %186 = fadd double %.lcssa14601463, %185
  %187 = getelementptr double, ptr %5, i64 %storemerge9181466
  %188 = getelementptr double, ptr %187, i64 %140
  store double %186, ptr %188, align 8, !tbaa !9
  %189 = icmp eq i64 %.5787.lcssa, %146
  br i1 %189, label %._crit_edge1469, label %190

190:                                              ; preds = %._crit_edge1446
  %191 = add nuw nsw i64 %.5787.lcssa, 1
  %192 = getelementptr double, ptr %4, i64 %191
  %193 = getelementptr double, ptr %192, i64 %149
  %194 = load double, ptr %193, align 8, !tbaa !9
  %195 = fcmp oge double %194, 0.000000e+00
  %196 = fneg double %194
  %197 = select i1 %195, double %194, double %196
  %198 = load double, ptr %187, align 8, !tbaa !9
  %199 = fadd double %198, %197
  store double %199, ptr %187, align 8, !tbaa !9
  %invariant.gep1451 = getelementptr double, ptr %4, i64 %149
  %.not921.not1454 = icmp slt i64 %storemerge9181466, %144
  br i1 %.not921.not1454, label %.lr.ph1458, label %._crit_edge1459

.lr.ph1458:                                       ; preds = %190, %.lr.ph1458
  %.0774.in1456 = phi i64 [ %.0774, %.lr.ph1458 ], [ %storemerge9181466, %190 ]
  %.67881455 = phi i64 [ %201, %.lr.ph1458 ], [ %191, %190 ]
  %200 = phi double [ %206, %.lr.ph1458 ], [ 0.000000e+00, %190 ]
  %.0774 = add nuw nsw i64 %.0774.in1456, 1
  %201 = add nuw nsw i64 %.67881455, 1
  %gep1452 = getelementptr double, ptr %invariant.gep1451, i64 %201
  %202 = load double, ptr %gep1452, align 8, !tbaa !9
  %203 = fcmp oge double %202, 0.000000e+00
  %204 = fneg double %202
  %205 = select i1 %203, double %202, double %204
  %206 = fadd double %200, %205
  %207 = getelementptr inbounds double, ptr %5, i64 %.0774
  %208 = load double, ptr %207, align 8, !tbaa !9
  %209 = fadd double %205, %208
  store double %209, ptr %207, align 8, !tbaa !9
  %.not921.not = icmp slt i64 %.0774, %144
  br i1 %.not921.not, label %.lr.ph1458, label %._crit_edge1459.loopexit, !llvm.loop !22

._crit_edge1459.loopexit:                         ; preds = %.lr.ph1458
  %.pre1730 = load double, ptr %187, align 8, !tbaa !9
  br label %._crit_edge1459

._crit_edge1459:                                  ; preds = %._crit_edge1459.loopexit, %190
  %210 = phi double [ %199, %190 ], [ %.pre1730, %._crit_edge1459.loopexit ]
  %.lcssa14601462 = phi double [ 0.000000e+00, %190 ], [ %206, %._crit_edge1459.loopexit ]
  %211 = fadd double %.lcssa14601462, %210
  store double %211, ptr %187, align 8, !tbaa !9
  %212 = add nuw nsw i64 %storemerge9181466, 1
  %indvars.iv.next1699 = add i64 %indvars.iv1698, 1
  %exitcond1701.not = icmp eq i64 %storemerge9181466, %140
  br i1 %exitcond1701.not, label %._crit_edge1469, label %148, !llvm.loop !23

._crit_edge1469:                                  ; preds = %._crit_edge1446, %._crit_edge1459, %._crit_edge1440
  %213 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull @c__1) #6
  %214 = getelementptr double, ptr %5, i64 %213
  %215 = getelementptr i8, ptr %214, i64 -8
  %216 = load double, ptr %215, align 8, !tbaa !9
  br label %.loopexit

217:                                              ; preds = %142
  %218 = add nsw i64 %140, 1
  %219 = add i64 %139, -1
  %.not913.not1476 = icmp slt i64 %218, %139
  br i1 %.not913.not1476, label %.lr.ph1479.preheader, label %.preheader936

.lr.ph1479.preheader:                             ; preds = %217
  %220 = shl nuw i64 %140, 3
  %221 = getelementptr i8, ptr %5, i64 %220
  %scevgep1702 = getelementptr i8, ptr %221, i64 8
  %222 = sub i64 %219, %140
  %223 = shl nuw i64 %222, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep1702, i8 0, i64 %223, i1 false), !tbaa !9
  br label %.preheader936

.preheader936:                                    ; preds = %.lr.ph1479.preheader, %217
  %invariant.gep1502 = getelementptr double, ptr %5, i64 %218
  %224 = icmp sgt i64 %139, -2
  br i1 %224, label %.lr.ph1511.preheader, label %._crit_edge1512

.lr.ph1511.preheader:                             ; preds = %.preheader936
  %225 = add nsw i64 %140, -2
  br label %.lr.ph1511

.lr.ph1511:                                       ; preds = %.lr.ph1511.preheader, %._crit_edge1500
  %indvar2031 = phi i64 [ 0, %.lr.ph1511.preheader ], [ %indvar.next2032, %._crit_edge1500 ]
  %storemerge914.in1514 = phi i64 [ %140, %.lr.ph1511.preheader ], [ %storemerge914, %._crit_edge1500 ]
  %storemerge914.in1509 = phi i64 [ %218, %.lr.ph1511.preheader ], [ %storemerge914.in1514, %._crit_edge1500 ]
  %226 = xor i64 %indvar2031, -1
  %227 = add i64 %140, %226
  %.not9151483 = icmp slt i64 %storemerge914.in1509, 3
  br i1 %.not9151483, label %._crit_edge1487, label %.lr.ph1486

.lr.ph1486:                                       ; preds = %.lr.ph1511
  %228 = mul nsw i64 %storemerge914.in1514, %.0772
  %invariant.gep1489 = getelementptr double, ptr %4, i64 %228
  %229 = add nsw i64 %storemerge914.in1509, -2
  %xtraiter2033 = and i64 %227, 1
  %230 = icmp eq i64 %225, %indvar2031
  br i1 %230, label %._crit_edge1487.loopexit.unr-lcssa, label %.lr.ph1486.new

.lr.ph1486.new:                                   ; preds = %.lr.ph1486
  %unroll_iter2037 = and i64 %227, -2
  br label %231

231:                                              ; preds = %231, %.lr.ph1486.new
  %.87901484 = phi i64 [ 0, %.lr.ph1486.new ], [ %248, %231 ]
  %232 = phi double [ 0.000000e+00, %.lr.ph1486.new ], [ %245, %231 ]
  %niter2038 = phi i64 [ 0, %.lr.ph1486.new ], [ %niter2038.next.1, %231 ]
  %gep1490 = getelementptr double, ptr %invariant.gep1489, i64 %.87901484
  %233 = load double, ptr %gep1490, align 8, !tbaa !9
  %234 = fcmp oge double %233, 0.000000e+00
  %235 = fneg double %233
  %236 = select i1 %234, double %233, double %235
  %237 = fadd double %232, %236
  %gep1481 = getelementptr double, ptr %invariant.gep1502, i64 %.87901484
  %238 = load double, ptr %gep1481, align 8, !tbaa !9
  %239 = fadd double %236, %238
  store double %239, ptr %gep1481, align 8, !tbaa !9
  %240 = or disjoint i64 %.87901484, 1
  %gep1490.1 = getelementptr double, ptr %invariant.gep1489, i64 %240
  %241 = load double, ptr %gep1490.1, align 8, !tbaa !9
  %242 = fcmp oge double %241, 0.000000e+00
  %243 = fneg double %241
  %244 = select i1 %242, double %241, double %243
  %245 = fadd double %237, %244
  %gep1481.1 = getelementptr double, ptr %invariant.gep1502, i64 %240
  %246 = load double, ptr %gep1481.1, align 8, !tbaa !9
  %247 = fadd double %244, %246
  store double %247, ptr %gep1481.1, align 8, !tbaa !9
  %248 = add nuw i64 %.87901484, 2
  %niter2038.next.1 = add i64 %niter2038, 2
  %niter2038.ncmp.1 = icmp eq i64 %niter2038.next.1, %unroll_iter2037
  br i1 %niter2038.ncmp.1, label %._crit_edge1487.loopexit.unr-lcssa, label %231, !llvm.loop !24

._crit_edge1487.loopexit.unr-lcssa:               ; preds = %231, %.lr.ph1486
  %.lcssa1874.ph = phi double [ poison, %.lr.ph1486 ], [ %245, %231 ]
  %.87901484.unr = phi i64 [ 0, %.lr.ph1486 ], [ %248, %231 ]
  %.unr2034 = phi double [ 0.000000e+00, %.lr.ph1486 ], [ %245, %231 ]
  %lcmp.mod2035.not = icmp eq i64 %xtraiter2033, 0
  br i1 %lcmp.mod2035.not, label %._crit_edge1487, label %._crit_edge1487.loopexit.epilog-lcssa

._crit_edge1487.loopexit.epilog-lcssa:            ; preds = %._crit_edge1487.loopexit.unr-lcssa
  %gep1490.epil = getelementptr double, ptr %invariant.gep1489, i64 %.87901484.unr
  %249 = load double, ptr %gep1490.epil, align 8, !tbaa !9
  %250 = fcmp oge double %249, 0.000000e+00
  %251 = fneg double %249
  %252 = select i1 %250, double %249, double %251
  %253 = fadd double %.unr2034, %252
  %gep1481.epil = getelementptr double, ptr %invariant.gep1502, i64 %.87901484.unr
  %254 = load double, ptr %gep1481.epil, align 8, !tbaa !9
  %255 = fadd double %252, %254
  store double %255, ptr %gep1481.epil, align 8, !tbaa !9
  br label %._crit_edge1487

._crit_edge1487:                                  ; preds = %._crit_edge1487.loopexit.epilog-lcssa, %._crit_edge1487.loopexit.unr-lcssa, %.lr.ph1511
  %.lcssa15011506 = phi double [ 0.000000e+00, %.lr.ph1511 ], [ %.lcssa1874.ph, %._crit_edge1487.loopexit.unr-lcssa ], [ %253, %._crit_edge1487.loopexit.epilog-lcssa ]
  %.8790.lcssa = phi i64 [ 0, %.lr.ph1511 ], [ %229, %._crit_edge1487.loopexit.unr-lcssa ], [ %229, %._crit_edge1487.loopexit.epilog-lcssa ]
  %.not935 = icmp eq i64 %storemerge914.in1509, 1
  %.pre1750 = mul nsw i64 %storemerge914.in1514, %.0772
  br i1 %.not935, label %._crit_edge1487._crit_edge, label %256

256:                                              ; preds = %._crit_edge1487
  %257 = getelementptr double, ptr %4, i64 %.8790.lcssa
  %258 = getelementptr double, ptr %257, i64 %.pre1750
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = fcmp oge double %259, 0.000000e+00
  %261 = fneg double %259
  %262 = select i1 %260, double %259, double %261
  %263 = fadd double %.lcssa15011506, %262
  %gep1503 = getelementptr double, ptr %invariant.gep1502, i64 %.8790.lcssa
  %264 = load double, ptr %gep1503, align 8, !tbaa !9
  %265 = fadd double %264, %263
  store double %265, ptr %gep1503, align 8, !tbaa !9
  %266 = add nuw nsw i64 %.8790.lcssa, 1
  br label %._crit_edge1487._crit_edge

._crit_edge1487._crit_edge:                       ; preds = %._crit_edge1487, %256
  %.9 = phi i64 [ %266, %256 ], [ %.8790.lcssa, %._crit_edge1487 ]
  %267 = getelementptr double, ptr %4, i64 %.9
  %268 = getelementptr double, ptr %267, i64 %.pre1750
  %269 = load double, ptr %268, align 8, !tbaa !9
  %270 = fcmp oge double %269, 0.000000e+00
  %271 = fneg double %269
  %272 = select i1 %270, double %269, double %271
  %273 = getelementptr inbounds double, ptr %5, i64 %storemerge914.in1514
  store double %272, ptr %273, align 8, !tbaa !9
  %invariant.gep1492 = getelementptr double, ptr %4, i64 %.pre1750
  %.not916.not1495 = icmp slt i64 %storemerge914.in1514, %219
  br i1 %.not916.not1495, label %.lr.ph1499, label %._crit_edge1500

.lr.ph1499:                                       ; preds = %._crit_edge1487._crit_edge, %.lr.ph1499
  %.1775.in1497 = phi i64 [ %.1775, %.lr.ph1499 ], [ %storemerge914.in1514, %._crit_edge1487._crit_edge ]
  %.101496 = phi i64 [ %275, %.lr.ph1499 ], [ %.9, %._crit_edge1487._crit_edge ]
  %274 = phi double [ %280, %.lr.ph1499 ], [ 0.000000e+00, %._crit_edge1487._crit_edge ]
  %.1775 = add nsw i64 %.1775.in1497, 1
  %275 = add nsw i64 %.101496, 1
  %gep1493 = getelementptr double, ptr %invariant.gep1492, i64 %275
  %276 = load double, ptr %gep1493, align 8, !tbaa !9
  %277 = fcmp oge double %276, 0.000000e+00
  %278 = fneg double %276
  %279 = select i1 %277, double %276, double %278
  %280 = fadd double %274, %279
  %281 = getelementptr inbounds double, ptr %5, i64 %.1775
  %282 = load double, ptr %281, align 8, !tbaa !9
  %283 = fadd double %279, %282
  store double %283, ptr %281, align 8, !tbaa !9
  %exitcond1704.not = icmp eq i64 %.1775, %219
  br i1 %exitcond1704.not, label %._crit_edge1500.loopexit, label %.lr.ph1499, !llvm.loop !25

._crit_edge1500.loopexit:                         ; preds = %.lr.ph1499
  %.pre1731 = load double, ptr %273, align 8, !tbaa !9
  br label %._crit_edge1500

._crit_edge1500:                                  ; preds = %._crit_edge1500.loopexit, %._crit_edge1487._crit_edge
  %284 = phi double [ %272, %._crit_edge1487._crit_edge ], [ %.pre1731, %._crit_edge1500.loopexit ]
  %.lcssa15011505 = phi double [ 0.000000e+00, %._crit_edge1487._crit_edge ], [ %280, %._crit_edge1500.loopexit ]
  %285 = fadd double %.lcssa15011505, %284
  store double %285, ptr %273, align 8, !tbaa !9
  %storemerge914 = add nsw i64 %storemerge914.in1514, -1
  %286 = icmp sgt i64 %storemerge914.in1514, 0
  %indvar.next2032 = add i64 %indvar2031, 1
  br i1 %286, label %.lr.ph1511, label %._crit_edge1512, !llvm.loop !26

._crit_edge1512:                                  ; preds = %._crit_edge1500, %.preheader936
  %287 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull @c__1) #6
  %288 = getelementptr double, ptr %5, i64 %287
  %289 = getelementptr i8, ptr %288, i64 -8
  %290 = load double, ptr %289, align 8, !tbaa !9
  br label %.loopexit

291:                                              ; preds = %141
  br i1 %.not817.not.not.not.not.not.not.not.not, label %362, label %292

292:                                              ; preds = %291
  %293 = add nsw i64 %140, -1
  %.not908.not1515 = icmp sgt i64 %139, 1
  br i1 %.not908.not1515, label %.lr.ph1548.preheader, label %._crit_edge1519

.lr.ph1548.preheader:                             ; preds = %292
  %294 = shl nuw i64 %140, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %294, i1 false), !tbaa !9
  %invariant.op1830 = sub nsw i64 0, %140
  %295 = add nsw i64 %140, -1
  br label %.lr.ph1548

.lr.ph1548:                                       ; preds = %.lr.ph1548.preheader, %._crit_edge1538
  %indvars.iv1705 = phi i64 [ %140, %.lr.ph1548.preheader ], [ %indvars.iv.next1706, %._crit_edge1538 ]
  %storemerge9091546 = phi i64 [ 0, %.lr.ph1548.preheader ], [ %357, %._crit_edge1538 ]
  %.not911.not1521 = icmp sgt i64 %storemerge9091546, %invariant.op1830
  %296 = mul nsw i64 %storemerge9091546, %.0772
  br i1 %.not911.not1521, label %.lr.ph1524, label %._crit_edge1525

.lr.ph1524:                                       ; preds = %.lr.ph1548
  %invariant.gep1527 = getelementptr double, ptr %4, i64 %296
  %xtraiter2040 = and i64 %indvars.iv1705, 1
  %297 = sub nsw i64 0, %storemerge9091546
  %298 = icmp eq i64 %295, %297
  br i1 %298, label %._crit_edge1525.loopexit.unr-lcssa, label %.lr.ph1524.new

.lr.ph1524.new:                                   ; preds = %.lr.ph1524
  %unroll_iter2044 = and i64 %indvars.iv1705, -2
  br label %299

299:                                              ; preds = %299, %.lr.ph1524.new
  %.121522 = phi i64 [ 0, %.lr.ph1524.new ], [ %318, %299 ]
  %300 = phi double [ 0.000000e+00, %.lr.ph1524.new ], [ %314, %299 ]
  %niter2045 = phi i64 [ 0, %.lr.ph1524.new ], [ %niter2045.next.1, %299 ]
  %gep1528 = getelementptr double, ptr %invariant.gep1527, i64 %.121522
  %301 = load double, ptr %gep1528, align 8, !tbaa !9
  %302 = fcmp oge double %301, 0.000000e+00
  %303 = fneg double %301
  %304 = select i1 %302, double %301, double %303
  %305 = fadd double %300, %304
  %306 = getelementptr inbounds double, ptr %5, i64 %.121522
  %307 = load double, ptr %306, align 8, !tbaa !9
  %308 = fadd double %304, %307
  store double %308, ptr %306, align 8, !tbaa !9
  %309 = or disjoint i64 %.121522, 1
  %gep1528.1 = getelementptr double, ptr %invariant.gep1527, i64 %309
  %310 = load double, ptr %gep1528.1, align 8, !tbaa !9
  %311 = fcmp oge double %310, 0.000000e+00
  %312 = fneg double %310
  %313 = select i1 %311, double %310, double %312
  %314 = fadd double %305, %313
  %315 = getelementptr inbounds double, ptr %5, i64 %309
  %316 = load double, ptr %315, align 8, !tbaa !9
  %317 = fadd double %313, %316
  store double %317, ptr %315, align 8, !tbaa !9
  %318 = add nuw nsw i64 %.121522, 2
  %niter2045.next.1 = add i64 %niter2045, 2
  %niter2045.ncmp.1 = icmp eq i64 %niter2045.next.1, %unroll_iter2044
  br i1 %niter2045.ncmp.1, label %._crit_edge1525.loopexit.unr-lcssa, label %299, !llvm.loop !27

._crit_edge1525.loopexit.unr-lcssa:               ; preds = %299, %.lr.ph1524
  %.lcssa1872.ph = phi double [ poison, %.lr.ph1524 ], [ %314, %299 ]
  %.121522.unr = phi i64 [ 0, %.lr.ph1524 ], [ %318, %299 ]
  %.unr2041 = phi double [ 0.000000e+00, %.lr.ph1524 ], [ %314, %299 ]
  %lcmp.mod2042.not = icmp eq i64 %xtraiter2040, 0
  br i1 %lcmp.mod2042.not, label %._crit_edge1525, label %._crit_edge1525.loopexit.epilog-lcssa

._crit_edge1525.loopexit.epilog-lcssa:            ; preds = %._crit_edge1525.loopexit.unr-lcssa
  %gep1528.epil = getelementptr double, ptr %invariant.gep1527, i64 %.121522.unr
  %319 = load double, ptr %gep1528.epil, align 8, !tbaa !9
  %320 = fcmp oge double %319, 0.000000e+00
  %321 = fneg double %319
  %322 = select i1 %320, double %319, double %321
  %323 = fadd double %.unr2041, %322
  %324 = getelementptr inbounds double, ptr %5, i64 %.121522.unr
  %325 = load double, ptr %324, align 8, !tbaa !9
  %326 = fadd double %322, %325
  store double %326, ptr %324, align 8, !tbaa !9
  br label %._crit_edge1525

._crit_edge1525:                                  ; preds = %._crit_edge1525.loopexit.epilog-lcssa, %._crit_edge1525.loopexit.unr-lcssa, %.lr.ph1548
  %.lcssa15391541 = phi double [ 0.000000e+00, %.lr.ph1548 ], [ %.lcssa1872.ph, %._crit_edge1525.loopexit.unr-lcssa ], [ %323, %._crit_edge1525.loopexit.epilog-lcssa ]
  %.12.lcssa = phi i64 [ 0, %.lr.ph1548 ], [ %indvars.iv1705, %._crit_edge1525.loopexit.unr-lcssa ], [ %indvars.iv1705, %._crit_edge1525.loopexit.epilog-lcssa ]
  %327 = getelementptr double, ptr %4, i64 %.12.lcssa
  %328 = getelementptr double, ptr %327, i64 %296
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = fcmp oge double %329, 0.000000e+00
  %331 = fneg double %329
  %332 = select i1 %330, double %329, double %331
  %333 = fadd double %.lcssa15391541, %332
  %334 = getelementptr double, ptr %5, i64 %storemerge9091546
  %335 = getelementptr double, ptr %334, i64 %140
  store double %333, ptr %335, align 8, !tbaa !9
  %336 = add nuw nsw i64 %.12.lcssa, 1
  %337 = getelementptr double, ptr %4, i64 %336
  %338 = getelementptr double, ptr %337, i64 %296
  %339 = load double, ptr %338, align 8, !tbaa !9
  %340 = fcmp oge double %339, 0.000000e+00
  %341 = fneg double %339
  %342 = select i1 %340, double %339, double %341
  %343 = load double, ptr %334, align 8, !tbaa !9
  %344 = fadd double %343, %342
  store double %344, ptr %334, align 8, !tbaa !9
  %invariant.gep1530 = getelementptr double, ptr %4, i64 %296
  %.not912.not1533 = icmp slt i64 %storemerge9091546, %293
  br i1 %.not912.not1533, label %.lr.ph1537, label %._crit_edge1538

.lr.ph1537:                                       ; preds = %._crit_edge1525, %.lr.ph1537
  %.2776.in1535 = phi i64 [ %.2776, %.lr.ph1537 ], [ %storemerge9091546, %._crit_edge1525 ]
  %.131534 = phi i64 [ %346, %.lr.ph1537 ], [ %336, %._crit_edge1525 ]
  %345 = phi double [ %351, %.lr.ph1537 ], [ 0.000000e+00, %._crit_edge1525 ]
  %.2776 = add nuw nsw i64 %.2776.in1535, 1
  %346 = add nuw nsw i64 %.131534, 1
  %gep1531 = getelementptr double, ptr %invariant.gep1530, i64 %346
  %347 = load double, ptr %gep1531, 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 = fadd double %345, %350
  %352 = getelementptr inbounds double, ptr %5, i64 %.2776
  %353 = load double, ptr %352, align 8, !tbaa !9
  %354 = fadd double %350, %353
  store double %354, ptr %352, align 8, !tbaa !9
  %.not912.not = icmp slt i64 %.2776, %293
  br i1 %.not912.not, label %.lr.ph1537, label %._crit_edge1538.loopexit, !llvm.loop !28

._crit_edge1538.loopexit:                         ; preds = %.lr.ph1537
  %.pre1732 = load double, ptr %334, align 8, !tbaa !9
  br label %._crit_edge1538

._crit_edge1538:                                  ; preds = %._crit_edge1538.loopexit, %._crit_edge1525
  %355 = phi double [ %344, %._crit_edge1525 ], [ %.pre1732, %._crit_edge1538.loopexit ]
  %.lcssa15391542 = phi double [ 0.000000e+00, %._crit_edge1525 ], [ %351, %._crit_edge1538.loopexit ]
  %356 = fadd double %.lcssa15391542, %355
  store double %356, ptr %334, align 8, !tbaa !9
  %357 = add nuw nsw i64 %storemerge9091546, 1
  %indvars.iv.next1706 = add i64 %indvars.iv1705, 1
  %exitcond1708.not = icmp eq i64 %357, %140
  br i1 %exitcond1708.not, label %._crit_edge1519, label %.lr.ph1548, !llvm.loop !29

._crit_edge1519:                                  ; preds = %._crit_edge1538, %292
  %358 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull @c__1) #6
  %359 = getelementptr double, ptr %5, i64 %358
  %360 = getelementptr i8, ptr %359, i64 -8
  %361 = load double, ptr %360, align 8, !tbaa !9
  br label %.loopexit

362:                                              ; preds = %291
  %363 = add i64 %139, -1
  %.not904.not1552 = icmp sgt i64 %139, 0
  br i1 %.not904.not1552, label %.preheader, label %.preheader.thread

.preheader:                                       ; preds = %362
  %364 = shl nuw i64 %140, 3
  %scevgep1709 = getelementptr i8, ptr %5, i64 %364
  %365 = add nuw nsw i64 %140, 1
  %smax1710 = tail call i64 @llvm.smax.i64(i64 %139, i64 %365)
  %366 = sub nsw i64 %smax1710, %140
  %367 = shl i64 %366, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep1709, i8 0, i64 %367, i1 false), !tbaa !9
  %invariant.gep1578 = getelementptr double, ptr %5, i64 %140
  %.not1831 = icmp eq i64 %139, 1
  br i1 %.not1831, label %.preheader.thread, label %.lr.ph1589.preheader

.lr.ph1589.preheader:                             ; preds = %.preheader
  %368 = add nsw i64 %140, -2
  br label %.lr.ph1589

.lr.ph1589:                                       ; preds = %.lr.ph1589.preheader, %._crit_edge1576
  %indvar2047 = phi i64 [ 0, %.lr.ph1589.preheader ], [ %indvar.next2048, %._crit_edge1576 ]
  %storemerge905.in1587 = phi i64 [ %140, %.lr.ph1589.preheader ], [ %storemerge905.in1593, %._crit_edge1576 ]
  %369 = xor i64 %indvar2047, -1
  %370 = add i64 %140, %369
  %storemerge905.in1593 = add nsw i64 %storemerge905.in1587, -1
  %.not9061559 = icmp slt i64 %storemerge905.in1587, 2
  %.pre1746 = mul nsw i64 %storemerge905.in1593, %.0772
  br i1 %.not9061559, label %._crit_edge1563, label %.lr.ph1562

.lr.ph1562:                                       ; preds = %.lr.ph1589
  %invariant.gep1565 = getelementptr double, ptr %4, i64 %.pre1746
  %371 = add nsw i64 %storemerge905.in1587, -1
  %xtraiter2049 = and i64 %370, 1
  %372 = icmp eq i64 %368, %indvar2047
  br i1 %372, label %._crit_edge1563.loopexit.unr-lcssa, label %.lr.ph1562.new

.lr.ph1562.new:                                   ; preds = %.lr.ph1562
  %unroll_iter2053 = and i64 %370, -2
  br label %373

373:                                              ; preds = %373, %.lr.ph1562.new
  %.151560 = phi i64 [ 0, %.lr.ph1562.new ], [ %390, %373 ]
  %374 = phi double [ 0.000000e+00, %.lr.ph1562.new ], [ %387, %373 ]
  %niter2054 = phi i64 [ 0, %.lr.ph1562.new ], [ %niter2054.next.1, %373 ]
  %gep1566 = getelementptr double, ptr %invariant.gep1565, i64 %.151560
  %375 = load double, ptr %gep1566, align 8, !tbaa !9
  %376 = fcmp oge double %375, 0.000000e+00
  %377 = fneg double %375
  %378 = select i1 %376, double %375, double %377
  %379 = fadd double %374, %378
  %gep1557 = getelementptr double, ptr %invariant.gep1578, i64 %.151560
  %380 = load double, ptr %gep1557, align 8, !tbaa !9
  %381 = fadd double %378, %380
  store double %381, ptr %gep1557, align 8, !tbaa !9
  %382 = or disjoint i64 %.151560, 1
  %gep1566.1 = getelementptr double, ptr %invariant.gep1565, i64 %382
  %383 = load double, ptr %gep1566.1, align 8, !tbaa !9
  %384 = fcmp oge double %383, 0.000000e+00
  %385 = fneg double %383
  %386 = select i1 %384, double %383, double %385
  %387 = fadd double %379, %386
  %gep1557.1 = getelementptr double, ptr %invariant.gep1578, i64 %382
  %388 = load double, ptr %gep1557.1, align 8, !tbaa !9
  %389 = fadd double %386, %388
  store double %389, ptr %gep1557.1, align 8, !tbaa !9
  %390 = add nuw i64 %.151560, 2
  %niter2054.next.1 = add i64 %niter2054, 2
  %niter2054.ncmp.1 = icmp eq i64 %niter2054.next.1, %unroll_iter2053
  br i1 %niter2054.ncmp.1, label %._crit_edge1563.loopexit.unr-lcssa, label %373, !llvm.loop !30

._crit_edge1563.loopexit.unr-lcssa:               ; preds = %373, %.lr.ph1562
  %.lcssa.ph = phi double [ poison, %.lr.ph1562 ], [ %387, %373 ]
  %.151560.unr = phi i64 [ 0, %.lr.ph1562 ], [ %390, %373 ]
  %.unr2050 = phi double [ 0.000000e+00, %.lr.ph1562 ], [ %387, %373 ]
  %lcmp.mod2051.not = icmp eq i64 %xtraiter2049, 0
  br i1 %lcmp.mod2051.not, label %._crit_edge1563, label %._crit_edge1563.loopexit.epilog-lcssa

._crit_edge1563.loopexit.epilog-lcssa:            ; preds = %._crit_edge1563.loopexit.unr-lcssa
  %gep1566.epil = getelementptr double, ptr %invariant.gep1565, i64 %.151560.unr
  %391 = load double, ptr %gep1566.epil, align 8, !tbaa !9
  %392 = fcmp oge double %391, 0.000000e+00
  %393 = fneg double %391
  %394 = select i1 %392, double %391, double %393
  %395 = fadd double %.unr2050, %394
  %gep1557.epil = getelementptr double, ptr %invariant.gep1578, i64 %.151560.unr
  %396 = load double, ptr %gep1557.epil, align 8, !tbaa !9
  %397 = fadd double %394, %396
  store double %397, ptr %gep1557.epil, align 8, !tbaa !9
  br label %._crit_edge1563

._crit_edge1563:                                  ; preds = %._crit_edge1563.loopexit.epilog-lcssa, %._crit_edge1563.loopexit.unr-lcssa, %.lr.ph1589
  %.lcssa15771581 = phi double [ 0.000000e+00, %.lr.ph1589 ], [ %.lcssa.ph, %._crit_edge1563.loopexit.unr-lcssa ], [ %395, %._crit_edge1563.loopexit.epilog-lcssa ]
  %.15.lcssa = phi i64 [ 0, %.lr.ph1589 ], [ %371, %._crit_edge1563.loopexit.unr-lcssa ], [ %371, %._crit_edge1563.loopexit.epilog-lcssa ]
  %398 = getelementptr double, ptr %4, i64 %.15.lcssa
  %399 = getelementptr double, ptr %398, i64 %.pre1746
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = fcmp oge double %400, 0.000000e+00
  %402 = fneg double %400
  %403 = select i1 %401, double %400, double %402
  %404 = fadd double %.lcssa15771581, %403
  %gep1579 = getelementptr double, ptr %invariant.gep1578, i64 %.15.lcssa
  %405 = load double, ptr %gep1579, align 8, !tbaa !9
  %406 = fadd double %405, %404
  store double %406, ptr %gep1579, align 8, !tbaa !9
  %407 = add nuw nsw i64 %.15.lcssa, 1
  %408 = getelementptr double, ptr %4, i64 %407
  %409 = getelementptr double, ptr %408, i64 %.pre1746
  %410 = load double, ptr %409, align 8, !tbaa !9
  %411 = fcmp oge double %410, 0.000000e+00
  %412 = fneg double %410
  %413 = select i1 %411, double %410, double %412
  %414 = getelementptr inbounds double, ptr %5, i64 %storemerge905.in1593
  store double %413, ptr %414, align 8, !tbaa !9
  %invariant.gep1568 = getelementptr double, ptr %4, i64 %.pre1746
  %.not907.not1571.not = icmp sgt i64 %storemerge905.in1587, %363
  br i1 %.not907.not1571.not, label %._crit_edge1576, label %.lr.ph1575

.lr.ph1575:                                       ; preds = %._crit_edge1563, %.lr.ph1575
  %.3777.in1573 = phi i64 [ %.3777, %.lr.ph1575 ], [ %storemerge905.in1593, %._crit_edge1563 ]
  %.161572 = phi i64 [ %416, %.lr.ph1575 ], [ %407, %._crit_edge1563 ]
  %415 = phi double [ %421, %.lr.ph1575 ], [ 0.000000e+00, %._crit_edge1563 ]
  %.3777 = add nsw i64 %.3777.in1573, 1
  %416 = add nuw nsw i64 %.161572, 1
  %gep1569 = getelementptr double, ptr %invariant.gep1568, i64 %416
  %417 = load double, ptr %gep1569, align 8, !tbaa !9
  %418 = fcmp oge double %417, 0.000000e+00
  %419 = fneg double %417
  %420 = select i1 %418, double %417, double %419
  %421 = fadd double %415, %420
  %422 = getelementptr inbounds double, ptr %5, i64 %.3777
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = fadd double %420, %423
  store double %424, ptr %422, align 8, !tbaa !9
  %exitcond1712.not = icmp eq i64 %.3777, %363
  br i1 %exitcond1712.not, label %._crit_edge1576.loopexit, label %.lr.ph1575, !llvm.loop !31

._crit_edge1576.loopexit:                         ; preds = %.lr.ph1575
  %.pre1733 = load double, ptr %414, align 8, !tbaa !9
  br label %._crit_edge1576

._crit_edge1576:                                  ; preds = %._crit_edge1576.loopexit, %._crit_edge1563
  %425 = phi double [ %413, %._crit_edge1563 ], [ %.pre1733, %._crit_edge1576.loopexit ]
  %.lcssa15771582 = phi double [ 0.000000e+00, %._crit_edge1563 ], [ %421, %._crit_edge1576.loopexit ]
  %426 = fadd double %.lcssa15771582, %425
  store double %426, ptr %414, align 8, !tbaa !9
  %427 = icmp sgt i64 %storemerge905.in1587, 1
  %indvar.next2048 = add i64 %indvar2047, 1
  br i1 %427, label %.lr.ph1589, label %.preheader.thread, !llvm.loop !32

.preheader.thread:                                ; preds = %._crit_edge1576, %362, %.preheader
  %428 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull @c__1) #6
  %429 = getelementptr double, ptr %5, i64 %428
  %430 = getelementptr i8, ptr %429, i64 -8
  %431 = load double, ptr %430, align 8, !tbaa !9
  br label %.loopexit

432:                                              ; preds = %138
  br i1 %.not903, label %720, label %433

433:                                              ; preds = %432
  %434 = add nsw i64 %140, 1
  %435 = add i64 %139, -1
  br i1 %.not817.not.not.not.not.not.not.not.not, label %573, label %436

436:                                              ; preds = %433
  %.not894.not1122 = icmp sgt i64 %139, 0
  br i1 %.not894.not1122, label %._crit_edge1126, label %._crit_edge1126.thread

._crit_edge1126:                                  ; preds = %436
  %437 = shl i64 %140, 3
  %scevgep = getelementptr i8, ptr %5, i64 %437
  %smax1664 = tail call i64 @llvm.smax.i64(i64 %139, i64 %434)
  %438 = sub nsw i64 %smax1664, %140
  %439 = shl i64 %438, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %439, i1 false), !tbaa !9
  %.not896.not1143.not = icmp eq i64 %139, 1
  br i1 %.not896.not1143.not, label %._crit_edge1126.thread, label %.lr.ph1146

.lr.ph1146:                                       ; preds = %._crit_edge1126
  %invariant.gep1127 = getelementptr double, ptr %5, i64 %140
  %440 = add nuw nsw i64 %140, 1
  %unroll_iter1933 = and i64 %440, 9223372036854775806
  %441 = and i64 %140, 1
  %lcmp.mod1931.not.not = icmp eq i64 %441, 0
  br label %.lr.ph1133

.lr.ph1133:                                       ; preds = %._crit_edge1134, %.lr.ph1146
  %storemerge8951144 = phi i64 [ 0, %.lr.ph1146 ], [ %469, %._crit_edge1134 ]
  %442 = mul nsw i64 %storemerge8951144, %.0772
  %invariant.gep1135 = getelementptr double, ptr %4, i64 %442
  br label %443

443:                                              ; preds = %443, %.lr.ph1133
  %.181131 = phi i64 [ 0, %.lr.ph1133 ], [ %460, %443 ]
  %444 = phi double [ 0.000000e+00, %.lr.ph1133 ], [ %459, %443 ]
  %niter1934 = phi i64 [ 0, %.lr.ph1133 ], [ %niter1934.next.1, %443 ]
  %gep1136 = getelementptr double, ptr %invariant.gep1135, i64 %.181131
  %445 = load double, ptr %gep1136, align 8, !tbaa !9
  %446 = fcmp oge double %445, 0.000000e+00
  %447 = fneg double %445
  %448 = select i1 %446, double %445, double %447
  %gep1128 = getelementptr double, ptr %invariant.gep1127, i64 %.181131
  %449 = load double, ptr %gep1128, align 8, !tbaa !9
  %450 = fadd double %449, %448
  store double %450, ptr %gep1128, align 8, !tbaa !9
  %451 = fadd double %448, %444
  %452 = or disjoint i64 %.181131, 1
  %gep1136.1 = getelementptr double, ptr %invariant.gep1135, i64 %452
  %453 = load double, ptr %gep1136.1, align 8, !tbaa !9
  %454 = fcmp oge double %453, 0.000000e+00
  %455 = fneg double %453
  %456 = select i1 %454, double %453, double %455
  %gep1128.1 = getelementptr double, ptr %invariant.gep1127, i64 %452
  %457 = load double, ptr %gep1128.1, align 8, !tbaa !9
  %458 = fadd double %457, %456
  store double %458, ptr %gep1128.1, align 8, !tbaa !9
  %459 = fadd double %456, %451
  %460 = add nuw nsw i64 %.181131, 2
  %niter1934.next.1 = add i64 %niter1934, 2
  %niter1934.ncmp.1 = icmp eq i64 %niter1934.next.1, %unroll_iter1933
  br i1 %niter1934.ncmp.1, label %._crit_edge1134.unr-lcssa, label %443, !llvm.loop !33

._crit_edge1134.unr-lcssa:                        ; preds = %443
  br i1 %lcmp.mod1931.not.not, label %._crit_edge1134.epilog-lcssa, label %._crit_edge1134

._crit_edge1134.epilog-lcssa:                     ; preds = %._crit_edge1134.unr-lcssa
  %gep1136.epil = getelementptr double, ptr %invariant.gep1135, i64 %460
  %461 = load double, ptr %gep1136.epil, align 8, !tbaa !9
  %462 = fcmp oge double %461, 0.000000e+00
  %463 = fneg double %461
  %464 = select i1 %462, double %461, double %463
  %gep1128.epil = getelementptr double, ptr %invariant.gep1127, i64 %460
  %465 = load double, ptr %gep1128.epil, align 8, !tbaa !9
  %466 = fadd double %465, %464
  store double %466, ptr %gep1128.epil, align 8, !tbaa !9
  %467 = fadd double %464, %459
  br label %._crit_edge1134

._crit_edge1134:                                  ; preds = %._crit_edge1134.unr-lcssa, %._crit_edge1134.epilog-lcssa
  %.lcssa1902 = phi double [ %459, %._crit_edge1134.unr-lcssa ], [ %467, %._crit_edge1134.epilog-lcssa ]
  %468 = getelementptr inbounds double, ptr %5, i64 %storemerge8951144
  store double %.lcssa1902, ptr %468, align 8, !tbaa !9
  %469 = add nuw nsw i64 %storemerge8951144, 1
  %exitcond1666.not = icmp eq i64 %469, %140
  br i1 %exitcond1666.not, label %._crit_edge1126.thread, label %.lr.ph1133, !llvm.loop !34

._crit_edge1126.thread:                           ; preds = %._crit_edge1134, %436, %._crit_edge1126
  %storemerge895.lcssa1138 = phi i64 [ 0, %._crit_edge1126 ], [ 0, %436 ], [ %140, %._crit_edge1134 ]
  %470 = mul nsw i64 %storemerge895.lcssa1138, %.0772
  %471 = getelementptr double, ptr %4, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !9
  %473 = fcmp oge double %472, 0.000000e+00
  %474 = fneg double %472
  %475 = select i1 %473, double %472, double %474
  %invariant.gep1153 = getelementptr double, ptr %5, i64 %140
  %.not8971156 = icmp slt i64 %139, 2
  br i1 %.not8971156, label %._crit_edge1160, label %.lr.ph1159.preheader

.lr.ph1159.preheader:                             ; preds = %._crit_edge1126.thread
  %xtraiter1935 = and i64 %140, 1
  %476 = and i64 %139, 9223372036854775806
  %477 = icmp eq i64 %476, 2
  br i1 %477, label %._crit_edge1160.loopexit.unr-lcssa, label %.lr.ph1159.preheader.new

.lr.ph1159.preheader.new:                         ; preds = %.lr.ph1159.preheader
  %unroll_iter1939 = and i64 %140, 4611686018427387902
  br label %.lr.ph1159

.lr.ph1159:                                       ; preds = %.lr.ph1159, %.lr.ph1159.preheader.new
  %.191157 = phi i64 [ 1, %.lr.ph1159.preheader.new ], [ %494, %.lr.ph1159 ]
  %478 = phi double [ %475, %.lr.ph1159.preheader.new ], [ %493, %.lr.ph1159 ]
  %niter1940 = phi i64 [ 0, %.lr.ph1159.preheader.new ], [ %niter1940.next.1, %.lr.ph1159 ]
  %gep1152 = getelementptr double, ptr %471, i64 %.191157
  %479 = load double, ptr %gep1152, align 8, !tbaa !9
  %480 = fcmp oge double %479, 0.000000e+00
  %481 = fneg double %479
  %482 = select i1 %480, double %479, double %481
  %gep1154 = getelementptr double, ptr %invariant.gep1153, i64 %.191157
  %483 = load double, ptr %gep1154, align 8, !tbaa !9
  %484 = fadd double %483, %482
  store double %484, ptr %gep1154, align 8, !tbaa !9
  %485 = fadd double %482, %478
  %486 = add nuw nsw i64 %.191157, 1
  %gep1152.1 = getelementptr double, ptr %471, i64 %486
  %487 = load double, ptr %gep1152.1, align 8, !tbaa !9
  %488 = fcmp oge double %487, 0.000000e+00
  %489 = fneg double %487
  %490 = select i1 %488, double %487, double %489
  %gep1154.1 = getelementptr double, ptr %invariant.gep1153, i64 %486
  %491 = load double, ptr %gep1154.1, align 8, !tbaa !9
  %492 = fadd double %491, %490
  store double %492, ptr %gep1154.1, align 8, !tbaa !9
  %493 = fadd double %490, %485
  %494 = add nuw nsw i64 %.191157, 2
  %niter1940.next.1 = add i64 %niter1940, 2
  %niter1940.ncmp.1 = icmp eq i64 %niter1940.next.1, %unroll_iter1939
  br i1 %niter1940.ncmp.1, label %._crit_edge1160.loopexit.unr-lcssa, label %.lr.ph1159, !llvm.loop !35

._crit_edge1160.loopexit.unr-lcssa:               ; preds = %.lr.ph1159, %.lr.ph1159.preheader
  %.lcssa1901.ph = phi double [ poison, %.lr.ph1159.preheader ], [ %493, %.lr.ph1159 ]
  %.191157.unr = phi i64 [ 1, %.lr.ph1159.preheader ], [ %494, %.lr.ph1159 ]
  %.unr1936 = phi double [ %475, %.lr.ph1159.preheader ], [ %493, %.lr.ph1159 ]
  %lcmp.mod1937.not = icmp eq i64 %xtraiter1935, 0
  br i1 %lcmp.mod1937.not, label %._crit_edge1160, label %.lr.ph1159.epil

.lr.ph1159.epil:                                  ; preds = %._crit_edge1160.loopexit.unr-lcssa
  %gep1152.epil = getelementptr double, ptr %471, i64 %.191157.unr
  %495 = load double, ptr %gep1152.epil, align 8, !tbaa !9
  %496 = fcmp oge double %495, 0.000000e+00
  %497 = fneg double %495
  %498 = select i1 %496, double %495, double %497
  %gep1154.epil = getelementptr double, ptr %invariant.gep1153, i64 %.191157.unr
  %499 = load double, ptr %gep1154.epil, align 8, !tbaa !9
  %500 = fadd double %499, %498
  store double %500, ptr %gep1154.epil, align 8, !tbaa !9
  %501 = fadd double %498, %.unr1936
  br label %._crit_edge1160

._crit_edge1160:                                  ; preds = %.lr.ph1159.epil, %._crit_edge1160.loopexit.unr-lcssa, %._crit_edge1126.thread
  %502 = phi double [ %475, %._crit_edge1126.thread ], [ %.lcssa1901.ph, %._crit_edge1160.loopexit.unr-lcssa ], [ %501, %.lr.ph1159.epil ]
  %503 = getelementptr inbounds double, ptr %5, i64 %storemerge895.lcssa1138
  %504 = load double, ptr %503, align 8, !tbaa !9
  %505 = fadd double %502, %504
  store double %505, ptr %503, align 8, !tbaa !9
  %.not899.not1187 = icmp slt i64 %434, %139
  br i1 %.not899.not1187, label %.lr.ph1190.preheader, label %._crit_edge1191

.lr.ph1190.preheader:                             ; preds = %._crit_edge1160
  %506 = sub i64 %435, %140
  br label %.lr.ph1190

.lr.ph1190:                                       ; preds = %.lr.ph1190.preheader, %._crit_edge1180
  %indvars.iv = phi i64 [ 0, %.lr.ph1190.preheader ], [ %indvars.iv.next, %._crit_edge1180 ]
  %storemerge8981188 = phi i64 [ %434, %.lr.ph1190.preheader ], [ %568, %._crit_edge1180 ]
  %reass.sub = sub i64 %storemerge8981188, %140
  %507 = add i64 %reass.sub, -2
  %.not9001163 = icmp slt i64 %507, 0
  %.pre1766 = mul nsw i64 %storemerge8981188, %.0772
  br i1 %.not9001163, label %._crit_edge1167, label %.lr.ph1166

.lr.ph1166:                                       ; preds = %.lr.ph1190
  %invariant.gep1169 = getelementptr double, ptr %4, i64 %.pre1766
  %xtraiter1942 = and i64 %indvars.iv, 1
  %508 = icmp eq i64 %indvars.iv, 1
  br i1 %508, label %._crit_edge1167.loopexit.unr-lcssa, label %.lr.ph1166.new

.lr.ph1166.new:                                   ; preds = %.lr.ph1166
  %unroll_iter1946 = and i64 %indvars.iv, -2
  br label %509

509:                                              ; preds = %509, %.lr.ph1166.new
  %.201164 = phi i64 [ 0, %.lr.ph1166.new ], [ %528, %509 ]
  %510 = phi double [ 0.000000e+00, %.lr.ph1166.new ], [ %527, %509 ]
  %niter1947 = phi i64 [ 0, %.lr.ph1166.new ], [ %niter1947.next.1, %509 ]
  %gep1170 = getelementptr double, ptr %invariant.gep1169, i64 %.201164
  %511 = load double, ptr %gep1170, align 8, !tbaa !9
  %512 = fcmp oge double %511, 0.000000e+00
  %513 = fneg double %511
  %514 = select i1 %512, double %511, double %513
  %515 = getelementptr inbounds double, ptr %5, i64 %.201164
  %516 = load double, ptr %515, align 8, !tbaa !9
  %517 = fadd double %516, %514
  store double %517, ptr %515, align 8, !tbaa !9
  %518 = fadd double %514, %510
  %519 = or disjoint i64 %.201164, 1
  %gep1170.1 = getelementptr double, ptr %invariant.gep1169, i64 %519
  %520 = load double, ptr %gep1170.1, align 8, !tbaa !9
  %521 = fcmp oge double %520, 0.000000e+00
  %522 = fneg double %520
  %523 = select i1 %521, double %520, double %522
  %524 = getelementptr inbounds double, ptr %5, i64 %519
  %525 = load double, ptr %524, align 8, !tbaa !9
  %526 = fadd double %525, %523
  store double %526, ptr %524, align 8, !tbaa !9
  %527 = fadd double %523, %518
  %528 = add nuw i64 %.201164, 2
  %niter1947.next.1 = add i64 %niter1947, 2
  %niter1947.ncmp.1 = icmp eq i64 %niter1947.next.1, %unroll_iter1946
  br i1 %niter1947.ncmp.1, label %._crit_edge1167.loopexit.unr-lcssa, label %509, !llvm.loop !36

._crit_edge1167.loopexit.unr-lcssa:               ; preds = %509, %.lr.ph1166
  %.lcssa1899.ph = phi double [ poison, %.lr.ph1166 ], [ %527, %509 ]
  %.201164.unr = phi i64 [ 0, %.lr.ph1166 ], [ %528, %509 ]
  %.unr1943 = phi double [ 0.000000e+00, %.lr.ph1166 ], [ %527, %509 ]
  %lcmp.mod1944.not = icmp eq i64 %xtraiter1942, 0
  br i1 %lcmp.mod1944.not, label %._crit_edge1167, label %._crit_edge1167.loopexit.epilog-lcssa

._crit_edge1167.loopexit.epilog-lcssa:            ; preds = %._crit_edge1167.loopexit.unr-lcssa
  %gep1170.epil = getelementptr double, ptr %invariant.gep1169, i64 %.201164.unr
  %529 = load double, ptr %gep1170.epil, align 8, !tbaa !9
  %530 = fcmp oge double %529, 0.000000e+00
  %531 = fneg double %529
  %532 = select i1 %530, double %529, double %531
  %533 = getelementptr inbounds double, ptr %5, i64 %.201164.unr
  %534 = load double, ptr %533, align 8, !tbaa !9
  %535 = fadd double %534, %532
  store double %535, ptr %533, align 8, !tbaa !9
  %536 = fadd double %532, %.unr1943
  br label %._crit_edge1167

._crit_edge1167:                                  ; preds = %._crit_edge1167.loopexit.epilog-lcssa, %._crit_edge1167.loopexit.unr-lcssa, %.lr.ph1190
  %.lcssa11811183 = phi double [ 0.000000e+00, %.lr.ph1190 ], [ %.lcssa1899.ph, %._crit_edge1167.loopexit.unr-lcssa ], [ %536, %._crit_edge1167.loopexit.epilog-lcssa ]
  %.20.lcssa = phi i64 [ 0, %.lr.ph1190 ], [ %indvars.iv, %._crit_edge1167.loopexit.unr-lcssa ], [ %indvars.iv, %._crit_edge1167.loopexit.epilog-lcssa ]
  %537 = getelementptr double, ptr %4, i64 %.20.lcssa
  %538 = getelementptr double, ptr %537, i64 %.pre1766
  %539 = load double, ptr %538, align 8, !tbaa !9
  %540 = fcmp oge double %539, 0.000000e+00
  %541 = fneg double %539
  %542 = select i1 %540, double %539, double %541
  %543 = fadd double %.lcssa11811183, %542
  %544 = sub nsw i64 %storemerge8981188, %434
  %545 = getelementptr inbounds double, ptr %5, i64 %544
  %546 = load double, ptr %545, align 8, !tbaa !9
  %547 = fadd double %546, %543
  store double %547, ptr %545, align 8, !tbaa !9
  %548 = add nuw nsw i64 %.20.lcssa, 1
  %549 = getelementptr double, ptr %4, i64 %548
  %550 = getelementptr double, ptr %549, i64 %.pre1766
  %551 = load double, ptr %550, align 8, !tbaa !9
  %552 = fcmp oge double %551, 0.000000e+00
  %553 = fneg double %551
  %554 = select i1 %552, double %551, double %553
  %invariant.gep1172 = getelementptr double, ptr %4, i64 %.pre1766
  %.not901.not1175 = icmp slt i64 %storemerge8981188, %435
  br i1 %.not901.not1175, label %.lr.ph1179, label %._crit_edge1180

.lr.ph1179:                                       ; preds = %._crit_edge1167, %.lr.ph1179
  %.4778.in1177 = phi i64 [ %.4778, %.lr.ph1179 ], [ %storemerge8981188, %._crit_edge1167 ]
  %.211176 = phi i64 [ %556, %.lr.ph1179 ], [ %548, %._crit_edge1167 ]
  %555 = phi double [ %564, %.lr.ph1179 ], [ %554, %._crit_edge1167 ]
  %.4778 = add nsw i64 %.4778.in1177, 1
  %556 = add nuw nsw i64 %.211176, 1
  %gep1173 = getelementptr double, ptr %invariant.gep1172, i64 %556
  %557 = load double, ptr %gep1173, align 8, !tbaa !9
  %558 = fcmp oge double %557, 0.000000e+00
  %559 = fneg double %557
  %560 = select i1 %558, double %557, double %559
  %561 = getelementptr inbounds double, ptr %5, i64 %.4778
  %562 = load double, ptr %561, align 8, !tbaa !9
  %563 = fadd double %562, %560
  store double %563, ptr %561, align 8, !tbaa !9
  %564 = fadd double %560, %555
  %.not901.not = icmp slt i64 %.4778, %435
  br i1 %.not901.not, label %.lr.ph1179, label %._crit_edge1180, !llvm.loop !37

._crit_edge1180:                                  ; preds = %.lr.ph1179, %._crit_edge1167
  %.lcssa11811184 = phi double [ %554, %._crit_edge1167 ], [ %564, %.lr.ph1179 ]
  %565 = getelementptr inbounds double, ptr %5, i64 %storemerge8981188
  %566 = load double, ptr %565, align 8, !tbaa !9
  %567 = fadd double %.lcssa11811184, %566
  store double %567, ptr %565, align 8, !tbaa !9
  %568 = add nsw i64 %storemerge8981188, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond1669.not = icmp eq i64 %indvars.iv.next, %506
  br i1 %exitcond1669.not, label %._crit_edge1191, label %.lr.ph1190, !llvm.loop !38

._crit_edge1191:                                  ; preds = %._crit_edge1180, %._crit_edge1160
  %569 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull @c__1) #6
  %570 = getelementptr double, ptr %5, i64 %569
  %571 = getelementptr i8, ptr %570, i64 -8
  %572 = load double, ptr %571, align 8, !tbaa !9
  br label %.loopexit

573:                                              ; preds = %433
  %.not885.not1194 = icmp slt i64 %434, %139
  br i1 %.not885.not1194, label %.lr.ph1197.preheader, label %._crit_edge1198

.lr.ph1197.preheader:                             ; preds = %573
  %574 = shl i64 %140, 3
  %575 = getelementptr i8, ptr %5, i64 %574
  %scevgep1670 = getelementptr i8, ptr %575, i64 8
  %576 = sub i64 %435, %140
  %577 = shl nuw i64 %576, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep1670, i8 0, i64 %577, i1 false), !tbaa !9
  br label %._crit_edge1198

._crit_edge1198:                                  ; preds = %.lr.ph1197.preheader, %573
  %.not887.not1225 = icmp sgt i64 %139, 1
  br i1 %.not887.not1225, label %.lr.ph1228, label %._crit_edge1743

.lr.ph1228:                                       ; preds = %._crit_edge1198
  %578 = getelementptr double, ptr %5, i64 %434
  br label %579

579:                                              ; preds = %.lr.ph1228, %._crit_edge1217
  %storemerge8861226 = phi i64 [ 0, %.lr.ph1228 ], [ %639, %._crit_edge1217 ]
  %.not892.not1200.not = icmp eq i64 %storemerge8861226, 0
  br i1 %.not892.not1200.not, label %._crit_edge1204, label %.lr.ph1203

.lr.ph1203:                                       ; preds = %579
  %580 = mul nsw i64 %storemerge8861226, %.0772
  %invariant.gep1206 = getelementptr double, ptr %4, i64 %580
  %xtraiter1949 = and i64 %storemerge8861226, 1
  %581 = icmp eq i64 %storemerge8861226, 1
  br i1 %581, label %._crit_edge1204.loopexit.unr-lcssa, label %.lr.ph1203.new

.lr.ph1203.new:                                   ; preds = %.lr.ph1203
  %unroll_iter1953 = and i64 %storemerge8861226, 9223372036854775806
  br label %582

582:                                              ; preds = %582, %.lr.ph1203.new
  %.231201 = phi i64 [ 0, %.lr.ph1203.new ], [ %601, %582 ]
  %583 = phi double [ 0.000000e+00, %.lr.ph1203.new ], [ %600, %582 ]
  %niter1954 = phi i64 [ 0, %.lr.ph1203.new ], [ %niter1954.next.1, %582 ]
  %gep1207 = getelementptr double, ptr %invariant.gep1206, i64 %.231201
  %584 = load double, ptr %gep1207, align 8, !tbaa !9
  %585 = fcmp oge double %584, 0.000000e+00
  %586 = fneg double %584
  %587 = select i1 %585, double %584, double %586
  %588 = getelementptr inbounds double, ptr %5, i64 %.231201
  %589 = load double, ptr %588, align 8, !tbaa !9
  %590 = fadd double %589, %587
  store double %590, ptr %588, align 8, !tbaa !9
  %591 = fadd double %587, %583
  %592 = or disjoint i64 %.231201, 1
  %gep1207.1 = getelementptr double, ptr %invariant.gep1206, i64 %592
  %593 = load double, ptr %gep1207.1, align 8, !tbaa !9
  %594 = fcmp oge double %593, 0.000000e+00
  %595 = fneg double %593
  %596 = select i1 %594, double %593, double %595
  %597 = getelementptr inbounds double, ptr %5, i64 %592
  %598 = load double, ptr %597, align 8, !tbaa !9
  %599 = fadd double %598, %596
  store double %599, ptr %597, align 8, !tbaa !9
  %600 = fadd double %596, %591
  %601 = add nuw nsw i64 %.231201, 2
  %niter1954.next.1 = add i64 %niter1954, 2
  %niter1954.ncmp.1 = icmp eq i64 %niter1954.next.1, %unroll_iter1953
  br i1 %niter1954.ncmp.1, label %._crit_edge1204.loopexit.unr-lcssa, label %582, !llvm.loop !39

._crit_edge1204.loopexit.unr-lcssa:               ; preds = %582, %.lr.ph1203
  %.lcssa1897.ph = phi double [ poison, %.lr.ph1203 ], [ %600, %582 ]
  %.231201.unr = phi i64 [ 0, %.lr.ph1203 ], [ %601, %582 ]
  %.unr1950 = phi double [ 0.000000e+00, %.lr.ph1203 ], [ %600, %582 ]
  %lcmp.mod1951.not = icmp eq i64 %xtraiter1949, 0
  br i1 %lcmp.mod1951.not, label %._crit_edge1204, label %._crit_edge1204.loopexit.epilog-lcssa

._crit_edge1204.loopexit.epilog-lcssa:            ; preds = %._crit_edge1204.loopexit.unr-lcssa
  %gep1207.epil = getelementptr double, ptr %invariant.gep1206, i64 %.231201.unr
  %602 = load double, ptr %gep1207.epil, align 8, !tbaa !9
  %603 = fcmp oge double %602, 0.000000e+00
  %604 = fneg double %602
  %605 = select i1 %603, double %602, double %604
  %606 = getelementptr inbounds double, ptr %5, i64 %.231201.unr
  %607 = load double, ptr %606, align 8, !tbaa !9
  %608 = fadd double %607, %605
  store double %608, ptr %606, align 8, !tbaa !9
  %609 = fadd double %605, %.unr1950
  br label %._crit_edge1204

._crit_edge1204:                                  ; preds = %._crit_edge1204.loopexit.epilog-lcssa, %._crit_edge1204.loopexit.unr-lcssa, %579
  %.pre-phi1763 = phi i64 [ 0, %579 ], [ %580, %._crit_edge1204.loopexit.unr-lcssa ], [ %580, %._crit_edge1204.loopexit.epilog-lcssa ]
  %.lcssa12181221 = phi double [ 0.000000e+00, %579 ], [ %.lcssa1897.ph, %._crit_edge1204.loopexit.unr-lcssa ], [ %609, %._crit_edge1204.loopexit.epilog-lcssa ]
  %610 = getelementptr double, ptr %4, i64 %storemerge8861226
  %611 = getelementptr double, ptr %610, i64 %.pre-phi1763
  %612 = load double, ptr %611, align 8, !tbaa !9
  %613 = fcmp oge double %612, 0.000000e+00
  %614 = fneg double %612
  %615 = select i1 %613, double %612, double %614
  %616 = fadd double %.lcssa12181221, %615
  %617 = getelementptr inbounds double, ptr %5, i64 %storemerge8861226
  store double %616, ptr %617, align 8, !tbaa !9
  %618 = add nuw nsw i64 %storemerge8861226, 1
  %619 = getelementptr double, ptr %4, i64 %618
  %620 = getelementptr double, ptr %619, i64 %.pre-phi1763
  %621 = load double, ptr %620, align 8, !tbaa !9
  %622 = fcmp oge double %621, 0.000000e+00
  %623 = fneg double %621
  %624 = select i1 %622, double %621, double %623
  %625 = add nuw nsw i64 %storemerge8861226, %434
  %invariant.gep1209 = getelementptr double, ptr %4, i64 %.pre-phi1763
  %.not893.not1212 = icmp slt i64 %625, %435
  br i1 %.not893.not1212, label %.lr.ph1216, label %._crit_edge1217

.lr.ph1216:                                       ; preds = %._crit_edge1204, %.lr.ph1216
  %.5779.in1214 = phi i64 [ %.5779, %.lr.ph1216 ], [ %625, %._crit_edge1204 ]
  %.241213 = phi i64 [ %627, %.lr.ph1216 ], [ %618, %._crit_edge1204 ]
  %626 = phi double [ %632, %.lr.ph1216 ], [ %624, %._crit_edge1204 ]
  %.5779 = add nuw nsw i64 %.5779.in1214, 1
  %627 = add nuw nsw i64 %.241213, 1
  %gep1210 = getelementptr double, ptr %invariant.gep1209, i64 %627
  %628 = load double, ptr %gep1210, align 8, !tbaa !9
  %629 = fcmp oge double %628, 0.000000e+00
  %630 = fneg double %628
  %631 = select i1 %629, double %628, double %630
  %632 = fadd double %626, %631
  %633 = getelementptr inbounds double, ptr %5, i64 %.5779
  %634 = load double, ptr %633, align 8, !tbaa !9
  %635 = fadd double %631, %634
  store double %635, ptr %633, align 8, !tbaa !9
  %.not893.not = icmp slt i64 %.5779, %435
  br i1 %.not893.not, label %.lr.ph1216, label %._crit_edge1217, !llvm.loop !40

._crit_edge1217:                                  ; preds = %.lr.ph1216, %._crit_edge1204
  %.lcssa12181222 = phi double [ %624, %._crit_edge1204 ], [ %632, %.lr.ph1216 ]
  %636 = getelementptr double, ptr %578, i64 %storemerge8861226
  %637 = load double, ptr %636, align 8, !tbaa !9
  %638 = fadd double %.lcssa12181222, %637
  store double %638, ptr %636, align 8, !tbaa !9
  %639 = add nuw nsw i64 %storemerge8861226, 1
  %exitcond1672.not = icmp eq i64 %639, %140
  br i1 %exitcond1672.not, label %640, label %579, !llvm.loop !41

640:                                              ; preds = %._crit_edge1217
  br i1 %.not887.not1225, label %.lr.ph1237, label %._crit_edge1743

._crit_edge1743:                                  ; preds = %._crit_edge1198, %640
  %storemerge886.lcssa12191773 = phi i64 [ %140, %640 ], [ 0, %._crit_edge1198 ]
  %.pre1764 = mul nsw i64 %storemerge886.lcssa12191773, %.0772
  br label %._crit_edge1238

.lr.ph1237:                                       ; preds = %640
  %641 = mul nsw i64 %140, %.0772
  %invariant.gep1240 = getelementptr double, ptr %4, i64 %641
  %xtraiter1956 = and i64 %140, 1
  %642 = and i64 %139, 9223372036854775806
  %643 = icmp eq i64 %642, 2
  br i1 %643, label %._crit_edge1238.loopexit.unr-lcssa, label %.lr.ph1237.new

.lr.ph1237.new:                                   ; preds = %.lr.ph1237
  %unroll_iter1960 = and i64 %140, 4611686018427387902
  br label %644

644:                                              ; preds = %644, %.lr.ph1237.new
  %.251235 = phi i64 [ 0, %.lr.ph1237.new ], [ %663, %644 ]
  %645 = phi double [ 0.000000e+00, %.lr.ph1237.new ], [ %662, %644 ]
  %niter1961 = phi i64 [ 0, %.lr.ph1237.new ], [ %niter1961.next.1, %644 ]
  %gep1241 = getelementptr double, ptr %invariant.gep1240, i64 %.251235
  %646 = load double, ptr %gep1241, align 8, !tbaa !9
  %647 = fcmp oge double %646, 0.000000e+00
  %648 = fneg double %646
  %649 = select i1 %647, double %646, double %648
  %650 = getelementptr inbounds double, ptr %5, i64 %.251235
  %651 = load double, ptr %650, align 8, !tbaa !9
  %652 = fadd double %651, %649
  store double %652, ptr %650, align 8, !tbaa !9
  %653 = fadd double %649, %645
  %654 = or disjoint i64 %.251235, 1
  %gep1241.1 = getelementptr double, ptr %invariant.gep1240, i64 %654
  %655 = load double, ptr %gep1241.1, align 8, !tbaa !9
  %656 = fcmp oge double %655, 0.000000e+00
  %657 = fneg double %655
  %658 = select i1 %656, double %655, double %657
  %659 = getelementptr inbounds double, ptr %5, i64 %654
  %660 = load double, ptr %659, align 8, !tbaa !9
  %661 = fadd double %660, %658
  store double %661, ptr %659, align 8, !tbaa !9
  %662 = fadd double %658, %653
  %663 = add nuw nsw i64 %.251235, 2
  %niter1961.next.1 = add i64 %niter1961, 2
  %niter1961.ncmp.1 = icmp eq i64 %niter1961.next.1, %unroll_iter1960
  br i1 %niter1961.ncmp.1, label %._crit_edge1238.loopexit.unr-lcssa, label %644, !llvm.loop !42

._crit_edge1238.loopexit.unr-lcssa:               ; preds = %644, %.lr.ph1237
  %.lcssa1896.ph = phi double [ poison, %.lr.ph1237 ], [ %662, %644 ]
  %.251235.unr = phi i64 [ 0, %.lr.ph1237 ], [ %663, %644 ]
  %.unr1957 = phi double [ 0.000000e+00, %.lr.ph1237 ], [ %662, %644 ]
  %lcmp.mod1958.not = icmp eq i64 %xtraiter1956, 0
  br i1 %lcmp.mod1958.not, label %._crit_edge1238, label %._crit_edge1238.loopexit.epilog-lcssa

._crit_edge1238.loopexit.epilog-lcssa:            ; preds = %._crit_edge1238.loopexit.unr-lcssa
  %gep1241.epil = getelementptr double, ptr %invariant.gep1240, i64 %.251235.unr
  %664 = load double, ptr %gep1241.epil, align 8, !tbaa !9
  %665 = fcmp oge double %664, 0.000000e+00
  %666 = fneg double %664
  %667 = select i1 %665, double %664, double %666
  %668 = getelementptr inbounds double, ptr %5, i64 %.251235.unr
  %669 = load double, ptr %668, align 8, !tbaa !9
  %670 = fadd double %669, %667
  store double %670, ptr %668, align 8, !tbaa !9
  %671 = fadd double %667, %.unr1957
  br label %._crit_edge1238

._crit_edge1238:                                  ; preds = %._crit_edge1238.loopexit.epilog-lcssa, %._crit_edge1238.loopexit.unr-lcssa, %._crit_edge1743
  %.pre-phi1765 = phi i64 [ %.pre1764, %._crit_edge1743 ], [ %641, %._crit_edge1238.loopexit.unr-lcssa ], [ %641, %._crit_edge1238.loopexit.epilog-lcssa ]
  %672 = phi double [ 0.000000e+00, %._crit_edge1743 ], [ %.lcssa1896.ph, %._crit_edge1238.loopexit.unr-lcssa ], [ %671, %._crit_edge1238.loopexit.epilog-lcssa ]
  %.25.lcssa = phi i64 [ 0, %._crit_edge1743 ], [ %140, %._crit_edge1238.loopexit.unr-lcssa ], [ %140, %._crit_edge1238.loopexit.epilog-lcssa ]
  %673 = getelementptr double, ptr %4, i64 %.25.lcssa
  %674 = getelementptr double, ptr %673, i64 %.pre-phi1765
  %675 = load double, ptr %674, align 8, !tbaa !9
  %676 = fcmp oge double %675, 0.000000e+00
  %677 = fneg double %675
  %678 = select i1 %676, double %675, double %677
  %679 = fadd double %672, %678
  %680 = getelementptr inbounds double, ptr %5, i64 %.25.lcssa
  store double %679, ptr %680, align 8, !tbaa !9
  br i1 %.not885.not1194, label %.lr.ph1259, label %._crit_edge1260

.lr.ph1259:                                       ; preds = %._crit_edge1238
  %.not8911244 = icmp slt i64 %139, -1
  %.off = add i64 %139, 1
  %681 = icmp ult i64 %.off, 3
  %unroll_iter1967 = and i64 %434, -2
  %682 = and i64 %140, 1
  %lcmp.mod1965.not.not = icmp eq i64 %682, 0
  br label %683

683:                                              ; preds = %.lr.ph1259, %._crit_edge1248
  %storemerge8891257 = phi i64 [ %434, %.lr.ph1259 ], [ %715, %._crit_edge1248 ]
  br i1 %.not8911244, label %._crit_edge1248, label %.lr.ph1247

.lr.ph1247:                                       ; preds = %683
  %684 = mul nsw i64 %storemerge8891257, %.0772
  %invariant.gep1249 = getelementptr double, ptr %4, i64 %684
  br i1 %681, label %._crit_edge1248.loopexit.unr-lcssa, label %.lr.ph1247.new

.lr.ph1247.new:                                   ; preds = %.lr.ph1247, %.lr.ph1247.new
  %.261245 = phi i64 [ %703, %.lr.ph1247.new ], [ 0, %.lr.ph1247 ]
  %685 = phi double [ %702, %.lr.ph1247.new ], [ 0.000000e+00, %.lr.ph1247 ]
  %niter1968 = phi i64 [ %niter1968.next.1, %.lr.ph1247.new ], [ 0, %.lr.ph1247 ]
  %gep1250 = getelementptr double, ptr %invariant.gep1249, i64 %.261245
  %686 = load double, ptr %gep1250, align 8, !tbaa !9
  %687 = fcmp oge double %686, 0.000000e+00
  %688 = fneg double %686
  %689 = select i1 %687, double %686, double %688
  %690 = getelementptr inbounds double, ptr %5, i64 %.261245
  %691 = load double, ptr %690, align 8, !tbaa !9
  %692 = fadd double %691, %689
  store double %692, ptr %690, align 8, !tbaa !9
  %693 = fadd double %689, %685
  %694 = or disjoint i64 %.261245, 1
  %gep1250.1 = getelementptr double, ptr %invariant.gep1249, i64 %694
  %695 = load double, ptr %gep1250.1, align 8, !tbaa !9
  %696 = fcmp oge double %695, 0.000000e+00
  %697 = fneg double %695
  %698 = select i1 %696, double %695, double %697
  %699 = getelementptr inbounds double, ptr %5, i64 %694
  %700 = load double, ptr %699, align 8, !tbaa !9
  %701 = fadd double %700, %698
  store double %701, ptr %699, align 8, !tbaa !9
  %702 = fadd double %698, %693
  %703 = add nuw nsw i64 %.261245, 2
  %niter1968.next.1 = add i64 %niter1968, 2
  %niter1968.ncmp.1 = icmp eq i64 %niter1968.next.1, %unroll_iter1967
  br i1 %niter1968.ncmp.1, label %._crit_edge1248.loopexit.unr-lcssa, label %.lr.ph1247.new, !llvm.loop !43

._crit_edge1248.loopexit.unr-lcssa:               ; preds = %.lr.ph1247.new, %.lr.ph1247
  %.lcssa1895.ph = phi double [ poison, %.lr.ph1247 ], [ %702, %.lr.ph1247.new ]
  %.261245.unr = phi i64 [ 0, %.lr.ph1247 ], [ %703, %.lr.ph1247.new ]
  %.unr1964 = phi double [ 0.000000e+00, %.lr.ph1247 ], [ %702, %.lr.ph1247.new ]
  br i1 %lcmp.mod1965.not.not, label %._crit_edge1248.loopexit.epilog-lcssa, label %._crit_edge1248

._crit_edge1248.loopexit.epilog-lcssa:            ; preds = %._crit_edge1248.loopexit.unr-lcssa
  %gep1250.epil = getelementptr double, ptr %invariant.gep1249, i64 %.261245.unr
  %704 = load double, ptr %gep1250.epil, align 8, !tbaa !9
  %705 = fcmp oge double %704, 0.000000e+00
  %706 = fneg double %704
  %707 = select i1 %705, double %704, double %706
  %708 = getelementptr inbounds double, ptr %5, i64 %.261245.unr
  %709 = load double, ptr %708, align 8, !tbaa !9
  %710 = fadd double %709, %707
  store double %710, ptr %708, align 8, !tbaa !9
  %711 = fadd double %707, %.unr1964
  br label %._crit_edge1248

._crit_edge1248:                                  ; preds = %._crit_edge1248.loopexit.epilog-lcssa, %._crit_edge1248.loopexit.unr-lcssa, %683
  %.lcssa12511253 = phi double [ 0.000000e+00, %683 ], [ %.lcssa1895.ph, %._crit_edge1248.loopexit.unr-lcssa ], [ %711, %._crit_edge1248.loopexit.epilog-lcssa ]
  %712 = getelementptr inbounds double, ptr %5, i64 %storemerge8891257
  %713 = load double, ptr %712, align 8, !tbaa !9
  %714 = fadd double %.lcssa12511253, %713
  store double %714, ptr %712, align 8, !tbaa !9
  %715 = add nsw i64 %storemerge8891257, 1
  %exitcond1675.not = icmp eq i64 %715, %139
  br i1 %exitcond1675.not, label %._crit_edge1260, label %683, !llvm.loop !44

._crit_edge1260:                                  ; preds = %._crit_edge1248, %._crit_edge1238
  %716 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull @c__1) #6
  %717 = getelementptr double, ptr %5, i64 %716
  %718 = getelementptr i8, ptr %717, i64 -8
  %719 = load double, ptr %718, align 8, !tbaa !9
  br label %.loopexit

720:                                              ; preds = %432
  %721 = add i64 %139, -1
  %.not865.not1351 = icmp sgt i64 %139, 0
  br i1 %.not817.not.not.not.not.not.not.not.not, label %904, label %722

722:                                              ; preds = %720
  br i1 %.not865.not1351, label %._crit_edge1267, label %._crit_edge1267.thread

._crit_edge1267:                                  ; preds = %722
  %723 = shl i64 %140, 3
  %scevgep1676 = getelementptr i8, ptr %5, i64 %723
  %724 = add nuw nsw i64 %140, 1
  %smax1677 = tail call i64 @llvm.smax.i64(i64 %139, i64 %724)
  %725 = sub nsw i64 %smax1677, %140
  %726 = shl i64 %725, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep1676, i8 0, i64 %726, i1 false), !tbaa !9
  %.not877.not1284.not = icmp eq i64 %139, 1
  br i1 %.not877.not1284.not, label %._crit_edge1267.thread, label %.lr.ph1287

.lr.ph1287:                                       ; preds = %._crit_edge1267
  %invariant.gep1268 = getelementptr double, ptr %5, i64 %140
  %xtraiter1970 = and i64 %140, 1
  %727 = and i64 %139, 9223372036854775806
  %728 = icmp eq i64 %727, 2
  %unroll_iter1974 = and i64 %140, 4611686018427387902
  %lcmp.mod1972.not = icmp eq i64 %xtraiter1970, 0
  br label %.lr.ph1274

.lr.ph1274:                                       ; preds = %._crit_edge1275, %.lr.ph1287
  %storemerge8761285 = phi i64 [ 0, %.lr.ph1287 ], [ %755, %._crit_edge1275 ]
  %729 = mul nsw i64 %storemerge8761285, %.0772
  %invariant.gep1276 = getelementptr double, ptr %4, i64 %729
  br i1 %728, label %._crit_edge1275.unr-lcssa, label %.lr.ph1274.new

.lr.ph1274.new:                                   ; preds = %.lr.ph1274, %.lr.ph1274.new
  %.281272 = phi i64 [ %746, %.lr.ph1274.new ], [ 0, %.lr.ph1274 ]
  %730 = phi double [ %745, %.lr.ph1274.new ], [ 0.000000e+00, %.lr.ph1274 ]
  %niter1975 = phi i64 [ %niter1975.next.1, %.lr.ph1274.new ], [ 0, %.lr.ph1274 ]
  %gep1277 = getelementptr double, ptr %invariant.gep1276, i64 %.281272
  %731 = load double, ptr %gep1277, align 8, !tbaa !9
  %732 = fcmp oge double %731, 0.000000e+00
  %733 = fneg double %731
  %734 = select i1 %732, double %731, double %733
  %gep1269 = getelementptr double, ptr %invariant.gep1268, i64 %.281272
  %735 = load double, ptr %gep1269, align 8, !tbaa !9
  %736 = fadd double %735, %734
  store double %736, ptr %gep1269, align 8, !tbaa !9
  %737 = fadd double %734, %730
  %738 = or disjoint i64 %.281272, 1
  %gep1277.1 = getelementptr double, ptr %invariant.gep1276, i64 %738
  %739 = load double, ptr %gep1277.1, align 8, !tbaa !9
  %740 = fcmp oge double %739, 0.000000e+00
  %741 = fneg double %739
  %742 = select i1 %740, double %739, double %741
  %gep1269.1 = getelementptr double, ptr %invariant.gep1268, i64 %738
  %743 = load double, ptr %gep1269.1, align 8, !tbaa !9
  %744 = fadd double %743, %742
  store double %744, ptr %gep1269.1, align 8, !tbaa !9
  %745 = fadd double %742, %737
  %746 = add nuw nsw i64 %.281272, 2
  %niter1975.next.1 = add i64 %niter1975, 2
  %niter1975.ncmp.1 = icmp eq i64 %niter1975.next.1, %unroll_iter1974
  br i1 %niter1975.ncmp.1, label %._crit_edge1275.unr-lcssa, label %.lr.ph1274.new, !llvm.loop !45

._crit_edge1275.unr-lcssa:                        ; preds = %.lr.ph1274.new, %.lr.ph1274
  %.lcssa1894.ph = phi double [ poison, %.lr.ph1274 ], [ %745, %.lr.ph1274.new ]
  %.281272.unr = phi i64 [ 0, %.lr.ph1274 ], [ %746, %.lr.ph1274.new ]
  %.unr1971 = phi double [ 0.000000e+00, %.lr.ph1274 ], [ %745, %.lr.ph1274.new ]
  br i1 %lcmp.mod1972.not, label %._crit_edge1275, label %._crit_edge1275.epilog-lcssa

._crit_edge1275.epilog-lcssa:                     ; preds = %._crit_edge1275.unr-lcssa
  %gep1277.epil = getelementptr double, ptr %invariant.gep1276, i64 %.281272.unr
  %747 = load double, ptr %gep1277.epil, align 8, !tbaa !9
  %748 = fcmp oge double %747, 0.000000e+00
  %749 = fneg double %747
  %750 = select i1 %748, double %747, double %749
  %gep1269.epil = getelementptr double, ptr %invariant.gep1268, i64 %.281272.unr
  %751 = load double, ptr %gep1269.epil, align 8, !tbaa !9
  %752 = fadd double %751, %750
  store double %752, ptr %gep1269.epil, align 8, !tbaa !9
  %753 = fadd double %750, %.unr1971
  br label %._crit_edge1275

._crit_edge1275:                                  ; preds = %._crit_edge1275.unr-lcssa, %._crit_edge1275.epilog-lcssa
  %.lcssa1894 = phi double [ %.lcssa1894.ph, %._crit_edge1275.unr-lcssa ], [ %753, %._crit_edge1275.epilog-lcssa ]
  %754 = getelementptr inbounds double, ptr %5, i64 %storemerge8761285
  store double %.lcssa1894, ptr %754, align 8, !tbaa !9
  %755 = add nuw nsw i64 %storemerge8761285, 1
  %exitcond1679.not = icmp eq i64 %755, %140
  br i1 %exitcond1679.not, label %._crit_edge1267.thread, label %.lr.ph1274, !llvm.loop !46

._crit_edge1267.thread:                           ; preds = %._crit_edge1275, %722, %._crit_edge1267
  %storemerge876.lcssa1279 = phi i64 [ 0, %._crit_edge1267 ], [ 0, %722 ], [ %140, %._crit_edge1275 ]
  %756 = mul nsw i64 %storemerge876.lcssa1279, %.0772
  %757 = getelementptr double, ptr %4, i64 %756
  %758 = load double, ptr %757, align 8, !tbaa !9
  %759 = fcmp oge double %758, 0.000000e+00
  %760 = fneg double %758
  %761 = select i1 %759, double %758, double %760
  %invariant.gep1294 = getelementptr double, ptr %5, i64 %140
  %.not878.not1297 = icmp sgt i64 %139, 3
  br i1 %.not878.not1297, label %.lr.ph1300.preheader, label %._crit_edge1301

.lr.ph1300.preheader:                             ; preds = %._crit_edge1267.thread
  %smax1680 = tail call i64 @llvm.smax.i64(i64 %140, i64 2)
  %762 = add nsw i64 %smax1680, -1
  %xtraiter1976 = and i64 %762, 1
  %763 = icmp slt i64 %139, 6
  br i1 %763, label %._crit_edge1301.loopexit.unr-lcssa, label %.lr.ph1300.preheader.new

.lr.ph1300.preheader.new:                         ; preds = %.lr.ph1300.preheader
  %unroll_iter1980 = and i64 %762, -2
  br label %.lr.ph1300

.lr.ph1300:                                       ; preds = %.lr.ph1300, %.lr.ph1300.preheader.new
  %.291298 = phi i64 [ 1, %.lr.ph1300.preheader.new ], [ %780, %.lr.ph1300 ]
  %764 = phi double [ %761, %.lr.ph1300.preheader.new ], [ %779, %.lr.ph1300 ]
  %niter1981 = phi i64 [ 0, %.lr.ph1300.preheader.new ], [ %niter1981.next.1, %.lr.ph1300 ]
  %gep1293 = getelementptr double, ptr %757, i64 %.291298
  %765 = load double, ptr %gep1293, align 8, !tbaa !9
  %766 = fcmp oge double %765, 0.000000e+00
  %767 = fneg double %765
  %768 = select i1 %766, double %765, double %767
  %gep1295 = getelementptr double, ptr %invariant.gep1294, i64 %.291298
  %769 = load double, ptr %gep1295, align 8, !tbaa !9
  %770 = fadd double %769, %768
  store double %770, ptr %gep1295, align 8, !tbaa !9
  %771 = fadd double %768, %764
  %772 = add nuw nsw i64 %.291298, 1
  %gep1293.1 = getelementptr double, ptr %757, i64 %772
  %773 = load double, ptr %gep1293.1, align 8, !tbaa !9
  %774 = fcmp oge double %773, 0.000000e+00
  %775 = fneg double %773
  %776 = select i1 %774, double %773, double %775
  %gep1295.1 = getelementptr double, ptr %invariant.gep1294, i64 %772
  %777 = load double, ptr %gep1295.1, align 8, !tbaa !9
  %778 = fadd double %777, %776
  store double %778, ptr %gep1295.1, align 8, !tbaa !9
  %779 = fadd double %776, %771
  %780 = add nuw nsw i64 %.291298, 2
  %niter1981.next.1 = add i64 %niter1981, 2
  %niter1981.ncmp.1 = icmp eq i64 %niter1981.next.1, %unroll_iter1980
  br i1 %niter1981.ncmp.1, label %._crit_edge1301.loopexit.unr-lcssa, label %.lr.ph1300, !llvm.loop !47

._crit_edge1301.loopexit.unr-lcssa:               ; preds = %.lr.ph1300, %.lr.ph1300.preheader
  %.lcssa1893.ph = phi double [ poison, %.lr.ph1300.preheader ], [ %779, %.lr.ph1300 ]
  %.291298.unr = phi i64 [ 1, %.lr.ph1300.preheader ], [ %780, %.lr.ph1300 ]
  %.unr1977 = phi double [ %761, %.lr.ph1300.preheader ], [ %779, %.lr.ph1300 ]
  %lcmp.mod1978.not = icmp eq i64 %xtraiter1976, 0
  br i1 %lcmp.mod1978.not, label %._crit_edge1301, label %.lr.ph1300.epil

.lr.ph1300.epil:                                  ; preds = %._crit_edge1301.loopexit.unr-lcssa
  %gep1293.epil = getelementptr double, ptr %757, i64 %.291298.unr
  %781 = load double, ptr %gep1293.epil, align 8, !tbaa !9
  %782 = fcmp oge double %781, 0.000000e+00
  %783 = fneg double %781
  %784 = select i1 %782, double %781, double %783
  %gep1295.epil = getelementptr double, ptr %invariant.gep1294, i64 %.291298.unr
  %785 = load double, ptr %gep1295.epil, align 8, !tbaa !9
  %786 = fadd double %785, %784
  store double %786, ptr %gep1295.epil, align 8, !tbaa !9
  %787 = fadd double %784, %.unr1977
  br label %._crit_edge1301

._crit_edge1301:                                  ; preds = %.lr.ph1300.epil, %._crit_edge1301.loopexit.unr-lcssa, %._crit_edge1267.thread
  %788 = phi double [ %761, %._crit_edge1267.thread ], [ %.lcssa1893.ph, %._crit_edge1301.loopexit.unr-lcssa ], [ %787, %.lr.ph1300.epil ]
  %789 = getelementptr inbounds double, ptr %5, i64 %storemerge876.lcssa1279
  %790 = load double, ptr %789, align 8, !tbaa !9
  %791 = fadd double %788, %790
  store double %791, ptr %789, align 8, !tbaa !9
  %storemerge8791329 = add nsw i64 %140, 1
  %.not880.not1330 = icmp slt i64 %140, %721
  br i1 %.not880.not1330, label %.lr.ph1334, label %._crit_edge1335

.lr.ph1334:                                       ; preds = %._crit_edge1301
  %792 = xor i64 %140, -1
  br label %793

793:                                              ; preds = %.lr.ph1334, %._crit_edge1321
  %indvar = phi i64 [ 0, %.lr.ph1334 ], [ %indvar.next, %._crit_edge1321 ]
  %storemerge879.in1339 = phi i64 [ %storemerge8791329, %.lr.ph1334 ], [ %storemerge879, %._crit_edge1321 ]
  %storemerge879.in1331 = phi i64 [ %140, %.lr.ph1334 ], [ %storemerge879.in1339, %._crit_edge1321 ]
  %794 = sub i64 %140, %storemerge879.in1331
  %.not8821304 = icmp sgt i64 %794, -1
  %.pre1758 = mul nsw i64 %storemerge879.in1339, %.0772
  br i1 %.not8821304, label %._crit_edge1308, label %.lr.ph1307

.lr.ph1307:                                       ; preds = %793
  %invariant.gep1310 = getelementptr double, ptr %4, i64 %.pre1758
  %795 = sub i64 %storemerge879.in1331, %140
  %xtraiter1983 = and i64 %indvar, 1
  %796 = icmp eq i64 %indvar, 1
  br i1 %796, label %._crit_edge1308.loopexit.unr-lcssa, label %.lr.ph1307.new

.lr.ph1307.new:                                   ; preds = %.lr.ph1307
  %unroll_iter1987 = and i64 %indvar, -2
  br label %797

797:                                              ; preds = %797, %.lr.ph1307.new
  %.301305 = phi i64 [ 0, %.lr.ph1307.new ], [ %816, %797 ]
  %798 = phi double [ 0.000000e+00, %.lr.ph1307.new ], [ %815, %797 ]
  %niter1988 = phi i64 [ 0, %.lr.ph1307.new ], [ %niter1988.next.1, %797 ]
  %gep1311 = getelementptr double, ptr %invariant.gep1310, i64 %.301305
  %799 = load double, ptr %gep1311, align 8, !tbaa !9
  %800 = fcmp oge double %799, 0.000000e+00
  %801 = fneg double %799
  %802 = select i1 %800, double %799, double %801
  %803 = getelementptr inbounds double, ptr %5, i64 %.301305
  %804 = load double, ptr %803, align 8, !tbaa !9
  %805 = fadd double %804, %802
  store double %805, ptr %803, align 8, !tbaa !9
  %806 = fadd double %802, %798
  %807 = or disjoint i64 %.301305, 1
  %gep1311.1 = getelementptr double, ptr %invariant.gep1310, i64 %807
  %808 = load double, ptr %gep1311.1, align 8, !tbaa !9
  %809 = fcmp oge double %808, 0.000000e+00
  %810 = fneg double %808
  %811 = select i1 %809, double %808, double %810
  %812 = getelementptr inbounds double, ptr %5, i64 %807
  %813 = load double, ptr %812, align 8, !tbaa !9
  %814 = fadd double %813, %811
  store double %814, ptr %812, align 8, !tbaa !9
  %815 = fadd double %811, %806
  %816 = add nuw i64 %.301305, 2
  %niter1988.next.1 = add i64 %niter1988, 2
  %niter1988.ncmp.1 = icmp eq i64 %niter1988.next.1, %unroll_iter1987
  br i1 %niter1988.ncmp.1, label %._crit_edge1308.loopexit.unr-lcssa, label %797, !llvm.loop !48

._crit_edge1308.loopexit.unr-lcssa:               ; preds = %797, %.lr.ph1307
  %.lcssa1885.ph = phi double [ poison, %.lr.ph1307 ], [ %815, %797 ]
  %.301305.unr = phi i64 [ 0, %.lr.ph1307 ], [ %816, %797 ]
  %.unr1984 = phi double [ 0.000000e+00, %.lr.ph1307 ], [ %815, %797 ]
  %lcmp.mod1985.not = icmp eq i64 %xtraiter1983, 0
  br i1 %lcmp.mod1985.not, label %._crit_edge1308, label %._crit_edge1308.loopexit.epilog-lcssa

._crit_edge1308.loopexit.epilog-lcssa:            ; preds = %._crit_edge1308.loopexit.unr-lcssa
  %gep1311.epil = getelementptr double, ptr %invariant.gep1310, i64 %.301305.unr
  %817 = load double, ptr %gep1311.epil, align 8, !tbaa !9
  %818 = fcmp oge double %817, 0.000000e+00
  %819 = fneg double %817
  %820 = select i1 %818, double %817, double %819
  %821 = getelementptr inbounds double, ptr %5, i64 %.301305.unr
  %822 = load double, ptr %821, align 8, !tbaa !9
  %823 = fadd double %822, %820
  store double %823, ptr %821, align 8, !tbaa !9
  %824 = fadd double %820, %.unr1984
  br label %._crit_edge1308

._crit_edge1308:                                  ; preds = %._crit_edge1308.loopexit.epilog-lcssa, %._crit_edge1308.loopexit.unr-lcssa, %793
  %.lcssa13221324 = phi double [ 0.000000e+00, %793 ], [ %.lcssa1885.ph, %._crit_edge1308.loopexit.unr-lcssa ], [ %824, %._crit_edge1308.loopexit.epilog-lcssa ]
  %.30.lcssa = phi i64 [ 0, %793 ], [ %795, %._crit_edge1308.loopexit.unr-lcssa ], [ %795, %._crit_edge1308.loopexit.epilog-lcssa ]
  %825 = getelementptr double, ptr %4, i64 %.30.lcssa
  %826 = getelementptr double, ptr %825, i64 %.pre1758
  %827 = load double, ptr %826, align 8, !tbaa !9
  %828 = fcmp oge double %827, 0.000000e+00
  %829 = fneg double %827
  %830 = select i1 %828, double %827, double %829
  %831 = fadd double %.lcssa13221324, %830
  %832 = getelementptr double, ptr %5, i64 %storemerge879.in1339
  %833 = getelementptr double, ptr %832, i64 %792
  %834 = load double, ptr %833, align 8, !tbaa !9
  %835 = fadd double %834, %831
  store double %835, ptr %833, align 8, !tbaa !9
  %836 = add nuw nsw i64 %.30.lcssa, 1
  %837 = getelementptr double, ptr %4, i64 %836
  %838 = getelementptr double, ptr %837, i64 %.pre1758
  %839 = load double, ptr %838, align 8, !tbaa !9
  %840 = fcmp oge double %839, 0.000000e+00
  %841 = fneg double %839
  %842 = select i1 %840, double %839, double %841
  %invariant.gep1313 = getelementptr double, ptr %4, i64 %.pre1758
  %.not883.not1316 = icmp slt i64 %storemerge879.in1339, %721
  br i1 %.not883.not1316, label %.lr.ph1320, label %._crit_edge1321.thread

._crit_edge1321.thread:                           ; preds = %._crit_edge1308
  %843 = load double, ptr %832, align 8, !tbaa !9
  %844 = fadd double %842, %843
  store double %844, ptr %832, align 8, !tbaa !9
  %storemerge8791776 = add nsw i64 %storemerge879.in1339, 1
  br label %._crit_edge1335

.lr.ph1320:                                       ; preds = %._crit_edge1308, %.lr.ph1320
  %.6780.in1318 = phi i64 [ %.6780, %.lr.ph1320 ], [ %storemerge879.in1339, %._crit_edge1308 ]
  %.311317 = phi i64 [ %846, %.lr.ph1320 ], [ %836, %._crit_edge1308 ]
  %845 = phi double [ %854, %.lr.ph1320 ], [ %842, %._crit_edge1308 ]
  %.6780 = add nsw i64 %.6780.in1318, 1
  %846 = add nuw nsw i64 %.311317, 1
  %gep1314 = getelementptr double, ptr %invariant.gep1313, i64 %846
  %847 = load double, ptr %gep1314, align 8, !tbaa !9
  %848 = fcmp oge double %847, 0.000000e+00
  %849 = fneg double %847
  %850 = select i1 %848, double %847, double %849
  %851 = getelementptr inbounds double, ptr %5, i64 %.6780
  %852 = load double, ptr %851, align 8, !tbaa !9
  %853 = fadd double %852, %850
  store double %853, ptr %851, align 8, !tbaa !9
  %854 = fadd double %850, %845
  %exitcond1683.not = icmp eq i64 %.6780, %721
  br i1 %exitcond1683.not, label %._crit_edge1321, label %.lr.ph1320, !llvm.loop !49

._crit_edge1321:                                  ; preds = %.lr.ph1320
  %855 = load double, ptr %832, align 8, !tbaa !9
  %856 = fadd double %854, %855
  store double %856, ptr %832, align 8, !tbaa !9
  %storemerge879 = add nsw i64 %storemerge879.in1339, 1
  %indvar.next = add i64 %indvar, 1
  br i1 %.not883.not1316, label %793, label %._crit_edge1335, !llvm.loop !50

._crit_edge1335:                                  ; preds = %._crit_edge1321, %._crit_edge1321.thread, %._crit_edge1301
  %storemerge879.lcssa = phi i64 [ %storemerge8791329, %._crit_edge1301 ], [ %storemerge8791776, %._crit_edge1321.thread ], [ %storemerge879, %._crit_edge1321 ]
  %.not8811342 = icmp slt i64 %139, 4
  %.pre1760 = mul nsw i64 %storemerge879.lcssa, %.0772
  br i1 %.not8811342, label %._crit_edge1744, label %.lr.ph1345

.lr.ph1345:                                       ; preds = %._crit_edge1335
  %invariant.gep1348 = getelementptr double, ptr %4, i64 %.pre1760
  %857 = tail call i64 @llvm.smax.i64(i64 %140, i64 2)
  %858 = add nsw i64 %857, -1
  %859 = add nsw i64 %857, -1
  %xtraiter1990 = and i64 %859, 1
  %860 = icmp slt i64 %139, 6
  br i1 %860, label %._crit_edge1744.loopexit.unr-lcssa, label %.lr.ph1345.new

.lr.ph1345.new:                                   ; preds = %.lr.ph1345
  %unroll_iter1994 = and i64 %859, -2
  br label %861

861:                                              ; preds = %861, %.lr.ph1345.new
  %.321343 = phi i64 [ 0, %.lr.ph1345.new ], [ %880, %861 ]
  %862 = phi double [ 0.000000e+00, %.lr.ph1345.new ], [ %879, %861 ]
  %niter1995 = phi i64 [ 0, %.lr.ph1345.new ], [ %niter1995.next.1, %861 ]
  %gep1349 = getelementptr double, ptr %invariant.gep1348, i64 %.321343
  %863 = load double, ptr %gep1349, align 8, !tbaa !9
  %864 = fcmp oge double %863, 0.000000e+00
  %865 = fneg double %863
  %866 = select i1 %864, double %863, double %865
  %867 = getelementptr inbounds double, ptr %5, i64 %.321343
  %868 = load double, ptr %867, align 8, !tbaa !9
  %869 = fadd double %868, %866
  store double %869, ptr %867, align 8, !tbaa !9
  %870 = fadd double %866, %862
  %871 = or disjoint i64 %.321343, 1
  %gep1349.1 = getelementptr double, ptr %invariant.gep1348, i64 %871
  %872 = load double, ptr %gep1349.1, align 8, !tbaa !9
  %873 = fcmp oge double %872, 0.000000e+00
  %874 = fneg double %872
  %875 = select i1 %873, double %872, double %874
  %876 = getelementptr inbounds double, ptr %5, i64 %871
  %877 = load double, ptr %876, align 8, !tbaa !9
  %878 = fadd double %877, %875
  store double %878, ptr %876, align 8, !tbaa !9
  %879 = fadd double %875, %870
  %880 = add nuw nsw i64 %.321343, 2
  %niter1995.next.1 = add i64 %niter1995, 2
  %niter1995.ncmp.1 = icmp eq i64 %niter1995.next.1, %unroll_iter1994
  br i1 %niter1995.ncmp.1, label %._crit_edge1744.loopexit.unr-lcssa, label %861, !llvm.loop !51

._crit_edge1744.loopexit.unr-lcssa:               ; preds = %861, %.lr.ph1345
  %.lcssa1884.ph = phi double [ poison, %.lr.ph1345 ], [ %879, %861 ]
  %.321343.unr = phi i64 [ 0, %.lr.ph1345 ], [ %880, %861 ]
  %.unr1991 = phi double [ 0.000000e+00, %.lr.ph1345 ], [ %879, %861 ]
  %lcmp.mod1992.not = icmp eq i64 %xtraiter1990, 0
  br i1 %lcmp.mod1992.not, label %._crit_edge1744, label %._crit_edge1744.loopexit.epilog-lcssa

._crit_edge1744.loopexit.epilog-lcssa:            ; preds = %._crit_edge1744.loopexit.unr-lcssa
  %gep1349.epil = getelementptr double, ptr %invariant.gep1348, i64 %.321343.unr
  %881 = load double, ptr %gep1349.epil, align 8, !tbaa !9
  %882 = fcmp oge double %881, 0.000000e+00
  %883 = fneg double %881
  %884 = select i1 %882, double %881, double %883
  %885 = getelementptr inbounds double, ptr %5, i64 %.321343.unr
  %886 = load double, ptr %885, align 8, !tbaa !9
  %887 = fadd double %886, %884
  store double %887, ptr %885, align 8, !tbaa !9
  %888 = fadd double %884, %.unr1991
  br label %._crit_edge1744

._crit_edge1744:                                  ; preds = %._crit_edge1744.loopexit.epilog-lcssa, %._crit_edge1744.loopexit.unr-lcssa, %._crit_edge1335
  %889 = phi double [ 0.000000e+00, %._crit_edge1335 ], [ %.lcssa1884.ph, %._crit_edge1744.loopexit.unr-lcssa ], [ %888, %._crit_edge1744.loopexit.epilog-lcssa ]
  %.32.lcssa = phi i64 [ 0, %._crit_edge1335 ], [ %858, %._crit_edge1744.loopexit.unr-lcssa ], [ %858, %._crit_edge1744.loopexit.epilog-lcssa ]
  %890 = getelementptr double, ptr %4, i64 %.32.lcssa
  %891 = getelementptr double, ptr %890, i64 %.pre1760
  %892 = load double, ptr %891, align 8, !tbaa !9
  %893 = fcmp oge double %892, 0.000000e+00
  %894 = fneg double %892
  %895 = select i1 %893, double %892, double %894
  %896 = fadd double %889, %895
  %897 = getelementptr inbounds double, ptr %5, i64 %.32.lcssa
  %898 = load double, ptr %897, align 8, !tbaa !9
  %899 = fadd double %898, %896
  store double %899, ptr %897, align 8, !tbaa !9
  %900 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull @c__1) #6
  %901 = getelementptr double, ptr %5, i64 %900
  %902 = getelementptr i8, ptr %901, i64 -8
  %903 = load double, ptr %902, align 8, !tbaa !9
  br label %.loopexit

904:                                              ; preds = %720
  br i1 %.not865.not1351, label %.lr.ph1354.preheader, label %._crit_edge1355

.lr.ph1354.preheader:                             ; preds = %904
  %905 = shl i64 %140, 3
  %scevgep1686 = getelementptr i8, ptr %5, i64 %905
  %906 = add nuw nsw i64 %140, 1
  %smax1687 = tail call i64 @llvm.smax.i64(i64 %139, i64 %906)
  %907 = sub nsw i64 %smax1687, %140
  %908 = shl i64 %907, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep1686, i8 0, i64 %908, i1 false), !tbaa !9
  br label %._crit_edge1355

._crit_edge1355:                                  ; preds = %.lr.ph1354.preheader, %904
  %909 = load double, ptr %4, align 8, !tbaa !9
  %910 = fcmp ult double %909, 0.000000e+00
  %911 = fneg double %909
  %912 = select i1 %910, double %911, double %909
  %invariant.gep1356 = getelementptr double, ptr %5, i64 %140
  %.not866.not1359 = icmp sgt i64 %139, 3
  br i1 %.not866.not1359, label %.lr.ph1362.preheader, label %.thread1779

.thread1779:                                      ; preds = %._crit_edge1355
  %913 = load double, ptr %invariant.gep1356, align 8, !tbaa !9
  %914 = fadd double %912, %913
  store double %914, ptr %invariant.gep1356, align 8, !tbaa !9
  br label %._crit_edge1406

.lr.ph1362.preheader:                             ; preds = %._crit_edge1355
  %smax1688 = tail call i64 @llvm.smax.i64(i64 %140, i64 2)
  %915 = add nsw i64 %smax1688, -1
  %916 = add nsw i64 %smax1688, -2
  %xtraiter1996 = and i64 %915, 1
  %917 = icmp eq i64 %916, 0
  br i1 %917, label %.unr-lcssa, label %.lr.ph1362.preheader.new

.lr.ph1362.preheader.new:                         ; preds = %.lr.ph1362.preheader
  %unroll_iter2000 = and i64 %915, -2
  br label %.lr.ph1362

.lr.ph1362:                                       ; preds = %.lr.ph1362, %.lr.ph1362.preheader.new
  %.341360 = phi i64 [ 1, %.lr.ph1362.preheader.new ], [ %936, %.lr.ph1362 ]
  %918 = phi double [ %912, %.lr.ph1362.preheader.new ], [ %935, %.lr.ph1362 ]
  %niter2001 = phi i64 [ 0, %.lr.ph1362.preheader.new ], [ %niter2001.next.1, %.lr.ph1362 ]
  %919 = getelementptr inbounds double, ptr %4, i64 %.341360
  %920 = load double, ptr %919, align 8, !tbaa !9
  %921 = fcmp oge double %920, 0.000000e+00
  %922 = fneg double %920
  %923 = select i1 %921, double %920, double %922
  %gep1357 = getelementptr double, ptr %invariant.gep1356, i64 %.341360
  %924 = load double, ptr %gep1357, align 8, !tbaa !9
  %925 = fadd double %924, %923
  store double %925, ptr %gep1357, align 8, !tbaa !9
  %926 = fadd double %923, %918
  %927 = add nuw nsw i64 %.341360, 1
  %928 = getelementptr inbounds double, ptr %4, i64 %927
  %929 = load double, ptr %928, align 8, !tbaa !9
  %930 = fcmp oge double %929, 0.000000e+00
  %931 = fneg double %929
  %932 = select i1 %930, double %929, double %931
  %gep1357.1 = getelementptr double, ptr %invariant.gep1356, i64 %927
  %933 = load double, ptr %gep1357.1, align 8, !tbaa !9
  %934 = fadd double %933, %932
  store double %934, ptr %gep1357.1, align 8, !tbaa !9
  %935 = fadd double %932, %926
  %936 = add nuw nsw i64 %.341360, 2
  %niter2001.next.1 = add i64 %niter2001, 2
  %niter2001.ncmp.1 = icmp eq i64 %niter2001.next.1, %unroll_iter2000
  br i1 %niter2001.ncmp.1, label %.unr-lcssa, label %.lr.ph1362, !llvm.loop !52

.unr-lcssa:                                       ; preds = %.lr.ph1362, %.lr.ph1362.preheader
  %.lcssa1883.ph = phi double [ poison, %.lr.ph1362.preheader ], [ %935, %.lr.ph1362 ]
  %.341360.unr = phi i64 [ 1, %.lr.ph1362.preheader ], [ %936, %.lr.ph1362 ]
  %.unr1997 = phi double [ %912, %.lr.ph1362.preheader ], [ %935, %.lr.ph1362 ]
  %lcmp.mod1998.not = icmp eq i64 %xtraiter1996, 0
  br i1 %lcmp.mod1998.not, label %945, label %.lr.ph1362.epil

.lr.ph1362.epil:                                  ; preds = %.unr-lcssa
  %937 = getelementptr inbounds double, ptr %4, i64 %.341360.unr
  %938 = load double, ptr %937, align 8, !tbaa !9
  %939 = fcmp oge double %938, 0.000000e+00
  %940 = fneg double %938
  %941 = select i1 %939, double %938, double %940
  %gep1357.epil = getelementptr double, ptr %invariant.gep1356, i64 %.341360.unr
  %942 = load double, ptr %gep1357.epil, align 8, !tbaa !9
  %943 = fadd double %942, %941
  store double %943, ptr %gep1357.epil, align 8, !tbaa !9
  %944 = fadd double %941, %.unr1997
  br label %945

945:                                              ; preds = %.unr-lcssa, %.lr.ph1362.epil
  %.lcssa1883 = phi double [ %.lcssa1883.ph, %.unr-lcssa ], [ %944, %.lr.ph1362.epil ]
  store double %.lcssa1883, ptr %11, align 8, !tbaa !9
  %946 = load double, ptr %invariant.gep1356, align 8, !tbaa !9
  %947 = fadd double %.lcssa1883, %946
  store double %947, ptr %invariant.gep1356, align 8, !tbaa !9
  %invariant.gep1385 = getelementptr i8, ptr %5, i64 -8
  br i1 %.not866.not1359, label %.lr.ph1396.preheader, label %._crit_edge1406

.lr.ph1396.preheader:                             ; preds = %945
  %smax1693 = tail call i64 @llvm.smax.i64(i64 %140, i64 2)
  %948 = add nsw i64 %smax1693, -2
  br label %.lr.ph1396

.lr.ph1396:                                       ; preds = %.lr.ph1396.preheader, %._crit_edge1383
  %indvars.iv1690 = phi i64 [ 0, %.lr.ph1396.preheader ], [ %indvars.iv.next1691, %._crit_edge1383 ]
  %storemerge8671394 = phi i64 [ 1, %.lr.ph1396.preheader ], [ %1006, %._crit_edge1383 ]
  %.not8731366 = icmp ult i64 %storemerge8671394, 2
  %.pre1754 = mul nsw i64 %storemerge8671394, %.0772
  br i1 %.not8731366, label %._crit_edge1370, label %.lr.ph1369

.lr.ph1369:                                       ; preds = %.lr.ph1396
  %invariant.gep1372 = getelementptr double, ptr %4, i64 %.pre1754
  %xtraiter2003 = and i64 %indvars.iv1690, 1
  %949 = icmp eq i64 %indvars.iv1690, 1
  br i1 %949, label %._crit_edge1370.loopexit.unr-lcssa, label %.lr.ph1369.new

.lr.ph1369.new:                                   ; preds = %.lr.ph1369
  %unroll_iter2007 = and i64 %indvars.iv1690, 9223372036854775806
  br label %950

950:                                              ; preds = %950, %.lr.ph1369.new
  %.351367 = phi i64 [ 0, %.lr.ph1369.new ], [ %969, %950 ]
  %951 = phi double [ 0.000000e+00, %.lr.ph1369.new ], [ %968, %950 ]
  %niter2008 = phi i64 [ 0, %.lr.ph1369.new ], [ %niter2008.next.1, %950 ]
  %gep1373 = getelementptr double, ptr %invariant.gep1372, i64 %.351367
  %952 = load double, ptr %gep1373, align 8, !tbaa !9
  %953 = fcmp oge double %952, 0.000000e+00
  %954 = fneg double %952
  %955 = select i1 %953, double %952, double %954
  %956 = getelementptr inbounds double, ptr %5, i64 %.351367
  %957 = load double, ptr %956, align 8, !tbaa !9
  %958 = fadd double %957, %955
  store double %958, ptr %956, align 8, !tbaa !9
  %959 = fadd double %955, %951
  %960 = or disjoint i64 %.351367, 1
  %gep1373.1 = getelementptr double, ptr %invariant.gep1372, i64 %960
  %961 = load double, ptr %gep1373.1, align 8, !tbaa !9
  %962 = fcmp oge double %961, 0.000000e+00
  %963 = fneg double %961
  %964 = select i1 %962, double %961, double %963
  %965 = getelementptr inbounds double, ptr %5, i64 %960
  %966 = load double, ptr %965, align 8, !tbaa !9
  %967 = fadd double %966, %964
  store double %967, ptr %965, align 8, !tbaa !9
  %968 = fadd double %964, %959
  %969 = add nuw nsw i64 %.351367, 2
  %niter2008.next.1 = add i64 %niter2008, 2
  %niter2008.ncmp.1 = icmp eq i64 %niter2008.next.1, %unroll_iter2007
  br i1 %niter2008.ncmp.1, label %._crit_edge1370.loopexit.unr-lcssa, label %950, !llvm.loop !53

._crit_edge1370.loopexit.unr-lcssa:               ; preds = %950, %.lr.ph1369
  %.lcssa1880.ph = phi double [ poison, %.lr.ph1369 ], [ %968, %950 ]
  %.351367.unr = phi i64 [ 0, %.lr.ph1369 ], [ %969, %950 ]
  %.unr2004 = phi double [ 0.000000e+00, %.lr.ph1369 ], [ %968, %950 ]
  %lcmp.mod2005.not = icmp eq i64 %xtraiter2003, 0
  br i1 %lcmp.mod2005.not, label %._crit_edge1370, label %._crit_edge1370.loopexit.epilog-lcssa

._crit_edge1370.loopexit.epilog-lcssa:            ; preds = %._crit_edge1370.loopexit.unr-lcssa
  %gep1373.epil = getelementptr double, ptr %invariant.gep1372, i64 %.351367.unr
  %970 = load double, ptr %gep1373.epil, align 8, !tbaa !9
  %971 = fcmp oge double %970, 0.000000e+00
  %972 = fneg double %970
  %973 = select i1 %971, double %970, double %972
  %974 = getelementptr inbounds double, ptr %5, i64 %.351367.unr
  %975 = load double, ptr %974, align 8, !tbaa !9
  %976 = fadd double %975, %973
  store double %976, ptr %974, align 8, !tbaa !9
  %977 = fadd double %973, %.unr2004
  br label %._crit_edge1370

._crit_edge1370:                                  ; preds = %._crit_edge1370.loopexit.epilog-lcssa, %._crit_edge1370.loopexit.unr-lcssa, %.lr.ph1396
  %.lcssa13841389 = phi double [ 0.000000e+00, %.lr.ph1396 ], [ %.lcssa1880.ph, %._crit_edge1370.loopexit.unr-lcssa ], [ %977, %._crit_edge1370.loopexit.epilog-lcssa ]
  %.35.lcssa = phi i64 [ 0, %.lr.ph1396 ], [ %indvars.iv1690, %._crit_edge1370.loopexit.unr-lcssa ], [ %indvars.iv1690, %._crit_edge1370.loopexit.epilog-lcssa ]
  %978 = getelementptr double, ptr %4, i64 %.35.lcssa
  %979 = getelementptr double, ptr %978, i64 %.pre1754
  %980 = load double, ptr %979, align 8, !tbaa !9
  %981 = fcmp oge double %980, 0.000000e+00
  %982 = fneg double %980
  %983 = select i1 %981, double %980, double %982
  %984 = fadd double %.lcssa13841389, %983
  %gep1386 = getelementptr double, ptr %invariant.gep1385, i64 %storemerge8671394
  store double %984, ptr %gep1386, align 8, !tbaa !9
  %985 = add nuw nsw i64 %.35.lcssa, 1
  %986 = getelementptr double, ptr %4, i64 %985
  %987 = getelementptr double, ptr %986, i64 %.pre1754
  %988 = load double, ptr %987, align 8, !tbaa !9
  %989 = fcmp oge double %988, 0.000000e+00
  %990 = fneg double %988
  %991 = select i1 %989, double %988, double %990
  %992 = add nuw nsw i64 %storemerge8671394, %140
  %invariant.gep1375 = getelementptr double, ptr %4, i64 %.pre1754
  %.not874.not1378 = icmp slt i64 %992, %721
  br i1 %.not874.not1378, label %.lr.ph1382, label %._crit_edge1383

.lr.ph1382:                                       ; preds = %._crit_edge1370, %.lr.ph1382
  %.7781.in1380 = phi i64 [ %.7781, %.lr.ph1382 ], [ %992, %._crit_edge1370 ]
  %.361379 = phi i64 [ %994, %.lr.ph1382 ], [ %985, %._crit_edge1370 ]
  %993 = phi double [ %999, %.lr.ph1382 ], [ %991, %._crit_edge1370 ]
  %.7781 = add nuw nsw i64 %.7781.in1380, 1
  %994 = add nuw nsw i64 %.361379, 1
  %gep1376 = getelementptr double, ptr %invariant.gep1375, i64 %994
  %995 = load double, ptr %gep1376, align 8, !tbaa !9
  %996 = fcmp oge double %995, 0.000000e+00
  %997 = fneg double %995
  %998 = select i1 %996, double %995, double %997
  %999 = fadd double %993, %998
  %1000 = getelementptr inbounds double, ptr %5, i64 %.7781
  %1001 = load double, ptr %1000, align 8, !tbaa !9
  %1002 = fadd double %998, %1001
  store double %1002, ptr %1000, align 8, !tbaa !9
  %.not874.not = icmp slt i64 %.7781, %721
  br i1 %.not874.not, label %.lr.ph1382, label %._crit_edge1383, !llvm.loop !54

._crit_edge1383:                                  ; preds = %.lr.ph1382, %._crit_edge1370
  %.lcssa13841390 = phi double [ %991, %._crit_edge1370 ], [ %999, %.lr.ph1382 ]
  %1003 = getelementptr double, ptr %invariant.gep1356, i64 %storemerge8671394
  %1004 = load double, ptr %1003, align 8, !tbaa !9
  %1005 = fadd double %.lcssa13841390, %1004
  store double %1005, ptr %1003, align 8, !tbaa !9
  %1006 = add nuw nsw i64 %storemerge8671394, 1
  %indvars.iv.next1691 = add nuw nsw i64 %indvars.iv1690, 1
  %exitcond1694.not = icmp eq i64 %indvars.iv1690, %948
  br i1 %exitcond1694.not, label %.lr.ph1405, label %.lr.ph1396, !llvm.loop !55

.lr.ph1405:                                       ; preds = %._crit_edge1383
  %1007 = mul nsw i64 %1006, %.0772
  %invariant.gep1408 = getelementptr double, ptr %4, i64 %1007
  %1008 = tail call i64 @llvm.smax.i64(i64 %140, i64 2)
  %1009 = add nsw i64 %1008, -1
  %xtraiter2010 = and i64 %915, 1
  %1010 = icmp eq i64 %916, 0
  br i1 %1010, label %._crit_edge1406.loopexit.unr-lcssa, label %.lr.ph1405.new

.lr.ph1405.new:                                   ; preds = %.lr.ph1405
  %unroll_iter2014 = and i64 %915, -2
  br label %1011

1011:                                             ; preds = %1011, %.lr.ph1405.new
  %.371403 = phi i64 [ 0, %.lr.ph1405.new ], [ %1030, %1011 ]
  %1012 = phi double [ 0.000000e+00, %.lr.ph1405.new ], [ %1029, %1011 ]
  %niter2015 = phi i64 [ 0, %.lr.ph1405.new ], [ %niter2015.next.1, %1011 ]
  %gep1409 = getelementptr double, ptr %invariant.gep1408, i64 %.371403
  %1013 = load double, ptr %gep1409, align 8, !tbaa !9
  %1014 = fcmp oge double %1013, 0.000000e+00
  %1015 = fneg double %1013
  %1016 = select i1 %1014, double %1013, double %1015
  %1017 = getelementptr inbounds double, ptr %5, i64 %.371403
  %1018 = load double, ptr %1017, align 8, !tbaa !9
  %1019 = fadd double %1018, %1016
  store double %1019, ptr %1017, align 8, !tbaa !9
  %1020 = fadd double %1016, %1012
  %1021 = or disjoint i64 %.371403, 1
  %gep1409.1 = getelementptr double, ptr %invariant.gep1408, i64 %1021
  %1022 = load double, ptr %gep1409.1, align 8, !tbaa !9
  %1023 = fcmp oge double %1022, 0.000000e+00
  %1024 = fneg double %1022
  %1025 = select i1 %1023, double %1022, double %1024
  %1026 = getelementptr inbounds double, ptr %5, i64 %1021
  %1027 = load double, ptr %1026, align 8, !tbaa !9
  %1028 = fadd double %1027, %1025
  store double %1028, ptr %1026, align 8, !tbaa !9
  %1029 = fadd double %1025, %1020
  %1030 = add nuw nsw i64 %.371403, 2
  %niter2015.next.1 = add i64 %niter2015, 2
  %niter2015.ncmp.1 = icmp eq i64 %niter2015.next.1, %unroll_iter2014
  br i1 %niter2015.ncmp.1, label %._crit_edge1406.loopexit.unr-lcssa, label %1011, !llvm.loop !56

._crit_edge1406.loopexit.unr-lcssa:               ; preds = %1011, %.lr.ph1405
  %.lcssa1879.ph = phi double [ poison, %.lr.ph1405 ], [ %1029, %1011 ]
  %.371403.unr = phi i64 [ 0, %.lr.ph1405 ], [ %1030, %1011 ]
  %.unr2011 = phi double [ 0.000000e+00, %.lr.ph1405 ], [ %1029, %1011 ]
  %lcmp.mod2012.not = icmp eq i64 %xtraiter2010, 0
  br i1 %lcmp.mod2012.not, label %._crit_edge1406, label %._crit_edge1406.loopexit.epilog-lcssa

._crit_edge1406.loopexit.epilog-lcssa:            ; preds = %._crit_edge1406.loopexit.unr-lcssa
  %gep1409.epil = getelementptr double, ptr %invariant.gep1408, i64 %.371403.unr
  %1031 = load double, ptr %gep1409.epil, align 8, !tbaa !9
  %1032 = fcmp oge double %1031, 0.000000e+00
  %1033 = fneg double %1031
  %1034 = select i1 %1032, double %1031, double %1033
  %1035 = getelementptr inbounds double, ptr %5, i64 %.371403.unr
  %1036 = load double, ptr %1035, align 8, !tbaa !9
  %1037 = fadd double %1036, %1034
  store double %1037, ptr %1035, align 8, !tbaa !9
  %1038 = fadd double %1034, %.unr2011
  br label %._crit_edge1406

._crit_edge1406:                                  ; preds = %._crit_edge1406.loopexit.epilog-lcssa, %._crit_edge1406.loopexit.unr-lcssa, %.thread1779, %945
  %.pre-phi1757 = phi i64 [ %.0772, %.thread1779 ], [ %.0772, %945 ], [ %1007, %._crit_edge1406.loopexit.unr-lcssa ], [ %1007, %._crit_edge1406.loopexit.epilog-lcssa ]
  %1039 = phi double [ 0.000000e+00, %.thread1779 ], [ 0.000000e+00, %945 ], [ %.lcssa1879.ph, %._crit_edge1406.loopexit.unr-lcssa ], [ %1038, %._crit_edge1406.loopexit.epilog-lcssa ]
  %.37.lcssa = phi i64 [ 0, %.thread1779 ], [ 0, %945 ], [ %1009, %._crit_edge1406.loopexit.unr-lcssa ], [ %1009, %._crit_edge1406.loopexit.epilog-lcssa ]
  %1040 = getelementptr double, ptr %4, i64 %.37.lcssa
  %1041 = getelementptr double, ptr %1040, i64 %.pre-phi1757
  %1042 = load double, ptr %1041, align 8, !tbaa !9
  %1043 = fcmp oge double %1042, 0.000000e+00
  %1044 = fneg double %1042
  %1045 = select i1 %1043, double %1042, double %1044
  %1046 = fadd double %1039, %1045
  store double %1046, ptr %11, align 8, !tbaa !9
  %1047 = getelementptr inbounds double, ptr %5, i64 %.37.lcssa
  store double %1046, ptr %1047, align 8, !tbaa !9
  %.not871.not1428 = icmp sgt i64 %139, 0
  br i1 %.not871.not1428, label %.lr.ph1431, label %._crit_edge1432

.lr.ph1431:                                       ; preds = %._crit_edge1406
  %.not872.not1412.not = icmp eq i64 %139, 1
  %xtraiter2017 = and i64 %140, 1
  %1048 = and i64 %139, 9223372036854775806
  %1049 = icmp eq i64 %1048, 2
  %unroll_iter2021 = and i64 %140, 4611686018427387902
  %lcmp.mod2019.not = icmp eq i64 %xtraiter2017, 0
  br label %1050

1050:                                             ; preds = %.lr.ph1431, %._crit_edge1416
  %storemerge870.in1435.in = phi i64 [ %140, %.lr.ph1431 ], [ %storemerge870.in1435, %._crit_edge1416 ]
  %storemerge870.in1435 = add nuw nsw i64 %storemerge870.in1435.in, 1
  br i1 %.not872.not1412.not, label %._crit_edge1416, label %.lr.ph1415

.lr.ph1415:                                       ; preds = %1050
  %1051 = mul nsw i64 %storemerge870.in1435, %.0772
  %invariant.gep1417 = getelementptr double, ptr %4, i64 %1051
  br i1 %1049, label %._crit_edge1416.loopexit.unr-lcssa, label %.lr.ph1415.new

.lr.ph1415.new:                                   ; preds = %.lr.ph1415, %.lr.ph1415.new
  %.381413 = phi i64 [ %1070, %.lr.ph1415.new ], [ 0, %.lr.ph1415 ]
  %1052 = phi double [ %1069, %.lr.ph1415.new ], [ 0.000000e+00, %.lr.ph1415 ]
  %niter2022 = phi i64 [ %niter2022.next.1, %.lr.ph1415.new ], [ 0, %.lr.ph1415 ]
  %gep1418 = getelementptr double, ptr %invariant.gep1417, i64 %.381413
  %1053 = load double, ptr %gep1418, align 8, !tbaa !9
  %1054 = fcmp oge double %1053, 0.000000e+00
  %1055 = fneg double %1053
  %1056 = select i1 %1054, double %1053, double %1055
  %1057 = getelementptr inbounds double, ptr %5, i64 %.381413
  %1058 = load double, ptr %1057, align 8, !tbaa !9
  %1059 = fadd double %1058, %1056
  store double %1059, ptr %1057, align 8, !tbaa !9
  %1060 = fadd double %1056, %1052
  %1061 = or disjoint i64 %.381413, 1
  %gep1418.1 = getelementptr double, ptr %invariant.gep1417, i64 %1061
  %1062 = load double, ptr %gep1418.1, align 8, !tbaa !9
  %1063 = fcmp oge double %1062, 0.000000e+00
  %1064 = fneg double %1062
  %1065 = select i1 %1063, double %1062, double %1064
  %1066 = getelementptr inbounds double, ptr %5, i64 %1061
  %1067 = load double, ptr %1066, align 8, !tbaa !9
  %1068 = fadd double %1067, %1065
  store double %1068, ptr %1066, align 8, !tbaa !9
  %1069 = fadd double %1065, %1060
  %1070 = add nuw nsw i64 %.381413, 2
  %niter2022.next.1 = add i64 %niter2022, 2
  %niter2022.ncmp.1 = icmp eq i64 %niter2022.next.1, %unroll_iter2021
  br i1 %niter2022.ncmp.1, label %._crit_edge1416.loopexit.unr-lcssa, label %.lr.ph1415.new, !llvm.loop !57

._crit_edge1416.loopexit.unr-lcssa:               ; preds = %.lr.ph1415.new, %.lr.ph1415
  %.lcssa1878.ph = phi double [ poison, %.lr.ph1415 ], [ %1069, %.lr.ph1415.new ]
  %.381413.unr = phi i64 [ 0, %.lr.ph1415 ], [ %1070, %.lr.ph1415.new ]
  %.unr2018 = phi double [ 0.000000e+00, %.lr.ph1415 ], [ %1069, %.lr.ph1415.new ]
  br i1 %lcmp.mod2019.not, label %._crit_edge1416, label %._crit_edge1416.loopexit.epilog-lcssa

._crit_edge1416.loopexit.epilog-lcssa:            ; preds = %._crit_edge1416.loopexit.unr-lcssa
  %gep1418.epil = getelementptr double, ptr %invariant.gep1417, i64 %.381413.unr
  %1071 = load double, ptr %gep1418.epil, align 8, !tbaa !9
  %1072 = fcmp oge double %1071, 0.000000e+00
  %1073 = fneg double %1071
  %1074 = select i1 %1072, double %1071, double %1073
  %1075 = getelementptr inbounds double, ptr %5, i64 %.381413.unr
  %1076 = load double, ptr %1075, align 8, !tbaa !9
  %1077 = fadd double %1076, %1074
  store double %1077, ptr %1075, align 8, !tbaa !9
  %1078 = fadd double %1074, %.unr2018
  br label %._crit_edge1416

._crit_edge1416:                                  ; preds = %._crit_edge1416.loopexit.epilog-lcssa, %._crit_edge1416.loopexit.unr-lcssa, %1050
  %.lcssa14191423 = phi double [ 0.000000e+00, %1050 ], [ %.lcssa1878.ph, %._crit_edge1416.loopexit.unr-lcssa ], [ %1078, %._crit_edge1416.loopexit.epilog-lcssa ]
  %gep1421 = getelementptr double, ptr %5, i64 %storemerge870.in1435.in
  %1079 = load double, ptr %gep1421, align 8, !tbaa !9
  %1080 = fadd double %.lcssa14191423, %1079
  store double %1080, ptr %gep1421, align 8, !tbaa !9
  %.not871.not = icmp slt i64 %storemerge870.in1435, %139
  br i1 %.not871.not, label %1050, label %._crit_edge1432, !llvm.loop !58

._crit_edge1432:                                  ; preds = %._crit_edge1416, %._crit_edge1406
  %1081 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull @c__1) #6
  %1082 = getelementptr double, ptr %5, i64 %1081
  %1083 = getelementptr i8, ptr %1082, i64 -8
  %1084 = load double, ptr %1083, align 8, !tbaa !9
  br label %.loopexit

1085:                                             ; preds = %135
  %1086 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #6
  %.not822 = icmp eq i64 %1086, 0
  br i1 %.not822, label %1087, label %1089

1087:                                             ; preds = %1085
  %1088 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.6) #6
  %.not823 = icmp eq i64 %1088, 0
  br i1 %.not823, label %.loopexit, label %1089

1089:                                             ; preds = %1087, %1085
  %1090 = load i64, ptr %3, align 8, !tbaa !5
  %1091 = add nsw i64 %1090, 1
  %1092 = sdiv i64 %1091, 2
  store i64 %1092, ptr %10, align 8, !tbaa !5
  store double 0.000000e+00, ptr %12, align 8, !tbaa !9
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %.not824 = icmp eq i64 %16, 0
  br i1 %.not824, label %1234, label %1093

1093:                                             ; preds = %1089
  br i1 %.not, label %1094, label %1157

1094:                                             ; preds = %1093
  br i1 %.not817.not.not.not.not.not.not.not.not, label %1129, label %1095

1095:                                             ; preds = %1094
  %1096 = add nsw i64 %1092, -3
  store i64 %1096, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8611042 = icmp slt i64 %1090, 5
  br i1 %.not8611042, label %._crit_edge1046, label %.lr.ph1045

.lr.ph1045:                                       ; preds = %1095, %.lr.ph1045
  %storemerge8601043 = phi i64 [ %1106, %.lr.ph1045 ], [ 0, %1095 ]
  %1097 = load i64, ptr %10, align 8, !tbaa !5
  %reass.sub1595 = sub i64 %1097, %storemerge8601043
  %1098 = add i64 %reass.sub1595, -2
  store i64 %1098, ptr %8, align 8, !tbaa !5
  %1099 = mul nsw i64 %storemerge8601043, %.0772
  %1100 = getelementptr double, ptr %4, i64 %1097
  %1101 = getelementptr double, ptr %1100, i64 %storemerge8601043
  %1102 = getelementptr i8, ptr %1101, i64 8
  %1103 = getelementptr double, ptr %1102, i64 %1099
  %1104 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1103, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1105 = load i64, ptr %9, align 8, !tbaa !5
  %1106 = add nsw i64 %1105, 1
  store i64 %1106, ptr %9, align 8, !tbaa !5
  %1107 = load i64, ptr %7, align 8, !tbaa !5
  %.not861.not = icmp slt i64 %1105, %1107
  br i1 %.not861.not, label %.lr.ph1045, label %._crit_edge1046.loopexit, !llvm.loop !59

._crit_edge1046.loopexit:                         ; preds = %.lr.ph1045
  %.pre1718 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1046

._crit_edge1046:                                  ; preds = %._crit_edge1046.loopexit, %1095
  %1108 = phi i64 [ %.pre1718, %._crit_edge1046.loopexit ], [ %1092, %1095 ]
  %1109 = add nsw i64 %1108, -1
  store i64 %1109, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8631047 = icmp slt i64 %1108, 1
  br i1 %.not8631047, label %._crit_edge1051, label %.lr.ph1050

.lr.ph1050:                                       ; preds = %._crit_edge1046, %.lr.ph1050
  %storemerge8621048 = phi i64 [ %1117, %.lr.ph1050 ], [ 0, %._crit_edge1046 ]
  %1110 = load i64, ptr %10, align 8, !tbaa !5
  %1111 = add nsw i64 %storemerge8621048, -1
  %1112 = add i64 %1111, %1110
  store i64 %1112, ptr %8, align 8, !tbaa !5
  %1113 = mul nsw i64 %storemerge8621048, %.0772
  %1114 = getelementptr inbounds double, ptr %4, i64 %1113
  %1115 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1114, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1116 = load i64, ptr %9, align 8, !tbaa !5
  %1117 = add nsw i64 %1116, 1
  store i64 %1117, ptr %9, align 8, !tbaa !5
  %1118 = load i64, ptr %7, align 8, !tbaa !5
  %.not863.not = icmp slt i64 %1116, %1118
  br i1 %.not863.not, label %.lr.ph1050, label %._crit_edge1051.loopexit, !llvm.loop !60

._crit_edge1051.loopexit:                         ; preds = %.lr.ph1050
  %.pre1719 = load i64, ptr %10, align 8, !tbaa !5
  %.pre1737 = add nsw i64 %.pre1719, -1
  br label %._crit_edge1051

._crit_edge1051:                                  ; preds = %._crit_edge1051.loopexit, %._crit_edge1046
  %.pre-phi1738 = phi i64 [ %.pre1737, %._crit_edge1051.loopexit ], [ %1109, %._crit_edge1046 ]
  %1119 = phi i64 [ %.pre1719, %._crit_edge1051.loopexit ], [ %1108, %._crit_edge1046 ]
  %1120 = load double, ptr %11, align 8, !tbaa !9
  %1121 = fadd double %1120, %1120
  store double %1121, ptr %11, align 8, !tbaa !9
  store i64 %.pre-phi1738, ptr %7, align 8, !tbaa !5
  %1122 = add nsw i64 %.0772, 1
  store i64 %1122, ptr %8, align 8, !tbaa !5
  %1123 = getelementptr inbounds double, ptr %4, i64 %1119
  %1124 = call i32 @dlassq_(ptr noundef nonnull %7, ptr noundef %1123, ptr noundef nonnull %8, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  store i64 %1122, ptr %7, align 8, !tbaa !5
  %1125 = load i64, ptr %10, align 8, !tbaa !5
  %1126 = getelementptr double, ptr %4, i64 %1125
  %1127 = getelementptr i8, ptr %1126, i64 -8
  %1128 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1127, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  br label %1366

1129:                                             ; preds = %1094
  %1130 = add nsw i64 %1092, -1
  store i64 %1130, ptr %7, align 8, !tbaa !5
  %invariant.gep1052 = getelementptr i8, ptr %4, i64 8
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8571054 = icmp slt i64 %1090, 1
  br i1 %.not8571054, label %._crit_edge1058, label %.lr.ph1057

.lr.ph1057:                                       ; preds = %1129, %.lr.ph1057
  %storemerge8561055 = phi i64 [ %1138, %.lr.ph1057 ], [ 0, %1129 ]
  %1131 = load i64, ptr %3, align 8, !tbaa !5
  %1132 = xor i64 %storemerge8561055, -1
  %1133 = add i64 %1131, %1132
  store i64 %1133, ptr %8, align 8, !tbaa !5
  %1134 = mul nsw i64 %storemerge8561055, %.0772
  %gep1053 = getelementptr double, ptr %invariant.gep1052, i64 %storemerge8561055
  %1135 = getelementptr double, ptr %gep1053, i64 %1134
  %1136 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1135, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1137 = load i64, ptr %9, align 8, !tbaa !5
  %1138 = add nsw i64 %1137, 1
  store i64 %1138, ptr %9, align 8, !tbaa !5
  %1139 = load i64, ptr %7, align 8, !tbaa !5
  %.not857.not = icmp slt i64 %1137, %1139
  br i1 %.not857.not, label %.lr.ph1057, label %._crit_edge1058.loopexit, !llvm.loop !61

._crit_edge1058.loopexit:                         ; preds = %.lr.ph1057
  %.pre1720 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1058

._crit_edge1058:                                  ; preds = %._crit_edge1058.loopexit, %1129
  %1140 = phi i64 [ %.pre1720, %._crit_edge1058.loopexit ], [ %1092, %1129 ]
  %1141 = add nsw i64 %1140, -2
  store i64 %1141, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8591059 = icmp slt i64 %1140, 2
  br i1 %.not8591059, label %._crit_edge1063, label %.lr.ph1062

.lr.ph1062:                                       ; preds = %._crit_edge1058, %.lr.ph1062
  %storemerge8581060 = phi i64 [ %1147, %.lr.ph1062 ], [ 0, %._crit_edge1058 ]
  %1142 = add nsw i64 %storemerge8581060, 1
  %1143 = mul nsw i64 %1142, %.0772
  %1144 = getelementptr inbounds double, ptr %4, i64 %1143
  %1145 = call i32 @dlassq_(ptr noundef nonnull %9, ptr noundef %1144, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1146 = load i64, ptr %9, align 8, !tbaa !5
  %1147 = add nsw i64 %1146, 1
  store i64 %1147, ptr %9, align 8, !tbaa !5
  %1148 = load i64, ptr %7, align 8, !tbaa !5
  %.not859.not = icmp slt i64 %1146, %1148
  br i1 %.not859.not, label %.lr.ph1062, label %._crit_edge1063, !llvm.loop !62

._crit_edge1063:                                  ; preds = %.lr.ph1062, %._crit_edge1058
  %1149 = load double, ptr %11, align 8, !tbaa !9
  %1150 = fadd double %1149, %1149
  store double %1150, ptr %11, align 8, !tbaa !9
  %1151 = add nsw i64 %.0772, 1
  store i64 %1151, ptr %7, align 8, !tbaa !5
  %1152 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %4, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1153 = load i64, ptr %10, align 8, !tbaa !5
  %1154 = add nsw i64 %1153, -1
  store i64 %1154, ptr %7, align 8, !tbaa !5
  store i64 %1151, ptr %8, align 8, !tbaa !5
  %1155 = getelementptr inbounds double, ptr %4, i64 %.0772
  %1156 = call i32 @dlassq_(ptr noundef nonnull %7, ptr noundef %1155, ptr noundef nonnull %8, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  br label %1366

1157:                                             ; preds = %1093
  br i1 %.not817.not.not.not.not.not.not.not.not, label %1199, label %1158

1158:                                             ; preds = %1157
  %1159 = add nsw i64 %1092, -2
  store i64 %1159, ptr %7, align 8, !tbaa !5
  store i64 1, ptr %9, align 8, !tbaa !5
  %.not8511008 = icmp slt i64 %1090, 5
  br i1 %.not8511008, label %._crit_edge1012, label %.lr.ph1011

.lr.ph1011:                                       ; preds = %1158, %.lr.ph1011
  %storemerge8501009 = phi i64 [ %1166, %.lr.ph1011 ], [ 1, %1158 ]
  %1160 = load i64, ptr %10, align 8, !tbaa !5
  %1161 = add nsw i64 %1160, %storemerge8501009
  %1162 = mul nsw i64 %1161, %.0772
  %1163 = getelementptr inbounds double, ptr %4, i64 %1162
  %1164 = call i32 @dlassq_(ptr noundef nonnull %9, ptr noundef %1163, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1165 = load i64, ptr %9, align 8, !tbaa !5
  %1166 = add nsw i64 %1165, 1
  store i64 %1166, ptr %9, align 8, !tbaa !5
  %1167 = load i64, ptr %7, align 8, !tbaa !5
  %.not851.not = icmp slt i64 %1165, %1167
  br i1 %.not851.not, label %.lr.ph1011, label %._crit_edge1012.loopexit, !llvm.loop !63

._crit_edge1012.loopexit:                         ; preds = %.lr.ph1011
  %.pre = load i64, ptr %10, align 8, !tbaa !5
  %.pre1739 = add nsw i64 %.pre, -2
  br label %._crit_edge1012

._crit_edge1012:                                  ; preds = %._crit_edge1012.loopexit, %1158
  %.pre-phi1740 = phi i64 [ %.pre1739, %._crit_edge1012.loopexit ], [ %1159, %1158 ]
  %1168 = phi i64 [ %.pre, %._crit_edge1012.loopexit ], [ %1092, %1158 ]
  store i64 %.pre-phi1740, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8531013 = icmp slt i64 %1168, 2
  br i1 %.not8531013, label %._crit_edge1024, label %.lr.ph1016

.lr.ph1016:                                       ; preds = %._crit_edge1012, %.lr.ph1016
  %storemerge8521014 = phi i64 [ %1173, %.lr.ph1016 ], [ 0, %._crit_edge1012 ]
  %1169 = mul nsw i64 %storemerge8521014, %.0772
  %1170 = getelementptr inbounds double, ptr %4, i64 %1169
  %1171 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1170, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1172 = load i64, ptr %9, align 8, !tbaa !5
  %1173 = add nsw i64 %1172, 1
  store i64 %1173, ptr %9, align 8, !tbaa !5
  %1174 = load i64, ptr %7, align 8, !tbaa !5
  %.not853.not = icmp slt i64 %1172, %1174
  br i1 %.not853.not, label %.lr.ph1016, label %._crit_edge1017, !llvm.loop !64

._crit_edge1017:                                  ; preds = %.lr.ph1016
  %.pre1713 = load i64, ptr %10, align 8, !tbaa !5
  %.pre1741 = add nsw i64 %.pre1713, -2
  store i64 %.pre1741, ptr %7, align 8, !tbaa !5
  %invariant.gep1018 = getelementptr i8, ptr %4, i64 8
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8551020 = icmp slt i64 %.pre1713, 2
  br i1 %.not8551020, label %._crit_edge1024, label %.lr.ph1023

.lr.ph1023:                                       ; preds = %._crit_edge1017, %.lr.ph1023
  %storemerge8541021 = phi i64 [ %1184, %.lr.ph1023 ], [ 0, %._crit_edge1017 ]
  %1175 = load i64, ptr %10, align 8, !tbaa !5
  %1176 = xor i64 %storemerge8541021, -1
  %1177 = add i64 %1175, %1176
  store i64 %1177, ptr %8, align 8, !tbaa !5
  %1178 = add nsw i64 %storemerge8541021, -1
  %1179 = add i64 %1178, %1175
  %1180 = mul nsw i64 %1179, %.0772
  %gep1019 = getelementptr double, ptr %invariant.gep1018, i64 %storemerge8541021
  %1181 = getelementptr double, ptr %gep1019, i64 %1180
  %1182 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1181, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1183 = load i64, ptr %9, align 8, !tbaa !5
  %1184 = add nsw i64 %1183, 1
  store i64 %1184, ptr %9, align 8, !tbaa !5
  %1185 = load i64, ptr %7, align 8, !tbaa !5
  %.not855.not = icmp slt i64 %1183, %1185
  br i1 %.not855.not, label %.lr.ph1023, label %._crit_edge1024.loopexit, !llvm.loop !65

._crit_edge1024.loopexit:                         ; preds = %.lr.ph1023
  %.pre1714 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1024

._crit_edge1024:                                  ; preds = %._crit_edge1012, %._crit_edge1024.loopexit, %._crit_edge1017
  %1186 = phi i64 [ %.pre1714, %._crit_edge1024.loopexit ], [ %.pre1713, %._crit_edge1017 ], [ %1168, %._crit_edge1012 ]
  %1187 = load double, ptr %11, align 8, !tbaa !9
  %1188 = fadd double %1187, %1187
  store double %1188, ptr %11, align 8, !tbaa !9
  %1189 = add nsw i64 %1186, -1
  store i64 %1189, ptr %7, align 8, !tbaa !5
  %1190 = add nsw i64 %.0772, 1
  store i64 %1190, ptr %8, align 8, !tbaa !5
  %1191 = mul nsw i64 %1186, %.0772
  %1192 = getelementptr inbounds double, ptr %4, i64 %1191
  %1193 = call i32 @dlassq_(ptr noundef nonnull %7, ptr noundef %1192, ptr noundef nonnull %8, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  store i64 %1190, ptr %7, align 8, !tbaa !5
  %1194 = load i64, ptr %10, align 8, !tbaa !5
  %1195 = add nsw i64 %1194, -1
  %1196 = mul nsw i64 %1195, %.0772
  %1197 = getelementptr inbounds double, ptr %4, i64 %1196
  %1198 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1197, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  br label %1366

1199:                                             ; preds = %1157
  %1200 = add nsw i64 %1092, -1
  store i64 %1200, ptr %7, align 8, !tbaa !5
  store i64 1, ptr %9, align 8, !tbaa !5
  %.not8451025 = icmp slt i64 %1090, 3
  br i1 %.not8451025, label %._crit_edge1029, label %.lr.ph1028

.lr.ph1028:                                       ; preds = %1199, %.lr.ph1028
  %storemerge8441026 = phi i64 [ %1205, %.lr.ph1028 ], [ 1, %1199 ]
  %1201 = mul nsw i64 %storemerge8441026, %.0772
  %1202 = getelementptr inbounds double, ptr %4, i64 %1201
  %1203 = call i32 @dlassq_(ptr noundef nonnull %9, ptr noundef %1202, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1204 = load i64, ptr %9, align 8, !tbaa !5
  %1205 = add nsw i64 %1204, 1
  store i64 %1205, ptr %9, align 8, !tbaa !5
  %1206 = load i64, ptr %7, align 8, !tbaa !5
  %.not845.not = icmp slt i64 %1204, %1206
  br i1 %.not845.not, label %.lr.ph1028, label %._crit_edge1029.loopexit, !llvm.loop !66

._crit_edge1029.loopexit:                         ; preds = %.lr.ph1028
  %.pre1715 = load i64, ptr %3, align 8, !tbaa !5
  %.pre1716 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1029

._crit_edge1029:                                  ; preds = %._crit_edge1029.loopexit, %1199
  %1207 = phi i64 [ %.pre1716, %._crit_edge1029.loopexit ], [ %1092, %1199 ]
  %1208 = phi i64 [ %.pre1715, %._crit_edge1029.loopexit ], [ %1090, %1199 ]
  %1209 = add nsw i64 %1208, -1
  store i64 %1209, ptr %7, align 8, !tbaa !5
  store i64 %1207, ptr %9, align 8, !tbaa !5
  %.not8471030.not = icmp slt i64 %1207, %1208
  br i1 %.not8471030.not, label %.lr.ph1033, label %._crit_edge1034

.lr.ph1033:                                       ; preds = %._crit_edge1029, %.lr.ph1033
  %storemerge8461031 = phi i64 [ %1214, %.lr.ph1033 ], [ %1207, %._crit_edge1029 ]
  %1210 = mul nsw i64 %storemerge8461031, %.0772
  %1211 = getelementptr inbounds double, ptr %4, i64 %1210
  %1212 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1211, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1213 = load i64, ptr %9, align 8, !tbaa !5
  %1214 = add nsw i64 %1213, 1
  store i64 %1214, ptr %9, align 8, !tbaa !5
  %1215 = load i64, ptr %7, align 8, !tbaa !5
  %.not847.not = icmp slt i64 %1213, %1215
  br i1 %.not847.not, label %.lr.ph1033, label %._crit_edge1034.loopexit, !llvm.loop !67

._crit_edge1034.loopexit:                         ; preds = %.lr.ph1033
  %.pre1717 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1034

._crit_edge1034:                                  ; preds = %._crit_edge1034.loopexit, %._crit_edge1029
  %1216 = phi i64 [ %.pre1717, %._crit_edge1034.loopexit ], [ %1207, %._crit_edge1029 ]
  %1217 = add nsw i64 %1216, -3
  store i64 %1217, ptr %7, align 8, !tbaa !5
  %invariant.gep1035 = getelementptr i8, ptr %4, i64 16
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8491037 = icmp slt i64 %1216, 3
  br i1 %.not8491037, label %._crit_edge1041, label %.lr.ph1040

.lr.ph1040:                                       ; preds = %._crit_edge1034, %.lr.ph1040
  %storemerge8481038 = phi i64 [ %1224, %.lr.ph1040 ], [ 0, %._crit_edge1034 ]
  %1218 = load i64, ptr %10, align 8, !tbaa !5
  %reass.sub1594 = sub i64 %1218, %storemerge8481038
  %1219 = add i64 %reass.sub1594, -2
  store i64 %1219, ptr %8, align 8, !tbaa !5
  %1220 = mul nsw i64 %storemerge8481038, %.0772
  %gep1036 = getelementptr double, ptr %invariant.gep1035, i64 %storemerge8481038
  %1221 = getelementptr double, ptr %gep1036, i64 %1220
  %1222 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1221, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1223 = load i64, ptr %9, align 8, !tbaa !5
  %1224 = add nsw i64 %1223, 1
  store i64 %1224, ptr %9, align 8, !tbaa !5
  %1225 = load i64, ptr %7, align 8, !tbaa !5
  %.not849.not = icmp slt i64 %1223, %1225
  br i1 %.not849.not, label %.lr.ph1040, label %._crit_edge1041, !llvm.loop !68

._crit_edge1041:                                  ; preds = %.lr.ph1040, %._crit_edge1034
  %1226 = load double, ptr %11, align 8, !tbaa !9
  %1227 = fadd double %1226, %1226
  store double %1227, ptr %11, align 8, !tbaa !9
  %1228 = add nsw i64 %.0772, 1
  store i64 %1228, ptr %7, align 8, !tbaa !5
  %1229 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %4, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1230 = load i64, ptr %10, align 8, !tbaa !5
  %1231 = add nsw i64 %1230, -1
  store i64 %1231, ptr %7, align 8, !tbaa !5
  store i64 %1228, ptr %8, align 8, !tbaa !5
  %1232 = getelementptr inbounds i8, ptr %4, i64 8
  %1233 = call i32 @dlassq_(ptr noundef nonnull %7, ptr noundef nonnull %1232, ptr noundef nonnull %8, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  br label %1366

1234:                                             ; preds = %1089
  br i1 %.not, label %1235, label %1294

1235:                                             ; preds = %1234
  br i1 %.not817.not.not.not.not.not.not.not.not, label %1270, label %1236

1236:                                             ; preds = %1235
  %1237 = add nsw i64 %1092, -2
  store i64 %1237, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8411100 = icmp slt i64 %1090, 3
  br i1 %.not8411100, label %._crit_edge1104, label %.lr.ph1103

.lr.ph1103:                                       ; preds = %1236, %.lr.ph1103
  %storemerge8401101 = phi i64 [ %1248, %.lr.ph1103 ], [ 0, %1236 ]
  %1238 = load i64, ptr %10, align 8, !tbaa !5
  %1239 = xor i64 %storemerge8401101, -1
  %1240 = add i64 %1238, %1239
  store i64 %1240, ptr %8, align 8, !tbaa !5
  %1241 = mul nsw i64 %storemerge8401101, %.0772
  %1242 = getelementptr double, ptr %4, i64 %1238
  %1243 = getelementptr double, ptr %1242, i64 %storemerge8401101
  %1244 = getelementptr i8, ptr %1243, i64 16
  %1245 = getelementptr double, ptr %1244, i64 %1241
  %1246 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1245, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1247 = load i64, ptr %9, align 8, !tbaa !5
  %1248 = add nsw i64 %1247, 1
  store i64 %1248, ptr %9, align 8, !tbaa !5
  %1249 = load i64, ptr %7, align 8, !tbaa !5
  %.not841.not = icmp slt i64 %1247, %1249
  br i1 %.not841.not, label %.lr.ph1103, label %._crit_edge1104.loopexit, !llvm.loop !69

._crit_edge1104.loopexit:                         ; preds = %.lr.ph1103
  %.pre1727 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1104

._crit_edge1104:                                  ; preds = %._crit_edge1104.loopexit, %1236
  %1250 = phi i64 [ %.pre1727, %._crit_edge1104.loopexit ], [ %1092, %1236 ]
  %1251 = add nsw i64 %1250, -1
  store i64 %1251, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8431105 = icmp slt i64 %1250, 1
  br i1 %.not8431105, label %._crit_edge1109, label %.lr.ph1108

.lr.ph1108:                                       ; preds = %._crit_edge1104, %.lr.ph1108
  %storemerge8421106 = phi i64 [ %1258, %.lr.ph1108 ], [ 0, %._crit_edge1104 ]
  %1252 = load i64, ptr %10, align 8, !tbaa !5
  %1253 = add nsw i64 %1252, %storemerge8421106
  store i64 %1253, ptr %8, align 8, !tbaa !5
  %1254 = mul nsw i64 %storemerge8421106, %.0772
  %1255 = getelementptr inbounds double, ptr %4, i64 %1254
  %1256 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1255, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1257 = load i64, ptr %9, align 8, !tbaa !5
  %1258 = add nsw i64 %1257, 1
  store i64 %1258, ptr %9, align 8, !tbaa !5
  %1259 = load i64, ptr %7, align 8, !tbaa !5
  %.not843.not = icmp slt i64 %1257, %1259
  br i1 %.not843.not, label %.lr.ph1108, label %._crit_edge1109.loopexit, !llvm.loop !70

._crit_edge1109.loopexit:                         ; preds = %.lr.ph1108
  %.pre1728 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1109

._crit_edge1109:                                  ; preds = %._crit_edge1109.loopexit, %._crit_edge1104
  %1260 = phi i64 [ %.pre1728, %._crit_edge1109.loopexit ], [ %1250, %._crit_edge1104 ]
  %1261 = load double, ptr %11, align 8, !tbaa !9
  %1262 = fadd double %1261, %1261
  store double %1262, ptr %11, align 8, !tbaa !9
  %1263 = add nsw i64 %.0772, 1
  store i64 %1263, ptr %7, align 8, !tbaa !5
  %1264 = getelementptr double, ptr %4, i64 %1260
  %1265 = getelementptr i8, ptr %1264, i64 8
  %1266 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1265, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  store i64 %1263, ptr %7, align 8, !tbaa !5
  %1267 = load i64, ptr %10, align 8, !tbaa !5
  %1268 = getelementptr inbounds double, ptr %4, i64 %1267
  %1269 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1268, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  br label %1366

1270:                                             ; preds = %1235
  %1271 = add nsw i64 %1092, -1
  store i64 %1271, ptr %7, align 8, !tbaa !5
  %invariant.gep1110 = getelementptr i8, ptr %4, i64 16
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8371112 = icmp slt i64 %1090, 1
  br i1 %.not8371112, label %._crit_edge1116, label %.lr.ph1115

.lr.ph1115:                                       ; preds = %1270, %.lr.ph1115
  %storemerge8361113 = phi i64 [ %1279, %.lr.ph1115 ], [ 0, %1270 ]
  %1272 = load i64, ptr %3, align 8, !tbaa !5
  %1273 = xor i64 %storemerge8361113, -1
  %1274 = add i64 %1272, %1273
  store i64 %1274, ptr %8, align 8, !tbaa !5
  %1275 = mul nsw i64 %storemerge8361113, %.0772
  %gep1111 = getelementptr double, ptr %invariant.gep1110, i64 %storemerge8361113
  %1276 = getelementptr double, ptr %gep1111, i64 %1275
  %1277 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1276, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1278 = load i64, ptr %9, align 8, !tbaa !5
  %1279 = add nsw i64 %1278, 1
  store i64 %1279, ptr %9, align 8, !tbaa !5
  %1280 = load i64, ptr %7, align 8, !tbaa !5
  %.not837.not = icmp slt i64 %1278, %1280
  br i1 %.not837.not, label %.lr.ph1115, label %._crit_edge1116.loopexit, !llvm.loop !71

._crit_edge1116.loopexit:                         ; preds = %.lr.ph1115
  %.pre1729 = load i64, ptr %10, align 8, !tbaa !5
  %.pre1734 = add nsw i64 %.pre1729, -1
  br label %._crit_edge1116

._crit_edge1116:                                  ; preds = %._crit_edge1116.loopexit, %1270
  %.pre-phi = phi i64 [ %.pre1734, %._crit_edge1116.loopexit ], [ %1271, %1270 ]
  %1281 = phi i64 [ %.pre1729, %._crit_edge1116.loopexit ], [ %1092, %1270 ]
  store i64 %.pre-phi, ptr %7, align 8, !tbaa !5
  store i64 1, ptr %9, align 8, !tbaa !5
  %.not8391117 = icmp slt i64 %1281, 2
  br i1 %.not8391117, label %._crit_edge1121, label %.lr.ph1120

.lr.ph1120:                                       ; preds = %._crit_edge1116, %.lr.ph1120
  %storemerge8381118 = phi i64 [ %1286, %.lr.ph1120 ], [ 1, %._crit_edge1116 ]
  %1282 = mul nsw i64 %storemerge8381118, %.0772
  %1283 = getelementptr inbounds double, ptr %4, i64 %1282
  %1284 = call i32 @dlassq_(ptr noundef nonnull %9, ptr noundef %1283, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1285 = load i64, ptr %9, align 8, !tbaa !5
  %1286 = add nsw i64 %1285, 1
  store i64 %1286, ptr %9, align 8, !tbaa !5
  %1287 = load i64, ptr %7, align 8, !tbaa !5
  %.not839.not = icmp slt i64 %1285, %1287
  br i1 %.not839.not, label %.lr.ph1120, label %._crit_edge1121, !llvm.loop !72

._crit_edge1121:                                  ; preds = %.lr.ph1120, %._crit_edge1116
  %1288 = load double, ptr %11, align 8, !tbaa !9
  %1289 = fadd double %1288, %1288
  store double %1289, ptr %11, align 8, !tbaa !9
  %1290 = add nsw i64 %.0772, 1
  store i64 %1290, ptr %7, align 8, !tbaa !5
  %1291 = getelementptr inbounds i8, ptr %4, i64 8
  %1292 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef nonnull %1291, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  store i64 %1290, ptr %7, align 8, !tbaa !5
  %1293 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %4, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  br label %1366

1294:                                             ; preds = %1234
  %1295 = add nsw i64 %1092, -1
  store i64 %1295, ptr %7, align 8, !tbaa !5
  store i64 1, ptr %9, align 8, !tbaa !5
  %.not8251081 = icmp slt i64 %1090, 3
  br i1 %.not817.not.not.not.not.not.not.not.not, label %1336, label %1296

1296:                                             ; preds = %1294
  br i1 %.not8251081, label %._crit_edge1068, label %.lr.ph1067

.lr.ph1067:                                       ; preds = %1296, %.lr.ph1067
  %storemerge8301065 = phi i64 [ %1304, %.lr.ph1067 ], [ 1, %1296 ]
  %1297 = load i64, ptr %10, align 8, !tbaa !5
  %1298 = add i64 %storemerge8301065, 1
  %1299 = add i64 %1298, %1297
  %1300 = mul nsw i64 %1299, %.0772
  %1301 = getelementptr inbounds double, ptr %4, i64 %1300
  %1302 = call i32 @dlassq_(ptr noundef nonnull %9, ptr noundef %1301, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1303 = load i64, ptr %9, align 8, !tbaa !5
  %1304 = add nsw i64 %1303, 1
  store i64 %1304, ptr %9, align 8, !tbaa !5
  %1305 = load i64, ptr %7, align 8, !tbaa !5
  %.not831.not = icmp slt i64 %1303, %1305
  br i1 %.not831.not, label %.lr.ph1067, label %._crit_edge1068.loopexit, !llvm.loop !73

._crit_edge1068.loopexit:                         ; preds = %.lr.ph1067
  %.pre1721 = load i64, ptr %10, align 8, !tbaa !5
  %.pre1735 = add nsw i64 %.pre1721, -1
  br label %._crit_edge1068

._crit_edge1068:                                  ; preds = %._crit_edge1068.loopexit, %1296
  %.pre-phi1736 = phi i64 [ %.pre1735, %._crit_edge1068.loopexit ], [ %1295, %1296 ]
  %1306 = phi i64 [ %.pre1721, %._crit_edge1068.loopexit ], [ %1092, %1296 ]
  store i64 %.pre-phi1736, ptr %7, align 8, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8331069 = icmp slt i64 %1306, 1
  br i1 %.not8331069, label %._crit_edge1080, label %.lr.ph1072

.lr.ph1072:                                       ; preds = %._crit_edge1068, %.lr.ph1072
  %storemerge8321070 = phi i64 [ %1311, %.lr.ph1072 ], [ 0, %._crit_edge1068 ]
  %1307 = mul nsw i64 %storemerge8321070, %.0772
  %1308 = getelementptr inbounds double, ptr %4, i64 %1307
  %1309 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1308, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1310 = load i64, ptr %9, align 8, !tbaa !5
  %1311 = add nsw i64 %1310, 1
  store i64 %1311, ptr %9, align 8, !tbaa !5
  %1312 = load i64, ptr %7, align 8, !tbaa !5
  %.not833.not = icmp slt i64 %1310, %1312
  br i1 %.not833.not, label %.lr.ph1072, label %._crit_edge1073, !llvm.loop !74

._crit_edge1073:                                  ; preds = %.lr.ph1072
  %.pre1722 = load i64, ptr %10, align 8, !tbaa !5
  %1313 = add nsw i64 %.pre1722, -2
  store i64 %1313, ptr %7, align 8, !tbaa !5
  %invariant.gep1074 = getelementptr i8, ptr %4, i64 8
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8351076 = icmp slt i64 %.pre1722, 2
  br i1 %.not8351076, label %._crit_edge1080, label %.lr.ph1079

.lr.ph1079:                                       ; preds = %._crit_edge1073, %.lr.ph1079
  %storemerge8341077 = phi i64 [ %1322, %.lr.ph1079 ], [ 0, %._crit_edge1073 ]
  %1314 = load i64, ptr %10, align 8, !tbaa !5
  %1315 = xor i64 %storemerge8341077, -1
  %1316 = add i64 %1314, %1315
  store i64 %1316, ptr %8, align 8, !tbaa !5
  %1317 = add nsw i64 %1314, %storemerge8341077
  %1318 = mul nsw i64 %1317, %.0772
  %gep1075 = getelementptr double, ptr %invariant.gep1074, i64 %storemerge8341077
  %1319 = getelementptr double, ptr %gep1075, i64 %1318
  %1320 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1319, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1321 = load i64, ptr %9, align 8, !tbaa !5
  %1322 = add nsw i64 %1321, 1
  store i64 %1322, ptr %9, align 8, !tbaa !5
  %1323 = load i64, ptr %7, align 8, !tbaa !5
  %.not835.not = icmp slt i64 %1321, %1323
  br i1 %.not835.not, label %.lr.ph1079, label %._crit_edge1080.loopexit, !llvm.loop !75

._crit_edge1080.loopexit:                         ; preds = %.lr.ph1079
  %.pre1723 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1080

._crit_edge1080:                                  ; preds = %._crit_edge1068, %._crit_edge1080.loopexit, %._crit_edge1073
  %1324 = phi i64 [ %.pre1723, %._crit_edge1080.loopexit ], [ %.pre1722, %._crit_edge1073 ], [ %1306, %._crit_edge1068 ]
  %1325 = load double, ptr %11, align 8, !tbaa !9
  %1326 = fadd double %1325, %1325
  store double %1326, ptr %11, align 8, !tbaa !9
  %1327 = add nsw i64 %.0772, 1
  store i64 %1327, ptr %7, align 8, !tbaa !5
  %1328 = add nsw i64 %1324, 1
  %1329 = mul nsw i64 %1328, %.0772
  %1330 = getelementptr inbounds double, ptr %4, i64 %1329
  %1331 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1330, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  store i64 %1327, ptr %7, align 8, !tbaa !5
  %1332 = load i64, ptr %10, align 8, !tbaa !5
  %1333 = mul nsw i64 %1332, %.0772
  %1334 = getelementptr inbounds double, ptr %4, i64 %1333
  %1335 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1334, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  br label %1366

1336:                                             ; preds = %1294
  br i1 %.not8251081, label %._crit_edge1085, label %.lr.ph1084

.lr.ph1084:                                       ; preds = %1336, %.lr.ph1084
  %storemerge1082 = phi i64 [ %1342, %.lr.ph1084 ], [ 1, %1336 ]
  %1337 = add nsw i64 %storemerge1082, 1
  %1338 = mul nsw i64 %1337, %.0772
  %1339 = getelementptr inbounds double, ptr %4, i64 %1338
  %1340 = call i32 @dlassq_(ptr noundef nonnull %9, ptr noundef %1339, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1341 = load i64, ptr %9, align 8, !tbaa !5
  %1342 = add nsw i64 %1341, 1
  store i64 %1342, ptr %9, align 8, !tbaa !5
  %1343 = load i64, ptr %7, align 8, !tbaa !5
  %.not825.not = icmp slt i64 %1341, %1343
  br i1 %.not825.not, label %.lr.ph1084, label %._crit_edge1085.loopexit, !llvm.loop !76

._crit_edge1085.loopexit:                         ; preds = %.lr.ph1084
  %.pre1724 = load i64, ptr %3, align 8, !tbaa !5
  %storemerge826.in1086.pre = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1085

._crit_edge1085:                                  ; preds = %._crit_edge1085.loopexit, %1336
  %storemerge826.in1086 = phi i64 [ %storemerge826.in1086.pre, %._crit_edge1085.loopexit ], [ %1092, %1336 ]
  %1344 = phi i64 [ %.pre1724, %._crit_edge1085.loopexit ], [ %1090, %1336 ]
  store i64 %1344, ptr %7, align 8, !tbaa !5
  %storemerge8261087 = add nsw i64 %storemerge826.in1086, 1
  store i64 %storemerge8261087, ptr %9, align 8, !tbaa !5
  %.not827.not1088 = icmp slt i64 %storemerge826.in1086, %1344
  br i1 %.not827.not1088, label %.lr.ph1091, label %._crit_edge1092

.lr.ph1091:                                       ; preds = %._crit_edge1085, %.lr.ph1091
  %storemerge8261089 = phi i64 [ %storemerge826, %.lr.ph1091 ], [ %storemerge8261087, %._crit_edge1085 ]
  %1345 = mul nsw i64 %storemerge8261089, %.0772
  %1346 = getelementptr inbounds double, ptr %4, i64 %1345
  %1347 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1346, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %storemerge826.in = load i64, ptr %9, align 8, !tbaa !5
  %storemerge826 = add nsw i64 %storemerge826.in, 1
  store i64 %storemerge826, ptr %9, align 8, !tbaa !5
  %1348 = load i64, ptr %7, align 8, !tbaa !5
  %.not827.not = icmp slt i64 %storemerge826.in, %1348
  br i1 %.not827.not, label %.lr.ph1091, label %._crit_edge1092.loopexit, !llvm.loop !77

._crit_edge1092.loopexit:                         ; preds = %.lr.ph1091
  %.pre1726 = load i64, ptr %10, align 8, !tbaa !5
  br label %._crit_edge1092

._crit_edge1092:                                  ; preds = %._crit_edge1092.loopexit, %._crit_edge1085
  %1349 = phi i64 [ %.pre1726, %._crit_edge1092.loopexit ], [ %storemerge826.in1086, %._crit_edge1085 ]
  %1350 = add nsw i64 %1349, -2
  store i64 %1350, ptr %7, align 8, !tbaa !5
  %invariant.gep1093 = getelementptr i8, ptr %4, i64 8
  store i64 0, ptr %9, align 8, !tbaa !5
  %.not8291095 = icmp slt i64 %1349, 2
  br i1 %.not8291095, label %._crit_edge1099, label %.lr.ph1098

.lr.ph1098:                                       ; preds = %._crit_edge1092, %.lr.ph1098
  %storemerge8281096 = phi i64 [ %1358, %.lr.ph1098 ], [ 0, %._crit_edge1092 ]
  %1351 = load i64, ptr %10, align 8, !tbaa !5
  %1352 = xor i64 %storemerge8281096, -1
  %1353 = add i64 %1351, %1352
  store i64 %1353, ptr %8, align 8, !tbaa !5
  %1354 = mul nsw i64 %storemerge8281096, %.0772
  %gep1094 = getelementptr double, ptr %invariant.gep1093, i64 %storemerge8281096
  %1355 = getelementptr double, ptr %gep1094, i64 %1354
  %1356 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef %1355, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  %1357 = load i64, ptr %9, align 8, !tbaa !5
  %1358 = add nsw i64 %1357, 1
  store i64 %1358, ptr %9, align 8, !tbaa !5
  %1359 = load i64, ptr %7, align 8, !tbaa !5
  %.not829.not = icmp slt i64 %1357, %1359
  br i1 %.not829.not, label %.lr.ph1098, label %._crit_edge1099, !llvm.loop !78

._crit_edge1099:                                  ; preds = %.lr.ph1098, %._crit_edge1092
  %1360 = load double, ptr %11, align 8, !tbaa !9
  %1361 = fadd double %1360, %1360
  store double %1361, ptr %11, align 8, !tbaa !9
  %1362 = add nsw i64 %.0772, 1
  store i64 %1362, ptr %7, align 8, !tbaa !5
  %1363 = getelementptr inbounds double, ptr %4, i64 %.0772
  %1364 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %1363, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  store i64 %1362, ptr %7, align 8, !tbaa !5
  %1365 = call i32 @dlassq_(ptr noundef nonnull %10, ptr noundef %4, ptr noundef nonnull %7, ptr noundef nonnull %12, ptr noundef nonnull %11) #6
  br label %1366

1366:                                             ; preds = %._crit_edge1121, %._crit_edge1109, %._crit_edge1099, %._crit_edge1080, %._crit_edge1063, %._crit_edge1051, %._crit_edge1041, %._crit_edge1024
  %1367 = load double, ptr %12, align 8, !tbaa !9
  %1368 = load double, ptr %11, align 8, !tbaa !9
  %1369 = call double @sqrt(double noundef %1368) #6
  %1370 = fmul double %1367, %1369
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge, %._crit_edge956, %._crit_edge975, %._crit_edge994, %56, %32, %106, %81, %1087, %1366, %._crit_edge1519, %.preheader.thread, %._crit_edge1469, %._crit_edge1512, %._crit_edge1744, %._crit_edge1432, %._crit_edge1191, %._crit_edge1260, %6
  %.0773 = phi double [ 0.000000e+00, %6 ], [ %216, %._crit_edge1469 ], [ %290, %._crit_edge1512 ], [ %361, %._crit_edge1519 ], [ %431, %.preheader.thread ], [ %572, %._crit_edge1191 ], [ %719, %._crit_edge1260 ], [ %903, %._crit_edge1744 ], [ %1084, %._crit_edge1432 ], [ %1370, %1366 ], [ undef, %1087 ], [ 0.000000e+00, %81 ], [ 0.000000e+00, %106 ], [ 0.000000e+00, %32 ], [ 0.000000e+00, %56 ], [ %.lcssa1903, %._crit_edge994 ], [ %.7.lcssa, %._crit_edge975 ], [ %.lcssa1907, %._crit_edge956 ], [ %.lcssa1909, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  ret double %.0773
}

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #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 i64 @llvm.smax.i64(i64, i64) #4

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

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 nofree nounwind willreturn memory(write) "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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12}
!46 = distinct !{!46, !12}
!47 = distinct !{!47, !12}
!48 = distinct !{!48, !12}
!49 = distinct !{!49, !12}
!50 = distinct !{!50, !12}
!51 = distinct !{!51, !12}
!52 = distinct !{!52, !12}
!53 = distinct !{!53, !12}
!54 = distinct !{!54, !12}
!55 = distinct !{!55, !12}
!56 = distinct !{!56, !12}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12}
!59 = distinct !{!59, !12}
!60 = distinct !{!60, !12}
!61 = distinct !{!61, !12}
!62 = distinct !{!62, !12}
!63 = distinct !{!63, !12}
!64 = distinct !{!64, !12}
!65 = distinct !{!65, !12}
!66 = distinct !{!66, !12}
!67 = distinct !{!67, !12}
!68 = distinct !{!68, !12}
!69 = distinct !{!69, !12}
!70 = distinct !{!70, !12}
!71 = distinct !{!71, !12}
!72 = distinct !{!72, !12}
!73 = distinct !{!73, !12}
!74 = distinct !{!74, !12}
!75 = distinct !{!75, !12}
!76 = distinct !{!76, !12}
!77 = distinct !{!77, !12}
!78 = distinct !{!78, !12}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass