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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dgsvj0_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) #0 {
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca double, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca i64, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca [5 x double], align 16
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca i64, align 8
  %82 = alloca i64, align 8
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca i64, align 8
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca i64, align 8
  %93 = alloca double, align 8
  %94 = alloca i32, align 4
  store ptr %0, ptr %19, align 8, !tbaa !5
  store ptr %1, ptr %20, align 8, !tbaa !5
  store ptr %2, ptr %21, align 8, !tbaa !5
  store ptr %3, ptr %22, align 8, !tbaa !5
  store ptr %4, ptr %23, align 8, !tbaa !5
  store ptr %5, ptr %24, align 8, !tbaa !5
  store ptr %6, ptr %25, align 8, !tbaa !5
  store ptr %7, ptr %26, align 8, !tbaa !5
  store ptr %8, ptr %27, align 8, !tbaa !5
  store ptr %9, ptr %28, align 8, !tbaa !5
  store ptr %10, ptr %29, align 8, !tbaa !5
  store ptr %11, ptr %30, align 8, !tbaa !5
  store ptr %12, ptr %31, align 8, !tbaa !5
  store ptr %13, ptr %32, align 8, !tbaa !5
  store ptr %14, ptr %33, align 8, !tbaa !5
  store ptr %15, ptr %34, align 8, !tbaa !5
  store ptr %16, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 40, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #5
  %95 = load ptr, ptr %25, align 8, !tbaa !5
  %96 = getelementptr inbounds double, ptr %95, i32 -1
  store ptr %96, ptr %25, align 8, !tbaa !5
  %97 = load ptr, ptr %24, align 8, !tbaa !5
  %98 = getelementptr inbounds double, ptr %97, i32 -1
  store ptr %98, ptr %24, align 8, !tbaa !5
  %99 = load ptr, ptr %23, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  store i64 %100, ptr %36, align 8, !tbaa !9
  %101 = load i64, ptr %36, align 8, !tbaa !9
  %102 = add nsw i64 1, %101
  store i64 %102, ptr %37, align 8, !tbaa !9
  %103 = load i64, ptr %37, align 8, !tbaa !9
  %104 = load ptr, ptr %22, align 8, !tbaa !5
  %105 = sub i64 0, %103
  %106 = getelementptr inbounds double, ptr %104, i64 %105
  store ptr %106, ptr %22, align 8, !tbaa !5
  %107 = load ptr, ptr %28, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %108, ptr %38, align 8, !tbaa !9
  %109 = load i64, ptr %38, align 8, !tbaa !9
  %110 = add nsw i64 1, %109
  store i64 %110, ptr %39, align 8, !tbaa !9
  %111 = load i64, ptr %39, align 8, !tbaa !9
  %112 = load ptr, ptr %27, align 8, !tbaa !5
  %113 = sub i64 0, %111
  %114 = getelementptr inbounds double, ptr %112, i64 %113
  store ptr %114, ptr %27, align 8, !tbaa !5
  %115 = load ptr, ptr %33, align 8, !tbaa !5
  %116 = getelementptr inbounds double, ptr %115, i32 -1
  store ptr %116, ptr %33, align 8, !tbaa !5
  %117 = load ptr, ptr %19, align 8, !tbaa !5
  %118 = call i64 @lsame_(ptr noundef %117, ptr noundef @.str)
  store i64 %118, ptr %77, align 8, !tbaa !9
  %119 = load ptr, ptr %19, align 8, !tbaa !5
  %120 = call i64 @lsame_(ptr noundef %119, ptr noundef @.str.1)
  store i64 %120, ptr %78, align 8, !tbaa !9
  %121 = load i64, ptr %78, align 8, !tbaa !9
  %122 = icmp ne i64 %121, 0
  br i1 %122, label %132, label %123

123:                                              ; preds = %17
  %124 = load i64, ptr %77, align 8, !tbaa !9
  %125 = icmp ne i64 %124, 0
  br i1 %125, label %132, label %126

126:                                              ; preds = %123
  %127 = load ptr, ptr %19, align 8, !tbaa !5
  %128 = call i64 @lsame_(ptr noundef %127, ptr noundef @.str.2)
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %132, label %130

130:                                              ; preds = %126
  %131 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %131, align 8, !tbaa !9
  br label %204

132:                                              ; preds = %126, %123, %17
  %133 = load ptr, ptr %20, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = icmp slt i64 %134, 0
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %137, align 8, !tbaa !9
  br label %203

138:                                              ; preds = %132
  %139 = load ptr, ptr %21, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp slt i64 %140, 0
  br i1 %141, label %148, label %142

142:                                              ; preds = %138
  %143 = load ptr, ptr %21, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = load ptr, ptr %20, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = icmp sgt i64 %144, %146
  br i1 %147, label %148, label %150

148:                                              ; preds = %142, %138
  %149 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %149, align 8, !tbaa !9
  br label %202

150:                                              ; preds = %142
  %151 = load ptr, ptr %23, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = load ptr, ptr %20, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp slt i64 %152, %154
  br i1 %155, label %156, label %158

156:                                              ; preds = %150
  %157 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %157, align 8, !tbaa !9
  br label %201

158:                                              ; preds = %150
  %159 = load ptr, ptr %26, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = icmp slt i64 %160, 0
  br i1 %161, label %162, label %164

162:                                              ; preds = %158
  %163 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -8, ptr %163, align 8, !tbaa !9
  br label %200

164:                                              ; preds = %158
  %165 = load ptr, ptr %28, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = load ptr, ptr %20, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = icmp slt i64 %166, %168
  br i1 %169, label %170, label %172

170:                                              ; preds = %164
  %171 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -10, ptr %171, align 8, !tbaa !9
  br label %199

172:                                              ; preds = %164
  %173 = load ptr, ptr %31, align 8, !tbaa !5
  %174 = load double, ptr %173, align 8, !tbaa !11
  %175 = load ptr, ptr %29, align 8, !tbaa !5
  %176 = load double, ptr %175, align 8, !tbaa !11
  %177 = fcmp ole double %174, %176
  br i1 %177, label %178, label %180

178:                                              ; preds = %172
  %179 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -13, ptr %179, align 8, !tbaa !9
  br label %198

180:                                              ; preds = %172
  %181 = load ptr, ptr %32, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp slt i64 %182, 0
  br i1 %183, label %184, label %186

184:                                              ; preds = %180
  %185 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -14, ptr %185, align 8, !tbaa !9
  br label %197

186:                                              ; preds = %180
  %187 = load ptr, ptr %34, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = load ptr, ptr %20, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp slt i64 %188, %190
  br i1 %191, label %192, label %194

192:                                              ; preds = %186
  %193 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -16, ptr %193, align 8, !tbaa !9
  br label %196

194:                                              ; preds = %186
  %195 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %195, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %194, %192
  br label %197

197:                                              ; preds = %196, %184
  br label %198

198:                                              ; preds = %197, %178
  br label %199

199:                                              ; preds = %198, %170
  br label %200

200:                                              ; preds = %199, %162
  br label %201

201:                                              ; preds = %200, %156
  br label %202

202:                                              ; preds = %201, %148
  br label %203

203:                                              ; preds = %202, %136
  br label %204

204:                                              ; preds = %203, %130
  %205 = load ptr, ptr %35, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %208, label %213

208:                                              ; preds = %204
  %209 = load ptr, ptr %35, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = sub nsw i64 0, %210
  store i64 %211, ptr %40, align 8, !tbaa !9
  %212 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %40)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %94, align 4
  br label %3322

213:                                              ; preds = %204
  %214 = load i64, ptr %78, align 8, !tbaa !9
  %215 = icmp ne i64 %214, 0
  br i1 %215, label %216, label %219

216:                                              ; preds = %213
  %217 = load ptr, ptr %21, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  store i64 %218, ptr %65, align 8, !tbaa !9
  br label %226

219:                                              ; preds = %213
  %220 = load i64, ptr %77, align 8, !tbaa !9
  %221 = icmp ne i64 %220, 0
  br i1 %221, label %222, label %225

222:                                              ; preds = %219
  %223 = load ptr, ptr %26, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  store i64 %224, ptr %65, align 8, !tbaa !9
  br label %225

225:                                              ; preds = %222, %219
  br label %226

226:                                              ; preds = %225, %216
  %227 = load i64, ptr %78, align 8, !tbaa !9
  %228 = icmp ne i64 %227, 0
  br i1 %228, label %232, label %229

229:                                              ; preds = %226
  %230 = load i64, ptr %77, align 8, !tbaa !9
  %231 = icmp ne i64 %230, 0
  br label %232

232:                                              ; preds = %229, %226
  %233 = phi i1 [ true, %226 ], [ %231, %229 ]
  %234 = zext i1 %233 to i32
  %235 = sext i32 %234 to i64
  store i64 %235, ptr %78, align 8, !tbaa !9
  %236 = load ptr, ptr %29, align 8, !tbaa !5
  %237 = load double, ptr %236, align 8, !tbaa !11
  %238 = call double @sqrt(double noundef %237) #5
  store double %238, ptr %91, align 8, !tbaa !11
  %239 = load ptr, ptr %30, align 8, !tbaa !5
  %240 = load double, ptr %239, align 8, !tbaa !11
  %241 = call double @sqrt(double noundef %240) #5
  store double %241, ptr %54, align 8, !tbaa !11
  %242 = load ptr, ptr %30, align 8, !tbaa !5
  %243 = load double, ptr %242, align 8, !tbaa !11
  %244 = load ptr, ptr %29, align 8, !tbaa !5
  %245 = load double, ptr %244, align 8, !tbaa !11
  %246 = fdiv double %243, %245
  store double %246, ptr %75, align 8, !tbaa !11
  %247 = load ptr, ptr %30, align 8, !tbaa !5
  %248 = load double, ptr %247, align 8, !tbaa !11
  %249 = fdiv double 1.000000e+00, %248
  store double %249, ptr %59, align 8, !tbaa !11
  %250 = load double, ptr %54, align 8, !tbaa !11
  %251 = fdiv double 1.000000e+00, %250
  store double %251, ptr %90, align 8, !tbaa !11
  %252 = load double, ptr %91, align 8, !tbaa !11
  %253 = fdiv double 1.000000e+00, %252
  store double %253, ptr %48, align 8, !tbaa !11
  %254 = load ptr, ptr %31, align 8, !tbaa !5
  %255 = load double, ptr %254, align 8, !tbaa !11
  %256 = call double @sqrt(double noundef %255) #5
  store double %256, ptr %93, align 8, !tbaa !11
  %257 = load ptr, ptr %21, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = load ptr, ptr %21, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = sub nsw i64 %260, 1
  %262 = mul nsw i64 %258, %261
  %263 = sdiv i64 %262, 2
  store i64 %263, ptr %86, align 8, !tbaa !9
  store i64 0, ptr %87, align 8, !tbaa !9
  %264 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  store double 0.000000e+00, ptr %264, align 16, !tbaa !11
  store i64 0, ptr %81, align 8, !tbaa !9
  %265 = load ptr, ptr %21, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = icmp sle i64 8, %266
  br i1 %267, label %268, label %269

268:                                              ; preds = %232
  br label %272

269:                                              ; preds = %232
  %270 = load ptr, ptr %21, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  br label %272

272:                                              ; preds = %269, %268
  %273 = phi i64 [ 8, %268 ], [ %271, %269 ]
  store i64 %273, ptr %60, align 8, !tbaa !9
  %274 = load ptr, ptr %21, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = load i64, ptr %60, align 8, !tbaa !9
  %277 = sdiv i64 %275, %276
  store i64 %277, ptr %64, align 8, !tbaa !9
  %278 = load i64, ptr %64, align 8, !tbaa !9
  %279 = load i64, ptr %60, align 8, !tbaa !9
  %280 = mul nsw i64 %278, %279
  %281 = load ptr, ptr %21, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  %283 = icmp ne i64 %280, %282
  br i1 %283, label %284, label %287

284:                                              ; preds = %272
  %285 = load i64, ptr %64, align 8, !tbaa !9
  %286 = add nsw i64 %285, 1
  store i64 %286, ptr %64, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %284, %272
  %288 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %288, ptr %40, align 8, !tbaa !9
  %289 = load i64, ptr %40, align 8, !tbaa !9
  %290 = load i64, ptr %40, align 8, !tbaa !9
  %291 = mul nsw i64 %289, %290
  %292 = add nsw i64 %291, 1
  store i64 %292, ptr %82, align 8, !tbaa !9
  %293 = load i64, ptr %60, align 8, !tbaa !9
  %294 = icmp sle i64 5, %293
  br i1 %294, label %295, label %296

295:                                              ; preds = %287
  br label %298

296:                                              ; preds = %287
  %297 = load i64, ptr %60, align 8, !tbaa !9
  br label %298

298:                                              ; preds = %296, %295
  %299 = phi i64 [ 5, %295 ], [ %297, %296 ]
  store i64 %299, ptr %92, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  store i64 0, ptr %81, align 8, !tbaa !9
  store i64 0, ptr %49, align 8, !tbaa !9
  %300 = load ptr, ptr %32, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  store i64 %301, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %302

302:                                              ; preds = %3221, %298
  %303 = load i64, ptr %50, align 8, !tbaa !9
  %304 = load i64, ptr %40, align 8, !tbaa !9
  %305 = icmp sle i64 %303, %304
  br i1 %305, label %306, label %3224

306:                                              ; preds = %302
  store double 0.000000e+00, ptr %83, align 8, !tbaa !11
  store double 0.000000e+00, ptr %85, align 8, !tbaa !11
  store i64 0, ptr %88, align 8, !tbaa !9
  store i64 0, ptr %87, align 8, !tbaa !9
  store i64 0, ptr %49, align 8, !tbaa !9
  %307 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %307, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %308

308:                                              ; preds = %3111, %306
  %309 = load i64, ptr %62, align 8, !tbaa !9
  %310 = load i64, ptr %41, align 8, !tbaa !9
  %311 = icmp sle i64 %309, %310
  br i1 %311, label %312, label %3114

312:                                              ; preds = %308
  %313 = load i64, ptr %62, align 8, !tbaa !9
  %314 = sub nsw i64 %313, 1
  %315 = load i64, ptr %60, align 8, !tbaa !9
  %316 = mul nsw i64 %314, %315
  %317 = add nsw i64 %316, 1
  store i64 %317, ptr %61, align 8, !tbaa !9
  %318 = load i64, ptr %89, align 8, !tbaa !9
  store i64 %318, ptr %43, align 8, !tbaa !9
  %319 = load i64, ptr %64, align 8, !tbaa !9
  %320 = load i64, ptr %62, align 8, !tbaa !9
  %321 = sub nsw i64 %319, %320
  store i64 %321, ptr %44, align 8, !tbaa !9
  %322 = load i64, ptr %43, align 8, !tbaa !9
  %323 = load i64, ptr %44, align 8, !tbaa !9
  %324 = icmp sle i64 %322, %323
  br i1 %324, label %325, label %327

325:                                              ; preds = %312
  %326 = load i64, ptr %43, align 8, !tbaa !9
  br label %329

327:                                              ; preds = %312
  %328 = load i64, ptr %44, align 8, !tbaa !9
  br label %329

329:                                              ; preds = %327, %325
  %330 = phi i64 [ %326, %325 ], [ %328, %327 ]
  store i64 %330, ptr %42, align 8, !tbaa !9
  store i64 0, ptr %57, align 8, !tbaa !9
  br label %331

331:                                              ; preds = %1696, %329
  %332 = load i64, ptr %57, align 8, !tbaa !9
  %333 = load i64, ptr %42, align 8, !tbaa !9
  %334 = icmp sle i64 %332, %333
  br i1 %334, label %335, label %1699

335:                                              ; preds = %331
  %336 = load i64, ptr %57, align 8, !tbaa !9
  %337 = load i64, ptr %60, align 8, !tbaa !9
  %338 = mul nsw i64 %336, %337
  %339 = load i64, ptr %61, align 8, !tbaa !9
  %340 = add nsw i64 %339, %338
  store i64 %340, ptr %61, align 8, !tbaa !9
  %341 = load i64, ptr %61, align 8, !tbaa !9
  %342 = load i64, ptr %60, align 8, !tbaa !9
  %343 = add nsw i64 %341, %342
  %344 = sub nsw i64 %343, 1
  store i64 %344, ptr %44, align 8, !tbaa !9
  %345 = load ptr, ptr %21, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = sub nsw i64 %346, 1
  store i64 %347, ptr %45, align 8, !tbaa !9
  %348 = load i64, ptr %44, align 8, !tbaa !9
  %349 = load i64, ptr %45, align 8, !tbaa !9
  %350 = icmp sle i64 %348, %349
  br i1 %350, label %351, label %353

351:                                              ; preds = %335
  %352 = load i64, ptr %44, align 8, !tbaa !9
  br label %355

353:                                              ; preds = %335
  %354 = load i64, ptr %45, align 8, !tbaa !9
  br label %355

355:                                              ; preds = %353, %351
  %356 = phi i64 [ %352, %351 ], [ %354, %353 ]
  store i64 %356, ptr %43, align 8, !tbaa !9
  %357 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %357, ptr %51, align 8, !tbaa !9
  br label %358

358:                                              ; preds = %1692, %355
  %359 = load i64, ptr %51, align 8, !tbaa !9
  %360 = load i64, ptr %43, align 8, !tbaa !9
  %361 = icmp sle i64 %359, %360
  br i1 %361, label %362, label %1695

362:                                              ; preds = %358
  %363 = load ptr, ptr %21, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  %365 = load i64, ptr %51, align 8, !tbaa !9
  %366 = sub nsw i64 %364, %365
  %367 = add nsw i64 %366, 1
  store i64 %367, ptr %44, align 8, !tbaa !9
  %368 = load ptr, ptr %25, align 8, !tbaa !5
  %369 = load i64, ptr %51, align 8, !tbaa !9
  %370 = getelementptr inbounds double, ptr %368, i64 %369
  %371 = call i64 @f2c_idamax(ptr noundef %44, ptr noundef %370, ptr noundef @c__1)
  %372 = load i64, ptr %51, align 8, !tbaa !9
  %373 = add nsw i64 %371, %372
  %374 = sub nsw i64 %373, 1
  store i64 %374, ptr %52, align 8, !tbaa !9
  %375 = load i64, ptr %51, align 8, !tbaa !9
  %376 = load i64, ptr %52, align 8, !tbaa !9
  %377 = icmp ne i64 %375, %376
  br i1 %377, label %378, label %440

378:                                              ; preds = %362
  %379 = load ptr, ptr %20, align 8, !tbaa !5
  %380 = load ptr, ptr %22, align 8, !tbaa !5
  %381 = load i64, ptr %51, align 8, !tbaa !9
  %382 = load i64, ptr %36, align 8, !tbaa !9
  %383 = mul nsw i64 %381, %382
  %384 = add nsw i64 %383, 1
  %385 = getelementptr inbounds double, ptr %380, i64 %384
  %386 = load ptr, ptr %22, align 8, !tbaa !5
  %387 = load i64, ptr %52, align 8, !tbaa !9
  %388 = load i64, ptr %36, align 8, !tbaa !9
  %389 = mul nsw i64 %387, %388
  %390 = add nsw i64 %389, 1
  %391 = getelementptr inbounds double, ptr %386, i64 %390
  %392 = call i32 @f2c_dswap(ptr noundef %379, ptr noundef %385, ptr noundef @c__1, ptr noundef %391, ptr noundef @c__1)
  %393 = load i64, ptr %78, align 8, !tbaa !9
  %394 = icmp ne i64 %393, 0
  br i1 %394, label %395, label %409

395:                                              ; preds = %378
  %396 = load ptr, ptr %27, align 8, !tbaa !5
  %397 = load i64, ptr %51, align 8, !tbaa !9
  %398 = load i64, ptr %38, align 8, !tbaa !9
  %399 = mul nsw i64 %397, %398
  %400 = add nsw i64 %399, 1
  %401 = getelementptr inbounds double, ptr %396, i64 %400
  %402 = load ptr, ptr %27, align 8, !tbaa !5
  %403 = load i64, ptr %52, align 8, !tbaa !9
  %404 = load i64, ptr %38, align 8, !tbaa !9
  %405 = mul nsw i64 %403, %404
  %406 = add nsw i64 %405, 1
  %407 = getelementptr inbounds double, ptr %402, i64 %406
  %408 = call i32 @f2c_dswap(ptr noundef %65, ptr noundef %401, ptr noundef @c__1, ptr noundef %407, ptr noundef @c__1)
  br label %409

409:                                              ; preds = %395, %378
  %410 = load ptr, ptr %25, align 8, !tbaa !5
  %411 = load i64, ptr %51, align 8, !tbaa !9
  %412 = getelementptr inbounds double, ptr %410, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !11
  store double %413, ptr %71, align 8, !tbaa !11
  %414 = load ptr, ptr %25, align 8, !tbaa !5
  %415 = load i64, ptr %52, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %414, i64 %415
  %417 = load double, ptr %416, align 8, !tbaa !11
  %418 = load ptr, ptr %25, align 8, !tbaa !5
  %419 = load i64, ptr %51, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  store double %417, ptr %420, align 8, !tbaa !11
  %421 = load double, ptr %71, align 8, !tbaa !11
  %422 = load ptr, ptr %25, align 8, !tbaa !5
  %423 = load i64, ptr %52, align 8, !tbaa !9
  %424 = getelementptr inbounds double, ptr %422, i64 %423
  store double %421, ptr %424, align 8, !tbaa !11
  %425 = load ptr, ptr %24, align 8, !tbaa !5
  %426 = load i64, ptr %51, align 8, !tbaa !9
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  store double %428, ptr %71, align 8, !tbaa !11
  %429 = load ptr, ptr %24, align 8, !tbaa !5
  %430 = load i64, ptr %52, align 8, !tbaa !9
  %431 = getelementptr inbounds double, ptr %429, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !11
  %433 = load ptr, ptr %24, align 8, !tbaa !5
  %434 = load i64, ptr %51, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  store double %432, ptr %435, align 8, !tbaa !11
  %436 = load double, ptr %71, align 8, !tbaa !11
  %437 = load ptr, ptr %24, align 8, !tbaa !5
  %438 = load i64, ptr %52, align 8, !tbaa !9
  %439 = getelementptr inbounds double, ptr %437, i64 %438
  store double %436, ptr %439, align 8, !tbaa !11
  br label %440

440:                                              ; preds = %409, %362
  %441 = load i64, ptr %57, align 8, !tbaa !9
  %442 = icmp eq i64 %441, 0
  br i1 %442, label %443, label %500

443:                                              ; preds = %440
  %444 = load ptr, ptr %25, align 8, !tbaa !5
  %445 = load i64, ptr %51, align 8, !tbaa !9
  %446 = getelementptr inbounds double, ptr %444, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = load double, ptr %90, align 8, !tbaa !11
  %449 = fcmp olt double %447, %448
  br i1 %449, label %450, label %474

450:                                              ; preds = %443
  %451 = load ptr, ptr %25, align 8, !tbaa !5
  %452 = load i64, ptr %51, align 8, !tbaa !9
  %453 = getelementptr inbounds double, ptr %451, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !11
  %455 = load double, ptr %54, align 8, !tbaa !11
  %456 = fcmp ogt double %454, %455
  br i1 %456, label %457, label %474

457:                                              ; preds = %450
  %458 = load ptr, ptr %20, align 8, !tbaa !5
  %459 = load ptr, ptr %22, align 8, !tbaa !5
  %460 = load i64, ptr %51, align 8, !tbaa !9
  %461 = load i64, ptr %36, align 8, !tbaa !9
  %462 = mul nsw i64 %460, %461
  %463 = add nsw i64 %462, 1
  %464 = getelementptr inbounds double, ptr %459, i64 %463
  %465 = call double @f2c_dnrm2(ptr noundef %458, ptr noundef %464, ptr noundef @c__1)
  %466 = load ptr, ptr %24, align 8, !tbaa !5
  %467 = load i64, ptr %51, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %466, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = fmul double %465, %469
  %471 = load ptr, ptr %25, align 8, !tbaa !5
  %472 = load i64, ptr %51, align 8, !tbaa !9
  %473 = getelementptr inbounds double, ptr %471, i64 %472
  store double %470, ptr %473, align 8, !tbaa !11
  br label %495

474:                                              ; preds = %450, %443
  store double 0.000000e+00, ptr %71, align 8, !tbaa !11
  store double 0.000000e+00, ptr %66, align 8, !tbaa !11
  %475 = load ptr, ptr %20, align 8, !tbaa !5
  %476 = load ptr, ptr %22, align 8, !tbaa !5
  %477 = load i64, ptr %51, align 8, !tbaa !9
  %478 = load i64, ptr %36, align 8, !tbaa !9
  %479 = mul nsw i64 %477, %478
  %480 = add nsw i64 %479, 1
  %481 = getelementptr inbounds double, ptr %476, i64 %480
  %482 = call i32 @dlassq_(ptr noundef %475, ptr noundef %481, ptr noundef @c__1, ptr noundef %71, ptr noundef %66)
  %483 = load double, ptr %71, align 8, !tbaa !11
  %484 = load double, ptr %66, align 8, !tbaa !11
  %485 = call double @sqrt(double noundef %484) #5
  %486 = fmul double %483, %485
  %487 = load ptr, ptr %24, align 8, !tbaa !5
  %488 = load i64, ptr %51, align 8, !tbaa !9
  %489 = getelementptr inbounds double, ptr %487, i64 %488
  %490 = load double, ptr %489, align 8, !tbaa !11
  %491 = fmul double %486, %490
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = load i64, ptr %51, align 8, !tbaa !9
  %494 = getelementptr inbounds double, ptr %492, i64 %493
  store double %491, ptr %494, align 8, !tbaa !11
  br label %495

495:                                              ; preds = %474, %457
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = load i64, ptr %51, align 8, !tbaa !9
  %498 = getelementptr inbounds double, ptr %496, i64 %497
  %499 = load double, ptr %498, align 8, !tbaa !11
  store double %499, ptr %66, align 8, !tbaa !11
  br label %505

500:                                              ; preds = %440
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = load i64, ptr %51, align 8, !tbaa !9
  %503 = getelementptr inbounds double, ptr %501, i64 %502
  %504 = load double, ptr %503, align 8, !tbaa !11
  store double %504, ptr %66, align 8, !tbaa !11
  br label %505

505:                                              ; preds = %500, %495
  %506 = load double, ptr %66, align 8, !tbaa !11
  %507 = fcmp ogt double %506, 0.000000e+00
  br i1 %507, label %508, label %1660

508:                                              ; preds = %505
  store i64 0, ptr %49, align 8, !tbaa !9
  %509 = load i64, ptr %61, align 8, !tbaa !9
  %510 = load i64, ptr %60, align 8, !tbaa !9
  %511 = add nsw i64 %509, %510
  %512 = sub nsw i64 %511, 1
  store i64 %512, ptr %45, align 8, !tbaa !9
  %513 = load i64, ptr %45, align 8, !tbaa !9
  %514 = load ptr, ptr %21, align 8, !tbaa !5
  %515 = load i64, ptr %514, align 8, !tbaa !9
  %516 = icmp sle i64 %513, %515
  br i1 %516, label %517, label %519

517:                                              ; preds = %508
  %518 = load i64, ptr %45, align 8, !tbaa !9
  br label %522

519:                                              ; preds = %508
  %520 = load ptr, ptr %21, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  br label %522

522:                                              ; preds = %519, %517
  %523 = phi i64 [ %518, %517 ], [ %521, %519 ]
  store i64 %523, ptr %44, align 8, !tbaa !9
  %524 = load i64, ptr %51, align 8, !tbaa !9
  %525 = add nsw i64 %524, 1
  store i64 %525, ptr %52, align 8, !tbaa !9
  br label %526

526:                                              ; preds = %1651, %522
  %527 = load i64, ptr %52, align 8, !tbaa !9
  %528 = load i64, ptr %44, align 8, !tbaa !9
  %529 = icmp sle i64 %527, %528
  br i1 %529, label %530, label %1654

530:                                              ; preds = %526
  %531 = load ptr, ptr %25, align 8, !tbaa !5
  %532 = load i64, ptr %52, align 8, !tbaa !9
  %533 = getelementptr inbounds double, ptr %531, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !11
  store double %534, ptr %68, align 8, !tbaa !11
  %535 = load double, ptr %68, align 8, !tbaa !11
  %536 = fcmp ogt double %535, 0.000000e+00
  br i1 %536, label %537, label %1626

537:                                              ; preds = %530
  %538 = load double, ptr %66, align 8, !tbaa !11
  store double %538, ptr %70, align 8, !tbaa !11
  %539 = load double, ptr %68, align 8, !tbaa !11
  %540 = fcmp oge double %539, 1.000000e+00
  br i1 %540, label %541, label %620

541:                                              ; preds = %537
  %542 = load double, ptr %75, align 8, !tbaa !11
  %543 = load double, ptr %66, align 8, !tbaa !11
  %544 = fmul double %542, %543
  %545 = load double, ptr %68, align 8, !tbaa !11
  %546 = fcmp ole double %544, %545
  %547 = zext i1 %546 to i32
  %548 = sext i32 %547 to i64
  store i64 %548, ptr %79, align 8, !tbaa !9
  %549 = load double, ptr %66, align 8, !tbaa !11
  %550 = load double, ptr %59, align 8, !tbaa !11
  %551 = load double, ptr %68, align 8, !tbaa !11
  %552 = fdiv double %550, %551
  %553 = fcmp olt double %549, %552
  br i1 %553, label %554, label %583

554:                                              ; preds = %541
  %555 = load ptr, ptr %20, align 8, !tbaa !5
  %556 = load ptr, ptr %22, align 8, !tbaa !5
  %557 = load i64, ptr %51, align 8, !tbaa !9
  %558 = load i64, ptr %36, align 8, !tbaa !9
  %559 = mul nsw i64 %557, %558
  %560 = add nsw i64 %559, 1
  %561 = getelementptr inbounds double, ptr %556, i64 %560
  %562 = load ptr, ptr %22, align 8, !tbaa !5
  %563 = load i64, ptr %52, align 8, !tbaa !9
  %564 = load i64, ptr %36, align 8, !tbaa !9
  %565 = mul nsw i64 %563, %564
  %566 = add nsw i64 %565, 1
  %567 = getelementptr inbounds double, ptr %562, i64 %566
  %568 = call double @f2c_ddot(ptr noundef %555, ptr noundef %561, ptr noundef @c__1, ptr noundef %567, ptr noundef @c__1)
  %569 = load ptr, ptr %24, align 8, !tbaa !5
  %570 = load i64, ptr %51, align 8, !tbaa !9
  %571 = getelementptr inbounds double, ptr %569, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !11
  %573 = fmul double %568, %572
  %574 = load ptr, ptr %24, align 8, !tbaa !5
  %575 = load i64, ptr %52, align 8, !tbaa !9
  %576 = getelementptr inbounds double, ptr %574, i64 %575
  %577 = load double, ptr %576, align 8, !tbaa !11
  %578 = fmul double %573, %577
  %579 = load double, ptr %68, align 8, !tbaa !11
  %580 = fdiv double %578, %579
  %581 = load double, ptr %66, align 8, !tbaa !11
  %582 = fdiv double %580, %581
  store double %582, ptr %67, align 8, !tbaa !11
  br label %619

583:                                              ; preds = %541
  %584 = load ptr, ptr %20, align 8, !tbaa !5
  %585 = load ptr, ptr %22, align 8, !tbaa !5
  %586 = load i64, ptr %51, align 8, !tbaa !9
  %587 = load i64, ptr %36, align 8, !tbaa !9
  %588 = mul nsw i64 %586, %587
  %589 = add nsw i64 %588, 1
  %590 = getelementptr inbounds double, ptr %585, i64 %589
  %591 = load ptr, ptr %33, align 8, !tbaa !5
  %592 = getelementptr inbounds double, ptr %591, i64 1
  %593 = call i32 @f2c_dcopy(ptr noundef %584, ptr noundef %590, ptr noundef @c__1, ptr noundef %592, ptr noundef @c__1)
  %594 = load ptr, ptr %24, align 8, !tbaa !5
  %595 = load i64, ptr %51, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  %597 = load ptr, ptr %20, align 8, !tbaa !5
  %598 = load ptr, ptr %33, align 8, !tbaa !5
  %599 = getelementptr inbounds double, ptr %598, i64 1
  %600 = load ptr, ptr %23, align 8, !tbaa !5
  %601 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef %596, ptr noundef %597, ptr noundef @c__1, ptr noundef %599, ptr noundef %600, ptr noundef %69)
  %602 = load ptr, ptr %20, align 8, !tbaa !5
  %603 = load ptr, ptr %33, align 8, !tbaa !5
  %604 = getelementptr inbounds double, ptr %603, i64 1
  %605 = load ptr, ptr %22, align 8, !tbaa !5
  %606 = load i64, ptr %52, align 8, !tbaa !9
  %607 = load i64, ptr %36, align 8, !tbaa !9
  %608 = mul nsw i64 %606, %607
  %609 = add nsw i64 %608, 1
  %610 = getelementptr inbounds double, ptr %605, i64 %609
  %611 = call double @f2c_ddot(ptr noundef %602, ptr noundef %604, ptr noundef @c__1, ptr noundef %610, ptr noundef @c__1)
  %612 = load ptr, ptr %24, align 8, !tbaa !5
  %613 = load i64, ptr %52, align 8, !tbaa !9
  %614 = getelementptr inbounds double, ptr %612, i64 %613
  %615 = load double, ptr %614, align 8, !tbaa !11
  %616 = fmul double %611, %615
  %617 = load double, ptr %68, align 8, !tbaa !11
  %618 = fdiv double %616, %617
  store double %618, ptr %67, align 8, !tbaa !11
  br label %619

619:                                              ; preds = %583, %554
  br label %699

620:                                              ; preds = %537
  %621 = load double, ptr %66, align 8, !tbaa !11
  %622 = load double, ptr %68, align 8, !tbaa !11
  %623 = load double, ptr %75, align 8, !tbaa !11
  %624 = fdiv double %622, %623
  %625 = fcmp ole double %621, %624
  %626 = zext i1 %625 to i32
  %627 = sext i32 %626 to i64
  store i64 %627, ptr %79, align 8, !tbaa !9
  %628 = load double, ptr %66, align 8, !tbaa !11
  %629 = load double, ptr %75, align 8, !tbaa !11
  %630 = load double, ptr %68, align 8, !tbaa !11
  %631 = fdiv double %629, %630
  %632 = fcmp ogt double %628, %631
  br i1 %632, label %633, label %662

633:                                              ; preds = %620
  %634 = load ptr, ptr %20, align 8, !tbaa !5
  %635 = load ptr, ptr %22, align 8, !tbaa !5
  %636 = load i64, ptr %51, align 8, !tbaa !9
  %637 = load i64, ptr %36, align 8, !tbaa !9
  %638 = mul nsw i64 %636, %637
  %639 = add nsw i64 %638, 1
  %640 = getelementptr inbounds double, ptr %635, i64 %639
  %641 = load ptr, ptr %22, align 8, !tbaa !5
  %642 = load i64, ptr %52, align 8, !tbaa !9
  %643 = load i64, ptr %36, align 8, !tbaa !9
  %644 = mul nsw i64 %642, %643
  %645 = add nsw i64 %644, 1
  %646 = getelementptr inbounds double, ptr %641, i64 %645
  %647 = call double @f2c_ddot(ptr noundef %634, ptr noundef %640, ptr noundef @c__1, ptr noundef %646, ptr noundef @c__1)
  %648 = load ptr, ptr %24, align 8, !tbaa !5
  %649 = load i64, ptr %51, align 8, !tbaa !9
  %650 = getelementptr inbounds double, ptr %648, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  %652 = fmul double %647, %651
  %653 = load ptr, ptr %24, align 8, !tbaa !5
  %654 = load i64, ptr %52, align 8, !tbaa !9
  %655 = getelementptr inbounds double, ptr %653, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  %657 = fmul double %652, %656
  %658 = load double, ptr %68, align 8, !tbaa !11
  %659 = fdiv double %657, %658
  %660 = load double, ptr %66, align 8, !tbaa !11
  %661 = fdiv double %659, %660
  store double %661, ptr %67, align 8, !tbaa !11
  br label %698

662:                                              ; preds = %620
  %663 = load ptr, ptr %20, align 8, !tbaa !5
  %664 = load ptr, ptr %22, align 8, !tbaa !5
  %665 = load i64, ptr %52, align 8, !tbaa !9
  %666 = load i64, ptr %36, align 8, !tbaa !9
  %667 = mul nsw i64 %665, %666
  %668 = add nsw i64 %667, 1
  %669 = getelementptr inbounds double, ptr %664, i64 %668
  %670 = load ptr, ptr %33, align 8, !tbaa !5
  %671 = getelementptr inbounds double, ptr %670, i64 1
  %672 = call i32 @f2c_dcopy(ptr noundef %663, ptr noundef %669, ptr noundef @c__1, ptr noundef %671, ptr noundef @c__1)
  %673 = load ptr, ptr %24, align 8, !tbaa !5
  %674 = load i64, ptr %52, align 8, !tbaa !9
  %675 = getelementptr inbounds double, ptr %673, i64 %674
  %676 = load ptr, ptr %20, align 8, !tbaa !5
  %677 = load ptr, ptr %33, align 8, !tbaa !5
  %678 = getelementptr inbounds double, ptr %677, i64 1
  %679 = load ptr, ptr %23, align 8, !tbaa !5
  %680 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef %675, ptr noundef %676, ptr noundef @c__1, ptr noundef %678, ptr noundef %679, ptr noundef %69)
  %681 = load ptr, ptr %20, align 8, !tbaa !5
  %682 = load ptr, ptr %33, align 8, !tbaa !5
  %683 = getelementptr inbounds double, ptr %682, i64 1
  %684 = load ptr, ptr %22, align 8, !tbaa !5
  %685 = load i64, ptr %51, align 8, !tbaa !9
  %686 = load i64, ptr %36, align 8, !tbaa !9
  %687 = mul nsw i64 %685, %686
  %688 = add nsw i64 %687, 1
  %689 = getelementptr inbounds double, ptr %684, i64 %688
  %690 = call double @f2c_ddot(ptr noundef %681, ptr noundef %683, ptr noundef @c__1, ptr noundef %689, ptr noundef @c__1)
  %691 = load ptr, ptr %24, align 8, !tbaa !5
  %692 = load i64, ptr %51, align 8, !tbaa !9
  %693 = getelementptr inbounds double, ptr %691, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !11
  %695 = fmul double %690, %694
  %696 = load double, ptr %66, align 8, !tbaa !11
  %697 = fdiv double %695, %696
  store double %697, ptr %67, align 8, !tbaa !11
  br label %698

698:                                              ; preds = %662, %633
  br label %699

699:                                              ; preds = %698, %619
  %700 = load double, ptr %83, align 8, !tbaa !11
  store double %700, ptr %46, align 8, !tbaa !11
  %701 = load double, ptr %67, align 8, !tbaa !11
  %702 = fcmp oge double %701, 0.000000e+00
  br i1 %702, label %703, label %705

703:                                              ; preds = %699
  %704 = load double, ptr %67, align 8, !tbaa !11
  br label %708

705:                                              ; preds = %699
  %706 = load double, ptr %67, align 8, !tbaa !11
  %707 = fneg double %706
  br label %708

708:                                              ; preds = %705, %703
  %709 = phi double [ %704, %703 ], [ %707, %705 ]
  store double %709, ptr %47, align 8, !tbaa !11
  %710 = load double, ptr %46, align 8, !tbaa !11
  %711 = load double, ptr %47, align 8, !tbaa !11
  %712 = fcmp oge double %710, %711
  br i1 %712, label %713, label %715

713:                                              ; preds = %708
  %714 = load double, ptr %46, align 8, !tbaa !11
  br label %717

715:                                              ; preds = %708
  %716 = load double, ptr %47, align 8, !tbaa !11
  br label %717

717:                                              ; preds = %715, %713
  %718 = phi double [ %714, %713 ], [ %716, %715 ]
  store double %718, ptr %83, align 8, !tbaa !11
  %719 = load double, ptr %67, align 8, !tbaa !11
  %720 = fcmp oge double %719, 0.000000e+00
  br i1 %720, label %721, label %723

721:                                              ; preds = %717
  %722 = load double, ptr %67, align 8, !tbaa !11
  br label %726

723:                                              ; preds = %717
  %724 = load double, ptr %67, align 8, !tbaa !11
  %725 = fneg double %724
  br label %726

726:                                              ; preds = %723, %721
  %727 = phi double [ %722, %721 ], [ %725, %723 ]
  %728 = load ptr, ptr %31, align 8, !tbaa !5
  %729 = load double, ptr %728, align 8, !tbaa !11
  %730 = fcmp ogt double %727, %729
  br i1 %730, label %731, label %1616

731:                                              ; preds = %726
  %732 = load i64, ptr %57, align 8, !tbaa !9
  %733 = icmp eq i64 %732, 0
  br i1 %733, label %734, label %737

734:                                              ; preds = %731
  store i64 0, ptr %87, align 8, !tbaa !9
  store i64 0, ptr %49, align 8, !tbaa !9
  %735 = load i64, ptr %88, align 8, !tbaa !9
  %736 = add nsw i64 %735, 1
  store i64 %736, ptr %88, align 8, !tbaa !9
  br label %737

737:                                              ; preds = %734, %731
  %738 = load i64, ptr %79, align 8, !tbaa !9
  %739 = icmp ne i64 %738, 0
  br i1 %739, label %740, label %1419

740:                                              ; preds = %737
  %741 = load double, ptr %68, align 8, !tbaa !11
  %742 = load double, ptr %66, align 8, !tbaa !11
  %743 = fdiv double %741, %742
  store double %743, ptr %73, align 8, !tbaa !11
  %744 = load double, ptr %66, align 8, !tbaa !11
  %745 = load double, ptr %68, align 8, !tbaa !11
  %746 = fdiv double %744, %745
  store double %746, ptr %72, align 8, !tbaa !11
  %747 = load double, ptr %73, align 8, !tbaa !11
  %748 = load double, ptr %72, align 8, !tbaa !11
  %749 = fsub double %747, %748
  store double %749, ptr %46, align 8, !tbaa !11
  %750 = load double, ptr %46, align 8, !tbaa !11
  %751 = fcmp oge double %750, 0.000000e+00
  br i1 %751, label %752, label %754

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

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

757:                                              ; preds = %754, %752
  %758 = phi double [ %753, %752 ], [ %756, %754 ]
  %759 = fmul double %758, -5.000000e-01
  %760 = load double, ptr %67, align 8, !tbaa !11
  %761 = fdiv double %759, %760
  store double %761, ptr %74, align 8, !tbaa !11
  %762 = load double, ptr %74, align 8, !tbaa !11
  %763 = fcmp oge double %762, 0.000000e+00
  br i1 %763, label %764, label %766

764:                                              ; preds = %757
  %765 = load double, ptr %74, align 8, !tbaa !11
  br label %769

766:                                              ; preds = %757
  %767 = load double, ptr %74, align 8, !tbaa !11
  %768 = fneg double %767
  br label %769

769:                                              ; preds = %766, %764
  %770 = phi double [ %765, %764 ], [ %768, %766 ]
  %771 = load double, ptr %48, align 8, !tbaa !11
  %772 = fcmp ogt double %770, %771
  br i1 %772, label %773, label %882

773:                                              ; preds = %769
  %774 = load double, ptr %74, align 8, !tbaa !11
  %775 = fdiv double 5.000000e-01, %774
  store double %775, ptr %53, align 8, !tbaa !11
  %776 = load double, ptr %53, align 8, !tbaa !11
  %777 = load ptr, ptr %24, align 8, !tbaa !5
  %778 = load i64, ptr %51, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %777, i64 %778
  %780 = load double, ptr %779, align 8, !tbaa !11
  %781 = fmul double %776, %780
  %782 = load ptr, ptr %24, align 8, !tbaa !5
  %783 = load i64, ptr %52, align 8, !tbaa !9
  %784 = getelementptr inbounds double, ptr %782, i64 %783
  %785 = load double, ptr %784, align 8, !tbaa !11
  %786 = fdiv double %781, %785
  %787 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 2
  store double %786, ptr %787, align 16, !tbaa !11
  %788 = load double, ptr %53, align 8, !tbaa !11
  %789 = fneg double %788
  %790 = load ptr, ptr %24, align 8, !tbaa !5
  %791 = load i64, ptr %52, align 8, !tbaa !9
  %792 = getelementptr inbounds double, ptr %790, i64 %791
  %793 = load double, ptr %792, align 8, !tbaa !11
  %794 = fmul double %789, %793
  %795 = load ptr, ptr %24, align 8, !tbaa !5
  %796 = load i64, ptr %51, align 8, !tbaa !9
  %797 = getelementptr inbounds double, ptr %795, i64 %796
  %798 = load double, ptr %797, align 8, !tbaa !11
  %799 = fdiv double %794, %798
  %800 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 3
  store double %799, ptr %800, align 8, !tbaa !11
  %801 = load ptr, ptr %20, align 8, !tbaa !5
  %802 = load ptr, ptr %22, align 8, !tbaa !5
  %803 = load i64, ptr %51, align 8, !tbaa !9
  %804 = load i64, ptr %36, align 8, !tbaa !9
  %805 = mul nsw i64 %803, %804
  %806 = add nsw i64 %805, 1
  %807 = getelementptr inbounds double, ptr %802, i64 %806
  %808 = load ptr, ptr %22, align 8, !tbaa !5
  %809 = load i64, ptr %52, align 8, !tbaa !9
  %810 = load i64, ptr %36, align 8, !tbaa !9
  %811 = mul nsw i64 %809, %810
  %812 = add nsw i64 %811, 1
  %813 = getelementptr inbounds double, ptr %808, i64 %812
  %814 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  %815 = call i32 @f2c_drotm(ptr noundef %801, ptr noundef %807, ptr noundef @c__1, ptr noundef %813, ptr noundef @c__1, ptr noundef %814)
  %816 = load i64, ptr %78, align 8, !tbaa !9
  %817 = icmp ne i64 %816, 0
  br i1 %817, label %818, label %833

818:                                              ; preds = %773
  %819 = load ptr, ptr %27, align 8, !tbaa !5
  %820 = load i64, ptr %51, align 8, !tbaa !9
  %821 = load i64, ptr %38, align 8, !tbaa !9
  %822 = mul nsw i64 %820, %821
  %823 = add nsw i64 %822, 1
  %824 = getelementptr inbounds double, ptr %819, i64 %823
  %825 = load ptr, ptr %27, align 8, !tbaa !5
  %826 = load i64, ptr %52, align 8, !tbaa !9
  %827 = load i64, ptr %38, align 8, !tbaa !9
  %828 = mul nsw i64 %826, %827
  %829 = add nsw i64 %828, 1
  %830 = getelementptr inbounds double, ptr %825, i64 %829
  %831 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  %832 = call i32 @f2c_drotm(ptr noundef %65, ptr noundef %824, ptr noundef @c__1, ptr noundef %830, ptr noundef @c__1, ptr noundef %831)
  br label %833

833:                                              ; preds = %818, %773
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %834 = load double, ptr %53, align 8, !tbaa !11
  %835 = load double, ptr %72, align 8, !tbaa !11
  %836 = fmul double %834, %835
  %837 = load double, ptr %67, align 8, !tbaa !11
  %838 = call double @llvm.fmuladd.f64(double %836, double %837, double 1.000000e+00)
  store double %838, ptr %47, align 8, !tbaa !11
  %839 = load double, ptr %68, align 8, !tbaa !11
  %840 = load double, ptr %46, align 8, !tbaa !11
  %841 = load double, ptr %47, align 8, !tbaa !11
  %842 = fcmp oge double %840, %841
  br i1 %842, label %843, label %845

843:                                              ; preds = %833
  %844 = load double, ptr %46, align 8, !tbaa !11
  br label %847

845:                                              ; preds = %833
  %846 = load double, ptr %47, align 8, !tbaa !11
  br label %847

847:                                              ; preds = %845, %843
  %848 = phi double [ %844, %843 ], [ %846, %845 ]
  %849 = call double @sqrt(double noundef %848) #5
  %850 = fmul double %839, %849
  %851 = load ptr, ptr %25, align 8, !tbaa !5
  %852 = load i64, ptr %52, align 8, !tbaa !9
  %853 = getelementptr inbounds double, ptr %851, i64 %852
  store double %850, ptr %853, align 8, !tbaa !11
  %854 = load double, ptr %53, align 8, !tbaa !11
  %855 = load double, ptr %73, align 8, !tbaa !11
  %856 = fmul double %854, %855
  %857 = load double, ptr %67, align 8, !tbaa !11
  %858 = fneg double %856
  %859 = call double @llvm.fmuladd.f64(double %858, double %857, double 1.000000e+00)
  %860 = call double @sqrt(double noundef %859) #5
  %861 = load double, ptr %66, align 8, !tbaa !11
  %862 = fmul double %861, %860
  store double %862, ptr %66, align 8, !tbaa !11
  %863 = load double, ptr %85, align 8, !tbaa !11
  store double %863, ptr %46, align 8, !tbaa !11
  %864 = load double, ptr %53, align 8, !tbaa !11
  %865 = fcmp oge double %864, 0.000000e+00
  br i1 %865, label %866, label %868

866:                                              ; preds = %847
  %867 = load double, ptr %53, align 8, !tbaa !11
  br label %871

868:                                              ; preds = %847
  %869 = load double, ptr %53, align 8, !tbaa !11
  %870 = fneg double %869
  br label %871

871:                                              ; preds = %868, %866
  %872 = phi double [ %867, %866 ], [ %870, %868 ]
  store double %872, ptr %47, align 8, !tbaa !11
  %873 = load double, ptr %46, align 8, !tbaa !11
  %874 = load double, ptr %47, align 8, !tbaa !11
  %875 = fcmp oge double %873, %874
  br i1 %875, label %876, label %878

876:                                              ; preds = %871
  %877 = load double, ptr %46, align 8, !tbaa !11
  br label %880

878:                                              ; preds = %871
  %879 = load double, ptr %47, align 8, !tbaa !11
  br label %880

880:                                              ; preds = %878, %876
  %881 = phi double [ %877, %876 ], [ %879, %878 ]
  store double %881, ptr %85, align 8, !tbaa !11
  br label %1418

882:                                              ; preds = %769
  %883 = call double @d_sign(ptr noundef @c_b42, ptr noundef %67)
  %884 = fneg double %883
  store double %884, ptr %84, align 8, !tbaa !11
  %885 = load double, ptr %74, align 8, !tbaa !11
  %886 = load double, ptr %84, align 8, !tbaa !11
  %887 = load double, ptr %74, align 8, !tbaa !11
  %888 = load double, ptr %74, align 8, !tbaa !11
  %889 = call double @llvm.fmuladd.f64(double %887, double %888, double 1.000000e+00)
  %890 = call double @sqrt(double noundef %889) #5
  %891 = call double @llvm.fmuladd.f64(double %886, double %890, double %885)
  %892 = fdiv double 1.000000e+00, %891
  store double %892, ptr %53, align 8, !tbaa !11
  %893 = load double, ptr %53, align 8, !tbaa !11
  %894 = load double, ptr %53, align 8, !tbaa !11
  %895 = call double @llvm.fmuladd.f64(double %893, double %894, double 1.000000e+00)
  %896 = fdiv double 1.000000e+00, %895
  %897 = call double @sqrt(double noundef %896) #5
  store double %897, ptr %55, align 8, !tbaa !11
  %898 = load double, ptr %53, align 8, !tbaa !11
  %899 = load double, ptr %55, align 8, !tbaa !11
  %900 = fmul double %898, %899
  store double %900, ptr %56, align 8, !tbaa !11
  %901 = load double, ptr %85, align 8, !tbaa !11
  store double %901, ptr %46, align 8, !tbaa !11
  %902 = load double, ptr %56, align 8, !tbaa !11
  %903 = fcmp oge double %902, 0.000000e+00
  br i1 %903, label %904, label %906

904:                                              ; preds = %882
  %905 = load double, ptr %56, align 8, !tbaa !11
  br label %909

906:                                              ; preds = %882
  %907 = load double, ptr %56, align 8, !tbaa !11
  %908 = fneg double %907
  br label %909

909:                                              ; preds = %906, %904
  %910 = phi double [ %905, %904 ], [ %908, %906 ]
  store double %910, ptr %47, align 8, !tbaa !11
  %911 = load double, ptr %46, align 8, !tbaa !11
  %912 = load double, ptr %47, align 8, !tbaa !11
  %913 = fcmp oge double %911, %912
  br i1 %913, label %914, label %916

914:                                              ; preds = %909
  %915 = load double, ptr %46, align 8, !tbaa !11
  br label %918

916:                                              ; preds = %909
  %917 = load double, ptr %47, align 8, !tbaa !11
  br label %918

918:                                              ; preds = %916, %914
  %919 = phi double [ %915, %914 ], [ %917, %916 ]
  store double %919, ptr %85, align 8, !tbaa !11
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %920 = load double, ptr %53, align 8, !tbaa !11
  %921 = load double, ptr %72, align 8, !tbaa !11
  %922 = fmul double %920, %921
  %923 = load double, ptr %67, align 8, !tbaa !11
  %924 = call double @llvm.fmuladd.f64(double %922, double %923, double 1.000000e+00)
  store double %924, ptr %47, align 8, !tbaa !11
  %925 = load double, ptr %68, align 8, !tbaa !11
  %926 = load double, ptr %46, align 8, !tbaa !11
  %927 = load double, ptr %47, align 8, !tbaa !11
  %928 = fcmp oge double %926, %927
  br i1 %928, label %929, label %931

929:                                              ; preds = %918
  %930 = load double, ptr %46, align 8, !tbaa !11
  br label %933

931:                                              ; preds = %918
  %932 = load double, ptr %47, align 8, !tbaa !11
  br label %933

933:                                              ; preds = %931, %929
  %934 = phi double [ %930, %929 ], [ %932, %931 ]
  %935 = call double @sqrt(double noundef %934) #5
  %936 = fmul double %925, %935
  %937 = load ptr, ptr %25, align 8, !tbaa !5
  %938 = load i64, ptr %52, align 8, !tbaa !9
  %939 = getelementptr inbounds double, ptr %937, i64 %938
  store double %936, ptr %939, align 8, !tbaa !11
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %940 = load double, ptr %53, align 8, !tbaa !11
  %941 = load double, ptr %73, align 8, !tbaa !11
  %942 = fmul double %940, %941
  %943 = load double, ptr %67, align 8, !tbaa !11
  %944 = fneg double %942
  %945 = call double @llvm.fmuladd.f64(double %944, double %943, double 1.000000e+00)
  store double %945, ptr %47, align 8, !tbaa !11
  %946 = load double, ptr %46, align 8, !tbaa !11
  %947 = load double, ptr %47, align 8, !tbaa !11
  %948 = fcmp oge double %946, %947
  br i1 %948, label %949, label %951

949:                                              ; preds = %933
  %950 = load double, ptr %46, align 8, !tbaa !11
  br label %953

951:                                              ; preds = %933
  %952 = load double, ptr %47, align 8, !tbaa !11
  br label %953

953:                                              ; preds = %951, %949
  %954 = phi double [ %950, %949 ], [ %952, %951 ]
  %955 = call double @sqrt(double noundef %954) #5
  %956 = load double, ptr %66, align 8, !tbaa !11
  %957 = fmul double %956, %955
  store double %957, ptr %66, align 8, !tbaa !11
  %958 = load ptr, ptr %24, align 8, !tbaa !5
  %959 = load i64, ptr %51, align 8, !tbaa !9
  %960 = getelementptr inbounds double, ptr %958, i64 %959
  %961 = load double, ptr %960, align 8, !tbaa !11
  %962 = load ptr, ptr %24, align 8, !tbaa !5
  %963 = load i64, ptr %52, align 8, !tbaa !9
  %964 = getelementptr inbounds double, ptr %962, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !11
  %966 = fdiv double %961, %965
  store double %966, ptr %72, align 8, !tbaa !11
  %967 = load ptr, ptr %24, align 8, !tbaa !5
  %968 = load i64, ptr %52, align 8, !tbaa !9
  %969 = getelementptr inbounds double, ptr %967, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !11
  %971 = load ptr, ptr %24, align 8, !tbaa !5
  %972 = load i64, ptr %51, align 8, !tbaa !9
  %973 = getelementptr inbounds double, ptr %971, i64 %972
  %974 = load double, ptr %973, align 8, !tbaa !11
  %975 = fdiv double %970, %974
  store double %975, ptr %73, align 8, !tbaa !11
  %976 = load ptr, ptr %24, align 8, !tbaa !5
  %977 = load i64, ptr %51, align 8, !tbaa !9
  %978 = getelementptr inbounds double, ptr %976, i64 %977
  %979 = load double, ptr %978, align 8, !tbaa !11
  %980 = fcmp oge double %979, 1.000000e+00
  br i1 %980, label %981, label %1132

981:                                              ; preds = %953
  %982 = load ptr, ptr %24, align 8, !tbaa !5
  %983 = load i64, ptr %52, align 8, !tbaa !9
  %984 = getelementptr inbounds double, ptr %982, i64 %983
  %985 = load double, ptr %984, align 8, !tbaa !11
  %986 = fcmp oge double %985, 1.000000e+00
  br i1 %986, label %987, label %1042

987:                                              ; preds = %981
  %988 = load double, ptr %53, align 8, !tbaa !11
  %989 = load double, ptr %72, align 8, !tbaa !11
  %990 = fmul double %988, %989
  %991 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 2
  store double %990, ptr %991, align 16, !tbaa !11
  %992 = load double, ptr %53, align 8, !tbaa !11
  %993 = fneg double %992
  %994 = load double, ptr %73, align 8, !tbaa !11
  %995 = fmul double %993, %994
  %996 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 3
  store double %995, ptr %996, align 8, !tbaa !11
  %997 = load double, ptr %55, align 8, !tbaa !11
  %998 = load ptr, ptr %24, align 8, !tbaa !5
  %999 = load i64, ptr %51, align 8, !tbaa !9
  %1000 = getelementptr inbounds double, ptr %998, i64 %999
  %1001 = load double, ptr %1000, align 8, !tbaa !11
  %1002 = fmul double %1001, %997
  store double %1002, ptr %1000, align 8, !tbaa !11
  %1003 = load double, ptr %55, align 8, !tbaa !11
  %1004 = load ptr, ptr %24, align 8, !tbaa !5
  %1005 = load i64, ptr %52, align 8, !tbaa !9
  %1006 = getelementptr inbounds double, ptr %1004, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !11
  %1008 = fmul double %1007, %1003
  store double %1008, ptr %1006, align 8, !tbaa !11
  %1009 = load ptr, ptr %20, align 8, !tbaa !5
  %1010 = load ptr, ptr %22, align 8, !tbaa !5
  %1011 = load i64, ptr %51, align 8, !tbaa !9
  %1012 = load i64, ptr %36, align 8, !tbaa !9
  %1013 = mul nsw i64 %1011, %1012
  %1014 = add nsw i64 %1013, 1
  %1015 = getelementptr inbounds double, ptr %1010, i64 %1014
  %1016 = load ptr, ptr %22, align 8, !tbaa !5
  %1017 = load i64, ptr %52, align 8, !tbaa !9
  %1018 = load i64, ptr %36, align 8, !tbaa !9
  %1019 = mul nsw i64 %1017, %1018
  %1020 = add nsw i64 %1019, 1
  %1021 = getelementptr inbounds double, ptr %1016, i64 %1020
  %1022 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  %1023 = call i32 @f2c_drotm(ptr noundef %1009, ptr noundef %1015, ptr noundef @c__1, ptr noundef %1021, ptr noundef @c__1, ptr noundef %1022)
  %1024 = load i64, ptr %78, align 8, !tbaa !9
  %1025 = icmp ne i64 %1024, 0
  br i1 %1025, label %1026, label %1041

1026:                                             ; preds = %987
  %1027 = load ptr, ptr %27, align 8, !tbaa !5
  %1028 = load i64, ptr %51, align 8, !tbaa !9
  %1029 = load i64, ptr %38, align 8, !tbaa !9
  %1030 = mul nsw i64 %1028, %1029
  %1031 = add nsw i64 %1030, 1
  %1032 = getelementptr inbounds double, ptr %1027, i64 %1031
  %1033 = load ptr, ptr %27, align 8, !tbaa !5
  %1034 = load i64, ptr %52, align 8, !tbaa !9
  %1035 = load i64, ptr %38, align 8, !tbaa !9
  %1036 = mul nsw i64 %1034, %1035
  %1037 = add nsw i64 %1036, 1
  %1038 = getelementptr inbounds double, ptr %1033, i64 %1037
  %1039 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  %1040 = call i32 @f2c_drotm(ptr noundef %65, ptr noundef %1032, ptr noundef @c__1, ptr noundef %1038, ptr noundef @c__1, ptr noundef %1039)
  br label %1041

1041:                                             ; preds = %1026, %987
  br label %1131

1042:                                             ; preds = %981
  %1043 = load double, ptr %53, align 8, !tbaa !11
  %1044 = fneg double %1043
  %1045 = load double, ptr %73, align 8, !tbaa !11
  %1046 = fmul double %1044, %1045
  store double %1046, ptr %46, align 8, !tbaa !11
  %1047 = load ptr, ptr %20, align 8, !tbaa !5
  %1048 = load ptr, ptr %22, align 8, !tbaa !5
  %1049 = load i64, ptr %52, align 8, !tbaa !9
  %1050 = load i64, ptr %36, align 8, !tbaa !9
  %1051 = mul nsw i64 %1049, %1050
  %1052 = add nsw i64 %1051, 1
  %1053 = getelementptr inbounds double, ptr %1048, i64 %1052
  %1054 = load ptr, ptr %22, align 8, !tbaa !5
  %1055 = load i64, ptr %51, align 8, !tbaa !9
  %1056 = load i64, ptr %36, align 8, !tbaa !9
  %1057 = mul nsw i64 %1055, %1056
  %1058 = add nsw i64 %1057, 1
  %1059 = getelementptr inbounds double, ptr %1054, i64 %1058
  %1060 = call i32 @f2c_daxpy(ptr noundef %1047, ptr noundef %46, ptr noundef %1053, ptr noundef @c__1, ptr noundef %1059, ptr noundef @c__1)
  %1061 = load double, ptr %55, align 8, !tbaa !11
  %1062 = load double, ptr %56, align 8, !tbaa !11
  %1063 = fmul double %1061, %1062
  %1064 = load double, ptr %72, align 8, !tbaa !11
  %1065 = fmul double %1063, %1064
  store double %1065, ptr %46, align 8, !tbaa !11
  %1066 = load ptr, ptr %20, align 8, !tbaa !5
  %1067 = load ptr, ptr %22, align 8, !tbaa !5
  %1068 = load i64, ptr %51, align 8, !tbaa !9
  %1069 = load i64, ptr %36, align 8, !tbaa !9
  %1070 = mul nsw i64 %1068, %1069
  %1071 = add nsw i64 %1070, 1
  %1072 = getelementptr inbounds double, ptr %1067, i64 %1071
  %1073 = load ptr, ptr %22, align 8, !tbaa !5
  %1074 = load i64, ptr %52, align 8, !tbaa !9
  %1075 = load i64, ptr %36, align 8, !tbaa !9
  %1076 = mul nsw i64 %1074, %1075
  %1077 = add nsw i64 %1076, 1
  %1078 = getelementptr inbounds double, ptr %1073, i64 %1077
  %1079 = call i32 @f2c_daxpy(ptr noundef %1066, ptr noundef %46, ptr noundef %1072, ptr noundef @c__1, ptr noundef %1078, ptr noundef @c__1)
  %1080 = load double, ptr %55, align 8, !tbaa !11
  %1081 = load ptr, ptr %24, align 8, !tbaa !5
  %1082 = load i64, ptr %51, align 8, !tbaa !9
  %1083 = getelementptr inbounds double, ptr %1081, i64 %1082
  %1084 = load double, ptr %1083, align 8, !tbaa !11
  %1085 = fmul double %1084, %1080
  store double %1085, ptr %1083, align 8, !tbaa !11
  %1086 = load double, ptr %55, align 8, !tbaa !11
  %1087 = load ptr, ptr %24, align 8, !tbaa !5
  %1088 = load i64, ptr %52, align 8, !tbaa !9
  %1089 = getelementptr inbounds double, ptr %1087, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !11
  %1091 = fdiv double %1090, %1086
  store double %1091, ptr %1089, align 8, !tbaa !11
  %1092 = load i64, ptr %78, align 8, !tbaa !9
  %1093 = icmp ne i64 %1092, 0
  br i1 %1093, label %1094, label %1130

1094:                                             ; preds = %1042
  %1095 = load double, ptr %53, align 8, !tbaa !11
  %1096 = fneg double %1095
  %1097 = load double, ptr %73, align 8, !tbaa !11
  %1098 = fmul double %1096, %1097
  store double %1098, ptr %46, align 8, !tbaa !11
  %1099 = load ptr, ptr %27, align 8, !tbaa !5
  %1100 = load i64, ptr %52, align 8, !tbaa !9
  %1101 = load i64, ptr %38, align 8, !tbaa !9
  %1102 = mul nsw i64 %1100, %1101
  %1103 = add nsw i64 %1102, 1
  %1104 = getelementptr inbounds double, ptr %1099, i64 %1103
  %1105 = load ptr, ptr %27, align 8, !tbaa !5
  %1106 = load i64, ptr %51, align 8, !tbaa !9
  %1107 = load i64, ptr %38, align 8, !tbaa !9
  %1108 = mul nsw i64 %1106, %1107
  %1109 = add nsw i64 %1108, 1
  %1110 = getelementptr inbounds double, ptr %1105, i64 %1109
  %1111 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %1104, ptr noundef @c__1, ptr noundef %1110, ptr noundef @c__1)
  %1112 = load double, ptr %55, align 8, !tbaa !11
  %1113 = load double, ptr %56, align 8, !tbaa !11
  %1114 = fmul double %1112, %1113
  %1115 = load double, ptr %72, align 8, !tbaa !11
  %1116 = fmul double %1114, %1115
  store double %1116, ptr %46, align 8, !tbaa !11
  %1117 = load ptr, ptr %27, align 8, !tbaa !5
  %1118 = load i64, ptr %51, align 8, !tbaa !9
  %1119 = load i64, ptr %38, align 8, !tbaa !9
  %1120 = mul nsw i64 %1118, %1119
  %1121 = add nsw i64 %1120, 1
  %1122 = getelementptr inbounds double, ptr %1117, i64 %1121
  %1123 = load ptr, ptr %27, align 8, !tbaa !5
  %1124 = load i64, ptr %52, align 8, !tbaa !9
  %1125 = load i64, ptr %38, align 8, !tbaa !9
  %1126 = mul nsw i64 %1124, %1125
  %1127 = add nsw i64 %1126, 1
  %1128 = getelementptr inbounds double, ptr %1123, i64 %1127
  %1129 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %1122, ptr noundef @c__1, ptr noundef %1128, ptr noundef @c__1)
  br label %1130

1130:                                             ; preds = %1094, %1042
  br label %1131

1131:                                             ; preds = %1130, %1041
  br label %1417

1132:                                             ; preds = %953
  %1133 = load ptr, ptr %24, align 8, !tbaa !5
  %1134 = load i64, ptr %52, align 8, !tbaa !9
  %1135 = getelementptr inbounds double, ptr %1133, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !11
  %1137 = fcmp oge double %1136, 1.000000e+00
  br i1 %1137, label %1138, label %1227

1138:                                             ; preds = %1132
  %1139 = load double, ptr %53, align 8, !tbaa !11
  %1140 = load double, ptr %72, align 8, !tbaa !11
  %1141 = fmul double %1139, %1140
  store double %1141, ptr %46, align 8, !tbaa !11
  %1142 = load ptr, ptr %20, align 8, !tbaa !5
  %1143 = load ptr, ptr %22, align 8, !tbaa !5
  %1144 = load i64, ptr %51, align 8, !tbaa !9
  %1145 = load i64, ptr %36, align 8, !tbaa !9
  %1146 = mul nsw i64 %1144, %1145
  %1147 = add nsw i64 %1146, 1
  %1148 = getelementptr inbounds double, ptr %1143, i64 %1147
  %1149 = load ptr, ptr %22, align 8, !tbaa !5
  %1150 = load i64, ptr %52, align 8, !tbaa !9
  %1151 = load i64, ptr %36, align 8, !tbaa !9
  %1152 = mul nsw i64 %1150, %1151
  %1153 = add nsw i64 %1152, 1
  %1154 = getelementptr inbounds double, ptr %1149, i64 %1153
  %1155 = call i32 @f2c_daxpy(ptr noundef %1142, ptr noundef %46, ptr noundef %1148, ptr noundef @c__1, ptr noundef %1154, ptr noundef @c__1)
  %1156 = load double, ptr %55, align 8, !tbaa !11
  %1157 = fneg double %1156
  %1158 = load double, ptr %56, align 8, !tbaa !11
  %1159 = fmul double %1157, %1158
  %1160 = load double, ptr %73, align 8, !tbaa !11
  %1161 = fmul double %1159, %1160
  store double %1161, ptr %46, align 8, !tbaa !11
  %1162 = load ptr, ptr %20, align 8, !tbaa !5
  %1163 = load ptr, ptr %22, align 8, !tbaa !5
  %1164 = load i64, ptr %52, align 8, !tbaa !9
  %1165 = load i64, ptr %36, align 8, !tbaa !9
  %1166 = mul nsw i64 %1164, %1165
  %1167 = add nsw i64 %1166, 1
  %1168 = getelementptr inbounds double, ptr %1163, i64 %1167
  %1169 = load ptr, ptr %22, align 8, !tbaa !5
  %1170 = load i64, ptr %51, align 8, !tbaa !9
  %1171 = load i64, ptr %36, align 8, !tbaa !9
  %1172 = mul nsw i64 %1170, %1171
  %1173 = add nsw i64 %1172, 1
  %1174 = getelementptr inbounds double, ptr %1169, i64 %1173
  %1175 = call i32 @f2c_daxpy(ptr noundef %1162, ptr noundef %46, ptr noundef %1168, ptr noundef @c__1, ptr noundef %1174, ptr noundef @c__1)
  %1176 = load double, ptr %55, align 8, !tbaa !11
  %1177 = load ptr, ptr %24, align 8, !tbaa !5
  %1178 = load i64, ptr %51, align 8, !tbaa !9
  %1179 = getelementptr inbounds double, ptr %1177, i64 %1178
  %1180 = load double, ptr %1179, align 8, !tbaa !11
  %1181 = fdiv double %1180, %1176
  store double %1181, ptr %1179, align 8, !tbaa !11
  %1182 = load double, ptr %55, align 8, !tbaa !11
  %1183 = load ptr, ptr %24, align 8, !tbaa !5
  %1184 = load i64, ptr %52, align 8, !tbaa !9
  %1185 = getelementptr inbounds double, ptr %1183, i64 %1184
  %1186 = load double, ptr %1185, align 8, !tbaa !11
  %1187 = fmul double %1186, %1182
  store double %1187, ptr %1185, align 8, !tbaa !11
  %1188 = load i64, ptr %78, align 8, !tbaa !9
  %1189 = icmp ne i64 %1188, 0
  br i1 %1189, label %1190, label %1226

1190:                                             ; preds = %1138
  %1191 = load double, ptr %53, align 8, !tbaa !11
  %1192 = load double, ptr %72, align 8, !tbaa !11
  %1193 = fmul double %1191, %1192
  store double %1193, ptr %46, align 8, !tbaa !11
  %1194 = load ptr, ptr %27, align 8, !tbaa !5
  %1195 = load i64, ptr %51, align 8, !tbaa !9
  %1196 = load i64, ptr %38, align 8, !tbaa !9
  %1197 = mul nsw i64 %1195, %1196
  %1198 = add nsw i64 %1197, 1
  %1199 = getelementptr inbounds double, ptr %1194, i64 %1198
  %1200 = load ptr, ptr %27, align 8, !tbaa !5
  %1201 = load i64, ptr %52, align 8, !tbaa !9
  %1202 = load i64, ptr %38, align 8, !tbaa !9
  %1203 = mul nsw i64 %1201, %1202
  %1204 = add nsw i64 %1203, 1
  %1205 = getelementptr inbounds double, ptr %1200, i64 %1204
  %1206 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %1199, ptr noundef @c__1, ptr noundef %1205, ptr noundef @c__1)
  %1207 = load double, ptr %55, align 8, !tbaa !11
  %1208 = fneg double %1207
  %1209 = load double, ptr %56, align 8, !tbaa !11
  %1210 = fmul double %1208, %1209
  %1211 = load double, ptr %73, align 8, !tbaa !11
  %1212 = fmul double %1210, %1211
  store double %1212, ptr %46, align 8, !tbaa !11
  %1213 = load ptr, ptr %27, align 8, !tbaa !5
  %1214 = load i64, ptr %52, align 8, !tbaa !9
  %1215 = load i64, ptr %38, align 8, !tbaa !9
  %1216 = mul nsw i64 %1214, %1215
  %1217 = add nsw i64 %1216, 1
  %1218 = getelementptr inbounds double, ptr %1213, i64 %1217
  %1219 = load ptr, ptr %27, align 8, !tbaa !5
  %1220 = load i64, ptr %51, align 8, !tbaa !9
  %1221 = load i64, ptr %38, align 8, !tbaa !9
  %1222 = mul nsw i64 %1220, %1221
  %1223 = add nsw i64 %1222, 1
  %1224 = getelementptr inbounds double, ptr %1219, i64 %1223
  %1225 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %1218, ptr noundef @c__1, ptr noundef %1224, ptr noundef @c__1)
  br label %1226

1226:                                             ; preds = %1190, %1138
  br label %1416

1227:                                             ; preds = %1132
  %1228 = load ptr, ptr %24, align 8, !tbaa !5
  %1229 = load i64, ptr %51, align 8, !tbaa !9
  %1230 = getelementptr inbounds double, ptr %1228, i64 %1229
  %1231 = load double, ptr %1230, align 8, !tbaa !11
  %1232 = load ptr, ptr %24, align 8, !tbaa !5
  %1233 = load i64, ptr %52, align 8, !tbaa !9
  %1234 = getelementptr inbounds double, ptr %1232, i64 %1233
  %1235 = load double, ptr %1234, align 8, !tbaa !11
  %1236 = fcmp oge double %1231, %1235
  br i1 %1236, label %1237, label %1326

1237:                                             ; preds = %1227
  %1238 = load double, ptr %53, align 8, !tbaa !11
  %1239 = fneg double %1238
  %1240 = load double, ptr %73, align 8, !tbaa !11
  %1241 = fmul double %1239, %1240
  store double %1241, ptr %46, align 8, !tbaa !11
  %1242 = load ptr, ptr %20, align 8, !tbaa !5
  %1243 = load ptr, ptr %22, align 8, !tbaa !5
  %1244 = load i64, ptr %52, align 8, !tbaa !9
  %1245 = load i64, ptr %36, align 8, !tbaa !9
  %1246 = mul nsw i64 %1244, %1245
  %1247 = add nsw i64 %1246, 1
  %1248 = getelementptr inbounds double, ptr %1243, i64 %1247
  %1249 = load ptr, ptr %22, align 8, !tbaa !5
  %1250 = load i64, ptr %51, align 8, !tbaa !9
  %1251 = load i64, ptr %36, align 8, !tbaa !9
  %1252 = mul nsw i64 %1250, %1251
  %1253 = add nsw i64 %1252, 1
  %1254 = getelementptr inbounds double, ptr %1249, i64 %1253
  %1255 = call i32 @f2c_daxpy(ptr noundef %1242, ptr noundef %46, ptr noundef %1248, ptr noundef @c__1, ptr noundef %1254, ptr noundef @c__1)
  %1256 = load double, ptr %55, align 8, !tbaa !11
  %1257 = load double, ptr %56, align 8, !tbaa !11
  %1258 = fmul double %1256, %1257
  %1259 = load double, ptr %72, align 8, !tbaa !11
  %1260 = fmul double %1258, %1259
  store double %1260, ptr %46, align 8, !tbaa !11
  %1261 = load ptr, ptr %20, align 8, !tbaa !5
  %1262 = load ptr, ptr %22, align 8, !tbaa !5
  %1263 = load i64, ptr %51, align 8, !tbaa !9
  %1264 = load i64, ptr %36, align 8, !tbaa !9
  %1265 = mul nsw i64 %1263, %1264
  %1266 = add nsw i64 %1265, 1
  %1267 = getelementptr inbounds double, ptr %1262, i64 %1266
  %1268 = load ptr, ptr %22, align 8, !tbaa !5
  %1269 = load i64, ptr %52, align 8, !tbaa !9
  %1270 = load i64, ptr %36, align 8, !tbaa !9
  %1271 = mul nsw i64 %1269, %1270
  %1272 = add nsw i64 %1271, 1
  %1273 = getelementptr inbounds double, ptr %1268, i64 %1272
  %1274 = call i32 @f2c_daxpy(ptr noundef %1261, ptr noundef %46, ptr noundef %1267, ptr noundef @c__1, ptr noundef %1273, ptr noundef @c__1)
  %1275 = load double, ptr %55, align 8, !tbaa !11
  %1276 = load ptr, ptr %24, align 8, !tbaa !5
  %1277 = load i64, ptr %51, align 8, !tbaa !9
  %1278 = getelementptr inbounds double, ptr %1276, i64 %1277
  %1279 = load double, ptr %1278, align 8, !tbaa !11
  %1280 = fmul double %1279, %1275
  store double %1280, ptr %1278, align 8, !tbaa !11
  %1281 = load double, ptr %55, align 8, !tbaa !11
  %1282 = load ptr, ptr %24, align 8, !tbaa !5
  %1283 = load i64, ptr %52, align 8, !tbaa !9
  %1284 = getelementptr inbounds double, ptr %1282, i64 %1283
  %1285 = load double, ptr %1284, align 8, !tbaa !11
  %1286 = fdiv double %1285, %1281
  store double %1286, ptr %1284, align 8, !tbaa !11
  %1287 = load i64, ptr %78, align 8, !tbaa !9
  %1288 = icmp ne i64 %1287, 0
  br i1 %1288, label %1289, label %1325

1289:                                             ; preds = %1237
  %1290 = load double, ptr %53, align 8, !tbaa !11
  %1291 = fneg double %1290
  %1292 = load double, ptr %73, align 8, !tbaa !11
  %1293 = fmul double %1291, %1292
  store double %1293, ptr %46, align 8, !tbaa !11
  %1294 = load ptr, ptr %27, align 8, !tbaa !5
  %1295 = load i64, ptr %52, align 8, !tbaa !9
  %1296 = load i64, ptr %38, align 8, !tbaa !9
  %1297 = mul nsw i64 %1295, %1296
  %1298 = add nsw i64 %1297, 1
  %1299 = getelementptr inbounds double, ptr %1294, i64 %1298
  %1300 = load ptr, ptr %27, align 8, !tbaa !5
  %1301 = load i64, ptr %51, align 8, !tbaa !9
  %1302 = load i64, ptr %38, align 8, !tbaa !9
  %1303 = mul nsw i64 %1301, %1302
  %1304 = add nsw i64 %1303, 1
  %1305 = getelementptr inbounds double, ptr %1300, i64 %1304
  %1306 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %1299, ptr noundef @c__1, ptr noundef %1305, ptr noundef @c__1)
  %1307 = load double, ptr %55, align 8, !tbaa !11
  %1308 = load double, ptr %56, align 8, !tbaa !11
  %1309 = fmul double %1307, %1308
  %1310 = load double, ptr %72, align 8, !tbaa !11
  %1311 = fmul double %1309, %1310
  store double %1311, ptr %46, align 8, !tbaa !11
  %1312 = load ptr, ptr %27, align 8, !tbaa !5
  %1313 = load i64, ptr %51, align 8, !tbaa !9
  %1314 = load i64, ptr %38, align 8, !tbaa !9
  %1315 = mul nsw i64 %1313, %1314
  %1316 = add nsw i64 %1315, 1
  %1317 = getelementptr inbounds double, ptr %1312, i64 %1316
  %1318 = load ptr, ptr %27, align 8, !tbaa !5
  %1319 = load i64, ptr %52, align 8, !tbaa !9
  %1320 = load i64, ptr %38, align 8, !tbaa !9
  %1321 = mul nsw i64 %1319, %1320
  %1322 = add nsw i64 %1321, 1
  %1323 = getelementptr inbounds double, ptr %1318, i64 %1322
  %1324 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %1317, ptr noundef @c__1, ptr noundef %1323, ptr noundef @c__1)
  br label %1325

1325:                                             ; preds = %1289, %1237
  br label %1415

1326:                                             ; preds = %1227
  %1327 = load double, ptr %53, align 8, !tbaa !11
  %1328 = load double, ptr %72, align 8, !tbaa !11
  %1329 = fmul double %1327, %1328
  store double %1329, ptr %46, align 8, !tbaa !11
  %1330 = load ptr, ptr %20, align 8, !tbaa !5
  %1331 = load ptr, ptr %22, align 8, !tbaa !5
  %1332 = load i64, ptr %51, align 8, !tbaa !9
  %1333 = load i64, ptr %36, align 8, !tbaa !9
  %1334 = mul nsw i64 %1332, %1333
  %1335 = add nsw i64 %1334, 1
  %1336 = getelementptr inbounds double, ptr %1331, i64 %1335
  %1337 = load ptr, ptr %22, align 8, !tbaa !5
  %1338 = load i64, ptr %52, align 8, !tbaa !9
  %1339 = load i64, ptr %36, align 8, !tbaa !9
  %1340 = mul nsw i64 %1338, %1339
  %1341 = add nsw i64 %1340, 1
  %1342 = getelementptr inbounds double, ptr %1337, i64 %1341
  %1343 = call i32 @f2c_daxpy(ptr noundef %1330, ptr noundef %46, ptr noundef %1336, ptr noundef @c__1, ptr noundef %1342, ptr noundef @c__1)
  %1344 = load double, ptr %55, align 8, !tbaa !11
  %1345 = fneg double %1344
  %1346 = load double, ptr %56, align 8, !tbaa !11
  %1347 = fmul double %1345, %1346
  %1348 = load double, ptr %73, align 8, !tbaa !11
  %1349 = fmul double %1347, %1348
  store double %1349, ptr %46, align 8, !tbaa !11
  %1350 = load ptr, ptr %20, align 8, !tbaa !5
  %1351 = load ptr, ptr %22, align 8, !tbaa !5
  %1352 = load i64, ptr %52, align 8, !tbaa !9
  %1353 = load i64, ptr %36, align 8, !tbaa !9
  %1354 = mul nsw i64 %1352, %1353
  %1355 = add nsw i64 %1354, 1
  %1356 = getelementptr inbounds double, ptr %1351, i64 %1355
  %1357 = load ptr, ptr %22, align 8, !tbaa !5
  %1358 = load i64, ptr %51, align 8, !tbaa !9
  %1359 = load i64, ptr %36, align 8, !tbaa !9
  %1360 = mul nsw i64 %1358, %1359
  %1361 = add nsw i64 %1360, 1
  %1362 = getelementptr inbounds double, ptr %1357, i64 %1361
  %1363 = call i32 @f2c_daxpy(ptr noundef %1350, ptr noundef %46, ptr noundef %1356, ptr noundef @c__1, ptr noundef %1362, ptr noundef @c__1)
  %1364 = load double, ptr %55, align 8, !tbaa !11
  %1365 = load ptr, ptr %24, align 8, !tbaa !5
  %1366 = load i64, ptr %51, align 8, !tbaa !9
  %1367 = getelementptr inbounds double, ptr %1365, i64 %1366
  %1368 = load double, ptr %1367, align 8, !tbaa !11
  %1369 = fdiv double %1368, %1364
  store double %1369, ptr %1367, align 8, !tbaa !11
  %1370 = load double, ptr %55, align 8, !tbaa !11
  %1371 = load ptr, ptr %24, align 8, !tbaa !5
  %1372 = load i64, ptr %52, align 8, !tbaa !9
  %1373 = getelementptr inbounds double, ptr %1371, i64 %1372
  %1374 = load double, ptr %1373, align 8, !tbaa !11
  %1375 = fmul double %1374, %1370
  store double %1375, ptr %1373, align 8, !tbaa !11
  %1376 = load i64, ptr %78, align 8, !tbaa !9
  %1377 = icmp ne i64 %1376, 0
  br i1 %1377, label %1378, label %1414

1378:                                             ; preds = %1326
  %1379 = load double, ptr %53, align 8, !tbaa !11
  %1380 = load double, ptr %72, align 8, !tbaa !11
  %1381 = fmul double %1379, %1380
  store double %1381, ptr %46, align 8, !tbaa !11
  %1382 = load ptr, ptr %27, align 8, !tbaa !5
  %1383 = load i64, ptr %51, align 8, !tbaa !9
  %1384 = load i64, ptr %38, align 8, !tbaa !9
  %1385 = mul nsw i64 %1383, %1384
  %1386 = add nsw i64 %1385, 1
  %1387 = getelementptr inbounds double, ptr %1382, i64 %1386
  %1388 = load ptr, ptr %27, align 8, !tbaa !5
  %1389 = load i64, ptr %52, align 8, !tbaa !9
  %1390 = load i64, ptr %38, align 8, !tbaa !9
  %1391 = mul nsw i64 %1389, %1390
  %1392 = add nsw i64 %1391, 1
  %1393 = getelementptr inbounds double, ptr %1388, i64 %1392
  %1394 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %1387, ptr noundef @c__1, ptr noundef %1393, ptr noundef @c__1)
  %1395 = load double, ptr %55, align 8, !tbaa !11
  %1396 = fneg double %1395
  %1397 = load double, ptr %56, align 8, !tbaa !11
  %1398 = fmul double %1396, %1397
  %1399 = load double, ptr %73, align 8, !tbaa !11
  %1400 = fmul double %1398, %1399
  store double %1400, ptr %46, align 8, !tbaa !11
  %1401 = load ptr, ptr %27, align 8, !tbaa !5
  %1402 = load i64, ptr %52, align 8, !tbaa !9
  %1403 = load i64, ptr %38, align 8, !tbaa !9
  %1404 = mul nsw i64 %1402, %1403
  %1405 = add nsw i64 %1404, 1
  %1406 = getelementptr inbounds double, ptr %1401, i64 %1405
  %1407 = load ptr, ptr %27, align 8, !tbaa !5
  %1408 = load i64, ptr %51, align 8, !tbaa !9
  %1409 = load i64, ptr %38, align 8, !tbaa !9
  %1410 = mul nsw i64 %1408, %1409
  %1411 = add nsw i64 %1410, 1
  %1412 = getelementptr inbounds double, ptr %1407, i64 %1411
  %1413 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %1406, ptr noundef @c__1, ptr noundef %1412, ptr noundef @c__1)
  br label %1414

1414:                                             ; preds = %1378, %1326
  br label %1415

1415:                                             ; preds = %1414, %1325
  br label %1416

1416:                                             ; preds = %1415, %1226
  br label %1417

1417:                                             ; preds = %1416, %1131
  br label %1418

1418:                                             ; preds = %1417, %880
  br label %1505

1419:                                             ; preds = %737
  %1420 = load ptr, ptr %20, align 8, !tbaa !5
  %1421 = load ptr, ptr %22, align 8, !tbaa !5
  %1422 = load i64, ptr %51, align 8, !tbaa !9
  %1423 = load i64, ptr %36, align 8, !tbaa !9
  %1424 = mul nsw i64 %1422, %1423
  %1425 = add nsw i64 %1424, 1
  %1426 = getelementptr inbounds double, ptr %1421, i64 %1425
  %1427 = load ptr, ptr %33, align 8, !tbaa !5
  %1428 = getelementptr inbounds double, ptr %1427, i64 1
  %1429 = call i32 @f2c_dcopy(ptr noundef %1420, ptr noundef %1426, ptr noundef @c__1, ptr noundef %1428, ptr noundef @c__1)
  %1430 = load ptr, ptr %20, align 8, !tbaa !5
  %1431 = load ptr, ptr %33, align 8, !tbaa !5
  %1432 = getelementptr inbounds double, ptr %1431, i64 1
  %1433 = load ptr, ptr %23, align 8, !tbaa !5
  %1434 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef @c_b42, ptr noundef %1430, ptr noundef @c__1, ptr noundef %1432, ptr noundef %1433, ptr noundef %69)
  %1435 = load ptr, ptr %20, align 8, !tbaa !5
  %1436 = load ptr, ptr %22, align 8, !tbaa !5
  %1437 = load i64, ptr %52, align 8, !tbaa !9
  %1438 = load i64, ptr %36, align 8, !tbaa !9
  %1439 = mul nsw i64 %1437, %1438
  %1440 = add nsw i64 %1439, 1
  %1441 = getelementptr inbounds double, ptr %1436, i64 %1440
  %1442 = load ptr, ptr %23, align 8, !tbaa !5
  %1443 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef @c_b42, ptr noundef %1435, ptr noundef @c__1, ptr noundef %1441, ptr noundef %1442, ptr noundef %69)
  %1444 = load double, ptr %67, align 8, !tbaa !11
  %1445 = fneg double %1444
  %1446 = load ptr, ptr %24, align 8, !tbaa !5
  %1447 = load i64, ptr %51, align 8, !tbaa !9
  %1448 = getelementptr inbounds double, ptr %1446, i64 %1447
  %1449 = load double, ptr %1448, align 8, !tbaa !11
  %1450 = fmul double %1445, %1449
  %1451 = load ptr, ptr %24, align 8, !tbaa !5
  %1452 = load i64, ptr %52, align 8, !tbaa !9
  %1453 = getelementptr inbounds double, ptr %1451, i64 %1452
  %1454 = load double, ptr %1453, align 8, !tbaa !11
  %1455 = fdiv double %1450, %1454
  store double %1455, ptr %71, align 8, !tbaa !11
  %1456 = load ptr, ptr %20, align 8, !tbaa !5
  %1457 = load ptr, ptr %33, align 8, !tbaa !5
  %1458 = getelementptr inbounds double, ptr %1457, i64 1
  %1459 = load ptr, ptr %22, align 8, !tbaa !5
  %1460 = load i64, ptr %52, align 8, !tbaa !9
  %1461 = load i64, ptr %36, align 8, !tbaa !9
  %1462 = mul nsw i64 %1460, %1461
  %1463 = add nsw i64 %1462, 1
  %1464 = getelementptr inbounds double, ptr %1459, i64 %1463
  %1465 = call i32 @f2c_daxpy(ptr noundef %1456, ptr noundef %71, ptr noundef %1458, ptr noundef @c__1, ptr noundef %1464, ptr noundef @c__1)
  %1466 = load ptr, ptr %20, align 8, !tbaa !5
  %1467 = load ptr, ptr %22, align 8, !tbaa !5
  %1468 = load i64, ptr %52, align 8, !tbaa !9
  %1469 = load i64, ptr %36, align 8, !tbaa !9
  %1470 = mul nsw i64 %1468, %1469
  %1471 = add nsw i64 %1470, 1
  %1472 = getelementptr inbounds double, ptr %1467, i64 %1471
  %1473 = load ptr, ptr %23, align 8, !tbaa !5
  %1474 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b42, ptr noundef %68, ptr noundef %1466, ptr noundef @c__1, ptr noundef %1472, ptr noundef %1473, ptr noundef %69)
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %1475 = load double, ptr %67, align 8, !tbaa !11
  %1476 = load double, ptr %67, align 8, !tbaa !11
  %1477 = fneg double %1475
  %1478 = call double @llvm.fmuladd.f64(double %1477, double %1476, double 1.000000e+00)
  store double %1478, ptr %47, align 8, !tbaa !11
  %1479 = load double, ptr %68, align 8, !tbaa !11
  %1480 = load double, ptr %46, align 8, !tbaa !11
  %1481 = load double, ptr %47, align 8, !tbaa !11
  %1482 = fcmp oge double %1480, %1481
  br i1 %1482, label %1483, label %1485

1483:                                             ; preds = %1419
  %1484 = load double, ptr %46, align 8, !tbaa !11
  br label %1487

1485:                                             ; preds = %1419
  %1486 = load double, ptr %47, align 8, !tbaa !11
  br label %1487

1487:                                             ; preds = %1485, %1483
  %1488 = phi double [ %1484, %1483 ], [ %1486, %1485 ]
  %1489 = call double @sqrt(double noundef %1488) #5
  %1490 = fmul double %1479, %1489
  %1491 = load ptr, ptr %25, align 8, !tbaa !5
  %1492 = load i64, ptr %52, align 8, !tbaa !9
  %1493 = getelementptr inbounds double, ptr %1491, i64 %1492
  store double %1490, ptr %1493, align 8, !tbaa !11
  %1494 = load double, ptr %85, align 8, !tbaa !11
  %1495 = load ptr, ptr %30, align 8, !tbaa !5
  %1496 = load double, ptr %1495, align 8, !tbaa !11
  %1497 = fcmp oge double %1494, %1496
  br i1 %1497, label %1498, label %1500

1498:                                             ; preds = %1487
  %1499 = load double, ptr %85, align 8, !tbaa !11
  br label %1503

1500:                                             ; preds = %1487
  %1501 = load ptr, ptr %30, align 8, !tbaa !5
  %1502 = load double, ptr %1501, align 8, !tbaa !11
  br label %1503

1503:                                             ; preds = %1500, %1498
  %1504 = phi double [ %1499, %1498 ], [ %1502, %1500 ]
  store double %1504, ptr %85, align 8, !tbaa !11
  br label %1505

1505:                                             ; preds = %1503, %1418
  %1506 = load ptr, ptr %25, align 8, !tbaa !5
  %1507 = load i64, ptr %52, align 8, !tbaa !9
  %1508 = getelementptr inbounds double, ptr %1506, i64 %1507
  %1509 = load double, ptr %1508, align 8, !tbaa !11
  %1510 = load double, ptr %68, align 8, !tbaa !11
  %1511 = fdiv double %1509, %1510
  store double %1511, ptr %46, align 8, !tbaa !11
  %1512 = load double, ptr %46, align 8, !tbaa !11
  %1513 = load double, ptr %46, align 8, !tbaa !11
  %1514 = fmul double %1512, %1513
  %1515 = load double, ptr %91, align 8, !tbaa !11
  %1516 = fcmp ole double %1514, %1515
  br i1 %1516, label %1517, label %1564

1517:                                             ; preds = %1505
  %1518 = load double, ptr %68, align 8, !tbaa !11
  %1519 = load double, ptr %90, align 8, !tbaa !11
  %1520 = fcmp olt double %1518, %1519
  br i1 %1520, label %1521, label %1542

1521:                                             ; preds = %1517
  %1522 = load double, ptr %68, align 8, !tbaa !11
  %1523 = load double, ptr %54, align 8, !tbaa !11
  %1524 = fcmp ogt double %1522, %1523
  br i1 %1524, label %1525, label %1542

1525:                                             ; preds = %1521
  %1526 = load ptr, ptr %20, align 8, !tbaa !5
  %1527 = load ptr, ptr %22, align 8, !tbaa !5
  %1528 = load i64, ptr %52, align 8, !tbaa !9
  %1529 = load i64, ptr %36, align 8, !tbaa !9
  %1530 = mul nsw i64 %1528, %1529
  %1531 = add nsw i64 %1530, 1
  %1532 = getelementptr inbounds double, ptr %1527, i64 %1531
  %1533 = call double @f2c_dnrm2(ptr noundef %1526, ptr noundef %1532, ptr noundef @c__1)
  %1534 = load ptr, ptr %24, align 8, !tbaa !5
  %1535 = load i64, ptr %52, align 8, !tbaa !9
  %1536 = getelementptr inbounds double, ptr %1534, i64 %1535
  %1537 = load double, ptr %1536, align 8, !tbaa !11
  %1538 = fmul double %1533, %1537
  %1539 = load ptr, ptr %25, align 8, !tbaa !5
  %1540 = load i64, ptr %52, align 8, !tbaa !9
  %1541 = getelementptr inbounds double, ptr %1539, i64 %1540
  store double %1538, ptr %1541, align 8, !tbaa !11
  br label %1563

1542:                                             ; preds = %1521, %1517
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  store double 0.000000e+00, ptr %68, align 8, !tbaa !11
  %1543 = load ptr, ptr %20, align 8, !tbaa !5
  %1544 = load ptr, ptr %22, align 8, !tbaa !5
  %1545 = load i64, ptr %52, align 8, !tbaa !9
  %1546 = load i64, ptr %36, align 8, !tbaa !9
  %1547 = mul nsw i64 %1545, %1546
  %1548 = add nsw i64 %1547, 1
  %1549 = getelementptr inbounds double, ptr %1544, i64 %1548
  %1550 = call i32 @dlassq_(ptr noundef %1543, ptr noundef %1549, ptr noundef @c__1, ptr noundef %53, ptr noundef %68)
  %1551 = load double, ptr %53, align 8, !tbaa !11
  %1552 = load double, ptr %68, align 8, !tbaa !11
  %1553 = call double @sqrt(double noundef %1552) #5
  %1554 = fmul double %1551, %1553
  %1555 = load ptr, ptr %24, align 8, !tbaa !5
  %1556 = load i64, ptr %52, align 8, !tbaa !9
  %1557 = getelementptr inbounds double, ptr %1555, i64 %1556
  %1558 = load double, ptr %1557, align 8, !tbaa !11
  %1559 = fmul double %1554, %1558
  %1560 = load ptr, ptr %25, align 8, !tbaa !5
  %1561 = load i64, ptr %52, align 8, !tbaa !9
  %1562 = getelementptr inbounds double, ptr %1560, i64 %1561
  store double %1559, ptr %1562, align 8, !tbaa !11
  br label %1563

1563:                                             ; preds = %1542, %1525
  br label %1564

1564:                                             ; preds = %1563, %1505
  %1565 = load double, ptr %66, align 8, !tbaa !11
  %1566 = load double, ptr %70, align 8, !tbaa !11
  %1567 = fdiv double %1565, %1566
  %1568 = load double, ptr %91, align 8, !tbaa !11
  %1569 = fcmp ole double %1567, %1568
  br i1 %1569, label %1570, label %1615

1570:                                             ; preds = %1564
  %1571 = load double, ptr %66, align 8, !tbaa !11
  %1572 = load double, ptr %90, align 8, !tbaa !11
  %1573 = fcmp olt double %1571, %1572
  br i1 %1573, label %1574, label %1592

1574:                                             ; preds = %1570
  %1575 = load double, ptr %66, align 8, !tbaa !11
  %1576 = load double, ptr %54, align 8, !tbaa !11
  %1577 = fcmp ogt double %1575, %1576
  br i1 %1577, label %1578, label %1592

1578:                                             ; preds = %1574
  %1579 = load ptr, ptr %20, align 8, !tbaa !5
  %1580 = load ptr, ptr %22, align 8, !tbaa !5
  %1581 = load i64, ptr %51, align 8, !tbaa !9
  %1582 = load i64, ptr %36, align 8, !tbaa !9
  %1583 = mul nsw i64 %1581, %1582
  %1584 = add nsw i64 %1583, 1
  %1585 = getelementptr inbounds double, ptr %1580, i64 %1584
  %1586 = call double @f2c_dnrm2(ptr noundef %1579, ptr noundef %1585, ptr noundef @c__1)
  %1587 = load ptr, ptr %24, align 8, !tbaa !5
  %1588 = load i64, ptr %51, align 8, !tbaa !9
  %1589 = getelementptr inbounds double, ptr %1587, i64 %1588
  %1590 = load double, ptr %1589, align 8, !tbaa !11
  %1591 = fmul double %1586, %1590
  store double %1591, ptr %66, align 8, !tbaa !11
  br label %1610

1592:                                             ; preds = %1574, %1570
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  store double 0.000000e+00, ptr %66, align 8, !tbaa !11
  %1593 = load ptr, ptr %20, align 8, !tbaa !5
  %1594 = load ptr, ptr %22, align 8, !tbaa !5
  %1595 = load i64, ptr %51, align 8, !tbaa !9
  %1596 = load i64, ptr %36, align 8, !tbaa !9
  %1597 = mul nsw i64 %1595, %1596
  %1598 = add nsw i64 %1597, 1
  %1599 = getelementptr inbounds double, ptr %1594, i64 %1598
  %1600 = call i32 @dlassq_(ptr noundef %1593, ptr noundef %1599, ptr noundef @c__1, ptr noundef %53, ptr noundef %66)
  %1601 = load double, ptr %53, align 8, !tbaa !11
  %1602 = load double, ptr %66, align 8, !tbaa !11
  %1603 = call double @sqrt(double noundef %1602) #5
  %1604 = fmul double %1601, %1603
  %1605 = load ptr, ptr %24, align 8, !tbaa !5
  %1606 = load i64, ptr %51, align 8, !tbaa !9
  %1607 = getelementptr inbounds double, ptr %1605, i64 %1606
  %1608 = load double, ptr %1607, align 8, !tbaa !11
  %1609 = fmul double %1604, %1608
  store double %1609, ptr %66, align 8, !tbaa !11
  br label %1610

1610:                                             ; preds = %1592, %1578
  %1611 = load double, ptr %66, align 8, !tbaa !11
  %1612 = load ptr, ptr %25, align 8, !tbaa !5
  %1613 = load i64, ptr %51, align 8, !tbaa !9
  %1614 = getelementptr inbounds double, ptr %1612, i64 %1613
  store double %1611, ptr %1614, align 8, !tbaa !11
  br label %1615

1615:                                             ; preds = %1610, %1564
  br label %1625

1616:                                             ; preds = %726
  %1617 = load i64, ptr %57, align 8, !tbaa !9
  %1618 = icmp eq i64 %1617, 0
  br i1 %1618, label %1619, label %1622

1619:                                             ; preds = %1616
  %1620 = load i64, ptr %87, align 8, !tbaa !9
  %1621 = add nsw i64 %1620, 1
  store i64 %1621, ptr %87, align 8, !tbaa !9
  br label %1622

1622:                                             ; preds = %1619, %1616
  %1623 = load i64, ptr %49, align 8, !tbaa !9
  %1624 = add nsw i64 %1623, 1
  store i64 %1624, ptr %49, align 8, !tbaa !9
  br label %1625

1625:                                             ; preds = %1622, %1615
  br label %1635

1626:                                             ; preds = %530
  %1627 = load i64, ptr %57, align 8, !tbaa !9
  %1628 = icmp eq i64 %1627, 0
  br i1 %1628, label %1629, label %1632

1629:                                             ; preds = %1626
  %1630 = load i64, ptr %87, align 8, !tbaa !9
  %1631 = add nsw i64 %1630, 1
  store i64 %1631, ptr %87, align 8, !tbaa !9
  br label %1632

1632:                                             ; preds = %1629, %1626
  %1633 = load i64, ptr %49, align 8, !tbaa !9
  %1634 = add nsw i64 %1633, 1
  store i64 %1634, ptr %49, align 8, !tbaa !9
  br label %1635

1635:                                             ; preds = %1632, %1625
  %1636 = load i64, ptr %50, align 8, !tbaa !9
  %1637 = load i64, ptr %81, align 8, !tbaa !9
  %1638 = icmp sle i64 %1636, %1637
  br i1 %1638, label %1639, label %1650

1639:                                             ; preds = %1635
  %1640 = load i64, ptr %49, align 8, !tbaa !9
  %1641 = load i64, ptr %92, align 8, !tbaa !9
  %1642 = icmp sgt i64 %1640, %1641
  br i1 %1642, label %1643, label %1650

1643:                                             ; preds = %1639
  %1644 = load i64, ptr %57, align 8, !tbaa !9
  %1645 = icmp eq i64 %1644, 0
  br i1 %1645, label %1646, label %1649

1646:                                             ; preds = %1643
  %1647 = load double, ptr %66, align 8, !tbaa !11
  %1648 = fneg double %1647
  store double %1648, ptr %66, align 8, !tbaa !11
  br label %1649

1649:                                             ; preds = %1646, %1643
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %1655

1650:                                             ; preds = %1639, %1635
  br label %1651

1651:                                             ; preds = %1650
  %1652 = load i64, ptr %52, align 8, !tbaa !9
  %1653 = add nsw i64 %1652, 1
  store i64 %1653, ptr %52, align 8, !tbaa !9
  br label %526, !llvm.loop !13

1654:                                             ; preds = %526
  br label %1655

1655:                                             ; preds = %1654, %1649
  %1656 = load double, ptr %66, align 8, !tbaa !11
  %1657 = load ptr, ptr %25, align 8, !tbaa !5
  %1658 = load i64, ptr %51, align 8, !tbaa !9
  %1659 = getelementptr inbounds double, ptr %1657, i64 %1658
  store double %1656, ptr %1659, align 8, !tbaa !11
  br label %1691

1660:                                             ; preds = %505
  %1661 = load double, ptr %66, align 8, !tbaa !11
  %1662 = load ptr, ptr %25, align 8, !tbaa !5
  %1663 = load i64, ptr %51, align 8, !tbaa !9
  %1664 = getelementptr inbounds double, ptr %1662, i64 %1663
  store double %1661, ptr %1664, align 8, !tbaa !11
  %1665 = load i64, ptr %57, align 8, !tbaa !9
  %1666 = icmp eq i64 %1665, 0
  br i1 %1666, label %1667, label %1690

1667:                                             ; preds = %1660
  %1668 = load double, ptr %66, align 8, !tbaa !11
  %1669 = fcmp oeq double %1668, 0.000000e+00
  br i1 %1669, label %1670, label %1690

1670:                                             ; preds = %1667
  %1671 = load i64, ptr %61, align 8, !tbaa !9
  %1672 = load i64, ptr %60, align 8, !tbaa !9
  %1673 = add nsw i64 %1671, %1672
  %1674 = sub nsw i64 %1673, 1
  store i64 %1674, ptr %44, align 8, !tbaa !9
  %1675 = load i64, ptr %87, align 8, !tbaa !9
  %1676 = load i64, ptr %44, align 8, !tbaa !9
  %1677 = load ptr, ptr %21, align 8, !tbaa !5
  %1678 = load i64, ptr %1677, align 8, !tbaa !9
  %1679 = icmp sle i64 %1676, %1678
  br i1 %1679, label %1680, label %1682

1680:                                             ; preds = %1670
  %1681 = load i64, ptr %44, align 8, !tbaa !9
  br label %1685

1682:                                             ; preds = %1670
  %1683 = load ptr, ptr %21, align 8, !tbaa !5
  %1684 = load i64, ptr %1683, align 8, !tbaa !9
  br label %1685

1685:                                             ; preds = %1682, %1680
  %1686 = phi i64 [ %1681, %1680 ], [ %1684, %1682 ]
  %1687 = add nsw i64 %1675, %1686
  %1688 = load i64, ptr %51, align 8, !tbaa !9
  %1689 = sub nsw i64 %1687, %1688
  store i64 %1689, ptr %87, align 8, !tbaa !9
  br label %1690

1690:                                             ; preds = %1685, %1667, %1660
  br label %1691

1691:                                             ; preds = %1690, %1655
  br label %1692

1692:                                             ; preds = %1691
  %1693 = load i64, ptr %51, align 8, !tbaa !9
  %1694 = add nsw i64 %1693, 1
  store i64 %1694, ptr %51, align 8, !tbaa !9
  br label %358, !llvm.loop !15

1695:                                             ; preds = %358
  br label %1696

1696:                                             ; preds = %1695
  %1697 = load i64, ptr %57, align 8, !tbaa !9
  %1698 = add nsw i64 %1697, 1
  store i64 %1698, ptr %57, align 8, !tbaa !9
  br label %331, !llvm.loop !16

1699:                                             ; preds = %331
  %1700 = load i64, ptr %62, align 8, !tbaa !9
  %1701 = sub nsw i64 %1700, 1
  %1702 = load i64, ptr %60, align 8, !tbaa !9
  %1703 = mul nsw i64 %1701, %1702
  %1704 = add nsw i64 %1703, 1
  store i64 %1704, ptr %61, align 8, !tbaa !9
  %1705 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1705, ptr %42, align 8, !tbaa !9
  %1706 = load i64, ptr %62, align 8, !tbaa !9
  %1707 = add nsw i64 %1706, 1
  store i64 %1707, ptr %58, align 8, !tbaa !9
  br label %1708

1708:                                             ; preds = %3065, %1699
  %1709 = load i64, ptr %58, align 8, !tbaa !9
  %1710 = load i64, ptr %42, align 8, !tbaa !9
  %1711 = icmp sle i64 %1709, %1710
  br i1 %1711, label %1712, label %3068

1712:                                             ; preds = %1708
  %1713 = load i64, ptr %58, align 8, !tbaa !9
  %1714 = sub nsw i64 %1713, 1
  %1715 = load i64, ptr %60, align 8, !tbaa !9
  %1716 = mul nsw i64 %1714, %1715
  %1717 = add nsw i64 %1716, 1
  store i64 %1717, ptr %63, align 8, !tbaa !9
  store i64 0, ptr %80, align 8, !tbaa !9
  %1718 = load i64, ptr %61, align 8, !tbaa !9
  %1719 = load i64, ptr %60, align 8, !tbaa !9
  %1720 = add nsw i64 %1718, %1719
  %1721 = sub nsw i64 %1720, 1
  store i64 %1721, ptr %44, align 8, !tbaa !9
  %1722 = load i64, ptr %44, align 8, !tbaa !9
  %1723 = load ptr, ptr %21, align 8, !tbaa !5
  %1724 = load i64, ptr %1723, align 8, !tbaa !9
  %1725 = icmp sle i64 %1722, %1724
  br i1 %1725, label %1726, label %1728

1726:                                             ; preds = %1712
  %1727 = load i64, ptr %44, align 8, !tbaa !9
  br label %1731

1728:                                             ; preds = %1712
  %1729 = load ptr, ptr %21, align 8, !tbaa !5
  %1730 = load i64, ptr %1729, align 8, !tbaa !9
  br label %1731

1731:                                             ; preds = %1728, %1726
  %1732 = phi i64 [ %1727, %1726 ], [ %1730, %1728 ]
  store i64 %1732, ptr %43, align 8, !tbaa !9
  %1733 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %1733, ptr %51, align 8, !tbaa !9
  br label %1734

1734:                                             ; preds = %3061, %1731
  %1735 = load i64, ptr %51, align 8, !tbaa !9
  %1736 = load i64, ptr %43, align 8, !tbaa !9
  %1737 = icmp sle i64 %1735, %1736
  br i1 %1737, label %1738, label %3064

1738:                                             ; preds = %1734
  %1739 = load ptr, ptr %25, align 8, !tbaa !5
  %1740 = load i64, ptr %51, align 8, !tbaa !9
  %1741 = getelementptr inbounds double, ptr %1739, i64 %1740
  %1742 = load double, ptr %1741, align 8, !tbaa !11
  store double %1742, ptr %66, align 8, !tbaa !11
  %1743 = load double, ptr %66, align 8, !tbaa !11
  %1744 = fcmp ogt double %1743, 0.000000e+00
  br i1 %1744, label %1745, label %3031

1745:                                             ; preds = %1738
  store i64 0, ptr %49, align 8, !tbaa !9
  %1746 = load i64, ptr %63, align 8, !tbaa !9
  %1747 = load i64, ptr %60, align 8, !tbaa !9
  %1748 = add nsw i64 %1746, %1747
  %1749 = sub nsw i64 %1748, 1
  store i64 %1749, ptr %45, align 8, !tbaa !9
  %1750 = load i64, ptr %45, align 8, !tbaa !9
  %1751 = load ptr, ptr %21, align 8, !tbaa !5
  %1752 = load i64, ptr %1751, align 8, !tbaa !9
  %1753 = icmp sle i64 %1750, %1752
  br i1 %1753, label %1754, label %1756

1754:                                             ; preds = %1745
  %1755 = load i64, ptr %45, align 8, !tbaa !9
  br label %1759

1756:                                             ; preds = %1745
  %1757 = load ptr, ptr %21, align 8, !tbaa !5
  %1758 = load i64, ptr %1757, align 8, !tbaa !9
  br label %1759

1759:                                             ; preds = %1756, %1754
  %1760 = phi i64 [ %1755, %1754 ], [ %1758, %1756 ]
  store i64 %1760, ptr %44, align 8, !tbaa !9
  %1761 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %1761, ptr %52, align 8, !tbaa !9
  br label %1762

1762:                                             ; preds = %3022, %1759
  %1763 = load i64, ptr %52, align 8, !tbaa !9
  %1764 = load i64, ptr %44, align 8, !tbaa !9
  %1765 = icmp sle i64 %1763, %1764
  br i1 %1765, label %1766, label %3025

1766:                                             ; preds = %1762
  %1767 = load ptr, ptr %25, align 8, !tbaa !5
  %1768 = load i64, ptr %52, align 8, !tbaa !9
  %1769 = getelementptr inbounds double, ptr %1767, i64 %1768
  %1770 = load double, ptr %1769, align 8, !tbaa !11
  store double %1770, ptr %68, align 8, !tbaa !11
  %1771 = load double, ptr %68, align 8, !tbaa !11
  %1772 = fcmp ogt double %1771, 0.000000e+00
  br i1 %1772, label %1773, label %2990

1773:                                             ; preds = %1766
  %1774 = load double, ptr %66, align 8, !tbaa !11
  store double %1774, ptr %70, align 8, !tbaa !11
  %1775 = load double, ptr %68, align 8, !tbaa !11
  %1776 = fcmp oge double %1775, 1.000000e+00
  br i1 %1776, label %1777, label %1869

1777:                                             ; preds = %1773
  %1778 = load double, ptr %66, align 8, !tbaa !11
  %1779 = load double, ptr %68, align 8, !tbaa !11
  %1780 = fcmp oge double %1778, %1779
  br i1 %1780, label %1781, label %1789

1781:                                             ; preds = %1777
  %1782 = load double, ptr %75, align 8, !tbaa !11
  %1783 = load double, ptr %66, align 8, !tbaa !11
  %1784 = fmul double %1782, %1783
  %1785 = load double, ptr %68, align 8, !tbaa !11
  %1786 = fcmp ole double %1784, %1785
  %1787 = zext i1 %1786 to i32
  %1788 = sext i32 %1787 to i64
  store i64 %1788, ptr %79, align 8, !tbaa !9
  br label %1797

1789:                                             ; preds = %1777
  %1790 = load double, ptr %75, align 8, !tbaa !11
  %1791 = load double, ptr %68, align 8, !tbaa !11
  %1792 = fmul double %1790, %1791
  %1793 = load double, ptr %66, align 8, !tbaa !11
  %1794 = fcmp ole double %1792, %1793
  %1795 = zext i1 %1794 to i32
  %1796 = sext i32 %1795 to i64
  store i64 %1796, ptr %79, align 8, !tbaa !9
  br label %1797

1797:                                             ; preds = %1789, %1781
  %1798 = load double, ptr %66, align 8, !tbaa !11
  %1799 = load double, ptr %59, align 8, !tbaa !11
  %1800 = load double, ptr %68, align 8, !tbaa !11
  %1801 = fdiv double %1799, %1800
  %1802 = fcmp olt double %1798, %1801
  br i1 %1802, label %1803, label %1832

1803:                                             ; preds = %1797
  %1804 = load ptr, ptr %20, align 8, !tbaa !5
  %1805 = load ptr, ptr %22, align 8, !tbaa !5
  %1806 = load i64, ptr %51, align 8, !tbaa !9
  %1807 = load i64, ptr %36, align 8, !tbaa !9
  %1808 = mul nsw i64 %1806, %1807
  %1809 = add nsw i64 %1808, 1
  %1810 = getelementptr inbounds double, ptr %1805, i64 %1809
  %1811 = load ptr, ptr %22, align 8, !tbaa !5
  %1812 = load i64, ptr %52, align 8, !tbaa !9
  %1813 = load i64, ptr %36, align 8, !tbaa !9
  %1814 = mul nsw i64 %1812, %1813
  %1815 = add nsw i64 %1814, 1
  %1816 = getelementptr inbounds double, ptr %1811, i64 %1815
  %1817 = call double @f2c_ddot(ptr noundef %1804, ptr noundef %1810, ptr noundef @c__1, ptr noundef %1816, ptr noundef @c__1)
  %1818 = load ptr, ptr %24, align 8, !tbaa !5
  %1819 = load i64, ptr %51, align 8, !tbaa !9
  %1820 = getelementptr inbounds double, ptr %1818, i64 %1819
  %1821 = load double, ptr %1820, align 8, !tbaa !11
  %1822 = fmul double %1817, %1821
  %1823 = load ptr, ptr %24, align 8, !tbaa !5
  %1824 = load i64, ptr %52, align 8, !tbaa !9
  %1825 = getelementptr inbounds double, ptr %1823, i64 %1824
  %1826 = load double, ptr %1825, align 8, !tbaa !11
  %1827 = fmul double %1822, %1826
  %1828 = load double, ptr %68, align 8, !tbaa !11
  %1829 = fdiv double %1827, %1828
  %1830 = load double, ptr %66, align 8, !tbaa !11
  %1831 = fdiv double %1829, %1830
  store double %1831, ptr %67, align 8, !tbaa !11
  br label %1868

1832:                                             ; preds = %1797
  %1833 = load ptr, ptr %20, align 8, !tbaa !5
  %1834 = load ptr, ptr %22, align 8, !tbaa !5
  %1835 = load i64, ptr %51, align 8, !tbaa !9
  %1836 = load i64, ptr %36, align 8, !tbaa !9
  %1837 = mul nsw i64 %1835, %1836
  %1838 = add nsw i64 %1837, 1
  %1839 = getelementptr inbounds double, ptr %1834, i64 %1838
  %1840 = load ptr, ptr %33, align 8, !tbaa !5
  %1841 = getelementptr inbounds double, ptr %1840, i64 1
  %1842 = call i32 @f2c_dcopy(ptr noundef %1833, ptr noundef %1839, ptr noundef @c__1, ptr noundef %1841, ptr noundef @c__1)
  %1843 = load ptr, ptr %24, align 8, !tbaa !5
  %1844 = load i64, ptr %51, align 8, !tbaa !9
  %1845 = getelementptr inbounds double, ptr %1843, i64 %1844
  %1846 = load ptr, ptr %20, align 8, !tbaa !5
  %1847 = load ptr, ptr %33, align 8, !tbaa !5
  %1848 = getelementptr inbounds double, ptr %1847, i64 1
  %1849 = load ptr, ptr %23, align 8, !tbaa !5
  %1850 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef %1845, ptr noundef %1846, ptr noundef @c__1, ptr noundef %1848, ptr noundef %1849, ptr noundef %69)
  %1851 = load ptr, ptr %20, align 8, !tbaa !5
  %1852 = load ptr, ptr %33, align 8, !tbaa !5
  %1853 = getelementptr inbounds double, ptr %1852, i64 1
  %1854 = load ptr, ptr %22, align 8, !tbaa !5
  %1855 = load i64, ptr %52, align 8, !tbaa !9
  %1856 = load i64, ptr %36, align 8, !tbaa !9
  %1857 = mul nsw i64 %1855, %1856
  %1858 = add nsw i64 %1857, 1
  %1859 = getelementptr inbounds double, ptr %1854, i64 %1858
  %1860 = call double @f2c_ddot(ptr noundef %1851, ptr noundef %1853, ptr noundef @c__1, ptr noundef %1859, ptr noundef @c__1)
  %1861 = load ptr, ptr %24, align 8, !tbaa !5
  %1862 = load i64, ptr %52, align 8, !tbaa !9
  %1863 = getelementptr inbounds double, ptr %1861, i64 %1862
  %1864 = load double, ptr %1863, align 8, !tbaa !11
  %1865 = fmul double %1860, %1864
  %1866 = load double, ptr %68, align 8, !tbaa !11
  %1867 = fdiv double %1865, %1866
  store double %1867, ptr %67, align 8, !tbaa !11
  br label %1868

1868:                                             ; preds = %1832, %1803
  br label %1961

1869:                                             ; preds = %1773
  %1870 = load double, ptr %66, align 8, !tbaa !11
  %1871 = load double, ptr %68, align 8, !tbaa !11
  %1872 = fcmp oge double %1870, %1871
  br i1 %1872, label %1873, label %1881

1873:                                             ; preds = %1869
  %1874 = load double, ptr %66, align 8, !tbaa !11
  %1875 = load double, ptr %68, align 8, !tbaa !11
  %1876 = load double, ptr %75, align 8, !tbaa !11
  %1877 = fdiv double %1875, %1876
  %1878 = fcmp ole double %1874, %1877
  %1879 = zext i1 %1878 to i32
  %1880 = sext i32 %1879 to i64
  store i64 %1880, ptr %79, align 8, !tbaa !9
  br label %1889

1881:                                             ; preds = %1869
  %1882 = load double, ptr %68, align 8, !tbaa !11
  %1883 = load double, ptr %66, align 8, !tbaa !11
  %1884 = load double, ptr %75, align 8, !tbaa !11
  %1885 = fdiv double %1883, %1884
  %1886 = fcmp ole double %1882, %1885
  %1887 = zext i1 %1886 to i32
  %1888 = sext i32 %1887 to i64
  store i64 %1888, ptr %79, align 8, !tbaa !9
  br label %1889

1889:                                             ; preds = %1881, %1873
  %1890 = load double, ptr %66, align 8, !tbaa !11
  %1891 = load double, ptr %75, align 8, !tbaa !11
  %1892 = load double, ptr %68, align 8, !tbaa !11
  %1893 = fdiv double %1891, %1892
  %1894 = fcmp ogt double %1890, %1893
  br i1 %1894, label %1895, label %1924

1895:                                             ; preds = %1889
  %1896 = load ptr, ptr %20, align 8, !tbaa !5
  %1897 = load ptr, ptr %22, align 8, !tbaa !5
  %1898 = load i64, ptr %51, align 8, !tbaa !9
  %1899 = load i64, ptr %36, align 8, !tbaa !9
  %1900 = mul nsw i64 %1898, %1899
  %1901 = add nsw i64 %1900, 1
  %1902 = getelementptr inbounds double, ptr %1897, i64 %1901
  %1903 = load ptr, ptr %22, align 8, !tbaa !5
  %1904 = load i64, ptr %52, align 8, !tbaa !9
  %1905 = load i64, ptr %36, align 8, !tbaa !9
  %1906 = mul nsw i64 %1904, %1905
  %1907 = add nsw i64 %1906, 1
  %1908 = getelementptr inbounds double, ptr %1903, i64 %1907
  %1909 = call double @f2c_ddot(ptr noundef %1896, ptr noundef %1902, ptr noundef @c__1, ptr noundef %1908, ptr noundef @c__1)
  %1910 = load ptr, ptr %24, align 8, !tbaa !5
  %1911 = load i64, ptr %51, align 8, !tbaa !9
  %1912 = getelementptr inbounds double, ptr %1910, i64 %1911
  %1913 = load double, ptr %1912, align 8, !tbaa !11
  %1914 = fmul double %1909, %1913
  %1915 = load ptr, ptr %24, align 8, !tbaa !5
  %1916 = load i64, ptr %52, align 8, !tbaa !9
  %1917 = getelementptr inbounds double, ptr %1915, i64 %1916
  %1918 = load double, ptr %1917, align 8, !tbaa !11
  %1919 = fmul double %1914, %1918
  %1920 = load double, ptr %68, align 8, !tbaa !11
  %1921 = fdiv double %1919, %1920
  %1922 = load double, ptr %66, align 8, !tbaa !11
  %1923 = fdiv double %1921, %1922
  store double %1923, ptr %67, align 8, !tbaa !11
  br label %1960

1924:                                             ; preds = %1889
  %1925 = load ptr, ptr %20, align 8, !tbaa !5
  %1926 = load ptr, ptr %22, align 8, !tbaa !5
  %1927 = load i64, ptr %52, align 8, !tbaa !9
  %1928 = load i64, ptr %36, align 8, !tbaa !9
  %1929 = mul nsw i64 %1927, %1928
  %1930 = add nsw i64 %1929, 1
  %1931 = getelementptr inbounds double, ptr %1926, i64 %1930
  %1932 = load ptr, ptr %33, align 8, !tbaa !5
  %1933 = getelementptr inbounds double, ptr %1932, i64 1
  %1934 = call i32 @f2c_dcopy(ptr noundef %1925, ptr noundef %1931, ptr noundef @c__1, ptr noundef %1933, ptr noundef @c__1)
  %1935 = load ptr, ptr %24, align 8, !tbaa !5
  %1936 = load i64, ptr %52, align 8, !tbaa !9
  %1937 = getelementptr inbounds double, ptr %1935, i64 %1936
  %1938 = load ptr, ptr %20, align 8, !tbaa !5
  %1939 = load ptr, ptr %33, align 8, !tbaa !5
  %1940 = getelementptr inbounds double, ptr %1939, i64 1
  %1941 = load ptr, ptr %23, align 8, !tbaa !5
  %1942 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef %1937, ptr noundef %1938, ptr noundef @c__1, ptr noundef %1940, ptr noundef %1941, ptr noundef %69)
  %1943 = load ptr, ptr %20, align 8, !tbaa !5
  %1944 = load ptr, ptr %33, align 8, !tbaa !5
  %1945 = getelementptr inbounds double, ptr %1944, i64 1
  %1946 = load ptr, ptr %22, align 8, !tbaa !5
  %1947 = load i64, ptr %51, align 8, !tbaa !9
  %1948 = load i64, ptr %36, align 8, !tbaa !9
  %1949 = mul nsw i64 %1947, %1948
  %1950 = add nsw i64 %1949, 1
  %1951 = getelementptr inbounds double, ptr %1946, i64 %1950
  %1952 = call double @f2c_ddot(ptr noundef %1943, ptr noundef %1945, ptr noundef @c__1, ptr noundef %1951, ptr noundef @c__1)
  %1953 = load ptr, ptr %24, align 8, !tbaa !5
  %1954 = load i64, ptr %51, align 8, !tbaa !9
  %1955 = getelementptr inbounds double, ptr %1953, i64 %1954
  %1956 = load double, ptr %1955, align 8, !tbaa !11
  %1957 = fmul double %1952, %1956
  %1958 = load double, ptr %66, align 8, !tbaa !11
  %1959 = fdiv double %1957, %1958
  store double %1959, ptr %67, align 8, !tbaa !11
  br label %1960

1960:                                             ; preds = %1924, %1895
  br label %1961

1961:                                             ; preds = %1960, %1868
  %1962 = load double, ptr %83, align 8, !tbaa !11
  store double %1962, ptr %46, align 8, !tbaa !11
  %1963 = load double, ptr %67, align 8, !tbaa !11
  %1964 = fcmp oge double %1963, 0.000000e+00
  br i1 %1964, label %1965, label %1967

1965:                                             ; preds = %1961
  %1966 = load double, ptr %67, align 8, !tbaa !11
  br label %1970

1967:                                             ; preds = %1961
  %1968 = load double, ptr %67, align 8, !tbaa !11
  %1969 = fneg double %1968
  br label %1970

1970:                                             ; preds = %1967, %1965
  %1971 = phi double [ %1966, %1965 ], [ %1969, %1967 ]
  store double %1971, ptr %47, align 8, !tbaa !11
  %1972 = load double, ptr %46, align 8, !tbaa !11
  %1973 = load double, ptr %47, align 8, !tbaa !11
  %1974 = fcmp oge double %1972, %1973
  br i1 %1974, label %1975, label %1977

1975:                                             ; preds = %1970
  %1976 = load double, ptr %46, align 8, !tbaa !11
  br label %1979

1977:                                             ; preds = %1970
  %1978 = load double, ptr %47, align 8, !tbaa !11
  br label %1979

1979:                                             ; preds = %1977, %1975
  %1980 = phi double [ %1976, %1975 ], [ %1978, %1977 ]
  store double %1980, ptr %83, align 8, !tbaa !11
  %1981 = load double, ptr %67, align 8, !tbaa !11
  %1982 = fcmp oge double %1981, 0.000000e+00
  br i1 %1982, label %1983, label %1985

1983:                                             ; preds = %1979
  %1984 = load double, ptr %67, align 8, !tbaa !11
  br label %1988

1985:                                             ; preds = %1979
  %1986 = load double, ptr %67, align 8, !tbaa !11
  %1987 = fneg double %1986
  br label %1988

1988:                                             ; preds = %1985, %1983
  %1989 = phi double [ %1984, %1983 ], [ %1987, %1985 ]
  %1990 = load ptr, ptr %31, align 8, !tbaa !5
  %1991 = load double, ptr %1990, align 8, !tbaa !11
  %1992 = fcmp ogt double %1989, %1991
  br i1 %1992, label %1993, label %2982

1993:                                             ; preds = %1988
  store i64 0, ptr %87, align 8, !tbaa !9
  store i64 0, ptr %49, align 8, !tbaa !9
  %1994 = load i64, ptr %88, align 8, !tbaa !9
  %1995 = add nsw i64 %1994, 1
  store i64 %1995, ptr %88, align 8, !tbaa !9
  %1996 = load i64, ptr %79, align 8, !tbaa !9
  %1997 = icmp ne i64 %1996, 0
  br i1 %1997, label %1998, label %2691

1998:                                             ; preds = %1993
  %1999 = load double, ptr %68, align 8, !tbaa !11
  %2000 = load double, ptr %66, align 8, !tbaa !11
  %2001 = fdiv double %1999, %2000
  store double %2001, ptr %73, align 8, !tbaa !11
  %2002 = load double, ptr %66, align 8, !tbaa !11
  %2003 = load double, ptr %68, align 8, !tbaa !11
  %2004 = fdiv double %2002, %2003
  store double %2004, ptr %72, align 8, !tbaa !11
  %2005 = load double, ptr %73, align 8, !tbaa !11
  %2006 = load double, ptr %72, align 8, !tbaa !11
  %2007 = fsub double %2005, %2006
  store double %2007, ptr %46, align 8, !tbaa !11
  %2008 = load double, ptr %46, align 8, !tbaa !11
  %2009 = fcmp oge double %2008, 0.000000e+00
  br i1 %2009, label %2010, label %2012

2010:                                             ; preds = %1998
  %2011 = load double, ptr %46, align 8, !tbaa !11
  br label %2015

2012:                                             ; preds = %1998
  %2013 = load double, ptr %46, align 8, !tbaa !11
  %2014 = fneg double %2013
  br label %2015

2015:                                             ; preds = %2012, %2010
  %2016 = phi double [ %2011, %2010 ], [ %2014, %2012 ]
  %2017 = fmul double %2016, -5.000000e-01
  %2018 = load double, ptr %67, align 8, !tbaa !11
  %2019 = fdiv double %2017, %2018
  store double %2019, ptr %74, align 8, !tbaa !11
  %2020 = load double, ptr %68, align 8, !tbaa !11
  %2021 = load double, ptr %70, align 8, !tbaa !11
  %2022 = fcmp ogt double %2020, %2021
  br i1 %2022, label %2023, label %2026

2023:                                             ; preds = %2015
  %2024 = load double, ptr %74, align 8, !tbaa !11
  %2025 = fneg double %2024
  store double %2025, ptr %74, align 8, !tbaa !11
  br label %2026

2026:                                             ; preds = %2023, %2015
  %2027 = load double, ptr %74, align 8, !tbaa !11
  %2028 = fcmp oge double %2027, 0.000000e+00
  br i1 %2028, label %2029, label %2031

2029:                                             ; preds = %2026
  %2030 = load double, ptr %74, align 8, !tbaa !11
  br label %2034

2031:                                             ; preds = %2026
  %2032 = load double, ptr %74, align 8, !tbaa !11
  %2033 = fneg double %2032
  br label %2034

2034:                                             ; preds = %2031, %2029
  %2035 = phi double [ %2030, %2029 ], [ %2033, %2031 ]
  %2036 = load double, ptr %48, align 8, !tbaa !11
  %2037 = fcmp ogt double %2035, %2036
  br i1 %2037, label %2038, label %2156

2038:                                             ; preds = %2034
  %2039 = load double, ptr %74, align 8, !tbaa !11
  %2040 = fdiv double 5.000000e-01, %2039
  store double %2040, ptr %53, align 8, !tbaa !11
  %2041 = load double, ptr %53, align 8, !tbaa !11
  %2042 = load ptr, ptr %24, align 8, !tbaa !5
  %2043 = load i64, ptr %51, align 8, !tbaa !9
  %2044 = getelementptr inbounds double, ptr %2042, i64 %2043
  %2045 = load double, ptr %2044, align 8, !tbaa !11
  %2046 = fmul double %2041, %2045
  %2047 = load ptr, ptr %24, align 8, !tbaa !5
  %2048 = load i64, ptr %52, align 8, !tbaa !9
  %2049 = getelementptr inbounds double, ptr %2047, i64 %2048
  %2050 = load double, ptr %2049, align 8, !tbaa !11
  %2051 = fdiv double %2046, %2050
  %2052 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 2
  store double %2051, ptr %2052, align 16, !tbaa !11
  %2053 = load double, ptr %53, align 8, !tbaa !11
  %2054 = fneg double %2053
  %2055 = load ptr, ptr %24, align 8, !tbaa !5
  %2056 = load i64, ptr %52, align 8, !tbaa !9
  %2057 = getelementptr inbounds double, ptr %2055, i64 %2056
  %2058 = load double, ptr %2057, align 8, !tbaa !11
  %2059 = fmul double %2054, %2058
  %2060 = load ptr, ptr %24, align 8, !tbaa !5
  %2061 = load i64, ptr %51, align 8, !tbaa !9
  %2062 = getelementptr inbounds double, ptr %2060, i64 %2061
  %2063 = load double, ptr %2062, align 8, !tbaa !11
  %2064 = fdiv double %2059, %2063
  %2065 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 3
  store double %2064, ptr %2065, align 8, !tbaa !11
  %2066 = load ptr, ptr %20, align 8, !tbaa !5
  %2067 = load ptr, ptr %22, align 8, !tbaa !5
  %2068 = load i64, ptr %51, align 8, !tbaa !9
  %2069 = load i64, ptr %36, align 8, !tbaa !9
  %2070 = mul nsw i64 %2068, %2069
  %2071 = add nsw i64 %2070, 1
  %2072 = getelementptr inbounds double, ptr %2067, i64 %2071
  %2073 = load ptr, ptr %22, align 8, !tbaa !5
  %2074 = load i64, ptr %52, align 8, !tbaa !9
  %2075 = load i64, ptr %36, align 8, !tbaa !9
  %2076 = mul nsw i64 %2074, %2075
  %2077 = add nsw i64 %2076, 1
  %2078 = getelementptr inbounds double, ptr %2073, i64 %2077
  %2079 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  %2080 = call i32 @f2c_drotm(ptr noundef %2066, ptr noundef %2072, ptr noundef @c__1, ptr noundef %2078, ptr noundef @c__1, ptr noundef %2079)
  %2081 = load i64, ptr %78, align 8, !tbaa !9
  %2082 = icmp ne i64 %2081, 0
  br i1 %2082, label %2083, label %2098

2083:                                             ; preds = %2038
  %2084 = load ptr, ptr %27, align 8, !tbaa !5
  %2085 = load i64, ptr %51, align 8, !tbaa !9
  %2086 = load i64, ptr %38, align 8, !tbaa !9
  %2087 = mul nsw i64 %2085, %2086
  %2088 = add nsw i64 %2087, 1
  %2089 = getelementptr inbounds double, ptr %2084, i64 %2088
  %2090 = load ptr, ptr %27, align 8, !tbaa !5
  %2091 = load i64, ptr %52, align 8, !tbaa !9
  %2092 = load i64, ptr %38, align 8, !tbaa !9
  %2093 = mul nsw i64 %2091, %2092
  %2094 = add nsw i64 %2093, 1
  %2095 = getelementptr inbounds double, ptr %2090, i64 %2094
  %2096 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  %2097 = call i32 @f2c_drotm(ptr noundef %65, ptr noundef %2089, ptr noundef @c__1, ptr noundef %2095, ptr noundef @c__1, ptr noundef %2096)
  br label %2098

2098:                                             ; preds = %2083, %2038
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %2099 = load double, ptr %53, align 8, !tbaa !11
  %2100 = load double, ptr %72, align 8, !tbaa !11
  %2101 = fmul double %2099, %2100
  %2102 = load double, ptr %67, align 8, !tbaa !11
  %2103 = call double @llvm.fmuladd.f64(double %2101, double %2102, double 1.000000e+00)
  store double %2103, ptr %47, align 8, !tbaa !11
  %2104 = load double, ptr %68, align 8, !tbaa !11
  %2105 = load double, ptr %46, align 8, !tbaa !11
  %2106 = load double, ptr %47, align 8, !tbaa !11
  %2107 = fcmp oge double %2105, %2106
  br i1 %2107, label %2108, label %2110

2108:                                             ; preds = %2098
  %2109 = load double, ptr %46, align 8, !tbaa !11
  br label %2112

2110:                                             ; preds = %2098
  %2111 = load double, ptr %47, align 8, !tbaa !11
  br label %2112

2112:                                             ; preds = %2110, %2108
  %2113 = phi double [ %2109, %2108 ], [ %2111, %2110 ]
  %2114 = call double @sqrt(double noundef %2113) #5
  %2115 = fmul double %2104, %2114
  %2116 = load ptr, ptr %25, align 8, !tbaa !5
  %2117 = load i64, ptr %52, align 8, !tbaa !9
  %2118 = getelementptr inbounds double, ptr %2116, i64 %2117
  store double %2115, ptr %2118, align 8, !tbaa !11
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %2119 = load double, ptr %53, align 8, !tbaa !11
  %2120 = load double, ptr %73, align 8, !tbaa !11
  %2121 = fmul double %2119, %2120
  %2122 = load double, ptr %67, align 8, !tbaa !11
  %2123 = fneg double %2121
  %2124 = call double @llvm.fmuladd.f64(double %2123, double %2122, double 1.000000e+00)
  store double %2124, ptr %47, align 8, !tbaa !11
  %2125 = load double, ptr %46, align 8, !tbaa !11
  %2126 = load double, ptr %47, align 8, !tbaa !11
  %2127 = fcmp oge double %2125, %2126
  br i1 %2127, label %2128, label %2130

2128:                                             ; preds = %2112
  %2129 = load double, ptr %46, align 8, !tbaa !11
  br label %2132

2130:                                             ; preds = %2112
  %2131 = load double, ptr %47, align 8, !tbaa !11
  br label %2132

2132:                                             ; preds = %2130, %2128
  %2133 = phi double [ %2129, %2128 ], [ %2131, %2130 ]
  %2134 = call double @sqrt(double noundef %2133) #5
  %2135 = load double, ptr %66, align 8, !tbaa !11
  %2136 = fmul double %2135, %2134
  store double %2136, ptr %66, align 8, !tbaa !11
  %2137 = load double, ptr %85, align 8, !tbaa !11
  store double %2137, ptr %46, align 8, !tbaa !11
  %2138 = load double, ptr %53, align 8, !tbaa !11
  %2139 = fcmp oge double %2138, 0.000000e+00
  br i1 %2139, label %2140, label %2142

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

2142:                                             ; preds = %2132
  %2143 = load double, ptr %53, align 8, !tbaa !11
  %2144 = fneg double %2143
  br label %2145

2145:                                             ; preds = %2142, %2140
  %2146 = phi double [ %2141, %2140 ], [ %2144, %2142 ]
  store double %2146, ptr %47, align 8, !tbaa !11
  %2147 = load double, ptr %46, align 8, !tbaa !11
  %2148 = load double, ptr %47, align 8, !tbaa !11
  %2149 = fcmp oge double %2147, %2148
  br i1 %2149, label %2150, label %2152

2150:                                             ; preds = %2145
  %2151 = load double, ptr %46, align 8, !tbaa !11
  br label %2154

2152:                                             ; preds = %2145
  %2153 = load double, ptr %47, align 8, !tbaa !11
  br label %2154

2154:                                             ; preds = %2152, %2150
  %2155 = phi double [ %2151, %2150 ], [ %2153, %2152 ]
  store double %2155, ptr %85, align 8, !tbaa !11
  br label %2690

2156:                                             ; preds = %2034
  %2157 = call double @d_sign(ptr noundef @c_b42, ptr noundef %67)
  %2158 = fneg double %2157
  store double %2158, ptr %84, align 8, !tbaa !11
  %2159 = load double, ptr %68, align 8, !tbaa !11
  %2160 = load double, ptr %70, align 8, !tbaa !11
  %2161 = fcmp ogt double %2159, %2160
  br i1 %2161, label %2162, label %2165

2162:                                             ; preds = %2156
  %2163 = load double, ptr %84, align 8, !tbaa !11
  %2164 = fneg double %2163
  store double %2164, ptr %84, align 8, !tbaa !11
  br label %2165

2165:                                             ; preds = %2162, %2156
  %2166 = load double, ptr %74, align 8, !tbaa !11
  %2167 = load double, ptr %84, align 8, !tbaa !11
  %2168 = load double, ptr %74, align 8, !tbaa !11
  %2169 = load double, ptr %74, align 8, !tbaa !11
  %2170 = call double @llvm.fmuladd.f64(double %2168, double %2169, double 1.000000e+00)
  %2171 = call double @sqrt(double noundef %2170) #5
  %2172 = call double @llvm.fmuladd.f64(double %2167, double %2171, double %2166)
  %2173 = fdiv double 1.000000e+00, %2172
  store double %2173, ptr %53, align 8, !tbaa !11
  %2174 = load double, ptr %53, align 8, !tbaa !11
  %2175 = load double, ptr %53, align 8, !tbaa !11
  %2176 = call double @llvm.fmuladd.f64(double %2174, double %2175, double 1.000000e+00)
  %2177 = fdiv double 1.000000e+00, %2176
  %2178 = call double @sqrt(double noundef %2177) #5
  store double %2178, ptr %55, align 8, !tbaa !11
  %2179 = load double, ptr %53, align 8, !tbaa !11
  %2180 = load double, ptr %55, align 8, !tbaa !11
  %2181 = fmul double %2179, %2180
  store double %2181, ptr %56, align 8, !tbaa !11
  %2182 = load double, ptr %85, align 8, !tbaa !11
  store double %2182, ptr %46, align 8, !tbaa !11
  %2183 = load double, ptr %56, align 8, !tbaa !11
  %2184 = fcmp oge double %2183, 0.000000e+00
  br i1 %2184, label %2185, label %2187

2185:                                             ; preds = %2165
  %2186 = load double, ptr %56, align 8, !tbaa !11
  br label %2190

2187:                                             ; preds = %2165
  %2188 = load double, ptr %56, align 8, !tbaa !11
  %2189 = fneg double %2188
  br label %2190

2190:                                             ; preds = %2187, %2185
  %2191 = phi double [ %2186, %2185 ], [ %2189, %2187 ]
  store double %2191, ptr %47, align 8, !tbaa !11
  %2192 = load double, ptr %46, align 8, !tbaa !11
  %2193 = load double, ptr %47, align 8, !tbaa !11
  %2194 = fcmp oge double %2192, %2193
  br i1 %2194, label %2195, label %2197

2195:                                             ; preds = %2190
  %2196 = load double, ptr %46, align 8, !tbaa !11
  br label %2199

2197:                                             ; preds = %2190
  %2198 = load double, ptr %47, align 8, !tbaa !11
  br label %2199

2199:                                             ; preds = %2197, %2195
  %2200 = phi double [ %2196, %2195 ], [ %2198, %2197 ]
  store double %2200, ptr %85, align 8, !tbaa !11
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %2201 = load double, ptr %53, align 8, !tbaa !11
  %2202 = load double, ptr %72, align 8, !tbaa !11
  %2203 = fmul double %2201, %2202
  %2204 = load double, ptr %67, align 8, !tbaa !11
  %2205 = call double @llvm.fmuladd.f64(double %2203, double %2204, double 1.000000e+00)
  store double %2205, ptr %47, align 8, !tbaa !11
  %2206 = load double, ptr %68, align 8, !tbaa !11
  %2207 = load double, ptr %46, align 8, !tbaa !11
  %2208 = load double, ptr %47, align 8, !tbaa !11
  %2209 = fcmp oge double %2207, %2208
  br i1 %2209, label %2210, label %2212

2210:                                             ; preds = %2199
  %2211 = load double, ptr %46, align 8, !tbaa !11
  br label %2214

2212:                                             ; preds = %2199
  %2213 = load double, ptr %47, align 8, !tbaa !11
  br label %2214

2214:                                             ; preds = %2212, %2210
  %2215 = phi double [ %2211, %2210 ], [ %2213, %2212 ]
  %2216 = call double @sqrt(double noundef %2215) #5
  %2217 = fmul double %2206, %2216
  %2218 = load ptr, ptr %25, align 8, !tbaa !5
  %2219 = load i64, ptr %52, align 8, !tbaa !9
  %2220 = getelementptr inbounds double, ptr %2218, i64 %2219
  store double %2217, ptr %2220, align 8, !tbaa !11
  %2221 = load double, ptr %53, align 8, !tbaa !11
  %2222 = load double, ptr %73, align 8, !tbaa !11
  %2223 = fmul double %2221, %2222
  %2224 = load double, ptr %67, align 8, !tbaa !11
  %2225 = fneg double %2223
  %2226 = call double @llvm.fmuladd.f64(double %2225, double %2224, double 1.000000e+00)
  %2227 = call double @sqrt(double noundef %2226) #5
  %2228 = load double, ptr %66, align 8, !tbaa !11
  %2229 = fmul double %2228, %2227
  store double %2229, ptr %66, align 8, !tbaa !11
  %2230 = load ptr, ptr %24, align 8, !tbaa !5
  %2231 = load i64, ptr %51, align 8, !tbaa !9
  %2232 = getelementptr inbounds double, ptr %2230, i64 %2231
  %2233 = load double, ptr %2232, align 8, !tbaa !11
  %2234 = load ptr, ptr %24, align 8, !tbaa !5
  %2235 = load i64, ptr %52, align 8, !tbaa !9
  %2236 = getelementptr inbounds double, ptr %2234, i64 %2235
  %2237 = load double, ptr %2236, align 8, !tbaa !11
  %2238 = fdiv double %2233, %2237
  store double %2238, ptr %72, align 8, !tbaa !11
  %2239 = load ptr, ptr %24, align 8, !tbaa !5
  %2240 = load i64, ptr %52, align 8, !tbaa !9
  %2241 = getelementptr inbounds double, ptr %2239, i64 %2240
  %2242 = load double, ptr %2241, align 8, !tbaa !11
  %2243 = load ptr, ptr %24, align 8, !tbaa !5
  %2244 = load i64, ptr %51, align 8, !tbaa !9
  %2245 = getelementptr inbounds double, ptr %2243, i64 %2244
  %2246 = load double, ptr %2245, align 8, !tbaa !11
  %2247 = fdiv double %2242, %2246
  store double %2247, ptr %73, align 8, !tbaa !11
  %2248 = load ptr, ptr %24, align 8, !tbaa !5
  %2249 = load i64, ptr %51, align 8, !tbaa !9
  %2250 = getelementptr inbounds double, ptr %2248, i64 %2249
  %2251 = load double, ptr %2250, align 8, !tbaa !11
  %2252 = fcmp oge double %2251, 1.000000e+00
  br i1 %2252, label %2253, label %2404

2253:                                             ; preds = %2214
  %2254 = load ptr, ptr %24, align 8, !tbaa !5
  %2255 = load i64, ptr %52, align 8, !tbaa !9
  %2256 = getelementptr inbounds double, ptr %2254, i64 %2255
  %2257 = load double, ptr %2256, align 8, !tbaa !11
  %2258 = fcmp oge double %2257, 1.000000e+00
  br i1 %2258, label %2259, label %2314

2259:                                             ; preds = %2253
  %2260 = load double, ptr %53, align 8, !tbaa !11
  %2261 = load double, ptr %72, align 8, !tbaa !11
  %2262 = fmul double %2260, %2261
  %2263 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 2
  store double %2262, ptr %2263, align 16, !tbaa !11
  %2264 = load double, ptr %53, align 8, !tbaa !11
  %2265 = fneg double %2264
  %2266 = load double, ptr %73, align 8, !tbaa !11
  %2267 = fmul double %2265, %2266
  %2268 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 3
  store double %2267, ptr %2268, align 8, !tbaa !11
  %2269 = load double, ptr %55, align 8, !tbaa !11
  %2270 = load ptr, ptr %24, align 8, !tbaa !5
  %2271 = load i64, ptr %51, align 8, !tbaa !9
  %2272 = getelementptr inbounds double, ptr %2270, i64 %2271
  %2273 = load double, ptr %2272, align 8, !tbaa !11
  %2274 = fmul double %2273, %2269
  store double %2274, ptr %2272, align 8, !tbaa !11
  %2275 = load double, ptr %55, align 8, !tbaa !11
  %2276 = load ptr, ptr %24, align 8, !tbaa !5
  %2277 = load i64, ptr %52, align 8, !tbaa !9
  %2278 = getelementptr inbounds double, ptr %2276, i64 %2277
  %2279 = load double, ptr %2278, align 8, !tbaa !11
  %2280 = fmul double %2279, %2275
  store double %2280, ptr %2278, align 8, !tbaa !11
  %2281 = load ptr, ptr %20, align 8, !tbaa !5
  %2282 = load ptr, ptr %22, align 8, !tbaa !5
  %2283 = load i64, ptr %51, align 8, !tbaa !9
  %2284 = load i64, ptr %36, align 8, !tbaa !9
  %2285 = mul nsw i64 %2283, %2284
  %2286 = add nsw i64 %2285, 1
  %2287 = getelementptr inbounds double, ptr %2282, i64 %2286
  %2288 = load ptr, ptr %22, align 8, !tbaa !5
  %2289 = load i64, ptr %52, align 8, !tbaa !9
  %2290 = load i64, ptr %36, align 8, !tbaa !9
  %2291 = mul nsw i64 %2289, %2290
  %2292 = add nsw i64 %2291, 1
  %2293 = getelementptr inbounds double, ptr %2288, i64 %2292
  %2294 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  %2295 = call i32 @f2c_drotm(ptr noundef %2281, ptr noundef %2287, ptr noundef @c__1, ptr noundef %2293, ptr noundef @c__1, ptr noundef %2294)
  %2296 = load i64, ptr %78, align 8, !tbaa !9
  %2297 = icmp ne i64 %2296, 0
  br i1 %2297, label %2298, label %2313

2298:                                             ; preds = %2259
  %2299 = load ptr, ptr %27, align 8, !tbaa !5
  %2300 = load i64, ptr %51, align 8, !tbaa !9
  %2301 = load i64, ptr %38, align 8, !tbaa !9
  %2302 = mul nsw i64 %2300, %2301
  %2303 = add nsw i64 %2302, 1
  %2304 = getelementptr inbounds double, ptr %2299, i64 %2303
  %2305 = load ptr, ptr %27, align 8, !tbaa !5
  %2306 = load i64, ptr %52, align 8, !tbaa !9
  %2307 = load i64, ptr %38, align 8, !tbaa !9
  %2308 = mul nsw i64 %2306, %2307
  %2309 = add nsw i64 %2308, 1
  %2310 = getelementptr inbounds double, ptr %2305, i64 %2309
  %2311 = getelementptr inbounds [5 x double], ptr %76, i64 0, i64 0
  %2312 = call i32 @f2c_drotm(ptr noundef %65, ptr noundef %2304, ptr noundef @c__1, ptr noundef %2310, ptr noundef @c__1, ptr noundef %2311)
  br label %2313

2313:                                             ; preds = %2298, %2259
  br label %2403

2314:                                             ; preds = %2253
  %2315 = load double, ptr %53, align 8, !tbaa !11
  %2316 = fneg double %2315
  %2317 = load double, ptr %73, align 8, !tbaa !11
  %2318 = fmul double %2316, %2317
  store double %2318, ptr %46, align 8, !tbaa !11
  %2319 = load ptr, ptr %20, align 8, !tbaa !5
  %2320 = load ptr, ptr %22, align 8, !tbaa !5
  %2321 = load i64, ptr %52, align 8, !tbaa !9
  %2322 = load i64, ptr %36, align 8, !tbaa !9
  %2323 = mul nsw i64 %2321, %2322
  %2324 = add nsw i64 %2323, 1
  %2325 = getelementptr inbounds double, ptr %2320, i64 %2324
  %2326 = load ptr, ptr %22, align 8, !tbaa !5
  %2327 = load i64, ptr %51, align 8, !tbaa !9
  %2328 = load i64, ptr %36, align 8, !tbaa !9
  %2329 = mul nsw i64 %2327, %2328
  %2330 = add nsw i64 %2329, 1
  %2331 = getelementptr inbounds double, ptr %2326, i64 %2330
  %2332 = call i32 @f2c_daxpy(ptr noundef %2319, ptr noundef %46, ptr noundef %2325, ptr noundef @c__1, ptr noundef %2331, ptr noundef @c__1)
  %2333 = load double, ptr %55, align 8, !tbaa !11
  %2334 = load double, ptr %56, align 8, !tbaa !11
  %2335 = fmul double %2333, %2334
  %2336 = load double, ptr %72, align 8, !tbaa !11
  %2337 = fmul double %2335, %2336
  store double %2337, ptr %46, align 8, !tbaa !11
  %2338 = load ptr, ptr %20, align 8, !tbaa !5
  %2339 = load ptr, ptr %22, align 8, !tbaa !5
  %2340 = load i64, ptr %51, align 8, !tbaa !9
  %2341 = load i64, ptr %36, align 8, !tbaa !9
  %2342 = mul nsw i64 %2340, %2341
  %2343 = add nsw i64 %2342, 1
  %2344 = getelementptr inbounds double, ptr %2339, i64 %2343
  %2345 = load ptr, ptr %22, align 8, !tbaa !5
  %2346 = load i64, ptr %52, align 8, !tbaa !9
  %2347 = load i64, ptr %36, align 8, !tbaa !9
  %2348 = mul nsw i64 %2346, %2347
  %2349 = add nsw i64 %2348, 1
  %2350 = getelementptr inbounds double, ptr %2345, i64 %2349
  %2351 = call i32 @f2c_daxpy(ptr noundef %2338, ptr noundef %46, ptr noundef %2344, ptr noundef @c__1, ptr noundef %2350, ptr noundef @c__1)
  %2352 = load i64, ptr %78, align 8, !tbaa !9
  %2353 = icmp ne i64 %2352, 0
  br i1 %2353, label %2354, label %2390

2354:                                             ; preds = %2314
  %2355 = load double, ptr %53, align 8, !tbaa !11
  %2356 = fneg double %2355
  %2357 = load double, ptr %73, align 8, !tbaa !11
  %2358 = fmul double %2356, %2357
  store double %2358, ptr %46, align 8, !tbaa !11
  %2359 = load ptr, ptr %27, align 8, !tbaa !5
  %2360 = load i64, ptr %52, align 8, !tbaa !9
  %2361 = load i64, ptr %38, align 8, !tbaa !9
  %2362 = mul nsw i64 %2360, %2361
  %2363 = add nsw i64 %2362, 1
  %2364 = getelementptr inbounds double, ptr %2359, i64 %2363
  %2365 = load ptr, ptr %27, align 8, !tbaa !5
  %2366 = load i64, ptr %51, align 8, !tbaa !9
  %2367 = load i64, ptr %38, align 8, !tbaa !9
  %2368 = mul nsw i64 %2366, %2367
  %2369 = add nsw i64 %2368, 1
  %2370 = getelementptr inbounds double, ptr %2365, i64 %2369
  %2371 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %2364, ptr noundef @c__1, ptr noundef %2370, ptr noundef @c__1)
  %2372 = load double, ptr %55, align 8, !tbaa !11
  %2373 = load double, ptr %56, align 8, !tbaa !11
  %2374 = fmul double %2372, %2373
  %2375 = load double, ptr %72, align 8, !tbaa !11
  %2376 = fmul double %2374, %2375
  store double %2376, ptr %46, align 8, !tbaa !11
  %2377 = load ptr, ptr %27, align 8, !tbaa !5
  %2378 = load i64, ptr %51, align 8, !tbaa !9
  %2379 = load i64, ptr %38, align 8, !tbaa !9
  %2380 = mul nsw i64 %2378, %2379
  %2381 = add nsw i64 %2380, 1
  %2382 = getelementptr inbounds double, ptr %2377, i64 %2381
  %2383 = load ptr, ptr %27, align 8, !tbaa !5
  %2384 = load i64, ptr %52, align 8, !tbaa !9
  %2385 = load i64, ptr %38, align 8, !tbaa !9
  %2386 = mul nsw i64 %2384, %2385
  %2387 = add nsw i64 %2386, 1
  %2388 = getelementptr inbounds double, ptr %2383, i64 %2387
  %2389 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %2382, ptr noundef @c__1, ptr noundef %2388, ptr noundef @c__1)
  br label %2390

2390:                                             ; preds = %2354, %2314
  %2391 = load double, ptr %55, align 8, !tbaa !11
  %2392 = load ptr, ptr %24, align 8, !tbaa !5
  %2393 = load i64, ptr %51, align 8, !tbaa !9
  %2394 = getelementptr inbounds double, ptr %2392, i64 %2393
  %2395 = load double, ptr %2394, align 8, !tbaa !11
  %2396 = fmul double %2395, %2391
  store double %2396, ptr %2394, align 8, !tbaa !11
  %2397 = load double, ptr %55, align 8, !tbaa !11
  %2398 = load ptr, ptr %24, align 8, !tbaa !5
  %2399 = load i64, ptr %52, align 8, !tbaa !9
  %2400 = getelementptr inbounds double, ptr %2398, i64 %2399
  %2401 = load double, ptr %2400, align 8, !tbaa !11
  %2402 = fdiv double %2401, %2397
  store double %2402, ptr %2400, align 8, !tbaa !11
  br label %2403

2403:                                             ; preds = %2390, %2313
  br label %2689

2404:                                             ; preds = %2214
  %2405 = load ptr, ptr %24, align 8, !tbaa !5
  %2406 = load i64, ptr %52, align 8, !tbaa !9
  %2407 = getelementptr inbounds double, ptr %2405, i64 %2406
  %2408 = load double, ptr %2407, align 8, !tbaa !11
  %2409 = fcmp oge double %2408, 1.000000e+00
  br i1 %2409, label %2410, label %2499

2410:                                             ; preds = %2404
  %2411 = load double, ptr %53, align 8, !tbaa !11
  %2412 = load double, ptr %72, align 8, !tbaa !11
  %2413 = fmul double %2411, %2412
  store double %2413, ptr %46, align 8, !tbaa !11
  %2414 = load ptr, ptr %20, align 8, !tbaa !5
  %2415 = load ptr, ptr %22, align 8, !tbaa !5
  %2416 = load i64, ptr %51, align 8, !tbaa !9
  %2417 = load i64, ptr %36, align 8, !tbaa !9
  %2418 = mul nsw i64 %2416, %2417
  %2419 = add nsw i64 %2418, 1
  %2420 = getelementptr inbounds double, ptr %2415, i64 %2419
  %2421 = load ptr, ptr %22, align 8, !tbaa !5
  %2422 = load i64, ptr %52, align 8, !tbaa !9
  %2423 = load i64, ptr %36, align 8, !tbaa !9
  %2424 = mul nsw i64 %2422, %2423
  %2425 = add nsw i64 %2424, 1
  %2426 = getelementptr inbounds double, ptr %2421, i64 %2425
  %2427 = call i32 @f2c_daxpy(ptr noundef %2414, ptr noundef %46, ptr noundef %2420, ptr noundef @c__1, ptr noundef %2426, ptr noundef @c__1)
  %2428 = load double, ptr %55, align 8, !tbaa !11
  %2429 = fneg double %2428
  %2430 = load double, ptr %56, align 8, !tbaa !11
  %2431 = fmul double %2429, %2430
  %2432 = load double, ptr %73, align 8, !tbaa !11
  %2433 = fmul double %2431, %2432
  store double %2433, ptr %46, align 8, !tbaa !11
  %2434 = load ptr, ptr %20, align 8, !tbaa !5
  %2435 = load ptr, ptr %22, align 8, !tbaa !5
  %2436 = load i64, ptr %52, align 8, !tbaa !9
  %2437 = load i64, ptr %36, align 8, !tbaa !9
  %2438 = mul nsw i64 %2436, %2437
  %2439 = add nsw i64 %2438, 1
  %2440 = getelementptr inbounds double, ptr %2435, i64 %2439
  %2441 = load ptr, ptr %22, align 8, !tbaa !5
  %2442 = load i64, ptr %51, align 8, !tbaa !9
  %2443 = load i64, ptr %36, align 8, !tbaa !9
  %2444 = mul nsw i64 %2442, %2443
  %2445 = add nsw i64 %2444, 1
  %2446 = getelementptr inbounds double, ptr %2441, i64 %2445
  %2447 = call i32 @f2c_daxpy(ptr noundef %2434, ptr noundef %46, ptr noundef %2440, ptr noundef @c__1, ptr noundef %2446, ptr noundef @c__1)
  %2448 = load i64, ptr %78, align 8, !tbaa !9
  %2449 = icmp ne i64 %2448, 0
  br i1 %2449, label %2450, label %2486

2450:                                             ; preds = %2410
  %2451 = load double, ptr %53, align 8, !tbaa !11
  %2452 = load double, ptr %72, align 8, !tbaa !11
  %2453 = fmul double %2451, %2452
  store double %2453, ptr %46, align 8, !tbaa !11
  %2454 = load ptr, ptr %27, align 8, !tbaa !5
  %2455 = load i64, ptr %51, align 8, !tbaa !9
  %2456 = load i64, ptr %38, align 8, !tbaa !9
  %2457 = mul nsw i64 %2455, %2456
  %2458 = add nsw i64 %2457, 1
  %2459 = getelementptr inbounds double, ptr %2454, i64 %2458
  %2460 = load ptr, ptr %27, align 8, !tbaa !5
  %2461 = load i64, ptr %52, align 8, !tbaa !9
  %2462 = load i64, ptr %38, align 8, !tbaa !9
  %2463 = mul nsw i64 %2461, %2462
  %2464 = add nsw i64 %2463, 1
  %2465 = getelementptr inbounds double, ptr %2460, i64 %2464
  %2466 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %2459, ptr noundef @c__1, ptr noundef %2465, ptr noundef @c__1)
  %2467 = load double, ptr %55, align 8, !tbaa !11
  %2468 = fneg double %2467
  %2469 = load double, ptr %56, align 8, !tbaa !11
  %2470 = fmul double %2468, %2469
  %2471 = load double, ptr %73, align 8, !tbaa !11
  %2472 = fmul double %2470, %2471
  store double %2472, ptr %46, align 8, !tbaa !11
  %2473 = load ptr, ptr %27, align 8, !tbaa !5
  %2474 = load i64, ptr %52, align 8, !tbaa !9
  %2475 = load i64, ptr %38, align 8, !tbaa !9
  %2476 = mul nsw i64 %2474, %2475
  %2477 = add nsw i64 %2476, 1
  %2478 = getelementptr inbounds double, ptr %2473, i64 %2477
  %2479 = load ptr, ptr %27, align 8, !tbaa !5
  %2480 = load i64, ptr %51, align 8, !tbaa !9
  %2481 = load i64, ptr %38, align 8, !tbaa !9
  %2482 = mul nsw i64 %2480, %2481
  %2483 = add nsw i64 %2482, 1
  %2484 = getelementptr inbounds double, ptr %2479, i64 %2483
  %2485 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %2478, ptr noundef @c__1, ptr noundef %2484, ptr noundef @c__1)
  br label %2486

2486:                                             ; preds = %2450, %2410
  %2487 = load double, ptr %55, align 8, !tbaa !11
  %2488 = load ptr, ptr %24, align 8, !tbaa !5
  %2489 = load i64, ptr %51, align 8, !tbaa !9
  %2490 = getelementptr inbounds double, ptr %2488, i64 %2489
  %2491 = load double, ptr %2490, align 8, !tbaa !11
  %2492 = fdiv double %2491, %2487
  store double %2492, ptr %2490, align 8, !tbaa !11
  %2493 = load double, ptr %55, align 8, !tbaa !11
  %2494 = load ptr, ptr %24, align 8, !tbaa !5
  %2495 = load i64, ptr %52, align 8, !tbaa !9
  %2496 = getelementptr inbounds double, ptr %2494, i64 %2495
  %2497 = load double, ptr %2496, align 8, !tbaa !11
  %2498 = fmul double %2497, %2493
  store double %2498, ptr %2496, align 8, !tbaa !11
  br label %2688

2499:                                             ; preds = %2404
  %2500 = load ptr, ptr %24, align 8, !tbaa !5
  %2501 = load i64, ptr %51, align 8, !tbaa !9
  %2502 = getelementptr inbounds double, ptr %2500, i64 %2501
  %2503 = load double, ptr %2502, align 8, !tbaa !11
  %2504 = load ptr, ptr %24, align 8, !tbaa !5
  %2505 = load i64, ptr %52, align 8, !tbaa !9
  %2506 = getelementptr inbounds double, ptr %2504, i64 %2505
  %2507 = load double, ptr %2506, align 8, !tbaa !11
  %2508 = fcmp oge double %2503, %2507
  br i1 %2508, label %2509, label %2598

2509:                                             ; preds = %2499
  %2510 = load double, ptr %53, align 8, !tbaa !11
  %2511 = fneg double %2510
  %2512 = load double, ptr %73, align 8, !tbaa !11
  %2513 = fmul double %2511, %2512
  store double %2513, ptr %46, align 8, !tbaa !11
  %2514 = load ptr, ptr %20, align 8, !tbaa !5
  %2515 = load ptr, ptr %22, align 8, !tbaa !5
  %2516 = load i64, ptr %52, align 8, !tbaa !9
  %2517 = load i64, ptr %36, align 8, !tbaa !9
  %2518 = mul nsw i64 %2516, %2517
  %2519 = add nsw i64 %2518, 1
  %2520 = getelementptr inbounds double, ptr %2515, i64 %2519
  %2521 = load ptr, ptr %22, align 8, !tbaa !5
  %2522 = load i64, ptr %51, align 8, !tbaa !9
  %2523 = load i64, ptr %36, align 8, !tbaa !9
  %2524 = mul nsw i64 %2522, %2523
  %2525 = add nsw i64 %2524, 1
  %2526 = getelementptr inbounds double, ptr %2521, i64 %2525
  %2527 = call i32 @f2c_daxpy(ptr noundef %2514, ptr noundef %46, ptr noundef %2520, ptr noundef @c__1, ptr noundef %2526, ptr noundef @c__1)
  %2528 = load double, ptr %55, align 8, !tbaa !11
  %2529 = load double, ptr %56, align 8, !tbaa !11
  %2530 = fmul double %2528, %2529
  %2531 = load double, ptr %72, align 8, !tbaa !11
  %2532 = fmul double %2530, %2531
  store double %2532, ptr %46, align 8, !tbaa !11
  %2533 = load ptr, ptr %20, align 8, !tbaa !5
  %2534 = load ptr, ptr %22, align 8, !tbaa !5
  %2535 = load i64, ptr %51, align 8, !tbaa !9
  %2536 = load i64, ptr %36, align 8, !tbaa !9
  %2537 = mul nsw i64 %2535, %2536
  %2538 = add nsw i64 %2537, 1
  %2539 = getelementptr inbounds double, ptr %2534, i64 %2538
  %2540 = load ptr, ptr %22, align 8, !tbaa !5
  %2541 = load i64, ptr %52, align 8, !tbaa !9
  %2542 = load i64, ptr %36, align 8, !tbaa !9
  %2543 = mul nsw i64 %2541, %2542
  %2544 = add nsw i64 %2543, 1
  %2545 = getelementptr inbounds double, ptr %2540, i64 %2544
  %2546 = call i32 @f2c_daxpy(ptr noundef %2533, ptr noundef %46, ptr noundef %2539, ptr noundef @c__1, ptr noundef %2545, ptr noundef @c__1)
  %2547 = load double, ptr %55, align 8, !tbaa !11
  %2548 = load ptr, ptr %24, align 8, !tbaa !5
  %2549 = load i64, ptr %51, align 8, !tbaa !9
  %2550 = getelementptr inbounds double, ptr %2548, i64 %2549
  %2551 = load double, ptr %2550, align 8, !tbaa !11
  %2552 = fmul double %2551, %2547
  store double %2552, ptr %2550, align 8, !tbaa !11
  %2553 = load double, ptr %55, align 8, !tbaa !11
  %2554 = load ptr, ptr %24, align 8, !tbaa !5
  %2555 = load i64, ptr %52, align 8, !tbaa !9
  %2556 = getelementptr inbounds double, ptr %2554, i64 %2555
  %2557 = load double, ptr %2556, align 8, !tbaa !11
  %2558 = fdiv double %2557, %2553
  store double %2558, ptr %2556, align 8, !tbaa !11
  %2559 = load i64, ptr %78, align 8, !tbaa !9
  %2560 = icmp ne i64 %2559, 0
  br i1 %2560, label %2561, label %2597

2561:                                             ; preds = %2509
  %2562 = load double, ptr %53, align 8, !tbaa !11
  %2563 = fneg double %2562
  %2564 = load double, ptr %73, align 8, !tbaa !11
  %2565 = fmul double %2563, %2564
  store double %2565, ptr %46, align 8, !tbaa !11
  %2566 = load ptr, ptr %27, align 8, !tbaa !5
  %2567 = load i64, ptr %52, align 8, !tbaa !9
  %2568 = load i64, ptr %38, align 8, !tbaa !9
  %2569 = mul nsw i64 %2567, %2568
  %2570 = add nsw i64 %2569, 1
  %2571 = getelementptr inbounds double, ptr %2566, i64 %2570
  %2572 = load ptr, ptr %27, align 8, !tbaa !5
  %2573 = load i64, ptr %51, align 8, !tbaa !9
  %2574 = load i64, ptr %38, align 8, !tbaa !9
  %2575 = mul nsw i64 %2573, %2574
  %2576 = add nsw i64 %2575, 1
  %2577 = getelementptr inbounds double, ptr %2572, i64 %2576
  %2578 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %2571, ptr noundef @c__1, ptr noundef %2577, ptr noundef @c__1)
  %2579 = load double, ptr %55, align 8, !tbaa !11
  %2580 = load double, ptr %56, align 8, !tbaa !11
  %2581 = fmul double %2579, %2580
  %2582 = load double, ptr %72, align 8, !tbaa !11
  %2583 = fmul double %2581, %2582
  store double %2583, ptr %46, align 8, !tbaa !11
  %2584 = load ptr, ptr %27, align 8, !tbaa !5
  %2585 = load i64, ptr %51, align 8, !tbaa !9
  %2586 = load i64, ptr %38, align 8, !tbaa !9
  %2587 = mul nsw i64 %2585, %2586
  %2588 = add nsw i64 %2587, 1
  %2589 = getelementptr inbounds double, ptr %2584, i64 %2588
  %2590 = load ptr, ptr %27, align 8, !tbaa !5
  %2591 = load i64, ptr %52, align 8, !tbaa !9
  %2592 = load i64, ptr %38, align 8, !tbaa !9
  %2593 = mul nsw i64 %2591, %2592
  %2594 = add nsw i64 %2593, 1
  %2595 = getelementptr inbounds double, ptr %2590, i64 %2594
  %2596 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %2589, ptr noundef @c__1, ptr noundef %2595, ptr noundef @c__1)
  br label %2597

2597:                                             ; preds = %2561, %2509
  br label %2687

2598:                                             ; preds = %2499
  %2599 = load double, ptr %53, align 8, !tbaa !11
  %2600 = load double, ptr %72, align 8, !tbaa !11
  %2601 = fmul double %2599, %2600
  store double %2601, ptr %46, align 8, !tbaa !11
  %2602 = load ptr, ptr %20, align 8, !tbaa !5
  %2603 = load ptr, ptr %22, align 8, !tbaa !5
  %2604 = load i64, ptr %51, align 8, !tbaa !9
  %2605 = load i64, ptr %36, align 8, !tbaa !9
  %2606 = mul nsw i64 %2604, %2605
  %2607 = add nsw i64 %2606, 1
  %2608 = getelementptr inbounds double, ptr %2603, i64 %2607
  %2609 = load ptr, ptr %22, align 8, !tbaa !5
  %2610 = load i64, ptr %52, align 8, !tbaa !9
  %2611 = load i64, ptr %36, align 8, !tbaa !9
  %2612 = mul nsw i64 %2610, %2611
  %2613 = add nsw i64 %2612, 1
  %2614 = getelementptr inbounds double, ptr %2609, i64 %2613
  %2615 = call i32 @f2c_daxpy(ptr noundef %2602, ptr noundef %46, ptr noundef %2608, ptr noundef @c__1, ptr noundef %2614, ptr noundef @c__1)
  %2616 = load double, ptr %55, align 8, !tbaa !11
  %2617 = fneg double %2616
  %2618 = load double, ptr %56, align 8, !tbaa !11
  %2619 = fmul double %2617, %2618
  %2620 = load double, ptr %73, align 8, !tbaa !11
  %2621 = fmul double %2619, %2620
  store double %2621, ptr %46, align 8, !tbaa !11
  %2622 = load ptr, ptr %20, align 8, !tbaa !5
  %2623 = load ptr, ptr %22, align 8, !tbaa !5
  %2624 = load i64, ptr %52, align 8, !tbaa !9
  %2625 = load i64, ptr %36, align 8, !tbaa !9
  %2626 = mul nsw i64 %2624, %2625
  %2627 = add nsw i64 %2626, 1
  %2628 = getelementptr inbounds double, ptr %2623, i64 %2627
  %2629 = load ptr, ptr %22, align 8, !tbaa !5
  %2630 = load i64, ptr %51, align 8, !tbaa !9
  %2631 = load i64, ptr %36, align 8, !tbaa !9
  %2632 = mul nsw i64 %2630, %2631
  %2633 = add nsw i64 %2632, 1
  %2634 = getelementptr inbounds double, ptr %2629, i64 %2633
  %2635 = call i32 @f2c_daxpy(ptr noundef %2622, ptr noundef %46, ptr noundef %2628, ptr noundef @c__1, ptr noundef %2634, ptr noundef @c__1)
  %2636 = load double, ptr %55, align 8, !tbaa !11
  %2637 = load ptr, ptr %24, align 8, !tbaa !5
  %2638 = load i64, ptr %51, align 8, !tbaa !9
  %2639 = getelementptr inbounds double, ptr %2637, i64 %2638
  %2640 = load double, ptr %2639, align 8, !tbaa !11
  %2641 = fdiv double %2640, %2636
  store double %2641, ptr %2639, align 8, !tbaa !11
  %2642 = load double, ptr %55, align 8, !tbaa !11
  %2643 = load ptr, ptr %24, align 8, !tbaa !5
  %2644 = load i64, ptr %52, align 8, !tbaa !9
  %2645 = getelementptr inbounds double, ptr %2643, i64 %2644
  %2646 = load double, ptr %2645, align 8, !tbaa !11
  %2647 = fmul double %2646, %2642
  store double %2647, ptr %2645, align 8, !tbaa !11
  %2648 = load i64, ptr %78, align 8, !tbaa !9
  %2649 = icmp ne i64 %2648, 0
  br i1 %2649, label %2650, label %2686

2650:                                             ; preds = %2598
  %2651 = load double, ptr %53, align 8, !tbaa !11
  %2652 = load double, ptr %72, align 8, !tbaa !11
  %2653 = fmul double %2651, %2652
  store double %2653, ptr %46, align 8, !tbaa !11
  %2654 = load ptr, ptr %27, align 8, !tbaa !5
  %2655 = load i64, ptr %51, align 8, !tbaa !9
  %2656 = load i64, ptr %38, align 8, !tbaa !9
  %2657 = mul nsw i64 %2655, %2656
  %2658 = add nsw i64 %2657, 1
  %2659 = getelementptr inbounds double, ptr %2654, i64 %2658
  %2660 = load ptr, ptr %27, align 8, !tbaa !5
  %2661 = load i64, ptr %52, align 8, !tbaa !9
  %2662 = load i64, ptr %38, align 8, !tbaa !9
  %2663 = mul nsw i64 %2661, %2662
  %2664 = add nsw i64 %2663, 1
  %2665 = getelementptr inbounds double, ptr %2660, i64 %2664
  %2666 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %2659, ptr noundef @c__1, ptr noundef %2665, ptr noundef @c__1)
  %2667 = load double, ptr %55, align 8, !tbaa !11
  %2668 = fneg double %2667
  %2669 = load double, ptr %56, align 8, !tbaa !11
  %2670 = fmul double %2668, %2669
  %2671 = load double, ptr %73, align 8, !tbaa !11
  %2672 = fmul double %2670, %2671
  store double %2672, ptr %46, align 8, !tbaa !11
  %2673 = load ptr, ptr %27, align 8, !tbaa !5
  %2674 = load i64, ptr %52, align 8, !tbaa !9
  %2675 = load i64, ptr %38, align 8, !tbaa !9
  %2676 = mul nsw i64 %2674, %2675
  %2677 = add nsw i64 %2676, 1
  %2678 = getelementptr inbounds double, ptr %2673, i64 %2677
  %2679 = load ptr, ptr %27, align 8, !tbaa !5
  %2680 = load i64, ptr %51, align 8, !tbaa !9
  %2681 = load i64, ptr %38, align 8, !tbaa !9
  %2682 = mul nsw i64 %2680, %2681
  %2683 = add nsw i64 %2682, 1
  %2684 = getelementptr inbounds double, ptr %2679, i64 %2683
  %2685 = call i32 @f2c_daxpy(ptr noundef %65, ptr noundef %46, ptr noundef %2678, ptr noundef @c__1, ptr noundef %2684, ptr noundef @c__1)
  br label %2686

2686:                                             ; preds = %2650, %2598
  br label %2687

2687:                                             ; preds = %2686, %2597
  br label %2688

2688:                                             ; preds = %2687, %2486
  br label %2689

2689:                                             ; preds = %2688, %2403
  br label %2690

2690:                                             ; preds = %2689, %2154
  br label %2868

2691:                                             ; preds = %1993
  %2692 = load double, ptr %66, align 8, !tbaa !11
  %2693 = load double, ptr %68, align 8, !tbaa !11
  %2694 = fcmp ogt double %2692, %2693
  br i1 %2694, label %2695, label %2781

2695:                                             ; preds = %2691
  %2696 = load ptr, ptr %20, align 8, !tbaa !5
  %2697 = load ptr, ptr %22, align 8, !tbaa !5
  %2698 = load i64, ptr %51, align 8, !tbaa !9
  %2699 = load i64, ptr %36, align 8, !tbaa !9
  %2700 = mul nsw i64 %2698, %2699
  %2701 = add nsw i64 %2700, 1
  %2702 = getelementptr inbounds double, ptr %2697, i64 %2701
  %2703 = load ptr, ptr %33, align 8, !tbaa !5
  %2704 = getelementptr inbounds double, ptr %2703, i64 1
  %2705 = call i32 @f2c_dcopy(ptr noundef %2696, ptr noundef %2702, ptr noundef @c__1, ptr noundef %2704, ptr noundef @c__1)
  %2706 = load ptr, ptr %20, align 8, !tbaa !5
  %2707 = load ptr, ptr %33, align 8, !tbaa !5
  %2708 = getelementptr inbounds double, ptr %2707, i64 1
  %2709 = load ptr, ptr %23, align 8, !tbaa !5
  %2710 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef @c_b42, ptr noundef %2706, ptr noundef @c__1, ptr noundef %2708, ptr noundef %2709, ptr noundef %69)
  %2711 = load ptr, ptr %20, align 8, !tbaa !5
  %2712 = load ptr, ptr %22, align 8, !tbaa !5
  %2713 = load i64, ptr %52, align 8, !tbaa !9
  %2714 = load i64, ptr %36, align 8, !tbaa !9
  %2715 = mul nsw i64 %2713, %2714
  %2716 = add nsw i64 %2715, 1
  %2717 = getelementptr inbounds double, ptr %2712, i64 %2716
  %2718 = load ptr, ptr %23, align 8, !tbaa !5
  %2719 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef @c_b42, ptr noundef %2711, ptr noundef @c__1, ptr noundef %2717, ptr noundef %2718, ptr noundef %69)
  %2720 = load double, ptr %67, align 8, !tbaa !11
  %2721 = fneg double %2720
  %2722 = load ptr, ptr %24, align 8, !tbaa !5
  %2723 = load i64, ptr %51, align 8, !tbaa !9
  %2724 = getelementptr inbounds double, ptr %2722, i64 %2723
  %2725 = load double, ptr %2724, align 8, !tbaa !11
  %2726 = fmul double %2721, %2725
  %2727 = load ptr, ptr %24, align 8, !tbaa !5
  %2728 = load i64, ptr %52, align 8, !tbaa !9
  %2729 = getelementptr inbounds double, ptr %2727, i64 %2728
  %2730 = load double, ptr %2729, align 8, !tbaa !11
  %2731 = fdiv double %2726, %2730
  store double %2731, ptr %71, align 8, !tbaa !11
  %2732 = load ptr, ptr %20, align 8, !tbaa !5
  %2733 = load ptr, ptr %33, align 8, !tbaa !5
  %2734 = getelementptr inbounds double, ptr %2733, i64 1
  %2735 = load ptr, ptr %22, align 8, !tbaa !5
  %2736 = load i64, ptr %52, align 8, !tbaa !9
  %2737 = load i64, ptr %36, align 8, !tbaa !9
  %2738 = mul nsw i64 %2736, %2737
  %2739 = add nsw i64 %2738, 1
  %2740 = getelementptr inbounds double, ptr %2735, i64 %2739
  %2741 = call i32 @f2c_daxpy(ptr noundef %2732, ptr noundef %71, ptr noundef %2734, ptr noundef @c__1, ptr noundef %2740, ptr noundef @c__1)
  %2742 = load ptr, ptr %20, align 8, !tbaa !5
  %2743 = load ptr, ptr %22, align 8, !tbaa !5
  %2744 = load i64, ptr %52, align 8, !tbaa !9
  %2745 = load i64, ptr %36, align 8, !tbaa !9
  %2746 = mul nsw i64 %2744, %2745
  %2747 = add nsw i64 %2746, 1
  %2748 = getelementptr inbounds double, ptr %2743, i64 %2747
  %2749 = load ptr, ptr %23, align 8, !tbaa !5
  %2750 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b42, ptr noundef %68, ptr noundef %2742, ptr noundef @c__1, ptr noundef %2748, ptr noundef %2749, ptr noundef %69)
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %2751 = load double, ptr %67, align 8, !tbaa !11
  %2752 = load double, ptr %67, align 8, !tbaa !11
  %2753 = fneg double %2751
  %2754 = call double @llvm.fmuladd.f64(double %2753, double %2752, double 1.000000e+00)
  store double %2754, ptr %47, align 8, !tbaa !11
  %2755 = load double, ptr %68, align 8, !tbaa !11
  %2756 = load double, ptr %46, align 8, !tbaa !11
  %2757 = load double, ptr %47, align 8, !tbaa !11
  %2758 = fcmp oge double %2756, %2757
  br i1 %2758, label %2759, label %2761

2759:                                             ; preds = %2695
  %2760 = load double, ptr %46, align 8, !tbaa !11
  br label %2763

2761:                                             ; preds = %2695
  %2762 = load double, ptr %47, align 8, !tbaa !11
  br label %2763

2763:                                             ; preds = %2761, %2759
  %2764 = phi double [ %2760, %2759 ], [ %2762, %2761 ]
  %2765 = call double @sqrt(double noundef %2764) #5
  %2766 = fmul double %2755, %2765
  %2767 = load ptr, ptr %25, align 8, !tbaa !5
  %2768 = load i64, ptr %52, align 8, !tbaa !9
  %2769 = getelementptr inbounds double, ptr %2767, i64 %2768
  store double %2766, ptr %2769, align 8, !tbaa !11
  %2770 = load double, ptr %85, align 8, !tbaa !11
  %2771 = load ptr, ptr %30, align 8, !tbaa !5
  %2772 = load double, ptr %2771, align 8, !tbaa !11
  %2773 = fcmp oge double %2770, %2772
  br i1 %2773, label %2774, label %2776

2774:                                             ; preds = %2763
  %2775 = load double, ptr %85, align 8, !tbaa !11
  br label %2779

2776:                                             ; preds = %2763
  %2777 = load ptr, ptr %30, align 8, !tbaa !5
  %2778 = load double, ptr %2777, align 8, !tbaa !11
  br label %2779

2779:                                             ; preds = %2776, %2774
  %2780 = phi double [ %2775, %2774 ], [ %2778, %2776 ]
  store double %2780, ptr %85, align 8, !tbaa !11
  br label %2867

2781:                                             ; preds = %2691
  %2782 = load ptr, ptr %20, align 8, !tbaa !5
  %2783 = load ptr, ptr %22, align 8, !tbaa !5
  %2784 = load i64, ptr %52, align 8, !tbaa !9
  %2785 = load i64, ptr %36, align 8, !tbaa !9
  %2786 = mul nsw i64 %2784, %2785
  %2787 = add nsw i64 %2786, 1
  %2788 = getelementptr inbounds double, ptr %2783, i64 %2787
  %2789 = load ptr, ptr %33, align 8, !tbaa !5
  %2790 = getelementptr inbounds double, ptr %2789, i64 1
  %2791 = call i32 @f2c_dcopy(ptr noundef %2782, ptr noundef %2788, ptr noundef @c__1, ptr noundef %2790, ptr noundef @c__1)
  %2792 = load ptr, ptr %20, align 8, !tbaa !5
  %2793 = load ptr, ptr %33, align 8, !tbaa !5
  %2794 = getelementptr inbounds double, ptr %2793, i64 1
  %2795 = load ptr, ptr %23, align 8, !tbaa !5
  %2796 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %68, ptr noundef @c_b42, ptr noundef %2792, ptr noundef @c__1, ptr noundef %2794, ptr noundef %2795, ptr noundef %69)
  %2797 = load ptr, ptr %20, align 8, !tbaa !5
  %2798 = load ptr, ptr %22, align 8, !tbaa !5
  %2799 = load i64, ptr %51, align 8, !tbaa !9
  %2800 = load i64, ptr %36, align 8, !tbaa !9
  %2801 = mul nsw i64 %2799, %2800
  %2802 = add nsw i64 %2801, 1
  %2803 = getelementptr inbounds double, ptr %2798, i64 %2802
  %2804 = load ptr, ptr %23, align 8, !tbaa !5
  %2805 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef @c_b42, ptr noundef %2797, ptr noundef @c__1, ptr noundef %2803, ptr noundef %2804, ptr noundef %69)
  %2806 = load double, ptr %67, align 8, !tbaa !11
  %2807 = fneg double %2806
  %2808 = load ptr, ptr %24, align 8, !tbaa !5
  %2809 = load i64, ptr %52, align 8, !tbaa !9
  %2810 = getelementptr inbounds double, ptr %2808, i64 %2809
  %2811 = load double, ptr %2810, align 8, !tbaa !11
  %2812 = fmul double %2807, %2811
  %2813 = load ptr, ptr %24, align 8, !tbaa !5
  %2814 = load i64, ptr %51, align 8, !tbaa !9
  %2815 = getelementptr inbounds double, ptr %2813, i64 %2814
  %2816 = load double, ptr %2815, align 8, !tbaa !11
  %2817 = fdiv double %2812, %2816
  store double %2817, ptr %71, align 8, !tbaa !11
  %2818 = load ptr, ptr %20, align 8, !tbaa !5
  %2819 = load ptr, ptr %33, align 8, !tbaa !5
  %2820 = getelementptr inbounds double, ptr %2819, i64 1
  %2821 = load ptr, ptr %22, align 8, !tbaa !5
  %2822 = load i64, ptr %51, align 8, !tbaa !9
  %2823 = load i64, ptr %36, align 8, !tbaa !9
  %2824 = mul nsw i64 %2822, %2823
  %2825 = add nsw i64 %2824, 1
  %2826 = getelementptr inbounds double, ptr %2821, i64 %2825
  %2827 = call i32 @f2c_daxpy(ptr noundef %2818, ptr noundef %71, ptr noundef %2820, ptr noundef @c__1, ptr noundef %2826, ptr noundef @c__1)
  %2828 = load ptr, ptr %20, align 8, !tbaa !5
  %2829 = load ptr, ptr %22, align 8, !tbaa !5
  %2830 = load i64, ptr %51, align 8, !tbaa !9
  %2831 = load i64, ptr %36, align 8, !tbaa !9
  %2832 = mul nsw i64 %2830, %2831
  %2833 = add nsw i64 %2832, 1
  %2834 = getelementptr inbounds double, ptr %2829, i64 %2833
  %2835 = load ptr, ptr %23, align 8, !tbaa !5
  %2836 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b42, ptr noundef %66, ptr noundef %2828, ptr noundef @c__1, ptr noundef %2834, ptr noundef %2835, ptr noundef %69)
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  %2837 = load double, ptr %67, align 8, !tbaa !11
  %2838 = load double, ptr %67, align 8, !tbaa !11
  %2839 = fneg double %2837
  %2840 = call double @llvm.fmuladd.f64(double %2839, double %2838, double 1.000000e+00)
  store double %2840, ptr %47, align 8, !tbaa !11
  %2841 = load double, ptr %66, align 8, !tbaa !11
  %2842 = load double, ptr %46, align 8, !tbaa !11
  %2843 = load double, ptr %47, align 8, !tbaa !11
  %2844 = fcmp oge double %2842, %2843
  br i1 %2844, label %2845, label %2847

2845:                                             ; preds = %2781
  %2846 = load double, ptr %46, align 8, !tbaa !11
  br label %2849

2847:                                             ; preds = %2781
  %2848 = load double, ptr %47, align 8, !tbaa !11
  br label %2849

2849:                                             ; preds = %2847, %2845
  %2850 = phi double [ %2846, %2845 ], [ %2848, %2847 ]
  %2851 = call double @sqrt(double noundef %2850) #5
  %2852 = fmul double %2841, %2851
  %2853 = load ptr, ptr %25, align 8, !tbaa !5
  %2854 = load i64, ptr %51, align 8, !tbaa !9
  %2855 = getelementptr inbounds double, ptr %2853, i64 %2854
  store double %2852, ptr %2855, align 8, !tbaa !11
  %2856 = load double, ptr %85, align 8, !tbaa !11
  %2857 = load ptr, ptr %30, align 8, !tbaa !5
  %2858 = load double, ptr %2857, align 8, !tbaa !11
  %2859 = fcmp oge double %2856, %2858
  br i1 %2859, label %2860, label %2862

2860:                                             ; preds = %2849
  %2861 = load double, ptr %85, align 8, !tbaa !11
  br label %2865

2862:                                             ; preds = %2849
  %2863 = load ptr, ptr %30, align 8, !tbaa !5
  %2864 = load double, ptr %2863, align 8, !tbaa !11
  br label %2865

2865:                                             ; preds = %2862, %2860
  %2866 = phi double [ %2861, %2860 ], [ %2864, %2862 ]
  store double %2866, ptr %85, align 8, !tbaa !11
  br label %2867

2867:                                             ; preds = %2865, %2779
  br label %2868

2868:                                             ; preds = %2867, %2690
  %2869 = load ptr, ptr %25, align 8, !tbaa !5
  %2870 = load i64, ptr %52, align 8, !tbaa !9
  %2871 = getelementptr inbounds double, ptr %2869, i64 %2870
  %2872 = load double, ptr %2871, align 8, !tbaa !11
  %2873 = load double, ptr %68, align 8, !tbaa !11
  %2874 = fdiv double %2872, %2873
  store double %2874, ptr %46, align 8, !tbaa !11
  %2875 = load double, ptr %46, align 8, !tbaa !11
  %2876 = load double, ptr %46, align 8, !tbaa !11
  %2877 = fmul double %2875, %2876
  %2878 = load double, ptr %91, align 8, !tbaa !11
  %2879 = fcmp ole double %2877, %2878
  br i1 %2879, label %2880, label %2927

2880:                                             ; preds = %2868
  %2881 = load double, ptr %68, align 8, !tbaa !11
  %2882 = load double, ptr %90, align 8, !tbaa !11
  %2883 = fcmp olt double %2881, %2882
  br i1 %2883, label %2884, label %2905

2884:                                             ; preds = %2880
  %2885 = load double, ptr %68, align 8, !tbaa !11
  %2886 = load double, ptr %54, align 8, !tbaa !11
  %2887 = fcmp ogt double %2885, %2886
  br i1 %2887, label %2888, label %2905

2888:                                             ; preds = %2884
  %2889 = load ptr, ptr %20, align 8, !tbaa !5
  %2890 = load ptr, ptr %22, align 8, !tbaa !5
  %2891 = load i64, ptr %52, align 8, !tbaa !9
  %2892 = load i64, ptr %36, align 8, !tbaa !9
  %2893 = mul nsw i64 %2891, %2892
  %2894 = add nsw i64 %2893, 1
  %2895 = getelementptr inbounds double, ptr %2890, i64 %2894
  %2896 = call double @f2c_dnrm2(ptr noundef %2889, ptr noundef %2895, ptr noundef @c__1)
  %2897 = load ptr, ptr %24, align 8, !tbaa !5
  %2898 = load i64, ptr %52, align 8, !tbaa !9
  %2899 = getelementptr inbounds double, ptr %2897, i64 %2898
  %2900 = load double, ptr %2899, align 8, !tbaa !11
  %2901 = fmul double %2896, %2900
  %2902 = load ptr, ptr %25, align 8, !tbaa !5
  %2903 = load i64, ptr %52, align 8, !tbaa !9
  %2904 = getelementptr inbounds double, ptr %2902, i64 %2903
  store double %2901, ptr %2904, align 8, !tbaa !11
  br label %2926

2905:                                             ; preds = %2884, %2880
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  store double 0.000000e+00, ptr %68, align 8, !tbaa !11
  %2906 = load ptr, ptr %20, align 8, !tbaa !5
  %2907 = load ptr, ptr %22, align 8, !tbaa !5
  %2908 = load i64, ptr %52, align 8, !tbaa !9
  %2909 = load i64, ptr %36, align 8, !tbaa !9
  %2910 = mul nsw i64 %2908, %2909
  %2911 = add nsw i64 %2910, 1
  %2912 = getelementptr inbounds double, ptr %2907, i64 %2911
  %2913 = call i32 @dlassq_(ptr noundef %2906, ptr noundef %2912, ptr noundef @c__1, ptr noundef %53, ptr noundef %68)
  %2914 = load double, ptr %53, align 8, !tbaa !11
  %2915 = load double, ptr %68, align 8, !tbaa !11
  %2916 = call double @sqrt(double noundef %2915) #5
  %2917 = fmul double %2914, %2916
  %2918 = load ptr, ptr %24, align 8, !tbaa !5
  %2919 = load i64, ptr %52, align 8, !tbaa !9
  %2920 = getelementptr inbounds double, ptr %2918, i64 %2919
  %2921 = load double, ptr %2920, align 8, !tbaa !11
  %2922 = fmul double %2917, %2921
  %2923 = load ptr, ptr %25, align 8, !tbaa !5
  %2924 = load i64, ptr %52, align 8, !tbaa !9
  %2925 = getelementptr inbounds double, ptr %2923, i64 %2924
  store double %2922, ptr %2925, align 8, !tbaa !11
  br label %2926

2926:                                             ; preds = %2905, %2888
  br label %2927

2927:                                             ; preds = %2926, %2868
  %2928 = load double, ptr %66, align 8, !tbaa !11
  %2929 = load double, ptr %70, align 8, !tbaa !11
  %2930 = fdiv double %2928, %2929
  store double %2930, ptr %46, align 8, !tbaa !11
  %2931 = load double, ptr %46, align 8, !tbaa !11
  %2932 = load double, ptr %46, align 8, !tbaa !11
  %2933 = fmul double %2931, %2932
  %2934 = load double, ptr %91, align 8, !tbaa !11
  %2935 = fcmp ole double %2933, %2934
  br i1 %2935, label %2936, label %2981

2936:                                             ; preds = %2927
  %2937 = load double, ptr %66, align 8, !tbaa !11
  %2938 = load double, ptr %90, align 8, !tbaa !11
  %2939 = fcmp olt double %2937, %2938
  br i1 %2939, label %2940, label %2958

2940:                                             ; preds = %2936
  %2941 = load double, ptr %66, align 8, !tbaa !11
  %2942 = load double, ptr %54, align 8, !tbaa !11
  %2943 = fcmp ogt double %2941, %2942
  br i1 %2943, label %2944, label %2958

2944:                                             ; preds = %2940
  %2945 = load ptr, ptr %20, align 8, !tbaa !5
  %2946 = load ptr, ptr %22, align 8, !tbaa !5
  %2947 = load i64, ptr %51, align 8, !tbaa !9
  %2948 = load i64, ptr %36, align 8, !tbaa !9
  %2949 = mul nsw i64 %2947, %2948
  %2950 = add nsw i64 %2949, 1
  %2951 = getelementptr inbounds double, ptr %2946, i64 %2950
  %2952 = call double @f2c_dnrm2(ptr noundef %2945, ptr noundef %2951, ptr noundef @c__1)
  %2953 = load ptr, ptr %24, align 8, !tbaa !5
  %2954 = load i64, ptr %51, align 8, !tbaa !9
  %2955 = getelementptr inbounds double, ptr %2953, i64 %2954
  %2956 = load double, ptr %2955, align 8, !tbaa !11
  %2957 = fmul double %2952, %2956
  store double %2957, ptr %66, align 8, !tbaa !11
  br label %2976

2958:                                             ; preds = %2940, %2936
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  store double 0.000000e+00, ptr %66, align 8, !tbaa !11
  %2959 = load ptr, ptr %20, align 8, !tbaa !5
  %2960 = load ptr, ptr %22, align 8, !tbaa !5
  %2961 = load i64, ptr %51, align 8, !tbaa !9
  %2962 = load i64, ptr %36, align 8, !tbaa !9
  %2963 = mul nsw i64 %2961, %2962
  %2964 = add nsw i64 %2963, 1
  %2965 = getelementptr inbounds double, ptr %2960, i64 %2964
  %2966 = call i32 @dlassq_(ptr noundef %2959, ptr noundef %2965, ptr noundef @c__1, ptr noundef %53, ptr noundef %66)
  %2967 = load double, ptr %53, align 8, !tbaa !11
  %2968 = load double, ptr %66, align 8, !tbaa !11
  %2969 = call double @sqrt(double noundef %2968) #5
  %2970 = fmul double %2967, %2969
  %2971 = load ptr, ptr %24, align 8, !tbaa !5
  %2972 = load i64, ptr %51, align 8, !tbaa !9
  %2973 = getelementptr inbounds double, ptr %2971, i64 %2972
  %2974 = load double, ptr %2973, align 8, !tbaa !11
  %2975 = fmul double %2970, %2974
  store double %2975, ptr %66, align 8, !tbaa !11
  br label %2976

2976:                                             ; preds = %2958, %2944
  %2977 = load double, ptr %66, align 8, !tbaa !11
  %2978 = load ptr, ptr %25, align 8, !tbaa !5
  %2979 = load i64, ptr %51, align 8, !tbaa !9
  %2980 = getelementptr inbounds double, ptr %2978, i64 %2979
  store double %2977, ptr %2980, align 8, !tbaa !11
  br label %2981

2981:                                             ; preds = %2976, %2927
  br label %2989

2982:                                             ; preds = %1988
  %2983 = load i64, ptr %87, align 8, !tbaa !9
  %2984 = add nsw i64 %2983, 1
  store i64 %2984, ptr %87, align 8, !tbaa !9
  %2985 = load i64, ptr %49, align 8, !tbaa !9
  %2986 = add nsw i64 %2985, 1
  store i64 %2986, ptr %49, align 8, !tbaa !9
  %2987 = load i64, ptr %80, align 8, !tbaa !9
  %2988 = add nsw i64 %2987, 1
  store i64 %2988, ptr %80, align 8, !tbaa !9
  br label %2989

2989:                                             ; preds = %2982, %2981
  br label %2997

2990:                                             ; preds = %1766
  %2991 = load i64, ptr %87, align 8, !tbaa !9
  %2992 = add nsw i64 %2991, 1
  store i64 %2992, ptr %87, align 8, !tbaa !9
  %2993 = load i64, ptr %49, align 8, !tbaa !9
  %2994 = add nsw i64 %2993, 1
  store i64 %2994, ptr %49, align 8, !tbaa !9
  %2995 = load i64, ptr %80, align 8, !tbaa !9
  %2996 = add nsw i64 %2995, 1
  store i64 %2996, ptr %80, align 8, !tbaa !9
  br label %2997

2997:                                             ; preds = %2990, %2989
  %2998 = load i64, ptr %50, align 8, !tbaa !9
  %2999 = load i64, ptr %81, align 8, !tbaa !9
  %3000 = icmp sle i64 %2998, %2999
  br i1 %3000, label %3001, label %3010

3001:                                             ; preds = %2997
  %3002 = load i64, ptr %80, align 8, !tbaa !9
  %3003 = load i64, ptr %82, align 8, !tbaa !9
  %3004 = icmp sge i64 %3002, %3003
  br i1 %3004, label %3005, label %3010

3005:                                             ; preds = %3001
  %3006 = load double, ptr %66, align 8, !tbaa !11
  %3007 = load ptr, ptr %25, align 8, !tbaa !5
  %3008 = load i64, ptr %51, align 8, !tbaa !9
  %3009 = getelementptr inbounds double, ptr %3007, i64 %3008
  store double %3006, ptr %3009, align 8, !tbaa !11
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %3069

3010:                                             ; preds = %3001, %2997
  %3011 = load i64, ptr %50, align 8, !tbaa !9
  %3012 = load i64, ptr %81, align 8, !tbaa !9
  %3013 = icmp sle i64 %3011, %3012
  br i1 %3013, label %3014, label %3021

3014:                                             ; preds = %3010
  %3015 = load i64, ptr %49, align 8, !tbaa !9
  %3016 = load i64, ptr %92, align 8, !tbaa !9
  %3017 = icmp sgt i64 %3015, %3016
  br i1 %3017, label %3018, label %3021

3018:                                             ; preds = %3014
  %3019 = load double, ptr %66, align 8, !tbaa !11
  %3020 = fneg double %3019
  store double %3020, ptr %66, align 8, !tbaa !11
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %3026

3021:                                             ; preds = %3014, %3010
  br label %3022

3022:                                             ; preds = %3021
  %3023 = load i64, ptr %52, align 8, !tbaa !9
  %3024 = add nsw i64 %3023, 1
  store i64 %3024, ptr %52, align 8, !tbaa !9
  br label %1762, !llvm.loop !17

3025:                                             ; preds = %1762
  br label %3026

3026:                                             ; preds = %3025, %3018
  %3027 = load double, ptr %66, align 8, !tbaa !11
  %3028 = load ptr, ptr %25, align 8, !tbaa !5
  %3029 = load i64, ptr %51, align 8, !tbaa !9
  %3030 = getelementptr inbounds double, ptr %3028, i64 %3029
  store double %3027, ptr %3030, align 8, !tbaa !11
  br label %3060

3031:                                             ; preds = %1738
  %3032 = load double, ptr %66, align 8, !tbaa !11
  %3033 = fcmp oeq double %3032, 0.000000e+00
  br i1 %3033, label %3034, label %3055

3034:                                             ; preds = %3031
  %3035 = load i64, ptr %63, align 8, !tbaa !9
  %3036 = load i64, ptr %60, align 8, !tbaa !9
  %3037 = add nsw i64 %3035, %3036
  %3038 = sub nsw i64 %3037, 1
  store i64 %3038, ptr %44, align 8, !tbaa !9
  %3039 = load i64, ptr %87, align 8, !tbaa !9
  %3040 = load i64, ptr %44, align 8, !tbaa !9
  %3041 = load ptr, ptr %21, align 8, !tbaa !5
  %3042 = load i64, ptr %3041, align 8, !tbaa !9
  %3043 = icmp sle i64 %3040, %3042
  br i1 %3043, label %3044, label %3046

3044:                                             ; preds = %3034
  %3045 = load i64, ptr %44, align 8, !tbaa !9
  br label %3049

3046:                                             ; preds = %3034
  %3047 = load ptr, ptr %21, align 8, !tbaa !5
  %3048 = load i64, ptr %3047, align 8, !tbaa !9
  br label %3049

3049:                                             ; preds = %3046, %3044
  %3050 = phi i64 [ %3045, %3044 ], [ %3048, %3046 ]
  %3051 = add nsw i64 %3039, %3050
  %3052 = load i64, ptr %63, align 8, !tbaa !9
  %3053 = sub nsw i64 %3051, %3052
  %3054 = add nsw i64 %3053, 1
  store i64 %3054, ptr %87, align 8, !tbaa !9
  br label %3055

3055:                                             ; preds = %3049, %3031
  %3056 = load double, ptr %66, align 8, !tbaa !11
  %3057 = fcmp olt double %3056, 0.000000e+00
  br i1 %3057, label %3058, label %3059

3058:                                             ; preds = %3055
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %3059

3059:                                             ; preds = %3058, %3055
  br label %3060

3060:                                             ; preds = %3059, %3026
  br label %3061

3061:                                             ; preds = %3060
  %3062 = load i64, ptr %51, align 8, !tbaa !9
  %3063 = add nsw i64 %3062, 1
  store i64 %3063, ptr %51, align 8, !tbaa !9
  br label %1734, !llvm.loop !18

3064:                                             ; preds = %1734
  br label %3065

3065:                                             ; preds = %3064
  %3066 = load i64, ptr %58, align 8, !tbaa !9
  %3067 = add nsw i64 %3066, 1
  store i64 %3067, ptr %58, align 8, !tbaa !9
  br label %1708, !llvm.loop !19

3068:                                             ; preds = %1708
  br label %3069

3069:                                             ; preds = %3068, %3005
  %3070 = load i64, ptr %61, align 8, !tbaa !9
  %3071 = load i64, ptr %60, align 8, !tbaa !9
  %3072 = add nsw i64 %3070, %3071
  %3073 = sub nsw i64 %3072, 1
  store i64 %3073, ptr %43, align 8, !tbaa !9
  %3074 = load i64, ptr %43, align 8, !tbaa !9
  %3075 = load ptr, ptr %21, align 8, !tbaa !5
  %3076 = load i64, ptr %3075, align 8, !tbaa !9
  %3077 = icmp sle i64 %3074, %3076
  br i1 %3077, label %3078, label %3080

3078:                                             ; preds = %3069
  %3079 = load i64, ptr %43, align 8, !tbaa !9
  br label %3083

3080:                                             ; preds = %3069
  %3081 = load ptr, ptr %21, align 8, !tbaa !5
  %3082 = load i64, ptr %3081, align 8, !tbaa !9
  br label %3083

3083:                                             ; preds = %3080, %3078
  %3084 = phi i64 [ %3079, %3078 ], [ %3082, %3080 ]
  store i64 %3084, ptr %42, align 8, !tbaa !9
  %3085 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3085, ptr %51, align 8, !tbaa !9
  br label %3086

3086:                                             ; preds = %3107, %3083
  %3087 = load i64, ptr %51, align 8, !tbaa !9
  %3088 = load i64, ptr %42, align 8, !tbaa !9
  %3089 = icmp sle i64 %3087, %3088
  br i1 %3089, label %3090, label %3110

3090:                                             ; preds = %3086
  %3091 = load ptr, ptr %25, align 8, !tbaa !5
  %3092 = load i64, ptr %51, align 8, !tbaa !9
  %3093 = getelementptr inbounds double, ptr %3091, i64 %3092
  %3094 = load double, ptr %3093, align 8, !tbaa !11
  store double %3094, ptr %46, align 8, !tbaa !11
  %3095 = load double, ptr %46, align 8, !tbaa !11
  %3096 = fcmp oge double %3095, 0.000000e+00
  br i1 %3096, label %3097, label %3099

3097:                                             ; preds = %3090
  %3098 = load double, ptr %46, align 8, !tbaa !11
  br label %3102

3099:                                             ; preds = %3090
  %3100 = load double, ptr %46, align 8, !tbaa !11
  %3101 = fneg double %3100
  br label %3102

3102:                                             ; preds = %3099, %3097
  %3103 = phi double [ %3098, %3097 ], [ %3101, %3099 ]
  %3104 = load ptr, ptr %25, align 8, !tbaa !5
  %3105 = load i64, ptr %51, align 8, !tbaa !9
  %3106 = getelementptr inbounds double, ptr %3104, i64 %3105
  store double %3103, ptr %3106, align 8, !tbaa !11
  br label %3107

3107:                                             ; preds = %3102
  %3108 = load i64, ptr %51, align 8, !tbaa !9
  %3109 = add nsw i64 %3108, 1
  store i64 %3109, ptr %51, align 8, !tbaa !9
  br label %3086, !llvm.loop !20

3110:                                             ; preds = %3086
  br label %3111

3111:                                             ; preds = %3110
  %3112 = load i64, ptr %62, align 8, !tbaa !9
  %3113 = add nsw i64 %3112, 1
  store i64 %3113, ptr %62, align 8, !tbaa !9
  br label %308, !llvm.loop !21

3114:                                             ; preds = %308
  %3115 = load ptr, ptr %25, align 8, !tbaa !5
  %3116 = load ptr, ptr %21, align 8, !tbaa !5
  %3117 = load i64, ptr %3116, align 8, !tbaa !9
  %3118 = getelementptr inbounds double, ptr %3115, i64 %3117
  %3119 = load double, ptr %3118, align 8, !tbaa !11
  %3120 = load double, ptr %90, align 8, !tbaa !11
  %3121 = fcmp olt double %3119, %3120
  br i1 %3121, label %3122, label %3150

3122:                                             ; preds = %3114
  %3123 = load ptr, ptr %25, align 8, !tbaa !5
  %3124 = load ptr, ptr %21, align 8, !tbaa !5
  %3125 = load i64, ptr %3124, align 8, !tbaa !9
  %3126 = getelementptr inbounds double, ptr %3123, i64 %3125
  %3127 = load double, ptr %3126, align 8, !tbaa !11
  %3128 = load double, ptr %54, align 8, !tbaa !11
  %3129 = fcmp ogt double %3127, %3128
  br i1 %3129, label %3130, label %3150

3130:                                             ; preds = %3122
  %3131 = load ptr, ptr %20, align 8, !tbaa !5
  %3132 = load ptr, ptr %22, align 8, !tbaa !5
  %3133 = load ptr, ptr %21, align 8, !tbaa !5
  %3134 = load i64, ptr %3133, align 8, !tbaa !9
  %3135 = load i64, ptr %36, align 8, !tbaa !9
  %3136 = mul nsw i64 %3134, %3135
  %3137 = add nsw i64 %3136, 1
  %3138 = getelementptr inbounds double, ptr %3132, i64 %3137
  %3139 = call double @f2c_dnrm2(ptr noundef %3131, ptr noundef %3138, ptr noundef @c__1)
  %3140 = load ptr, ptr %24, align 8, !tbaa !5
  %3141 = load ptr, ptr %21, align 8, !tbaa !5
  %3142 = load i64, ptr %3141, align 8, !tbaa !9
  %3143 = getelementptr inbounds double, ptr %3140, i64 %3142
  %3144 = load double, ptr %3143, align 8, !tbaa !11
  %3145 = fmul double %3139, %3144
  %3146 = load ptr, ptr %25, align 8, !tbaa !5
  %3147 = load ptr, ptr %21, align 8, !tbaa !5
  %3148 = load i64, ptr %3147, align 8, !tbaa !9
  %3149 = getelementptr inbounds double, ptr %3146, i64 %3148
  store double %3145, ptr %3149, align 8, !tbaa !11
  br label %3174

3150:                                             ; preds = %3122, %3114
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  store double 0.000000e+00, ptr %66, align 8, !tbaa !11
  %3151 = load ptr, ptr %20, align 8, !tbaa !5
  %3152 = load ptr, ptr %22, align 8, !tbaa !5
  %3153 = load ptr, ptr %21, align 8, !tbaa !5
  %3154 = load i64, ptr %3153, align 8, !tbaa !9
  %3155 = load i64, ptr %36, align 8, !tbaa !9
  %3156 = mul nsw i64 %3154, %3155
  %3157 = add nsw i64 %3156, 1
  %3158 = getelementptr inbounds double, ptr %3152, i64 %3157
  %3159 = call i32 @dlassq_(ptr noundef %3151, ptr noundef %3158, ptr noundef @c__1, ptr noundef %53, ptr noundef %66)
  %3160 = load double, ptr %53, align 8, !tbaa !11
  %3161 = load double, ptr %66, align 8, !tbaa !11
  %3162 = call double @sqrt(double noundef %3161) #5
  %3163 = fmul double %3160, %3162
  %3164 = load ptr, ptr %24, align 8, !tbaa !5
  %3165 = load ptr, ptr %21, align 8, !tbaa !5
  %3166 = load i64, ptr %3165, align 8, !tbaa !9
  %3167 = getelementptr inbounds double, ptr %3164, i64 %3166
  %3168 = load double, ptr %3167, align 8, !tbaa !11
  %3169 = fmul double %3163, %3168
  %3170 = load ptr, ptr %25, align 8, !tbaa !5
  %3171 = load ptr, ptr %21, align 8, !tbaa !5
  %3172 = load i64, ptr %3171, align 8, !tbaa !9
  %3173 = getelementptr inbounds double, ptr %3170, i64 %3172
  store double %3169, ptr %3173, align 8, !tbaa !11
  br label %3174

3174:                                             ; preds = %3150, %3130
  %3175 = load i64, ptr %50, align 8, !tbaa !9
  %3176 = load i64, ptr %81, align 8, !tbaa !9
  %3177 = icmp slt i64 %3175, %3176
  br i1 %3177, label %3178, label %3189

3178:                                             ; preds = %3174
  %3179 = load double, ptr %83, align 8, !tbaa !11
  %3180 = load double, ptr %93, align 8, !tbaa !11
  %3181 = fcmp ole double %3179, %3180
  br i1 %3181, label %3187, label %3182

3182:                                             ; preds = %3178
  %3183 = load i64, ptr %88, align 8, !tbaa !9
  %3184 = load ptr, ptr %21, align 8, !tbaa !5
  %3185 = load i64, ptr %3184, align 8, !tbaa !9
  %3186 = icmp sle i64 %3183, %3185
  br i1 %3186, label %3187, label %3189

3187:                                             ; preds = %3182, %3178
  %3188 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %3188, ptr %81, align 8, !tbaa !9
  br label %3189

3189:                                             ; preds = %3187, %3182, %3174
  %3190 = load i64, ptr %50, align 8, !tbaa !9
  %3191 = load i64, ptr %81, align 8, !tbaa !9
  %3192 = add nsw i64 %3191, 1
  %3193 = icmp sgt i64 %3190, %3192
  br i1 %3193, label %3194, label %3215

3194:                                             ; preds = %3189
  %3195 = load double, ptr %83, align 8, !tbaa !11
  %3196 = load ptr, ptr %21, align 8, !tbaa !5
  %3197 = load i64, ptr %3196, align 8, !tbaa !9
  %3198 = sitofp i64 %3197 to double
  %3199 = load ptr, ptr %31, align 8, !tbaa !5
  %3200 = load double, ptr %3199, align 8, !tbaa !11
  %3201 = fmul double %3198, %3200
  %3202 = fcmp olt double %3195, %3201
  br i1 %3202, label %3203, label %3215

3203:                                             ; preds = %3194
  %3204 = load ptr, ptr %21, align 8, !tbaa !5
  %3205 = load i64, ptr %3204, align 8, !tbaa !9
  %3206 = sitofp i64 %3205 to double
  %3207 = load double, ptr %83, align 8, !tbaa !11
  %3208 = fmul double %3206, %3207
  %3209 = load double, ptr %85, align 8, !tbaa !11
  %3210 = fmul double %3208, %3209
  %3211 = load ptr, ptr %31, align 8, !tbaa !5
  %3212 = load double, ptr %3211, align 8, !tbaa !11
  %3213 = fcmp olt double %3210, %3212
  br i1 %3213, label %3214, label %3215

3214:                                             ; preds = %3203
  br label %3229

3215:                                             ; preds = %3203, %3194, %3189
  %3216 = load i64, ptr %87, align 8, !tbaa !9
  %3217 = load i64, ptr %86, align 8, !tbaa !9
  %3218 = icmp sge i64 %3216, %3217
  br i1 %3218, label %3219, label %3220

3219:                                             ; preds = %3215
  br label %3229

3220:                                             ; preds = %3215
  br label %3221

3221:                                             ; preds = %3220
  %3222 = load i64, ptr %50, align 8, !tbaa !9
  %3223 = add nsw i64 %3222, 1
  store i64 %3223, ptr %50, align 8, !tbaa !9
  br label %302, !llvm.loop !22

3224:                                             ; preds = %302
  %3225 = load ptr, ptr %32, align 8, !tbaa !5
  %3226 = load i64, ptr %3225, align 8, !tbaa !9
  %3227 = sub nsw i64 %3226, 1
  %3228 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %3227, ptr %3228, align 8, !tbaa !9
  br label %3231

3229:                                             ; preds = %3219, %3214
  %3230 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %3230, align 8, !tbaa !9
  br label %3231

3231:                                             ; preds = %3229, %3224
  %3232 = load ptr, ptr %21, align 8, !tbaa !5
  %3233 = load i64, ptr %3232, align 8, !tbaa !9
  %3234 = sub nsw i64 %3233, 1
  store i64 %3234, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %3235

3235:                                             ; preds = %3318, %3231
  %3236 = load i64, ptr %51, align 8, !tbaa !9
  %3237 = load i64, ptr %40, align 8, !tbaa !9
  %3238 = icmp sle i64 %3236, %3237
  br i1 %3238, label %3239, label %3321

3239:                                             ; preds = %3235
  %3240 = load ptr, ptr %21, align 8, !tbaa !5
  %3241 = load i64, ptr %3240, align 8, !tbaa !9
  %3242 = load i64, ptr %51, align 8, !tbaa !9
  %3243 = sub nsw i64 %3241, %3242
  %3244 = add nsw i64 %3243, 1
  store i64 %3244, ptr %41, align 8, !tbaa !9
  %3245 = load ptr, ptr %25, align 8, !tbaa !5
  %3246 = load i64, ptr %51, align 8, !tbaa !9
  %3247 = getelementptr inbounds double, ptr %3245, i64 %3246
  %3248 = call i64 @f2c_idamax(ptr noundef %41, ptr noundef %3247, ptr noundef @c__1)
  %3249 = load i64, ptr %51, align 8, !tbaa !9
  %3250 = add nsw i64 %3248, %3249
  %3251 = sub nsw i64 %3250, 1
  store i64 %3251, ptr %52, align 8, !tbaa !9
  %3252 = load i64, ptr %51, align 8, !tbaa !9
  %3253 = load i64, ptr %52, align 8, !tbaa !9
  %3254 = icmp ne i64 %3252, %3253
  br i1 %3254, label %3255, label %3317

3255:                                             ; preds = %3239
  %3256 = load ptr, ptr %25, align 8, !tbaa !5
  %3257 = load i64, ptr %51, align 8, !tbaa !9
  %3258 = getelementptr inbounds double, ptr %3256, i64 %3257
  %3259 = load double, ptr %3258, align 8, !tbaa !11
  store double %3259, ptr %71, align 8, !tbaa !11
  %3260 = load ptr, ptr %25, align 8, !tbaa !5
  %3261 = load i64, ptr %52, align 8, !tbaa !9
  %3262 = getelementptr inbounds double, ptr %3260, i64 %3261
  %3263 = load double, ptr %3262, align 8, !tbaa !11
  %3264 = load ptr, ptr %25, align 8, !tbaa !5
  %3265 = load i64, ptr %51, align 8, !tbaa !9
  %3266 = getelementptr inbounds double, ptr %3264, i64 %3265
  store double %3263, ptr %3266, align 8, !tbaa !11
  %3267 = load double, ptr %71, align 8, !tbaa !11
  %3268 = load ptr, ptr %25, align 8, !tbaa !5
  %3269 = load i64, ptr %52, align 8, !tbaa !9
  %3270 = getelementptr inbounds double, ptr %3268, i64 %3269
  store double %3267, ptr %3270, align 8, !tbaa !11
  %3271 = load ptr, ptr %24, align 8, !tbaa !5
  %3272 = load i64, ptr %51, align 8, !tbaa !9
  %3273 = getelementptr inbounds double, ptr %3271, i64 %3272
  %3274 = load double, ptr %3273, align 8, !tbaa !11
  store double %3274, ptr %71, align 8, !tbaa !11
  %3275 = load ptr, ptr %24, align 8, !tbaa !5
  %3276 = load i64, ptr %52, align 8, !tbaa !9
  %3277 = getelementptr inbounds double, ptr %3275, i64 %3276
  %3278 = load double, ptr %3277, align 8, !tbaa !11
  %3279 = load ptr, ptr %24, align 8, !tbaa !5
  %3280 = load i64, ptr %51, align 8, !tbaa !9
  %3281 = getelementptr inbounds double, ptr %3279, i64 %3280
  store double %3278, ptr %3281, align 8, !tbaa !11
  %3282 = load double, ptr %71, align 8, !tbaa !11
  %3283 = load ptr, ptr %24, align 8, !tbaa !5
  %3284 = load i64, ptr %52, align 8, !tbaa !9
  %3285 = getelementptr inbounds double, ptr %3283, i64 %3284
  store double %3282, ptr %3285, align 8, !tbaa !11
  %3286 = load ptr, ptr %20, align 8, !tbaa !5
  %3287 = load ptr, ptr %22, align 8, !tbaa !5
  %3288 = load i64, ptr %51, align 8, !tbaa !9
  %3289 = load i64, ptr %36, align 8, !tbaa !9
  %3290 = mul nsw i64 %3288, %3289
  %3291 = add nsw i64 %3290, 1
  %3292 = getelementptr inbounds double, ptr %3287, i64 %3291
  %3293 = load ptr, ptr %22, align 8, !tbaa !5
  %3294 = load i64, ptr %52, align 8, !tbaa !9
  %3295 = load i64, ptr %36, align 8, !tbaa !9
  %3296 = mul nsw i64 %3294, %3295
  %3297 = add nsw i64 %3296, 1
  %3298 = getelementptr inbounds double, ptr %3293, i64 %3297
  %3299 = call i32 @f2c_dswap(ptr noundef %3286, ptr noundef %3292, ptr noundef @c__1, ptr noundef %3298, ptr noundef @c__1)
  %3300 = load i64, ptr %78, align 8, !tbaa !9
  %3301 = icmp ne i64 %3300, 0
  br i1 %3301, label %3302, label %3316

3302:                                             ; preds = %3255
  %3303 = load ptr, ptr %27, align 8, !tbaa !5
  %3304 = load i64, ptr %51, align 8, !tbaa !9
  %3305 = load i64, ptr %38, align 8, !tbaa !9
  %3306 = mul nsw i64 %3304, %3305
  %3307 = add nsw i64 %3306, 1
  %3308 = getelementptr inbounds double, ptr %3303, i64 %3307
  %3309 = load ptr, ptr %27, align 8, !tbaa !5
  %3310 = load i64, ptr %52, align 8, !tbaa !9
  %3311 = load i64, ptr %38, align 8, !tbaa !9
  %3312 = mul nsw i64 %3310, %3311
  %3313 = add nsw i64 %3312, 1
  %3314 = getelementptr inbounds double, ptr %3309, i64 %3313
  %3315 = call i32 @f2c_dswap(ptr noundef %65, ptr noundef %3308, ptr noundef @c__1, ptr noundef %3314, ptr noundef @c__1)
  br label %3316

3316:                                             ; preds = %3302, %3255
  br label %3317

3317:                                             ; preds = %3316, %3239
  br label %3318

3318:                                             ; preds = %3317
  %3319 = load i64, ptr %51, align 8, !tbaa !9
  %3320 = add nsw i64 %3319, 1
  store i64 %3320, ptr %51, align 8, !tbaa !9
  br label %3235, !llvm.loop !23

3321:                                             ; preds = %3235
  store i32 0, ptr %18, align 4
  store i32 1, ptr %94, align 4
  br label %3322

3322:                                             ; preds = %3321, %208
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  %3323 = load i32, ptr %18, align 4
  ret i32 %3323
}

; 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 i32 @xerbla_(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

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

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

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

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

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

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

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

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

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

; 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = distinct !{!22, !14}
!23 = distinct !{!23, !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 [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_b42 = external hidden global double, align 8

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

42:                                               ; preds = %17
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not = icmp eq i64 %43, 0
  br i1 %.not, label %68, label %44

44:                                               ; preds = %42, %17
  %45 = load i64, ptr %1, align 8, !tbaa !5
  %46 = icmp slt i64 %45, 0
  br i1 %46, label %68, label %47

47:                                               ; preds = %44
  %48 = load i64, ptr %2, align 8, !tbaa !5
  %or.cond1336 = icmp ugt i64 %48, %45
  br i1 %or.cond1336, label %68, label %49

49:                                               ; preds = %47
  %50 = load i64, ptr %4, align 8, !tbaa !5
  %51 = icmp slt i64 %50, %45
  br i1 %51, label %68, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %7, align 8, !tbaa !5
  %54 = icmp slt i64 %53, 0
  br i1 %54, label %68, label %55

55:                                               ; preds = %52
  %56 = load i64, ptr %9, align 8, !tbaa !5
  %57 = icmp slt i64 %56, %45
  br i1 %57, label %68, label %58

58:                                               ; preds = %55
  %59 = load double, ptr %12, align 8, !tbaa !9
  %60 = load double, ptr %10, align 8, !tbaa !9
  %61 = fcmp ugt double %59, %60
  br i1 %61, label %62, label %68

62:                                               ; preds = %58
  %63 = load i64, ptr %13, align 8, !tbaa !5
  %64 = icmp slt i64 %63, 0
  br i1 %64, label %68, label %65

65:                                               ; preds = %62
  %66 = load i64, ptr %15, align 8, !tbaa !5
  %67 = icmp slt i64 %66, %45
  br i1 %67, label %68, label %70

68:                                               ; preds = %65, %62, %58, %55, %52, %49, %47, %44, %42
  %.sink = phi i64 [ -1, %42 ], [ -2, %44 ], [ -3, %47 ], [ -5, %49 ], [ -8, %52 ], [ -10, %55 ], [ -13, %58 ], [ -14, %62 ], [ -16, %65 ]
  %.ph.neg = phi i64 [ 1, %42 ], [ 2, %44 ], [ 3, %47 ], [ 5, %49 ], [ 8, %52 ], [ 10, %55 ], [ 13, %58 ], [ 14, %62 ], [ 16, %65 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  store i64 %.ph.neg, ptr %18, align 8, !tbaa !5
  %69 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %18) #6
  br label %.loopexit

70:                                               ; preds = %65
  store i64 0, ptr %16, align 8, !tbaa !5
  br i1 %40, label %71, label %73

71:                                               ; preds = %70
  %72 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %72, ptr %23, align 8, !tbaa !5
  br label %76

73:                                               ; preds = %70
  br i1 %41, label %74, label %76

74:                                               ; preds = %73
  %75 = load i64, ptr %7, align 8, !tbaa !5
  store i64 %75, ptr %23, align 8, !tbaa !5
  br label %76

76:                                               ; preds = %73, %74, %71
  %77 = tail call double @sqrt(double noundef %60) #6
  %78 = load double, ptr %11, align 8, !tbaa !9
  %79 = tail call double @sqrt(double noundef %78) #6
  %80 = load double, ptr %11, align 8, !tbaa !9
  %81 = load double, ptr %10, align 8, !tbaa !9
  %82 = fdiv double %80, %81
  %83 = fdiv double 1.000000e+00, %80
  %84 = fdiv double 1.000000e+00, %79
  %85 = fdiv double 1.000000e+00, %77
  %86 = load double, ptr %12, align 8, !tbaa !9
  %87 = tail call double @sqrt(double noundef %86) #6
  %88 = load i64, ptr %2, align 8, !tbaa !5
  %89 = add nsw i64 %88, -1
  %90 = mul nsw i64 %89, %88
  %91 = sdiv i64 %90, 2
  store double 0.000000e+00, ptr %29, align 16, !tbaa !9
  %spec.select = tail call i64 @llvm.smin.i64(i64 %88, i64 8)
  %92 = sdiv i64 %88, %spec.select
  %93 = mul nsw i64 %92, %spec.select
  %.not1307 = icmp ne i64 %93, %88
  %94 = zext i1 %.not1307 to i64
  %.01251 = add i64 %92, %94
  %95 = mul nsw i64 %spec.select, %spec.select
  %96 = tail call i64 @llvm.smin.i64(i64 %88, i64 5)
  %97 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %97, ptr %18, align 8, !tbaa !5
  %invariant.gep1656 = getelementptr i8, ptr %34, i64 8
  %.not13081660 = icmp slt i64 %97, 1
  br i1 %.not13081660, label %._crit_edge1665, label %.lr.ph1664

.lr.ph1664:                                       ; preds = %76
  %98 = add i64 %spec.select, -1
  %invariant.gep1480 = getelementptr i8, ptr %37, i64 8
  %99 = getelementptr inbounds i8, ptr %29, i64 16
  %.not13091643 = icmp slt i64 %.01251, 1
  %100 = insertelement <2 x double> poison, double %82, i64 0
  %101 = shufflevector <2 x double> %100, <2 x double> poison, <2 x i32> zeroinitializer
  br label %102

102:                                              ; preds = %.lr.ph1664, %993
  %103 = phi i64 [ %88, %.lr.ph1664 ], [ %974, %993 ]
  %.012391662 = phi i64 [ 0, %.lr.ph1664 ], [ %.11240, %993 ]
  %.012591661 = phi i64 [ 1, %.lr.ph1664 ], [ %994, %993 ]
  store i64 %.01251, ptr %19, align 8, !tbaa !5
  br i1 %.not13091643, label %._crit_edge1651, label %.lr.ph1650

.lr.ph1650:                                       ; preds = %102
  %.not1335 = icmp sle i64 %.012591661, %.012391662
  br label %104

..loopexit1373_crit_edge:                         ; preds = %.lr.ph1641, %middle.block
  %.lcssa1761 = phi double [ %951, %middle.block ], [ %953, %.lr.ph1641 ]
  store double %.lcssa1761, ptr %21, align 8, !tbaa !9
  br label %.loopexit1373

.loopexit1373:                                    ; preds = %..loopexit1373_crit_edge, %.loopexit1374
  %indvar.next = add i64 %indvar, 1
  br i1 %.not13151626.not, label %104, label %._crit_edge1651, !llvm.loop !11

104:                                              ; preds = %.lr.ph1650, %.loopexit1373
  %indvar = phi i64 [ 0, %.lr.ph1650 ], [ %indvar.next, %.loopexit1373 ]
  %indvars.iv.in = phi i64 [ %.01251, %.lr.ph1650 ], [ %indvars.iv, %.loopexit1373 ]
  %.011921648 = phi i64 [ 0, %.lr.ph1650 ], [ %.14, %.loopexit1373 ]
  %.011931647 = phi i64 [ 0, %.lr.ph1650 ], [ %.17, %.loopexit1373 ]
  %.012081646 = phi double [ 0.000000e+00, %.lr.ph1650 ], [ %.151223, %.loopexit1373 ]
  %.012251645 = phi double [ 0.000000e+00, %.lr.ph1650 ], [ %.131238, %.loopexit1373 ]
  %.012521644 = phi i64 [ 1, %.lr.ph1650 ], [ %516, %.loopexit1373 ]
  %105 = mul i64 %spec.select, %indvar
  %indvars.iv = add i64 %indvars.iv.in, -1
  %.inv1701 = icmp slt i64 %indvars.iv, 1
  %106 = select i1 %.inv1701, i64 1, i64 2
  %107 = add nsw i64 %.012521644, -1
  %108 = mul nsw i64 %107, %spec.select
  %109 = add nsw i64 %108, 1
  %110 = sub nsw i64 %.01251, %.012521644
  store i64 %110, ptr %20, align 8, !tbaa !5
  %.not13141499 = icmp slt i64 %110, 0
  br i1 %.not13141499, label %._crit_edge1508, label %.lr.ph1507

.lr.ph1507:                                       ; preds = %104, %._crit_edge
  %.11505 = phi i64 [ %.2.lcssa, %._crit_edge ], [ %.011921648, %104 ]
  %.111941504 = phi i64 [ %.21195.lcssa, %._crit_edge ], [ %.011931647, %104 ]
  %.112091503 = phi double [ %.21210.lcssa, %._crit_edge ], [ %.012081646, %104 ]
  %.112261502 = phi double [ %.21227.lcssa, %._crit_edge ], [ %.012251645, %104 ]
  %.012531501 = phi i64 [ %112, %._crit_edge ], [ %109, %104 ]
  %.012611500 = phi i64 [ %515, %._crit_edge ], [ 0, %104 ]
  %111 = mul nuw nsw i64 %.012611500, %spec.select
  %112 = add nsw i64 %.012531501, %111
  %113 = add i64 %98, %112
  store i64 %113, ptr %20, align 8, !tbaa !5
  %114 = load i64, ptr %2, align 8, !tbaa !5
  %115 = add nsw i64 %114, -1
  %116 = call i64 @llvm.smin.i64(i64 %113, i64 %115)
  %.not13271489 = icmp sgt i64 %112, %116
  br i1 %.not13271489, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph1507
  %117 = icmp eq i64 %.012611500, 0
  %118 = zext i1 %117 to i64
  br label %119

119:                                              ; preds = %.lr.ph, %513
  %.21494 = phi i64 [ %.11505, %.lr.ph ], [ %.7, %513 ]
  %.211951493 = phi i64 [ %.111941504, %.lr.ph ], [ %.91202, %513 ]
  %.212101492 = phi double [ %.112091503, %.lr.ph ], [ %.71215, %513 ]
  %.212271491 = phi double [ %.112261502, %.lr.ph ], [ %.61231, %513 ]
  %.012621490 = phi i64 [ %112, %.lr.ph ], [ %514, %513 ]
  %120 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %120, %.012621490
  %121 = add i64 %reass.sub, 1
  store i64 %121, ptr %20, align 8, !tbaa !5
  %122 = getelementptr inbounds double, ptr %30, i64 %.012621490
  %123 = call i64 @f2c_idamax(ptr noundef nonnull %20, ptr noundef nonnull %122, ptr noundef nonnull @c__1) #6
  %124 = add i64 %.012621490, -1
  %125 = add i64 %124, %123
  %.not1328 = icmp eq i64 %.012621490, %125
  br i1 %.not1328, label %142, label %126

126:                                              ; preds = %119
  %127 = mul nsw i64 %.012621490, %32
  %gep1477 = getelementptr double, ptr %invariant.gep1656, i64 %127
  %128 = mul nsw i64 %125, %32
  %gep1479 = getelementptr double, ptr %invariant.gep1656, i64 %128
  %129 = call i32 @f2c_dswap(ptr noundef nonnull %1, ptr noundef %gep1477, ptr noundef nonnull @c__1, ptr noundef %gep1479, ptr noundef nonnull @c__1) #6
  br i1 %or.cond, label %130, label %134

130:                                              ; preds = %126
  %131 = mul nsw i64 %.012621490, %35
  %gep1481 = getelementptr double, ptr %invariant.gep1480, i64 %131
  %132 = mul nsw i64 %125, %35
  %gep1483 = getelementptr double, ptr %invariant.gep1480, i64 %132
  %133 = call i32 @f2c_dswap(ptr noundef nonnull %23, ptr noundef %gep1481, ptr noundef nonnull @c__1, ptr noundef %gep1483, ptr noundef nonnull @c__1) #6
  br label %134

134:                                              ; preds = %130, %126
  %135 = load double, ptr %122, align 8, !tbaa !9
  %136 = getelementptr inbounds double, ptr %30, i64 %125
  %137 = load double, ptr %136, align 8, !tbaa !9
  store double %137, ptr %122, align 8, !tbaa !9
  store double %135, ptr %136, align 8, !tbaa !9
  %138 = getelementptr inbounds double, ptr %31, i64 %.012621490
  %139 = load double, ptr %138, align 8, !tbaa !9
  store double %139, ptr %28, align 8, !tbaa !9
  %140 = getelementptr inbounds double, ptr %31, i64 %125
  %141 = load double, ptr %140, align 8, !tbaa !9
  store double %141, ptr %138, align 8, !tbaa !9
  store double %139, ptr %140, align 8, !tbaa !9
  br label %142

142:                                              ; preds = %134, %119
  %143 = load double, ptr %122, align 8, !tbaa !9
  br i1 %117, label %144, label %thread-pre-split

144:                                              ; preds = %142
  %145 = fcmp olt double %143, %84
  %146 = fcmp ogt double %143, %79
  %or.cond1337 = and i1 %145, %146
  br i1 %or.cond1337, label %147, label %150

147:                                              ; preds = %144
  %148 = mul nsw i64 %.012621490, %32
  %gep1487 = getelementptr double, ptr %invariant.gep1656, i64 %148
  %149 = call double @f2c_dnrm2(ptr noundef nonnull %1, ptr noundef %gep1487, ptr noundef nonnull @c__1) #6
  br label %157

150:                                              ; preds = %144
  store double 0.000000e+00, ptr %28, align 8, !tbaa !9
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  %151 = mul nsw i64 %.012621490, %32
  %gep1485 = getelementptr double, ptr %invariant.gep1656, i64 %151
  %152 = call i32 @dlassq_(ptr noundef nonnull %1, ptr noundef %gep1485, ptr noundef nonnull @c__1, ptr noundef nonnull %28, ptr noundef nonnull %24) #6
  %153 = load double, ptr %28, align 8, !tbaa !9
  %154 = load double, ptr %24, align 8, !tbaa !9
  %155 = call double @sqrt(double noundef %154) #6
  %156 = fmul double %153, %155
  br label %157

157:                                              ; preds = %150, %147
  %.sink1720 = phi double [ %156, %150 ], [ %149, %147 ]
  %158 = getelementptr inbounds double, ptr %31, i64 %.012621490
  %159 = load double, ptr %158, align 8, !tbaa !9
  %160 = fmul double %.sink1720, %159
  store double %160, ptr %122, align 8, !tbaa !9
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %142, %157
  %storemerge1329 = phi double [ %160, %157 ], [ %143, %142 ]
  store double %storemerge1329, ptr %24, align 8, !tbaa !9
  %161 = fcmp ogt double %storemerge1329, 0.000000e+00
  br i1 %161, label %162, label %507

162:                                              ; preds = %thread-pre-split
  %163 = load i64, ptr %2, align 8, !tbaa !5
  %. = call i64 @llvm.smin.i64(i64 %113, i64 %163)
  store i64 %., ptr %20, align 8, !tbaa !5
  %164 = mul nsw i64 %.012621490, %32
  %gep = getelementptr double, ptr %invariant.gep1656, i64 %164
  %165 = getelementptr inbounds double, ptr %31, i64 %.012621490
  %166 = mul nsw i64 %.012621490, %35
  %gep1425 = getelementptr double, ptr %invariant.gep1480, i64 %166
  br label %167

167:                                              ; preds = %501, %162
  %.01266.in = phi i64 [ %.012621490, %162 ], [ %.01266, %501 ]
  %.01254 = phi i64 [ 0, %162 ], [ %.21256, %501 ]
  %.31228 = phi double [ %.212271491, %162 ], [ %.41229, %501 ]
  %.31211 = phi double [ %.212101492, %162 ], [ %.51213, %501 ]
  %.31196 = phi i64 [ %.211951493, %162 ], [ %.71200, %501 ]
  %.3 = phi i64 [ %.21494, %162 ], [ %.5, %501 ]
  %.01266 = add nsw i64 %.01266.in, 1
  %168 = load i64, ptr %20, align 8, !tbaa !5
  %.not1333.not = icmp slt i64 %.01266.in, %168
  br i1 %.not1333.not, label %169, label %.loopexit1372.loopexit

169:                                              ; preds = %167
  %170 = getelementptr double, ptr %6, i64 %.01266.in
  %171 = load double, ptr %170, align 8, !tbaa !9
  store double %171, ptr %26, align 8, !tbaa !9
  %172 = fcmp ogt double %171, 0.000000e+00
  br i1 %172, label %173, label %499

173:                                              ; preds = %169
  %174 = load double, ptr %24, align 8, !tbaa !9
  %175 = fcmp ult double %171, 1.000000e+00
  br i1 %175, label %202, label %176

176:                                              ; preds = %173
  %177 = fmul double %82, %174
  %178 = fcmp ole double %177, %171
  %179 = fdiv double %83, %171
  %180 = fcmp olt double %174, %179
  %181 = getelementptr double, ptr %5, i64 %.01266.in
  br i1 %180, label %182, label %193

182:                                              ; preds = %176
  %183 = mul nsw i64 %.01266, %32
  %gep1407 = getelementptr double, ptr %invariant.gep1656, i64 %183
  %184 = call double @f2c_ddot(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep1407, ptr noundef nonnull @c__1) #6
  %185 = load double, ptr %165, align 8, !tbaa !9
  %186 = fmul double %184, %185
  %187 = load double, ptr %181, align 8, !tbaa !9
  %188 = fmul double %186, %187
  %189 = load double, ptr %26, align 8, !tbaa !9
  %190 = fdiv double %188, %189
  %191 = load double, ptr %24, align 8, !tbaa !9
  %192 = fdiv double %190, %191
  store double %192, ptr %25, align 8, !tbaa !9
  br label %228

193:                                              ; preds = %176
  %194 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #6
  %195 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %165, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %196 = mul nsw i64 %.01266, %32
  %gep1403 = getelementptr double, ptr %invariant.gep1656, i64 %196
  %197 = call double @f2c_ddot(ptr noundef nonnull %1, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef %gep1403, ptr noundef nonnull @c__1) #6
  %198 = load double, ptr %181, align 8, !tbaa !9
  %199 = fmul double %197, %198
  %200 = load double, ptr %26, align 8, !tbaa !9
  %201 = fdiv double %199, %200
  store double %201, ptr %25, align 8, !tbaa !9
  br label %228

202:                                              ; preds = %173
  %203 = fdiv double %171, %82
  %204 = fcmp ole double %174, %203
  %205 = fdiv double %82, %171
  %206 = fcmp ogt double %174, %205
  %207 = mul nsw i64 %.01266, %32
  %gep1415 = getelementptr double, ptr %invariant.gep1656, i64 %207
  br i1 %206, label %208, label %219

208:                                              ; preds = %202
  %209 = call double @f2c_ddot(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep1415, ptr noundef nonnull @c__1) #6
  %210 = load double, ptr %165, align 8, !tbaa !9
  %211 = fmul double %209, %210
  %212 = getelementptr double, ptr %5, i64 %.01266.in
  %213 = load double, ptr %212, align 8, !tbaa !9
  %214 = fmul double %211, %213
  %215 = load double, ptr %26, align 8, !tbaa !9
  %216 = fdiv double %214, %215
  %217 = load double, ptr %24, align 8, !tbaa !9
  %218 = fdiv double %216, %217
  store double %218, ptr %25, align 8, !tbaa !9
  br label %228

219:                                              ; preds = %202
  %220 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep1415, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #6
  %221 = getelementptr double, ptr %5, i64 %.01266.in
  %222 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef %221, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %223 = call double @f2c_ddot(ptr noundef nonnull %1, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %224 = load double, ptr %165, align 8, !tbaa !9
  %225 = fmul double %223, %224
  %226 = load double, ptr %24, align 8, !tbaa !9
  %227 = fdiv double %225, %226
  store double %227, ptr %25, align 8, !tbaa !9
  br label %228

228:                                              ; preds = %208, %219, %182, %193
  %229 = phi double [ %192, %182 ], [ %201, %193 ], [ %218, %208 ], [ %227, %219 ]
  %.01246.in = phi i1 [ %178, %182 ], [ %178, %193 ], [ %204, %208 ], [ %204, %219 ]
  store double %.31228, ptr %21, align 8, !tbaa !9
  %230 = fcmp oge double %229, 0.000000e+00
  %231 = fneg double %229
  %232 = select i1 %230, double %229, double %231
  %233 = fcmp oge double %.31228, %232
  %234 = select i1 %233, double %.31228, double %232
  %235 = load double, ptr %12, align 8, !tbaa !9
  %236 = fcmp ogt double %232, %235
  br i1 %236, label %237, label %497

237:                                              ; preds = %228
  %.11255 = select i1 %117, i64 0, i64 %.01254
  %.41197 = select i1 %117, i64 0, i64 %.31196
  %.4 = add nsw i64 %.3, %118
  br i1 %.01246.in, label %238, label %435

238:                                              ; preds = %237
  %239 = load double, ptr %26, align 8, !tbaa !9
  %240 = load double, ptr %24, align 8, !tbaa !9
  %241 = insertelement <2 x double> poison, double %239, i64 0
  %242 = insertelement <2 x double> %241, double %240, i64 1
  %243 = insertelement <2 x double> poison, double %240, i64 0
  %244 = insertelement <2 x double> %243, double %239, i64 1
  %245 = fdiv <2 x double> %242, %244
  %246 = extractelement <2 x double> %245, i64 0
  %247 = extractelement <2 x double> %245, i64 1
  %248 = fsub double %246, %247
  store double %248, ptr %21, align 8, !tbaa !9
  %249 = fcmp oge double %248, 0.000000e+00
  %250 = fneg double %248
  %251 = select i1 %249, double %248, double %250
  %252 = fmul double %251, -5.000000e-01
  %253 = fdiv double %252, %229
  %254 = fcmp oge double %253, 0.000000e+00
  %255 = fneg double %253
  %256 = select i1 %254, double %253, double %255
  %257 = fcmp ogt double %256, %85
  br i1 %257, label %258, label %298

258:                                              ; preds = %238
  %259 = fdiv double 5.000000e-01, %253
  store double %259, ptr %22, align 8, !tbaa !9
  %260 = load double, ptr %165, align 8, !tbaa !9
  %261 = getelementptr double, ptr %5, i64 %.01266.in
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fneg double %259
  %264 = insertelement <2 x double> poison, double %259, i64 0
  %265 = insertelement <2 x double> %264, double %262, i64 1
  %266 = insertelement <2 x double> poison, double %260, i64 0
  %267 = insertelement <2 x double> %266, double %263, i64 1
  %268 = fmul <2 x double> %265, %267
  %269 = insertelement <2 x double> poison, double %262, i64 0
  %270 = insertelement <2 x double> %269, double %260, i64 1
  %271 = fdiv <2 x double> %268, %270
  store <2 x double> %271, ptr %99, align 16, !tbaa !9
  %272 = mul nsw i64 %.01266, %32
  %gep1463 = getelementptr double, ptr %invariant.gep1656, i64 %272
  %273 = call i32 @f2c_drotm(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep1463, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br i1 %or.cond, label %274, label %277

274:                                              ; preds = %258
  %275 = mul nsw i64 %.01266, %35
  %gep1467 = getelementptr double, ptr %invariant.gep1480, i64 %275
  %276 = call i32 @f2c_drotm(ptr noundef nonnull %23, ptr noundef %gep1425, ptr noundef nonnull @c__1, ptr noundef %gep1467, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br label %277

277:                                              ; preds = %274, %258
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  %278 = load double, ptr %22, align 8, !tbaa !9
  %279 = fmul double %247, %278
  %280 = load double, ptr %25, align 8, !tbaa !9
  %281 = call double @llvm.fmuladd.f64(double %279, double %280, double 1.000000e+00)
  %282 = load double, ptr %26, align 8, !tbaa !9
  %283 = fcmp ole double %281, 0.000000e+00
  %284 = select i1 %283, double 0.000000e+00, double %281
  %sqrt = call double @llvm.sqrt.f64(double %284)
  %285 = fmul double %282, %sqrt
  store double %285, ptr %170, align 8, !tbaa !9
  %286 = fneg double %278
  %287 = fmul double %246, %286
  %288 = call double @llvm.fmuladd.f64(double %287, double %280, double 1.000000e+00)
  %289 = call double @sqrt(double noundef %288) #6
  %290 = load double, ptr %24, align 8, !tbaa !9
  %291 = fmul double %289, %290
  store double %291, ptr %24, align 8, !tbaa !9
  %292 = load double, ptr %22, align 8
  %293 = fcmp oge double %292, 0.000000e+00
  %294 = fneg double %292
  %295 = select i1 %293, double %292, double %294
  %296 = fcmp oge double %.31211, %295
  %297 = select i1 %296, double %.31211, double %295
  br label %457

298:                                              ; preds = %238
  %299 = call double @d_sign(ptr noundef nonnull @c_b42, ptr noundef nonnull %25) #6
  %300 = fneg double %299
  %301 = call double @llvm.fmuladd.f64(double %253, double %253, double 1.000000e+00)
  %sqrt1362 = call double @llvm.sqrt.f64(double %301)
  %302 = call double @llvm.fmuladd.f64(double %300, double %sqrt1362, double %253)
  %303 = fdiv double 1.000000e+00, %302
  store double %303, ptr %22, align 8, !tbaa !9
  %304 = call double @llvm.fmuladd.f64(double %303, double %303, double 1.000000e+00)
  %305 = fdiv double 1.000000e+00, %304
  %sqrt1361 = call double @llvm.sqrt.f64(double %305)
  %306 = fmul double %303, %sqrt1361
  %307 = fcmp oge double %306, 0.000000e+00
  %308 = fneg double %306
  %309 = select i1 %307, double %306, double %308
  %310 = fcmp oge double %.31211, %309
  %311 = select i1 %310, double %.31211, double %309
  %312 = load double, ptr %25, align 8, !tbaa !9
  %313 = load double, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  %314 = fneg double %303
  %315 = insertelement <2 x double> poison, double %314, i64 0
  %316 = insertelement <2 x double> %315, double %303, i64 1
  %317 = fmul <2 x double> %245, %316
  %318 = insertelement <2 x double> poison, double %312, i64 0
  %319 = shufflevector <2 x double> %318, <2 x double> poison, <2 x i32> zeroinitializer
  %320 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %317, <2 x double> %319, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %321 = fcmp ole <2 x double> %320, zeroinitializer
  %322 = extractelement <2 x i1> %321, i64 1
  %323 = extractelement <2 x double> %320, i64 1
  %324 = select i1 %322, double 0.000000e+00, double %323
  %sqrt1360 = call double @llvm.sqrt.f64(double %324)
  %325 = fmul double %313, %sqrt1360
  store double %325, ptr %170, align 8, !tbaa !9
  %326 = extractelement <2 x i1> %321, i64 0
  %327 = extractelement <2 x double> %320, i64 0
  %328 = select i1 %326, double 0.000000e+00, double %327
  %sqrt1359 = call double @llvm.sqrt.f64(double %328)
  %329 = load double, ptr %24, align 8, !tbaa !9
  %330 = fmul double %329, %sqrt1359
  store double %330, ptr %24, align 8, !tbaa !9
  %331 = load double, ptr %165, align 8, !tbaa !9
  %332 = getelementptr double, ptr %5, i64 %.01266.in
  %333 = load double, ptr %332, align 8, !tbaa !9
  %334 = insertelement <2 x double> poison, double %333, i64 0
  %335 = insertelement <2 x double> %334, double %331, i64 1
  %336 = insertelement <2 x double> poison, double %331, i64 0
  %337 = insertelement <2 x double> %336, double %333, i64 1
  %338 = fdiv <2 x double> %335, %337
  %339 = fcmp ult double %331, 1.000000e+00
  %340 = fcmp ult double %333, 1.000000e+00
  br i1 %339, label %373, label %341

341:                                              ; preds = %298
  br i1 %340, label %353, label %342

342:                                              ; preds = %341
  %343 = fmul <2 x double> %338, %316
  %344 = shufflevector <2 x double> %343, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  store <2 x double> %344, ptr %99, align 16, !tbaa !9
  %345 = fmul double %sqrt1361, %331
  store double %345, ptr %165, align 8, !tbaa !9
  %346 = load double, ptr %332, align 8, !tbaa !9
  %347 = fmul double %sqrt1361, %346
  store double %347, ptr %332, align 8, !tbaa !9
  %348 = mul nsw i64 %.01266, %32
  %gep1423 = getelementptr double, ptr %invariant.gep1656, i64 %348
  %349 = call i32 @f2c_drotm(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep1423, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br i1 %or.cond, label %350, label %457

350:                                              ; preds = %342
  %351 = mul nsw i64 %.01266, %35
  %gep1427 = getelementptr double, ptr %invariant.gep1480, i64 %351
  %352 = call i32 @f2c_drotm(ptr noundef nonnull %23, ptr noundef %gep1425, ptr noundef nonnull @c__1, ptr noundef %gep1427, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br label %457

353:                                              ; preds = %341
  %354 = extractelement <2 x double> %338, i64 0
  %355 = fmul double %354, %314
  store double %355, ptr %21, align 8, !tbaa !9
  %356 = mul nsw i64 %.01266, %32
  %gep1429 = getelementptr double, ptr %invariant.gep1656, i64 %356
  %357 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1429, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %358 = fmul double %sqrt1361, %306
  %359 = extractelement <2 x double> %338, i64 1
  %360 = fmul double %358, %359
  store double %360, ptr %21, align 8, !tbaa !9
  %361 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep1429, ptr noundef nonnull @c__1) #6
  %362 = load double, ptr %165, align 8, !tbaa !9
  %363 = fmul double %sqrt1361, %362
  store double %363, ptr %165, align 8, !tbaa !9
  %364 = load double, ptr %332, align 8, !tbaa !9
  %365 = fdiv double %364, %sqrt1361
  store double %365, ptr %332, align 8, !tbaa !9
  br i1 %or.cond, label %366, label %457

366:                                              ; preds = %353
  %367 = load double, ptr %22, align 8, !tbaa !9
  %368 = fneg double %367
  %369 = fmul double %354, %368
  store double %369, ptr %21, align 8, !tbaa !9
  %370 = mul nsw i64 %.01266, %35
  %gep1433 = getelementptr double, ptr %invariant.gep1480, i64 %370
  %371 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1433, ptr noundef nonnull @c__1, ptr noundef %gep1425, ptr noundef nonnull @c__1) #6
  store double %360, ptr %21, align 8, !tbaa !9
  %372 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1425, ptr noundef nonnull @c__1, ptr noundef %gep1433, ptr noundef nonnull @c__1) #6
  br label %457

373:                                              ; preds = %298
  br i1 %340, label %394, label %374

374:                                              ; preds = %373
  %375 = extractelement <2 x double> %338, i64 1
  %376 = fmul double %375, %303
  store double %376, ptr %21, align 8, !tbaa !9
  %377 = mul nsw i64 %.01266, %32
  %gep1439 = getelementptr double, ptr %invariant.gep1656, i64 %377
  %378 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep1439, ptr noundef nonnull @c__1) #6
  %379 = fneg double %sqrt1361
  %380 = fmul double %306, %379
  %381 = extractelement <2 x double> %338, i64 0
  %382 = fmul double %380, %381
  store double %382, ptr %21, align 8, !tbaa !9
  %383 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1439, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %384 = load double, ptr %165, align 8, !tbaa !9
  %385 = fdiv double %384, %sqrt1361
  store double %385, ptr %165, align 8, !tbaa !9
  %386 = load double, ptr %332, align 8, !tbaa !9
  %387 = fmul double %sqrt1361, %386
  store double %387, ptr %332, align 8, !tbaa !9
  br i1 %or.cond, label %388, label %457

388:                                              ; preds = %374
  %389 = load double, ptr %22, align 8, !tbaa !9
  %390 = fmul double %375, %389
  store double %390, ptr %21, align 8, !tbaa !9
  %391 = mul nsw i64 %.01266, %35
  %gep1443 = getelementptr double, ptr %invariant.gep1480, i64 %391
  %392 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1425, ptr noundef nonnull @c__1, ptr noundef %gep1443, ptr noundef nonnull @c__1) #6
  store double %382, ptr %21, align 8, !tbaa !9
  %393 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1443, ptr noundef nonnull @c__1, ptr noundef %gep1425, ptr noundef nonnull @c__1) #6
  br label %457

394:                                              ; preds = %373
  %395 = fcmp ult double %331, %333
  %396 = mul nsw i64 %.01266, %32
  %gep1455 = getelementptr double, ptr %invariant.gep1656, i64 %396
  br i1 %395, label %416, label %397

397:                                              ; preds = %394
  %398 = extractelement <2 x double> %338, i64 0
  %399 = fmul double %398, %314
  store double %399, ptr %21, align 8, !tbaa !9
  %400 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1455, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %401 = fmul double %sqrt1361, %306
  %402 = extractelement <2 x double> %338, i64 1
  %403 = fmul double %401, %402
  store double %403, ptr %21, align 8, !tbaa !9
  %404 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep1455, ptr noundef nonnull @c__1) #6
  %405 = load double, ptr %165, align 8, !tbaa !9
  %406 = fmul double %sqrt1361, %405
  store double %406, ptr %165, align 8, !tbaa !9
  %407 = load double, ptr %332, align 8, !tbaa !9
  %408 = fdiv double %407, %sqrt1361
  store double %408, ptr %332, align 8, !tbaa !9
  br i1 %or.cond, label %409, label %457

409:                                              ; preds = %397
  %410 = load double, ptr %22, align 8, !tbaa !9
  %411 = fneg double %410
  %412 = fmul double %398, %411
  store double %412, ptr %21, align 8, !tbaa !9
  %413 = mul nsw i64 %.01266, %35
  %gep1449 = getelementptr double, ptr %invariant.gep1480, i64 %413
  %414 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1449, ptr noundef nonnull @c__1, ptr noundef %gep1425, ptr noundef nonnull @c__1) #6
  store double %403, ptr %21, align 8, !tbaa !9
  %415 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1425, ptr noundef nonnull @c__1, ptr noundef %gep1449, ptr noundef nonnull @c__1) #6
  br label %457

416:                                              ; preds = %394
  %417 = extractelement <2 x double> %338, i64 1
  %418 = fmul double %417, %303
  store double %418, ptr %21, align 8, !tbaa !9
  %419 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep1455, ptr noundef nonnull @c__1) #6
  %420 = fneg double %sqrt1361
  %421 = fmul double %306, %420
  %422 = extractelement <2 x double> %338, i64 0
  %423 = fmul double %421, %422
  store double %423, ptr %21, align 8, !tbaa !9
  %424 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1455, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %425 = load double, ptr %165, align 8, !tbaa !9
  %426 = fdiv double %425, %sqrt1361
  store double %426, ptr %165, align 8, !tbaa !9
  %427 = load double, ptr %332, align 8, !tbaa !9
  %428 = fmul double %sqrt1361, %427
  store double %428, ptr %332, align 8, !tbaa !9
  br i1 %or.cond, label %429, label %457

429:                                              ; preds = %416
  %430 = load double, ptr %22, align 8, !tbaa !9
  %431 = fmul double %417, %430
  store double %431, ptr %21, align 8, !tbaa !9
  %432 = mul nsw i64 %.01266, %35
  %gep1459 = getelementptr double, ptr %invariant.gep1480, i64 %432
  %433 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1425, ptr noundef nonnull @c__1, ptr noundef %gep1459, ptr noundef nonnull @c__1) #6
  store double %423, ptr %21, align 8, !tbaa !9
  %434 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1459, ptr noundef nonnull @c__1, ptr noundef %gep1425, ptr noundef nonnull @c__1) #6
  br label %457

435:                                              ; preds = %237
  %436 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #6
  %437 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b42, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %438 = mul nsw i64 %.01266, %32
  %gep1419 = getelementptr double, ptr %invariant.gep1656, i64 %438
  %439 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull @c_b42, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %gep1419, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %440 = load double, ptr %25, align 8, !tbaa !9
  %441 = fneg double %440
  %442 = load double, ptr %165, align 8, !tbaa !9
  %443 = fmul double %442, %441
  %444 = getelementptr double, ptr %5, i64 %.01266.in
  %445 = load double, ptr %444, align 8, !tbaa !9
  %446 = fdiv double %443, %445
  store double %446, ptr %28, align 8, !tbaa !9
  %447 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %28, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef %gep1419, ptr noundef nonnull @c__1) #6
  %448 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b42, ptr noundef nonnull %26, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %gep1419, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  %449 = load double, ptr %25, align 8, !tbaa !9
  %450 = fneg double %449
  %451 = call double @llvm.fmuladd.f64(double %450, double %449, double 1.000000e+00)
  %452 = load double, ptr %26, align 8, !tbaa !9
  %453 = fcmp ole double %451, 0.000000e+00
  %454 = select i1 %453, double 0.000000e+00, double %451
  %sqrt1363 = call double @llvm.sqrt.f64(double %454)
  %455 = fmul double %452, %sqrt1363
  store double %455, ptr %170, align 8, !tbaa !9
  %456 = load double, ptr %11, align 8, !tbaa !9
  %.inv = fcmp oge double %.31211, %456
  %..31211 = select i1 %.inv, double %.31211, double %456
  br label %457

457:                                              ; preds = %277, %388, %374, %416, %429, %397, %409, %350, %342, %366, %353, %435
  %.41212 = phi double [ %297, %277 ], [ %311, %350 ], [ %311, %342 ], [ %311, %366 ], [ %311, %353 ], [ %311, %388 ], [ %311, %374 ], [ %311, %409 ], [ %311, %397 ], [ %311, %429 ], [ %311, %416 ], [ %..31211, %435 ]
  %458 = load double, ptr %170, align 8, !tbaa !9
  %459 = load double, ptr %26, align 8, !tbaa !9
  %460 = fdiv double %458, %459
  store double %460, ptr %21, align 8, !tbaa !9
  %461 = fmul double %460, %460
  %462 = fcmp ugt double %461, %77
  br i1 %462, label %479, label %463

463:                                              ; preds = %457
  %464 = fcmp olt double %459, %84
  %465 = fcmp ogt double %459, %79
  %or.cond1338 = and i1 %464, %465
  br i1 %or.cond1338, label %466, label %469

466:                                              ; preds = %463
  %467 = mul nsw i64 %.01266, %32
  %gep1471 = getelementptr double, ptr %invariant.gep1656, i64 %467
  %468 = call double @f2c_dnrm2(ptr noundef nonnull %1, ptr noundef %gep1471, ptr noundef nonnull @c__1) #6
  br label %.sink.split

469:                                              ; preds = %463
  store double 0.000000e+00, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %26, align 8, !tbaa !9
  %470 = mul nsw i64 %.01266, %32
  %gep1469 = getelementptr double, ptr %invariant.gep1656, i64 %470
  %471 = call i32 @dlassq_(ptr noundef nonnull %1, ptr noundef %gep1469, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull %26) #6
  %472 = load double, ptr %22, align 8, !tbaa !9
  %473 = load double, ptr %26, align 8, !tbaa !9
  %474 = call double @sqrt(double noundef %473) #6
  %475 = fmul double %472, %474
  br label %.sink.split

.sink.split:                                      ; preds = %469, %466
  %.sink1724 = phi double [ %468, %466 ], [ %475, %469 ]
  %476 = getelementptr double, ptr %5, i64 %.01266.in
  %477 = load double, ptr %476, align 8, !tbaa !9
  %478 = fmul double %.sink1724, %477
  store double %478, ptr %170, align 8, !tbaa !9
  br label %479

479:                                              ; preds = %.sink.split, %457
  %480 = load double, ptr %24, align 8, !tbaa !9
  %481 = fdiv double %480, %174
  %482 = fcmp ugt double %481, %77
  br i1 %482, label %501, label %483

483:                                              ; preds = %479
  %484 = fcmp olt double %480, %84
  %485 = fcmp ogt double %480, %79
  %or.cond1339 = and i1 %484, %485
  br i1 %or.cond1339, label %486, label %488

486:                                              ; preds = %483
  %487 = call double @f2c_dnrm2(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  br label %494

488:                                              ; preds = %483
  store double 0.000000e+00, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  %489 = call i32 @dlassq_(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull %24) #6
  %490 = load double, ptr %22, align 8, !tbaa !9
  %491 = load double, ptr %24, align 8, !tbaa !9
  %492 = call double @sqrt(double noundef %491) #6
  %493 = fmul double %490, %492
  br label %494

494:                                              ; preds = %488, %486
  %.sink1727 = phi double [ %493, %488 ], [ %487, %486 ]
  %495 = load double, ptr %165, align 8, !tbaa !9
  %496 = fmul double %.sink1727, %495
  store double %496, ptr %24, align 8, !tbaa !9
  store double %496, ptr %122, align 8, !tbaa !9
  br label %501

497:                                              ; preds = %228
  %spec.select1340 = add nsw i64 %.31196, %118
  %498 = add nsw i64 %.01254, 1
  br label %501

499:                                              ; preds = %169
  %spec.select1341 = add nsw i64 %.31196, %118
  %500 = add nsw i64 %.01254, 1
  br label %501

501:                                              ; preds = %497, %494, %479, %499
  %.21256 = phi i64 [ %.11255, %494 ], [ %.11255, %479 ], [ %498, %497 ], [ %500, %499 ]
  %.41229 = phi double [ %234, %494 ], [ %234, %479 ], [ %234, %497 ], [ %.31228, %499 ]
  %.51213 = phi double [ %.41212, %494 ], [ %.41212, %479 ], [ %.31211, %497 ], [ %.31211, %499 ]
  %.71200 = phi i64 [ %.41197, %494 ], [ %.41197, %479 ], [ %spec.select1340, %497 ], [ %spec.select1341, %499 ]
  %.5 = phi i64 [ %.4, %494 ], [ %.4, %479 ], [ %.3, %497 ], [ %.3, %499 ]
  %502 = icmp sgt i64 %.21256, %96
  %or.cond1342 = select i1 %.not1335, i1 %502, i1 false
  br i1 %or.cond1342, label %503, label %167, !llvm.loop !13

503:                                              ; preds = %501
  %.pre1697 = load double, ptr %24, align 8, !tbaa !9
  br i1 %117, label %504, label %.loopexit1372

504:                                              ; preds = %503
  %505 = fneg double %.pre1697
  store double %505, ptr %24, align 8, !tbaa !9
  br label %.loopexit1372

.loopexit1372.loopexit:                           ; preds = %167
  %.pre = load double, ptr %24, align 8, !tbaa !9
  br label %.loopexit1372

.loopexit1372:                                    ; preds = %.loopexit1372.loopexit, %503, %504
  %506 = phi double [ %505, %504 ], [ %.pre1697, %503 ], [ %.pre, %.loopexit1372.loopexit ]
  %.51230 = phi double [ %.41229, %504 ], [ %.41229, %503 ], [ %.31228, %.loopexit1372.loopexit ]
  %.61214 = phi double [ %.51213, %504 ], [ %.51213, %503 ], [ %.31211, %.loopexit1372.loopexit ]
  %.81201 = phi i64 [ 0, %504 ], [ 0, %503 ], [ %.31196, %.loopexit1372.loopexit ]
  %.6 = phi i64 [ %.5, %504 ], [ %.5, %503 ], [ %.3, %.loopexit1372.loopexit ]
  store double %506, ptr %122, align 8, !tbaa !9
  br label %513

507:                                              ; preds = %thread-pre-split
  %508 = fcmp oeq double %storemerge1329, 0.000000e+00
  %or.cond3 = and i1 %117, %508
  br i1 %or.cond3, label %509, label %513

509:                                              ; preds = %507
  store i64 %113, ptr %20, align 8, !tbaa !5
  %510 = load i64, ptr %2, align 8, !tbaa !5
  %.1343 = call i64 @llvm.smin.i64(i64 %113, i64 %510)
  %511 = sub i64 %.211951493, %.012621490
  %512 = add i64 %511, %.1343
  br label %513

513:                                              ; preds = %.loopexit1372, %509, %507
  %.61231 = phi double [ %.51230, %.loopexit1372 ], [ %.212271491, %509 ], [ %.212271491, %507 ]
  %.71215 = phi double [ %.61214, %.loopexit1372 ], [ %.212101492, %509 ], [ %.212101492, %507 ]
  %.91202 = phi i64 [ %.81201, %.loopexit1372 ], [ %512, %509 ], [ %.211951493, %507 ]
  %.7 = phi i64 [ %.6, %.loopexit1372 ], [ %.21494, %509 ], [ %.21494, %507 ]
  %514 = add nsw i64 %.012621490, 1
  %.not1327.not = icmp slt i64 %.012621490, %116
  br i1 %.not1327.not, label %119, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %513, %.lr.ph1507
  %.21227.lcssa = phi double [ %.112261502, %.lr.ph1507 ], [ %.61231, %513 ]
  %.21210.lcssa = phi double [ %.112091503, %.lr.ph1507 ], [ %.71215, %513 ]
  %.21195.lcssa = phi i64 [ %.111941504, %.lr.ph1507 ], [ %.91202, %513 ]
  %.2.lcssa = phi i64 [ %.11505, %.lr.ph1507 ], [ %.7, %513 ]
  %515 = add nuw nsw i64 %.012611500, 1
  %exitcond.not = icmp eq i64 %515, %106
  br i1 %exitcond.not, label %._crit_edge1508, label %.lr.ph1507, !llvm.loop !15

._crit_edge1508:                                  ; preds = %._crit_edge, %104
  %.11226.lcssa = phi double [ %.012251645, %104 ], [ %.21227.lcssa, %._crit_edge ]
  %.11209.lcssa = phi double [ %.012081646, %104 ], [ %.21210.lcssa, %._crit_edge ]
  %.11194.lcssa = phi i64 [ %.011931647, %104 ], [ %.21195.lcssa, %._crit_edge ]
  %.1.lcssa = phi i64 [ %.011921648, %104 ], [ %.2.lcssa, %._crit_edge ]
  %516 = add nuw nsw i64 %.012521644, 1
  %.not13151626.not = icmp slt i64 %.012521644, %.01251
  %517 = mul i64 %.012521644, %spec.select
  br i1 %.not13151626.not, label %.lr.ph1633, label %.loopexit1374

.lr.ph1633:                                       ; preds = %._crit_edge1508, %._crit_edge1621
  %.81631 = phi i64 [ %.9.lcssa, %._crit_edge1621 ], [ %.1.lcssa, %._crit_edge1508 ]
  %.1012031630 = phi i64 [ %.111204.lcssa, %._crit_edge1621 ], [ %.11194.lcssa, %._crit_edge1508 ]
  %.812161629 = phi double [ %.91217.lcssa, %._crit_edge1621 ], [ %.11209.lcssa, %._crit_edge1508 ]
  %.712321628 = phi double [ %.81233.lcssa, %._crit_edge1621 ], [ %.11226.lcssa, %._crit_edge1508 ]
  %.012601627 = phi i64 [ %938, %._crit_edge1621 ], [ %516, %._crit_edge1508 ]
  %518 = add nsw i64 %.012601627, -1
  %519 = mul nsw i64 %518, %spec.select
  store i64 %517, ptr %20, align 8, !tbaa !5
  %520 = load i64, ptr %2, align 8, !tbaa !5
  %.1344 = call i64 @llvm.smin.i64(i64 %517, i64 %520)
  %.not13171610.not = icmp slt i64 %108, %.1344
  br i1 %.not13171610.not, label %.lr.ph1620, label %._crit_edge1621

.lr.ph1620:                                       ; preds = %.lr.ph1633
  %521 = mul i64 %.012601627, %spec.select
  br label %522

522:                                              ; preds = %.lr.ph1620, %936
  %.91618 = phi i64 [ %.81631, %.lr.ph1620 ], [ %.13, %936 ]
  %.1112041617 = phi i64 [ %.1012031630, %.lr.ph1620 ], [ %.16, %936 ]
  %.912171616 = phi double [ %.812161629, %.lr.ph1620 ], [ %.141222, %936 ]
  %.812331615 = phi double [ %.712321628, %.lr.ph1620 ], [ %.121237, %936 ]
  %.012411614 = phi i64 [ 0, %.lr.ph1620 ], [ %.41245, %936 ]
  %.112631611 = phi i64 [ %109, %.lr.ph1620 ], [ %937, %936 ]
  %523 = getelementptr inbounds double, ptr %30, i64 %.112631611
  %524 = load double, ptr %523, align 8, !tbaa !9
  store double %524, ptr %24, align 8, !tbaa !9
  %525 = fcmp ogt double %524, 0.000000e+00
  br i1 %525, label %526, label %927

526:                                              ; preds = %522
  %527 = load i64, ptr %2, align 8, !tbaa !5
  %.1345 = call i64 @llvm.smin.i64(i64 %521, i64 %527)
  store i64 %.1345, ptr %20, align 8, !tbaa !5
  %.not13201593.not = icmp slt i64 %519, %.1345
  br i1 %.not13201593.not, label %.lr.ph1604, label %.loopexit1371

.lr.ph1604:                                       ; preds = %526
  %528 = mul nsw i64 %.112631611, %32
  %gep1514 = getelementptr double, ptr %invariant.gep1656, i64 %528
  %529 = getelementptr inbounds double, ptr %31, i64 %.112631611
  %530 = mul nsw i64 %.112631611, %35
  %gep1542 = getelementptr double, ptr %invariant.gep1480, i64 %530
  br label %533

531:                                              ; preds = %921
  %532 = load i64, ptr %20, align 8, !tbaa !5
  %.not1320.not = icmp slt i64 %.112671594, %532
  br i1 %.not1320.not, label %533, label %.loopexit1371.loopexit, !llvm.loop !16

533:                                              ; preds = %.lr.ph1604, %531
  %.101602 = phi i64 [ %.91618, %.lr.ph1604 ], [ %.11, %531 ]
  %.1212051601 = phi i64 [ %.1112041617, %.lr.ph1604 ], [ %.131206, %531 ]
  %.1012181600 = phi double [ %.912171616, %.lr.ph1604 ], [ %.121220, %531 ]
  %.912341599 = phi double [ %.812331615, %.lr.ph1604 ], [ %.101235, %531 ]
  %.112421598 = phi i64 [ %.012411614, %.lr.ph1604 ], [ %.21243, %531 ]
  %.312571597 = phi i64 [ 0, %.lr.ph1604 ], [ %.41258, %531 ]
  %.112671594.in = phi i64 [ %519, %.lr.ph1604 ], [ %.112671594, %531 ]
  %.112671594 = add nsw i64 %.112671594.in, 1
  %534 = getelementptr double, ptr %6, i64 %.112671594.in
  %535 = load double, ptr %534, align 8, !tbaa !9
  store double %535, ptr %26, align 8, !tbaa !9
  %536 = fcmp ogt double %535, 0.000000e+00
  br i1 %536, label %537, label %914

537:                                              ; preds = %533
  %538 = load double, ptr %24, align 8, !tbaa !9
  %539 = fcmp ult double %535, 1.000000e+00
  %540 = fcmp ult double %538, %535
  br i1 %539, label %569, label %541

541:                                              ; preds = %537
  %542 = fmul double %82, %538
  %543 = fcmp ole double %542, %535
  %544 = fmul double %82, %535
  %545 = fcmp ole double %544, %538
  %.11247.in = select i1 %540, i1 %545, i1 %543
  %546 = fdiv double %83, %535
  %547 = fcmp olt double %538, %546
  %548 = getelementptr double, ptr %5, i64 %.112671594.in
  br i1 %547, label %549, label %560

549:                                              ; preds = %541
  %550 = mul nsw i64 %.112671594, %32
  %gep1520 = getelementptr double, ptr %invariant.gep1656, i64 %550
  %551 = call double @f2c_ddot(ptr noundef nonnull %1, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %gep1520, ptr noundef nonnull @c__1) #6
  %552 = load double, ptr %529, align 8, !tbaa !9
  %553 = fmul double %551, %552
  %554 = load double, ptr %548, align 8, !tbaa !9
  %555 = fmul double %553, %554
  %556 = load double, ptr %26, align 8, !tbaa !9
  %557 = fdiv double %555, %556
  %558 = load double, ptr %24, align 8, !tbaa !9
  %559 = fdiv double %557, %558
  store double %559, ptr %25, align 8, !tbaa !9
  br label %601

560:                                              ; preds = %541
  %561 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #6
  %562 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %529, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %563 = mul nsw i64 %.112671594, %32
  %gep1516 = getelementptr double, ptr %invariant.gep1656, i64 %563
  %564 = call double @f2c_ddot(ptr noundef nonnull %1, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef %gep1516, ptr noundef nonnull @c__1) #6
  %565 = load double, ptr %548, align 8, !tbaa !9
  %566 = fmul double %564, %565
  %567 = load double, ptr %26, align 8, !tbaa !9
  %568 = fdiv double %566, %567
  store double %568, ptr %25, align 8, !tbaa !9
  br label %601

569:                                              ; preds = %537
  %570 = insertelement <2 x double> poison, double %535, i64 0
  %571 = insertelement <2 x double> %570, double %538, i64 1
  %572 = fdiv <2 x double> %571, %101
  %573 = insertelement <2 x double> poison, double %538, i64 0
  %574 = insertelement <2 x double> %573, double %535, i64 1
  %575 = fcmp ole <2 x double> %574, %572
  %576 = extractelement <2 x i1> %575, i64 0
  %577 = extractelement <2 x i1> %575, i64 1
  %.21248.in = select i1 %540, i1 %577, i1 %576
  %578 = fdiv double %82, %535
  %579 = fcmp ogt double %538, %578
  %580 = mul nsw i64 %.112671594, %32
  %gep1528 = getelementptr double, ptr %invariant.gep1656, i64 %580
  br i1 %579, label %581, label %592

581:                                              ; preds = %569
  %582 = call double @f2c_ddot(ptr noundef nonnull %1, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %gep1528, ptr noundef nonnull @c__1) #6
  %583 = load double, ptr %529, align 8, !tbaa !9
  %584 = fmul double %582, %583
  %585 = getelementptr double, ptr %5, i64 %.112671594.in
  %586 = load double, ptr %585, align 8, !tbaa !9
  %587 = fmul double %584, %586
  %588 = load double, ptr %26, align 8, !tbaa !9
  %589 = fdiv double %587, %588
  %590 = load double, ptr %24, align 8, !tbaa !9
  %591 = fdiv double %589, %590
  store double %591, ptr %25, align 8, !tbaa !9
  br label %601

592:                                              ; preds = %569
  %593 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep1528, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #6
  %594 = getelementptr double, ptr %5, i64 %.112671594.in
  %595 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull %594, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %596 = call double @f2c_ddot(ptr noundef nonnull %1, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef %gep1514, ptr noundef nonnull @c__1) #6
  %597 = load double, ptr %529, align 8, !tbaa !9
  %598 = fmul double %596, %597
  %599 = load double, ptr %24, align 8, !tbaa !9
  %600 = fdiv double %598, %599
  store double %600, ptr %25, align 8, !tbaa !9
  br label %601

601:                                              ; preds = %581, %592, %549, %560
  %602 = phi double [ %559, %549 ], [ %568, %560 ], [ %591, %581 ], [ %600, %592 ]
  %.31249.in = phi i1 [ %.11247.in, %549 ], [ %.11247.in, %560 ], [ %.21248.in, %581 ], [ %.21248.in, %592 ]
  store double %.912341599, ptr %21, 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 = fcmp oge double %.912341599, %605
  %607 = select i1 %606, double %.912341599, double %605
  %608 = load double, ptr %12, align 8, !tbaa !9
  %609 = fcmp ogt double %605, %608
  br i1 %609, label %610, label %910

610:                                              ; preds = %601
  %611 = add nsw i64 %.101602, 1
  br i1 %.31249.in, label %612, label %821

612:                                              ; preds = %610
  %613 = load double, ptr %26, align 8, !tbaa !9
  %614 = load double, ptr %24, align 8, !tbaa !9
  %615 = insertelement <2 x double> poison, double %613, i64 0
  %616 = insertelement <2 x double> %615, double %614, i64 1
  %617 = insertelement <2 x double> poison, double %614, i64 0
  %618 = insertelement <2 x double> %617, double %613, i64 1
  %619 = fdiv <2 x double> %616, %618
  %620 = extractelement <2 x double> %619, i64 0
  %621 = extractelement <2 x double> %619, i64 1
  %622 = fsub double %620, %621
  store double %622, ptr %21, align 8, !tbaa !9
  %623 = fcmp oge double %622, 0.000000e+00
  %624 = fneg double %622
  %625 = select i1 %623, double %622, double %624
  %626 = fmul double %625, -5.000000e-01
  %627 = fdiv double %626, %602
  %628 = fcmp ogt double %613, %538
  %629 = fneg double %627
  %.01250 = select i1 %628, double %629, double %627
  %630 = fcmp oge double %.01250, 0.000000e+00
  %631 = fneg double %.01250
  %632 = select i1 %630, double %.01250, double %631
  %633 = fcmp ogt double %632, %85
  br i1 %633, label %634, label %678

634:                                              ; preds = %612
  %635 = fdiv double 5.000000e-01, %.01250
  store double %635, ptr %22, align 8, !tbaa !9
  %636 = load double, ptr %529, align 8, !tbaa !9
  %637 = getelementptr double, ptr %5, i64 %.112671594.in
  %638 = load double, ptr %637, align 8, !tbaa !9
  %639 = fneg double %635
  %640 = insertelement <2 x double> poison, double %635, i64 0
  %641 = insertelement <2 x double> %640, double %638, i64 1
  %642 = insertelement <2 x double> poison, double %636, i64 0
  %643 = insertelement <2 x double> %642, double %639, i64 1
  %644 = fmul <2 x double> %641, %643
  %645 = insertelement <2 x double> poison, double %638, i64 0
  %646 = insertelement <2 x double> %645, double %636, i64 1
  %647 = fdiv <2 x double> %644, %646
  store <2 x double> %647, ptr %99, align 16, !tbaa !9
  %648 = mul nsw i64 %.112671594, %32
  %gep1580 = getelementptr double, ptr %invariant.gep1656, i64 %648
  %649 = call i32 @f2c_drotm(ptr noundef nonnull %1, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %gep1580, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br i1 %or.cond, label %650, label %653

650:                                              ; preds = %634
  %651 = mul nsw i64 %.112671594, %35
  %gep1584 = getelementptr double, ptr %invariant.gep1480, i64 %651
  %652 = call i32 @f2c_drotm(ptr noundef nonnull %23, ptr noundef %gep1542, ptr noundef nonnull @c__1, ptr noundef %gep1584, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br label %653

653:                                              ; preds = %650, %634
  %654 = load double, ptr %22, align 8
  %655 = load double, ptr %25, align 8, !tbaa !9
  %656 = load double, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  %657 = fneg double %654
  %658 = insertelement <2 x double> poison, double %657, i64 0
  %659 = insertelement <2 x double> %658, double %654, i64 1
  %660 = fmul <2 x double> %619, %659
  %661 = insertelement <2 x double> poison, double %655, i64 0
  %662 = shufflevector <2 x double> %661, <2 x double> poison, <2 x i32> zeroinitializer
  %663 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %660, <2 x double> %662, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %664 = fcmp ole <2 x double> %663, zeroinitializer
  %665 = extractelement <2 x i1> %664, i64 1
  %666 = extractelement <2 x double> %663, i64 1
  %667 = select i1 %665, double 0.000000e+00, double %666
  %sqrt1365 = call double @llvm.sqrt.f64(double %667)
  %668 = fmul double %656, %sqrt1365
  store double %668, ptr %534, align 8, !tbaa !9
  %669 = extractelement <2 x i1> %664, i64 0
  %670 = extractelement <2 x double> %663, i64 0
  %671 = select i1 %669, double 0.000000e+00, double %670
  %sqrt1364 = call double @llvm.sqrt.f64(double %671)
  %672 = load double, ptr %24, align 8, !tbaa !9
  %673 = fmul double %672, %sqrt1364
  store double %673, ptr %24, align 8, !tbaa !9
  %674 = fcmp oge double %654, 0.000000e+00
  %675 = select i1 %674, double %654, double %657
  %676 = fcmp oge double %.1012181600, %675
  %677 = select i1 %676, double %.1012181600, double %675
  br label %869

678:                                              ; preds = %612
  %679 = call double @d_sign(ptr noundef nonnull @c_b42, ptr noundef nonnull %25) #6
  %680 = fneg double %679
  %681 = load double, ptr %26, align 8, !tbaa !9
  %682 = fcmp ogt double %681, %538
  %.01224 = select i1 %682, double %679, double %680
  %683 = call double @llvm.fmuladd.f64(double %.01250, double %.01250, double 1.000000e+00)
  %sqrt1368 = call double @llvm.sqrt.f64(double %683)
  %684 = call double @llvm.fmuladd.f64(double %.01224, double %sqrt1368, double %.01250)
  %685 = fdiv double 1.000000e+00, %684
  store double %685, ptr %22, align 8, !tbaa !9
  %686 = call double @llvm.fmuladd.f64(double %685, double %685, double 1.000000e+00)
  %687 = fdiv double 1.000000e+00, %686
  %sqrt1367 = call double @llvm.sqrt.f64(double %687)
  %688 = fmul double %685, %sqrt1367
  %689 = fcmp oge double %688, 0.000000e+00
  %690 = fneg double %688
  %691 = select i1 %689, double %688, double %690
  %692 = fcmp oge double %.1012181600, %691
  %693 = select i1 %692, double %.1012181600, double %691
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  %694 = fmul double %621, %685
  %695 = load double, ptr %25, align 8, !tbaa !9
  %696 = call double @llvm.fmuladd.f64(double %694, double %695, double 1.000000e+00)
  %697 = fcmp ole double %696, 0.000000e+00
  %698 = select i1 %697, double 0.000000e+00, double %696
  %sqrt1366 = call double @llvm.sqrt.f64(double %698)
  %699 = fmul double %681, %sqrt1366
  store double %699, ptr %534, align 8, !tbaa !9
  %700 = fneg double %685
  %701 = fmul double %620, %700
  %702 = call double @llvm.fmuladd.f64(double %701, double %695, double 1.000000e+00)
  %703 = call double @sqrt(double noundef %702) #6
  %704 = load double, ptr %24, align 8, !tbaa !9
  %705 = fmul double %703, %704
  store double %705, ptr %24, align 8, !tbaa !9
  %706 = load double, ptr %529, align 8, !tbaa !9
  %707 = getelementptr double, ptr %5, i64 %.112671594.in
  %708 = load double, ptr %707, align 8, !tbaa !9
  %709 = insertelement <2 x double> poison, double %708, i64 0
  %710 = insertelement <2 x double> %709, double %706, i64 1
  %711 = insertelement <2 x double> poison, double %706, i64 0
  %712 = insertelement <2 x double> %711, double %708, i64 1
  %713 = fdiv <2 x double> %710, %712
  %714 = fcmp ult double %706, 1.000000e+00
  %715 = fcmp ult double %708, 1.000000e+00
  br i1 %714, label %754, label %716

716:                                              ; preds = %678
  %717 = load double, ptr %22, align 8, !tbaa !9
  br i1 %715, label %732, label %718

718:                                              ; preds = %716
  %719 = fneg double %717
  %720 = insertelement <2 x double> poison, double %719, i64 0
  %721 = insertelement <2 x double> %720, double %717, i64 1
  %722 = fmul <2 x double> %713, %721
  %723 = shufflevector <2 x double> %722, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  store <2 x double> %723, ptr %99, align 16, !tbaa !9
  %724 = fmul double %sqrt1367, %706
  store double %724, ptr %529, align 8, !tbaa !9
  %725 = load double, ptr %707, align 8, !tbaa !9
  %726 = fmul double %sqrt1367, %725
  store double %726, ptr %707, align 8, !tbaa !9
  %727 = mul nsw i64 %.112671594, %32
  %gep1540 = getelementptr double, ptr %invariant.gep1656, i64 %727
  %728 = call i32 @f2c_drotm(ptr noundef nonnull %1, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %gep1540, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br i1 %or.cond, label %729, label %869

729:                                              ; preds = %718
  %730 = mul nsw i64 %.112671594, %35
  %gep1544 = getelementptr double, ptr %invariant.gep1480, i64 %730
  %731 = call i32 @f2c_drotm(ptr noundef nonnull %23, ptr noundef %gep1542, ptr noundef nonnull @c__1, ptr noundef %gep1544, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br label %869

732:                                              ; preds = %716
  %733 = fneg double %717
  %734 = extractelement <2 x double> %713, i64 0
  %735 = fmul double %734, %733
  store double %735, ptr %21, align 8, !tbaa !9
  %736 = mul nsw i64 %.112671594, %32
  %gep1546 = getelementptr double, ptr %invariant.gep1656, i64 %736
  %737 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1546, ptr noundef nonnull @c__1, ptr noundef %gep1514, ptr noundef nonnull @c__1) #6
  %738 = fmul double %sqrt1367, %688
  %739 = extractelement <2 x double> %713, i64 1
  %740 = fmul double %738, %739
  store double %740, ptr %21, align 8, !tbaa !9
  %741 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %gep1546, ptr noundef nonnull @c__1) #6
  br i1 %or.cond, label %742, label %749

742:                                              ; preds = %732
  %743 = load double, ptr %22, align 8, !tbaa !9
  %744 = fneg double %743
  %745 = fmul double %734, %744
  store double %745, ptr %21, align 8, !tbaa !9
  %746 = mul nsw i64 %.112671594, %35
  %gep1550 = getelementptr double, ptr %invariant.gep1480, i64 %746
  %747 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1550, ptr noundef nonnull @c__1, ptr noundef %gep1542, ptr noundef nonnull @c__1) #6
  store double %740, ptr %21, align 8, !tbaa !9
  %748 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1542, ptr noundef nonnull @c__1, ptr noundef %gep1550, ptr noundef nonnull @c__1) #6
  br label %749

749:                                              ; preds = %742, %732
  %750 = load double, ptr %529, align 8, !tbaa !9
  %751 = fmul double %sqrt1367, %750
  store double %751, ptr %529, align 8, !tbaa !9
  %752 = load double, ptr %707, align 8, !tbaa !9
  %753 = fdiv double %752, %sqrt1367
  store double %753, ptr %707, align 8, !tbaa !9
  br label %869

754:                                              ; preds = %678
  br i1 %715, label %777, label %755

755:                                              ; preds = %754
  %756 = load double, ptr %22, align 8, !tbaa !9
  %757 = extractelement <2 x double> %713, i64 1
  %758 = fmul double %757, %756
  store double %758, ptr %21, align 8, !tbaa !9
  %759 = mul nsw i64 %.112671594, %32
  %gep1556 = getelementptr double, ptr %invariant.gep1656, i64 %759
  %760 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %gep1556, ptr noundef nonnull @c__1) #6
  %761 = fneg double %sqrt1367
  %762 = fmul double %688, %761
  %763 = extractelement <2 x double> %713, i64 0
  %764 = fmul double %762, %763
  store double %764, ptr %21, align 8, !tbaa !9
  %765 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1556, ptr noundef nonnull @c__1, ptr noundef %gep1514, ptr noundef nonnull @c__1) #6
  br i1 %or.cond, label %766, label %772

766:                                              ; preds = %755
  %767 = load double, ptr %22, align 8, !tbaa !9
  %768 = fmul double %757, %767
  store double %768, ptr %21, align 8, !tbaa !9
  %769 = mul nsw i64 %.112671594, %35
  %gep1560 = getelementptr double, ptr %invariant.gep1480, i64 %769
  %770 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1542, ptr noundef nonnull @c__1, ptr noundef %gep1560, ptr noundef nonnull @c__1) #6
  store double %764, ptr %21, align 8, !tbaa !9
  %771 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1560, ptr noundef nonnull @c__1, ptr noundef %gep1542, ptr noundef nonnull @c__1) #6
  br label %772

772:                                              ; preds = %766, %755
  %773 = load double, ptr %529, align 8, !tbaa !9
  %774 = fdiv double %773, %sqrt1367
  store double %774, ptr %529, align 8, !tbaa !9
  %775 = load double, ptr %707, align 8, !tbaa !9
  %776 = fmul double %sqrt1367, %775
  store double %776, ptr %707, align 8, !tbaa !9
  br label %869

777:                                              ; preds = %754
  %778 = fcmp ult double %706, %708
  %779 = load double, ptr %22, align 8, !tbaa !9
  br i1 %778, label %801, label %780

780:                                              ; preds = %777
  %781 = fneg double %779
  %782 = extractelement <2 x double> %713, i64 0
  %783 = fmul double %782, %781
  store double %783, ptr %21, align 8, !tbaa !9
  %784 = mul nsw i64 %.112671594, %32
  %gep1562 = getelementptr double, ptr %invariant.gep1656, i64 %784
  %785 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1562, ptr noundef nonnull @c__1, ptr noundef %gep1514, ptr noundef nonnull @c__1) #6
  %786 = fmul double %sqrt1367, %688
  %787 = extractelement <2 x double> %713, i64 1
  %788 = fmul double %786, %787
  store double %788, ptr %21, align 8, !tbaa !9
  %789 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %gep1562, ptr noundef nonnull @c__1) #6
  %790 = load double, ptr %529, align 8, !tbaa !9
  %791 = fmul double %sqrt1367, %790
  store double %791, ptr %529, align 8, !tbaa !9
  %792 = load double, ptr %707, align 8, !tbaa !9
  %793 = fdiv double %792, %sqrt1367
  store double %793, ptr %707, align 8, !tbaa !9
  br i1 %or.cond, label %794, label %869

794:                                              ; preds = %780
  %795 = load double, ptr %22, align 8, !tbaa !9
  %796 = fneg double %795
  %797 = fmul double %782, %796
  store double %797, ptr %21, align 8, !tbaa !9
  %798 = mul nsw i64 %.112671594, %35
  %gep1566 = getelementptr double, ptr %invariant.gep1480, i64 %798
  %799 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1566, ptr noundef nonnull @c__1, ptr noundef %gep1542, ptr noundef nonnull @c__1) #6
  store double %788, ptr %21, align 8, !tbaa !9
  %800 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1542, ptr noundef nonnull @c__1, ptr noundef %gep1566, ptr noundef nonnull @c__1) #6
  br label %869

801:                                              ; preds = %777
  %802 = extractelement <2 x double> %713, i64 1
  %803 = fmul double %802, %779
  store double %803, ptr %21, align 8, !tbaa !9
  %804 = mul nsw i64 %.112671594, %32
  %gep1572 = getelementptr double, ptr %invariant.gep1656, i64 %804
  %805 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %gep1572, ptr noundef nonnull @c__1) #6
  %806 = fneg double %sqrt1367
  %807 = fmul double %688, %806
  %808 = extractelement <2 x double> %713, i64 0
  %809 = fmul double %807, %808
  store double %809, ptr %21, align 8, !tbaa !9
  %810 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef %gep1572, ptr noundef nonnull @c__1, ptr noundef %gep1514, ptr noundef nonnull @c__1) #6
  %811 = load double, ptr %529, align 8, !tbaa !9
  %812 = fdiv double %811, %sqrt1367
  store double %812, ptr %529, align 8, !tbaa !9
  %813 = load double, ptr %707, align 8, !tbaa !9
  %814 = fmul double %sqrt1367, %813
  store double %814, ptr %707, align 8, !tbaa !9
  br i1 %or.cond, label %815, label %869

815:                                              ; preds = %801
  %816 = load double, ptr %22, align 8, !tbaa !9
  %817 = fmul double %802, %816
  store double %817, ptr %21, align 8, !tbaa !9
  %818 = mul nsw i64 %.112671594, %35
  %gep1576 = getelementptr double, ptr %invariant.gep1480, i64 %818
  %819 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1542, ptr noundef nonnull @c__1, ptr noundef %gep1576, ptr noundef nonnull @c__1) #6
  store double %809, ptr %21, align 8, !tbaa !9
  %820 = call i32 @f2c_daxpy(ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %gep1576, ptr noundef nonnull @c__1, ptr noundef %gep1542, ptr noundef nonnull @c__1) #6
  br label %869

821:                                              ; preds = %610
  %822 = load double, ptr %24, align 8, !tbaa !9
  %823 = load double, ptr %26, align 8, !tbaa !9
  %824 = fcmp ogt double %822, %823
  br i1 %824, label %825, label %847

825:                                              ; preds = %821
  %826 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #6
  %827 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b42, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %828 = mul nsw i64 %.112671594, %32
  %gep1536 = getelementptr double, ptr %invariant.gep1656, i64 %828
  %829 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull @c_b42, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %gep1536, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %830 = load double, ptr %25, align 8, !tbaa !9
  %831 = fneg double %830
  %832 = load double, ptr %529, align 8, !tbaa !9
  %833 = fmul double %832, %831
  %834 = getelementptr double, ptr %5, i64 %.112671594.in
  %835 = load double, ptr %834, align 8, !tbaa !9
  %836 = fdiv double %833, %835
  store double %836, ptr %28, align 8, !tbaa !9
  %837 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %28, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef %gep1536, ptr noundef nonnull @c__1) #6
  %838 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b42, ptr noundef nonnull %26, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %gep1536, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  %839 = load double, ptr %25, align 8, !tbaa !9
  %840 = fneg double %839
  %841 = call double @llvm.fmuladd.f64(double %840, double %839, double 1.000000e+00)
  %842 = load double, ptr %26, align 8, !tbaa !9
  %843 = fcmp ole double %841, 0.000000e+00
  %844 = select i1 %843, double 0.000000e+00, double %841
  %sqrt1369 = call double @llvm.sqrt.f64(double %844)
  %845 = fmul double %842, %sqrt1369
  store double %845, ptr %534, align 8, !tbaa !9
  %846 = load double, ptr %11, align 8, !tbaa !9
  %.inv1358 = fcmp oge double %.1012181600, %846
  %..101218 = select i1 %.inv1358, double %.1012181600, double %846
  br label %869

847:                                              ; preds = %821
  %848 = mul nsw i64 %.112671594, %32
  %gep1530 = getelementptr double, ptr %invariant.gep1656, i64 %848
  %849 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep1530, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #6
  %850 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull @c_b42, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %851 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b42, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %gep1514, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  %852 = load double, ptr %25, align 8, !tbaa !9
  %853 = fneg double %852
  %854 = getelementptr double, ptr %5, i64 %.112671594.in
  %855 = load double, ptr %854, align 8, !tbaa !9
  %856 = fmul double %855, %853
  %857 = load double, ptr %529, align 8, !tbaa !9
  %858 = fdiv double %856, %857
  store double %858, ptr %28, align 8, !tbaa !9
  %859 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull %28, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef %gep1514, ptr noundef nonnull @c__1) #6
  %860 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b42, ptr noundef nonnull %24, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %gep1514, ptr noundef nonnull %4, ptr noundef nonnull %27) #6
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  %861 = load double, ptr %25, align 8, !tbaa !9
  %862 = fneg double %861
  %863 = call double @llvm.fmuladd.f64(double %862, double %861, double 1.000000e+00)
  %864 = load double, ptr %24, align 8, !tbaa !9
  %865 = fcmp ole double %863, 0.000000e+00
  %866 = select i1 %865, double 0.000000e+00, double %863
  %sqrt1370 = call double @llvm.sqrt.f64(double %866)
  %867 = fmul double %864, %sqrt1370
  store double %867, ptr %523, align 8, !tbaa !9
  %868 = load double, ptr %11, align 8, !tbaa !9
  %.inv1357 = fcmp oge double %.1012181600, %868
  %..1012181346 = select i1 %.inv1357, double %.1012181600, double %868
  br label %869

869:                                              ; preds = %825, %847, %653, %772, %801, %815, %780, %794, %749, %729, %718
  %.111219 = phi double [ %677, %653 ], [ %693, %729 ], [ %693, %718 ], [ %693, %749 ], [ %693, %772 ], [ %693, %794 ], [ %693, %780 ], [ %693, %815 ], [ %693, %801 ], [ %..101218, %825 ], [ %..1012181346, %847 ]
  %870 = load double, ptr %534, align 8, !tbaa !9
  %871 = load double, ptr %26, align 8, !tbaa !9
  %872 = fdiv double %870, %871
  store double %872, ptr %21, align 8, !tbaa !9
  %873 = fmul double %872, %872
  %874 = fcmp ugt double %873, %77
  br i1 %874, label %891, label %875

875:                                              ; preds = %869
  %876 = fcmp olt double %871, %84
  %877 = fcmp ogt double %871, %79
  %or.cond1347 = and i1 %876, %877
  br i1 %or.cond1347, label %878, label %881

878:                                              ; preds = %875
  %879 = mul nsw i64 %.112671594, %32
  %gep1588 = getelementptr double, ptr %invariant.gep1656, i64 %879
  %880 = call double @f2c_dnrm2(ptr noundef nonnull %1, ptr noundef %gep1588, ptr noundef nonnull @c__1) #6
  br label %.sink.split1729

881:                                              ; preds = %875
  store double 0.000000e+00, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %26, align 8, !tbaa !9
  %882 = mul nsw i64 %.112671594, %32
  %gep1586 = getelementptr double, ptr %invariant.gep1656, i64 %882
  %883 = call i32 @dlassq_(ptr noundef nonnull %1, ptr noundef %gep1586, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull %26) #6
  %884 = load double, ptr %22, align 8, !tbaa !9
  %885 = load double, ptr %26, align 8, !tbaa !9
  %886 = call double @sqrt(double noundef %885) #6
  %887 = fmul double %884, %886
  br label %.sink.split1729

.sink.split1729:                                  ; preds = %881, %878
  %.sink1731 = phi double [ %880, %878 ], [ %887, %881 ]
  %888 = getelementptr double, ptr %5, i64 %.112671594.in
  %889 = load double, ptr %888, align 8, !tbaa !9
  %890 = fmul double %.sink1731, %889
  store double %890, ptr %534, align 8, !tbaa !9
  br label %891

891:                                              ; preds = %.sink.split1729, %869
  %892 = load double, ptr %24, align 8, !tbaa !9
  %893 = fdiv double %892, %538
  store double %893, ptr %21, align 8, !tbaa !9
  %894 = fmul double %893, %893
  %895 = fcmp ugt double %894, %77
  br i1 %895, label %918, label %896

896:                                              ; preds = %891
  %897 = fcmp olt double %892, %84
  %898 = fcmp ogt double %892, %79
  %or.cond1348 = and i1 %897, %898
  br i1 %or.cond1348, label %899, label %901

899:                                              ; preds = %896
  %900 = call double @f2c_dnrm2(ptr noundef nonnull %1, ptr noundef %gep1514, ptr noundef nonnull @c__1) #6
  br label %907

901:                                              ; preds = %896
  store double 0.000000e+00, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  %902 = call i32 @dlassq_(ptr noundef nonnull %1, ptr noundef %gep1514, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull %24) #6
  %903 = load double, ptr %22, align 8, !tbaa !9
  %904 = load double, ptr %24, align 8, !tbaa !9
  %905 = call double @sqrt(double noundef %904) #6
  %906 = fmul double %903, %905
  br label %907

907:                                              ; preds = %901, %899
  %.sink1734 = phi double [ %906, %901 ], [ %900, %899 ]
  %908 = load double, ptr %529, align 8, !tbaa !9
  %909 = fmul double %.sink1734, %908
  store double %909, ptr %24, align 8, !tbaa !9
  store double %909, ptr %523, align 8, !tbaa !9
  br label %918

910:                                              ; preds = %601
  %911 = add nsw i64 %.1212051601, 1
  %912 = add nsw i64 %.312571597, 1
  %913 = add nsw i64 %.112421598, 1
  br label %918

914:                                              ; preds = %533
  %915 = add nsw i64 %.1212051601, 1
  %916 = add nsw i64 %.312571597, 1
  %917 = add nsw i64 %.112421598, 1
  br label %918

918:                                              ; preds = %910, %907, %891, %914
  %.41258 = phi i64 [ 0, %907 ], [ 0, %891 ], [ %912, %910 ], [ %916, %914 ]
  %.21243 = phi i64 [ %.112421598, %907 ], [ %.112421598, %891 ], [ %913, %910 ], [ %917, %914 ]
  %.101235 = phi double [ %607, %907 ], [ %607, %891 ], [ %607, %910 ], [ %.912341599, %914 ]
  %.121220 = phi double [ %.111219, %907 ], [ %.111219, %891 ], [ %.1012181600, %910 ], [ %.1012181600, %914 ]
  %.131206 = phi i64 [ 0, %907 ], [ 0, %891 ], [ %911, %910 ], [ %915, %914 ]
  %.11 = phi i64 [ %611, %907 ], [ %611, %891 ], [ %.101602, %910 ], [ %.101602, %914 ]
  %.not1323.not = icmp sgt i64 %.21243, %95
  %or.cond1349 = select i1 %.not1335, i1 %.not1323.not, i1 false
  br i1 %or.cond1349, label %919, label %921

919:                                              ; preds = %918
  %920 = load double, ptr %24, align 8, !tbaa !9
  store double %920, ptr %523, align 8, !tbaa !9
  br label %.loopexit1374

921:                                              ; preds = %918
  %922 = icmp sgt i64 %.41258, %96
  %or.cond1351 = select i1 %.not1335, i1 %922, i1 false
  br i1 %or.cond1351, label %923, label %531

923:                                              ; preds = %921
  %924 = load double, ptr %24, align 8, !tbaa !9
  %925 = fneg double %924
  store double %925, ptr %24, align 8, !tbaa !9
  br label %.loopexit1371

.loopexit1371.loopexit:                           ; preds = %531
  %.pre1698 = load double, ptr %24, align 8, !tbaa !9
  br label %.loopexit1371

.loopexit1371:                                    ; preds = %.loopexit1371.loopexit, %526, %923
  %926 = phi double [ %925, %923 ], [ %524, %526 ], [ %.pre1698, %.loopexit1371.loopexit ]
  %.31244 = phi i64 [ %.21243, %923 ], [ %.012411614, %526 ], [ %.21243, %.loopexit1371.loopexit ]
  %.111236 = phi double [ %.101235, %923 ], [ %.812331615, %526 ], [ %.101235, %.loopexit1371.loopexit ]
  %.131221 = phi double [ %.121220, %923 ], [ %.912171616, %526 ], [ %.121220, %.loopexit1371.loopexit ]
  %.141207 = phi i64 [ 0, %923 ], [ %.1112041617, %526 ], [ %.131206, %.loopexit1371.loopexit ]
  %.12 = phi i64 [ %.11, %923 ], [ %.91618, %526 ], [ %.11, %.loopexit1371.loopexit ]
  store double %926, ptr %523, align 8, !tbaa !9
  br label %936

927:                                              ; preds = %522
  %928 = fcmp oeq double %524, 0.000000e+00
  br i1 %928, label %929, label %933

929:                                              ; preds = %927
  store i64 %521, ptr %20, align 8, !tbaa !5
  %930 = load i64, ptr %2, align 8, !tbaa !5
  %.1352 = call i64 @llvm.smin.i64(i64 %521, i64 %930)
  %931 = sub i64 %.1112041617, %519
  %932 = add i64 %931, %.1352
  br label %933

933:                                              ; preds = %929, %927
  %.15 = phi i64 [ %932, %929 ], [ %.1112041617, %927 ]
  %934 = fcmp olt double %524, 0.000000e+00
  br i1 %934, label %935, label %936

935:                                              ; preds = %933
  br label %936

936:                                              ; preds = %.loopexit1371, %935, %933
  %.41245 = phi i64 [ %.31244, %.loopexit1371 ], [ %.012411614, %935 ], [ %.012411614, %933 ]
  %.121237 = phi double [ %.111236, %.loopexit1371 ], [ %.812331615, %935 ], [ %.812331615, %933 ]
  %.141222 = phi double [ %.131221, %.loopexit1371 ], [ %.912171616, %935 ], [ %.912171616, %933 ]
  %.16 = phi i64 [ %.141207, %.loopexit1371 ], [ 0, %935 ], [ %.15, %933 ]
  %.13 = phi i64 [ %.12, %.loopexit1371 ], [ %.91618, %935 ], [ %.91618, %933 ]
  %937 = add nsw i64 %.112631611, 1
  %.not1317.not = icmp slt i64 %.112631611, %.1344
  br i1 %.not1317.not, label %522, label %._crit_edge1621, !llvm.loop !17

._crit_edge1621:                                  ; preds = %936, %.lr.ph1633
  %.81233.lcssa = phi double [ %.712321628, %.lr.ph1633 ], [ %.121237, %936 ]
  %.91217.lcssa = phi double [ %.812161629, %.lr.ph1633 ], [ %.141222, %936 ]
  %.111204.lcssa = phi i64 [ %.1012031630, %.lr.ph1633 ], [ %.16, %936 ]
  %.9.lcssa = phi i64 [ %.81631, %.lr.ph1633 ], [ %.13, %936 ]
  %938 = add nuw nsw i64 %.012601627, 1
  %.not1315.not = icmp slt i64 %.012601627, %.01251
  br i1 %.not1315.not, label %.lr.ph1633, label %.loopexit1374, !llvm.loop !18

.loopexit1374:                                    ; preds = %._crit_edge1621, %._crit_edge1508, %919
  %.131238 = phi double [ %.101235, %919 ], [ %.11226.lcssa, %._crit_edge1508 ], [ %.81233.lcssa, %._crit_edge1621 ]
  %.151223 = phi double [ %.121220, %919 ], [ %.11209.lcssa, %._crit_edge1508 ], [ %.91217.lcssa, %._crit_edge1621 ]
  %.17 = phi i64 [ 0, %919 ], [ %.11194.lcssa, %._crit_edge1508 ], [ %.111204.lcssa, %._crit_edge1621 ]
  %.14 = phi i64 [ %.11, %919 ], [ %.1.lcssa, %._crit_edge1508 ], [ %.9.lcssa, %._crit_edge1621 ]
  %939 = load i64, ptr %2, align 8, !tbaa !5
  %.1353 = call i64 @llvm.smin.i64(i64 %517, i64 %939)
  %.not13251638.not = icmp slt i64 %108, %.1353
  br i1 %.not13251638.not, label %.lr.ph1641.preheader, label %.loopexit1373

.lr.ph1641.preheader:                             ; preds = %.loopexit1374
  %940 = sub i64 %.1353, %105
  %min.iters.check = icmp ult i64 %940, 4
  br i1 %min.iters.check, label %.lr.ph1641.preheader1765, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph1641.preheader
  %n.vec = and i64 %940, -4
  %ind.end = add i64 %109, %n.vec
  %941 = getelementptr double, ptr %6, i64 %108
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %942 = getelementptr double, ptr %941, i64 %index
  %943 = getelementptr inbounds i8, ptr %942, i64 16
  %wide.load = load <2 x double>, ptr %942, align 8, !tbaa !9
  %wide.load1763 = load <2 x double>, ptr %943, align 8, !tbaa !9
  %944 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %945 = fcmp oge <2 x double> %wide.load1763, zeroinitializer
  %946 = fneg <2 x double> %wide.load
  %947 = fneg <2 x double> %wide.load1763
  %948 = select <2 x i1> %944, <2 x double> %wide.load, <2 x double> %946
  %949 = select <2 x i1> %945, <2 x double> %wide.load1763, <2 x double> %947
  store <2 x double> %948, ptr %942, align 8, !tbaa !9
  store <2 x double> %949, ptr %943, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %950 = icmp eq i64 %index.next, %n.vec
  br i1 %950, label %middle.block, label %vector.body, !llvm.loop !19

middle.block:                                     ; preds = %vector.body
  %951 = extractelement <2 x double> %wide.load1763, i64 1
  %cmp.n = icmp eq i64 %940, %n.vec
  br i1 %cmp.n, label %..loopexit1373_crit_edge, label %.lr.ph1641.preheader1765

.lr.ph1641.preheader1765:                         ; preds = %middle.block, %.lr.ph1641.preheader
  %.212641639.ph = phi i64 [ %109, %.lr.ph1641.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph1641

.lr.ph1641:                                       ; preds = %.lr.ph1641.preheader1765, %.lr.ph1641
  %.212641639 = phi i64 [ %957, %.lr.ph1641 ], [ %.212641639.ph, %.lr.ph1641.preheader1765 ]
  %952 = getelementptr inbounds double, ptr %30, i64 %.212641639
  %953 = load double, ptr %952, align 8, !tbaa !9
  %954 = fcmp oge double %953, 0.000000e+00
  %955 = fneg double %953
  %956 = select i1 %954, double %953, double %955
  store double %956, ptr %952, align 8, !tbaa !9
  %957 = add nsw i64 %.212641639, 1
  %.not1325.not = icmp slt i64 %.212641639, %.1353
  br i1 %.not1325.not, label %.lr.ph1641, label %..loopexit1373_crit_edge, !llvm.loop !22

._crit_edge1651:                                  ; preds = %.loopexit1373, %102
  %958 = phi i64 [ %103, %102 ], [ %939, %.loopexit1373 ]
  %.01225.lcssa = phi double [ 0.000000e+00, %102 ], [ %.131238, %.loopexit1373 ]
  %.01208.lcssa = phi double [ 0.000000e+00, %102 ], [ %.151223, %.loopexit1373 ]
  %.01193.lcssa = phi i64 [ 0, %102 ], [ %.17, %.loopexit1373 ]
  %.01192.lcssa = phi i64 [ 0, %102 ], [ %.14, %.loopexit1373 ]
  %959 = getelementptr inbounds double, ptr %30, i64 %958
  %960 = load double, ptr %959, align 8, !tbaa !9
  %961 = fcmp olt double %960, %84
  %962 = fcmp ogt double %960, %79
  %or.cond1354 = and i1 %961, %962
  br i1 %or.cond1354, label %963, label %966

963:                                              ; preds = %._crit_edge1651
  %964 = mul nsw i64 %958, %32
  %gep1659 = getelementptr double, ptr %invariant.gep1656, i64 %964
  %965 = call double @f2c_dnrm2(ptr noundef nonnull %1, ptr noundef %gep1659, ptr noundef nonnull @c__1) #6
  br label %973

966:                                              ; preds = %._crit_edge1651
  store double 0.000000e+00, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  %967 = mul nsw i64 %958, %32
  %gep1657 = getelementptr double, ptr %invariant.gep1656, i64 %967
  %968 = call i32 @dlassq_(ptr noundef nonnull %1, ptr noundef %gep1657, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull %24) #6
  %969 = load double, ptr %22, align 8, !tbaa !9
  %970 = load double, ptr %24, align 8, !tbaa !9
  %971 = call double @sqrt(double noundef %970) #6
  %972 = fmul double %969, %971
  br label %973

973:                                              ; preds = %966, %963
  %.sink1739 = phi double [ %972, %966 ], [ %965, %963 ]
  %974 = load i64, ptr %2, align 8, !tbaa !5
  %975 = getelementptr inbounds double, ptr %31, i64 %974
  %976 = load double, ptr %975, align 8, !tbaa !9
  %977 = fmul double %.sink1739, %976
  %978 = getelementptr inbounds double, ptr %30, i64 %974
  store double %977, ptr %978, align 8, !tbaa !9
  %979 = icmp slt i64 %.012591661, %.012391662
  %980 = fcmp ugt double %.01225.lcssa, %87
  %.not1310 = icmp sgt i64 %.01192.lcssa, %974
  %or.cond1743 = select i1 %980, i1 %.not1310, i1 false
  %spec.select1744 = select i1 %or.cond1743, i64 %.012391662, i64 %.012591661
  %.11240 = select i1 %979, i64 %spec.select1744, i64 %.012391662
  %981 = add nsw i64 %.11240, 1
  %982 = icmp sgt i64 %.012591661, %981
  br i1 %982, label %983, label %992

983:                                              ; preds = %973
  %984 = sitofp i64 %974 to double
  %985 = load double, ptr %12, align 8, !tbaa !9
  %986 = fmul double %985, %984
  %987 = fcmp olt double %.01225.lcssa, %986
  br i1 %987, label %988, label %992

988:                                              ; preds = %983
  %989 = fmul double %.01225.lcssa, %984
  %990 = fmul double %.01208.lcssa, %989
  %991 = fcmp uge double %990, %985
  %.not1311 = icmp slt i64 %.01193.lcssa, %91
  %or.cond1355 = select i1 %991, i1 %.not1311, i1 false
  br i1 %or.cond1355, label %993, label %.loopexit1375

992:                                              ; preds = %983, %973
  %.not1311.old = icmp slt i64 %.01193.lcssa, %91
  br i1 %.not1311.old, label %993, label %.loopexit1375

993:                                              ; preds = %988, %992
  %994 = add nuw nsw i64 %.012591661, 1
  %.not1308.not = icmp slt i64 %.012591661, %97
  br i1 %.not1308.not, label %102, label %._crit_edge1665.loopexit, !llvm.loop !23

._crit_edge1665.loopexit:                         ; preds = %993
  %.pre1699 = load i64, ptr %13, align 8, !tbaa !5
  br label %._crit_edge1665

._crit_edge1665:                                  ; preds = %._crit_edge1665.loopexit, %76
  %995 = phi i64 [ %.pre1699, %._crit_edge1665.loopexit ], [ %97, %76 ]
  %996 = add nsw i64 %995, -1
  br label %.loopexit1375

.loopexit1375:                                    ; preds = %988, %992, %._crit_edge1665
  %storemerge = phi i64 [ %996, %._crit_edge1665 ], [ 0, %992 ], [ 0, %988 ]
  store i64 %storemerge, ptr %16, align 8, !tbaa !5
  %997 = load i64, ptr %2, align 8, !tbaa !5
  %998 = add nsw i64 %997, -1
  %invariant.gep1670 = getelementptr i8, ptr %37, i64 8
  %.not13121674 = icmp slt i64 %997, 2
  br i1 %.not13121674, label %.loopexit, label %.lr.ph1677

.lr.ph1677:                                       ; preds = %.loopexit1375
  br i1 %or.cond, label %.lr.ph1677.split.us, label %.lr.ph1677.split

.lr.ph1677.split.us:                              ; preds = %.lr.ph1677, %1019
  %.312651675.us = phi i64 [ %1020, %1019 ], [ 1, %.lr.ph1677 ]
  %999 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub1679 = sub i64 %999, %.312651675.us
  %1000 = add i64 %reass.sub1679, 1
  store i64 %1000, ptr %19, align 8, !tbaa !5
  %1001 = getelementptr inbounds double, ptr %30, i64 %.312651675.us
  %1002 = call i64 @f2c_idamax(ptr noundef nonnull %19, ptr noundef nonnull %1001, ptr noundef nonnull @c__1) #6
  %1003 = add nsw i64 %.312651675.us, -1
  %1004 = add i64 %1003, %1002
  %.not1313.us = icmp eq i64 %.312651675.us, %1004
  br i1 %.not1313.us, label %1019, label %1005

1005:                                             ; preds = %.lr.ph1677.split.us
  %1006 = load double, ptr %1001, align 8, !tbaa !9
  %1007 = getelementptr inbounds double, ptr %30, i64 %1004
  %1008 = load double, ptr %1007, align 8, !tbaa !9
  store double %1008, ptr %1001, align 8, !tbaa !9
  store double %1006, ptr %1007, align 8, !tbaa !9
  %1009 = getelementptr inbounds double, ptr %31, i64 %.312651675.us
  %1010 = load double, ptr %1009, align 8, !tbaa !9
  store double %1010, ptr %28, align 8, !tbaa !9
  %1011 = getelementptr inbounds double, ptr %31, i64 %1004
  %1012 = load double, ptr %1011, align 8, !tbaa !9
  store double %1012, ptr %1009, align 8, !tbaa !9
  store double %1010, ptr %1011, align 8, !tbaa !9
  %1013 = mul nsw i64 %.312651675.us, %32
  %gep1667.us = getelementptr double, ptr %invariant.gep1656, i64 %1013
  %1014 = mul nsw i64 %1004, %32
  %gep1669.us = getelementptr double, ptr %invariant.gep1656, i64 %1014
  %1015 = call i32 @f2c_dswap(ptr noundef nonnull %1, ptr noundef %gep1667.us, ptr noundef nonnull @c__1, ptr noundef %gep1669.us, ptr noundef nonnull @c__1) #6
  %1016 = mul nsw i64 %.312651675.us, %35
  %gep1671.us = getelementptr double, ptr %invariant.gep1670, i64 %1016
  %1017 = mul nsw i64 %1004, %35
  %gep1673.us = getelementptr double, ptr %invariant.gep1670, i64 %1017
  %1018 = call i32 @f2c_dswap(ptr noundef nonnull %23, ptr noundef %gep1671.us, ptr noundef nonnull @c__1, ptr noundef %gep1673.us, ptr noundef nonnull @c__1) #6
  br label %1019

1019:                                             ; preds = %1005, %.lr.ph1677.split.us
  %1020 = add nuw nsw i64 %.312651675.us, 1
  %.not1312.us.not = icmp slt i64 %.312651675.us, %998
  br i1 %.not1312.us.not, label %.lr.ph1677.split.us, label %.loopexit, !llvm.loop !24

.lr.ph1677.split:                                 ; preds = %.lr.ph1677, %1038
  %.312651675 = phi i64 [ %1039, %1038 ], [ 1, %.lr.ph1677 ]
  %1021 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub1678 = sub i64 %1021, %.312651675
  %1022 = add i64 %reass.sub1678, 1
  store i64 %1022, ptr %19, align 8, !tbaa !5
  %1023 = getelementptr inbounds double, ptr %30, i64 %.312651675
  %1024 = call i64 @f2c_idamax(ptr noundef nonnull %19, ptr noundef nonnull %1023, ptr noundef nonnull @c__1) #6
  %1025 = add nsw i64 %.312651675, -1
  %1026 = add i64 %1025, %1024
  %.not1313 = icmp eq i64 %.312651675, %1026
  br i1 %.not1313, label %1038, label %1027

1027:                                             ; preds = %.lr.ph1677.split
  %1028 = load double, ptr %1023, align 8, !tbaa !9
  %1029 = getelementptr inbounds double, ptr %30, i64 %1026
  %1030 = load double, ptr %1029, align 8, !tbaa !9
  store double %1030, ptr %1023, align 8, !tbaa !9
  store double %1028, ptr %1029, align 8, !tbaa !9
  %1031 = getelementptr inbounds double, ptr %31, i64 %.312651675
  %1032 = load double, ptr %1031, align 8, !tbaa !9
  store double %1032, ptr %28, align 8, !tbaa !9
  %1033 = getelementptr inbounds double, ptr %31, i64 %1026
  %1034 = load double, ptr %1033, align 8, !tbaa !9
  store double %1034, ptr %1031, align 8, !tbaa !9
  store double %1032, ptr %1033, align 8, !tbaa !9
  %1035 = mul nsw i64 %.312651675, %32
  %gep1667 = getelementptr double, ptr %invariant.gep1656, i64 %1035
  %1036 = mul nsw i64 %1026, %32
  %gep1669 = getelementptr double, ptr %invariant.gep1656, i64 %1036
  %1037 = call i32 @f2c_dswap(ptr noundef nonnull %1, ptr noundef %gep1667, ptr noundef nonnull @c__1, ptr noundef %gep1669, ptr noundef nonnull @c__1) #6
  br label %1038

1038:                                             ; preds = %1027, %.lr.ph1677.split
  %1039 = add nuw nsw i64 %.312651675, 1
  %.not1312.not = icmp slt i64 %.312651675, %998
  br i1 %.not1312.not, label %.lr.ph1677.split, label %.loopexit, !llvm.loop !24

.loopexit:                                        ; preds = %1038, %1019, %.loopexit1375, %68
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  ret i32 0
}

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

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

declare i32 @xerbla_(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

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

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

declare double @f2c_dnrm2(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

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

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

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

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

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

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

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

; 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.smin.i64(i64, i64) #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !21}
!20 = !{!"llvm.loop.isvectorized", i32 1}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = distinct !{!22, !12, !21, !20}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}


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