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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@c_false = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@c_b22 = external hidden global double, align 8
@c_b25 = external hidden global double, align 8
@c__2 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8

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

113:                                              ; preds = %14
  %114 = load i64, ptr %72, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br label %116

116:                                              ; preds = %113, %14
  %117 = phi i1 [ true, %14 ], [ %115, %113 ]
  %118 = zext i1 %117 to i32
  %119 = sext i32 %118 to i64
  store i64 %119, ptr %77, align 8, !tbaa !9
  %120 = load ptr, ptr %16, align 8, !tbaa !5
  %121 = call i64 @lsame_(ptr noundef %120, ptr noundef @.str.2)
  %122 = icmp ne i64 %121, 0
  br i1 %122, label %126, label %123

123:                                              ; preds = %116
  %124 = load i64, ptr %72, align 8, !tbaa !9
  %125 = icmp ne i64 %124, 0
  br label %126

126:                                              ; preds = %123, %116
  %127 = phi i1 [ true, %116 ], [ %125, %123 ]
  %128 = zext i1 %127 to i32
  %129 = sext i32 %128 to i64
  store i64 %129, ptr %71, align 8, !tbaa !9
  %130 = load ptr, ptr %17, align 8, !tbaa !5
  %131 = call i64 @lsame_(ptr noundef %130, ptr noundef @.str.3)
  store i64 %131, ptr %61, align 8, !tbaa !9
  %132 = load ptr, ptr %17, align 8, !tbaa !5
  %133 = call i64 @lsame_(ptr noundef %132, ptr noundef @.str)
  store i64 %133, ptr %66, align 8, !tbaa !9
  %134 = load ptr, ptr %17, align 8, !tbaa !5
  %135 = call i64 @lsame_(ptr noundef %134, ptr noundef @.str.4)
  store i64 %135, ptr %74, align 8, !tbaa !9
  %136 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %136, align 8, !tbaa !9
  %137 = load i64, ptr %77, align 8, !tbaa !9
  %138 = icmp ne i64 %137, 0
  br i1 %138, label %144, label %139

139:                                              ; preds = %126
  %140 = load i64, ptr %71, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %144, label %142

142:                                              ; preds = %139
  %143 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -1, ptr %143, align 8, !tbaa !9
  br label %309

144:                                              ; preds = %139, %126
  %145 = load i64, ptr %61, align 8, !tbaa !9
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %155, label %147

147:                                              ; preds = %144
  %148 = load i64, ptr %66, align 8, !tbaa !9
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %155, label %150

150:                                              ; preds = %147
  %151 = load i64, ptr %74, align 8, !tbaa !9
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %155, label %153

153:                                              ; preds = %150
  %154 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -2, ptr %154, align 8, !tbaa !9
  br label %308

155:                                              ; preds = %150, %147, %144
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = icmp slt i64 %157, 0
  br i1 %158, label %159, label %161

159:                                              ; preds = %155
  %160 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -4, ptr %160, align 8, !tbaa !9
  br label %307

161:                                              ; preds = %155
  %162 = load ptr, ptr %21, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = load ptr, ptr %19, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = icmp sge i64 1, %165
  br i1 %166, label %167, label %168

167:                                              ; preds = %161
  br label %171

168:                                              ; preds = %161
  %169 = load ptr, ptr %19, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  br label %171

171:                                              ; preds = %168, %167
  %172 = phi i64 [ 1, %167 ], [ %170, %168 ]
  %173 = icmp slt i64 %163, %172
  br i1 %173, label %174, label %176

174:                                              ; preds = %171
  %175 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -6, ptr %175, align 8, !tbaa !9
  br label %306

176:                                              ; preds = %171
  %177 = load ptr, ptr %23, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = icmp slt i64 %178, 1
  br i1 %179, label %189, label %180

180:                                              ; preds = %176
  %181 = load i64, ptr %71, align 8, !tbaa !9
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %183, label %191

183:                                              ; preds = %180
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = load ptr, ptr %19, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = icmp slt i64 %185, %187
  br i1 %188, label %189, label %191

189:                                              ; preds = %183, %176
  %190 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -8, ptr %190, align 8, !tbaa !9
  br label %305

191:                                              ; preds = %183, %180
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp slt i64 %193, 1
  br i1 %194, label %204, label %195

195:                                              ; preds = %191
  %196 = load i64, ptr %77, align 8, !tbaa !9
  %197 = icmp ne i64 %196, 0
  br i1 %197, label %198, label %206

198:                                              ; preds = %195
  %199 = load ptr, ptr %25, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  %201 = load ptr, ptr %19, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = icmp slt i64 %200, %202
  br i1 %203, label %204, label %206

204:                                              ; preds = %198, %191
  %205 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -10, ptr %205, align 8, !tbaa !9
  br label %304

206:                                              ; preds = %198, %195
  %207 = load i64, ptr %74, align 8, !tbaa !9
  %208 = icmp ne i64 %207, 0
  br i1 %208, label %209, label %291

209:                                              ; preds = %206
  %210 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %210, align 8, !tbaa !9
  store i64 0, ptr %60, align 8, !tbaa !9
  %211 = load ptr, ptr %19, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  store i64 %212, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %287, %209
  %214 = load i64, ptr %44, align 8, !tbaa !9
  %215 = load i64, ptr %36, align 8, !tbaa !9
  %216 = icmp sle i64 %214, %215
  br i1 %216, label %217, label %290

217:                                              ; preds = %213
  %218 = load i64, ptr %60, align 8, !tbaa !9
  %219 = icmp ne i64 %218, 0
  br i1 %219, label %220, label %224

220:                                              ; preds = %217
  store i64 0, ptr %60, align 8, !tbaa !9
  %221 = load ptr, ptr %18, align 8, !tbaa !5
  %222 = load i64, ptr %44, align 8, !tbaa !9
  %223 = getelementptr inbounds i64, ptr %221, i64 %222
  store i64 0, ptr %223, align 8, !tbaa !9
  br label %286

224:                                              ; preds = %217
  %225 = load i64, ptr %44, align 8, !tbaa !9
  %226 = load ptr, ptr %19, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = icmp slt i64 %225, %227
  br i1 %228, label %229, label %273

229:                                              ; preds = %224
  %230 = load ptr, ptr %20, align 8, !tbaa !5
  %231 = load i64, ptr %44, align 8, !tbaa !9
  %232 = add nsw i64 %231, 1
  %233 = load i64, ptr %44, align 8, !tbaa !9
  %234 = load i64, ptr %30, align 8, !tbaa !9
  %235 = mul nsw i64 %233, %234
  %236 = add nsw i64 %232, %235
  %237 = getelementptr inbounds double, ptr %230, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !11
  %239 = fcmp oeq double %238, 0.000000e+00
  br i1 %239, label %240, label %251

240:                                              ; preds = %229
  %241 = load ptr, ptr %18, align 8, !tbaa !5
  %242 = load i64, ptr %44, align 8, !tbaa !9
  %243 = getelementptr inbounds i64, ptr %241, i64 %242
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp ne i64 %244, 0
  br i1 %245, label %246, label %250

246:                                              ; preds = %240
  %247 = load ptr, ptr %27, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = add nsw i64 %248, 1
  store i64 %249, ptr %247, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %246, %240
  br label %272

251:                                              ; preds = %229
  store i64 1, ptr %60, align 8, !tbaa !9
  %252 = load ptr, ptr %18, align 8, !tbaa !5
  %253 = load i64, ptr %44, align 8, !tbaa !9
  %254 = getelementptr inbounds i64, ptr %252, i64 %253
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp ne i64 %255, 0
  br i1 %256, label %264, label %257

257:                                              ; preds = %251
  %258 = load ptr, ptr %18, align 8, !tbaa !5
  %259 = load i64, ptr %44, align 8, !tbaa !9
  %260 = add nsw i64 %259, 1
  %261 = getelementptr inbounds i64, ptr %258, i64 %260
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = icmp ne i64 %262, 0
  br i1 %263, label %264, label %271

264:                                              ; preds = %257, %251
  %265 = load ptr, ptr %18, align 8, !tbaa !5
  %266 = load i64, ptr %44, align 8, !tbaa !9
  %267 = getelementptr inbounds i64, ptr %265, i64 %266
  store i64 1, ptr %267, align 8, !tbaa !9
  %268 = load ptr, ptr %27, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = add nsw i64 %269, 2
  store i64 %270, ptr %268, align 8, !tbaa !9
  br label %271

271:                                              ; preds = %264, %257
  br label %272

272:                                              ; preds = %271, %250
  br label %285

273:                                              ; preds = %224
  %274 = load ptr, ptr %18, align 8, !tbaa !5
  %275 = load ptr, ptr %19, align 8, !tbaa !5
  %276 = load i64, ptr %275, align 8, !tbaa !9
  %277 = getelementptr inbounds i64, ptr %274, i64 %276
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = icmp ne i64 %278, 0
  br i1 %279, label %280, label %284

280:                                              ; preds = %273
  %281 = load ptr, ptr %27, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  %283 = add nsw i64 %282, 1
  store i64 %283, ptr %281, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %280, %273
  br label %285

285:                                              ; preds = %284, %272
  br label %286

286:                                              ; preds = %285, %220
  br label %287

287:                                              ; preds = %286
  %288 = load i64, ptr %44, align 8, !tbaa !9
  %289 = add nsw i64 %288, 1
  store i64 %289, ptr %44, align 8, !tbaa !9
  br label %213, !llvm.loop !13

290:                                              ; preds = %213
  br label %295

291:                                              ; preds = %206
  %292 = load ptr, ptr %19, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 %293, ptr %294, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %291, %290
  %296 = load ptr, ptr %26, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  %298 = load ptr, ptr %27, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = icmp slt i64 %297, %299
  br i1 %300, label %301, label %303

301:                                              ; preds = %295
  %302 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -11, ptr %302, align 8, !tbaa !9
  br label %303

303:                                              ; preds = %301, %295
  br label %304

304:                                              ; preds = %303, %204
  br label %305

305:                                              ; preds = %304, %189
  br label %306

306:                                              ; preds = %305, %174
  br label %307

307:                                              ; preds = %306, %159
  br label %308

308:                                              ; preds = %307, %153
  br label %309

309:                                              ; preds = %308, %142
  %310 = load ptr, ptr %29, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = icmp ne i64 %311, 0
  br i1 %312, label %313, label %318

313:                                              ; preds = %309
  %314 = load ptr, ptr %29, align 8, !tbaa !5
  %315 = load i64, ptr %314, align 8, !tbaa !9
  %316 = sub nsw i64 0, %315
  store i64 %316, ptr %36, align 8, !tbaa !9
  %317 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %36)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %79, align 4
  br label %3545

318:                                              ; preds = %309
  %319 = load ptr, ptr %19, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = icmp eq i64 %320, 0
  br i1 %321, label %322, label %323

322:                                              ; preds = %318
  store i32 0, ptr %15, align 4
  store i32 1, ptr %79, align 4
  br label %3545

323:                                              ; preds = %318
  %324 = call double @dlamch_(ptr noundef @.str.6)
  store double %324, ptr %63, align 8, !tbaa !11
  %325 = load double, ptr %63, align 8, !tbaa !11
  %326 = fdiv double 1.000000e+00, %325
  store double %326, ptr %64, align 8, !tbaa !11
  %327 = call i32 @dlabad_(ptr noundef %63, ptr noundef %64)
  %328 = call double @dlamch_(ptr noundef @.str.7)
  store double %328, ptr %57, align 8, !tbaa !11
  %329 = load double, ptr %63, align 8, !tbaa !11
  %330 = load ptr, ptr %19, align 8, !tbaa !5
  %331 = load i64, ptr %330, align 8, !tbaa !9
  %332 = sitofp i64 %331 to double
  %333 = load double, ptr %57, align 8, !tbaa !11
  %334 = fdiv double %332, %333
  %335 = fmul double %329, %334
  store double %335, ptr %78, align 8, !tbaa !11
  %336 = load double, ptr %57, align 8, !tbaa !11
  %337 = fsub double 1.000000e+00, %336
  %338 = load double, ptr %78, align 8, !tbaa !11
  %339 = fdiv double %337, %338
  store double %339, ptr %76, align 8, !tbaa !11
  %340 = load ptr, ptr %28, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %340, i64 1
  store double 0.000000e+00, ptr %341, align 8, !tbaa !11
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  store i64 %343, ptr %36, align 8, !tbaa !9
  store i64 2, ptr %44, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %385, %323
  %345 = load i64, ptr %44, align 8, !tbaa !9
  %346 = load i64, ptr %36, align 8, !tbaa !9
  %347 = icmp sle i64 %345, %346
  br i1 %347, label %348, label %388

348:                                              ; preds = %344
  %349 = load ptr, ptr %28, align 8, !tbaa !5
  %350 = load i64, ptr %44, align 8, !tbaa !9
  %351 = getelementptr inbounds double, ptr %349, i64 %350
  store double 0.000000e+00, ptr %351, align 8, !tbaa !11
  %352 = load i64, ptr %44, align 8, !tbaa !9
  %353 = sub nsw i64 %352, 1
  store i64 %353, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %354

354:                                              ; preds = %381, %348
  %355 = load i64, ptr %43, align 8, !tbaa !9
  %356 = load i64, ptr %37, align 8, !tbaa !9
  %357 = icmp sle i64 %355, %356
  br i1 %357, label %358, label %384

358:                                              ; preds = %354
  %359 = load ptr, ptr %20, align 8, !tbaa !5
  %360 = load i64, ptr %43, align 8, !tbaa !9
  %361 = load i64, ptr %44, align 8, !tbaa !9
  %362 = load i64, ptr %30, align 8, !tbaa !9
  %363 = mul nsw i64 %361, %362
  %364 = add nsw i64 %360, %363
  %365 = getelementptr inbounds double, ptr %359, i64 %364
  %366 = load double, ptr %365, align 8, !tbaa !11
  store double %366, ptr %39, align 8, !tbaa !11
  %367 = load double, ptr %39, align 8, !tbaa !11
  %368 = fcmp oge double %367, 0.000000e+00
  br i1 %368, label %369, label %371

369:                                              ; preds = %358
  %370 = load double, ptr %39, align 8, !tbaa !11
  br label %374

371:                                              ; preds = %358
  %372 = load double, ptr %39, align 8, !tbaa !11
  %373 = fneg double %372
  br label %374

374:                                              ; preds = %371, %369
  %375 = phi double [ %370, %369 ], [ %373, %371 ]
  %376 = load ptr, ptr %28, align 8, !tbaa !5
  %377 = load i64, ptr %44, align 8, !tbaa !9
  %378 = getelementptr inbounds double, ptr %376, i64 %377
  %379 = load double, ptr %378, align 8, !tbaa !11
  %380 = fadd double %379, %375
  store double %380, ptr %378, align 8, !tbaa !11
  br label %381

381:                                              ; preds = %374
  %382 = load i64, ptr %43, align 8, !tbaa !9
  %383 = add nsw i64 %382, 1
  store i64 %383, ptr %43, align 8, !tbaa !9
  br label %354, !llvm.loop !15

384:                                              ; preds = %354
  br label %385

385:                                              ; preds = %384
  %386 = load i64, ptr %44, align 8, !tbaa !9
  %387 = add nsw i64 %386, 1
  store i64 %387, ptr %44, align 8, !tbaa !9
  br label %344, !llvm.loop !16

388:                                              ; preds = %344
  %389 = load ptr, ptr %19, align 8, !tbaa !5
  %390 = load i64, ptr %389, align 8, !tbaa !9
  %391 = shl i64 %390, 1
  store i64 %391, ptr %49, align 8, !tbaa !9
  %392 = load i64, ptr %77, align 8, !tbaa !9
  %393 = icmp ne i64 %392, 0
  br i1 %393, label %394, label %1746

394:                                              ; preds = %388
  store i64 0, ptr %52, align 8, !tbaa !9
  %395 = load ptr, ptr %27, align 8, !tbaa !5
  %396 = load i64, ptr %395, align 8, !tbaa !9
  store i64 %396, ptr %53, align 8, !tbaa !9
  %397 = load ptr, ptr %19, align 8, !tbaa !5
  %398 = load i64, ptr %397, align 8, !tbaa !9
  store i64 %398, ptr %51, align 8, !tbaa !9
  br label %399

399:                                              ; preds = %1742, %394
  %400 = load i64, ptr %51, align 8, !tbaa !9
  %401 = icmp sge i64 %400, 1
  br i1 %401, label %402, label %1745

402:                                              ; preds = %399
  %403 = load i64, ptr %52, align 8, !tbaa !9
  %404 = icmp eq i64 %403, 1
  br i1 %404, label %405, label %406

405:                                              ; preds = %402
  br label %1733

406:                                              ; preds = %402
  %407 = load i64, ptr %51, align 8, !tbaa !9
  %408 = icmp eq i64 %407, 1
  br i1 %408, label %409, label %410

409:                                              ; preds = %406
  br label %423

410:                                              ; preds = %406
  %411 = load ptr, ptr %20, align 8, !tbaa !5
  %412 = load i64, ptr %51, align 8, !tbaa !9
  %413 = load i64, ptr %51, align 8, !tbaa !9
  %414 = sub nsw i64 %413, 1
  %415 = load i64, ptr %30, align 8, !tbaa !9
  %416 = mul nsw i64 %414, %415
  %417 = add nsw i64 %412, %416
  %418 = getelementptr inbounds double, ptr %411, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !11
  %420 = fcmp oeq double %419, 0.000000e+00
  br i1 %420, label %421, label %422

421:                                              ; preds = %410
  br label %423

422:                                              ; preds = %410
  store i64 -1, ptr %52, align 8, !tbaa !9
  br label %423

423:                                              ; preds = %422, %421, %409
  %424 = load i64, ptr %74, align 8, !tbaa !9
  %425 = icmp ne i64 %424, 0
  br i1 %425, label %426, label %447

426:                                              ; preds = %423
  %427 = load i64, ptr %52, align 8, !tbaa !9
  %428 = icmp eq i64 %427, 0
  br i1 %428, label %429, label %437

429:                                              ; preds = %426
  %430 = load ptr, ptr %18, align 8, !tbaa !5
  %431 = load i64, ptr %51, align 8, !tbaa !9
  %432 = getelementptr inbounds i64, ptr %430, i64 %431
  %433 = load i64, ptr %432, align 8, !tbaa !9
  %434 = icmp ne i64 %433, 0
  br i1 %434, label %436, label %435

435:                                              ; preds = %429
  br label %1733

436:                                              ; preds = %429
  br label %446

437:                                              ; preds = %426
  %438 = load ptr, ptr %18, align 8, !tbaa !5
  %439 = load i64, ptr %51, align 8, !tbaa !9
  %440 = sub nsw i64 %439, 1
  %441 = getelementptr inbounds i64, ptr %438, i64 %440
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = icmp ne i64 %442, 0
  br i1 %443, label %445, label %444

444:                                              ; preds = %437
  br label %1733

445:                                              ; preds = %437
  br label %446

446:                                              ; preds = %445, %436
  br label %447

447:                                              ; preds = %446, %423
  %448 = load ptr, ptr %20, align 8, !tbaa !5
  %449 = load i64, ptr %51, align 8, !tbaa !9
  %450 = load i64, ptr %51, align 8, !tbaa !9
  %451 = load i64, ptr %30, align 8, !tbaa !9
  %452 = mul nsw i64 %450, %451
  %453 = add nsw i64 %449, %452
  %454 = getelementptr inbounds double, ptr %448, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !11
  store double %455, ptr %55, align 8, !tbaa !11
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %456 = load i64, ptr %52, align 8, !tbaa !9
  %457 = icmp ne i64 %456, 0
  br i1 %457, label %458, label %498

458:                                              ; preds = %447
  %459 = load ptr, ptr %20, align 8, !tbaa !5
  %460 = load i64, ptr %51, align 8, !tbaa !9
  %461 = load i64, ptr %51, align 8, !tbaa !9
  %462 = sub nsw i64 %461, 1
  %463 = load i64, ptr %30, align 8, !tbaa !9
  %464 = mul nsw i64 %462, %463
  %465 = add nsw i64 %460, %464
  %466 = getelementptr inbounds double, ptr %459, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !11
  store double %467, ptr %39, align 8, !tbaa !11
  %468 = load double, ptr %39, align 8, !tbaa !11
  %469 = fcmp oge double %468, 0.000000e+00
  br i1 %469, label %470, label %472

470:                                              ; preds = %458
  %471 = load double, ptr %39, align 8, !tbaa !11
  br label %475

472:                                              ; preds = %458
  %473 = load double, ptr %39, align 8, !tbaa !11
  %474 = fneg double %473
  br label %475

475:                                              ; preds = %472, %470
  %476 = phi double [ %471, %470 ], [ %474, %472 ]
  %477 = call double @sqrt(double noundef %476) #4
  %478 = load ptr, ptr %20, align 8, !tbaa !5
  %479 = load i64, ptr %51, align 8, !tbaa !9
  %480 = sub nsw i64 %479, 1
  %481 = load i64, ptr %51, align 8, !tbaa !9
  %482 = load i64, ptr %30, align 8, !tbaa !9
  %483 = mul nsw i64 %481, %482
  %484 = add nsw i64 %480, %483
  %485 = getelementptr inbounds double, ptr %478, i64 %484
  %486 = load double, ptr %485, align 8, !tbaa !11
  store double %486, ptr %40, align 8, !tbaa !11
  %487 = load double, ptr %40, align 8, !tbaa !11
  %488 = fcmp oge double %487, 0.000000e+00
  br i1 %488, label %489, label %491

489:                                              ; preds = %475
  %490 = load double, ptr %40, align 8, !tbaa !11
  br label %494

491:                                              ; preds = %475
  %492 = load double, ptr %40, align 8, !tbaa !11
  %493 = fneg double %492
  br label %494

494:                                              ; preds = %491, %489
  %495 = phi double [ %490, %489 ], [ %493, %491 ]
  %496 = call double @sqrt(double noundef %495) #4
  %497 = fmul double %477, %496
  store double %497, ptr %54, align 8, !tbaa !11
  br label %498

498:                                              ; preds = %494, %447
  %499 = load double, ptr %57, align 8, !tbaa !11
  %500 = load double, ptr %55, align 8, !tbaa !11
  %501 = fcmp oge double %500, 0.000000e+00
  br i1 %501, label %502, label %504

502:                                              ; preds = %498
  %503 = load double, ptr %55, align 8, !tbaa !11
  br label %507

504:                                              ; preds = %498
  %505 = load double, ptr %55, align 8, !tbaa !11
  %506 = fneg double %505
  br label %507

507:                                              ; preds = %504, %502
  %508 = phi double [ %503, %502 ], [ %506, %504 ]
  %509 = load double, ptr %54, align 8, !tbaa !11
  %510 = fcmp oge double %509, 0.000000e+00
  br i1 %510, label %511, label %513

511:                                              ; preds = %507
  %512 = load double, ptr %54, align 8, !tbaa !11
  br label %516

513:                                              ; preds = %507
  %514 = load double, ptr %54, align 8, !tbaa !11
  %515 = fneg double %514
  br label %516

516:                                              ; preds = %513, %511
  %517 = phi double [ %512, %511 ], [ %515, %513 ]
  %518 = fadd double %508, %517
  %519 = fmul double %499, %518
  store double %519, ptr %39, align 8, !tbaa !11
  %520 = load double, ptr %39, align 8, !tbaa !11
  %521 = load double, ptr %78, align 8, !tbaa !11
  %522 = fcmp oge double %520, %521
  br i1 %522, label %523, label %525

523:                                              ; preds = %516
  %524 = load double, ptr %39, align 8, !tbaa !11
  br label %527

525:                                              ; preds = %516
  %526 = load double, ptr %78, align 8, !tbaa !11
  br label %527

527:                                              ; preds = %525, %523
  %528 = phi double [ %524, %523 ], [ %526, %525 ]
  store double %528, ptr %65, align 8, !tbaa !11
  %529 = load i64, ptr %52, align 8, !tbaa !9
  %530 = icmp eq i64 %529, 0
  br i1 %530, label %531, label %939

531:                                              ; preds = %527
  %532 = load ptr, ptr %28, align 8, !tbaa !5
  %533 = load i64, ptr %51, align 8, !tbaa !9
  %534 = load ptr, ptr %19, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = add nsw i64 %533, %535
  %537 = getelementptr inbounds double, ptr %532, i64 %536
  store double 1.000000e+00, ptr %537, align 8, !tbaa !11
  %538 = load i64, ptr %51, align 8, !tbaa !9
  %539 = sub nsw i64 %538, 1
  store i64 %539, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %540

540:                                              ; preds = %560, %531
  %541 = load i64, ptr %45, align 8, !tbaa !9
  %542 = load i64, ptr %36, align 8, !tbaa !9
  %543 = icmp sle i64 %541, %542
  br i1 %543, label %544, label %563

544:                                              ; preds = %540
  %545 = load ptr, ptr %20, align 8, !tbaa !5
  %546 = load i64, ptr %45, align 8, !tbaa !9
  %547 = load i64, ptr %51, align 8, !tbaa !9
  %548 = load i64, ptr %30, align 8, !tbaa !9
  %549 = mul nsw i64 %547, %548
  %550 = add nsw i64 %546, %549
  %551 = getelementptr inbounds double, ptr %545, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !11
  %553 = fneg double %552
  %554 = load ptr, ptr %28, align 8, !tbaa !5
  %555 = load i64, ptr %45, align 8, !tbaa !9
  %556 = load ptr, ptr %19, align 8, !tbaa !5
  %557 = load i64, ptr %556, align 8, !tbaa !9
  %558 = add nsw i64 %555, %557
  %559 = getelementptr inbounds double, ptr %554, i64 %558
  store double %553, ptr %559, align 8, !tbaa !11
  br label %560

560:                                              ; preds = %544
  %561 = load i64, ptr %45, align 8, !tbaa !9
  %562 = add nsw i64 %561, 1
  store i64 %562, ptr %45, align 8, !tbaa !9
  br label %540, !llvm.loop !17

563:                                              ; preds = %540
  %564 = load i64, ptr %51, align 8, !tbaa !9
  %565 = sub nsw i64 %564, 1
  store i64 %565, ptr %68, align 8, !tbaa !9
  %566 = load i64, ptr %51, align 8, !tbaa !9
  %567 = sub nsw i64 %566, 1
  store i64 %567, ptr %44, align 8, !tbaa !9
  br label %568

568:                                              ; preds = %803, %563
  %569 = load i64, ptr %44, align 8, !tbaa !9
  %570 = icmp sge i64 %569, 1
  br i1 %570, label %571, label %806

571:                                              ; preds = %568
  %572 = load i64, ptr %44, align 8, !tbaa !9
  %573 = load i64, ptr %68, align 8, !tbaa !9
  %574 = icmp sgt i64 %572, %573
  br i1 %574, label %575, label %576

575:                                              ; preds = %571
  br label %802

576:                                              ; preds = %571
  %577 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %577, ptr %47, align 8, !tbaa !9
  %578 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %578, ptr %48, align 8, !tbaa !9
  %579 = load i64, ptr %44, align 8, !tbaa !9
  %580 = sub nsw i64 %579, 1
  store i64 %580, ptr %68, align 8, !tbaa !9
  %581 = load i64, ptr %44, align 8, !tbaa !9
  %582 = icmp sgt i64 %581, 1
  br i1 %582, label %583, label %600

583:                                              ; preds = %576
  %584 = load ptr, ptr %20, align 8, !tbaa !5
  %585 = load i64, ptr %44, align 8, !tbaa !9
  %586 = load i64, ptr %44, align 8, !tbaa !9
  %587 = sub nsw i64 %586, 1
  %588 = load i64, ptr %30, align 8, !tbaa !9
  %589 = mul nsw i64 %587, %588
  %590 = add nsw i64 %585, %589
  %591 = getelementptr inbounds double, ptr %584, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !11
  %593 = fcmp une double %592, 0.000000e+00
  br i1 %593, label %594, label %599

594:                                              ; preds = %583
  %595 = load i64, ptr %44, align 8, !tbaa !9
  %596 = sub nsw i64 %595, 1
  store i64 %596, ptr %47, align 8, !tbaa !9
  %597 = load i64, ptr %44, align 8, !tbaa !9
  %598 = sub nsw i64 %597, 2
  store i64 %598, ptr %68, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %594, %583
  br label %600

600:                                              ; preds = %599, %576
  %601 = load i64, ptr %47, align 8, !tbaa !9
  %602 = load i64, ptr %48, align 8, !tbaa !9
  %603 = icmp eq i64 %601, %602
  br i1 %603, label %604, label %678

604:                                              ; preds = %600
  %605 = load ptr, ptr %20, align 8, !tbaa !5
  %606 = load i64, ptr %44, align 8, !tbaa !9
  %607 = load i64, ptr %44, align 8, !tbaa !9
  %608 = load i64, ptr %30, align 8, !tbaa !9
  %609 = mul nsw i64 %607, %608
  %610 = add nsw i64 %606, %609
  %611 = getelementptr inbounds double, ptr %605, i64 %610
  %612 = load ptr, ptr %21, align 8, !tbaa !5
  %613 = load ptr, ptr %28, align 8, !tbaa !5
  %614 = load i64, ptr %44, align 8, !tbaa !9
  %615 = load ptr, ptr %19, align 8, !tbaa !5
  %616 = load i64, ptr %615, align 8, !tbaa !9
  %617 = add nsw i64 %614, %616
  %618 = getelementptr inbounds double, ptr %613, i64 %617
  %619 = load ptr, ptr %19, align 8, !tbaa !5
  %620 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %621 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %65, ptr noundef @c_b22, ptr noundef %611, ptr noundef %612, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %618, ptr noundef %619, ptr noundef %55, ptr noundef @c_b25, ptr noundef %620, ptr noundef @c__2, ptr noundef %69, ptr noundef %75, ptr noundef %62)
  %622 = load double, ptr %75, align 8, !tbaa !11
  %623 = fcmp ogt double %622, 1.000000e+00
  br i1 %623, label %624, label %642

624:                                              ; preds = %604
  %625 = load ptr, ptr %28, align 8, !tbaa !5
  %626 = load i64, ptr %44, align 8, !tbaa !9
  %627 = getelementptr inbounds double, ptr %625, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = load double, ptr %76, align 8, !tbaa !11
  %630 = load double, ptr %75, align 8, !tbaa !11
  %631 = fdiv double %629, %630
  %632 = fcmp ogt double %628, %631
  br i1 %632, label %633, label %641

633:                                              ; preds = %624
  %634 = load double, ptr %75, align 8, !tbaa !11
  %635 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %636 = load double, ptr %635, align 16, !tbaa !11
  %637 = fdiv double %636, %634
  store double %637, ptr %635, align 16, !tbaa !11
  %638 = load double, ptr %75, align 8, !tbaa !11
  %639 = load double, ptr %69, align 8, !tbaa !11
  %640 = fdiv double %639, %638
  store double %640, ptr %69, align 8, !tbaa !11
  br label %641

641:                                              ; preds = %633, %624
  br label %642

642:                                              ; preds = %641, %604
  %643 = load double, ptr %69, align 8, !tbaa !11
  %644 = fcmp une double %643, 1.000000e+00
  br i1 %644, label %645, label %652

645:                                              ; preds = %642
  %646 = load ptr, ptr %28, align 8, !tbaa !5
  %647 = load ptr, ptr %19, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = add nsw i64 %648, 1
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %69, ptr noundef %650, ptr noundef @c__1)
  br label %652

652:                                              ; preds = %645, %642
  %653 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %654 = load double, ptr %653, align 16, !tbaa !11
  %655 = load ptr, ptr %28, align 8, !tbaa !5
  %656 = load i64, ptr %44, align 8, !tbaa !9
  %657 = load ptr, ptr %19, align 8, !tbaa !5
  %658 = load i64, ptr %657, align 8, !tbaa !9
  %659 = add nsw i64 %656, %658
  %660 = getelementptr inbounds double, ptr %655, i64 %659
  store double %654, ptr %660, align 8, !tbaa !11
  %661 = load i64, ptr %44, align 8, !tbaa !9
  %662 = sub nsw i64 %661, 1
  store i64 %662, ptr %36, align 8, !tbaa !9
  %663 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %664 = load double, ptr %663, align 16, !tbaa !11
  %665 = fneg double %664
  store double %665, ptr %39, align 8, !tbaa !11
  %666 = load ptr, ptr %20, align 8, !tbaa !5
  %667 = load i64, ptr %44, align 8, !tbaa !9
  %668 = load i64, ptr %30, align 8, !tbaa !9
  %669 = mul nsw i64 %667, %668
  %670 = add nsw i64 %669, 1
  %671 = getelementptr inbounds double, ptr %666, i64 %670
  %672 = load ptr, ptr %28, align 8, !tbaa !5
  %673 = load ptr, ptr %19, align 8, !tbaa !5
  %674 = load i64, ptr %673, align 8, !tbaa !9
  %675 = add nsw i64 %674, 1
  %676 = getelementptr inbounds double, ptr %672, i64 %675
  %677 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %671, ptr noundef @c__1, ptr noundef %676, ptr noundef @c__1)
  br label %801

678:                                              ; preds = %600
  %679 = load ptr, ptr %20, align 8, !tbaa !5
  %680 = load i64, ptr %44, align 8, !tbaa !9
  %681 = sub nsw i64 %680, 1
  %682 = load i64, ptr %44, align 8, !tbaa !9
  %683 = sub nsw i64 %682, 1
  %684 = load i64, ptr %30, align 8, !tbaa !9
  %685 = mul nsw i64 %683, %684
  %686 = add nsw i64 %681, %685
  %687 = getelementptr inbounds double, ptr %679, i64 %686
  %688 = load ptr, ptr %21, align 8, !tbaa !5
  %689 = load ptr, ptr %28, align 8, !tbaa !5
  %690 = load i64, ptr %44, align 8, !tbaa !9
  %691 = sub nsw i64 %690, 1
  %692 = load ptr, ptr %19, align 8, !tbaa !5
  %693 = load i64, ptr %692, align 8, !tbaa !9
  %694 = add nsw i64 %691, %693
  %695 = getelementptr inbounds double, ptr %689, i64 %694
  %696 = load ptr, ptr %19, align 8, !tbaa !5
  %697 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %698 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %65, ptr noundef @c_b22, ptr noundef %687, ptr noundef %688, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %695, ptr noundef %696, ptr noundef %55, ptr noundef @c_b25, ptr noundef %697, ptr noundef @c__2, ptr noundef %69, ptr noundef %75, ptr noundef %62)
  %699 = load double, ptr %75, align 8, !tbaa !11
  %700 = fcmp ogt double %699, 1.000000e+00
  br i1 %700, label %701, label %738

701:                                              ; preds = %678
  %702 = load ptr, ptr %28, align 8, !tbaa !5
  %703 = load i64, ptr %44, align 8, !tbaa !9
  %704 = sub nsw i64 %703, 1
  %705 = getelementptr inbounds double, ptr %702, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !11
  store double %706, ptr %39, align 8, !tbaa !11
  %707 = load ptr, ptr %28, align 8, !tbaa !5
  %708 = load i64, ptr %44, align 8, !tbaa !9
  %709 = getelementptr inbounds double, ptr %707, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !11
  store double %710, ptr %40, align 8, !tbaa !11
  %711 = load double, ptr %39, align 8, !tbaa !11
  %712 = load double, ptr %40, align 8, !tbaa !11
  %713 = fcmp oge double %711, %712
  br i1 %713, label %714, label %716

714:                                              ; preds = %701
  %715 = load double, ptr %39, align 8, !tbaa !11
  br label %718

716:                                              ; preds = %701
  %717 = load double, ptr %40, align 8, !tbaa !11
  br label %718

718:                                              ; preds = %716, %714
  %719 = phi double [ %715, %714 ], [ %717, %716 ]
  store double %719, ptr %58, align 8, !tbaa !11
  %720 = load double, ptr %58, align 8, !tbaa !11
  %721 = load double, ptr %76, align 8, !tbaa !11
  %722 = load double, ptr %75, align 8, !tbaa !11
  %723 = fdiv double %721, %722
  %724 = fcmp ogt double %720, %723
  br i1 %724, label %725, label %737

725:                                              ; preds = %718
  %726 = load double, ptr %75, align 8, !tbaa !11
  %727 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %728 = load double, ptr %727, align 16, !tbaa !11
  %729 = fdiv double %728, %726
  store double %729, ptr %727, align 16, !tbaa !11
  %730 = load double, ptr %75, align 8, !tbaa !11
  %731 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %732 = load double, ptr %731, align 8, !tbaa !11
  %733 = fdiv double %732, %730
  store double %733, ptr %731, align 8, !tbaa !11
  %734 = load double, ptr %75, align 8, !tbaa !11
  %735 = load double, ptr %69, align 8, !tbaa !11
  %736 = fdiv double %735, %734
  store double %736, ptr %69, align 8, !tbaa !11
  br label %737

737:                                              ; preds = %725, %718
  br label %738

738:                                              ; preds = %737, %678
  %739 = load double, ptr %69, align 8, !tbaa !11
  %740 = fcmp une double %739, 1.000000e+00
  br i1 %740, label %741, label %748

741:                                              ; preds = %738
  %742 = load ptr, ptr %28, align 8, !tbaa !5
  %743 = load ptr, ptr %19, align 8, !tbaa !5
  %744 = load i64, ptr %743, align 8, !tbaa !9
  %745 = add nsw i64 %744, 1
  %746 = getelementptr inbounds double, ptr %742, i64 %745
  %747 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %69, ptr noundef %746, ptr noundef @c__1)
  br label %748

748:                                              ; preds = %741, %738
  %749 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %750 = load double, ptr %749, align 16, !tbaa !11
  %751 = load ptr, ptr %28, align 8, !tbaa !5
  %752 = load i64, ptr %44, align 8, !tbaa !9
  %753 = sub nsw i64 %752, 1
  %754 = load ptr, ptr %19, align 8, !tbaa !5
  %755 = load i64, ptr %754, align 8, !tbaa !9
  %756 = add nsw i64 %753, %755
  %757 = getelementptr inbounds double, ptr %751, i64 %756
  store double %750, ptr %757, align 8, !tbaa !11
  %758 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %759 = load double, ptr %758, align 8, !tbaa !11
  %760 = load ptr, ptr %28, align 8, !tbaa !5
  %761 = load i64, ptr %44, align 8, !tbaa !9
  %762 = load ptr, ptr %19, align 8, !tbaa !5
  %763 = load i64, ptr %762, align 8, !tbaa !9
  %764 = add nsw i64 %761, %763
  %765 = getelementptr inbounds double, ptr %760, i64 %764
  store double %759, ptr %765, align 8, !tbaa !11
  %766 = load i64, ptr %44, align 8, !tbaa !9
  %767 = sub nsw i64 %766, 2
  store i64 %767, ptr %36, align 8, !tbaa !9
  %768 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %769 = load double, ptr %768, align 16, !tbaa !11
  %770 = fneg double %769
  store double %770, ptr %39, align 8, !tbaa !11
  %771 = load ptr, ptr %20, align 8, !tbaa !5
  %772 = load i64, ptr %44, align 8, !tbaa !9
  %773 = sub nsw i64 %772, 1
  %774 = load i64, ptr %30, align 8, !tbaa !9
  %775 = mul nsw i64 %773, %774
  %776 = add nsw i64 %775, 1
  %777 = getelementptr inbounds double, ptr %771, i64 %776
  %778 = load ptr, ptr %28, align 8, !tbaa !5
  %779 = load ptr, ptr %19, align 8, !tbaa !5
  %780 = load i64, ptr %779, align 8, !tbaa !9
  %781 = add nsw i64 %780, 1
  %782 = getelementptr inbounds double, ptr %778, i64 %781
  %783 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %777, ptr noundef @c__1, ptr noundef %782, ptr noundef @c__1)
  %784 = load i64, ptr %44, align 8, !tbaa !9
  %785 = sub nsw i64 %784, 2
  store i64 %785, ptr %36, align 8, !tbaa !9
  %786 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %787 = load double, ptr %786, align 8, !tbaa !11
  %788 = fneg double %787
  store double %788, ptr %39, align 8, !tbaa !11
  %789 = load ptr, ptr %20, align 8, !tbaa !5
  %790 = load i64, ptr %44, align 8, !tbaa !9
  %791 = load i64, ptr %30, align 8, !tbaa !9
  %792 = mul nsw i64 %790, %791
  %793 = add nsw i64 %792, 1
  %794 = getelementptr inbounds double, ptr %789, i64 %793
  %795 = load ptr, ptr %28, align 8, !tbaa !5
  %796 = load ptr, ptr %19, align 8, !tbaa !5
  %797 = load i64, ptr %796, align 8, !tbaa !9
  %798 = add nsw i64 %797, 1
  %799 = getelementptr inbounds double, ptr %795, i64 %798
  %800 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %794, ptr noundef @c__1, ptr noundef %799, ptr noundef @c__1)
  br label %801

801:                                              ; preds = %748, %652
  br label %802

802:                                              ; preds = %801, %575
  br label %803

803:                                              ; preds = %802
  %804 = load i64, ptr %44, align 8, !tbaa !9
  %805 = add nsw i64 %804, -1
  store i64 %805, ptr %44, align 8, !tbaa !9
  br label %568, !llvm.loop !18

806:                                              ; preds = %568
  %807 = load i64, ptr %66, align 8, !tbaa !9
  %808 = icmp ne i64 %807, 0
  br i1 %808, label %874, label %809

809:                                              ; preds = %806
  %810 = load ptr, ptr %28, align 8, !tbaa !5
  %811 = load ptr, ptr %19, align 8, !tbaa !5
  %812 = load i64, ptr %811, align 8, !tbaa !9
  %813 = add nsw i64 %812, 1
  %814 = getelementptr inbounds double, ptr %810, i64 %813
  %815 = load ptr, ptr %24, align 8, !tbaa !5
  %816 = load i64, ptr %53, align 8, !tbaa !9
  %817 = load i64, ptr %34, align 8, !tbaa !9
  %818 = mul nsw i64 %816, %817
  %819 = add nsw i64 %818, 1
  %820 = getelementptr inbounds double, ptr %815, i64 %819
  %821 = call i32 @f2c_dcopy(ptr noundef %51, ptr noundef %814, ptr noundef @c__1, ptr noundef %820, ptr noundef @c__1)
  %822 = load ptr, ptr %24, align 8, !tbaa !5
  %823 = load i64, ptr %53, align 8, !tbaa !9
  %824 = load i64, ptr %34, align 8, !tbaa !9
  %825 = mul nsw i64 %823, %824
  %826 = add nsw i64 %825, 1
  %827 = getelementptr inbounds double, ptr %822, i64 %826
  %828 = call i64 @f2c_idamax(ptr noundef %51, ptr noundef %827, ptr noundef @c__1)
  store i64 %828, ptr %50, align 8, !tbaa !9
  %829 = load ptr, ptr %24, align 8, !tbaa !5
  %830 = load i64, ptr %50, align 8, !tbaa !9
  %831 = load i64, ptr %53, align 8, !tbaa !9
  %832 = load i64, ptr %34, align 8, !tbaa !9
  %833 = mul nsw i64 %831, %832
  %834 = add nsw i64 %830, %833
  %835 = getelementptr inbounds double, ptr %829, i64 %834
  %836 = load double, ptr %835, align 8, !tbaa !11
  store double %836, ptr %39, align 8, !tbaa !11
  %837 = load double, ptr %39, align 8, !tbaa !11
  %838 = fcmp oge double %837, 0.000000e+00
  br i1 %838, label %839, label %841

839:                                              ; preds = %809
  %840 = load double, ptr %39, align 8, !tbaa !11
  br label %844

841:                                              ; preds = %809
  %842 = load double, ptr %39, align 8, !tbaa !11
  %843 = fneg double %842
  br label %844

844:                                              ; preds = %841, %839
  %845 = phi double [ %840, %839 ], [ %843, %841 ]
  %846 = fdiv double 1.000000e+00, %845
  store double %846, ptr %70, align 8, !tbaa !11
  %847 = load ptr, ptr %24, align 8, !tbaa !5
  %848 = load i64, ptr %53, align 8, !tbaa !9
  %849 = load i64, ptr %34, align 8, !tbaa !9
  %850 = mul nsw i64 %848, %849
  %851 = add nsw i64 %850, 1
  %852 = getelementptr inbounds double, ptr %847, i64 %851
  %853 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %70, ptr noundef %852, ptr noundef @c__1)
  %854 = load ptr, ptr %19, align 8, !tbaa !5
  %855 = load i64, ptr %854, align 8, !tbaa !9
  store i64 %855, ptr %36, align 8, !tbaa !9
  %856 = load i64, ptr %51, align 8, !tbaa !9
  %857 = add nsw i64 %856, 1
  store i64 %857, ptr %45, align 8, !tbaa !9
  br label %858

858:                                              ; preds = %870, %844
  %859 = load i64, ptr %45, align 8, !tbaa !9
  %860 = load i64, ptr %36, align 8, !tbaa !9
  %861 = icmp sle i64 %859, %860
  br i1 %861, label %862, label %873

862:                                              ; preds = %858
  %863 = load ptr, ptr %24, align 8, !tbaa !5
  %864 = load i64, ptr %45, align 8, !tbaa !9
  %865 = load i64, ptr %53, align 8, !tbaa !9
  %866 = load i64, ptr %34, align 8, !tbaa !9
  %867 = mul nsw i64 %865, %866
  %868 = add nsw i64 %864, %867
  %869 = getelementptr inbounds double, ptr %863, i64 %868
  store double 0.000000e+00, ptr %869, align 8, !tbaa !11
  br label %870

870:                                              ; preds = %862
  %871 = load i64, ptr %45, align 8, !tbaa !9
  %872 = add nsw i64 %871, 1
  store i64 %872, ptr %45, align 8, !tbaa !9
  br label %858, !llvm.loop !19

873:                                              ; preds = %858
  br label %938

874:                                              ; preds = %806
  %875 = load i64, ptr %51, align 8, !tbaa !9
  %876 = icmp sgt i64 %875, 1
  br i1 %876, label %877, label %903

877:                                              ; preds = %874
  %878 = load i64, ptr %51, align 8, !tbaa !9
  %879 = sub nsw i64 %878, 1
  store i64 %879, ptr %36, align 8, !tbaa !9
  %880 = load ptr, ptr %19, align 8, !tbaa !5
  %881 = load ptr, ptr %24, align 8, !tbaa !5
  %882 = load i64, ptr %35, align 8, !tbaa !9
  %883 = getelementptr inbounds double, ptr %881, i64 %882
  %884 = load ptr, ptr %25, align 8, !tbaa !5
  %885 = load ptr, ptr %28, align 8, !tbaa !5
  %886 = load ptr, ptr %19, align 8, !tbaa !5
  %887 = load i64, ptr %886, align 8, !tbaa !9
  %888 = add nsw i64 %887, 1
  %889 = getelementptr inbounds double, ptr %885, i64 %888
  %890 = load ptr, ptr %28, align 8, !tbaa !5
  %891 = load i64, ptr %51, align 8, !tbaa !9
  %892 = load ptr, ptr %19, align 8, !tbaa !5
  %893 = load i64, ptr %892, align 8, !tbaa !9
  %894 = add nsw i64 %891, %893
  %895 = getelementptr inbounds double, ptr %890, i64 %894
  %896 = load ptr, ptr %24, align 8, !tbaa !5
  %897 = load i64, ptr %51, align 8, !tbaa !9
  %898 = load i64, ptr %34, align 8, !tbaa !9
  %899 = mul nsw i64 %897, %898
  %900 = add nsw i64 %899, 1
  %901 = getelementptr inbounds double, ptr %896, i64 %900
  %902 = call i32 @f2c_dgemv(ptr noundef @.str.8, ptr noundef %880, ptr noundef %36, ptr noundef @c_b22, ptr noundef %883, ptr noundef %884, ptr noundef %889, ptr noundef @c__1, ptr noundef %895, ptr noundef %901, ptr noundef @c__1)
  br label %903

903:                                              ; preds = %877, %874
  %904 = load ptr, ptr %19, align 8, !tbaa !5
  %905 = load ptr, ptr %24, align 8, !tbaa !5
  %906 = load i64, ptr %51, align 8, !tbaa !9
  %907 = load i64, ptr %34, align 8, !tbaa !9
  %908 = mul nsw i64 %906, %907
  %909 = add nsw i64 %908, 1
  %910 = getelementptr inbounds double, ptr %905, i64 %909
  %911 = call i64 @f2c_idamax(ptr noundef %904, ptr noundef %910, ptr noundef @c__1)
  store i64 %911, ptr %50, align 8, !tbaa !9
  %912 = load ptr, ptr %24, align 8, !tbaa !5
  %913 = load i64, ptr %50, align 8, !tbaa !9
  %914 = load i64, ptr %51, align 8, !tbaa !9
  %915 = load i64, ptr %34, align 8, !tbaa !9
  %916 = mul nsw i64 %914, %915
  %917 = add nsw i64 %913, %916
  %918 = getelementptr inbounds double, ptr %912, i64 %917
  %919 = load double, ptr %918, align 8, !tbaa !11
  store double %919, ptr %39, align 8, !tbaa !11
  %920 = load double, ptr %39, align 8, !tbaa !11
  %921 = fcmp oge double %920, 0.000000e+00
  br i1 %921, label %922, label %924

922:                                              ; preds = %903
  %923 = load double, ptr %39, align 8, !tbaa !11
  br label %927

924:                                              ; preds = %903
  %925 = load double, ptr %39, align 8, !tbaa !11
  %926 = fneg double %925
  br label %927

927:                                              ; preds = %924, %922
  %928 = phi double [ %923, %922 ], [ %926, %924 ]
  %929 = fdiv double 1.000000e+00, %928
  store double %929, ptr %70, align 8, !tbaa !11
  %930 = load ptr, ptr %19, align 8, !tbaa !5
  %931 = load ptr, ptr %24, align 8, !tbaa !5
  %932 = load i64, ptr %51, align 8, !tbaa !9
  %933 = load i64, ptr %34, align 8, !tbaa !9
  %934 = mul nsw i64 %932, %933
  %935 = add nsw i64 %934, 1
  %936 = getelementptr inbounds double, ptr %931, i64 %935
  %937 = call i32 @f2c_dscal(ptr noundef %930, ptr noundef %70, ptr noundef %936, ptr noundef @c__1)
  br label %938

938:                                              ; preds = %927, %873
  br label %1724

939:                                              ; preds = %527
  %940 = load ptr, ptr %20, align 8, !tbaa !5
  %941 = load i64, ptr %51, align 8, !tbaa !9
  %942 = sub nsw i64 %941, 1
  %943 = load i64, ptr %51, align 8, !tbaa !9
  %944 = load i64, ptr %30, align 8, !tbaa !9
  %945 = mul nsw i64 %943, %944
  %946 = add nsw i64 %942, %945
  %947 = getelementptr inbounds double, ptr %940, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !11
  store double %948, ptr %39, align 8, !tbaa !11
  %949 = load double, ptr %39, align 8, !tbaa !11
  %950 = fcmp oge double %949, 0.000000e+00
  br i1 %950, label %951, label %953

951:                                              ; preds = %939
  %952 = load double, ptr %39, align 8, !tbaa !11
  br label %956

953:                                              ; preds = %939
  %954 = load double, ptr %39, align 8, !tbaa !11
  %955 = fneg double %954
  br label %956

956:                                              ; preds = %953, %951
  %957 = phi double [ %952, %951 ], [ %955, %953 ]
  %958 = load ptr, ptr %20, align 8, !tbaa !5
  %959 = load i64, ptr %51, align 8, !tbaa !9
  %960 = load i64, ptr %51, align 8, !tbaa !9
  %961 = sub nsw i64 %960, 1
  %962 = load i64, ptr %30, align 8, !tbaa !9
  %963 = mul nsw i64 %961, %962
  %964 = add nsw i64 %959, %963
  %965 = getelementptr inbounds double, ptr %958, i64 %964
  %966 = load double, ptr %965, align 8, !tbaa !11
  store double %966, ptr %40, align 8, !tbaa !11
  %967 = load double, ptr %40, align 8, !tbaa !11
  %968 = fcmp oge double %967, 0.000000e+00
  br i1 %968, label %969, label %971

969:                                              ; preds = %956
  %970 = load double, ptr %40, align 8, !tbaa !11
  br label %974

971:                                              ; preds = %956
  %972 = load double, ptr %40, align 8, !tbaa !11
  %973 = fneg double %972
  br label %974

974:                                              ; preds = %971, %969
  %975 = phi double [ %970, %969 ], [ %973, %971 ]
  %976 = fcmp oge double %957, %975
  br i1 %976, label %977, label %1001

977:                                              ; preds = %974
  %978 = load ptr, ptr %28, align 8, !tbaa !5
  %979 = load i64, ptr %51, align 8, !tbaa !9
  %980 = sub nsw i64 %979, 1
  %981 = load ptr, ptr %19, align 8, !tbaa !5
  %982 = load i64, ptr %981, align 8, !tbaa !9
  %983 = add nsw i64 %980, %982
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  store double 1.000000e+00, ptr %984, align 8, !tbaa !11
  %985 = load double, ptr %54, align 8, !tbaa !11
  %986 = load ptr, ptr %20, align 8, !tbaa !5
  %987 = load i64, ptr %51, align 8, !tbaa !9
  %988 = sub nsw i64 %987, 1
  %989 = load i64, ptr %51, align 8, !tbaa !9
  %990 = load i64, ptr %30, align 8, !tbaa !9
  %991 = mul nsw i64 %989, %990
  %992 = add nsw i64 %988, %991
  %993 = getelementptr inbounds double, ptr %986, i64 %992
  %994 = load double, ptr %993, align 8, !tbaa !11
  %995 = fdiv double %985, %994
  %996 = load ptr, ptr %28, align 8, !tbaa !5
  %997 = load i64, ptr %51, align 8, !tbaa !9
  %998 = load i64, ptr %49, align 8, !tbaa !9
  %999 = add nsw i64 %997, %998
  %1000 = getelementptr inbounds double, ptr %996, i64 %999
  store double %995, ptr %1000, align 8, !tbaa !11
  br label %1026

1001:                                             ; preds = %974
  %1002 = load double, ptr %54, align 8, !tbaa !11
  %1003 = fneg double %1002
  %1004 = load ptr, ptr %20, align 8, !tbaa !5
  %1005 = load i64, ptr %51, align 8, !tbaa !9
  %1006 = load i64, ptr %51, align 8, !tbaa !9
  %1007 = sub nsw i64 %1006, 1
  %1008 = load i64, ptr %30, align 8, !tbaa !9
  %1009 = mul nsw i64 %1007, %1008
  %1010 = add nsw i64 %1005, %1009
  %1011 = getelementptr inbounds double, ptr %1004, i64 %1010
  %1012 = load double, ptr %1011, align 8, !tbaa !11
  %1013 = fdiv double %1003, %1012
  %1014 = load ptr, ptr %28, align 8, !tbaa !5
  %1015 = load i64, ptr %51, align 8, !tbaa !9
  %1016 = sub nsw i64 %1015, 1
  %1017 = load ptr, ptr %19, align 8, !tbaa !5
  %1018 = load i64, ptr %1017, align 8, !tbaa !9
  %1019 = add nsw i64 %1016, %1018
  %1020 = getelementptr inbounds double, ptr %1014, i64 %1019
  store double %1013, ptr %1020, align 8, !tbaa !11
  %1021 = load ptr, ptr %28, align 8, !tbaa !5
  %1022 = load i64, ptr %51, align 8, !tbaa !9
  %1023 = load i64, ptr %49, align 8, !tbaa !9
  %1024 = add nsw i64 %1022, %1023
  %1025 = getelementptr inbounds double, ptr %1021, i64 %1024
  store double 1.000000e+00, ptr %1025, align 8, !tbaa !11
  br label %1026

1026:                                             ; preds = %1001, %977
  %1027 = load ptr, ptr %28, align 8, !tbaa !5
  %1028 = load i64, ptr %51, align 8, !tbaa !9
  %1029 = load ptr, ptr %19, align 8, !tbaa !5
  %1030 = load i64, ptr %1029, align 8, !tbaa !9
  %1031 = add nsw i64 %1028, %1030
  %1032 = getelementptr inbounds double, ptr %1027, i64 %1031
  store double 0.000000e+00, ptr %1032, align 8, !tbaa !11
  %1033 = load ptr, ptr %28, align 8, !tbaa !5
  %1034 = load i64, ptr %51, align 8, !tbaa !9
  %1035 = sub nsw i64 %1034, 1
  %1036 = load i64, ptr %49, align 8, !tbaa !9
  %1037 = add nsw i64 %1035, %1036
  %1038 = getelementptr inbounds double, ptr %1033, i64 %1037
  store double 0.000000e+00, ptr %1038, align 8, !tbaa !11
  %1039 = load i64, ptr %51, align 8, !tbaa !9
  %1040 = sub nsw i64 %1039, 2
  store i64 %1040, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %1041

1041:                                             ; preds = %1092, %1026
  %1042 = load i64, ptr %45, align 8, !tbaa !9
  %1043 = load i64, ptr %36, align 8, !tbaa !9
  %1044 = icmp sle i64 %1042, %1043
  br i1 %1044, label %1045, label %1095

1045:                                             ; preds = %1041
  %1046 = load ptr, ptr %28, align 8, !tbaa !5
  %1047 = load i64, ptr %51, align 8, !tbaa !9
  %1048 = sub nsw i64 %1047, 1
  %1049 = load ptr, ptr %19, align 8, !tbaa !5
  %1050 = load i64, ptr %1049, align 8, !tbaa !9
  %1051 = add nsw i64 %1048, %1050
  %1052 = getelementptr inbounds double, ptr %1046, i64 %1051
  %1053 = load double, ptr %1052, align 8, !tbaa !11
  %1054 = fneg double %1053
  %1055 = load ptr, ptr %20, align 8, !tbaa !5
  %1056 = load i64, ptr %45, align 8, !tbaa !9
  %1057 = load i64, ptr %51, align 8, !tbaa !9
  %1058 = sub nsw i64 %1057, 1
  %1059 = load i64, ptr %30, align 8, !tbaa !9
  %1060 = mul nsw i64 %1058, %1059
  %1061 = add nsw i64 %1056, %1060
  %1062 = getelementptr inbounds double, ptr %1055, i64 %1061
  %1063 = load double, ptr %1062, align 8, !tbaa !11
  %1064 = fmul double %1054, %1063
  %1065 = load ptr, ptr %28, align 8, !tbaa !5
  %1066 = load i64, ptr %45, align 8, !tbaa !9
  %1067 = load ptr, ptr %19, align 8, !tbaa !5
  %1068 = load i64, ptr %1067, align 8, !tbaa !9
  %1069 = add nsw i64 %1066, %1068
  %1070 = getelementptr inbounds double, ptr %1065, i64 %1069
  store double %1064, ptr %1070, align 8, !tbaa !11
  %1071 = load ptr, ptr %28, align 8, !tbaa !5
  %1072 = load i64, ptr %51, align 8, !tbaa !9
  %1073 = load i64, ptr %49, align 8, !tbaa !9
  %1074 = add nsw i64 %1072, %1073
  %1075 = getelementptr inbounds double, ptr %1071, i64 %1074
  %1076 = load double, ptr %1075, align 8, !tbaa !11
  %1077 = fneg double %1076
  %1078 = load ptr, ptr %20, align 8, !tbaa !5
  %1079 = load i64, ptr %45, align 8, !tbaa !9
  %1080 = load i64, ptr %51, align 8, !tbaa !9
  %1081 = load i64, ptr %30, align 8, !tbaa !9
  %1082 = mul nsw i64 %1080, %1081
  %1083 = add nsw i64 %1079, %1082
  %1084 = getelementptr inbounds double, ptr %1078, i64 %1083
  %1085 = load double, ptr %1084, align 8, !tbaa !11
  %1086 = fmul double %1077, %1085
  %1087 = load ptr, ptr %28, align 8, !tbaa !5
  %1088 = load i64, ptr %45, align 8, !tbaa !9
  %1089 = load i64, ptr %49, align 8, !tbaa !9
  %1090 = add nsw i64 %1088, %1089
  %1091 = getelementptr inbounds double, ptr %1087, i64 %1090
  store double %1086, ptr %1091, align 8, !tbaa !11
  br label %1092

1092:                                             ; preds = %1045
  %1093 = load i64, ptr %45, align 8, !tbaa !9
  %1094 = add nsw i64 %1093, 1
  store i64 %1094, ptr %45, align 8, !tbaa !9
  br label %1041, !llvm.loop !20

1095:                                             ; preds = %1041
  %1096 = load i64, ptr %51, align 8, !tbaa !9
  %1097 = sub nsw i64 %1096, 2
  store i64 %1097, ptr %68, align 8, !tbaa !9
  %1098 = load i64, ptr %51, align 8, !tbaa !9
  %1099 = sub nsw i64 %1098, 2
  store i64 %1099, ptr %44, align 8, !tbaa !9
  br label %1100

1100:                                             ; preds = %1430, %1095
  %1101 = load i64, ptr %44, align 8, !tbaa !9
  %1102 = icmp sge i64 %1101, 1
  br i1 %1102, label %1103, label %1433

1103:                                             ; preds = %1100
  %1104 = load i64, ptr %44, align 8, !tbaa !9
  %1105 = load i64, ptr %68, align 8, !tbaa !9
  %1106 = icmp sgt i64 %1104, %1105
  br i1 %1106, label %1107, label %1108

1107:                                             ; preds = %1103
  br label %1429

1108:                                             ; preds = %1103
  %1109 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1109, ptr %47, align 8, !tbaa !9
  %1110 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1110, ptr %48, align 8, !tbaa !9
  %1111 = load i64, ptr %44, align 8, !tbaa !9
  %1112 = sub nsw i64 %1111, 1
  store i64 %1112, ptr %68, align 8, !tbaa !9
  %1113 = load i64, ptr %44, align 8, !tbaa !9
  %1114 = icmp sgt i64 %1113, 1
  br i1 %1114, label %1115, label %1132

1115:                                             ; preds = %1108
  %1116 = load ptr, ptr %20, align 8, !tbaa !5
  %1117 = load i64, ptr %44, align 8, !tbaa !9
  %1118 = load i64, ptr %44, align 8, !tbaa !9
  %1119 = sub nsw i64 %1118, 1
  %1120 = load i64, ptr %30, align 8, !tbaa !9
  %1121 = mul nsw i64 %1119, %1120
  %1122 = add nsw i64 %1117, %1121
  %1123 = getelementptr inbounds double, ptr %1116, i64 %1122
  %1124 = load double, ptr %1123, align 8, !tbaa !11
  %1125 = fcmp une double %1124, 0.000000e+00
  br i1 %1125, label %1126, label %1131

1126:                                             ; preds = %1115
  %1127 = load i64, ptr %44, align 8, !tbaa !9
  %1128 = sub nsw i64 %1127, 1
  store i64 %1128, ptr %47, align 8, !tbaa !9
  %1129 = load i64, ptr %44, align 8, !tbaa !9
  %1130 = sub nsw i64 %1129, 2
  store i64 %1130, ptr %68, align 8, !tbaa !9
  br label %1131

1131:                                             ; preds = %1126, %1115
  br label %1132

1132:                                             ; preds = %1131, %1108
  %1133 = load i64, ptr %47, align 8, !tbaa !9
  %1134 = load i64, ptr %48, align 8, !tbaa !9
  %1135 = icmp eq i64 %1133, %1134
  br i1 %1135, label %1136, label %1242

1136:                                             ; preds = %1132
  %1137 = load ptr, ptr %20, align 8, !tbaa !5
  %1138 = load i64, ptr %44, align 8, !tbaa !9
  %1139 = load i64, ptr %44, align 8, !tbaa !9
  %1140 = load i64, ptr %30, align 8, !tbaa !9
  %1141 = mul nsw i64 %1139, %1140
  %1142 = add nsw i64 %1138, %1141
  %1143 = getelementptr inbounds double, ptr %1137, i64 %1142
  %1144 = load ptr, ptr %21, align 8, !tbaa !5
  %1145 = load ptr, ptr %28, align 8, !tbaa !5
  %1146 = load i64, ptr %44, align 8, !tbaa !9
  %1147 = load ptr, ptr %19, align 8, !tbaa !5
  %1148 = load i64, ptr %1147, align 8, !tbaa !9
  %1149 = add nsw i64 %1146, %1148
  %1150 = getelementptr inbounds double, ptr %1145, i64 %1149
  %1151 = load ptr, ptr %19, align 8, !tbaa !5
  %1152 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1153 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__2, ptr noundef %65, ptr noundef @c_b22, ptr noundef %1143, ptr noundef %1144, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %1150, ptr noundef %1151, ptr noundef %55, ptr noundef %54, ptr noundef %1152, ptr noundef @c__2, ptr noundef %69, ptr noundef %75, ptr noundef %62)
  %1154 = load double, ptr %75, align 8, !tbaa !11
  %1155 = fcmp ogt double %1154, 1.000000e+00
  br i1 %1155, label %1156, label %1178

1156:                                             ; preds = %1136
  %1157 = load ptr, ptr %28, align 8, !tbaa !5
  %1158 = load i64, ptr %44, align 8, !tbaa !9
  %1159 = getelementptr inbounds double, ptr %1157, i64 %1158
  %1160 = load double, ptr %1159, align 8, !tbaa !11
  %1161 = load double, ptr %76, align 8, !tbaa !11
  %1162 = load double, ptr %75, align 8, !tbaa !11
  %1163 = fdiv double %1161, %1162
  %1164 = fcmp ogt double %1160, %1163
  br i1 %1164, label %1165, label %1177

1165:                                             ; preds = %1156
  %1166 = load double, ptr %75, align 8, !tbaa !11
  %1167 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1168 = load double, ptr %1167, align 16, !tbaa !11
  %1169 = fdiv double %1168, %1166
  store double %1169, ptr %1167, align 16, !tbaa !11
  %1170 = load double, ptr %75, align 8, !tbaa !11
  %1171 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %1172 = load double, ptr %1171, align 16, !tbaa !11
  %1173 = fdiv double %1172, %1170
  store double %1173, ptr %1171, align 16, !tbaa !11
  %1174 = load double, ptr %75, align 8, !tbaa !11
  %1175 = load double, ptr %69, align 8, !tbaa !11
  %1176 = fdiv double %1175, %1174
  store double %1176, ptr %69, align 8, !tbaa !11
  br label %1177

1177:                                             ; preds = %1165, %1156
  br label %1178

1178:                                             ; preds = %1177, %1136
  %1179 = load double, ptr %69, align 8, !tbaa !11
  %1180 = fcmp une double %1179, 1.000000e+00
  br i1 %1180, label %1181, label %1193

1181:                                             ; preds = %1178
  %1182 = load ptr, ptr %28, align 8, !tbaa !5
  %1183 = load ptr, ptr %19, align 8, !tbaa !5
  %1184 = load i64, ptr %1183, align 8, !tbaa !9
  %1185 = add nsw i64 %1184, 1
  %1186 = getelementptr inbounds double, ptr %1182, i64 %1185
  %1187 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %69, ptr noundef %1186, ptr noundef @c__1)
  %1188 = load ptr, ptr %28, align 8, !tbaa !5
  %1189 = load i64, ptr %49, align 8, !tbaa !9
  %1190 = add nsw i64 %1189, 1
  %1191 = getelementptr inbounds double, ptr %1188, i64 %1190
  %1192 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %69, ptr noundef %1191, ptr noundef @c__1)
  br label %1193

1193:                                             ; preds = %1181, %1178
  %1194 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1195 = load double, ptr %1194, align 16, !tbaa !11
  %1196 = load ptr, ptr %28, align 8, !tbaa !5
  %1197 = load i64, ptr %44, align 8, !tbaa !9
  %1198 = load ptr, ptr %19, align 8, !tbaa !5
  %1199 = load i64, ptr %1198, align 8, !tbaa !9
  %1200 = add nsw i64 %1197, %1199
  %1201 = getelementptr inbounds double, ptr %1196, i64 %1200
  store double %1195, ptr %1201, align 8, !tbaa !11
  %1202 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %1203 = load double, ptr %1202, align 16, !tbaa !11
  %1204 = load ptr, ptr %28, align 8, !tbaa !5
  %1205 = load i64, ptr %44, align 8, !tbaa !9
  %1206 = load i64, ptr %49, align 8, !tbaa !9
  %1207 = add nsw i64 %1205, %1206
  %1208 = getelementptr inbounds double, ptr %1204, i64 %1207
  store double %1203, ptr %1208, align 8, !tbaa !11
  %1209 = load i64, ptr %44, align 8, !tbaa !9
  %1210 = sub nsw i64 %1209, 1
  store i64 %1210, ptr %36, align 8, !tbaa !9
  %1211 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1212 = load double, ptr %1211, align 16, !tbaa !11
  %1213 = fneg double %1212
  store double %1213, ptr %39, align 8, !tbaa !11
  %1214 = load ptr, ptr %20, align 8, !tbaa !5
  %1215 = load i64, ptr %44, align 8, !tbaa !9
  %1216 = load i64, ptr %30, align 8, !tbaa !9
  %1217 = mul nsw i64 %1215, %1216
  %1218 = add nsw i64 %1217, 1
  %1219 = getelementptr inbounds double, ptr %1214, i64 %1218
  %1220 = load ptr, ptr %28, align 8, !tbaa !5
  %1221 = load ptr, ptr %19, align 8, !tbaa !5
  %1222 = load i64, ptr %1221, align 8, !tbaa !9
  %1223 = add nsw i64 %1222, 1
  %1224 = getelementptr inbounds double, ptr %1220, i64 %1223
  %1225 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %1219, ptr noundef @c__1, ptr noundef %1224, ptr noundef @c__1)
  %1226 = load i64, ptr %44, align 8, !tbaa !9
  %1227 = sub nsw i64 %1226, 1
  store i64 %1227, ptr %36, align 8, !tbaa !9
  %1228 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %1229 = load double, ptr %1228, align 16, !tbaa !11
  %1230 = fneg double %1229
  store double %1230, ptr %39, align 8, !tbaa !11
  %1231 = load ptr, ptr %20, align 8, !tbaa !5
  %1232 = load i64, ptr %44, align 8, !tbaa !9
  %1233 = load i64, ptr %30, align 8, !tbaa !9
  %1234 = mul nsw i64 %1232, %1233
  %1235 = add nsw i64 %1234, 1
  %1236 = getelementptr inbounds double, ptr %1231, i64 %1235
  %1237 = load ptr, ptr %28, align 8, !tbaa !5
  %1238 = load i64, ptr %49, align 8, !tbaa !9
  %1239 = add nsw i64 %1238, 1
  %1240 = getelementptr inbounds double, ptr %1237, i64 %1239
  %1241 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %1236, ptr noundef @c__1, ptr noundef %1240, ptr noundef @c__1)
  br label %1428

1242:                                             ; preds = %1132
  %1243 = load ptr, ptr %20, align 8, !tbaa !5
  %1244 = load i64, ptr %44, align 8, !tbaa !9
  %1245 = sub nsw i64 %1244, 1
  %1246 = load i64, ptr %44, align 8, !tbaa !9
  %1247 = sub nsw i64 %1246, 1
  %1248 = load i64, ptr %30, align 8, !tbaa !9
  %1249 = mul nsw i64 %1247, %1248
  %1250 = add nsw i64 %1245, %1249
  %1251 = getelementptr inbounds double, ptr %1243, i64 %1250
  %1252 = load ptr, ptr %21, align 8, !tbaa !5
  %1253 = load ptr, ptr %28, align 8, !tbaa !5
  %1254 = load i64, ptr %44, align 8, !tbaa !9
  %1255 = sub nsw i64 %1254, 1
  %1256 = load ptr, ptr %19, align 8, !tbaa !5
  %1257 = load i64, ptr %1256, align 8, !tbaa !9
  %1258 = add nsw i64 %1255, %1257
  %1259 = getelementptr inbounds double, ptr %1253, i64 %1258
  %1260 = load ptr, ptr %19, align 8, !tbaa !5
  %1261 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1262 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %65, ptr noundef @c_b22, ptr noundef %1251, ptr noundef %1252, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %1259, ptr noundef %1260, ptr noundef %55, ptr noundef %54, ptr noundef %1261, ptr noundef @c__2, ptr noundef %69, ptr noundef %75, ptr noundef %62)
  %1263 = load double, ptr %75, align 8, !tbaa !11
  %1264 = fcmp ogt double %1263, 1.000000e+00
  br i1 %1264, label %1265, label %1312

1265:                                             ; preds = %1242
  %1266 = load ptr, ptr %28, align 8, !tbaa !5
  %1267 = load i64, ptr %44, align 8, !tbaa !9
  %1268 = sub nsw i64 %1267, 1
  %1269 = getelementptr inbounds double, ptr %1266, i64 %1268
  %1270 = load double, ptr %1269, align 8, !tbaa !11
  store double %1270, ptr %39, align 8, !tbaa !11
  %1271 = load ptr, ptr %28, align 8, !tbaa !5
  %1272 = load i64, ptr %44, align 8, !tbaa !9
  %1273 = getelementptr inbounds double, ptr %1271, i64 %1272
  %1274 = load double, ptr %1273, align 8, !tbaa !11
  store double %1274, ptr %40, align 8, !tbaa !11
  %1275 = load double, ptr %39, align 8, !tbaa !11
  %1276 = load double, ptr %40, align 8, !tbaa !11
  %1277 = fcmp oge double %1275, %1276
  br i1 %1277, label %1278, label %1280

1278:                                             ; preds = %1265
  %1279 = load double, ptr %39, align 8, !tbaa !11
  br label %1282

1280:                                             ; preds = %1265
  %1281 = load double, ptr %40, align 8, !tbaa !11
  br label %1282

1282:                                             ; preds = %1280, %1278
  %1283 = phi double [ %1279, %1278 ], [ %1281, %1280 ]
  store double %1283, ptr %58, align 8, !tbaa !11
  %1284 = load double, ptr %58, align 8, !tbaa !11
  %1285 = load double, ptr %76, align 8, !tbaa !11
  %1286 = load double, ptr %75, align 8, !tbaa !11
  %1287 = fdiv double %1285, %1286
  %1288 = fcmp ogt double %1284, %1287
  br i1 %1288, label %1289, label %1311

1289:                                             ; preds = %1282
  %1290 = load double, ptr %75, align 8, !tbaa !11
  %1291 = fdiv double 1.000000e+00, %1290
  store double %1291, ptr %56, align 8, !tbaa !11
  %1292 = load double, ptr %56, align 8, !tbaa !11
  %1293 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1294 = load double, ptr %1293, align 16, !tbaa !11
  %1295 = fmul double %1294, %1292
  store double %1295, ptr %1293, align 16, !tbaa !11
  %1296 = load double, ptr %56, align 8, !tbaa !11
  %1297 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %1298 = load double, ptr %1297, align 16, !tbaa !11
  %1299 = fmul double %1298, %1296
  store double %1299, ptr %1297, align 16, !tbaa !11
  %1300 = load double, ptr %56, align 8, !tbaa !11
  %1301 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %1302 = load double, ptr %1301, align 8, !tbaa !11
  %1303 = fmul double %1302, %1300
  store double %1303, ptr %1301, align 8, !tbaa !11
  %1304 = load double, ptr %56, align 8, !tbaa !11
  %1305 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %1306 = load double, ptr %1305, align 8, !tbaa !11
  %1307 = fmul double %1306, %1304
  store double %1307, ptr %1305, align 8, !tbaa !11
  %1308 = load double, ptr %56, align 8, !tbaa !11
  %1309 = load double, ptr %69, align 8, !tbaa !11
  %1310 = fmul double %1309, %1308
  store double %1310, ptr %69, align 8, !tbaa !11
  br label %1311

1311:                                             ; preds = %1289, %1282
  br label %1312

1312:                                             ; preds = %1311, %1242
  %1313 = load double, ptr %69, align 8, !tbaa !11
  %1314 = fcmp une double %1313, 1.000000e+00
  br i1 %1314, label %1315, label %1327

1315:                                             ; preds = %1312
  %1316 = load ptr, ptr %28, align 8, !tbaa !5
  %1317 = load ptr, ptr %19, align 8, !tbaa !5
  %1318 = load i64, ptr %1317, align 8, !tbaa !9
  %1319 = add nsw i64 %1318, 1
  %1320 = getelementptr inbounds double, ptr %1316, i64 %1319
  %1321 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %69, ptr noundef %1320, ptr noundef @c__1)
  %1322 = load ptr, ptr %28, align 8, !tbaa !5
  %1323 = load i64, ptr %49, align 8, !tbaa !9
  %1324 = add nsw i64 %1323, 1
  %1325 = getelementptr inbounds double, ptr %1322, i64 %1324
  %1326 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %69, ptr noundef %1325, ptr noundef @c__1)
  br label %1327

1327:                                             ; preds = %1315, %1312
  %1328 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1329 = load double, ptr %1328, align 16, !tbaa !11
  %1330 = load ptr, ptr %28, align 8, !tbaa !5
  %1331 = load i64, ptr %44, align 8, !tbaa !9
  %1332 = sub nsw i64 %1331, 1
  %1333 = load ptr, ptr %19, align 8, !tbaa !5
  %1334 = load i64, ptr %1333, align 8, !tbaa !9
  %1335 = add nsw i64 %1332, %1334
  %1336 = getelementptr inbounds double, ptr %1330, i64 %1335
  store double %1329, ptr %1336, align 8, !tbaa !11
  %1337 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %1338 = load double, ptr %1337, align 8, !tbaa !11
  %1339 = load ptr, ptr %28, align 8, !tbaa !5
  %1340 = load i64, ptr %44, align 8, !tbaa !9
  %1341 = load ptr, ptr %19, align 8, !tbaa !5
  %1342 = load i64, ptr %1341, align 8, !tbaa !9
  %1343 = add nsw i64 %1340, %1342
  %1344 = getelementptr inbounds double, ptr %1339, i64 %1343
  store double %1338, ptr %1344, align 8, !tbaa !11
  %1345 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %1346 = load double, ptr %1345, align 16, !tbaa !11
  %1347 = load ptr, ptr %28, align 8, !tbaa !5
  %1348 = load i64, ptr %44, align 8, !tbaa !9
  %1349 = sub nsw i64 %1348, 1
  %1350 = load i64, ptr %49, align 8, !tbaa !9
  %1351 = add nsw i64 %1349, %1350
  %1352 = getelementptr inbounds double, ptr %1347, i64 %1351
  store double %1346, ptr %1352, align 8, !tbaa !11
  %1353 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %1354 = load double, ptr %1353, align 8, !tbaa !11
  %1355 = load ptr, ptr %28, align 8, !tbaa !5
  %1356 = load i64, ptr %44, align 8, !tbaa !9
  %1357 = load i64, ptr %49, align 8, !tbaa !9
  %1358 = add nsw i64 %1356, %1357
  %1359 = getelementptr inbounds double, ptr %1355, i64 %1358
  store double %1354, ptr %1359, align 8, !tbaa !11
  %1360 = load i64, ptr %44, align 8, !tbaa !9
  %1361 = sub nsw i64 %1360, 2
  store i64 %1361, ptr %36, align 8, !tbaa !9
  %1362 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1363 = load double, ptr %1362, align 16, !tbaa !11
  %1364 = fneg double %1363
  store double %1364, ptr %39, align 8, !tbaa !11
  %1365 = load ptr, ptr %20, align 8, !tbaa !5
  %1366 = load i64, ptr %44, align 8, !tbaa !9
  %1367 = sub nsw i64 %1366, 1
  %1368 = load i64, ptr %30, align 8, !tbaa !9
  %1369 = mul nsw i64 %1367, %1368
  %1370 = add nsw i64 %1369, 1
  %1371 = getelementptr inbounds double, ptr %1365, i64 %1370
  %1372 = load ptr, ptr %28, align 8, !tbaa !5
  %1373 = load ptr, ptr %19, align 8, !tbaa !5
  %1374 = load i64, ptr %1373, align 8, !tbaa !9
  %1375 = add nsw i64 %1374, 1
  %1376 = getelementptr inbounds double, ptr %1372, i64 %1375
  %1377 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %1371, ptr noundef @c__1, ptr noundef %1376, ptr noundef @c__1)
  %1378 = load i64, ptr %44, align 8, !tbaa !9
  %1379 = sub nsw i64 %1378, 2
  store i64 %1379, ptr %36, align 8, !tbaa !9
  %1380 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %1381 = load double, ptr %1380, align 8, !tbaa !11
  %1382 = fneg double %1381
  store double %1382, ptr %39, align 8, !tbaa !11
  %1383 = load ptr, ptr %20, align 8, !tbaa !5
  %1384 = load i64, ptr %44, align 8, !tbaa !9
  %1385 = load i64, ptr %30, align 8, !tbaa !9
  %1386 = mul nsw i64 %1384, %1385
  %1387 = add nsw i64 %1386, 1
  %1388 = getelementptr inbounds double, ptr %1383, i64 %1387
  %1389 = load ptr, ptr %28, align 8, !tbaa !5
  %1390 = load ptr, ptr %19, align 8, !tbaa !5
  %1391 = load i64, ptr %1390, align 8, !tbaa !9
  %1392 = add nsw i64 %1391, 1
  %1393 = getelementptr inbounds double, ptr %1389, i64 %1392
  %1394 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %1388, ptr noundef @c__1, ptr noundef %1393, ptr noundef @c__1)
  %1395 = load i64, ptr %44, align 8, !tbaa !9
  %1396 = sub nsw i64 %1395, 2
  store i64 %1396, ptr %36, align 8, !tbaa !9
  %1397 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %1398 = load double, ptr %1397, align 16, !tbaa !11
  %1399 = fneg double %1398
  store double %1399, ptr %39, align 8, !tbaa !11
  %1400 = load ptr, ptr %20, align 8, !tbaa !5
  %1401 = load i64, ptr %44, align 8, !tbaa !9
  %1402 = sub nsw i64 %1401, 1
  %1403 = load i64, ptr %30, align 8, !tbaa !9
  %1404 = mul nsw i64 %1402, %1403
  %1405 = add nsw i64 %1404, 1
  %1406 = getelementptr inbounds double, ptr %1400, i64 %1405
  %1407 = load ptr, ptr %28, align 8, !tbaa !5
  %1408 = load i64, ptr %49, align 8, !tbaa !9
  %1409 = add nsw i64 %1408, 1
  %1410 = getelementptr inbounds double, ptr %1407, i64 %1409
  %1411 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %1406, ptr noundef @c__1, ptr noundef %1410, ptr noundef @c__1)
  %1412 = load i64, ptr %44, align 8, !tbaa !9
  %1413 = sub nsw i64 %1412, 2
  store i64 %1413, ptr %36, align 8, !tbaa !9
  %1414 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %1415 = load double, ptr %1414, align 8, !tbaa !11
  %1416 = fneg double %1415
  store double %1416, ptr %39, align 8, !tbaa !11
  %1417 = load ptr, ptr %20, align 8, !tbaa !5
  %1418 = load i64, ptr %44, align 8, !tbaa !9
  %1419 = load i64, ptr %30, align 8, !tbaa !9
  %1420 = mul nsw i64 %1418, %1419
  %1421 = add nsw i64 %1420, 1
  %1422 = getelementptr inbounds double, ptr %1417, i64 %1421
  %1423 = load ptr, ptr %28, align 8, !tbaa !5
  %1424 = load i64, ptr %49, align 8, !tbaa !9
  %1425 = add nsw i64 %1424, 1
  %1426 = getelementptr inbounds double, ptr %1423, i64 %1425
  %1427 = call i32 @f2c_daxpy(ptr noundef %36, ptr noundef %39, ptr noundef %1422, ptr noundef @c__1, ptr noundef %1426, ptr noundef @c__1)
  br label %1428

1428:                                             ; preds = %1327, %1193
  br label %1429

1429:                                             ; preds = %1428, %1107
  br label %1430

1430:                                             ; preds = %1429
  %1431 = load i64, ptr %44, align 8, !tbaa !9
  %1432 = add nsw i64 %1431, -1
  store i64 %1432, ptr %44, align 8, !tbaa !9
  br label %1100, !llvm.loop !21

1433:                                             ; preds = %1100
  %1434 = load i64, ptr %66, align 8, !tbaa !9
  %1435 = icmp ne i64 %1434, 0
  br i1 %1435, label %1562, label %1436

1436:                                             ; preds = %1433
  %1437 = load ptr, ptr %28, align 8, !tbaa !5
  %1438 = load ptr, ptr %19, align 8, !tbaa !5
  %1439 = load i64, ptr %1438, align 8, !tbaa !9
  %1440 = add nsw i64 %1439, 1
  %1441 = getelementptr inbounds double, ptr %1437, i64 %1440
  %1442 = load ptr, ptr %24, align 8, !tbaa !5
  %1443 = load i64, ptr %53, align 8, !tbaa !9
  %1444 = sub nsw i64 %1443, 1
  %1445 = load i64, ptr %34, align 8, !tbaa !9
  %1446 = mul nsw i64 %1444, %1445
  %1447 = add nsw i64 %1446, 1
  %1448 = getelementptr inbounds double, ptr %1442, i64 %1447
  %1449 = call i32 @f2c_dcopy(ptr noundef %51, ptr noundef %1441, ptr noundef @c__1, ptr noundef %1448, ptr noundef @c__1)
  %1450 = load ptr, ptr %28, align 8, !tbaa !5
  %1451 = load i64, ptr %49, align 8, !tbaa !9
  %1452 = add nsw i64 %1451, 1
  %1453 = getelementptr inbounds double, ptr %1450, i64 %1452
  %1454 = load ptr, ptr %24, align 8, !tbaa !5
  %1455 = load i64, ptr %53, align 8, !tbaa !9
  %1456 = load i64, ptr %34, align 8, !tbaa !9
  %1457 = mul nsw i64 %1455, %1456
  %1458 = add nsw i64 %1457, 1
  %1459 = getelementptr inbounds double, ptr %1454, i64 %1458
  %1460 = call i32 @f2c_dcopy(ptr noundef %51, ptr noundef %1453, ptr noundef @c__1, ptr noundef %1459, ptr noundef @c__1)
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %1461 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1461, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %1462

1462:                                             ; preds = %1513, %1436
  %1463 = load i64, ptr %45, align 8, !tbaa !9
  %1464 = load i64, ptr %36, align 8, !tbaa !9
  %1465 = icmp sle i64 %1463, %1464
  br i1 %1465, label %1466, label %1516

1466:                                             ; preds = %1462
  %1467 = load double, ptr %59, align 8, !tbaa !11
  store double %1467, ptr %41, align 8, !tbaa !11
  %1468 = load ptr, ptr %24, align 8, !tbaa !5
  %1469 = load i64, ptr %45, align 8, !tbaa !9
  %1470 = load i64, ptr %53, align 8, !tbaa !9
  %1471 = sub nsw i64 %1470, 1
  %1472 = load i64, ptr %34, align 8, !tbaa !9
  %1473 = mul nsw i64 %1471, %1472
  %1474 = add nsw i64 %1469, %1473
  %1475 = getelementptr inbounds double, ptr %1468, i64 %1474
  %1476 = load double, ptr %1475, align 8, !tbaa !11
  store double %1476, ptr %39, align 8, !tbaa !11
  %1477 = load double, ptr %39, align 8, !tbaa !11
  %1478 = fcmp oge double %1477, 0.000000e+00
  br i1 %1478, label %1479, label %1481

1479:                                             ; preds = %1466
  %1480 = load double, ptr %39, align 8, !tbaa !11
  br label %1484

1481:                                             ; preds = %1466
  %1482 = load double, ptr %39, align 8, !tbaa !11
  %1483 = fneg double %1482
  br label %1484

1484:                                             ; preds = %1481, %1479
  %1485 = phi double [ %1480, %1479 ], [ %1483, %1481 ]
  %1486 = load ptr, ptr %24, align 8, !tbaa !5
  %1487 = load i64, ptr %45, align 8, !tbaa !9
  %1488 = load i64, ptr %53, align 8, !tbaa !9
  %1489 = load i64, ptr %34, align 8, !tbaa !9
  %1490 = mul nsw i64 %1488, %1489
  %1491 = add nsw i64 %1487, %1490
  %1492 = getelementptr inbounds double, ptr %1486, i64 %1491
  %1493 = load double, ptr %1492, align 8, !tbaa !11
  store double %1493, ptr %40, align 8, !tbaa !11
  %1494 = load double, ptr %40, align 8, !tbaa !11
  %1495 = fcmp oge double %1494, 0.000000e+00
  br i1 %1495, label %1496, label %1498

1496:                                             ; preds = %1484
  %1497 = load double, ptr %40, align 8, !tbaa !11
  br label %1501

1498:                                             ; preds = %1484
  %1499 = load double, ptr %40, align 8, !tbaa !11
  %1500 = fneg double %1499
  br label %1501

1501:                                             ; preds = %1498, %1496
  %1502 = phi double [ %1497, %1496 ], [ %1500, %1498 ]
  %1503 = fadd double %1485, %1502
  store double %1503, ptr %42, align 8, !tbaa !11
  %1504 = load double, ptr %41, align 8, !tbaa !11
  %1505 = load double, ptr %42, align 8, !tbaa !11
  %1506 = fcmp oge double %1504, %1505
  br i1 %1506, label %1507, label %1509

1507:                                             ; preds = %1501
  %1508 = load double, ptr %41, align 8, !tbaa !11
  br label %1511

1509:                                             ; preds = %1501
  %1510 = load double, ptr %42, align 8, !tbaa !11
  br label %1511

1511:                                             ; preds = %1509, %1507
  %1512 = phi double [ %1508, %1507 ], [ %1510, %1509 ]
  store double %1512, ptr %59, align 8, !tbaa !11
  br label %1513

1513:                                             ; preds = %1511
  %1514 = load i64, ptr %45, align 8, !tbaa !9
  %1515 = add nsw i64 %1514, 1
  store i64 %1515, ptr %45, align 8, !tbaa !9
  br label %1462, !llvm.loop !22

1516:                                             ; preds = %1462
  %1517 = load double, ptr %59, align 8, !tbaa !11
  %1518 = fdiv double 1.000000e+00, %1517
  store double %1518, ptr %70, align 8, !tbaa !11
  %1519 = load ptr, ptr %24, align 8, !tbaa !5
  %1520 = load i64, ptr %53, align 8, !tbaa !9
  %1521 = sub nsw i64 %1520, 1
  %1522 = load i64, ptr %34, align 8, !tbaa !9
  %1523 = mul nsw i64 %1521, %1522
  %1524 = add nsw i64 %1523, 1
  %1525 = getelementptr inbounds double, ptr %1519, i64 %1524
  %1526 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %70, ptr noundef %1525, ptr noundef @c__1)
  %1527 = load ptr, ptr %24, align 8, !tbaa !5
  %1528 = load i64, ptr %53, align 8, !tbaa !9
  %1529 = load i64, ptr %34, 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 i32 @f2c_dscal(ptr noundef %51, ptr noundef %70, ptr noundef %1532, ptr noundef @c__1)
  %1534 = load ptr, ptr %19, align 8, !tbaa !5
  %1535 = load i64, ptr %1534, align 8, !tbaa !9
  store i64 %1535, ptr %36, align 8, !tbaa !9
  %1536 = load i64, ptr %51, align 8, !tbaa !9
  %1537 = add nsw i64 %1536, 1
  store i64 %1537, ptr %45, align 8, !tbaa !9
  br label %1538

1538:                                             ; preds = %1558, %1516
  %1539 = load i64, ptr %45, align 8, !tbaa !9
  %1540 = load i64, ptr %36, align 8, !tbaa !9
  %1541 = icmp sle i64 %1539, %1540
  br i1 %1541, label %1542, label %1561

1542:                                             ; preds = %1538
  %1543 = load ptr, ptr %24, align 8, !tbaa !5
  %1544 = load i64, ptr %45, align 8, !tbaa !9
  %1545 = load i64, ptr %53, align 8, !tbaa !9
  %1546 = sub nsw i64 %1545, 1
  %1547 = load i64, ptr %34, align 8, !tbaa !9
  %1548 = mul nsw i64 %1546, %1547
  %1549 = add nsw i64 %1544, %1548
  %1550 = getelementptr inbounds double, ptr %1543, i64 %1549
  store double 0.000000e+00, ptr %1550, align 8, !tbaa !11
  %1551 = load ptr, ptr %24, align 8, !tbaa !5
  %1552 = load i64, ptr %45, align 8, !tbaa !9
  %1553 = load i64, ptr %53, align 8, !tbaa !9
  %1554 = load i64, ptr %34, align 8, !tbaa !9
  %1555 = mul nsw i64 %1553, %1554
  %1556 = add nsw i64 %1552, %1555
  %1557 = getelementptr inbounds double, ptr %1551, i64 %1556
  store double 0.000000e+00, ptr %1557, align 8, !tbaa !11
  br label %1558

1558:                                             ; preds = %1542
  %1559 = load i64, ptr %45, align 8, !tbaa !9
  %1560 = add nsw i64 %1559, 1
  store i64 %1560, ptr %45, align 8, !tbaa !9
  br label %1538, !llvm.loop !23

1561:                                             ; preds = %1538
  br label %1723

1562:                                             ; preds = %1433
  %1563 = load i64, ptr %51, align 8, !tbaa !9
  %1564 = icmp sgt i64 %1563, 2
  br i1 %1564, label %1565, label %1616

1565:                                             ; preds = %1562
  %1566 = load i64, ptr %51, align 8, !tbaa !9
  %1567 = sub nsw i64 %1566, 2
  store i64 %1567, ptr %36, align 8, !tbaa !9
  %1568 = load ptr, ptr %19, align 8, !tbaa !5
  %1569 = load ptr, ptr %24, align 8, !tbaa !5
  %1570 = load i64, ptr %35, align 8, !tbaa !9
  %1571 = getelementptr inbounds double, ptr %1569, i64 %1570
  %1572 = load ptr, ptr %25, align 8, !tbaa !5
  %1573 = load ptr, ptr %28, align 8, !tbaa !5
  %1574 = load ptr, ptr %19, align 8, !tbaa !5
  %1575 = load i64, ptr %1574, align 8, !tbaa !9
  %1576 = add nsw i64 %1575, 1
  %1577 = getelementptr inbounds double, ptr %1573, i64 %1576
  %1578 = load ptr, ptr %28, align 8, !tbaa !5
  %1579 = load i64, ptr %51, align 8, !tbaa !9
  %1580 = sub nsw i64 %1579, 1
  %1581 = load ptr, ptr %19, align 8, !tbaa !5
  %1582 = load i64, ptr %1581, align 8, !tbaa !9
  %1583 = add nsw i64 %1580, %1582
  %1584 = getelementptr inbounds double, ptr %1578, i64 %1583
  %1585 = load ptr, ptr %24, align 8, !tbaa !5
  %1586 = load i64, ptr %51, align 8, !tbaa !9
  %1587 = sub nsw i64 %1586, 1
  %1588 = load i64, ptr %34, align 8, !tbaa !9
  %1589 = mul nsw i64 %1587, %1588
  %1590 = add nsw i64 %1589, 1
  %1591 = getelementptr inbounds double, ptr %1585, i64 %1590
  %1592 = call i32 @f2c_dgemv(ptr noundef @.str.8, ptr noundef %1568, ptr noundef %36, ptr noundef @c_b22, ptr noundef %1571, ptr noundef %1572, ptr noundef %1577, ptr noundef @c__1, ptr noundef %1584, ptr noundef %1591, ptr noundef @c__1)
  %1593 = load i64, ptr %51, align 8, !tbaa !9
  %1594 = sub nsw i64 %1593, 2
  store i64 %1594, ptr %36, align 8, !tbaa !9
  %1595 = load ptr, ptr %19, align 8, !tbaa !5
  %1596 = load ptr, ptr %24, align 8, !tbaa !5
  %1597 = load i64, ptr %35, align 8, !tbaa !9
  %1598 = getelementptr inbounds double, ptr %1596, i64 %1597
  %1599 = load ptr, ptr %25, align 8, !tbaa !5
  %1600 = load ptr, ptr %28, align 8, !tbaa !5
  %1601 = load i64, ptr %49, align 8, !tbaa !9
  %1602 = add nsw i64 %1601, 1
  %1603 = getelementptr inbounds double, ptr %1600, i64 %1602
  %1604 = load ptr, ptr %28, align 8, !tbaa !5
  %1605 = load i64, ptr %51, align 8, !tbaa !9
  %1606 = load i64, ptr %49, align 8, !tbaa !9
  %1607 = add nsw i64 %1605, %1606
  %1608 = getelementptr inbounds double, ptr %1604, i64 %1607
  %1609 = load ptr, ptr %24, align 8, !tbaa !5
  %1610 = load i64, ptr %51, align 8, !tbaa !9
  %1611 = load i64, ptr %34, align 8, !tbaa !9
  %1612 = mul nsw i64 %1610, %1611
  %1613 = add nsw i64 %1612, 1
  %1614 = getelementptr inbounds double, ptr %1609, i64 %1613
  %1615 = call i32 @f2c_dgemv(ptr noundef @.str.8, ptr noundef %1595, ptr noundef %36, ptr noundef @c_b22, ptr noundef %1598, ptr noundef %1599, ptr noundef %1603, ptr noundef @c__1, ptr noundef %1608, ptr noundef %1614, ptr noundef @c__1)
  br label %1646

1616:                                             ; preds = %1562
  %1617 = load ptr, ptr %19, align 8, !tbaa !5
  %1618 = load ptr, ptr %28, align 8, !tbaa !5
  %1619 = load i64, ptr %51, align 8, !tbaa !9
  %1620 = sub nsw i64 %1619, 1
  %1621 = load ptr, ptr %19, align 8, !tbaa !5
  %1622 = load i64, ptr %1621, align 8, !tbaa !9
  %1623 = add nsw i64 %1620, %1622
  %1624 = getelementptr inbounds double, ptr %1618, i64 %1623
  %1625 = load ptr, ptr %24, align 8, !tbaa !5
  %1626 = load i64, ptr %51, align 8, !tbaa !9
  %1627 = sub nsw i64 %1626, 1
  %1628 = load i64, ptr %34, align 8, !tbaa !9
  %1629 = mul nsw i64 %1627, %1628
  %1630 = add nsw i64 %1629, 1
  %1631 = getelementptr inbounds double, ptr %1625, i64 %1630
  %1632 = call i32 @f2c_dscal(ptr noundef %1617, ptr noundef %1624, ptr noundef %1631, ptr noundef @c__1)
  %1633 = load ptr, ptr %19, align 8, !tbaa !5
  %1634 = load ptr, ptr %28, align 8, !tbaa !5
  %1635 = load i64, ptr %51, align 8, !tbaa !9
  %1636 = load i64, ptr %49, align 8, !tbaa !9
  %1637 = add nsw i64 %1635, %1636
  %1638 = getelementptr inbounds double, ptr %1634, i64 %1637
  %1639 = load ptr, ptr %24, align 8, !tbaa !5
  %1640 = load i64, ptr %51, align 8, !tbaa !9
  %1641 = load i64, ptr %34, align 8, !tbaa !9
  %1642 = mul nsw i64 %1640, %1641
  %1643 = add nsw i64 %1642, 1
  %1644 = getelementptr inbounds double, ptr %1639, i64 %1643
  %1645 = call i32 @f2c_dscal(ptr noundef %1633, ptr noundef %1638, ptr noundef %1644, ptr noundef @c__1)
  br label %1646

1646:                                             ; preds = %1616, %1565
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %1647 = load ptr, ptr %19, align 8, !tbaa !5
  %1648 = load i64, ptr %1647, align 8, !tbaa !9
  store i64 %1648, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %1649

1649:                                             ; preds = %1700, %1646
  %1650 = load i64, ptr %45, align 8, !tbaa !9
  %1651 = load i64, ptr %36, align 8, !tbaa !9
  %1652 = icmp sle i64 %1650, %1651
  br i1 %1652, label %1653, label %1703

1653:                                             ; preds = %1649
  %1654 = load double, ptr %59, align 8, !tbaa !11
  store double %1654, ptr %41, align 8, !tbaa !11
  %1655 = load ptr, ptr %24, align 8, !tbaa !5
  %1656 = load i64, ptr %45, align 8, !tbaa !9
  %1657 = load i64, ptr %51, align 8, !tbaa !9
  %1658 = sub nsw i64 %1657, 1
  %1659 = load i64, ptr %34, align 8, !tbaa !9
  %1660 = mul nsw i64 %1658, %1659
  %1661 = add nsw i64 %1656, %1660
  %1662 = getelementptr inbounds double, ptr %1655, i64 %1661
  %1663 = load double, ptr %1662, align 8, !tbaa !11
  store double %1663, ptr %39, align 8, !tbaa !11
  %1664 = load double, ptr %39, align 8, !tbaa !11
  %1665 = fcmp oge double %1664, 0.000000e+00
  br i1 %1665, label %1666, label %1668

1666:                                             ; preds = %1653
  %1667 = load double, ptr %39, align 8, !tbaa !11
  br label %1671

1668:                                             ; preds = %1653
  %1669 = load double, ptr %39, align 8, !tbaa !11
  %1670 = fneg double %1669
  br label %1671

1671:                                             ; preds = %1668, %1666
  %1672 = phi double [ %1667, %1666 ], [ %1670, %1668 ]
  %1673 = load ptr, ptr %24, align 8, !tbaa !5
  %1674 = load i64, ptr %45, align 8, !tbaa !9
  %1675 = load i64, ptr %51, align 8, !tbaa !9
  %1676 = load i64, ptr %34, align 8, !tbaa !9
  %1677 = mul nsw i64 %1675, %1676
  %1678 = add nsw i64 %1674, %1677
  %1679 = getelementptr inbounds double, ptr %1673, i64 %1678
  %1680 = load double, ptr %1679, align 8, !tbaa !11
  store double %1680, ptr %40, align 8, !tbaa !11
  %1681 = load double, ptr %40, align 8, !tbaa !11
  %1682 = fcmp oge double %1681, 0.000000e+00
  br i1 %1682, label %1683, label %1685

1683:                                             ; preds = %1671
  %1684 = load double, ptr %40, align 8, !tbaa !11
  br label %1688

1685:                                             ; preds = %1671
  %1686 = load double, ptr %40, align 8, !tbaa !11
  %1687 = fneg double %1686
  br label %1688

1688:                                             ; preds = %1685, %1683
  %1689 = phi double [ %1684, %1683 ], [ %1687, %1685 ]
  %1690 = fadd double %1672, %1689
  store double %1690, ptr %42, align 8, !tbaa !11
  %1691 = load double, ptr %41, align 8, !tbaa !11
  %1692 = load double, ptr %42, align 8, !tbaa !11
  %1693 = fcmp oge double %1691, %1692
  br i1 %1693, label %1694, label %1696

1694:                                             ; preds = %1688
  %1695 = load double, ptr %41, align 8, !tbaa !11
  br label %1698

1696:                                             ; preds = %1688
  %1697 = load double, ptr %42, align 8, !tbaa !11
  br label %1698

1698:                                             ; preds = %1696, %1694
  %1699 = phi double [ %1695, %1694 ], [ %1697, %1696 ]
  store double %1699, ptr %59, align 8, !tbaa !11
  br label %1700

1700:                                             ; preds = %1698
  %1701 = load i64, ptr %45, align 8, !tbaa !9
  %1702 = add nsw i64 %1701, 1
  store i64 %1702, ptr %45, align 8, !tbaa !9
  br label %1649, !llvm.loop !24

1703:                                             ; preds = %1649
  %1704 = load double, ptr %59, align 8, !tbaa !11
  %1705 = fdiv double 1.000000e+00, %1704
  store double %1705, ptr %70, align 8, !tbaa !11
  %1706 = load ptr, ptr %19, align 8, !tbaa !5
  %1707 = load ptr, ptr %24, align 8, !tbaa !5
  %1708 = load i64, ptr %51, align 8, !tbaa !9
  %1709 = sub nsw i64 %1708, 1
  %1710 = load i64, ptr %34, align 8, !tbaa !9
  %1711 = mul nsw i64 %1709, %1710
  %1712 = add nsw i64 %1711, 1
  %1713 = getelementptr inbounds double, ptr %1707, i64 %1712
  %1714 = call i32 @f2c_dscal(ptr noundef %1706, ptr noundef %70, ptr noundef %1713, ptr noundef @c__1)
  %1715 = load ptr, ptr %19, align 8, !tbaa !5
  %1716 = load ptr, ptr %24, align 8, !tbaa !5
  %1717 = load i64, ptr %51, align 8, !tbaa !9
  %1718 = load i64, ptr %34, align 8, !tbaa !9
  %1719 = mul nsw i64 %1717, %1718
  %1720 = add nsw i64 %1719, 1
  %1721 = getelementptr inbounds double, ptr %1716, i64 %1720
  %1722 = call i32 @f2c_dscal(ptr noundef %1715, ptr noundef %70, ptr noundef %1721, ptr noundef @c__1)
  br label %1723

1723:                                             ; preds = %1703, %1561
  br label %1724

1724:                                             ; preds = %1723, %938
  %1725 = load i64, ptr %53, align 8, !tbaa !9
  %1726 = add nsw i64 %1725, -1
  store i64 %1726, ptr %53, align 8, !tbaa !9
  %1727 = load i64, ptr %52, align 8, !tbaa !9
  %1728 = icmp ne i64 %1727, 0
  br i1 %1728, label %1729, label %1732

1729:                                             ; preds = %1724
  %1730 = load i64, ptr %53, align 8, !tbaa !9
  %1731 = add nsw i64 %1730, -1
  store i64 %1731, ptr %53, align 8, !tbaa !9
  br label %1732

1732:                                             ; preds = %1729, %1724
  br label %1733

1733:                                             ; preds = %1732, %444, %435, %405
  %1734 = load i64, ptr %52, align 8, !tbaa !9
  %1735 = icmp eq i64 %1734, 1
  br i1 %1735, label %1736, label %1737

1736:                                             ; preds = %1733
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1737

1737:                                             ; preds = %1736, %1733
  %1738 = load i64, ptr %52, align 8, !tbaa !9
  %1739 = icmp eq i64 %1738, -1
  br i1 %1739, label %1740, label %1741

1740:                                             ; preds = %1737
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1741

1741:                                             ; preds = %1740, %1737
  br label %1742

1742:                                             ; preds = %1741
  %1743 = load i64, ptr %51, align 8, !tbaa !9
  %1744 = add nsw i64 %1743, -1
  store i64 %1744, ptr %51, align 8, !tbaa !9
  br label %399, !llvm.loop !25

1745:                                             ; preds = %399
  br label %1746

1746:                                             ; preds = %1745, %388
  %1747 = load i64, ptr %71, align 8, !tbaa !9
  %1748 = icmp ne i64 %1747, 0
  br i1 %1748, label %1749, label %3544

1749:                                             ; preds = %1746
  store i64 0, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  %1750 = load ptr, ptr %19, align 8, !tbaa !5
  %1751 = load i64, ptr %1750, align 8, !tbaa !9
  store i64 %1751, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %1752

1752:                                             ; preds = %3540, %1749
  %1753 = load i64, ptr %51, align 8, !tbaa !9
  %1754 = load i64, ptr %36, align 8, !tbaa !9
  %1755 = icmp sle i64 %1753, %1754
  br i1 %1755, label %1756, label %3543

1756:                                             ; preds = %1752
  %1757 = load i64, ptr %52, align 8, !tbaa !9
  %1758 = icmp eq i64 %1757, -1
  br i1 %1758, label %1759, label %1760

1759:                                             ; preds = %1756
  br label %3531

1760:                                             ; preds = %1756
  %1761 = load i64, ptr %51, align 8, !tbaa !9
  %1762 = load ptr, ptr %19, align 8, !tbaa !5
  %1763 = load i64, ptr %1762, align 8, !tbaa !9
  %1764 = icmp eq i64 %1761, %1763
  br i1 %1764, label %1765, label %1766

1765:                                             ; preds = %1760
  br label %1779

1766:                                             ; preds = %1760
  %1767 = load ptr, ptr %20, align 8, !tbaa !5
  %1768 = load i64, ptr %51, align 8, !tbaa !9
  %1769 = add nsw i64 %1768, 1
  %1770 = load i64, ptr %51, align 8, !tbaa !9
  %1771 = load i64, ptr %30, align 8, !tbaa !9
  %1772 = mul nsw i64 %1770, %1771
  %1773 = add nsw i64 %1769, %1772
  %1774 = getelementptr inbounds double, ptr %1767, i64 %1773
  %1775 = load double, ptr %1774, align 8, !tbaa !11
  %1776 = fcmp oeq double %1775, 0.000000e+00
  br i1 %1776, label %1777, label %1778

1777:                                             ; preds = %1766
  br label %1779

1778:                                             ; preds = %1766
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1779

1779:                                             ; preds = %1778, %1777, %1765
  %1780 = load i64, ptr %74, align 8, !tbaa !9
  %1781 = icmp ne i64 %1780, 0
  br i1 %1781, label %1782, label %1790

1782:                                             ; preds = %1779
  %1783 = load ptr, ptr %18, align 8, !tbaa !5
  %1784 = load i64, ptr %51, align 8, !tbaa !9
  %1785 = getelementptr inbounds i64, ptr %1783, i64 %1784
  %1786 = load i64, ptr %1785, align 8, !tbaa !9
  %1787 = icmp ne i64 %1786, 0
  br i1 %1787, label %1789, label %1788

1788:                                             ; preds = %1782
  br label %3531

1789:                                             ; preds = %1782
  br label %1790

1790:                                             ; preds = %1789, %1779
  %1791 = load ptr, ptr %20, align 8, !tbaa !5
  %1792 = load i64, ptr %51, align 8, !tbaa !9
  %1793 = load i64, ptr %51, align 8, !tbaa !9
  %1794 = load i64, ptr %30, align 8, !tbaa !9
  %1795 = mul nsw i64 %1793, %1794
  %1796 = add nsw i64 %1792, %1795
  %1797 = getelementptr inbounds double, ptr %1791, i64 %1796
  %1798 = load double, ptr %1797, align 8, !tbaa !11
  store double %1798, ptr %55, align 8, !tbaa !11
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %1799 = load i64, ptr %52, align 8, !tbaa !9
  %1800 = icmp ne i64 %1799, 0
  br i1 %1800, label %1801, label %1841

1801:                                             ; preds = %1790
  %1802 = load ptr, ptr %20, align 8, !tbaa !5
  %1803 = load i64, ptr %51, align 8, !tbaa !9
  %1804 = load i64, ptr %51, align 8, !tbaa !9
  %1805 = add nsw i64 %1804, 1
  %1806 = load i64, ptr %30, align 8, !tbaa !9
  %1807 = mul nsw i64 %1805, %1806
  %1808 = add nsw i64 %1803, %1807
  %1809 = getelementptr inbounds double, ptr %1802, i64 %1808
  %1810 = load double, ptr %1809, align 8, !tbaa !11
  store double %1810, ptr %39, align 8, !tbaa !11
  %1811 = load double, ptr %39, align 8, !tbaa !11
  %1812 = fcmp oge double %1811, 0.000000e+00
  br i1 %1812, label %1813, label %1815

1813:                                             ; preds = %1801
  %1814 = load double, ptr %39, align 8, !tbaa !11
  br label %1818

1815:                                             ; preds = %1801
  %1816 = load double, ptr %39, align 8, !tbaa !11
  %1817 = fneg double %1816
  br label %1818

1818:                                             ; preds = %1815, %1813
  %1819 = phi double [ %1814, %1813 ], [ %1817, %1815 ]
  %1820 = call double @sqrt(double noundef %1819) #4
  %1821 = load ptr, ptr %20, align 8, !tbaa !5
  %1822 = load i64, ptr %51, align 8, !tbaa !9
  %1823 = add nsw i64 %1822, 1
  %1824 = load i64, ptr %51, align 8, !tbaa !9
  %1825 = load i64, ptr %30, align 8, !tbaa !9
  %1826 = mul nsw i64 %1824, %1825
  %1827 = add nsw i64 %1823, %1826
  %1828 = getelementptr inbounds double, ptr %1821, i64 %1827
  %1829 = load double, ptr %1828, align 8, !tbaa !11
  store double %1829, ptr %40, align 8, !tbaa !11
  %1830 = load double, ptr %40, align 8, !tbaa !11
  %1831 = fcmp oge double %1830, 0.000000e+00
  br i1 %1831, label %1832, label %1834

1832:                                             ; preds = %1818
  %1833 = load double, ptr %40, align 8, !tbaa !11
  br label %1837

1834:                                             ; preds = %1818
  %1835 = load double, ptr %40, align 8, !tbaa !11
  %1836 = fneg double %1835
  br label %1837

1837:                                             ; preds = %1834, %1832
  %1838 = phi double [ %1833, %1832 ], [ %1836, %1834 ]
  %1839 = call double @sqrt(double noundef %1838) #4
  %1840 = fmul double %1820, %1839
  store double %1840, ptr %54, align 8, !tbaa !11
  br label %1841

1841:                                             ; preds = %1837, %1790
  %1842 = load double, ptr %57, align 8, !tbaa !11
  %1843 = load double, ptr %55, align 8, !tbaa !11
  %1844 = fcmp oge double %1843, 0.000000e+00
  br i1 %1844, label %1845, label %1847

1845:                                             ; preds = %1841
  %1846 = load double, ptr %55, align 8, !tbaa !11
  br label %1850

1847:                                             ; preds = %1841
  %1848 = load double, ptr %55, align 8, !tbaa !11
  %1849 = fneg double %1848
  br label %1850

1850:                                             ; preds = %1847, %1845
  %1851 = phi double [ %1846, %1845 ], [ %1849, %1847 ]
  %1852 = load double, ptr %54, align 8, !tbaa !11
  %1853 = fcmp oge double %1852, 0.000000e+00
  br i1 %1853, label %1854, label %1856

1854:                                             ; preds = %1850
  %1855 = load double, ptr %54, align 8, !tbaa !11
  br label %1859

1856:                                             ; preds = %1850
  %1857 = load double, ptr %54, align 8, !tbaa !11
  %1858 = fneg double %1857
  br label %1859

1859:                                             ; preds = %1856, %1854
  %1860 = phi double [ %1855, %1854 ], [ %1858, %1856 ]
  %1861 = fadd double %1851, %1860
  %1862 = fmul double %1842, %1861
  store double %1862, ptr %39, align 8, !tbaa !11
  %1863 = load double, ptr %39, align 8, !tbaa !11
  %1864 = load double, ptr %78, align 8, !tbaa !11
  %1865 = fcmp oge double %1863, %1864
  br i1 %1865, label %1866, label %1868

1866:                                             ; preds = %1859
  %1867 = load double, ptr %39, align 8, !tbaa !11
  br label %1870

1868:                                             ; preds = %1859
  %1869 = load double, ptr %78, align 8, !tbaa !11
  br label %1870

1870:                                             ; preds = %1868, %1866
  %1871 = phi double [ %1867, %1866 ], [ %1869, %1868 ]
  store double %1871, ptr %65, align 8, !tbaa !11
  %1872 = load i64, ptr %52, align 8, !tbaa !9
  %1873 = icmp eq i64 %1872, 0
  br i1 %1873, label %1874, label %2445

1874:                                             ; preds = %1870
  %1875 = load ptr, ptr %28, align 8, !tbaa !5
  %1876 = load i64, ptr %51, align 8, !tbaa !9
  %1877 = load ptr, ptr %19, align 8, !tbaa !5
  %1878 = load i64, ptr %1877, align 8, !tbaa !9
  %1879 = add nsw i64 %1876, %1878
  %1880 = getelementptr inbounds double, ptr %1875, i64 %1879
  store double 1.000000e+00, ptr %1880, align 8, !tbaa !11
  %1881 = load ptr, ptr %19, align 8, !tbaa !5
  %1882 = load i64, ptr %1881, align 8, !tbaa !9
  store i64 %1882, ptr %37, align 8, !tbaa !9
  %1883 = load i64, ptr %51, align 8, !tbaa !9
  %1884 = add nsw i64 %1883, 1
  store i64 %1884, ptr %45, align 8, !tbaa !9
  br label %1885

1885:                                             ; preds = %1905, %1874
  %1886 = load i64, ptr %45, align 8, !tbaa !9
  %1887 = load i64, ptr %37, align 8, !tbaa !9
  %1888 = icmp sle i64 %1886, %1887
  br i1 %1888, label %1889, label %1908

1889:                                             ; preds = %1885
  %1890 = load ptr, ptr %20, align 8, !tbaa !5
  %1891 = load i64, ptr %51, align 8, !tbaa !9
  %1892 = load i64, ptr %45, align 8, !tbaa !9
  %1893 = load i64, ptr %30, align 8, !tbaa !9
  %1894 = mul nsw i64 %1892, %1893
  %1895 = add nsw i64 %1891, %1894
  %1896 = getelementptr inbounds double, ptr %1890, i64 %1895
  %1897 = load double, ptr %1896, align 8, !tbaa !11
  %1898 = fneg double %1897
  %1899 = load ptr, ptr %28, align 8, !tbaa !5
  %1900 = load i64, ptr %45, align 8, !tbaa !9
  %1901 = load ptr, ptr %19, align 8, !tbaa !5
  %1902 = load i64, ptr %1901, align 8, !tbaa !9
  %1903 = add nsw i64 %1900, %1902
  %1904 = getelementptr inbounds double, ptr %1899, i64 %1903
  store double %1898, ptr %1904, align 8, !tbaa !11
  br label %1905

1905:                                             ; preds = %1889
  %1906 = load i64, ptr %45, align 8, !tbaa !9
  %1907 = add nsw i64 %1906, 1
  store i64 %1907, ptr %45, align 8, !tbaa !9
  br label %1885, !llvm.loop !26

1908:                                             ; preds = %1885
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %1909 = load double, ptr %76, align 8, !tbaa !11
  store double %1909, ptr %73, align 8, !tbaa !11
  %1910 = load i64, ptr %51, align 8, !tbaa !9
  %1911 = add nsw i64 %1910, 1
  store i64 %1911, ptr %68, align 8, !tbaa !9
  %1912 = load ptr, ptr %19, align 8, !tbaa !5
  %1913 = load i64, ptr %1912, align 8, !tbaa !9
  store i64 %1913, ptr %37, align 8, !tbaa !9
  %1914 = load i64, ptr %51, align 8, !tbaa !9
  %1915 = add nsw i64 %1914, 1
  store i64 %1915, ptr %44, align 8, !tbaa !9
  br label %1916

1916:                                             ; preds = %2279, %1908
  %1917 = load i64, ptr %44, align 8, !tbaa !9
  %1918 = load i64, ptr %37, align 8, !tbaa !9
  %1919 = icmp sle i64 %1917, %1918
  br i1 %1919, label %1920, label %2282

1920:                                             ; preds = %1916
  %1921 = load i64, ptr %44, align 8, !tbaa !9
  %1922 = load i64, ptr %68, align 8, !tbaa !9
  %1923 = icmp slt i64 %1921, %1922
  br i1 %1923, label %1924, label %1925

1924:                                             ; preds = %1920
  br label %2278

1925:                                             ; preds = %1920
  %1926 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1926, ptr %47, align 8, !tbaa !9
  %1927 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1927, ptr %48, align 8, !tbaa !9
  %1928 = load i64, ptr %44, align 8, !tbaa !9
  %1929 = add nsw i64 %1928, 1
  store i64 %1929, ptr %68, align 8, !tbaa !9
  %1930 = load i64, ptr %44, align 8, !tbaa !9
  %1931 = load ptr, ptr %19, align 8, !tbaa !5
  %1932 = load i64, ptr %1931, align 8, !tbaa !9
  %1933 = icmp slt i64 %1930, %1932
  br i1 %1933, label %1934, label %1951

1934:                                             ; preds = %1925
  %1935 = load ptr, ptr %20, align 8, !tbaa !5
  %1936 = load i64, ptr %44, align 8, !tbaa !9
  %1937 = add nsw i64 %1936, 1
  %1938 = load i64, ptr %44, align 8, !tbaa !9
  %1939 = load i64, ptr %30, align 8, !tbaa !9
  %1940 = mul nsw i64 %1938, %1939
  %1941 = add nsw i64 %1937, %1940
  %1942 = getelementptr inbounds double, ptr %1935, i64 %1941
  %1943 = load double, ptr %1942, align 8, !tbaa !11
  %1944 = fcmp une double %1943, 0.000000e+00
  br i1 %1944, label %1945, label %1950

1945:                                             ; preds = %1934
  %1946 = load i64, ptr %44, align 8, !tbaa !9
  %1947 = add nsw i64 %1946, 1
  store i64 %1947, ptr %48, align 8, !tbaa !9
  %1948 = load i64, ptr %44, align 8, !tbaa !9
  %1949 = add nsw i64 %1948, 2
  store i64 %1949, ptr %68, align 8, !tbaa !9
  br label %1950

1950:                                             ; preds = %1945, %1934
  br label %1951

1951:                                             ; preds = %1950, %1925
  %1952 = load i64, ptr %47, align 8, !tbaa !9
  %1953 = load i64, ptr %48, align 8, !tbaa !9
  %1954 = icmp eq i64 %1952, %1953
  br i1 %1954, label %1955, label %2076

1955:                                             ; preds = %1951
  %1956 = load ptr, ptr %28, align 8, !tbaa !5
  %1957 = load i64, ptr %44, align 8, !tbaa !9
  %1958 = getelementptr inbounds double, ptr %1956, i64 %1957
  %1959 = load double, ptr %1958, align 8, !tbaa !11
  %1960 = load double, ptr %73, align 8, !tbaa !11
  %1961 = fcmp ogt double %1959, %1960
  br i1 %1961, label %1962, label %1978

1962:                                             ; preds = %1955
  %1963 = load double, ptr %67, align 8, !tbaa !11
  %1964 = fdiv double 1.000000e+00, %1963
  store double %1964, ptr %56, align 8, !tbaa !11
  %1965 = load ptr, ptr %19, align 8, !tbaa !5
  %1966 = load i64, ptr %1965, align 8, !tbaa !9
  %1967 = load i64, ptr %51, align 8, !tbaa !9
  %1968 = sub nsw i64 %1966, %1967
  %1969 = add nsw i64 %1968, 1
  store i64 %1969, ptr %38, align 8, !tbaa !9
  %1970 = load ptr, ptr %28, align 8, !tbaa !5
  %1971 = load i64, ptr %51, align 8, !tbaa !9
  %1972 = load ptr, ptr %19, align 8, !tbaa !5
  %1973 = load i64, ptr %1972, align 8, !tbaa !9
  %1974 = add nsw i64 %1971, %1973
  %1975 = getelementptr inbounds double, ptr %1970, i64 %1974
  %1976 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %56, ptr noundef %1975, ptr noundef @c__1)
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %1977 = load double, ptr %76, align 8, !tbaa !11
  store double %1977, ptr %73, align 8, !tbaa !11
  br label %1978

1978:                                             ; preds = %1962, %1955
  %1979 = load i64, ptr %44, align 8, !tbaa !9
  %1980 = load i64, ptr %51, align 8, !tbaa !9
  %1981 = sub nsw i64 %1979, %1980
  %1982 = sub nsw i64 %1981, 1
  store i64 %1982, ptr %38, align 8, !tbaa !9
  %1983 = load ptr, ptr %20, align 8, !tbaa !5
  %1984 = load i64, ptr %51, align 8, !tbaa !9
  %1985 = add nsw i64 %1984, 1
  %1986 = load i64, ptr %44, align 8, !tbaa !9
  %1987 = load i64, ptr %30, align 8, !tbaa !9
  %1988 = mul nsw i64 %1986, %1987
  %1989 = add nsw i64 %1985, %1988
  %1990 = getelementptr inbounds double, ptr %1983, i64 %1989
  %1991 = load ptr, ptr %28, align 8, !tbaa !5
  %1992 = load i64, ptr %51, align 8, !tbaa !9
  %1993 = add nsw i64 %1992, 1
  %1994 = load ptr, ptr %19, align 8, !tbaa !5
  %1995 = load i64, ptr %1994, align 8, !tbaa !9
  %1996 = add nsw i64 %1993, %1995
  %1997 = getelementptr inbounds double, ptr %1991, i64 %1996
  %1998 = call double @f2c_ddot(ptr noundef %38, ptr noundef %1990, ptr noundef @c__1, ptr noundef %1997, ptr noundef @c__1)
  %1999 = load ptr, ptr %28, align 8, !tbaa !5
  %2000 = load i64, ptr %44, align 8, !tbaa !9
  %2001 = load ptr, ptr %19, align 8, !tbaa !5
  %2002 = load i64, ptr %2001, align 8, !tbaa !9
  %2003 = add nsw i64 %2000, %2002
  %2004 = getelementptr inbounds double, ptr %1999, i64 %2003
  %2005 = load double, ptr %2004, align 8, !tbaa !11
  %2006 = fsub double %2005, %1998
  store double %2006, ptr %2004, align 8, !tbaa !11
  %2007 = load ptr, ptr %20, align 8, !tbaa !5
  %2008 = load i64, ptr %44, align 8, !tbaa !9
  %2009 = load i64, ptr %44, align 8, !tbaa !9
  %2010 = load i64, ptr %30, align 8, !tbaa !9
  %2011 = mul nsw i64 %2009, %2010
  %2012 = add nsw i64 %2008, %2011
  %2013 = getelementptr inbounds double, ptr %2007, i64 %2012
  %2014 = load ptr, ptr %21, align 8, !tbaa !5
  %2015 = load ptr, ptr %28, align 8, !tbaa !5
  %2016 = load i64, ptr %44, align 8, !tbaa !9
  %2017 = load ptr, ptr %19, align 8, !tbaa !5
  %2018 = load i64, ptr %2017, align 8, !tbaa !9
  %2019 = add nsw i64 %2016, %2018
  %2020 = getelementptr inbounds double, ptr %2015, i64 %2019
  %2021 = load ptr, ptr %19, align 8, !tbaa !5
  %2022 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2023 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %65, ptr noundef @c_b22, ptr noundef %2013, ptr noundef %2014, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %2020, ptr noundef %2021, ptr noundef %55, ptr noundef @c_b25, ptr noundef %2022, ptr noundef @c__2, ptr noundef %69, ptr noundef %75, ptr noundef %62)
  %2024 = load double, ptr %69, align 8, !tbaa !11
  %2025 = fcmp une double %2024, 1.000000e+00
  br i1 %2025, label %2026, label %2039

2026:                                             ; preds = %1978
  %2027 = load ptr, ptr %19, align 8, !tbaa !5
  %2028 = load i64, ptr %2027, align 8, !tbaa !9
  %2029 = load i64, ptr %51, align 8, !tbaa !9
  %2030 = sub nsw i64 %2028, %2029
  %2031 = add nsw i64 %2030, 1
  store i64 %2031, ptr %38, align 8, !tbaa !9
  %2032 = load ptr, ptr %28, align 8, !tbaa !5
  %2033 = load i64, ptr %51, align 8, !tbaa !9
  %2034 = load ptr, ptr %19, align 8, !tbaa !5
  %2035 = load i64, ptr %2034, align 8, !tbaa !9
  %2036 = add nsw i64 %2033, %2035
  %2037 = getelementptr inbounds double, ptr %2032, i64 %2036
  %2038 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %69, ptr noundef %2037, ptr noundef @c__1)
  br label %2039

2039:                                             ; preds = %2026, %1978
  %2040 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2041 = load double, ptr %2040, align 16, !tbaa !11
  %2042 = load ptr, ptr %28, align 8, !tbaa !5
  %2043 = load i64, ptr %44, align 8, !tbaa !9
  %2044 = load ptr, ptr %19, align 8, !tbaa !5
  %2045 = load i64, ptr %2044, align 8, !tbaa !9
  %2046 = add nsw i64 %2043, %2045
  %2047 = getelementptr inbounds double, ptr %2042, i64 %2046
  store double %2041, ptr %2047, align 8, !tbaa !11
  %2048 = load ptr, ptr %28, align 8, !tbaa !5
  %2049 = load i64, ptr %44, align 8, !tbaa !9
  %2050 = load ptr, ptr %19, align 8, !tbaa !5
  %2051 = load i64, ptr %2050, align 8, !tbaa !9
  %2052 = add nsw i64 %2049, %2051
  %2053 = getelementptr inbounds double, ptr %2048, i64 %2052
  %2054 = load double, ptr %2053, align 8, !tbaa !11
  store double %2054, ptr %39, align 8, !tbaa !11
  %2055 = load double, ptr %39, align 8, !tbaa !11
  %2056 = fcmp oge double %2055, 0.000000e+00
  br i1 %2056, label %2057, label %2059

2057:                                             ; preds = %2039
  %2058 = load double, ptr %39, align 8, !tbaa !11
  br label %2062

2059:                                             ; preds = %2039
  %2060 = load double, ptr %39, align 8, !tbaa !11
  %2061 = fneg double %2060
  br label %2062

2062:                                             ; preds = %2059, %2057
  %2063 = phi double [ %2058, %2057 ], [ %2061, %2059 ]
  store double %2063, ptr %40, align 8, !tbaa !11
  %2064 = load double, ptr %40, align 8, !tbaa !11
  %2065 = load double, ptr %67, align 8, !tbaa !11
  %2066 = fcmp oge double %2064, %2065
  br i1 %2066, label %2067, label %2069

2067:                                             ; preds = %2062
  %2068 = load double, ptr %40, align 8, !tbaa !11
  br label %2071

2069:                                             ; preds = %2062
  %2070 = load double, ptr %67, align 8, !tbaa !11
  br label %2071

2071:                                             ; preds = %2069, %2067
  %2072 = phi double [ %2068, %2067 ], [ %2070, %2069 ]
  store double %2072, ptr %67, align 8, !tbaa !11
  %2073 = load double, ptr %76, align 8, !tbaa !11
  %2074 = load double, ptr %67, align 8, !tbaa !11
  %2075 = fdiv double %2073, %2074
  store double %2075, ptr %73, align 8, !tbaa !11
  br label %2277

2076:                                             ; preds = %1951
  %2077 = load ptr, ptr %28, align 8, !tbaa !5
  %2078 = load i64, ptr %44, align 8, !tbaa !9
  %2079 = getelementptr inbounds double, ptr %2077, i64 %2078
  %2080 = load double, ptr %2079, align 8, !tbaa !11
  store double %2080, ptr %39, align 8, !tbaa !11
  %2081 = load ptr, ptr %28, align 8, !tbaa !5
  %2082 = load i64, ptr %44, align 8, !tbaa !9
  %2083 = add nsw i64 %2082, 1
  %2084 = getelementptr inbounds double, ptr %2081, i64 %2083
  %2085 = load double, ptr %2084, align 8, !tbaa !11
  store double %2085, ptr %40, align 8, !tbaa !11
  %2086 = load double, ptr %39, align 8, !tbaa !11
  %2087 = load double, ptr %40, align 8, !tbaa !11
  %2088 = fcmp oge double %2086, %2087
  br i1 %2088, label %2089, label %2091

2089:                                             ; preds = %2076
  %2090 = load double, ptr %39, align 8, !tbaa !11
  br label %2093

2091:                                             ; preds = %2076
  %2092 = load double, ptr %40, align 8, !tbaa !11
  br label %2093

2093:                                             ; preds = %2091, %2089
  %2094 = phi double [ %2090, %2089 ], [ %2092, %2091 ]
  store double %2094, ptr %58, align 8, !tbaa !11
  %2095 = load double, ptr %58, align 8, !tbaa !11
  %2096 = load double, ptr %73, align 8, !tbaa !11
  %2097 = fcmp ogt double %2095, %2096
  br i1 %2097, label %2098, label %2114

2098:                                             ; preds = %2093
  %2099 = load double, ptr %67, align 8, !tbaa !11
  %2100 = fdiv double 1.000000e+00, %2099
  store double %2100, ptr %56, align 8, !tbaa !11
  %2101 = load ptr, ptr %19, align 8, !tbaa !5
  %2102 = load i64, ptr %2101, align 8, !tbaa !9
  %2103 = load i64, ptr %51, align 8, !tbaa !9
  %2104 = sub nsw i64 %2102, %2103
  %2105 = add nsw i64 %2104, 1
  store i64 %2105, ptr %38, align 8, !tbaa !9
  %2106 = load ptr, ptr %28, align 8, !tbaa !5
  %2107 = load i64, ptr %51, align 8, !tbaa !9
  %2108 = load ptr, ptr %19, align 8, !tbaa !5
  %2109 = load i64, ptr %2108, align 8, !tbaa !9
  %2110 = add nsw i64 %2107, %2109
  %2111 = getelementptr inbounds double, ptr %2106, i64 %2110
  %2112 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %56, ptr noundef %2111, ptr noundef @c__1)
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %2113 = load double, ptr %76, align 8, !tbaa !11
  store double %2113, ptr %73, align 8, !tbaa !11
  br label %2114

2114:                                             ; preds = %2098, %2093
  %2115 = load i64, ptr %44, align 8, !tbaa !9
  %2116 = load i64, ptr %51, align 8, !tbaa !9
  %2117 = sub nsw i64 %2115, %2116
  %2118 = sub nsw i64 %2117, 1
  store i64 %2118, ptr %38, align 8, !tbaa !9
  %2119 = load ptr, ptr %20, align 8, !tbaa !5
  %2120 = load i64, ptr %51, align 8, !tbaa !9
  %2121 = add nsw i64 %2120, 1
  %2122 = load i64, ptr %44, align 8, !tbaa !9
  %2123 = load i64, ptr %30, align 8, !tbaa !9
  %2124 = mul nsw i64 %2122, %2123
  %2125 = add nsw i64 %2121, %2124
  %2126 = getelementptr inbounds double, ptr %2119, i64 %2125
  %2127 = load ptr, ptr %28, align 8, !tbaa !5
  %2128 = load i64, ptr %51, align 8, !tbaa !9
  %2129 = add nsw i64 %2128, 1
  %2130 = load ptr, ptr %19, align 8, !tbaa !5
  %2131 = load i64, ptr %2130, align 8, !tbaa !9
  %2132 = add nsw i64 %2129, %2131
  %2133 = getelementptr inbounds double, ptr %2127, i64 %2132
  %2134 = call double @f2c_ddot(ptr noundef %38, ptr noundef %2126, ptr noundef @c__1, ptr noundef %2133, ptr noundef @c__1)
  %2135 = load ptr, ptr %28, align 8, !tbaa !5
  %2136 = load i64, ptr %44, align 8, !tbaa !9
  %2137 = load ptr, ptr %19, align 8, !tbaa !5
  %2138 = load i64, ptr %2137, align 8, !tbaa !9
  %2139 = add nsw i64 %2136, %2138
  %2140 = getelementptr inbounds double, ptr %2135, i64 %2139
  %2141 = load double, ptr %2140, align 8, !tbaa !11
  %2142 = fsub double %2141, %2134
  store double %2142, ptr %2140, align 8, !tbaa !11
  %2143 = load i64, ptr %44, align 8, !tbaa !9
  %2144 = load i64, ptr %51, align 8, !tbaa !9
  %2145 = sub nsw i64 %2143, %2144
  %2146 = sub nsw i64 %2145, 1
  store i64 %2146, ptr %38, align 8, !tbaa !9
  %2147 = load ptr, ptr %20, align 8, !tbaa !5
  %2148 = load i64, ptr %51, align 8, !tbaa !9
  %2149 = add nsw i64 %2148, 1
  %2150 = load i64, ptr %44, align 8, !tbaa !9
  %2151 = add nsw i64 %2150, 1
  %2152 = load i64, ptr %30, align 8, !tbaa !9
  %2153 = mul nsw i64 %2151, %2152
  %2154 = add nsw i64 %2149, %2153
  %2155 = getelementptr inbounds double, ptr %2147, i64 %2154
  %2156 = load ptr, ptr %28, align 8, !tbaa !5
  %2157 = load i64, ptr %51, align 8, !tbaa !9
  %2158 = add nsw i64 %2157, 1
  %2159 = load ptr, ptr %19, align 8, !tbaa !5
  %2160 = load i64, ptr %2159, align 8, !tbaa !9
  %2161 = add nsw i64 %2158, %2160
  %2162 = getelementptr inbounds double, ptr %2156, i64 %2161
  %2163 = call double @f2c_ddot(ptr noundef %38, ptr noundef %2155, ptr noundef @c__1, ptr noundef %2162, ptr noundef @c__1)
  %2164 = load ptr, ptr %28, align 8, !tbaa !5
  %2165 = load i64, ptr %44, align 8, !tbaa !9
  %2166 = add nsw i64 %2165, 1
  %2167 = load ptr, ptr %19, align 8, !tbaa !5
  %2168 = load i64, ptr %2167, align 8, !tbaa !9
  %2169 = add nsw i64 %2166, %2168
  %2170 = getelementptr inbounds double, ptr %2164, i64 %2169
  %2171 = load double, ptr %2170, align 8, !tbaa !11
  %2172 = fsub double %2171, %2163
  store double %2172, ptr %2170, align 8, !tbaa !11
  %2173 = load ptr, ptr %20, align 8, !tbaa !5
  %2174 = load i64, ptr %44, align 8, !tbaa !9
  %2175 = load i64, ptr %44, align 8, !tbaa !9
  %2176 = load i64, ptr %30, align 8, !tbaa !9
  %2177 = mul nsw i64 %2175, %2176
  %2178 = add nsw i64 %2174, %2177
  %2179 = getelementptr inbounds double, ptr %2173, i64 %2178
  %2180 = load ptr, ptr %21, align 8, !tbaa !5
  %2181 = load ptr, ptr %28, align 8, !tbaa !5
  %2182 = load i64, ptr %44, align 8, !tbaa !9
  %2183 = load ptr, ptr %19, align 8, !tbaa !5
  %2184 = load i64, ptr %2183, align 8, !tbaa !9
  %2185 = add nsw i64 %2182, %2184
  %2186 = getelementptr inbounds double, ptr %2181, i64 %2185
  %2187 = load ptr, ptr %19, align 8, !tbaa !5
  %2188 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2189 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %65, ptr noundef @c_b22, ptr noundef %2179, ptr noundef %2180, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %2186, ptr noundef %2187, ptr noundef %55, ptr noundef @c_b25, ptr noundef %2188, ptr noundef @c__2, ptr noundef %69, ptr noundef %75, ptr noundef %62)
  %2190 = load double, ptr %69, align 8, !tbaa !11
  %2191 = fcmp une double %2190, 1.000000e+00
  br i1 %2191, label %2192, label %2205

2192:                                             ; preds = %2114
  %2193 = load ptr, ptr %19, align 8, !tbaa !5
  %2194 = load i64, ptr %2193, align 8, !tbaa !9
  %2195 = load i64, ptr %51, align 8, !tbaa !9
  %2196 = sub nsw i64 %2194, %2195
  %2197 = add nsw i64 %2196, 1
  store i64 %2197, ptr %38, align 8, !tbaa !9
  %2198 = load ptr, ptr %28, align 8, !tbaa !5
  %2199 = load i64, ptr %51, align 8, !tbaa !9
  %2200 = load ptr, ptr %19, align 8, !tbaa !5
  %2201 = load i64, ptr %2200, align 8, !tbaa !9
  %2202 = add nsw i64 %2199, %2201
  %2203 = getelementptr inbounds double, ptr %2198, i64 %2202
  %2204 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %69, ptr noundef %2203, ptr noundef @c__1)
  br label %2205

2205:                                             ; preds = %2192, %2114
  %2206 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2207 = load double, ptr %2206, align 16, !tbaa !11
  %2208 = load ptr, ptr %28, align 8, !tbaa !5
  %2209 = load i64, ptr %44, align 8, !tbaa !9
  %2210 = load ptr, ptr %19, align 8, !tbaa !5
  %2211 = load i64, ptr %2210, align 8, !tbaa !9
  %2212 = add nsw i64 %2209, %2211
  %2213 = getelementptr inbounds double, ptr %2208, i64 %2212
  store double %2207, ptr %2213, align 8, !tbaa !11
  %2214 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %2215 = load double, ptr %2214, align 8, !tbaa !11
  %2216 = load ptr, ptr %28, align 8, !tbaa !5
  %2217 = load i64, ptr %44, align 8, !tbaa !9
  %2218 = add nsw i64 %2217, 1
  %2219 = load ptr, ptr %19, align 8, !tbaa !5
  %2220 = load i64, ptr %2219, align 8, !tbaa !9
  %2221 = add nsw i64 %2218, %2220
  %2222 = getelementptr inbounds double, ptr %2216, i64 %2221
  store double %2215, ptr %2222, align 8, !tbaa !11
  %2223 = load ptr, ptr %28, align 8, !tbaa !5
  %2224 = load i64, ptr %44, align 8, !tbaa !9
  %2225 = load ptr, ptr %19, align 8, !tbaa !5
  %2226 = load i64, ptr %2225, align 8, !tbaa !9
  %2227 = add nsw i64 %2224, %2226
  %2228 = getelementptr inbounds double, ptr %2223, i64 %2227
  %2229 = load double, ptr %2228, align 8, !tbaa !11
  store double %2229, ptr %39, align 8, !tbaa !11
  %2230 = load double, ptr %39, align 8, !tbaa !11
  %2231 = fcmp oge double %2230, 0.000000e+00
  br i1 %2231, label %2232, label %2234

2232:                                             ; preds = %2205
  %2233 = load double, ptr %39, align 8, !tbaa !11
  br label %2237

2234:                                             ; preds = %2205
  %2235 = load double, ptr %39, align 8, !tbaa !11
  %2236 = fneg double %2235
  br label %2237

2237:                                             ; preds = %2234, %2232
  %2238 = phi double [ %2233, %2232 ], [ %2236, %2234 ]
  store double %2238, ptr %41, align 8, !tbaa !11
  %2239 = load ptr, ptr %28, align 8, !tbaa !5
  %2240 = load i64, ptr %44, align 8, !tbaa !9
  %2241 = add nsw i64 %2240, 1
  %2242 = load ptr, ptr %19, align 8, !tbaa !5
  %2243 = load i64, ptr %2242, align 8, !tbaa !9
  %2244 = add nsw i64 %2241, %2243
  %2245 = getelementptr inbounds double, ptr %2239, i64 %2244
  %2246 = load double, ptr %2245, align 8, !tbaa !11
  store double %2246, ptr %40, align 8, !tbaa !11
  %2247 = load double, ptr %40, align 8, !tbaa !11
  %2248 = fcmp oge double %2247, 0.000000e+00
  br i1 %2248, label %2249, label %2251

2249:                                             ; preds = %2237
  %2250 = load double, ptr %40, align 8, !tbaa !11
  br label %2254

2251:                                             ; preds = %2237
  %2252 = load double, ptr %40, align 8, !tbaa !11
  %2253 = fneg double %2252
  br label %2254

2254:                                             ; preds = %2251, %2249
  %2255 = phi double [ %2250, %2249 ], [ %2253, %2251 ]
  store double %2255, ptr %42, align 8, !tbaa !11
  %2256 = load double, ptr %41, align 8, !tbaa !11
  %2257 = load double, ptr %42, align 8, !tbaa !11
  %2258 = fcmp oge double %2256, %2257
  br i1 %2258, label %2259, label %2261

2259:                                             ; preds = %2254
  %2260 = load double, ptr %41, align 8, !tbaa !11
  br label %2263

2261:                                             ; preds = %2254
  %2262 = load double, ptr %42, align 8, !tbaa !11
  br label %2263

2263:                                             ; preds = %2261, %2259
  %2264 = phi double [ %2260, %2259 ], [ %2262, %2261 ]
  store double %2264, ptr %41, align 8, !tbaa !11
  %2265 = load double, ptr %41, align 8, !tbaa !11
  %2266 = load double, ptr %67, align 8, !tbaa !11
  %2267 = fcmp oge double %2265, %2266
  br i1 %2267, label %2268, label %2270

2268:                                             ; preds = %2263
  %2269 = load double, ptr %41, align 8, !tbaa !11
  br label %2272

2270:                                             ; preds = %2263
  %2271 = load double, ptr %67, align 8, !tbaa !11
  br label %2272

2272:                                             ; preds = %2270, %2268
  %2273 = phi double [ %2269, %2268 ], [ %2271, %2270 ]
  store double %2273, ptr %67, align 8, !tbaa !11
  %2274 = load double, ptr %76, align 8, !tbaa !11
  %2275 = load double, ptr %67, align 8, !tbaa !11
  %2276 = fdiv double %2274, %2275
  store double %2276, ptr %73, align 8, !tbaa !11
  br label %2277

2277:                                             ; preds = %2272, %2071
  br label %2278

2278:                                             ; preds = %2277, %1924
  br label %2279

2279:                                             ; preds = %2278
  %2280 = load i64, ptr %44, align 8, !tbaa !9
  %2281 = add nsw i64 %2280, 1
  store i64 %2281, ptr %44, align 8, !tbaa !9
  br label %1916, !llvm.loop !27

2282:                                             ; preds = %1916
  %2283 = load i64, ptr %66, align 8, !tbaa !9
  %2284 = icmp ne i64 %2283, 0
  br i1 %2284, label %2370, label %2285

2285:                                             ; preds = %2282
  %2286 = load ptr, ptr %19, align 8, !tbaa !5
  %2287 = load i64, ptr %2286, align 8, !tbaa !9
  %2288 = load i64, ptr %51, align 8, !tbaa !9
  %2289 = sub nsw i64 %2287, %2288
  %2290 = add nsw i64 %2289, 1
  store i64 %2290, ptr %37, align 8, !tbaa !9
  %2291 = load ptr, ptr %28, align 8, !tbaa !5
  %2292 = load i64, ptr %51, align 8, !tbaa !9
  %2293 = load ptr, ptr %19, align 8, !tbaa !5
  %2294 = load i64, ptr %2293, align 8, !tbaa !9
  %2295 = add nsw i64 %2292, %2294
  %2296 = getelementptr inbounds double, ptr %2291, i64 %2295
  %2297 = load ptr, ptr %22, align 8, !tbaa !5
  %2298 = load i64, ptr %51, align 8, !tbaa !9
  %2299 = load i64, ptr %53, align 8, !tbaa !9
  %2300 = load i64, ptr %32, align 8, !tbaa !9
  %2301 = mul nsw i64 %2299, %2300
  %2302 = add nsw i64 %2298, %2301
  %2303 = getelementptr inbounds double, ptr %2297, i64 %2302
  %2304 = call i32 @f2c_dcopy(ptr noundef %37, ptr noundef %2296, ptr noundef @c__1, ptr noundef %2303, ptr noundef @c__1)
  %2305 = load ptr, ptr %19, align 8, !tbaa !5
  %2306 = load i64, ptr %2305, align 8, !tbaa !9
  %2307 = load i64, ptr %51, align 8, !tbaa !9
  %2308 = sub nsw i64 %2306, %2307
  %2309 = add nsw i64 %2308, 1
  store i64 %2309, ptr %37, align 8, !tbaa !9
  %2310 = load ptr, ptr %22, align 8, !tbaa !5
  %2311 = load i64, ptr %51, align 8, !tbaa !9
  %2312 = load i64, ptr %53, align 8, !tbaa !9
  %2313 = load i64, ptr %32, align 8, !tbaa !9
  %2314 = mul nsw i64 %2312, %2313
  %2315 = add nsw i64 %2311, %2314
  %2316 = getelementptr inbounds double, ptr %2310, i64 %2315
  %2317 = call i64 @f2c_idamax(ptr noundef %37, ptr noundef %2316, ptr noundef @c__1)
  %2318 = load i64, ptr %51, align 8, !tbaa !9
  %2319 = add nsw i64 %2317, %2318
  %2320 = sub nsw i64 %2319, 1
  store i64 %2320, ptr %50, align 8, !tbaa !9
  %2321 = load ptr, ptr %22, align 8, !tbaa !5
  %2322 = load i64, ptr %50, align 8, !tbaa !9
  %2323 = load i64, ptr %53, align 8, !tbaa !9
  %2324 = load i64, ptr %32, align 8, !tbaa !9
  %2325 = mul nsw i64 %2323, %2324
  %2326 = add nsw i64 %2322, %2325
  %2327 = getelementptr inbounds double, ptr %2321, i64 %2326
  %2328 = load double, ptr %2327, align 8, !tbaa !11
  store double %2328, ptr %39, align 8, !tbaa !11
  %2329 = load double, ptr %39, align 8, !tbaa !11
  %2330 = fcmp oge double %2329, 0.000000e+00
  br i1 %2330, label %2331, label %2333

2331:                                             ; preds = %2285
  %2332 = load double, ptr %39, align 8, !tbaa !11
  br label %2336

2333:                                             ; preds = %2285
  %2334 = load double, ptr %39, align 8, !tbaa !11
  %2335 = fneg double %2334
  br label %2336

2336:                                             ; preds = %2333, %2331
  %2337 = phi double [ %2332, %2331 ], [ %2335, %2333 ]
  %2338 = fdiv double 1.000000e+00, %2337
  store double %2338, ptr %70, align 8, !tbaa !11
  %2339 = load ptr, ptr %19, align 8, !tbaa !5
  %2340 = load i64, ptr %2339, align 8, !tbaa !9
  %2341 = load i64, ptr %51, align 8, !tbaa !9
  %2342 = sub nsw i64 %2340, %2341
  %2343 = add nsw i64 %2342, 1
  store i64 %2343, ptr %37, align 8, !tbaa !9
  %2344 = load ptr, ptr %22, align 8, !tbaa !5
  %2345 = load i64, ptr %51, align 8, !tbaa !9
  %2346 = load i64, ptr %53, align 8, !tbaa !9
  %2347 = load i64, ptr %32, align 8, !tbaa !9
  %2348 = mul nsw i64 %2346, %2347
  %2349 = add nsw i64 %2345, %2348
  %2350 = getelementptr inbounds double, ptr %2344, i64 %2349
  %2351 = call i32 @f2c_dscal(ptr noundef %37, ptr noundef %70, ptr noundef %2350, ptr noundef @c__1)
  %2352 = load i64, ptr %51, align 8, !tbaa !9
  %2353 = sub nsw i64 %2352, 1
  store i64 %2353, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %2354

2354:                                             ; preds = %2366, %2336
  %2355 = load i64, ptr %45, align 8, !tbaa !9
  %2356 = load i64, ptr %37, align 8, !tbaa !9
  %2357 = icmp sle i64 %2355, %2356
  br i1 %2357, label %2358, label %2369

2358:                                             ; preds = %2354
  %2359 = load ptr, ptr %22, align 8, !tbaa !5
  %2360 = load i64, ptr %45, align 8, !tbaa !9
  %2361 = load i64, ptr %53, align 8, !tbaa !9
  %2362 = load i64, ptr %32, align 8, !tbaa !9
  %2363 = mul nsw i64 %2361, %2362
  %2364 = add nsw i64 %2360, %2363
  %2365 = getelementptr inbounds double, ptr %2359, i64 %2364
  store double 0.000000e+00, ptr %2365, align 8, !tbaa !11
  br label %2366

2366:                                             ; preds = %2358
  %2367 = load i64, ptr %45, align 8, !tbaa !9
  %2368 = add nsw i64 %2367, 1
  store i64 %2368, ptr %45, align 8, !tbaa !9
  br label %2354, !llvm.loop !28

2369:                                             ; preds = %2354
  br label %2444

2370:                                             ; preds = %2282
  %2371 = load i64, ptr %51, align 8, !tbaa !9
  %2372 = load ptr, ptr %19, align 8, !tbaa !5
  %2373 = load i64, ptr %2372, align 8, !tbaa !9
  %2374 = icmp slt i64 %2371, %2373
  br i1 %2374, label %2375, label %2409

2375:                                             ; preds = %2370
  %2376 = load ptr, ptr %19, align 8, !tbaa !5
  %2377 = load i64, ptr %2376, align 8, !tbaa !9
  %2378 = load i64, ptr %51, align 8, !tbaa !9
  %2379 = sub nsw i64 %2377, %2378
  store i64 %2379, ptr %37, align 8, !tbaa !9
  %2380 = load ptr, ptr %19, align 8, !tbaa !5
  %2381 = load ptr, ptr %22, align 8, !tbaa !5
  %2382 = load i64, ptr %51, align 8, !tbaa !9
  %2383 = add nsw i64 %2382, 1
  %2384 = load i64, ptr %32, align 8, !tbaa !9
  %2385 = mul nsw i64 %2383, %2384
  %2386 = add nsw i64 %2385, 1
  %2387 = getelementptr inbounds double, ptr %2381, i64 %2386
  %2388 = load ptr, ptr %23, align 8, !tbaa !5
  %2389 = load ptr, ptr %28, align 8, !tbaa !5
  %2390 = load i64, ptr %51, align 8, !tbaa !9
  %2391 = add nsw i64 %2390, 1
  %2392 = load ptr, ptr %19, align 8, !tbaa !5
  %2393 = load i64, ptr %2392, align 8, !tbaa !9
  %2394 = add nsw i64 %2391, %2393
  %2395 = getelementptr inbounds double, ptr %2389, i64 %2394
  %2396 = load ptr, ptr %28, align 8, !tbaa !5
  %2397 = load i64, ptr %51, align 8, !tbaa !9
  %2398 = load ptr, ptr %19, align 8, !tbaa !5
  %2399 = load i64, ptr %2398, align 8, !tbaa !9
  %2400 = add nsw i64 %2397, %2399
  %2401 = getelementptr inbounds double, ptr %2396, i64 %2400
  %2402 = load ptr, ptr %22, align 8, !tbaa !5
  %2403 = load i64, ptr %51, align 8, !tbaa !9
  %2404 = load i64, ptr %32, align 8, !tbaa !9
  %2405 = mul nsw i64 %2403, %2404
  %2406 = add nsw i64 %2405, 1
  %2407 = getelementptr inbounds double, ptr %2402, i64 %2406
  %2408 = call i32 @f2c_dgemv(ptr noundef @.str.8, ptr noundef %2380, ptr noundef %37, ptr noundef @c_b22, ptr noundef %2387, ptr noundef %2388, ptr noundef %2395, ptr noundef @c__1, ptr noundef %2401, ptr noundef %2407, ptr noundef @c__1)
  br label %2409

2409:                                             ; preds = %2375, %2370
  %2410 = load ptr, ptr %19, align 8, !tbaa !5
  %2411 = load ptr, ptr %22, align 8, !tbaa !5
  %2412 = load i64, ptr %51, align 8, !tbaa !9
  %2413 = load i64, ptr %32, align 8, !tbaa !9
  %2414 = mul nsw i64 %2412, %2413
  %2415 = add nsw i64 %2414, 1
  %2416 = getelementptr inbounds double, ptr %2411, i64 %2415
  %2417 = call i64 @f2c_idamax(ptr noundef %2410, ptr noundef %2416, ptr noundef @c__1)
  store i64 %2417, ptr %50, align 8, !tbaa !9
  %2418 = load ptr, ptr %22, align 8, !tbaa !5
  %2419 = load i64, ptr %50, align 8, !tbaa !9
  %2420 = load i64, ptr %51, align 8, !tbaa !9
  %2421 = load i64, ptr %32, align 8, !tbaa !9
  %2422 = mul nsw i64 %2420, %2421
  %2423 = add nsw i64 %2419, %2422
  %2424 = getelementptr inbounds double, ptr %2418, i64 %2423
  %2425 = load double, ptr %2424, align 8, !tbaa !11
  store double %2425, ptr %39, align 8, !tbaa !11
  %2426 = load double, ptr %39, align 8, !tbaa !11
  %2427 = fcmp oge double %2426, 0.000000e+00
  br i1 %2427, label %2428, label %2430

2428:                                             ; preds = %2409
  %2429 = load double, ptr %39, align 8, !tbaa !11
  br label %2433

2430:                                             ; preds = %2409
  %2431 = load double, ptr %39, align 8, !tbaa !11
  %2432 = fneg double %2431
  br label %2433

2433:                                             ; preds = %2430, %2428
  %2434 = phi double [ %2429, %2428 ], [ %2432, %2430 ]
  %2435 = fdiv double 1.000000e+00, %2434
  store double %2435, ptr %70, align 8, !tbaa !11
  %2436 = load ptr, ptr %19, align 8, !tbaa !5
  %2437 = load ptr, ptr %22, align 8, !tbaa !5
  %2438 = load i64, ptr %51, align 8, !tbaa !9
  %2439 = load i64, ptr %32, align 8, !tbaa !9
  %2440 = mul nsw i64 %2438, %2439
  %2441 = add nsw i64 %2440, 1
  %2442 = getelementptr inbounds double, ptr %2437, i64 %2441
  %2443 = call i32 @f2c_dscal(ptr noundef %2436, ptr noundef %70, ptr noundef %2442, ptr noundef @c__1)
  br label %2444

2444:                                             ; preds = %2433, %2369
  br label %3522

2445:                                             ; preds = %1870
  %2446 = load ptr, ptr %20, align 8, !tbaa !5
  %2447 = load i64, ptr %51, align 8, !tbaa !9
  %2448 = load i64, ptr %51, align 8, !tbaa !9
  %2449 = add nsw i64 %2448, 1
  %2450 = load i64, ptr %30, align 8, !tbaa !9
  %2451 = mul nsw i64 %2449, %2450
  %2452 = add nsw i64 %2447, %2451
  %2453 = getelementptr inbounds double, ptr %2446, i64 %2452
  %2454 = load double, ptr %2453, align 8, !tbaa !11
  store double %2454, ptr %39, align 8, !tbaa !11
  %2455 = load double, ptr %39, align 8, !tbaa !11
  %2456 = fcmp oge double %2455, 0.000000e+00
  br i1 %2456, label %2457, label %2459

2457:                                             ; preds = %2445
  %2458 = load double, ptr %39, align 8, !tbaa !11
  br label %2462

2459:                                             ; preds = %2445
  %2460 = load double, ptr %39, align 8, !tbaa !11
  %2461 = fneg double %2460
  br label %2462

2462:                                             ; preds = %2459, %2457
  %2463 = phi double [ %2458, %2457 ], [ %2461, %2459 ]
  %2464 = load ptr, ptr %20, align 8, !tbaa !5
  %2465 = load i64, ptr %51, align 8, !tbaa !9
  %2466 = add nsw i64 %2465, 1
  %2467 = load i64, ptr %51, align 8, !tbaa !9
  %2468 = load i64, ptr %30, align 8, !tbaa !9
  %2469 = mul nsw i64 %2467, %2468
  %2470 = add nsw i64 %2466, %2469
  %2471 = getelementptr inbounds double, ptr %2464, i64 %2470
  %2472 = load double, ptr %2471, align 8, !tbaa !11
  store double %2472, ptr %40, align 8, !tbaa !11
  %2473 = load double, ptr %40, align 8, !tbaa !11
  %2474 = fcmp oge double %2473, 0.000000e+00
  br i1 %2474, label %2475, label %2477

2475:                                             ; preds = %2462
  %2476 = load double, ptr %40, align 8, !tbaa !11
  br label %2480

2477:                                             ; preds = %2462
  %2478 = load double, ptr %40, align 8, !tbaa !11
  %2479 = fneg double %2478
  br label %2480

2480:                                             ; preds = %2477, %2475
  %2481 = phi double [ %2476, %2475 ], [ %2479, %2477 ]
  %2482 = fcmp oge double %2463, %2481
  br i1 %2482, label %2483, label %2507

2483:                                             ; preds = %2480
  %2484 = load double, ptr %54, align 8, !tbaa !11
  %2485 = load ptr, ptr %20, align 8, !tbaa !5
  %2486 = load i64, ptr %51, align 8, !tbaa !9
  %2487 = load i64, ptr %51, align 8, !tbaa !9
  %2488 = add nsw i64 %2487, 1
  %2489 = load i64, ptr %30, align 8, !tbaa !9
  %2490 = mul nsw i64 %2488, %2489
  %2491 = add nsw i64 %2486, %2490
  %2492 = getelementptr inbounds double, ptr %2485, i64 %2491
  %2493 = load double, ptr %2492, align 8, !tbaa !11
  %2494 = fdiv double %2484, %2493
  %2495 = load ptr, ptr %28, align 8, !tbaa !5
  %2496 = load i64, ptr %51, align 8, !tbaa !9
  %2497 = load ptr, ptr %19, align 8, !tbaa !5
  %2498 = load i64, ptr %2497, align 8, !tbaa !9
  %2499 = add nsw i64 %2496, %2498
  %2500 = getelementptr inbounds double, ptr %2495, i64 %2499
  store double %2494, ptr %2500, align 8, !tbaa !11
  %2501 = load ptr, ptr %28, align 8, !tbaa !5
  %2502 = load i64, ptr %51, align 8, !tbaa !9
  %2503 = add nsw i64 %2502, 1
  %2504 = load i64, ptr %49, align 8, !tbaa !9
  %2505 = add nsw i64 %2503, %2504
  %2506 = getelementptr inbounds double, ptr %2501, i64 %2505
  store double 1.000000e+00, ptr %2506, align 8, !tbaa !11
  br label %2532

2507:                                             ; preds = %2480
  %2508 = load ptr, ptr %28, align 8, !tbaa !5
  %2509 = load i64, ptr %51, align 8, !tbaa !9
  %2510 = load ptr, ptr %19, align 8, !tbaa !5
  %2511 = load i64, ptr %2510, align 8, !tbaa !9
  %2512 = add nsw i64 %2509, %2511
  %2513 = getelementptr inbounds double, ptr %2508, i64 %2512
  store double 1.000000e+00, ptr %2513, align 8, !tbaa !11
  %2514 = load double, ptr %54, align 8, !tbaa !11
  %2515 = fneg double %2514
  %2516 = load ptr, ptr %20, align 8, !tbaa !5
  %2517 = load i64, ptr %51, align 8, !tbaa !9
  %2518 = add nsw i64 %2517, 1
  %2519 = load i64, ptr %51, align 8, !tbaa !9
  %2520 = load i64, ptr %30, align 8, !tbaa !9
  %2521 = mul nsw i64 %2519, %2520
  %2522 = add nsw i64 %2518, %2521
  %2523 = getelementptr inbounds double, ptr %2516, i64 %2522
  %2524 = load double, ptr %2523, align 8, !tbaa !11
  %2525 = fdiv double %2515, %2524
  %2526 = load ptr, ptr %28, align 8, !tbaa !5
  %2527 = load i64, ptr %51, align 8, !tbaa !9
  %2528 = add nsw i64 %2527, 1
  %2529 = load i64, ptr %49, align 8, !tbaa !9
  %2530 = add nsw i64 %2528, %2529
  %2531 = getelementptr inbounds double, ptr %2526, i64 %2530
  store double %2525, ptr %2531, align 8, !tbaa !11
  br label %2532

2532:                                             ; preds = %2507, %2483
  %2533 = load ptr, ptr %28, align 8, !tbaa !5
  %2534 = load i64, ptr %51, align 8, !tbaa !9
  %2535 = add nsw i64 %2534, 1
  %2536 = load ptr, ptr %19, align 8, !tbaa !5
  %2537 = load i64, ptr %2536, align 8, !tbaa !9
  %2538 = add nsw i64 %2535, %2537
  %2539 = getelementptr inbounds double, ptr %2533, i64 %2538
  store double 0.000000e+00, ptr %2539, align 8, !tbaa !11
  %2540 = load ptr, ptr %28, align 8, !tbaa !5
  %2541 = load i64, ptr %51, align 8, !tbaa !9
  %2542 = load i64, ptr %49, align 8, !tbaa !9
  %2543 = add nsw i64 %2541, %2542
  %2544 = getelementptr inbounds double, ptr %2540, i64 %2543
  store double 0.000000e+00, ptr %2544, align 8, !tbaa !11
  %2545 = load ptr, ptr %19, align 8, !tbaa !5
  %2546 = load i64, ptr %2545, align 8, !tbaa !9
  store i64 %2546, ptr %37, align 8, !tbaa !9
  %2547 = load i64, ptr %51, align 8, !tbaa !9
  %2548 = add nsw i64 %2547, 2
  store i64 %2548, ptr %45, align 8, !tbaa !9
  br label %2549

2549:                                             ; preds = %2600, %2532
  %2550 = load i64, ptr %45, align 8, !tbaa !9
  %2551 = load i64, ptr %37, align 8, !tbaa !9
  %2552 = icmp sle i64 %2550, %2551
  br i1 %2552, label %2553, label %2603

2553:                                             ; preds = %2549
  %2554 = load ptr, ptr %28, align 8, !tbaa !5
  %2555 = load i64, ptr %51, align 8, !tbaa !9
  %2556 = load ptr, ptr %19, align 8, !tbaa !5
  %2557 = load i64, ptr %2556, align 8, !tbaa !9
  %2558 = add nsw i64 %2555, %2557
  %2559 = getelementptr inbounds double, ptr %2554, i64 %2558
  %2560 = load double, ptr %2559, align 8, !tbaa !11
  %2561 = fneg double %2560
  %2562 = load ptr, ptr %20, align 8, !tbaa !5
  %2563 = load i64, ptr %51, align 8, !tbaa !9
  %2564 = load i64, ptr %45, align 8, !tbaa !9
  %2565 = load i64, ptr %30, align 8, !tbaa !9
  %2566 = mul nsw i64 %2564, %2565
  %2567 = add nsw i64 %2563, %2566
  %2568 = getelementptr inbounds double, ptr %2562, i64 %2567
  %2569 = load double, ptr %2568, align 8, !tbaa !11
  %2570 = fmul double %2561, %2569
  %2571 = load ptr, ptr %28, align 8, !tbaa !5
  %2572 = load i64, ptr %45, align 8, !tbaa !9
  %2573 = load ptr, ptr %19, align 8, !tbaa !5
  %2574 = load i64, ptr %2573, align 8, !tbaa !9
  %2575 = add nsw i64 %2572, %2574
  %2576 = getelementptr inbounds double, ptr %2571, i64 %2575
  store double %2570, ptr %2576, align 8, !tbaa !11
  %2577 = load ptr, ptr %28, align 8, !tbaa !5
  %2578 = load i64, ptr %51, align 8, !tbaa !9
  %2579 = add nsw i64 %2578, 1
  %2580 = load i64, ptr %49, align 8, !tbaa !9
  %2581 = add nsw i64 %2579, %2580
  %2582 = getelementptr inbounds double, ptr %2577, i64 %2581
  %2583 = load double, ptr %2582, align 8, !tbaa !11
  %2584 = fneg double %2583
  %2585 = load ptr, ptr %20, align 8, !tbaa !5
  %2586 = load i64, ptr %51, align 8, !tbaa !9
  %2587 = add nsw i64 %2586, 1
  %2588 = load i64, ptr %45, align 8, !tbaa !9
  %2589 = load i64, ptr %30, align 8, !tbaa !9
  %2590 = mul nsw i64 %2588, %2589
  %2591 = add nsw i64 %2587, %2590
  %2592 = getelementptr inbounds double, ptr %2585, i64 %2591
  %2593 = load double, ptr %2592, align 8, !tbaa !11
  %2594 = fmul double %2584, %2593
  %2595 = load ptr, ptr %28, align 8, !tbaa !5
  %2596 = load i64, ptr %45, align 8, !tbaa !9
  %2597 = load i64, ptr %49, align 8, !tbaa !9
  %2598 = add nsw i64 %2596, %2597
  %2599 = getelementptr inbounds double, ptr %2595, i64 %2598
  store double %2594, ptr %2599, align 8, !tbaa !11
  br label %2600

2600:                                             ; preds = %2553
  %2601 = load i64, ptr %45, align 8, !tbaa !9
  %2602 = add nsw i64 %2601, 1
  store i64 %2602, ptr %45, align 8, !tbaa !9
  br label %2549, !llvm.loop !29

2603:                                             ; preds = %2549
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %2604 = load double, ptr %76, align 8, !tbaa !11
  store double %2604, ptr %73, align 8, !tbaa !11
  %2605 = load i64, ptr %51, align 8, !tbaa !9
  %2606 = add nsw i64 %2605, 2
  store i64 %2606, ptr %68, align 8, !tbaa !9
  %2607 = load ptr, ptr %19, align 8, !tbaa !5
  %2608 = load i64, ptr %2607, align 8, !tbaa !9
  store i64 %2608, ptr %37, align 8, !tbaa !9
  %2609 = load i64, ptr %51, align 8, !tbaa !9
  %2610 = add nsw i64 %2609, 2
  store i64 %2610, ptr %44, align 8, !tbaa !9
  br label %2611

2611:                                             ; preds = %3181, %2603
  %2612 = load i64, ptr %44, align 8, !tbaa !9
  %2613 = load i64, ptr %37, align 8, !tbaa !9
  %2614 = icmp sle i64 %2612, %2613
  br i1 %2614, label %2615, label %3184

2615:                                             ; preds = %2611
  %2616 = load i64, ptr %44, align 8, !tbaa !9
  %2617 = load i64, ptr %68, align 8, !tbaa !9
  %2618 = icmp slt i64 %2616, %2617
  br i1 %2618, label %2619, label %2620

2619:                                             ; preds = %2615
  br label %3180

2620:                                             ; preds = %2615
  %2621 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %2621, ptr %47, align 8, !tbaa !9
  %2622 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %2622, ptr %48, align 8, !tbaa !9
  %2623 = load i64, ptr %44, align 8, !tbaa !9
  %2624 = add nsw i64 %2623, 1
  store i64 %2624, ptr %68, align 8, !tbaa !9
  %2625 = load i64, ptr %44, align 8, !tbaa !9
  %2626 = load ptr, ptr %19, align 8, !tbaa !5
  %2627 = load i64, ptr %2626, align 8, !tbaa !9
  %2628 = icmp slt i64 %2625, %2627
  br i1 %2628, label %2629, label %2646

2629:                                             ; preds = %2620
  %2630 = load ptr, ptr %20, align 8, !tbaa !5
  %2631 = load i64, ptr %44, align 8, !tbaa !9
  %2632 = add nsw i64 %2631, 1
  %2633 = load i64, ptr %44, align 8, !tbaa !9
  %2634 = load i64, ptr %30, align 8, !tbaa !9
  %2635 = mul nsw i64 %2633, %2634
  %2636 = add nsw i64 %2632, %2635
  %2637 = getelementptr inbounds double, ptr %2630, i64 %2636
  %2638 = load double, ptr %2637, align 8, !tbaa !11
  %2639 = fcmp une double %2638, 0.000000e+00
  br i1 %2639, label %2640, label %2645

2640:                                             ; preds = %2629
  %2641 = load i64, ptr %44, align 8, !tbaa !9
  %2642 = add nsw i64 %2641, 1
  store i64 %2642, ptr %48, align 8, !tbaa !9
  %2643 = load i64, ptr %44, align 8, !tbaa !9
  %2644 = add nsw i64 %2643, 2
  store i64 %2644, ptr %68, align 8, !tbaa !9
  br label %2645

2645:                                             ; preds = %2640, %2629
  br label %2646

2646:                                             ; preds = %2645, %2620
  %2647 = load i64, ptr %47, align 8, !tbaa !9
  %2648 = load i64, ptr %48, align 8, !tbaa !9
  %2649 = icmp eq i64 %2647, %2648
  br i1 %2649, label %2650, label %2852

2650:                                             ; preds = %2646
  %2651 = load ptr, ptr %28, align 8, !tbaa !5
  %2652 = load i64, ptr %44, align 8, !tbaa !9
  %2653 = getelementptr inbounds double, ptr %2651, i64 %2652
  %2654 = load double, ptr %2653, align 8, !tbaa !11
  %2655 = load double, ptr %73, align 8, !tbaa !11
  %2656 = fcmp ogt double %2654, %2655
  br i1 %2656, label %2657, label %2684

2657:                                             ; preds = %2650
  %2658 = load double, ptr %67, align 8, !tbaa !11
  %2659 = fdiv double 1.000000e+00, %2658
  store double %2659, ptr %56, align 8, !tbaa !11
  %2660 = load ptr, ptr %19, align 8, !tbaa !5
  %2661 = load i64, ptr %2660, align 8, !tbaa !9
  %2662 = load i64, ptr %51, align 8, !tbaa !9
  %2663 = sub nsw i64 %2661, %2662
  %2664 = add nsw i64 %2663, 1
  store i64 %2664, ptr %38, align 8, !tbaa !9
  %2665 = load ptr, ptr %28, align 8, !tbaa !5
  %2666 = load i64, ptr %51, align 8, !tbaa !9
  %2667 = load ptr, ptr %19, align 8, !tbaa !5
  %2668 = load i64, ptr %2667, align 8, !tbaa !9
  %2669 = add nsw i64 %2666, %2668
  %2670 = getelementptr inbounds double, ptr %2665, i64 %2669
  %2671 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %56, ptr noundef %2670, ptr noundef @c__1)
  %2672 = load ptr, ptr %19, align 8, !tbaa !5
  %2673 = load i64, ptr %2672, align 8, !tbaa !9
  %2674 = load i64, ptr %51, align 8, !tbaa !9
  %2675 = sub nsw i64 %2673, %2674
  %2676 = add nsw i64 %2675, 1
  store i64 %2676, ptr %38, align 8, !tbaa !9
  %2677 = load ptr, ptr %28, align 8, !tbaa !5
  %2678 = load i64, ptr %51, align 8, !tbaa !9
  %2679 = load i64, ptr %49, align 8, !tbaa !9
  %2680 = add nsw i64 %2678, %2679
  %2681 = getelementptr inbounds double, ptr %2677, i64 %2680
  %2682 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %56, ptr noundef %2681, ptr noundef @c__1)
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %2683 = load double, ptr %76, align 8, !tbaa !11
  store double %2683, ptr %73, align 8, !tbaa !11
  br label %2684

2684:                                             ; preds = %2657, %2650
  %2685 = load i64, ptr %44, align 8, !tbaa !9
  %2686 = load i64, ptr %51, align 8, !tbaa !9
  %2687 = sub nsw i64 %2685, %2686
  %2688 = sub nsw i64 %2687, 2
  store i64 %2688, ptr %38, align 8, !tbaa !9
  %2689 = load ptr, ptr %20, align 8, !tbaa !5
  %2690 = load i64, ptr %51, align 8, !tbaa !9
  %2691 = add nsw i64 %2690, 2
  %2692 = load i64, ptr %44, align 8, !tbaa !9
  %2693 = load i64, ptr %30, align 8, !tbaa !9
  %2694 = mul nsw i64 %2692, %2693
  %2695 = add nsw i64 %2691, %2694
  %2696 = getelementptr inbounds double, ptr %2689, i64 %2695
  %2697 = load ptr, ptr %28, align 8, !tbaa !5
  %2698 = load i64, ptr %51, align 8, !tbaa !9
  %2699 = add nsw i64 %2698, 2
  %2700 = load ptr, ptr %19, align 8, !tbaa !5
  %2701 = load i64, ptr %2700, align 8, !tbaa !9
  %2702 = add nsw i64 %2699, %2701
  %2703 = getelementptr inbounds double, ptr %2697, i64 %2702
  %2704 = call double @f2c_ddot(ptr noundef %38, ptr noundef %2696, ptr noundef @c__1, ptr noundef %2703, ptr noundef @c__1)
  %2705 = load ptr, ptr %28, align 8, !tbaa !5
  %2706 = load i64, ptr %44, align 8, !tbaa !9
  %2707 = load ptr, ptr %19, align 8, !tbaa !5
  %2708 = load i64, ptr %2707, align 8, !tbaa !9
  %2709 = add nsw i64 %2706, %2708
  %2710 = getelementptr inbounds double, ptr %2705, i64 %2709
  %2711 = load double, ptr %2710, align 8, !tbaa !11
  %2712 = fsub double %2711, %2704
  store double %2712, ptr %2710, align 8, !tbaa !11
  %2713 = load i64, ptr %44, align 8, !tbaa !9
  %2714 = load i64, ptr %51, align 8, !tbaa !9
  %2715 = sub nsw i64 %2713, %2714
  %2716 = sub nsw i64 %2715, 2
  store i64 %2716, ptr %38, align 8, !tbaa !9
  %2717 = load ptr, ptr %20, align 8, !tbaa !5
  %2718 = load i64, ptr %51, align 8, !tbaa !9
  %2719 = add nsw i64 %2718, 2
  %2720 = load i64, ptr %44, align 8, !tbaa !9
  %2721 = load i64, ptr %30, align 8, !tbaa !9
  %2722 = mul nsw i64 %2720, %2721
  %2723 = add nsw i64 %2719, %2722
  %2724 = getelementptr inbounds double, ptr %2717, i64 %2723
  %2725 = load ptr, ptr %28, align 8, !tbaa !5
  %2726 = load i64, ptr %51, align 8, !tbaa !9
  %2727 = add nsw i64 %2726, 2
  %2728 = load i64, ptr %49, align 8, !tbaa !9
  %2729 = add nsw i64 %2727, %2728
  %2730 = getelementptr inbounds double, ptr %2725, i64 %2729
  %2731 = call double @f2c_ddot(ptr noundef %38, ptr noundef %2724, ptr noundef @c__1, ptr noundef %2730, ptr noundef @c__1)
  %2732 = load ptr, ptr %28, align 8, !tbaa !5
  %2733 = load i64, ptr %44, align 8, !tbaa !9
  %2734 = load i64, ptr %49, align 8, !tbaa !9
  %2735 = add nsw i64 %2733, %2734
  %2736 = getelementptr inbounds double, ptr %2732, i64 %2735
  %2737 = load double, ptr %2736, align 8, !tbaa !11
  %2738 = fsub double %2737, %2731
  store double %2738, ptr %2736, align 8, !tbaa !11
  %2739 = load double, ptr %54, align 8, !tbaa !11
  %2740 = fneg double %2739
  store double %2740, ptr %39, align 8, !tbaa !11
  %2741 = load ptr, ptr %20, align 8, !tbaa !5
  %2742 = load i64, ptr %44, align 8, !tbaa !9
  %2743 = load i64, ptr %44, align 8, !tbaa !9
  %2744 = load i64, ptr %30, align 8, !tbaa !9
  %2745 = mul nsw i64 %2743, %2744
  %2746 = add nsw i64 %2742, %2745
  %2747 = getelementptr inbounds double, ptr %2741, i64 %2746
  %2748 = load ptr, ptr %21, align 8, !tbaa !5
  %2749 = load ptr, ptr %28, align 8, !tbaa !5
  %2750 = load i64, ptr %44, align 8, !tbaa !9
  %2751 = load ptr, ptr %19, align 8, !tbaa !5
  %2752 = load i64, ptr %2751, align 8, !tbaa !9
  %2753 = add nsw i64 %2750, %2752
  %2754 = getelementptr inbounds double, ptr %2749, i64 %2753
  %2755 = load ptr, ptr %19, align 8, !tbaa !5
  %2756 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2757 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__2, ptr noundef %65, ptr noundef @c_b22, ptr noundef %2747, ptr noundef %2748, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %2754, ptr noundef %2755, ptr noundef %55, ptr noundef %39, ptr noundef %2756, ptr noundef @c__2, ptr noundef %69, ptr noundef %75, ptr noundef %62)
  %2758 = load double, ptr %69, align 8, !tbaa !11
  %2759 = fcmp une double %2758, 1.000000e+00
  br i1 %2759, label %2760, label %2784

2760:                                             ; preds = %2684
  %2761 = load ptr, ptr %19, align 8, !tbaa !5
  %2762 = load i64, ptr %2761, align 8, !tbaa !9
  %2763 = load i64, ptr %51, align 8, !tbaa !9
  %2764 = sub nsw i64 %2762, %2763
  %2765 = add nsw i64 %2764, 1
  store i64 %2765, ptr %38, align 8, !tbaa !9
  %2766 = load ptr, ptr %28, align 8, !tbaa !5
  %2767 = load i64, ptr %51, align 8, !tbaa !9
  %2768 = load ptr, ptr %19, align 8, !tbaa !5
  %2769 = load i64, ptr %2768, align 8, !tbaa !9
  %2770 = add nsw i64 %2767, %2769
  %2771 = getelementptr inbounds double, ptr %2766, i64 %2770
  %2772 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %69, ptr noundef %2771, ptr noundef @c__1)
  %2773 = load ptr, ptr %19, align 8, !tbaa !5
  %2774 = load i64, ptr %2773, align 8, !tbaa !9
  %2775 = load i64, ptr %51, align 8, !tbaa !9
  %2776 = sub nsw i64 %2774, %2775
  %2777 = add nsw i64 %2776, 1
  store i64 %2777, ptr %38, align 8, !tbaa !9
  %2778 = load ptr, ptr %28, align 8, !tbaa !5
  %2779 = load i64, ptr %51, align 8, !tbaa !9
  %2780 = load i64, ptr %49, align 8, !tbaa !9
  %2781 = add nsw i64 %2779, %2780
  %2782 = getelementptr inbounds double, ptr %2778, i64 %2781
  %2783 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %69, ptr noundef %2782, ptr noundef @c__1)
  br label %2784

2784:                                             ; preds = %2760, %2684
  %2785 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2786 = load double, ptr %2785, align 16, !tbaa !11
  %2787 = load ptr, ptr %28, align 8, !tbaa !5
  %2788 = load i64, ptr %44, align 8, !tbaa !9
  %2789 = load ptr, ptr %19, align 8, !tbaa !5
  %2790 = load i64, ptr %2789, align 8, !tbaa !9
  %2791 = add nsw i64 %2788, %2790
  %2792 = getelementptr inbounds double, ptr %2787, i64 %2791
  store double %2786, ptr %2792, align 8, !tbaa !11
  %2793 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %2794 = load double, ptr %2793, align 16, !tbaa !11
  %2795 = load ptr, ptr %28, align 8, !tbaa !5
  %2796 = load i64, ptr %44, align 8, !tbaa !9
  %2797 = load i64, ptr %49, align 8, !tbaa !9
  %2798 = add nsw i64 %2796, %2797
  %2799 = getelementptr inbounds double, ptr %2795, i64 %2798
  store double %2794, ptr %2799, align 8, !tbaa !11
  %2800 = load ptr, ptr %28, align 8, !tbaa !5
  %2801 = load i64, ptr %44, align 8, !tbaa !9
  %2802 = load ptr, ptr %19, align 8, !tbaa !5
  %2803 = load i64, ptr %2802, align 8, !tbaa !9
  %2804 = add nsw i64 %2801, %2803
  %2805 = getelementptr inbounds double, ptr %2800, i64 %2804
  %2806 = load double, ptr %2805, align 8, !tbaa !11
  store double %2806, ptr %39, align 8, !tbaa !11
  %2807 = load double, ptr %39, align 8, !tbaa !11
  %2808 = fcmp oge double %2807, 0.000000e+00
  br i1 %2808, label %2809, label %2811

2809:                                             ; preds = %2784
  %2810 = load double, ptr %39, align 8, !tbaa !11
  br label %2814

2811:                                             ; preds = %2784
  %2812 = load double, ptr %39, align 8, !tbaa !11
  %2813 = fneg double %2812
  br label %2814

2814:                                             ; preds = %2811, %2809
  %2815 = phi double [ %2810, %2809 ], [ %2813, %2811 ]
  store double %2815, ptr %41, align 8, !tbaa !11
  %2816 = load ptr, ptr %28, align 8, !tbaa !5
  %2817 = load i64, ptr %44, align 8, !tbaa !9
  %2818 = load i64, ptr %49, align 8, !tbaa !9
  %2819 = add nsw i64 %2817, %2818
  %2820 = getelementptr inbounds double, ptr %2816, i64 %2819
  %2821 = load double, ptr %2820, align 8, !tbaa !11
  store double %2821, ptr %40, align 8, !tbaa !11
  %2822 = load double, ptr %40, align 8, !tbaa !11
  %2823 = fcmp oge double %2822, 0.000000e+00
  br i1 %2823, label %2824, label %2826

2824:                                             ; preds = %2814
  %2825 = load double, ptr %40, align 8, !tbaa !11
  br label %2829

2826:                                             ; preds = %2814
  %2827 = load double, ptr %40, align 8, !tbaa !11
  %2828 = fneg double %2827
  br label %2829

2829:                                             ; preds = %2826, %2824
  %2830 = phi double [ %2825, %2824 ], [ %2828, %2826 ]
  store double %2830, ptr %42, align 8, !tbaa !11
  %2831 = load double, ptr %41, align 8, !tbaa !11
  %2832 = load double, ptr %42, align 8, !tbaa !11
  %2833 = fcmp oge double %2831, %2832
  br i1 %2833, label %2834, label %2836

2834:                                             ; preds = %2829
  %2835 = load double, ptr %41, align 8, !tbaa !11
  br label %2838

2836:                                             ; preds = %2829
  %2837 = load double, ptr %42, align 8, !tbaa !11
  br label %2838

2838:                                             ; preds = %2836, %2834
  %2839 = phi double [ %2835, %2834 ], [ %2837, %2836 ]
  store double %2839, ptr %41, align 8, !tbaa !11
  %2840 = load double, ptr %41, align 8, !tbaa !11
  %2841 = load double, ptr %67, align 8, !tbaa !11
  %2842 = fcmp oge double %2840, %2841
  br i1 %2842, label %2843, label %2845

2843:                                             ; preds = %2838
  %2844 = load double, ptr %41, align 8, !tbaa !11
  br label %2847

2845:                                             ; preds = %2838
  %2846 = load double, ptr %67, align 8, !tbaa !11
  br label %2847

2847:                                             ; preds = %2845, %2843
  %2848 = phi double [ %2844, %2843 ], [ %2846, %2845 ]
  store double %2848, ptr %67, align 8, !tbaa !11
  %2849 = load double, ptr %76, align 8, !tbaa !11
  %2850 = load double, ptr %67, align 8, !tbaa !11
  %2851 = fdiv double %2849, %2850
  store double %2851, ptr %73, align 8, !tbaa !11
  br label %3179

2852:                                             ; preds = %2646
  %2853 = load ptr, ptr %28, align 8, !tbaa !5
  %2854 = load i64, ptr %44, align 8, !tbaa !9
  %2855 = getelementptr inbounds double, ptr %2853, i64 %2854
  %2856 = load double, ptr %2855, align 8, !tbaa !11
  store double %2856, ptr %39, align 8, !tbaa !11
  %2857 = load ptr, ptr %28, align 8, !tbaa !5
  %2858 = load i64, ptr %44, align 8, !tbaa !9
  %2859 = add nsw i64 %2858, 1
  %2860 = getelementptr inbounds double, ptr %2857, i64 %2859
  %2861 = load double, ptr %2860, align 8, !tbaa !11
  store double %2861, ptr %40, align 8, !tbaa !11
  %2862 = load double, ptr %39, align 8, !tbaa !11
  %2863 = load double, ptr %40, align 8, !tbaa !11
  %2864 = fcmp oge double %2862, %2863
  br i1 %2864, label %2865, label %2867

2865:                                             ; preds = %2852
  %2866 = load double, ptr %39, align 8, !tbaa !11
  br label %2869

2867:                                             ; preds = %2852
  %2868 = load double, ptr %40, align 8, !tbaa !11
  br label %2869

2869:                                             ; preds = %2867, %2865
  %2870 = phi double [ %2866, %2865 ], [ %2868, %2867 ]
  store double %2870, ptr %58, align 8, !tbaa !11
  %2871 = load double, ptr %58, align 8, !tbaa !11
  %2872 = load double, ptr %73, align 8, !tbaa !11
  %2873 = fcmp ogt double %2871, %2872
  br i1 %2873, label %2874, label %2901

2874:                                             ; preds = %2869
  %2875 = load double, ptr %67, align 8, !tbaa !11
  %2876 = fdiv double 1.000000e+00, %2875
  store double %2876, ptr %56, align 8, !tbaa !11
  %2877 = load ptr, ptr %19, align 8, !tbaa !5
  %2878 = load i64, ptr %2877, align 8, !tbaa !9
  %2879 = load i64, ptr %51, align 8, !tbaa !9
  %2880 = sub nsw i64 %2878, %2879
  %2881 = add nsw i64 %2880, 1
  store i64 %2881, ptr %38, align 8, !tbaa !9
  %2882 = load ptr, ptr %28, align 8, !tbaa !5
  %2883 = load i64, ptr %51, align 8, !tbaa !9
  %2884 = load ptr, ptr %19, align 8, !tbaa !5
  %2885 = load i64, ptr %2884, align 8, !tbaa !9
  %2886 = add nsw i64 %2883, %2885
  %2887 = getelementptr inbounds double, ptr %2882, i64 %2886
  %2888 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %56, ptr noundef %2887, ptr noundef @c__1)
  %2889 = load ptr, ptr %19, align 8, !tbaa !5
  %2890 = load i64, ptr %2889, align 8, !tbaa !9
  %2891 = load i64, ptr %51, align 8, !tbaa !9
  %2892 = sub nsw i64 %2890, %2891
  %2893 = add nsw i64 %2892, 1
  store i64 %2893, ptr %38, align 8, !tbaa !9
  %2894 = load ptr, ptr %28, align 8, !tbaa !5
  %2895 = load i64, ptr %51, align 8, !tbaa !9
  %2896 = load i64, ptr %49, align 8, !tbaa !9
  %2897 = add nsw i64 %2895, %2896
  %2898 = getelementptr inbounds double, ptr %2894, i64 %2897
  %2899 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %56, ptr noundef %2898, ptr noundef @c__1)
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %2900 = load double, ptr %76, align 8, !tbaa !11
  store double %2900, ptr %73, align 8, !tbaa !11
  br label %2901

2901:                                             ; preds = %2874, %2869
  %2902 = load i64, ptr %44, align 8, !tbaa !9
  %2903 = load i64, ptr %51, align 8, !tbaa !9
  %2904 = sub nsw i64 %2902, %2903
  %2905 = sub nsw i64 %2904, 2
  store i64 %2905, ptr %38, align 8, !tbaa !9
  %2906 = load ptr, ptr %20, align 8, !tbaa !5
  %2907 = load i64, ptr %51, align 8, !tbaa !9
  %2908 = add nsw i64 %2907, 2
  %2909 = load i64, ptr %44, align 8, !tbaa !9
  %2910 = load i64, ptr %30, align 8, !tbaa !9
  %2911 = mul nsw i64 %2909, %2910
  %2912 = add nsw i64 %2908, %2911
  %2913 = getelementptr inbounds double, ptr %2906, i64 %2912
  %2914 = load ptr, ptr %28, align 8, !tbaa !5
  %2915 = load i64, ptr %51, align 8, !tbaa !9
  %2916 = add nsw i64 %2915, 2
  %2917 = load ptr, ptr %19, align 8, !tbaa !5
  %2918 = load i64, ptr %2917, align 8, !tbaa !9
  %2919 = add nsw i64 %2916, %2918
  %2920 = getelementptr inbounds double, ptr %2914, i64 %2919
  %2921 = call double @f2c_ddot(ptr noundef %38, ptr noundef %2913, ptr noundef @c__1, ptr noundef %2920, ptr noundef @c__1)
  %2922 = load ptr, ptr %28, align 8, !tbaa !5
  %2923 = load i64, ptr %44, align 8, !tbaa !9
  %2924 = load ptr, ptr %19, align 8, !tbaa !5
  %2925 = load i64, ptr %2924, align 8, !tbaa !9
  %2926 = add nsw i64 %2923, %2925
  %2927 = getelementptr inbounds double, ptr %2922, i64 %2926
  %2928 = load double, ptr %2927, align 8, !tbaa !11
  %2929 = fsub double %2928, %2921
  store double %2929, ptr %2927, align 8, !tbaa !11
  %2930 = load i64, ptr %44, align 8, !tbaa !9
  %2931 = load i64, ptr %51, align 8, !tbaa !9
  %2932 = sub nsw i64 %2930, %2931
  %2933 = sub nsw i64 %2932, 2
  store i64 %2933, ptr %38, align 8, !tbaa !9
  %2934 = load ptr, ptr %20, align 8, !tbaa !5
  %2935 = load i64, ptr %51, align 8, !tbaa !9
  %2936 = add nsw i64 %2935, 2
  %2937 = load i64, ptr %44, align 8, !tbaa !9
  %2938 = load i64, ptr %30, align 8, !tbaa !9
  %2939 = mul nsw i64 %2937, %2938
  %2940 = add nsw i64 %2936, %2939
  %2941 = getelementptr inbounds double, ptr %2934, i64 %2940
  %2942 = load ptr, ptr %28, align 8, !tbaa !5
  %2943 = load i64, ptr %51, align 8, !tbaa !9
  %2944 = add nsw i64 %2943, 2
  %2945 = load i64, ptr %49, align 8, !tbaa !9
  %2946 = add nsw i64 %2944, %2945
  %2947 = getelementptr inbounds double, ptr %2942, i64 %2946
  %2948 = call double @f2c_ddot(ptr noundef %38, ptr noundef %2941, ptr noundef @c__1, ptr noundef %2947, ptr noundef @c__1)
  %2949 = load ptr, ptr %28, align 8, !tbaa !5
  %2950 = load i64, ptr %44, align 8, !tbaa !9
  %2951 = load i64, ptr %49, align 8, !tbaa !9
  %2952 = add nsw i64 %2950, %2951
  %2953 = getelementptr inbounds double, ptr %2949, i64 %2952
  %2954 = load double, ptr %2953, align 8, !tbaa !11
  %2955 = fsub double %2954, %2948
  store double %2955, ptr %2953, align 8, !tbaa !11
  %2956 = load i64, ptr %44, align 8, !tbaa !9
  %2957 = load i64, ptr %51, align 8, !tbaa !9
  %2958 = sub nsw i64 %2956, %2957
  %2959 = sub nsw i64 %2958, 2
  store i64 %2959, ptr %38, align 8, !tbaa !9
  %2960 = load ptr, ptr %20, align 8, !tbaa !5
  %2961 = load i64, ptr %51, align 8, !tbaa !9
  %2962 = add nsw i64 %2961, 2
  %2963 = load i64, ptr %44, align 8, !tbaa !9
  %2964 = add nsw i64 %2963, 1
  %2965 = load i64, ptr %30, align 8, !tbaa !9
  %2966 = mul nsw i64 %2964, %2965
  %2967 = add nsw i64 %2962, %2966
  %2968 = getelementptr inbounds double, ptr %2960, i64 %2967
  %2969 = load ptr, ptr %28, align 8, !tbaa !5
  %2970 = load i64, ptr %51, align 8, !tbaa !9
  %2971 = add nsw i64 %2970, 2
  %2972 = load ptr, ptr %19, align 8, !tbaa !5
  %2973 = load i64, ptr %2972, align 8, !tbaa !9
  %2974 = add nsw i64 %2971, %2973
  %2975 = getelementptr inbounds double, ptr %2969, i64 %2974
  %2976 = call double @f2c_ddot(ptr noundef %38, ptr noundef %2968, ptr noundef @c__1, ptr noundef %2975, ptr noundef @c__1)
  %2977 = load ptr, ptr %28, align 8, !tbaa !5
  %2978 = load i64, ptr %44, align 8, !tbaa !9
  %2979 = add nsw i64 %2978, 1
  %2980 = load ptr, ptr %19, align 8, !tbaa !5
  %2981 = load i64, ptr %2980, align 8, !tbaa !9
  %2982 = add nsw i64 %2979, %2981
  %2983 = getelementptr inbounds double, ptr %2977, i64 %2982
  %2984 = load double, ptr %2983, align 8, !tbaa !11
  %2985 = fsub double %2984, %2976
  store double %2985, ptr %2983, align 8, !tbaa !11
  %2986 = load i64, ptr %44, align 8, !tbaa !9
  %2987 = load i64, ptr %51, align 8, !tbaa !9
  %2988 = sub nsw i64 %2986, %2987
  %2989 = sub nsw i64 %2988, 2
  store i64 %2989, ptr %38, align 8, !tbaa !9
  %2990 = load ptr, ptr %20, align 8, !tbaa !5
  %2991 = load i64, ptr %51, align 8, !tbaa !9
  %2992 = add nsw i64 %2991, 2
  %2993 = load i64, ptr %44, align 8, !tbaa !9
  %2994 = add nsw i64 %2993, 1
  %2995 = load i64, ptr %30, align 8, !tbaa !9
  %2996 = mul nsw i64 %2994, %2995
  %2997 = add nsw i64 %2992, %2996
  %2998 = getelementptr inbounds double, ptr %2990, i64 %2997
  %2999 = load ptr, ptr %28, align 8, !tbaa !5
  %3000 = load i64, ptr %51, align 8, !tbaa !9
  %3001 = add nsw i64 %3000, 2
  %3002 = load i64, ptr %49, align 8, !tbaa !9
  %3003 = add nsw i64 %3001, %3002
  %3004 = getelementptr inbounds double, ptr %2999, i64 %3003
  %3005 = call double @f2c_ddot(ptr noundef %38, ptr noundef %2998, ptr noundef @c__1, ptr noundef %3004, ptr noundef @c__1)
  %3006 = load ptr, ptr %28, align 8, !tbaa !5
  %3007 = load i64, ptr %44, align 8, !tbaa !9
  %3008 = add nsw i64 %3007, 1
  %3009 = load i64, ptr %49, align 8, !tbaa !9
  %3010 = add nsw i64 %3008, %3009
  %3011 = getelementptr inbounds double, ptr %3006, i64 %3010
  %3012 = load double, ptr %3011, align 8, !tbaa !11
  %3013 = fsub double %3012, %3005
  store double %3013, ptr %3011, align 8, !tbaa !11
  %3014 = load double, ptr %54, align 8, !tbaa !11
  %3015 = fneg double %3014
  store double %3015, ptr %39, align 8, !tbaa !11
  %3016 = load ptr, ptr %20, align 8, !tbaa !5
  %3017 = load i64, ptr %44, align 8, !tbaa !9
  %3018 = load i64, ptr %44, align 8, !tbaa !9
  %3019 = load i64, ptr %30, align 8, !tbaa !9
  %3020 = mul nsw i64 %3018, %3019
  %3021 = add nsw i64 %3017, %3020
  %3022 = getelementptr inbounds double, ptr %3016, i64 %3021
  %3023 = load ptr, ptr %21, align 8, !tbaa !5
  %3024 = load ptr, ptr %28, align 8, !tbaa !5
  %3025 = load i64, ptr %44, align 8, !tbaa !9
  %3026 = load ptr, ptr %19, align 8, !tbaa !5
  %3027 = load i64, ptr %3026, align 8, !tbaa !9
  %3028 = add nsw i64 %3025, %3027
  %3029 = getelementptr inbounds double, ptr %3024, i64 %3028
  %3030 = load ptr, ptr %19, align 8, !tbaa !5
  %3031 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %3032 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %65, ptr noundef @c_b22, ptr noundef %3022, ptr noundef %3023, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %3029, ptr noundef %3030, ptr noundef %55, ptr noundef %39, ptr noundef %3031, ptr noundef @c__2, ptr noundef %69, ptr noundef %75, ptr noundef %62)
  %3033 = load double, ptr %69, align 8, !tbaa !11
  %3034 = fcmp une double %3033, 1.000000e+00
  br i1 %3034, label %3035, label %3059

3035:                                             ; preds = %2901
  %3036 = load ptr, ptr %19, align 8, !tbaa !5
  %3037 = load i64, ptr %3036, align 8, !tbaa !9
  %3038 = load i64, ptr %51, align 8, !tbaa !9
  %3039 = sub nsw i64 %3037, %3038
  %3040 = add nsw i64 %3039, 1
  store i64 %3040, ptr %38, align 8, !tbaa !9
  %3041 = load ptr, ptr %28, align 8, !tbaa !5
  %3042 = load i64, ptr %51, align 8, !tbaa !9
  %3043 = load ptr, ptr %19, align 8, !tbaa !5
  %3044 = load i64, ptr %3043, align 8, !tbaa !9
  %3045 = add nsw i64 %3042, %3044
  %3046 = getelementptr inbounds double, ptr %3041, i64 %3045
  %3047 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %69, ptr noundef %3046, ptr noundef @c__1)
  %3048 = load ptr, ptr %19, align 8, !tbaa !5
  %3049 = load i64, ptr %3048, align 8, !tbaa !9
  %3050 = load i64, ptr %51, align 8, !tbaa !9
  %3051 = sub nsw i64 %3049, %3050
  %3052 = add nsw i64 %3051, 1
  store i64 %3052, ptr %38, align 8, !tbaa !9
  %3053 = load ptr, ptr %28, align 8, !tbaa !5
  %3054 = load i64, ptr %51, align 8, !tbaa !9
  %3055 = load i64, ptr %49, align 8, !tbaa !9
  %3056 = add nsw i64 %3054, %3055
  %3057 = getelementptr inbounds double, ptr %3053, i64 %3056
  %3058 = call i32 @f2c_dscal(ptr noundef %38, ptr noundef %69, ptr noundef %3057, ptr noundef @c__1)
  br label %3059

3059:                                             ; preds = %3035, %2901
  %3060 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %3061 = load double, ptr %3060, align 16, !tbaa !11
  %3062 = load ptr, ptr %28, align 8, !tbaa !5
  %3063 = load i64, ptr %44, align 8, !tbaa !9
  %3064 = load ptr, ptr %19, align 8, !tbaa !5
  %3065 = load i64, ptr %3064, align 8, !tbaa !9
  %3066 = add nsw i64 %3063, %3065
  %3067 = getelementptr inbounds double, ptr %3062, i64 %3066
  store double %3061, ptr %3067, align 8, !tbaa !11
  %3068 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %3069 = load double, ptr %3068, align 16, !tbaa !11
  %3070 = load ptr, ptr %28, align 8, !tbaa !5
  %3071 = load i64, ptr %44, align 8, !tbaa !9
  %3072 = load i64, ptr %49, align 8, !tbaa !9
  %3073 = add nsw i64 %3071, %3072
  %3074 = getelementptr inbounds double, ptr %3070, i64 %3073
  store double %3069, ptr %3074, align 8, !tbaa !11
  %3075 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %3076 = load double, ptr %3075, align 8, !tbaa !11
  %3077 = load ptr, ptr %28, align 8, !tbaa !5
  %3078 = load i64, ptr %44, align 8, !tbaa !9
  %3079 = add nsw i64 %3078, 1
  %3080 = load ptr, ptr %19, align 8, !tbaa !5
  %3081 = load i64, ptr %3080, align 8, !tbaa !9
  %3082 = add nsw i64 %3079, %3081
  %3083 = getelementptr inbounds double, ptr %3077, i64 %3082
  store double %3076, ptr %3083, align 8, !tbaa !11
  %3084 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %3085 = load double, ptr %3084, align 8, !tbaa !11
  %3086 = load ptr, ptr %28, align 8, !tbaa !5
  %3087 = load i64, ptr %44, align 8, !tbaa !9
  %3088 = add nsw i64 %3087, 1
  %3089 = load i64, ptr %49, align 8, !tbaa !9
  %3090 = add nsw i64 %3088, %3089
  %3091 = getelementptr inbounds double, ptr %3086, i64 %3090
  store double %3085, ptr %3091, align 8, !tbaa !11
  %3092 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %3093 = load double, ptr %3092, align 16, !tbaa !11
  %3094 = fcmp oge double %3093, 0.000000e+00
  br i1 %3094, label %3095, label %3098

3095:                                             ; preds = %3059
  %3096 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %3097 = load double, ptr %3096, align 16, !tbaa !11
  br label %3102

3098:                                             ; preds = %3059
  %3099 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %3100 = load double, ptr %3099, align 16, !tbaa !11
  %3101 = fneg double %3100
  br label %3102

3102:                                             ; preds = %3098, %3095
  %3103 = phi double [ %3097, %3095 ], [ %3101, %3098 ]
  store double %3103, ptr %39, align 8, !tbaa !11
  %3104 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %3105 = load double, ptr %3104, align 16, !tbaa !11
  %3106 = fcmp oge double %3105, 0.000000e+00
  br i1 %3106, label %3107, label %3110

3107:                                             ; preds = %3102
  %3108 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %3109 = load double, ptr %3108, align 16, !tbaa !11
  br label %3114

3110:                                             ; preds = %3102
  %3111 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %3112 = load double, ptr %3111, align 16, !tbaa !11
  %3113 = fneg double %3112
  br label %3114

3114:                                             ; preds = %3110, %3107
  %3115 = phi double [ %3109, %3107 ], [ %3113, %3110 ]
  store double %3115, ptr %40, align 8, !tbaa !11
  %3116 = load double, ptr %39, align 8, !tbaa !11
  %3117 = load double, ptr %40, align 8, !tbaa !11
  %3118 = fcmp oge double %3116, %3117
  br i1 %3118, label %3119, label %3121

3119:                                             ; preds = %3114
  %3120 = load double, ptr %39, align 8, !tbaa !11
  br label %3123

3121:                                             ; preds = %3114
  %3122 = load double, ptr %40, align 8, !tbaa !11
  br label %3123

3123:                                             ; preds = %3121, %3119
  %3124 = phi double [ %3120, %3119 ], [ %3122, %3121 ]
  store double %3124, ptr %39, align 8, !tbaa !11
  %3125 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %3126 = load double, ptr %3125, align 8, !tbaa !11
  %3127 = fcmp oge double %3126, 0.000000e+00
  br i1 %3127, label %3128, label %3131

3128:                                             ; preds = %3123
  %3129 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %3130 = load double, ptr %3129, align 8, !tbaa !11
  br label %3135

3131:                                             ; preds = %3123
  %3132 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %3133 = load double, ptr %3132, align 8, !tbaa !11
  %3134 = fneg double %3133
  br label %3135

3135:                                             ; preds = %3131, %3128
  %3136 = phi double [ %3130, %3128 ], [ %3134, %3131 ]
  store double %3136, ptr %40, align 8, !tbaa !11
  %3137 = load double, ptr %39, align 8, !tbaa !11
  %3138 = load double, ptr %40, align 8, !tbaa !11
  %3139 = fcmp oge double %3137, %3138
  br i1 %3139, label %3140, label %3142

3140:                                             ; preds = %3135
  %3141 = load double, ptr %39, align 8, !tbaa !11
  br label %3144

3142:                                             ; preds = %3135
  %3143 = load double, ptr %40, align 8, !tbaa !11
  br label %3144

3144:                                             ; preds = %3142, %3140
  %3145 = phi double [ %3141, %3140 ], [ %3143, %3142 ]
  store double %3145, ptr %39, align 8, !tbaa !11
  %3146 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %3147 = load double, ptr %3146, align 8, !tbaa !11
  %3148 = fcmp oge double %3147, 0.000000e+00
  br i1 %3148, label %3149, label %3152

3149:                                             ; preds = %3144
  %3150 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %3151 = load double, ptr %3150, align 8, !tbaa !11
  br label %3156

3152:                                             ; preds = %3144
  %3153 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %3154 = load double, ptr %3153, align 8, !tbaa !11
  %3155 = fneg double %3154
  br label %3156

3156:                                             ; preds = %3152, %3149
  %3157 = phi double [ %3151, %3149 ], [ %3155, %3152 ]
  store double %3157, ptr %40, align 8, !tbaa !11
  %3158 = load double, ptr %39, align 8, !tbaa !11
  %3159 = load double, ptr %40, align 8, !tbaa !11
  %3160 = fcmp oge double %3158, %3159
  br i1 %3160, label %3161, label %3163

3161:                                             ; preds = %3156
  %3162 = load double, ptr %39, align 8, !tbaa !11
  br label %3165

3163:                                             ; preds = %3156
  %3164 = load double, ptr %40, align 8, !tbaa !11
  br label %3165

3165:                                             ; preds = %3163, %3161
  %3166 = phi double [ %3162, %3161 ], [ %3164, %3163 ]
  store double %3166, ptr %39, align 8, !tbaa !11
  %3167 = load double, ptr %39, align 8, !tbaa !11
  %3168 = load double, ptr %67, align 8, !tbaa !11
  %3169 = fcmp oge double %3167, %3168
  br i1 %3169, label %3170, label %3172

3170:                                             ; preds = %3165
  %3171 = load double, ptr %39, align 8, !tbaa !11
  br label %3174

3172:                                             ; preds = %3165
  %3173 = load double, ptr %67, align 8, !tbaa !11
  br label %3174

3174:                                             ; preds = %3172, %3170
  %3175 = phi double [ %3171, %3170 ], [ %3173, %3172 ]
  store double %3175, ptr %67, align 8, !tbaa !11
  %3176 = load double, ptr %76, align 8, !tbaa !11
  %3177 = load double, ptr %67, align 8, !tbaa !11
  %3178 = fdiv double %3176, %3177
  store double %3178, ptr %73, align 8, !tbaa !11
  br label %3179

3179:                                             ; preds = %3174, %2847
  br label %3180

3180:                                             ; preds = %3179, %2619
  br label %3181

3181:                                             ; preds = %3180
  %3182 = load i64, ptr %44, align 8, !tbaa !9
  %3183 = add nsw i64 %3182, 1
  store i64 %3183, ptr %44, align 8, !tbaa !9
  br label %2611, !llvm.loop !30

3184:                                             ; preds = %2611
  %3185 = load i64, ptr %66, align 8, !tbaa !9
  %3186 = icmp ne i64 %3185, 0
  br i1 %3186, label %3339, label %3187

3187:                                             ; preds = %3184
  %3188 = load ptr, ptr %19, align 8, !tbaa !5
  %3189 = load i64, ptr %3188, align 8, !tbaa !9
  %3190 = load i64, ptr %51, align 8, !tbaa !9
  %3191 = sub nsw i64 %3189, %3190
  %3192 = add nsw i64 %3191, 1
  store i64 %3192, ptr %37, align 8, !tbaa !9
  %3193 = load ptr, ptr %28, align 8, !tbaa !5
  %3194 = load i64, ptr %51, align 8, !tbaa !9
  %3195 = load ptr, ptr %19, align 8, !tbaa !5
  %3196 = load i64, ptr %3195, align 8, !tbaa !9
  %3197 = add nsw i64 %3194, %3196
  %3198 = getelementptr inbounds double, ptr %3193, i64 %3197
  %3199 = load ptr, ptr %22, align 8, !tbaa !5
  %3200 = load i64, ptr %51, align 8, !tbaa !9
  %3201 = load i64, ptr %53, align 8, !tbaa !9
  %3202 = load i64, ptr %32, align 8, !tbaa !9
  %3203 = mul nsw i64 %3201, %3202
  %3204 = add nsw i64 %3200, %3203
  %3205 = getelementptr inbounds double, ptr %3199, i64 %3204
  %3206 = call i32 @f2c_dcopy(ptr noundef %37, ptr noundef %3198, ptr noundef @c__1, ptr noundef %3205, ptr noundef @c__1)
  %3207 = load ptr, ptr %19, align 8, !tbaa !5
  %3208 = load i64, ptr %3207, align 8, !tbaa !9
  %3209 = load i64, ptr %51, align 8, !tbaa !9
  %3210 = sub nsw i64 %3208, %3209
  %3211 = add nsw i64 %3210, 1
  store i64 %3211, ptr %37, align 8, !tbaa !9
  %3212 = load ptr, ptr %28, align 8, !tbaa !5
  %3213 = load i64, ptr %51, align 8, !tbaa !9
  %3214 = load i64, ptr %49, align 8, !tbaa !9
  %3215 = add nsw i64 %3213, %3214
  %3216 = getelementptr inbounds double, ptr %3212, i64 %3215
  %3217 = load ptr, ptr %22, align 8, !tbaa !5
  %3218 = load i64, ptr %51, align 8, !tbaa !9
  %3219 = load i64, ptr %53, align 8, !tbaa !9
  %3220 = add nsw i64 %3219, 1
  %3221 = load i64, ptr %32, align 8, !tbaa !9
  %3222 = mul nsw i64 %3220, %3221
  %3223 = add nsw i64 %3218, %3222
  %3224 = getelementptr inbounds double, ptr %3217, i64 %3223
  %3225 = call i32 @f2c_dcopy(ptr noundef %37, ptr noundef %3216, ptr noundef @c__1, ptr noundef %3224, ptr noundef @c__1)
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %3226 = load ptr, ptr %19, align 8, !tbaa !5
  %3227 = load i64, ptr %3226, align 8, !tbaa !9
  store i64 %3227, ptr %37, align 8, !tbaa !9
  %3228 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %3228, ptr %45, align 8, !tbaa !9
  br label %3229

3229:                                             ; preds = %3280, %3187
  %3230 = load i64, ptr %45, align 8, !tbaa !9
  %3231 = load i64, ptr %37, align 8, !tbaa !9
  %3232 = icmp sle i64 %3230, %3231
  br i1 %3232, label %3233, label %3283

3233:                                             ; preds = %3229
  %3234 = load double, ptr %59, align 8, !tbaa !11
  store double %3234, ptr %41, align 8, !tbaa !11
  %3235 = load ptr, ptr %22, align 8, !tbaa !5
  %3236 = load i64, ptr %45, align 8, !tbaa !9
  %3237 = load i64, ptr %53, align 8, !tbaa !9
  %3238 = load i64, ptr %32, align 8, !tbaa !9
  %3239 = mul nsw i64 %3237, %3238
  %3240 = add nsw i64 %3236, %3239
  %3241 = getelementptr inbounds double, ptr %3235, i64 %3240
  %3242 = load double, ptr %3241, align 8, !tbaa !11
  store double %3242, ptr %39, align 8, !tbaa !11
  %3243 = load double, ptr %39, align 8, !tbaa !11
  %3244 = fcmp oge double %3243, 0.000000e+00
  br i1 %3244, label %3245, label %3247

3245:                                             ; preds = %3233
  %3246 = load double, ptr %39, align 8, !tbaa !11
  br label %3250

3247:                                             ; preds = %3233
  %3248 = load double, ptr %39, align 8, !tbaa !11
  %3249 = fneg double %3248
  br label %3250

3250:                                             ; preds = %3247, %3245
  %3251 = phi double [ %3246, %3245 ], [ %3249, %3247 ]
  %3252 = load ptr, ptr %22, align 8, !tbaa !5
  %3253 = load i64, ptr %45, align 8, !tbaa !9
  %3254 = load i64, ptr %53, align 8, !tbaa !9
  %3255 = add nsw i64 %3254, 1
  %3256 = load i64, ptr %32, align 8, !tbaa !9
  %3257 = mul nsw i64 %3255, %3256
  %3258 = add nsw i64 %3253, %3257
  %3259 = getelementptr inbounds double, ptr %3252, i64 %3258
  %3260 = load double, ptr %3259, align 8, !tbaa !11
  store double %3260, ptr %40, align 8, !tbaa !11
  %3261 = load double, ptr %40, align 8, !tbaa !11
  %3262 = fcmp oge double %3261, 0.000000e+00
  br i1 %3262, label %3263, label %3265

3263:                                             ; preds = %3250
  %3264 = load double, ptr %40, align 8, !tbaa !11
  br label %3268

3265:                                             ; preds = %3250
  %3266 = load double, ptr %40, align 8, !tbaa !11
  %3267 = fneg double %3266
  br label %3268

3268:                                             ; preds = %3265, %3263
  %3269 = phi double [ %3264, %3263 ], [ %3267, %3265 ]
  %3270 = fadd double %3251, %3269
  store double %3270, ptr %42, align 8, !tbaa !11
  %3271 = load double, ptr %41, align 8, !tbaa !11
  %3272 = load double, ptr %42, align 8, !tbaa !11
  %3273 = fcmp oge double %3271, %3272
  br i1 %3273, label %3274, label %3276

3274:                                             ; preds = %3268
  %3275 = load double, ptr %41, align 8, !tbaa !11
  br label %3278

3276:                                             ; preds = %3268
  %3277 = load double, ptr %42, align 8, !tbaa !11
  br label %3278

3278:                                             ; preds = %3276, %3274
  %3279 = phi double [ %3275, %3274 ], [ %3277, %3276 ]
  store double %3279, ptr %59, align 8, !tbaa !11
  br label %3280

3280:                                             ; preds = %3278
  %3281 = load i64, ptr %45, align 8, !tbaa !9
  %3282 = add nsw i64 %3281, 1
  store i64 %3282, ptr %45, align 8, !tbaa !9
  br label %3229, !llvm.loop !31

3283:                                             ; preds = %3229
  %3284 = load double, ptr %59, align 8, !tbaa !11
  %3285 = fdiv double 1.000000e+00, %3284
  store double %3285, ptr %70, align 8, !tbaa !11
  %3286 = load ptr, ptr %19, align 8, !tbaa !5
  %3287 = load i64, ptr %3286, align 8, !tbaa !9
  %3288 = load i64, ptr %51, align 8, !tbaa !9
  %3289 = sub nsw i64 %3287, %3288
  %3290 = add nsw i64 %3289, 1
  store i64 %3290, ptr %37, align 8, !tbaa !9
  %3291 = load ptr, ptr %22, align 8, !tbaa !5
  %3292 = load i64, ptr %51, align 8, !tbaa !9
  %3293 = load i64, ptr %53, align 8, !tbaa !9
  %3294 = load i64, ptr %32, align 8, !tbaa !9
  %3295 = mul nsw i64 %3293, %3294
  %3296 = add nsw i64 %3292, %3295
  %3297 = getelementptr inbounds double, ptr %3291, i64 %3296
  %3298 = call i32 @f2c_dscal(ptr noundef %37, ptr noundef %70, ptr noundef %3297, ptr noundef @c__1)
  %3299 = load ptr, ptr %19, align 8, !tbaa !5
  %3300 = load i64, ptr %3299, align 8, !tbaa !9
  %3301 = load i64, ptr %51, align 8, !tbaa !9
  %3302 = sub nsw i64 %3300, %3301
  %3303 = add nsw i64 %3302, 1
  store i64 %3303, ptr %37, align 8, !tbaa !9
  %3304 = load ptr, ptr %22, align 8, !tbaa !5
  %3305 = load i64, ptr %51, align 8, !tbaa !9
  %3306 = load i64, ptr %53, align 8, !tbaa !9
  %3307 = add nsw i64 %3306, 1
  %3308 = load i64, ptr %32, align 8, !tbaa !9
  %3309 = mul nsw i64 %3307, %3308
  %3310 = add nsw i64 %3305, %3309
  %3311 = getelementptr inbounds double, ptr %3304, i64 %3310
  %3312 = call i32 @f2c_dscal(ptr noundef %37, ptr noundef %70, ptr noundef %3311, ptr noundef @c__1)
  %3313 = load i64, ptr %51, align 8, !tbaa !9
  %3314 = sub nsw i64 %3313, 1
  store i64 %3314, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %3315

3315:                                             ; preds = %3335, %3283
  %3316 = load i64, ptr %45, align 8, !tbaa !9
  %3317 = load i64, ptr %37, align 8, !tbaa !9
  %3318 = icmp sle i64 %3316, %3317
  br i1 %3318, label %3319, label %3338

3319:                                             ; preds = %3315
  %3320 = load ptr, ptr %22, align 8, !tbaa !5
  %3321 = load i64, ptr %45, align 8, !tbaa !9
  %3322 = load i64, ptr %53, align 8, !tbaa !9
  %3323 = load i64, ptr %32, align 8, !tbaa !9
  %3324 = mul nsw i64 %3322, %3323
  %3325 = add nsw i64 %3321, %3324
  %3326 = getelementptr inbounds double, ptr %3320, i64 %3325
  store double 0.000000e+00, ptr %3326, align 8, !tbaa !11
  %3327 = load ptr, ptr %22, align 8, !tbaa !5
  %3328 = load i64, ptr %45, align 8, !tbaa !9
  %3329 = load i64, ptr %53, align 8, !tbaa !9
  %3330 = add nsw i64 %3329, 1
  %3331 = load i64, ptr %32, align 8, !tbaa !9
  %3332 = mul nsw i64 %3330, %3331
  %3333 = add nsw i64 %3328, %3332
  %3334 = getelementptr inbounds double, ptr %3327, i64 %3333
  store double 0.000000e+00, ptr %3334, align 8, !tbaa !11
  br label %3335

3335:                                             ; preds = %3319
  %3336 = load i64, ptr %45, align 8, !tbaa !9
  %3337 = add nsw i64 %3336, 1
  store i64 %3337, ptr %45, align 8, !tbaa !9
  br label %3315, !llvm.loop !32

3338:                                             ; preds = %3315
  br label %3521

3339:                                             ; preds = %3184
  %3340 = load i64, ptr %51, align 8, !tbaa !9
  %3341 = load ptr, ptr %19, align 8, !tbaa !5
  %3342 = load i64, ptr %3341, align 8, !tbaa !9
  %3343 = sub nsw i64 %3342, 1
  %3344 = icmp slt i64 %3340, %3343
  br i1 %3344, label %3345, label %3414

3345:                                             ; preds = %3339
  %3346 = load ptr, ptr %19, align 8, !tbaa !5
  %3347 = load i64, ptr %3346, align 8, !tbaa !9
  %3348 = load i64, ptr %51, align 8, !tbaa !9
  %3349 = sub nsw i64 %3347, %3348
  %3350 = sub nsw i64 %3349, 1
  store i64 %3350, ptr %37, align 8, !tbaa !9
  %3351 = load ptr, ptr %19, align 8, !tbaa !5
  %3352 = load ptr, ptr %22, align 8, !tbaa !5
  %3353 = load i64, ptr %51, align 8, !tbaa !9
  %3354 = add nsw i64 %3353, 2
  %3355 = load i64, ptr %32, align 8, !tbaa !9
  %3356 = mul nsw i64 %3354, %3355
  %3357 = add nsw i64 %3356, 1
  %3358 = getelementptr inbounds double, ptr %3352, i64 %3357
  %3359 = load ptr, ptr %23, align 8, !tbaa !5
  %3360 = load ptr, ptr %28, align 8, !tbaa !5
  %3361 = load i64, ptr %51, align 8, !tbaa !9
  %3362 = add nsw i64 %3361, 2
  %3363 = load ptr, ptr %19, align 8, !tbaa !5
  %3364 = load i64, ptr %3363, align 8, !tbaa !9
  %3365 = add nsw i64 %3362, %3364
  %3366 = getelementptr inbounds double, ptr %3360, i64 %3365
  %3367 = load ptr, ptr %28, align 8, !tbaa !5
  %3368 = load i64, ptr %51, align 8, !tbaa !9
  %3369 = load ptr, ptr %19, align 8, !tbaa !5
  %3370 = load i64, ptr %3369, align 8, !tbaa !9
  %3371 = add nsw i64 %3368, %3370
  %3372 = getelementptr inbounds double, ptr %3367, i64 %3371
  %3373 = load ptr, ptr %22, align 8, !tbaa !5
  %3374 = load i64, ptr %51, align 8, !tbaa !9
  %3375 = load i64, ptr %32, align 8, !tbaa !9
  %3376 = mul nsw i64 %3374, %3375
  %3377 = add nsw i64 %3376, 1
  %3378 = getelementptr inbounds double, ptr %3373, i64 %3377
  %3379 = call i32 @f2c_dgemv(ptr noundef @.str.8, ptr noundef %3351, ptr noundef %37, ptr noundef @c_b22, ptr noundef %3358, ptr noundef %3359, ptr noundef %3366, ptr noundef @c__1, ptr noundef %3372, ptr noundef %3378, ptr noundef @c__1)
  %3380 = load ptr, ptr %19, align 8, !tbaa !5
  %3381 = load i64, ptr %3380, align 8, !tbaa !9
  %3382 = load i64, ptr %51, align 8, !tbaa !9
  %3383 = sub nsw i64 %3381, %3382
  %3384 = sub nsw i64 %3383, 1
  store i64 %3384, ptr %37, align 8, !tbaa !9
  %3385 = load ptr, ptr %19, align 8, !tbaa !5
  %3386 = load ptr, ptr %22, align 8, !tbaa !5
  %3387 = load i64, ptr %51, align 8, !tbaa !9
  %3388 = add nsw i64 %3387, 2
  %3389 = load i64, ptr %32, align 8, !tbaa !9
  %3390 = mul nsw i64 %3388, %3389
  %3391 = add nsw i64 %3390, 1
  %3392 = getelementptr inbounds double, ptr %3386, i64 %3391
  %3393 = load ptr, ptr %23, align 8, !tbaa !5
  %3394 = load ptr, ptr %28, align 8, !tbaa !5
  %3395 = load i64, ptr %51, align 8, !tbaa !9
  %3396 = add nsw i64 %3395, 2
  %3397 = load i64, ptr %49, align 8, !tbaa !9
  %3398 = add nsw i64 %3396, %3397
  %3399 = getelementptr inbounds double, ptr %3394, i64 %3398
  %3400 = load ptr, ptr %28, align 8, !tbaa !5
  %3401 = load i64, ptr %51, align 8, !tbaa !9
  %3402 = add nsw i64 %3401, 1
  %3403 = load i64, ptr %49, align 8, !tbaa !9
  %3404 = add nsw i64 %3402, %3403
  %3405 = getelementptr inbounds double, ptr %3400, i64 %3404
  %3406 = load ptr, ptr %22, align 8, !tbaa !5
  %3407 = load i64, ptr %51, align 8, !tbaa !9
  %3408 = add nsw i64 %3407, 1
  %3409 = load i64, ptr %32, align 8, !tbaa !9
  %3410 = mul nsw i64 %3408, %3409
  %3411 = add nsw i64 %3410, 1
  %3412 = getelementptr inbounds double, ptr %3406, i64 %3411
  %3413 = call i32 @f2c_dgemv(ptr noundef @.str.8, ptr noundef %3385, ptr noundef %37, ptr noundef @c_b22, ptr noundef %3392, ptr noundef %3393, ptr noundef %3399, ptr noundef @c__1, ptr noundef %3405, ptr noundef %3412, ptr noundef @c__1)
  br label %3444

3414:                                             ; preds = %3339
  %3415 = load ptr, ptr %19, align 8, !tbaa !5
  %3416 = load ptr, ptr %28, align 8, !tbaa !5
  %3417 = load i64, ptr %51, align 8, !tbaa !9
  %3418 = load ptr, ptr %19, align 8, !tbaa !5
  %3419 = load i64, ptr %3418, align 8, !tbaa !9
  %3420 = add nsw i64 %3417, %3419
  %3421 = getelementptr inbounds double, ptr %3416, i64 %3420
  %3422 = load ptr, ptr %22, align 8, !tbaa !5
  %3423 = load i64, ptr %51, align 8, !tbaa !9
  %3424 = load i64, ptr %32, align 8, !tbaa !9
  %3425 = mul nsw i64 %3423, %3424
  %3426 = add nsw i64 %3425, 1
  %3427 = getelementptr inbounds double, ptr %3422, i64 %3426
  %3428 = call i32 @f2c_dscal(ptr noundef %3415, ptr noundef %3421, ptr noundef %3427, ptr noundef @c__1)
  %3429 = load ptr, ptr %19, align 8, !tbaa !5
  %3430 = load ptr, ptr %28, align 8, !tbaa !5
  %3431 = load i64, ptr %51, align 8, !tbaa !9
  %3432 = add nsw i64 %3431, 1
  %3433 = load i64, ptr %49, align 8, !tbaa !9
  %3434 = add nsw i64 %3432, %3433
  %3435 = getelementptr inbounds double, ptr %3430, i64 %3434
  %3436 = load ptr, ptr %22, align 8, !tbaa !5
  %3437 = load i64, ptr %51, align 8, !tbaa !9
  %3438 = add nsw i64 %3437, 1
  %3439 = load i64, ptr %32, align 8, !tbaa !9
  %3440 = mul nsw i64 %3438, %3439
  %3441 = add nsw i64 %3440, 1
  %3442 = getelementptr inbounds double, ptr %3436, i64 %3441
  %3443 = call i32 @f2c_dscal(ptr noundef %3429, ptr noundef %3435, ptr noundef %3442, ptr noundef @c__1)
  br label %3444

3444:                                             ; preds = %3414, %3345
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %3445 = load ptr, ptr %19, align 8, !tbaa !5
  %3446 = load i64, ptr %3445, align 8, !tbaa !9
  store i64 %3446, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %3447

3447:                                             ; preds = %3498, %3444
  %3448 = load i64, ptr %45, align 8, !tbaa !9
  %3449 = load i64, ptr %37, align 8, !tbaa !9
  %3450 = icmp sle i64 %3448, %3449
  br i1 %3450, label %3451, label %3501

3451:                                             ; preds = %3447
  %3452 = load double, ptr %59, align 8, !tbaa !11
  store double %3452, ptr %41, align 8, !tbaa !11
  %3453 = load ptr, ptr %22, align 8, !tbaa !5
  %3454 = load i64, ptr %45, align 8, !tbaa !9
  %3455 = load i64, ptr %51, align 8, !tbaa !9
  %3456 = load i64, ptr %32, align 8, !tbaa !9
  %3457 = mul nsw i64 %3455, %3456
  %3458 = add nsw i64 %3454, %3457
  %3459 = getelementptr inbounds double, ptr %3453, i64 %3458
  %3460 = load double, ptr %3459, align 8, !tbaa !11
  store double %3460, ptr %39, align 8, !tbaa !11
  %3461 = load double, ptr %39, align 8, !tbaa !11
  %3462 = fcmp oge double %3461, 0.000000e+00
  br i1 %3462, label %3463, label %3465

3463:                                             ; preds = %3451
  %3464 = load double, ptr %39, align 8, !tbaa !11
  br label %3468

3465:                                             ; preds = %3451
  %3466 = load double, ptr %39, align 8, !tbaa !11
  %3467 = fneg double %3466
  br label %3468

3468:                                             ; preds = %3465, %3463
  %3469 = phi double [ %3464, %3463 ], [ %3467, %3465 ]
  %3470 = load ptr, ptr %22, align 8, !tbaa !5
  %3471 = load i64, ptr %45, align 8, !tbaa !9
  %3472 = load i64, ptr %51, align 8, !tbaa !9
  %3473 = add nsw i64 %3472, 1
  %3474 = load i64, ptr %32, align 8, !tbaa !9
  %3475 = mul nsw i64 %3473, %3474
  %3476 = add nsw i64 %3471, %3475
  %3477 = getelementptr inbounds double, ptr %3470, i64 %3476
  %3478 = load double, ptr %3477, align 8, !tbaa !11
  store double %3478, ptr %40, align 8, !tbaa !11
  %3479 = load double, ptr %40, align 8, !tbaa !11
  %3480 = fcmp oge double %3479, 0.000000e+00
  br i1 %3480, label %3481, label %3483

3481:                                             ; preds = %3468
  %3482 = load double, ptr %40, align 8, !tbaa !11
  br label %3486

3483:                                             ; preds = %3468
  %3484 = load double, ptr %40, align 8, !tbaa !11
  %3485 = fneg double %3484
  br label %3486

3486:                                             ; preds = %3483, %3481
  %3487 = phi double [ %3482, %3481 ], [ %3485, %3483 ]
  %3488 = fadd double %3469, %3487
  store double %3488, ptr %42, align 8, !tbaa !11
  %3489 = load double, ptr %41, align 8, !tbaa !11
  %3490 = load double, ptr %42, align 8, !tbaa !11
  %3491 = fcmp oge double %3489, %3490
  br i1 %3491, label %3492, label %3494

3492:                                             ; preds = %3486
  %3493 = load double, ptr %41, align 8, !tbaa !11
  br label %3496

3494:                                             ; preds = %3486
  %3495 = load double, ptr %42, align 8, !tbaa !11
  br label %3496

3496:                                             ; preds = %3494, %3492
  %3497 = phi double [ %3493, %3492 ], [ %3495, %3494 ]
  store double %3497, ptr %59, align 8, !tbaa !11
  br label %3498

3498:                                             ; preds = %3496
  %3499 = load i64, ptr %45, align 8, !tbaa !9
  %3500 = add nsw i64 %3499, 1
  store i64 %3500, ptr %45, align 8, !tbaa !9
  br label %3447, !llvm.loop !33

3501:                                             ; preds = %3447
  %3502 = load double, ptr %59, align 8, !tbaa !11
  %3503 = fdiv double 1.000000e+00, %3502
  store double %3503, ptr %70, align 8, !tbaa !11
  %3504 = load ptr, ptr %19, align 8, !tbaa !5
  %3505 = load ptr, ptr %22, align 8, !tbaa !5
  %3506 = load i64, ptr %51, align 8, !tbaa !9
  %3507 = load i64, ptr %32, align 8, !tbaa !9
  %3508 = mul nsw i64 %3506, %3507
  %3509 = add nsw i64 %3508, 1
  %3510 = getelementptr inbounds double, ptr %3505, i64 %3509
  %3511 = call i32 @f2c_dscal(ptr noundef %3504, ptr noundef %70, ptr noundef %3510, ptr noundef @c__1)
  %3512 = load ptr, ptr %19, align 8, !tbaa !5
  %3513 = load ptr, ptr %22, align 8, !tbaa !5
  %3514 = load i64, ptr %51, align 8, !tbaa !9
  %3515 = add nsw i64 %3514, 1
  %3516 = load i64, ptr %32, align 8, !tbaa !9
  %3517 = mul nsw i64 %3515, %3516
  %3518 = add nsw i64 %3517, 1
  %3519 = getelementptr inbounds double, ptr %3513, i64 %3518
  %3520 = call i32 @f2c_dscal(ptr noundef %3512, ptr noundef %70, ptr noundef %3519, ptr noundef @c__1)
  br label %3521

3521:                                             ; preds = %3501, %3338
  br label %3522

3522:                                             ; preds = %3521, %2444
  %3523 = load i64, ptr %53, align 8, !tbaa !9
  %3524 = add nsw i64 %3523, 1
  store i64 %3524, ptr %53, align 8, !tbaa !9
  %3525 = load i64, ptr %52, align 8, !tbaa !9
  %3526 = icmp ne i64 %3525, 0
  br i1 %3526, label %3527, label %3530

3527:                                             ; preds = %3522
  %3528 = load i64, ptr %53, align 8, !tbaa !9
  %3529 = add nsw i64 %3528, 1
  store i64 %3529, ptr %53, align 8, !tbaa !9
  br label %3530

3530:                                             ; preds = %3527, %3522
  br label %3531

3531:                                             ; preds = %3530, %1788, %1759
  %3532 = load i64, ptr %52, align 8, !tbaa !9
  %3533 = icmp eq i64 %3532, -1
  br i1 %3533, label %3534, label %3535

3534:                                             ; preds = %3531
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %3535

3535:                                             ; preds = %3534, %3531
  %3536 = load i64, ptr %52, align 8, !tbaa !9
  %3537 = icmp eq i64 %3536, 1
  br i1 %3537, label %3538, label %3539

3538:                                             ; preds = %3535
  store i64 -1, ptr %52, align 8, !tbaa !9
  br label %3539

3539:                                             ; preds = %3538, %3535
  br label %3540

3540:                                             ; preds = %3539
  %3541 = load i64, ptr %51, align 8, !tbaa !9
  %3542 = add nsw i64 %3541, 1
  store i64 %3542, ptr %51, align 8, !tbaa !9
  br label %1752, !llvm.loop !34

3543:                                             ; preds = %1752
  br label %3544

3544:                                             ; preds = %3543, %1746
  store i32 0, ptr %15, align 4
  store i32 1, ptr %79, align 4
  br label %3545

3545:                                             ; preds = %3544, %322, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  %3546 = load i32, ptr %15, align 4
  ret i32 %3546
}

; 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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@c_false = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@c_b22 = external hidden global double, align 8
@c_b25 = external hidden global double, align 8
@c__2 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dtrevc_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef readonly %10, ptr nocapture noundef %11, ptr noundef %12, ptr nocapture noundef %13) local_unnamed_addr #0 {
  %15 = ptrtoint ptr %4 to i64
  %16 = ptrtoint ptr %12 to i64
  %17 = ptrtoint ptr %4 to i64
  %18 = ptrtoint ptr %12 to i64
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca double, align 8
  %23 = alloca [4 x double], align 16
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca i64, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  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 32, 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 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  %35 = getelementptr inbounds i8, ptr %2, i64 -8
  %36 = load i64, ptr %5, align 8, !tbaa !5
  %37 = xor i64 %36, -1
  %38 = getelementptr inbounds double, ptr %4, i64 %37
  %39 = load i64, ptr %7, align 8, !tbaa !5
  %40 = xor i64 %39, -1
  %41 = getelementptr inbounds double, ptr %6, i64 %40
  %42 = load i64, ptr %9, align 8, !tbaa !5
  %43 = xor i64 %42, -1
  %44 = getelementptr inbounds double, ptr %8, i64 %43
  %45 = getelementptr inbounds i8, ptr %12, i64 -8
  %46 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %47 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %48 = icmp ne i64 %47, 0
  %49 = icmp ne i64 %46, 0
  %50 = select i1 %48, i1 true, i1 %49
  %51 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %52 = icmp ne i64 %51, 0
  %53 = select i1 %52, i1 true, i1 %49
  %54 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %55 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %56 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  store i64 0, ptr %13, align 8, !tbaa !5
  %or.cond = select i1 %50, i1 true, i1 %53
  br i1 %or.cond, label %57, label %.thread.sink.split

57:                                               ; preds = %14
  %58 = icmp ne i64 %54, 0
  %59 = icmp ne i64 %55, 0
  %or.cond3 = select i1 %58, i1 true, i1 %59
  %60 = icmp ne i64 %56, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %60
  br i1 %or.cond5, label %61, label %.thread.sink.split

61:                                               ; preds = %57
  %62 = load i64, ptr %3, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 0
  br i1 %63, label %.thread.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %62, i64 1)
  %66 = icmp slt i64 %65, %spec.select
  br i1 %66, label %.thread.sink.split, label %67

67:                                               ; preds = %64
  %68 = load i64, ptr %7, align 8, !tbaa !5
  %69 = icmp slt i64 %68, 1
  %70 = icmp ult i64 %68, %62
  %or.cond1247 = and i1 %53, %70
  %or.cond1251 = select i1 %69, i1 true, i1 %or.cond1247
  br i1 %or.cond1251, label %.thread.sink.split, label %71

71:                                               ; preds = %67
  %72 = load i64, ptr %9, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 1
  %74 = icmp ult i64 %72, %62
  %or.cond1248 = and i1 %50, %74
  %or.cond1252 = select i1 %73, i1 true, i1 %or.cond1248
  br i1 %or.cond1252, label %.thread.sink.split, label %75

75:                                               ; preds = %71
  br i1 %60, label %76, label %109

76:                                               ; preds = %75
  store i64 0, ptr %11, align 8, !tbaa !5
  %77 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %77, ptr %19, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %38, i64 8
  %.not1284 = icmp slt i64 %77, 1
  br i1 %.not1284, label %.loopexit1283, label %.lr.ph

.lr.ph:                                           ; preds = %76, %107
  %.010671287 = phi i64 [ %.11068, %107 ], [ 0, %76 ]
  %.011001285 = phi i64 [ %108, %107 ], [ 1, %76 ]
  %.not1121 = icmp eq i64 %.010671287, 0
  br i1 %.not1121, label %80, label %78

78:                                               ; preds = %.lr.ph
  %79 = getelementptr inbounds i64, ptr %35, i64 %.011001285
  store i64 0, ptr %79, align 8, !tbaa !5
  br label %107

80:                                               ; preds = %.lr.ph
  %81 = load i64, ptr %3, align 8, !tbaa !5
  %82 = icmp slt i64 %.011001285, %81
  br i1 %82, label %83, label %101

83:                                               ; preds = %80
  %84 = mul nsw i64 %.011001285, %36
  %gep = getelementptr double, ptr %invariant.gep, i64 %.011001285
  %85 = getelementptr double, ptr %gep, i64 %84
  %86 = load double, ptr %85, align 8, !tbaa !9
  %87 = fcmp oeq double %86, 0.000000e+00
  %88 = getelementptr inbounds i64, ptr %35, i64 %.011001285
  %89 = load i64, ptr %88, align 8, !tbaa !5
  %.not1125 = icmp eq i64 %89, 0
  br i1 %87, label %90, label %94

90:                                               ; preds = %83
  br i1 %.not1125, label %107, label %91

91:                                               ; preds = %90
  %92 = load i64, ptr %11, align 8, !tbaa !5
  %93 = add nsw i64 %92, 1
  store i64 %93, ptr %11, align 8, !tbaa !5
  br label %107

94:                                               ; preds = %83
  br i1 %.not1125, label %95, label %98

95:                                               ; preds = %94
  %96 = getelementptr i64, ptr %2, i64 %.011001285
  %97 = load i64, ptr %96, align 8, !tbaa !5
  %.not1124 = icmp eq i64 %97, 0
  br i1 %.not1124, label %107, label %98

98:                                               ; preds = %95, %94
  store i64 1, ptr %88, align 8, !tbaa !5
  %99 = load i64, ptr %11, align 8, !tbaa !5
  %100 = add nsw i64 %99, 2
  store i64 %100, ptr %11, align 8, !tbaa !5
  br label %107

101:                                              ; preds = %80
  %102 = getelementptr inbounds i64, ptr %35, i64 %81
  %103 = load i64, ptr %102, align 8, !tbaa !5
  %.not1122 = icmp eq i64 %103, 0
  br i1 %.not1122, label %107, label %104

104:                                              ; preds = %101
  %105 = load i64, ptr %11, align 8, !tbaa !5
  %106 = add nsw i64 %105, 1
  store i64 %106, ptr %11, align 8, !tbaa !5
  br label %107

107:                                              ; preds = %78, %101, %104, %91, %90, %98, %95
  %.11068 = phi i64 [ 0, %78 ], [ 0, %91 ], [ 0, %90 ], [ 1, %98 ], [ 1, %95 ], [ 0, %104 ], [ 0, %101 ]
  %108 = add nuw i64 %.011001285, 1
  %exitcond.not = icmp eq i64 %.011001285, %77
  br i1 %exitcond.not, label %.loopexit1283.loopexit, label %.lr.ph, !llvm.loop !11

109:                                              ; preds = %75
  store i64 %62, ptr %11, align 8, !tbaa !5
  br label %.loopexit1283

.loopexit1283.loopexit:                           ; preds = %107
  %.pre = load i64, ptr %11, align 8, !tbaa !5
  br label %.loopexit1283

.loopexit1283:                                    ; preds = %.loopexit1283.loopexit, %76, %109
  %110 = phi i64 [ %.pre, %.loopexit1283.loopexit ], [ 0, %76 ], [ %62, %109 ]
  %111 = load i64, ptr %10, align 8, !tbaa !5
  %112 = icmp slt i64 %111, %110
  br i1 %112, label %.thread.sink.split, label %113

113:                                              ; preds = %.loopexit1283
  %.pr = load i64, ptr %13, align 8, !tbaa !5
  %.not1126 = icmp eq i64 %.pr, 0
  br i1 %.not1126, label %117, label %.thread

.thread.sink.split:                               ; preds = %.loopexit1283, %71, %67, %64, %61, %57, %14
  %.sink = phi i64 [ -1, %14 ], [ -2, %57 ], [ -4, %61 ], [ -6, %64 ], [ -8, %67 ], [ -10, %71 ], [ -11, %.loopexit1283 ]
  store i64 %.sink, ptr %13, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %113
  %114 = phi i64 [ %.pr, %113 ], [ %.sink, %.thread.sink.split ]
  %115 = sub nsw i64 0, %114
  store i64 %115, ptr %19, align 8, !tbaa !5
  %116 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %19) #6
  br label %.loopexit1278

117:                                              ; preds = %113
  %118 = load i64, ptr %3, align 8, !tbaa !5
  %119 = icmp eq i64 %118, 0
  br i1 %119, label %.loopexit1278, label %120

120:                                              ; preds = %117
  %121 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #6
  store double %121, ptr %29, align 8, !tbaa !9
  %122 = fdiv double 1.000000e+00, %121
  store double %122, ptr %30, align 8, !tbaa !9
  %123 = call i32 @dlabad_(ptr noundef nonnull %29, ptr noundef nonnull %30) #6
  %124 = call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %125 = load double, ptr %29, align 8, !tbaa !9
  %126 = load i64, ptr %3, align 8, !tbaa !5
  %127 = sitofp i64 %126 to double
  %128 = fdiv double %127, %124
  %129 = fmul double %125, %128
  %130 = fsub double 1.000000e+00, %124
  %131 = fdiv double %130, %129
  store double 0.000000e+00, ptr %12, align 8, !tbaa !9
  %.not11271291 = icmp slt i64 %126, 2
  br i1 %.not11271291, label %158, label %.lr.ph1293

.lr.ph1293:                                       ; preds = %120, %155
  %indvar = phi i64 [ %indvar.next, %155 ], [ 0, %120 ]
  %.111011292 = phi i64 [ %156, %155 ], [ 2, %120 ]
  %132 = getelementptr inbounds double, ptr %45, i64 %.111011292
  store double 0.000000e+00, ptr %132, align 8, !tbaa !9
  %133 = mul nsw i64 %.111011292, %36
  %invariant.gep1288 = getelementptr double, ptr %38, i64 %133
  %134 = icmp eq i64 %indvar, 0
  br i1 %134, label %.unr-lcssa, label %.lr.ph1293.new

.lr.ph1293.new:                                   ; preds = %.lr.ph1293
  %135 = add i64 %indvar, 1
  %unroll_iter = and i64 %135, -2
  %invariant.gep1826 = getelementptr i8, ptr %invariant.gep1288, i64 8
  br label %136

136:                                              ; preds = %136, %.lr.ph1293.new
  %.010831290 = phi i64 [ 1, %.lr.ph1293.new ], [ %148, %136 ]
  %137 = phi double [ 0.000000e+00, %.lr.ph1293.new ], [ %147, %136 ]
  %niter = phi i64 [ 0, %.lr.ph1293.new ], [ %niter.next.1, %136 ]
  %gep1289 = getelementptr double, ptr %invariant.gep1288, i64 %.010831290
  %138 = load double, ptr %gep1289, align 8, !tbaa !9
  %139 = fcmp oge double %138, 0.000000e+00
  %140 = fneg double %138
  %141 = select i1 %139, double %138, double %140
  %142 = fadd double %137, %141
  store double %142, ptr %132, align 8, !tbaa !9
  %gep1827 = getelementptr double, ptr %invariant.gep1826, i64 %.010831290
  %143 = load double, ptr %gep1827, align 8, !tbaa !9
  %144 = fcmp oge double %143, 0.000000e+00
  %145 = fneg double %143
  %146 = select i1 %144, double %143, double %145
  %147 = fadd double %142, %146
  store double %147, ptr %132, align 8, !tbaa !9
  %148 = add nuw nsw i64 %.010831290, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.unr-lcssa, label %136, !llvm.loop !13

.unr-lcssa:                                       ; preds = %136, %.lr.ph1293
  %.lcssa1797.ph = phi double [ poison, %.lr.ph1293 ], [ %143, %136 ]
  %.010831290.unr = phi i64 [ 1, %.lr.ph1293 ], [ %148, %136 ]
  %.unr = phi double [ 0.000000e+00, %.lr.ph1293 ], [ %147, %136 ]
  %149 = and i64 %indvar, 1
  %lcmp.mod.not.not = icmp eq i64 %149, 0
  br i1 %lcmp.mod.not.not, label %.epilog-lcssa, label %155

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %gep1289.epil = getelementptr double, ptr %invariant.gep1288, i64 %.010831290.unr
  %150 = load double, ptr %gep1289.epil, align 8, !tbaa !9
  %151 = fcmp oge double %150, 0.000000e+00
  %152 = fneg double %150
  %153 = select i1 %151, double %150, double %152
  %154 = fadd double %.unr, %153
  store double %154, ptr %132, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %.lcssa1797 = phi double [ %.lcssa1797.ph, %.unr-lcssa ], [ %150, %.epilog-lcssa ]
  %156 = add nuw i64 %.111011292, 1
  %exitcond1527.not = icmp eq i64 %.111011292, %126
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1527.not, label %._crit_edge, label %.lr.ph1293, !llvm.loop !14

._crit_edge:                                      ; preds = %155
  %157 = add nsw i64 %126, -1
  store i64 %157, ptr %20, align 8, !tbaa !5
  store double %.lcssa1797, ptr %22, align 8, !tbaa !9
  br label %158

158:                                              ; preds = %._crit_edge, %120
  %159 = shl i64 %126, 1
  br i1 %50, label %160, label %.loopexit1282

160:                                              ; preds = %158
  %161 = load i64, ptr %11, align 8, !tbaa !5
  %invariant.gep1352 = getelementptr i8, ptr %2, i64 -16
  %invariant.gep1354 = getelementptr i8, ptr %38, i64 -8
  %invariant.gep1356 = getelementptr double, ptr %45, i64 %159
  %invariant.gep1360 = getelementptr i8, ptr %44, i64 8
  store i64 %126, ptr %24, align 8, !tbaa !5
  %162 = icmp sgt i64 %126, 0
  br i1 %162, label %.lr.ph1392, label %.loopexit1282

.lr.ph1392:                                       ; preds = %160
  %.not11431165 = icmp eq i64 %56, 0
  %163 = add i64 %36, 1
  %invariant.gep1299 = getelementptr i8, ptr %38, i64 8
  %164 = getelementptr inbounds i8, ptr %23, i64 16
  %165 = getelementptr inbounds i8, ptr %23, i64 8
  %166 = getelementptr inbounds i8, ptr %23, i64 24
  %167 = getelementptr double, ptr %12, i64 %159
  %.not1148 = icmp eq i64 %55, 0
  %168 = shl i64 %126, 4
  %scevgep1623 = getelementptr i8, ptr %12, i64 %168
  %169 = getelementptr i8, ptr %12, i64 %168
  %scevgep1624 = getelementptr i8, ptr %169, i64 -16
  %scevgep1626 = getelementptr i8, ptr %12, i64 -8
  %scevgep1629 = getelementptr i8, ptr %4, i64 -16
  %scevgep1631 = getelementptr i8, ptr %12, i64 %168
  %scevgep1634 = getelementptr i8, ptr %4, i64 -16
  %invariant.gep1828 = getelementptr i8, ptr %38, i64 8
  %170 = and i64 %42, 2305843009213693948
  %diff.check1607 = icmp eq i64 %170, 0
  %invariant.gep1838 = getelementptr i8, ptr %44, i64 8
  %invariant.gep1832 = getelementptr i8, ptr %44, i64 8
  %invariant.gep1834 = getelementptr i8, ptr %44, i64 16
  %invariant.gep1836 = getelementptr i8, ptr %44, i64 24
  br label %171

171:                                              ; preds = %.lr.ph1392, %.thread1219
  %.010731390 = phi i64 [ %161, %.lr.ph1392 ], [ %.1107412111222, %.thread1219 ]
  %.010771389 = phi i64 [ 0, %.lr.ph1392 ], [ %712, %.thread1219 ]
  %storemerge1388 = phi i64 [ %126, %.lr.ph1392 ], [ %714, %.thread1219 ]
  %172 = icmp eq i64 %.010771389, 1
  br i1 %172, label %.thread1219, label %173

173:                                              ; preds = %171
  %174 = icmp eq i64 %storemerge1388, 1
  br i1 %174, label %182, label %175

175:                                              ; preds = %173
  %176 = add nsw i64 %storemerge1388, -1
  %177 = mul nsw i64 %176, %36
  %178 = getelementptr double, ptr %38, i64 %storemerge1388
  %179 = getelementptr double, ptr %178, i64 %177
  %180 = load double, ptr %179, align 8, !tbaa !9
  %181 = fcmp oeq double %180, 0.000000e+00
  br i1 %181, label %182, label %.thread1163

182:                                              ; preds = %175, %173
  br i1 %.not11431165, label %195, label %183

.thread1163:                                      ; preds = %175
  br i1 %.not11431165, label %.thread1172, label %.thread1168

183:                                              ; preds = %182
  %184 = icmp eq i64 %.010771389, 0
  br i1 %184, label %185, label %.thread1168

185:                                              ; preds = %183
  %186 = getelementptr inbounds i64, ptr %35, i64 %storemerge1388
  %187 = load i64, ptr %186, align 8, !tbaa !5
  %.not1145 = icmp eq i64 %187, 0
  br i1 %.not1145, label %.thread1219, label %.thread1179

.thread1179:                                      ; preds = %185
  %188 = mul i64 %storemerge1388, %163
  %189 = getelementptr inbounds double, ptr %38, i64 %188
  %190 = load double, ptr %189, align 8, !tbaa !9
  store double %190, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  br label %218

.thread1168:                                      ; preds = %.thread1163, %183
  %.1107811661170 = phi i64 [ %.010771389, %183 ], [ -1, %.thread1163 ]
  %gep1353 = getelementptr i64, ptr %invariant.gep1352, i64 %storemerge1388
  %191 = load i64, ptr %gep1353, align 8, !tbaa !5
  %.not1144 = icmp eq i64 %191, 0
  br i1 %.not1144, label %.thread1207, label %.thread1172

.thread1172:                                      ; preds = %.thread1163, %.thread1168
  %.110781167.ph = phi i64 [ %.1107811661170, %.thread1168 ], [ -1, %.thread1163 ]
  %192 = mul i64 %storemerge1388, %163
  %193 = getelementptr inbounds double, ptr %38, i64 %192
  %194 = load double, ptr %193, align 8, !tbaa !9
  store double %194, ptr %26, align 8, !tbaa !9
  br label %199

195:                                              ; preds = %182
  %196 = mul i64 %storemerge1388, %163
  %197 = getelementptr inbounds double, ptr %38, i64 %196
  %198 = load double, ptr %197, align 8, !tbaa !9
  store double %198, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  %.not1146 = icmp eq i64 %.010771389, 0
  br i1 %.not1146, label %218, label %199

199:                                              ; preds = %.thread1172, %195
  %.1107811671175 = phi i64 [ %.110781167.ph, %.thread1172 ], [ %.010771389, %195 ]
  %200 = add nsw i64 %storemerge1388, -1
  %201 = mul nsw i64 %200, %36
  %202 = getelementptr double, ptr %38, i64 %storemerge1388
  %203 = getelementptr double, ptr %202, i64 %201
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = fcmp oge double %204, 0.000000e+00
  %206 = fneg double %204
  %207 = select i1 %205, double %204, double %206
  %208 = call double @sqrt(double noundef %207) #6
  %209 = load i64, ptr %24, align 8, !tbaa !5
  %210 = mul nsw i64 %209, %36
  %gep1355 = getelementptr double, ptr %invariant.gep1354, i64 %209
  %211 = getelementptr double, ptr %gep1355, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !9
  %213 = fcmp oge double %212, 0.000000e+00
  %214 = fneg double %212
  %215 = select i1 %213, double %212, double %214
  %216 = call double @sqrt(double noundef %215) #6
  %217 = fmul double %208, %216
  store double %217, ptr %25, align 8, !tbaa !9
  %.pre1541 = load double, ptr %26, align 8
  br label %218

218:                                              ; preds = %.thread1179, %199, %195
  %219 = phi double [ %217, %199 ], [ 0.000000e+00, %195 ], [ 0.000000e+00, %.thread1179 ]
  %220 = phi double [ %.pre1541, %199 ], [ %198, %195 ], [ %190, %.thread1179 ]
  %.not11461178 = phi i1 [ false, %199 ], [ true, %195 ], [ true, %.thread1179 ]
  %.1107811671176 = phi i64 [ %.1107811671175, %199 ], [ 0, %195 ], [ 0, %.thread1179 ]
  %.1107811671176.fr = freeze i64 %.1107811671176
  %221 = fcmp oge double %220, 0.000000e+00
  %222 = fneg double %220
  %223 = select i1 %221, double %220, double %222
  %224 = fcmp oge double %219, 0.000000e+00
  %225 = fneg double %219
  %226 = select i1 %224, double %219, double %225
  %227 = fadd double %223, %226
  %228 = fmul double %124, %227
  store double %228, ptr %22, align 8, !tbaa !9
  %229 = fcmp oge double %228, %129
  %230 = select i1 %229, double %228, double %129
  store double %230, ptr %31, align 8, !tbaa !9
  %231 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %.not11461178, label %232, label %401

232:                                              ; preds = %218
  %233 = load i64, ptr %3, align 8, !tbaa !5
  %234 = getelementptr double, ptr %45, i64 %231
  %235 = getelementptr double, ptr %234, i64 %233
  store double 1.000000e+00, ptr %235, align 8, !tbaa !9
  %236 = add i64 %231, -1
  store i64 %236, ptr %19, align 8, !tbaa !5
  %invariant.gep1328 = getelementptr double, ptr %45, i64 %233
  %.not1153.not1330 = icmp sgt i64 %231, 1
  br i1 %.not1153.not1330, label %.lr.ph1333, label %._crit_edge1345

.lr.ph1333:                                       ; preds = %232
  %237 = mul nsw i64 %231, %36
  %invariant.gep1334 = getelementptr double, ptr %38, i64 %237
  %min.iters.check = icmp ult i64 %231, 9
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph1333
  %.010881331.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph1333 ], [ %ind.end, %middle.block ]
  %238 = sub i64 %231, %.010881331.ph
  %xtraiter1803 = and i64 %238, 3
  %lcmp.mod1804.not = icmp eq i64 %xtraiter1803, 0
  br i1 %lcmp.mod1804.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.010881331.prol = phi i64 [ %241, %scalar.ph.prol ], [ %.010881331.ph, %scalar.ph.preheader ]
  %prol.iter1805 = phi i64 [ %prol.iter1805.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep1335.prol = getelementptr double, ptr %invariant.gep1334, i64 %.010881331.prol
  %239 = load double, ptr %gep1335.prol, align 8, !tbaa !9
  %240 = fneg double %239
  %gep1329.prol = getelementptr double, ptr %invariant.gep1328, i64 %.010881331.prol
  store double %240, ptr %gep1329.prol, align 8, !tbaa !9
  %241 = add nuw nsw i64 %.010881331.prol, 1
  %prol.iter1805.next = add i64 %prol.iter1805, 1
  %prol.iter1805.cmp.not = icmp eq i64 %prol.iter1805.next, %xtraiter1803
  br i1 %prol.iter1805.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !15

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.010881331.unr = phi i64 [ %.010881331.ph, %scalar.ph.preheader ], [ %241, %scalar.ph.prol ]
  %242 = sub i64 %.010881331.ph, %231
  %243 = icmp ugt i64 %242, -4
  br i1 %243, label %.preheader, label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph1333
  %244 = shl i64 %233, 3
  %245 = shl i64 %231, 3
  %246 = add i64 %245, -8
  %247 = mul i64 %36, %246
  %248 = add i64 %244, %18
  %249 = add i64 %247, %17
  %250 = sub i64 %248, %249
  %diff.check = icmp ult i64 %250, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %251 = getelementptr double, ptr %invariant.gep1334, i64 %offset.idx
  %252 = getelementptr i8, ptr %251, i64 16
  %wide.load = load <2 x double>, ptr %251, align 8, !tbaa !9
  %wide.load1605 = load <2 x double>, ptr %252, align 8, !tbaa !9
  %253 = fneg <2 x double> %wide.load
  %254 = fneg <2 x double> %wide.load1605
  %255 = getelementptr double, ptr %invariant.gep1328, i64 %offset.idx
  %256 = getelementptr i8, ptr %255, i64 16
  store <2 x double> %253, ptr %255, align 8, !tbaa !9
  store <2 x double> %254, ptr %256, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %257 = icmp eq i64 %index.next, %n.vec
  br i1 %257, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %236, %n.vec
  br i1 %cmp.n, label %.preheader, label %scalar.ph.preheader

.preheader:                                       ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  br i1 %.not1153.not1330, label %.lr.ph1344, label %._crit_edge1345

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.010881331 = phi i64 [ %269, %scalar.ph ], [ %.010881331.unr, %scalar.ph.prol.loopexit ]
  %gep1335 = getelementptr double, ptr %invariant.gep1334, i64 %.010881331
  %258 = load double, ptr %gep1335, align 8, !tbaa !9
  %259 = fneg double %258
  %gep1329 = getelementptr double, ptr %invariant.gep1328, i64 %.010881331
  store double %259, ptr %gep1329, align 8, !tbaa !9
  %260 = add nuw nsw i64 %.010881331, 1
  %gep1335.1 = getelementptr double, ptr %invariant.gep1334, i64 %260
  %261 = load double, ptr %gep1335.1, align 8, !tbaa !9
  %262 = fneg double %261
  %gep1329.1 = getelementptr double, ptr %invariant.gep1328, i64 %260
  store double %262, ptr %gep1329.1, align 8, !tbaa !9
  %263 = add nuw nsw i64 %.010881331, 2
  %gep1335.2 = getelementptr double, ptr %invariant.gep1334, i64 %263
  %264 = load double, ptr %gep1335.2, align 8, !tbaa !9
  %265 = fneg double %264
  %gep1329.2 = getelementptr double, ptr %invariant.gep1328, i64 %263
  store double %265, ptr %gep1329.2, align 8, !tbaa !9
  %266 = add nuw nsw i64 %.010881331, 3
  %gep1335.3 = getelementptr double, ptr %invariant.gep1334, i64 %266
  %267 = load double, ptr %gep1335.3, align 8, !tbaa !9
  %268 = fneg double %267
  %gep1329.3 = getelementptr double, ptr %invariant.gep1328, i64 %266
  store double %268, ptr %gep1329.3, align 8, !tbaa !9
  %269 = add nuw nsw i64 %.010881331, 4
  %exitcond1532.not.3 = icmp eq i64 %269, %231
  br i1 %exitcond1532.not.3, label %.preheader, label %scalar.ph, !llvm.loop !20

.lr.ph1344:                                       ; preds = %.preheader, %.lr.ph1344._crit_edge
  %.010551343 = phi i64 [ %.21057, %.lr.ph1344._crit_edge ], [ %236, %.preheader ]
  %.211021342 = phi i64 [ %.pre1573, %.lr.ph1344._crit_edge ], [ %236, %.preheader ]
  %270 = icmp sgt i64 %.211021342, %.010551343
  %.pre1573 = add nsw i64 %.211021342, -1
  br i1 %270, label %.lr.ph1344._crit_edge, label %271

271:                                              ; preds = %.lr.ph1344
  %.not1156 = icmp eq i64 %.211021342, 1
  br i1 %.not1156, label %..thread1182_crit_edge, label %272

..thread1182_crit_edge:                           ; preds = %271
  %.pre1545 = load i64, ptr %3, align 8, !tbaa !5
  br label %.thread1182

272:                                              ; preds = %271
  %273 = mul nsw i64 %.pre1573, %36
  %274 = getelementptr double, ptr %38, i64 %.211021342
  %275 = getelementptr double, ptr %274, i64 %273
  %276 = load double, ptr %275, align 8, !tbaa !9
  %277 = fcmp une double %276, 0.000000e+00
  %.pre1546 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %277, label %.thread1186, label %.thread1182

.thread1186:                                      ; preds = %272
  %278 = add nsw i64 %.211021342, -2
  %279 = getelementptr double, ptr %38, i64 %.pre1573
  %280 = getelementptr double, ptr %279, i64 %273
  %281 = getelementptr double, ptr %45, i64 %.pre1573
  %282 = getelementptr double, ptr %281, i64 %.pre1546
  %283 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull @c_b22, ptr noundef %280, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef %282, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull @c_b25, ptr noundef nonnull %23, ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %284 = load double, ptr %34, align 8, !tbaa !9
  %285 = fcmp ogt double %284, 1.000000e+00
  br i1 %285, label %316, label %thread-pre-split1192

.thread1182:                                      ; preds = %..thread1182_crit_edge, %272
  %286 = phi i64 [ %.pre1546, %272 ], [ %.pre1545, %..thread1182_crit_edge ]
  %.110561185 = phi i64 [ %.pre1573, %272 ], [ 0, %..thread1182_crit_edge ]
  %287 = mul nsw i64 %.211021342, %36
  %288 = getelementptr double, ptr %38, i64 %.211021342
  %289 = getelementptr double, ptr %288, i64 %287
  %290 = getelementptr double, ptr %45, i64 %.211021342
  %291 = getelementptr double, ptr %290, i64 %286
  %292 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull @c_b22, ptr noundef %289, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef %291, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull @c_b25, ptr noundef nonnull %23, ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %293 = load double, ptr %34, align 8, !tbaa !9
  %294 = fcmp ogt double %293, 1.000000e+00
  br i1 %294, label %295, label %thread-pre-split1190

295:                                              ; preds = %.thread1182
  %296 = load double, ptr %290, align 8, !tbaa !9
  %297 = fdiv double %131, %293
  %298 = fcmp ogt double %296, %297
  br i1 %298, label %299, label %thread-pre-split1190

299:                                              ; preds = %295
  %300 = load double, ptr %23, align 16, !tbaa !9
  %301 = fdiv double %300, %293
  store double %301, ptr %23, align 16, !tbaa !9
  %302 = load double, ptr %32, align 8, !tbaa !9
  %303 = fdiv double %302, %293
  store double %303, ptr %32, align 8, !tbaa !9
  br label %304

thread-pre-split1190:                             ; preds = %.thread1182, %295
  %.pr1191 = load double, ptr %32, align 8, !tbaa !9
  br label %304

304:                                              ; preds = %thread-pre-split1190, %299
  %305 = phi double [ %.pr1191, %thread-pre-split1190 ], [ %303, %299 ]
  %306 = fcmp une double %305, 1.000000e+00
  br i1 %306, label %307, label %311

307:                                              ; preds = %304
  %308 = load i64, ptr %3, align 8, !tbaa !5
  %309 = getelementptr double, ptr %12, i64 %308
  %310 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef %309, ptr noundef nonnull @c__1) #6
  br label %311

311:                                              ; preds = %307, %304
  %312 = load double, ptr %23, align 16, !tbaa !9
  %313 = load i64, ptr %3, align 8, !tbaa !5
  %314 = getelementptr double, ptr %290, i64 %313
  store double %312, ptr %314, align 8, !tbaa !9
  store i64 %.pre1573, ptr %19, align 8, !tbaa !5
  %315 = fneg double %312
  store double %315, ptr %22, align 8, !tbaa !9
  br label %.lr.ph1344._crit_edge.sink.split

316:                                              ; preds = %.thread1186
  %317 = load double, ptr %281, align 8, !tbaa !9
  store double %317, ptr %22, align 8, !tbaa !9
  %318 = getelementptr inbounds double, ptr %45, i64 %.211021342
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = fcmp oge double %317, %319
  %321 = select i1 %320, double %317, double %319
  %322 = fdiv double %131, %284
  %323 = fcmp ogt double %321, %322
  br i1 %323, label %324, label %thread-pre-split1192

324:                                              ; preds = %316
  %325 = load <2 x double>, ptr %23, align 16, !tbaa !9
  %326 = insertelement <2 x double> poison, double %284, i64 0
  %327 = shufflevector <2 x double> %326, <2 x double> poison, <2 x i32> zeroinitializer
  %328 = fdiv <2 x double> %325, %327
  store <2 x double> %328, ptr %23, align 16, !tbaa !9
  %329 = load double, ptr %32, align 8, !tbaa !9
  %330 = fdiv double %329, %284
  store double %330, ptr %32, align 8, !tbaa !9
  br label %331

thread-pre-split1192:                             ; preds = %.thread1186, %316
  %.pr1193 = load double, ptr %32, align 8, !tbaa !9
  br label %331

331:                                              ; preds = %thread-pre-split1192, %324
  %332 = phi double [ %.pr1193, %thread-pre-split1192 ], [ %330, %324 ]
  %333 = fcmp une double %332, 1.000000e+00
  br i1 %333, label %334, label %338

334:                                              ; preds = %331
  %335 = load i64, ptr %3, align 8, !tbaa !5
  %336 = getelementptr double, ptr %12, i64 %335
  %337 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef %336, ptr noundef nonnull @c__1) #6
  br label %338

338:                                              ; preds = %334, %331
  %339 = load i64, ptr %3, align 8, !tbaa !5
  %340 = getelementptr double, ptr %281, i64 %339
  %341 = load <2 x double>, ptr %23, align 16, !tbaa !9
  store <2 x double> %341, ptr %340, align 8, !tbaa !9
  store i64 %278, ptr %19, align 8, !tbaa !5
  %342 = extractelement <2 x double> %341, i64 0
  %343 = fneg double %342
  store double %343, ptr %22, align 8, !tbaa !9
  %gep1337 = getelementptr double, ptr %invariant.gep1299, i64 %273
  %344 = getelementptr double, ptr %12, i64 %339
  %345 = call i32 @f2c_daxpy(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1337, ptr noundef nonnull @c__1, ptr noundef %344, ptr noundef nonnull @c__1) #6
  store i64 %278, ptr %19, align 8, !tbaa !5
  %346 = load double, ptr %165, align 8, !tbaa !9
  %347 = fneg double %346
  store double %347, ptr %22, align 8, !tbaa !9
  %348 = mul nsw i64 %.211021342, %36
  %349 = load i64, ptr %3, align 8, !tbaa !5
  br label %.lr.ph1344._crit_edge.sink.split

.lr.ph1344._crit_edge.sink.split:                 ; preds = %311, %338
  %.sink1592 = phi i64 [ %349, %338 ], [ %313, %311 ]
  %.pn = phi i64 [ %348, %338 ], [ %287, %311 ]
  %.21057.ph = phi i64 [ %278, %338 ], [ %.110561185, %311 ]
  %gep1339.sink = getelementptr double, ptr %invariant.gep1299, i64 %.pn
  %350 = getelementptr double, ptr %12, i64 %.sink1592
  %351 = call i32 @f2c_daxpy(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1339.sink, ptr noundef nonnull @c__1, ptr noundef %350, ptr noundef nonnull @c__1) #6
  br label %.lr.ph1344._crit_edge

.lr.ph1344._crit_edge:                            ; preds = %.lr.ph1344._crit_edge.sink.split, %.lr.ph1344
  %.21057 = phi i64 [ %.010551343, %.lr.ph1344 ], [ %.21057.ph, %.lr.ph1344._crit_edge.sink.split ]
  %352 = icmp sgt i64 %.211021342, 1
  br i1 %352, label %.lr.ph1344, label %._crit_edge1345, !llvm.loop !21

._crit_edge1345:                                  ; preds = %.lr.ph1344._crit_edge, %232, %.preheader
  br i1 %.not1148, label %353, label %376

353:                                              ; preds = %._crit_edge1345
  %354 = load i64, ptr %3, align 8, !tbaa !5
  %355 = getelementptr double, ptr %12, i64 %354
  %356 = mul nsw i64 %.010731390, %42
  %gep1387 = getelementptr double, ptr %invariant.gep1360, i64 %356
  %357 = call i32 @f2c_dcopy(ptr noundef nonnull %24, ptr noundef %355, ptr noundef nonnull @c__1, ptr noundef %gep1387, ptr noundef nonnull @c__1) #6
  %358 = call i64 @f2c_idamax(ptr noundef nonnull %24, ptr noundef %gep1387, ptr noundef nonnull @c__1) #6
  %359 = getelementptr double, ptr %44, i64 %358
  %360 = getelementptr double, ptr %359, i64 %356
  %361 = load double, ptr %360, align 8, !tbaa !9
  store double %361, ptr %22, align 8, !tbaa !9
  %362 = fcmp oge double %361, 0.000000e+00
  %363 = fneg double %361
  %364 = select i1 %362, double %361, double %363
  %365 = fdiv double 1.000000e+00, %364
  store double %365, ptr %33, align 8, !tbaa !9
  %366 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %33, ptr noundef %gep1387, ptr noundef nonnull @c__1) #6
  %367 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %367, ptr %19, align 8, !tbaa !5
  %368 = load i64, ptr %24, align 8, !tbaa !5
  %.not1155.not1348 = icmp slt i64 %368, %367
  br i1 %.not1155.not1348, label %.lr.ph1351.preheader, label %.loopexit1279

.lr.ph1351.preheader:                             ; preds = %353
  %369 = shl i64 %.010731390, 3
  %370 = add i64 %369, -8
  %371 = mul i64 %42, %370
  %372 = shl i64 %368, 3
  %373 = getelementptr i8, ptr %8, i64 %371
  %scevgep = getelementptr i8, ptr %373, i64 %372
  %374 = sub i64 %367, %368
  %375 = shl i64 %374, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %375, i1 false), !tbaa !9
  br label %.loopexit1279

376:                                              ; preds = %._crit_edge1345
  %377 = load i64, ptr %24, align 8, !tbaa !5
  %378 = icmp sgt i64 %377, 1
  br i1 %378, label %379, label %387

379:                                              ; preds = %376
  %380 = add nsw i64 %377, -1
  store i64 %380, ptr %19, align 8, !tbaa !5
  %381 = load i64, ptr %3, align 8, !tbaa !5
  %382 = getelementptr double, ptr %12, i64 %381
  %383 = getelementptr double, ptr %45, i64 %377
  %384 = getelementptr double, ptr %383, i64 %381
  %385 = mul nsw i64 %377, %42
  %gep1381 = getelementptr double, ptr %invariant.gep1360, i64 %385
  %386 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b22, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %382, ptr noundef nonnull @c__1, ptr noundef %384, ptr noundef %gep1381, ptr noundef nonnull @c__1) #6
  %.pre1547 = load i64, ptr %24, align 8, !tbaa !5
  br label %387

387:                                              ; preds = %379, %376
  %388 = phi i64 [ %.pre1547, %379 ], [ %377, %376 ]
  %389 = mul nsw i64 %388, %42
  %gep1383 = getelementptr double, ptr %invariant.gep1360, i64 %389
  %390 = call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %gep1383, ptr noundef nonnull @c__1) #6
  %391 = load i64, ptr %24, align 8, !tbaa !5
  %392 = mul nsw i64 %391, %42
  %393 = getelementptr double, ptr %44, i64 %390
  %394 = getelementptr double, ptr %393, i64 %392
  %395 = load double, ptr %394, align 8, !tbaa !9
  store double %395, ptr %22, align 8, !tbaa !9
  %396 = fcmp oge double %395, 0.000000e+00
  %397 = fneg double %395
  %398 = select i1 %396, double %395, double %397
  %399 = fdiv double 1.000000e+00, %398
  store double %399, ptr %33, align 8, !tbaa !9
  %gep1385 = getelementptr double, ptr %invariant.gep1360, i64 %392
  %400 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1385, ptr noundef nonnull @c__1) #6
  br label %.loopexit1279

401:                                              ; preds = %218
  %402 = mul nsw i64 %231, %36
  %403 = getelementptr double, ptr %38, i64 %231
  %404 = getelementptr i8, ptr %403, i64 -8
  %405 = getelementptr double, ptr %404, i64 %402
  %406 = load double, ptr %405, align 8, !tbaa !9
  store double %406, ptr %22, align 8, !tbaa !9
  %407 = fcmp oge double %406, 0.000000e+00
  %408 = fneg double %406
  %409 = select i1 %407, double %406, double %408
  %410 = add nsw i64 %231, -1
  %411 = mul nsw i64 %410, %36
  %412 = getelementptr double, ptr %403, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !9
  %414 = fcmp oge double %413, 0.000000e+00
  %415 = fneg double %413
  %416 = select i1 %414, double %413, double %415
  %417 = fcmp ult double %409, %416
  br i1 %417, label %424, label %418

418:                                              ; preds = %401
  %419 = load i64, ptr %3, align 8, !tbaa !5
  %420 = getelementptr double, ptr %45, i64 %410
  %421 = getelementptr double, ptr %420, i64 %419
  store double 1.000000e+00, ptr %421, align 8, !tbaa !9
  %422 = load double, ptr %405, align 8, !tbaa !9
  %423 = fdiv double %219, %422
  br label %429

424:                                              ; preds = %401
  %425 = fdiv double %225, %413
  %426 = load i64, ptr %3, align 8, !tbaa !5
  %427 = getelementptr double, ptr %45, i64 %410
  %428 = getelementptr double, ptr %427, i64 %426
  store double %425, ptr %428, align 8, !tbaa !9
  br label %429

429:                                              ; preds = %424, %418
  %.sink1593 = phi double [ 1.000000e+00, %424 ], [ %423, %418 ]
  %430 = phi i64 [ %426, %424 ], [ %419, %418 ]
  %gep1359 = getelementptr double, ptr %invariant.gep1356, i64 %231
  store double %.sink1593, ptr %gep1359, align 8, !tbaa !9
  %431 = getelementptr double, ptr %45, i64 %231
  %432 = getelementptr double, ptr %431, i64 %430
  store double 0.000000e+00, ptr %432, align 8, !tbaa !9
  %433 = getelementptr i8, ptr %431, i64 -8
  %434 = getelementptr double, ptr %433, i64 %159
  store double 0.000000e+00, ptr %434, align 8, !tbaa !9
  %435 = add i64 %231, -2
  store i64 %435, ptr %19, align 8, !tbaa !5
  %.not11471295 = icmp slt i64 %231, 3
  br i1 %.not11471295, label %._crit_edge1308, label %.lr.ph1298

.lr.ph1298:                                       ; preds = %429
  %436 = getelementptr double, ptr %45, i64 %410
  %437 = getelementptr double, ptr %436, i64 %430
  %438 = getelementptr double, ptr %431, i64 %159
  %min.iters.check1666 = icmp ult i64 %435, 16
  br i1 %min.iters.check1666, label %scalar.ph1665.preheader, label %vector.memcheck1621

vector.memcheck1621:                              ; preds = %.lr.ph1298
  %439 = shl i64 %430, 3
  %scevgep1622 = getelementptr i8, ptr %12, i64 %439
  %440 = shl i64 %231, 3
  %scevgep1625 = getelementptr i8, ptr %scevgep1624, i64 %440
  %441 = getelementptr i8, ptr %scevgep1626, i64 %439
  %scevgep1627 = getelementptr i8, ptr %441, i64 %440
  %442 = add i64 %440, -16
  %443 = mul i64 %36, %442
  %scevgep1628 = getelementptr i8, ptr %4, i64 %443
  %444 = getelementptr i8, ptr %scevgep1629, i64 %443
  %scevgep1630 = getelementptr i8, ptr %444, i64 %440
  %scevgep1632 = getelementptr i8, ptr %scevgep1631, i64 %440
  %445 = add i64 %440, -8
  %446 = mul i64 %36, %445
  %scevgep1633 = getelementptr i8, ptr %4, i64 %446
  %447 = getelementptr i8, ptr %scevgep1634, i64 %446
  %scevgep1635 = getelementptr i8, ptr %447, i64 %440
  %bound0 = icmp ult ptr %scevgep1622, %scevgep1625
  %bound1 = icmp ult ptr %scevgep1623, %437
  %found.conflict = and i1 %bound0, %bound1
  %bound01637 = icmp ult ptr %scevgep1622, %scevgep1630
  %bound11638 = icmp ult ptr %scevgep1628, %437
  %found.conflict1639 = and i1 %bound01637, %bound11638
  %conflict.rdx = or i1 %found.conflict, %found.conflict1639
  %bound01640 = icmp ult ptr %scevgep1622, %scevgep1632
  %bound11641 = icmp ult ptr %438, %437
  %found.conflict1642 = and i1 %bound01640, %bound11641
  %conflict.rdx1643 = or i1 %conflict.rdx, %found.conflict1642
  %bound01644 = icmp ult ptr %scevgep1622, %scevgep1635
  %bound11645 = icmp ult ptr %scevgep1633, %437
  %found.conflict1646 = and i1 %bound01644, %bound11645
  %conflict.rdx1647 = or i1 %conflict.rdx1643, %found.conflict1646
  %bound01648 = icmp ult ptr %scevgep1623, %scevgep1627
  %bound11649 = icmp ult ptr %437, %scevgep1625
  %found.conflict1650 = and i1 %bound01648, %bound11649
  %conflict.rdx1651 = or i1 %conflict.rdx1647, %found.conflict1650
  %bound01652 = icmp ult ptr %scevgep1623, %scevgep1630
  %bound11653 = icmp ult ptr %scevgep1628, %scevgep1625
  %found.conflict1654 = and i1 %bound01652, %bound11653
  %conflict.rdx1655 = or i1 %conflict.rdx1651, %found.conflict1654
  %bound01656 = icmp ult ptr %scevgep1623, %scevgep1632
  %bound11657 = icmp ult ptr %438, %scevgep1625
  %found.conflict1658 = and i1 %bound01656, %bound11657
  %conflict.rdx1659 = or i1 %conflict.rdx1655, %found.conflict1658
  %bound01660 = icmp ult ptr %scevgep1623, %scevgep1635
  %bound11661 = icmp ult ptr %scevgep1633, %scevgep1625
  %found.conflict1662 = and i1 %bound01660, %bound11661
  %conflict.rdx1663 = or i1 %conflict.rdx1659, %found.conflict1662
  br i1 %conflict.rdx1663, label %scalar.ph1665.preheader, label %vector.ph1667

vector.ph1667:                                    ; preds = %vector.memcheck1621
  %n.vec1669 = and i64 %435, -2
  %ind.end1670 = or i64 %435, 1
  %448 = load double, ptr %437, align 8, !tbaa !9, !alias.scope !22
  %broadcast.splatinsert = insertelement <2 x double> poison, double %448, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %449 = fneg <2 x double> %broadcast.splat
  %450 = load double, ptr %438, align 8, !tbaa !9, !alias.scope !25
  %broadcast.splatinsert1676 = insertelement <2 x double> poison, double %450, i64 0
  %broadcast.splat1677 = shufflevector <2 x double> %broadcast.splatinsert1676, <2 x double> poison, <2 x i32> zeroinitializer
  %451 = fneg <2 x double> %broadcast.splat1677
  br label %vector.body1672

vector.body1672:                                  ; preds = %vector.body1672, %vector.ph1667
  %index1673 = phi i64 [ 0, %vector.ph1667 ], [ %index.next1679, %vector.body1672 ]
  %offset.idx1674 = or disjoint i64 %index1673, 1
  %452 = getelementptr double, ptr %38, i64 %offset.idx1674
  %453 = getelementptr double, ptr %452, i64 %411
  %wide.load1675 = load <2 x double>, ptr %453, align 8, !tbaa !9, !alias.scope !27
  %454 = fmul <2 x double> %wide.load1675, %449
  %455 = getelementptr double, ptr %12, i64 %index1673
  %456 = getelementptr double, ptr %455, i64 %430
  store <2 x double> %454, ptr %456, align 8, !tbaa !9, !alias.scope !29, !noalias !31
  %457 = getelementptr double, ptr %452, i64 %402
  %wide.load1678 = load <2 x double>, ptr %457, align 8, !tbaa !9, !alias.scope !34
  %458 = fmul <2 x double> %wide.load1678, %451
  %459 = getelementptr double, ptr %455, i64 %159
  store <2 x double> %458, ptr %459, align 8, !tbaa !9, !alias.scope !35, !noalias !36
  %index.next1679 = add nuw i64 %index1673, 2
  %460 = icmp eq i64 %index.next1679, %n.vec1669
  br i1 %460, label %middle.block1664, label %vector.body1672, !llvm.loop !37

middle.block1664:                                 ; preds = %vector.body1672
  %cmp.n1680 = icmp eq i64 %435, %n.vec1669
  br i1 %cmp.n1680, label %.lr.ph1307.preheader, label %scalar.ph1665.preheader

scalar.ph1665.preheader:                          ; preds = %middle.block1664, %vector.memcheck1621, %.lr.ph1298
  %.210901296.ph = phi i64 [ 1, %vector.memcheck1621 ], [ 1, %.lr.ph1298 ], [ %ind.end1670, %middle.block1664 ]
  %461 = add nsw i64 %231, -2
  %xtraiter1799 = and i64 %231, 1
  %lcmp.mod1800.not = icmp eq i64 %xtraiter1799, 0
  br i1 %lcmp.mod1800.not, label %scalar.ph1665.prol.loopexit, label %scalar.ph1665.prol

scalar.ph1665.prol:                               ; preds = %scalar.ph1665.preheader
  %462 = load double, ptr %437, align 8, !tbaa !9
  %463 = fneg double %462
  %464 = getelementptr double, ptr %38, i64 %.210901296.ph
  %465 = getelementptr double, ptr %464, i64 %411
  %466 = load double, ptr %465, align 8, !tbaa !9
  %467 = fmul double %466, %463
  %468 = getelementptr double, ptr %45, i64 %.210901296.ph
  %469 = getelementptr double, ptr %468, i64 %430
  store double %467, ptr %469, align 8, !tbaa !9
  %470 = load double, ptr %438, align 8, !tbaa !9
  %471 = fneg double %470
  %472 = getelementptr double, ptr %464, i64 %402
  %473 = load double, ptr %472, align 8, !tbaa !9
  %474 = fmul double %473, %471
  %475 = getelementptr double, ptr %468, i64 %159
  store double %474, ptr %475, align 8, !tbaa !9
  %476 = add nuw i64 %.210901296.ph, 1
  br label %scalar.ph1665.prol.loopexit

scalar.ph1665.prol.loopexit:                      ; preds = %scalar.ph1665.prol, %scalar.ph1665.preheader
  %.210901296.unr = phi i64 [ %.210901296.ph, %scalar.ph1665.preheader ], [ %476, %scalar.ph1665.prol ]
  %477 = icmp eq i64 %461, %.210901296.ph
  br i1 %477, label %.lr.ph1307.preheader, label %scalar.ph1665

scalar.ph1665:                                    ; preds = %scalar.ph1665.prol.loopexit, %scalar.ph1665
  %.210901296 = phi i64 [ %505, %scalar.ph1665 ], [ %.210901296.unr, %scalar.ph1665.prol.loopexit ]
  %478 = load double, ptr %437, align 8, !tbaa !9
  %479 = fneg double %478
  %480 = getelementptr double, ptr %38, i64 %.210901296
  %481 = getelementptr double, ptr %480, i64 %411
  %482 = load double, ptr %481, align 8, !tbaa !9
  %483 = fmul double %482, %479
  %484 = getelementptr double, ptr %45, i64 %.210901296
  %485 = getelementptr double, ptr %484, i64 %430
  store double %483, ptr %485, align 8, !tbaa !9
  %486 = load double, ptr %438, align 8, !tbaa !9
  %487 = fneg double %486
  %488 = getelementptr double, ptr %480, i64 %402
  %489 = load double, ptr %488, align 8, !tbaa !9
  %490 = fmul double %489, %487
  %491 = getelementptr double, ptr %484, i64 %159
  store double %490, ptr %491, align 8, !tbaa !9
  %492 = load double, ptr %437, align 8, !tbaa !9
  %493 = fneg double %492
  %gep1829 = getelementptr double, ptr %invariant.gep1828, i64 %.210901296
  %494 = getelementptr double, ptr %gep1829, i64 %411
  %495 = load double, ptr %494, align 8, !tbaa !9
  %496 = fmul double %495, %493
  %497 = getelementptr double, ptr %12, i64 %.210901296
  %498 = getelementptr double, ptr %497, i64 %430
  store double %496, ptr %498, align 8, !tbaa !9
  %499 = load double, ptr %438, align 8, !tbaa !9
  %500 = fneg double %499
  %501 = getelementptr double, ptr %gep1829, i64 %402
  %502 = load double, ptr %501, align 8, !tbaa !9
  %503 = fmul double %502, %500
  %504 = getelementptr double, ptr %497, i64 %159
  store double %503, ptr %504, align 8, !tbaa !9
  %505 = add nuw i64 %.210901296, 2
  %exitcond1528.not.1 = icmp eq i64 %505, %410
  br i1 %exitcond1528.not.1, label %.lr.ph1307.preheader, label %scalar.ph1665, !llvm.loop !38

.lr.ph1307.preheader:                             ; preds = %scalar.ph1665.prol.loopexit, %scalar.ph1665, %middle.block1664
  br label %.lr.ph1307

.lr.ph1307:                                       ; preds = %.lr.ph1307.preheader, %.lr.ph1307._crit_edge
  %.310581306 = phi i64 [ %.5, %.lr.ph1307._crit_edge ], [ %435, %.lr.ph1307.preheader ]
  %.311031305 = phi i64 [ %.pre1575, %.lr.ph1307._crit_edge ], [ %435, %.lr.ph1307.preheader ]
  %506 = icmp sgt i64 %.311031305, %.310581306
  %.pre1575 = add nsw i64 %.311031305, -1
  br i1 %506, label %.lr.ph1307._crit_edge, label %507

507:                                              ; preds = %.lr.ph1307
  %.not1152 = icmp eq i64 %.311031305, 1
  br i1 %.not1152, label %..thread1194_crit_edge, label %508

..thread1194_crit_edge:                           ; preds = %507
  %.pre1542 = load i64, ptr %3, align 8, !tbaa !5
  br label %.thread1194

508:                                              ; preds = %507
  %509 = mul nsw i64 %.pre1575, %36
  %510 = getelementptr double, ptr %38, i64 %.311031305
  %511 = getelementptr double, ptr %510, i64 %509
  %512 = load double, ptr %511, align 8, !tbaa !9
  %513 = fcmp une double %512, 0.000000e+00
  %.pre1543 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %513, label %.thread1198, label %.thread1194

.thread1198:                                      ; preds = %508
  %514 = add nsw i64 %.311031305, -2
  %515 = getelementptr double, ptr %38, i64 %.pre1575
  %516 = getelementptr double, ptr %515, i64 %509
  %517 = getelementptr double, ptr %45, i64 %.pre1575
  %518 = getelementptr double, ptr %517, i64 %.pre1543
  %519 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull @c_b22, ptr noundef %516, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef %518, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef nonnull %23, ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %520 = load double, ptr %34, align 8, !tbaa !9
  %521 = fcmp ogt double %520, 1.000000e+00
  br i1 %521, label %560, label %thread-pre-split1204

.thread1194:                                      ; preds = %..thread1194_crit_edge, %508
  %522 = phi i64 [ %.pre1543, %508 ], [ %.pre1542, %..thread1194_crit_edge ]
  %.41197 = phi i64 [ %.pre1575, %508 ], [ 0, %..thread1194_crit_edge ]
  %523 = mul nsw i64 %.311031305, %36
  %524 = getelementptr double, ptr %38, i64 %.311031305
  %525 = getelementptr double, ptr %524, i64 %523
  %526 = getelementptr double, ptr %45, i64 %.311031305
  %527 = getelementptr double, ptr %526, i64 %522
  %528 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull @c_b22, ptr noundef %525, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef %527, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef nonnull %23, ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %529 = load double, ptr %34, align 8, !tbaa !9
  %530 = fcmp ogt double %529, 1.000000e+00
  br i1 %530, label %531, label %thread-pre-split1202

531:                                              ; preds = %.thread1194
  %532 = load double, ptr %526, align 8, !tbaa !9
  %533 = fdiv double %131, %529
  %534 = fcmp ogt double %532, %533
  br i1 %534, label %535, label %thread-pre-split1202

535:                                              ; preds = %531
  %536 = load double, ptr %23, align 16, !tbaa !9
  %537 = fdiv double %536, %529
  store double %537, ptr %23, align 16, !tbaa !9
  %538 = load double, ptr %164, align 16, !tbaa !9
  %539 = fdiv double %538, %529
  store double %539, ptr %164, align 16, !tbaa !9
  %540 = load double, ptr %32, align 8, !tbaa !9
  %541 = fdiv double %540, %529
  store double %541, ptr %32, align 8, !tbaa !9
  br label %542

thread-pre-split1202:                             ; preds = %.thread1194, %531
  %.pr1203 = load double, ptr %32, align 8, !tbaa !9
  br label %542

542:                                              ; preds = %thread-pre-split1202, %535
  %543 = phi double [ %.pr1203, %thread-pre-split1202 ], [ %541, %535 ]
  %544 = fcmp une double %543, 1.000000e+00
  br i1 %544, label %545, label %550

545:                                              ; preds = %542
  %546 = load i64, ptr %3, align 8, !tbaa !5
  %547 = getelementptr double, ptr %12, i64 %546
  %548 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef %547, ptr noundef nonnull @c__1) #6
  %549 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef %167, ptr noundef nonnull @c__1) #6
  br label %550

550:                                              ; preds = %545, %542
  %551 = load double, ptr %23, align 16, !tbaa !9
  %552 = load i64, ptr %3, align 8, !tbaa !5
  %553 = getelementptr double, ptr %526, i64 %552
  store double %551, ptr %553, align 8, !tbaa !9
  %554 = load double, ptr %164, align 16, !tbaa !9
  %555 = getelementptr double, ptr %526, i64 %159
  store double %554, ptr %555, align 8, !tbaa !9
  store i64 %.pre1575, ptr %19, align 8, !tbaa !5
  %556 = fneg double %551
  store double %556, ptr %22, align 8, !tbaa !9
  %gep1304 = getelementptr double, ptr %invariant.gep1299, i64 %523
  %557 = getelementptr double, ptr %12, i64 %552
  %558 = call i32 @f2c_daxpy(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1304, ptr noundef nonnull @c__1, ptr noundef %557, ptr noundef nonnull @c__1) #6
  store i64 %.pre1575, ptr %19, align 8, !tbaa !5
  %559 = load double, ptr %164, align 16, !tbaa !9
  br label %.lr.ph1307._crit_edge.sink.split

560:                                              ; preds = %.thread1198
  %561 = load double, ptr %517, align 8, !tbaa !9
  store double %561, ptr %22, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %45, i64 %.311031305
  %563 = load double, ptr %562, align 8, !tbaa !9
  %564 = fcmp oge double %561, %563
  %565 = select i1 %564, double %561, double %563
  %566 = fdiv double %131, %520
  %567 = fcmp ogt double %565, %566
  br i1 %567, label %568, label %thread-pre-split1204

568:                                              ; preds = %560
  %569 = fdiv double 1.000000e+00, %520
  store double %569, ptr %27, align 8, !tbaa !9
  %570 = load <2 x double>, ptr %23, align 16, !tbaa !9
  %571 = insertelement <2 x double> poison, double %569, i64 0
  %572 = shufflevector <2 x double> %571, <2 x double> poison, <2 x i32> zeroinitializer
  %573 = fmul <2 x double> %572, %570
  store <2 x double> %573, ptr %23, align 16, !tbaa !9
  %574 = load <2 x double>, ptr %164, align 16, !tbaa !9
  %575 = fmul <2 x double> %572, %574
  store <2 x double> %575, ptr %164, align 16, !tbaa !9
  %576 = load double, ptr %32, align 8, !tbaa !9
  %577 = fmul double %569, %576
  store double %577, ptr %32, align 8, !tbaa !9
  br label %578

thread-pre-split1204:                             ; preds = %.thread1198, %560
  %.pr1205 = load double, ptr %32, align 8, !tbaa !9
  br label %578

578:                                              ; preds = %thread-pre-split1204, %568
  %579 = phi double [ %.pr1205, %thread-pre-split1204 ], [ %577, %568 ]
  %580 = fcmp une double %579, 1.000000e+00
  br i1 %580, label %581, label %586

581:                                              ; preds = %578
  %582 = load i64, ptr %3, align 8, !tbaa !5
  %583 = getelementptr double, ptr %12, i64 %582
  %584 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef %583, ptr noundef nonnull @c__1) #6
  %585 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef %167, ptr noundef nonnull @c__1) #6
  br label %586

586:                                              ; preds = %581, %578
  %587 = load i64, ptr %3, align 8, !tbaa !5
  %588 = getelementptr double, ptr %517, i64 %587
  %589 = load <2 x double>, ptr %23, align 16, !tbaa !9
  store <2 x double> %589, ptr %588, align 8, !tbaa !9
  %590 = getelementptr double, ptr %517, i64 %159
  %591 = load <2 x double>, ptr %164, align 16, !tbaa !9
  store <2 x double> %591, ptr %590, align 8, !tbaa !9
  store i64 %514, ptr %19, align 8, !tbaa !5
  %592 = extractelement <2 x double> %589, i64 0
  %593 = fneg double %592
  store double %593, ptr %22, align 8, !tbaa !9
  %gep1300 = getelementptr double, ptr %invariant.gep1299, i64 %509
  %594 = getelementptr double, ptr %12, i64 %587
  %595 = call i32 @f2c_daxpy(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1300, ptr noundef nonnull @c__1, ptr noundef %594, ptr noundef nonnull @c__1) #6
  store i64 %514, ptr %19, align 8, !tbaa !5
  %596 = load double, ptr %165, align 8, !tbaa !9
  %597 = fneg double %596
  store double %597, ptr %22, align 8, !tbaa !9
  %598 = mul nsw i64 %.311031305, %36
  %gep1302 = getelementptr double, ptr %invariant.gep1299, i64 %598
  %599 = load i64, ptr %3, align 8, !tbaa !5
  %600 = getelementptr double, ptr %12, i64 %599
  %601 = call i32 @f2c_daxpy(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1302, ptr noundef nonnull @c__1, ptr noundef %600, ptr noundef nonnull @c__1) #6
  store i64 %514, ptr %19, align 8, !tbaa !5
  %602 = load double, ptr %164, align 16, !tbaa !9
  %603 = fneg double %602
  store double %603, ptr %22, align 8, !tbaa !9
  %604 = call i32 @f2c_daxpy(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1300, ptr noundef nonnull @c__1, ptr noundef %167, ptr noundef nonnull @c__1) #6
  store i64 %514, ptr %19, align 8, !tbaa !5
  %605 = load double, ptr %166, align 8, !tbaa !9
  br label %.lr.ph1307._crit_edge.sink.split

.lr.ph1307._crit_edge.sink.split:                 ; preds = %550, %586
  %.sink1781 = phi double [ %559, %550 ], [ %605, %586 ]
  %gep1302.sink = phi ptr [ %gep1304, %550 ], [ %gep1302, %586 ]
  %.5.ph = phi i64 [ %.41197, %550 ], [ %514, %586 ]
  %606 = fneg double %.sink1781
  store double %606, ptr %22, align 8, !tbaa !9
  %607 = call i32 @f2c_daxpy(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1302.sink, ptr noundef nonnull @c__1, ptr noundef %167, ptr noundef nonnull @c__1) #6
  br label %.lr.ph1307._crit_edge

.lr.ph1307._crit_edge:                            ; preds = %.lr.ph1307._crit_edge.sink.split, %.lr.ph1307
  %.5 = phi i64 [ %.310581306, %.lr.ph1307 ], [ %.5.ph, %.lr.ph1307._crit_edge.sink.split ]
  %608 = icmp sgt i64 %.311031305, 1
  br i1 %608, label %.lr.ph1307, label %._crit_edge1308, !llvm.loop !39

._crit_edge1308:                                  ; preds = %.lr.ph1307._crit_edge, %429
  br i1 %.not1148, label %609, label %660

609:                                              ; preds = %._crit_edge1308
  %610 = load i64, ptr %3, align 8, !tbaa !5
  %611 = getelementptr double, ptr %12, i64 %610
  %612 = add nsw i64 %.010731390, -1
  %613 = mul nsw i64 %612, %42
  %gep1377 = getelementptr double, ptr %invariant.gep1360, i64 %613
  %614 = call i32 @f2c_dcopy(ptr noundef nonnull %24, ptr noundef %611, ptr noundef nonnull @c__1, ptr noundef %gep1377, ptr noundef nonnull @c__1) #6
  %615 = mul nsw i64 %.010731390, %42
  %gep1379 = getelementptr double, ptr %invariant.gep1360, i64 %615
  %616 = call i32 @f2c_dcopy(ptr noundef nonnull %24, ptr noundef %167, ptr noundef nonnull @c__1, ptr noundef %gep1379, ptr noundef nonnull @c__1) #6
  %617 = load i64, ptr %24, align 8, !tbaa !5
  store i64 %617, ptr %19, align 8, !tbaa !5
  %.not11491316 = icmp slt i64 %617, 1
  br i1 %.not11491316, label %633, label %.lr.ph1320

.lr.ph1320:                                       ; preds = %609, %.lr.ph1320
  %.010691318 = phi double [ %631, %.lr.ph1320 ], [ 0.000000e+00, %609 ]
  %.310911317 = phi i64 [ %632, %.lr.ph1320 ], [ 1, %609 ]
  %618 = getelementptr double, ptr %44, i64 %.310911317
  %619 = getelementptr double, ptr %618, i64 %613
  %620 = load double, ptr %619, align 8, !tbaa !9
  %621 = fcmp oge double %620, 0.000000e+00
  %622 = fneg double %620
  %623 = select i1 %621, double %620, double %622
  %624 = getelementptr double, ptr %618, i64 %615
  %625 = load double, ptr %624, align 8, !tbaa !9
  %626 = fcmp oge double %625, 0.000000e+00
  %627 = fneg double %625
  %628 = select i1 %626, double %625, double %627
  %629 = fadd double %623, %628
  %630 = fcmp oge double %.010691318, %629
  %631 = select i1 %630, double %.010691318, double %629
  %632 = add nuw i64 %.310911317, 1
  %exitcond1530.not = icmp eq i64 %.310911317, %617
  br i1 %exitcond1530.not, label %._crit_edge1321, label %.lr.ph1320, !llvm.loop !40

._crit_edge1321:                                  ; preds = %.lr.ph1320
  store double %620, ptr %22, align 8, !tbaa !9
  br label %633

633:                                              ; preds = %._crit_edge1321, %609
  %.01069.lcssa = phi double [ %631, %._crit_edge1321 ], [ 0.000000e+00, %609 ]
  %634 = fdiv double 1.000000e+00, %.01069.lcssa
  store double %634, ptr %33, align 8, !tbaa !9
  %635 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %33, ptr noundef %gep1377, ptr noundef nonnull @c__1) #6
  %636 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %33, ptr noundef %gep1379, ptr noundef nonnull @c__1) #6
  %637 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %637, ptr %19, align 8, !tbaa !5
  %638 = load i64, ptr %24, align 8, !tbaa !5
  %.not1150.not1324 = icmp slt i64 %638, %637
  br i1 %.not1150.not1324, label %.lr.ph1327.preheader, label %.loopexit1279

.lr.ph1327.preheader:                             ; preds = %633
  %639 = sub i64 %637, %638
  %min.iters.check1610 = icmp ult i64 %639, 4
  %or.cond1782 = select i1 %min.iters.check1610, i1 true, i1 %diff.check1607
  br i1 %or.cond1782, label %.lr.ph1327.preheader1792, label %vector.ph1611

vector.ph1611:                                    ; preds = %.lr.ph1327.preheader
  %n.vec1613 = and i64 %639, -4
  %ind.end1614 = add i64 %638, %n.vec1613
  %gep1839 = getelementptr double, ptr %invariant.gep1838, i64 %638
  br label %vector.body1616

vector.body1616:                                  ; preds = %vector.body1616, %vector.ph1611
  %index1617 = phi i64 [ 0, %vector.ph1611 ], [ %index.next1619, %vector.body1616 ]
  %gep1831 = getelementptr double, ptr %gep1839, i64 %index1617
  %640 = getelementptr double, ptr %gep1831, i64 %613
  %641 = getelementptr i8, ptr %640, i64 16
  store <2 x double> zeroinitializer, ptr %640, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %641, align 8, !tbaa !9
  %642 = getelementptr double, ptr %gep1831, i64 %615
  %643 = getelementptr i8, ptr %642, i64 16
  store <2 x double> zeroinitializer, ptr %642, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %643, align 8, !tbaa !9
  %index.next1619 = add nuw i64 %index1617, 4
  %644 = icmp eq i64 %index.next1619, %n.vec1613
  br i1 %644, label %middle.block1608, label %vector.body1616, !llvm.loop !41

middle.block1608:                                 ; preds = %vector.body1616
  %cmp.n1620 = icmp eq i64 %639, %n.vec1613
  br i1 %cmp.n1620, label %.loopexit1279, label %.lr.ph1327.preheader1792

.lr.ph1327.preheader1792:                         ; preds = %middle.block1608, %.lr.ph1327.preheader
  %.41092.in1325.ph = phi i64 [ %638, %.lr.ph1327.preheader ], [ %ind.end1614, %middle.block1608 ]
  %645 = sub i64 %637, %.41092.in1325.ph
  %xtraiter1801 = and i64 %645, 3
  %lcmp.mod1802.not = icmp eq i64 %xtraiter1801, 0
  br i1 %lcmp.mod1802.not, label %.lr.ph1327.prol.loopexit, label %.lr.ph1327.prol

.lr.ph1327.prol:                                  ; preds = %.lr.ph1327.preheader1792, %.lr.ph1327.prol
  %.41092.in1325.prol = phi i64 [ %.41092.prol, %.lr.ph1327.prol ], [ %.41092.in1325.ph, %.lr.ph1327.preheader1792 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph1327.prol ], [ 0, %.lr.ph1327.preheader1792 ]
  %.41092.prol = add nsw i64 %.41092.in1325.prol, 1
  %646 = getelementptr double, ptr %44, i64 %.41092.prol
  %647 = getelementptr double, ptr %646, i64 %613
  store double 0.000000e+00, ptr %647, align 8, !tbaa !9
  %648 = getelementptr double, ptr %646, i64 %615
  store double 0.000000e+00, ptr %648, align 8, !tbaa !9
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1801
  br i1 %prol.iter.cmp.not, label %.lr.ph1327.prol.loopexit, label %.lr.ph1327.prol, !llvm.loop !42

.lr.ph1327.prol.loopexit:                         ; preds = %.lr.ph1327.prol, %.lr.ph1327.preheader1792
  %.41092.in1325.unr = phi i64 [ %.41092.in1325.ph, %.lr.ph1327.preheader1792 ], [ %.41092.prol, %.lr.ph1327.prol ]
  %649 = sub i64 %.41092.in1325.ph, %637
  %650 = icmp ugt i64 %649, -4
  br i1 %650, label %.loopexit1279, label %.lr.ph1327

.lr.ph1327:                                       ; preds = %.lr.ph1327.prol.loopexit, %.lr.ph1327
  %.41092.in1325 = phi i64 [ %.41092.3, %.lr.ph1327 ], [ %.41092.in1325.unr, %.lr.ph1327.prol.loopexit ]
  %gep1833 = getelementptr double, ptr %invariant.gep1832, i64 %.41092.in1325
  %651 = getelementptr double, ptr %gep1833, i64 %613
  store double 0.000000e+00, ptr %651, align 8, !tbaa !9
  %652 = getelementptr double, ptr %gep1833, i64 %615
  store double 0.000000e+00, ptr %652, align 8, !tbaa !9
  %gep1835 = getelementptr double, ptr %invariant.gep1834, i64 %.41092.in1325
  %653 = getelementptr double, ptr %gep1835, i64 %613
  store double 0.000000e+00, ptr %653, align 8, !tbaa !9
  %654 = getelementptr double, ptr %gep1835, i64 %615
  store double 0.000000e+00, ptr %654, align 8, !tbaa !9
  %gep1837 = getelementptr double, ptr %invariant.gep1836, i64 %.41092.in1325
  %655 = getelementptr double, ptr %gep1837, i64 %613
  store double 0.000000e+00, ptr %655, align 8, !tbaa !9
  %656 = getelementptr double, ptr %gep1837, i64 %615
  store double 0.000000e+00, ptr %656, align 8, !tbaa !9
  %.41092.3 = add nsw i64 %.41092.in1325, 4
  %657 = getelementptr double, ptr %44, i64 %.41092.3
  %658 = getelementptr double, ptr %657, i64 %613
  store double 0.000000e+00, ptr %658, align 8, !tbaa !9
  %659 = getelementptr double, ptr %657, i64 %615
  store double 0.000000e+00, ptr %659, align 8, !tbaa !9
  %exitcond1531.not.3 = icmp eq i64 %.41092.3, %637
  br i1 %exitcond1531.not.3, label %.loopexit1279, label %.lr.ph1327, !llvm.loop !43

660:                                              ; preds = %._crit_edge1308
  %661 = load i64, ptr %24, align 8, !tbaa !5
  %662 = icmp sgt i64 %661, 2
  br i1 %662, label %663, label %676

663:                                              ; preds = %660
  %664 = add nsw i64 %661, -2
  store i64 %664, ptr %19, align 8, !tbaa !5
  %665 = load i64, ptr %3, align 8, !tbaa !5
  %666 = getelementptr double, ptr %12, i64 %665
  %667 = add nsw i64 %661, -1
  %668 = getelementptr double, ptr %45, i64 %667
  %669 = getelementptr double, ptr %668, i64 %665
  %670 = mul nsw i64 %667, %42
  %gep1367 = getelementptr double, ptr %invariant.gep1360, i64 %670
  %671 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b22, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %666, ptr noundef nonnull @c__1, ptr noundef %669, ptr noundef %gep1367, ptr noundef nonnull @c__1) #6
  %672 = load i64, ptr %24, align 8, !tbaa !5
  %673 = add nsw i64 %672, -2
  store i64 %673, ptr %19, align 8, !tbaa !5
  %gep1369 = getelementptr double, ptr %invariant.gep1356, i64 %672
  %674 = mul nsw i64 %672, %42
  %gep1371 = getelementptr double, ptr %invariant.gep1360, i64 %674
  %675 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b22, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %167, ptr noundef nonnull @c__1, ptr noundef %gep1369, ptr noundef %gep1371, ptr noundef nonnull @c__1) #6
  br label %686

676:                                              ; preds = %660
  %677 = add nsw i64 %661, -1
  %678 = load i64, ptr %3, align 8, !tbaa !5
  %679 = getelementptr double, ptr %45, i64 %677
  %680 = getelementptr double, ptr %679, i64 %678
  %681 = mul nsw i64 %677, %42
  %gep1361 = getelementptr double, ptr %invariant.gep1360, i64 %681
  %682 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef %680, ptr noundef %gep1361, ptr noundef nonnull @c__1) #6
  %683 = load i64, ptr %24, align 8, !tbaa !5
  %gep1363 = getelementptr double, ptr %invariant.gep1356, i64 %683
  %684 = mul nsw i64 %683, %42
  %gep1365 = getelementptr double, ptr %invariant.gep1360, i64 %684
  %685 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef %gep1363, ptr noundef %gep1365, ptr noundef nonnull @c__1) #6
  br label %686

686:                                              ; preds = %676, %663
  %687 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %687, ptr %19, align 8, !tbaa !5
  %.not11511309 = icmp slt i64 %687, 1
  %.pre1544 = load i64, ptr %24, align 8, !tbaa !5
  %.pre1577 = add nsw i64 %.pre1544, -1
  %.pre1579 = mul nsw i64 %.pre1577, %42
  br i1 %.not11511309, label %._crit_edge1565, label %.lr.ph1313

.lr.ph1313:                                       ; preds = %686
  %688 = mul nsw i64 %.pre1544, %42
  br label %689

689:                                              ; preds = %.lr.ph1313, %689
  %.110701311 = phi double [ 0.000000e+00, %.lr.ph1313 ], [ %703, %689 ]
  %.510931310 = phi i64 [ 1, %.lr.ph1313 ], [ %704, %689 ]
  %690 = getelementptr double, ptr %44, i64 %.510931310
  %691 = getelementptr double, ptr %690, i64 %.pre1579
  %692 = load double, ptr %691, align 8, !tbaa !9
  %693 = fcmp oge double %692, 0.000000e+00
  %694 = fneg double %692
  %695 = select i1 %693, double %692, double %694
  %696 = getelementptr double, ptr %690, i64 %688
  %697 = load double, ptr %696, align 8, !tbaa !9
  %698 = fcmp oge double %697, 0.000000e+00
  %699 = fneg double %697
  %700 = select i1 %698, double %697, double %699
  %701 = fadd double %695, %700
  %702 = fcmp oge double %.110701311, %701
  %703 = select i1 %702, double %.110701311, double %701
  %704 = add nuw i64 %.510931310, 1
  %exitcond1529.not = icmp eq i64 %.510931310, %687
  br i1 %exitcond1529.not, label %._crit_edge1314, label %689, !llvm.loop !44

._crit_edge1314:                                  ; preds = %689
  store double %692, ptr %22, align 8, !tbaa !9
  br label %._crit_edge1565

._crit_edge1565:                                  ; preds = %686, %._crit_edge1314
  %.11070.lcssa = phi double [ %703, %._crit_edge1314 ], [ 0.000000e+00, %686 ]
  %705 = fdiv double 1.000000e+00, %.11070.lcssa
  store double %705, ptr %33, align 8, !tbaa !9
  %gep1373 = getelementptr double, ptr %invariant.gep1360, i64 %.pre1579
  %706 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1373, ptr noundef nonnull @c__1) #6
  %707 = load i64, ptr %24, align 8, !tbaa !5
  %708 = mul nsw i64 %707, %42
  %gep1375 = getelementptr double, ptr %invariant.gep1360, i64 %708
  %709 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1375, ptr noundef nonnull @c__1) #6
  br label %.loopexit1279

.loopexit1279:                                    ; preds = %.lr.ph1327.prol.loopexit, %.lr.ph1327, %middle.block1608, %.lr.ph1351.preheader, %633, %353, %387, %._crit_edge1565
  %spec.select1159.v = phi i64 [ -1, %387 ], [ -2, %._crit_edge1565 ], [ -1, %353 ], [ -2, %633 ], [ -1, %.lr.ph1351.preheader ], [ -2, %middle.block1608 ], [ -2, %.lr.ph1327 ], [ -2, %.lr.ph1327.prol.loopexit ]
  %spec.select1159 = add nsw i64 %spec.select1159.v, %.010731390
  %710 = icmp eq i64 %.1107811671176.fr, 1
  br i1 %710, label %.thread1219, label %.thread1207

.thread1207:                                      ; preds = %.thread1168, %.loopexit1279
  %.110741211 = phi i64 [ %spec.select1159, %.loopexit1279 ], [ %.010731390, %.thread1168 ]
  %.fr = phi i64 [ %.1107811671176.fr, %.loopexit1279 ], [ %.1107811661170, %.thread1168 ]
  %711 = icmp eq i64 %.fr, -1
  %spec.select1249 = select i1 %711, i64 1, i64 %.fr
  br label %.thread1219

.thread1219:                                      ; preds = %.thread1207, %185, %.loopexit1279, %171
  %.1107412111222 = phi i64 [ %.010731390, %171 ], [ %spec.select1159, %.loopexit1279 ], [ %.010731390, %185 ], [ %.110741211, %.thread1207 ]
  %712 = phi i64 [ 0, %171 ], [ 0, %.loopexit1279 ], [ 0, %185 ], [ %spec.select1249, %.thread1207 ]
  %713 = load i64, ptr %24, align 8, !tbaa !5
  %714 = add nsw i64 %713, -1
  store i64 %714, ptr %24, align 8, !tbaa !5
  %715 = icmp sgt i64 %713, 1
  br i1 %715, label %171, label %.loopexit1282, !llvm.loop !45

.loopexit1282:                                    ; preds = %.thread1219, %160, %158
  br i1 %53, label %716, label %.loopexit1278

716:                                              ; preds = %.loopexit1282
  %717 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %717, ptr %19, align 8, !tbaa !5
  %invariant.gep1469 = getelementptr i8, ptr %38, i64 8
  %invariant.gep1473 = getelementptr double, ptr %12, i64 %159
  %invariant.gep1477 = getelementptr i8, ptr %41, i64 8
  %invariant.gep1489 = getelementptr double, ptr %45, i64 %159
  store i64 1, ptr %24, align 8, !tbaa !5
  %.not11291509 = icmp slt i64 %717, 1
  br i1 %.not11291509, label %.loopexit1278, label %.lr.ph1514

.lr.ph1514:                                       ; preds = %716
  %.not1130 = icmp eq i64 %56, 0
  %718 = add i64 %36, 1
  %719 = getelementptr inbounds i8, ptr %23, i64 16
  %720 = getelementptr inbounds i8, ptr %23, i64 8
  %721 = getelementptr inbounds i8, ptr %23, i64 24
  %.not1135 = icmp eq i64 %55, 0
  %722 = add i64 %16, 8
  %scevgep1716 = getelementptr i8, ptr %12, i64 8
  %723 = shl i64 %126, 4
  %724 = or disjoint i64 %723, 8
  %scevgep1719 = getelementptr i8, ptr %12, i64 %724
  %scevgep1721 = getelementptr i8, ptr %12, i64 %723
  %scevgep1725 = getelementptr i8, ptr %4, i64 -8
  %scevgep1727 = getelementptr i8, ptr %4, i64 8
  %ident.check1714.not = icmp eq i64 %36, 1
  %bound01733 = icmp ult ptr %scevgep1716, %12
  %725 = and i64 %39, 2305843009213693948
  %diff.check1699 = icmp eq i64 %725, 0
  %invariant.gep1840 = getelementptr i8, ptr %41, i64 8
  %invariant.gep1842 = getelementptr i8, ptr %41, i64 16
  %invariant.gep1844 = getelementptr i8, ptr %41, i64 24
  %ident.check.not = icmp eq i64 %36, 1
  br label %726

726:                                              ; preds = %.lr.ph1514, %.thread1241
  %.210751512 = phi i64 [ 1, %.lr.ph1514 ], [ %.3107612331244, %.thread1241 ]
  %.310801511 = phi i64 [ 0, %.lr.ph1514 ], [ %1439, %.thread1241 ]
  %storemerge11281510 = phi i64 [ 1, %.lr.ph1514 ], [ %1441, %.thread1241 ]
  %727 = icmp eq i64 %.310801511, -1
  br i1 %727, label %.thread1241, label %728

728:                                              ; preds = %726
  %729 = load i64, ptr %3, align 8, !tbaa !5
  %730 = icmp eq i64 %storemerge11281510, %729
  br i1 %730, label %737, label %731

731:                                              ; preds = %728
  %732 = mul nsw i64 %storemerge11281510, %36
  %gep1470 = getelementptr double, ptr %invariant.gep1469, i64 %storemerge11281510
  %733 = getelementptr double, ptr %gep1470, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !9
  %735 = fcmp oeq double %734, 0.000000e+00
  br i1 %735, label %737, label %736

736:                                              ; preds = %731
  br label %737

737:                                              ; preds = %731, %728, %736
  %.41081 = phi i64 [ %.310801511, %728 ], [ %.310801511, %731 ], [ 1, %736 ]
  br i1 %.not1130, label %741, label %738

738:                                              ; preds = %737
  %739 = getelementptr inbounds i64, ptr %35, i64 %storemerge11281510
  %740 = load i64, ptr %739, align 8, !tbaa !5
  %.not1131 = icmp eq i64 %740, 0
  br i1 %.not1131, label %.thread1235, label %741

741:                                              ; preds = %738, %737
  %742 = mul i64 %storemerge11281510, %718
  %743 = getelementptr inbounds double, ptr %38, i64 %742
  %744 = load double, ptr %743, align 8, !tbaa !9
  store double %744, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  %.not1132 = icmp eq i64 %.41081, 0
  br i1 %.not1132, label %764, label %745

745:                                              ; preds = %741
  %746 = add nsw i64 %storemerge11281510, 1
  %747 = mul nsw i64 %746, %36
  %748 = getelementptr double, ptr %38, i64 %storemerge11281510
  %749 = getelementptr double, ptr %748, i64 %747
  %750 = load double, ptr %749, align 8, !tbaa !9
  %751 = fcmp oge double %750, 0.000000e+00
  %752 = fneg double %750
  %753 = select i1 %751, double %750, double %752
  %754 = call double @sqrt(double noundef %753) #6
  %755 = load i64, ptr %24, align 8, !tbaa !5
  %756 = mul nsw i64 %755, %36
  %gep1472 = getelementptr double, ptr %invariant.gep1469, i64 %755
  %757 = getelementptr double, ptr %gep1472, i64 %756
  %758 = load double, ptr %757, align 8, !tbaa !9
  %759 = fcmp oge double %758, 0.000000e+00
  %760 = fneg double %758
  %761 = select i1 %759, double %758, double %760
  %762 = call double @sqrt(double noundef %761) #6
  %763 = fmul double %754, %762
  store double %763, ptr %25, align 8, !tbaa !9
  %.pre1548 = load double, ptr %26, align 8
  br label %764

764:                                              ; preds = %745, %741
  %765 = phi double [ %763, %745 ], [ 0.000000e+00, %741 ]
  %766 = phi double [ %.pre1548, %745 ], [ %744, %741 ]
  %767 = fcmp oge double %766, 0.000000e+00
  %768 = fneg double %766
  %769 = select i1 %767, double %766, double %768
  %770 = fcmp oge double %765, 0.000000e+00
  %771 = fneg double %765
  %772 = select i1 %770, double %765, double %771
  %773 = fadd double %769, %772
  %774 = fmul double %124, %773
  store double %774, ptr %22, align 8, !tbaa !9
  %775 = fcmp oge double %774, %129
  %776 = select i1 %775, double %774, double %129
  store double %776, ptr %31, align 8, !tbaa !9
  %777 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %.not1132, label %778, label %1015

778:                                              ; preds = %764
  %779 = load i64, ptr %3, align 8, !tbaa !5
  %780 = getelementptr double, ptr %45, i64 %777
  %781 = getelementptr double, ptr %780, i64 %779
  store double 1.000000e+00, ptr %781, align 8, !tbaa !9
  %invariant.gep1440 = getelementptr double, ptr %12, i64 %779
  %.not1139.not1442 = icmp slt i64 %777, %779
  br i1 %.not1139.not1442, label %.lr.ph1445, label %._crit_edge1446.thread

._crit_edge1446.thread:                           ; preds = %778
  store i64 %779, ptr %20, align 8, !tbaa !5
  br label %._crit_edge1462

.lr.ph1445:                                       ; preds = %778
  %782 = getelementptr double, ptr %38, i64 %777
  %783 = sub i64 %779, %777
  %min.iters.check1685 = icmp ugt i64 %783, 5
  %or.cond1783 = select i1 %min.iters.check1685, i1 %ident.check.not, i1 false
  br i1 %or.cond1783, label %vector.memcheck1681, label %scalar.ph1684.preheader

vector.memcheck1681:                              ; preds = %.lr.ph1445
  %784 = shl i64 %779, 3
  %785 = shl i64 %777, 3
  %786 = add i64 %722, %784
  %787 = add i64 %785, %15
  %788 = sub i64 %786, %787
  %diff.check1682 = icmp ult i64 %788, 32
  br i1 %diff.check1682, label %scalar.ph1684.preheader, label %vector.ph1686

vector.ph1686:                                    ; preds = %vector.memcheck1681
  %n.vec1688 = and i64 %783, -4
  %ind.end1689 = add i64 %777, %n.vec1688
  br label %vector.body1691

vector.body1691:                                  ; preds = %vector.body1691, %vector.ph1686
  %index1692 = phi i64 [ 0, %vector.ph1686 ], [ %index.next1696, %vector.body1691 ]
  %offset.idx1693 = add i64 %777, %index1692
  %789 = getelementptr double, ptr %782, i64 %offset.idx1693
  %790 = getelementptr i8, ptr %789, i64 8
  %791 = getelementptr i8, ptr %789, i64 24
  %wide.load1694 = load <2 x double>, ptr %790, align 8, !tbaa !9
  %wide.load1695 = load <2 x double>, ptr %791, align 8, !tbaa !9
  %792 = fneg <2 x double> %wide.load1694
  %793 = fneg <2 x double> %wide.load1695
  %794 = getelementptr double, ptr %invariant.gep1440, i64 %offset.idx1693
  %795 = getelementptr i8, ptr %794, i64 16
  store <2 x double> %792, ptr %794, align 8, !tbaa !9
  store <2 x double> %793, ptr %795, align 8, !tbaa !9
  %index.next1696 = add nuw i64 %index1692, 4
  %796 = icmp eq i64 %index.next1696, %n.vec1688
  br i1 %796, label %middle.block1683, label %vector.body1691, !llvm.loop !46

middle.block1683:                                 ; preds = %vector.body1691
  %cmp.n1697 = icmp eq i64 %783, %n.vec1688
  br i1 %cmp.n1697, label %._crit_edge1446, label %scalar.ph1684.preheader

scalar.ph1684.preheader:                          ; preds = %middle.block1683, %vector.memcheck1681, %.lr.ph1445
  %.61094.in1443.ph = phi i64 [ %777, %vector.memcheck1681 ], [ %777, %.lr.ph1445 ], [ %ind.end1689, %middle.block1683 ]
  %797 = sub i64 %779, %.61094.in1443.ph
  %xtraiter1809 = and i64 %797, 3
  %lcmp.mod1810.not = icmp eq i64 %xtraiter1809, 0
  br i1 %lcmp.mod1810.not, label %scalar.ph1684.prol.loopexit, label %scalar.ph1684.prol

scalar.ph1684.prol:                               ; preds = %scalar.ph1684.preheader, %scalar.ph1684.prol
  %.61094.in1443.prol = phi i64 [ %.61094.prol, %scalar.ph1684.prol ], [ %.61094.in1443.ph, %scalar.ph1684.preheader ]
  %prol.iter1811 = phi i64 [ %prol.iter1811.next, %scalar.ph1684.prol ], [ 0, %scalar.ph1684.preheader ]
  %.61094.prol = add nsw i64 %.61094.in1443.prol, 1
  %798 = mul nsw i64 %.61094.prol, %36
  %799 = getelementptr double, ptr %782, i64 %798
  %800 = load double, ptr %799, align 8, !tbaa !9
  %801 = fneg double %800
  %gep1441.prol = getelementptr double, ptr %invariant.gep1440, i64 %.61094.in1443.prol
  store double %801, ptr %gep1441.prol, align 8, !tbaa !9
  %prol.iter1811.next = add i64 %prol.iter1811, 1
  %prol.iter1811.cmp.not = icmp eq i64 %prol.iter1811.next, %xtraiter1809
  br i1 %prol.iter1811.cmp.not, label %scalar.ph1684.prol.loopexit, label %scalar.ph1684.prol, !llvm.loop !47

scalar.ph1684.prol.loopexit:                      ; preds = %scalar.ph1684.prol, %scalar.ph1684.preheader
  %.61094.in1443.unr = phi i64 [ %.61094.in1443.ph, %scalar.ph1684.preheader ], [ %.61094.prol, %scalar.ph1684.prol ]
  %802 = sub i64 %.61094.in1443.ph, %779
  %803 = icmp ugt i64 %802, -4
  br i1 %803, label %._crit_edge1446, label %scalar.ph1684

scalar.ph1684:                                    ; preds = %scalar.ph1684.prol.loopexit, %scalar.ph1684
  %.61094.in1443 = phi i64 [ %.61094.3, %scalar.ph1684 ], [ %.61094.in1443.unr, %scalar.ph1684.prol.loopexit ]
  %.61094 = add nsw i64 %.61094.in1443, 1
  %804 = mul nsw i64 %.61094, %36
  %805 = getelementptr double, ptr %782, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !9
  %807 = fneg double %806
  %gep1441 = getelementptr double, ptr %invariant.gep1440, i64 %.61094.in1443
  store double %807, ptr %gep1441, align 8, !tbaa !9
  %.61094.1 = add nsw i64 %.61094.in1443, 2
  %808 = mul nsw i64 %.61094.1, %36
  %809 = getelementptr double, ptr %782, i64 %808
  %810 = load double, ptr %809, align 8, !tbaa !9
  %811 = fneg double %810
  %gep1441.1 = getelementptr double, ptr %invariant.gep1440, i64 %.61094
  store double %811, ptr %gep1441.1, align 8, !tbaa !9
  %.61094.2 = add nsw i64 %.61094.in1443, 3
  %812 = mul nsw i64 %.61094.2, %36
  %813 = getelementptr double, ptr %782, i64 %812
  %814 = load double, ptr %813, align 8, !tbaa !9
  %815 = fneg double %814
  %gep1441.2 = getelementptr double, ptr %invariant.gep1440, i64 %.61094.1
  store double %815, ptr %gep1441.2, align 8, !tbaa !9
  %.61094.3 = add nsw i64 %.61094.in1443, 4
  %816 = mul nsw i64 %.61094.3, %36
  %817 = getelementptr double, ptr %782, i64 %816
  %818 = load double, ptr %817, align 8, !tbaa !9
  %819 = fneg double %818
  %gep1441.3 = getelementptr double, ptr %invariant.gep1440, i64 %.61094.2
  store double %819, ptr %gep1441.3, align 8, !tbaa !9
  %exitcond1539.not.3 = icmp eq i64 %.61094.3, %779
  br i1 %exitcond1539.not.3, label %._crit_edge1446, label %scalar.ph1684, !llvm.loop !48

._crit_edge1446:                                  ; preds = %scalar.ph1684.prol.loopexit, %scalar.ph1684, %middle.block1683
  store i64 %779, ptr %20, align 8, !tbaa !5
  br i1 %.not1139.not1442, label %.lr.ph1461.preheader, label %._crit_edge1462

.lr.ph1461.preheader:                             ; preds = %._crit_edge1446
  %820 = add nsw i64 %777, 1
  br label %.lr.ph1461

.lr.ph1461:                                       ; preds = %.lr.ph1461.preheader, %946
  %821 = phi i64 [ %947, %946 ], [ %779, %.lr.ph1461.preheader ]
  %.010541458 = phi double [ %.1, %946 ], [ %131, %.lr.ph1461.preheader ]
  %.61457 = phi i64 [ %.8, %946 ], [ %820, %.lr.ph1461.preheader ]
  %.010591456 = phi double [ %.31062, %946 ], [ 1.000000e+00, %.lr.ph1461.preheader ]
  %.41104.in1455 = phi i64 [ %.411041459, %946 ], [ %777, %.lr.ph1461.preheader ]
  %.411041459 = add nsw i64 %.41104.in1455, 1
  %822 = icmp slt i64 %.411041459, %.61457
  br i1 %822, label %946, label %823

823:                                              ; preds = %.lr.ph1461
  %824 = add nsw i64 %.41104.in1455, 2
  %825 = icmp slt i64 %.411041459, %821
  br i1 %825, label %826, label %..thread1224_crit_edge

..thread1224_crit_edge:                           ; preds = %823
  %.pre1557.pre = load i64, ptr %24, align 8, !tbaa !5
  br label %.thread1224

826:                                              ; preds = %823
  %827 = mul nsw i64 %.411041459, %36
  %828 = getelementptr double, ptr %38, i64 %824
  %829 = getelementptr double, ptr %828, i64 %827
  %830 = load double, ptr %829, align 8, !tbaa !9
  %831 = fcmp une double %830, 0.000000e+00
  %.pre1557.pre1563 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %831, label %832, label %.thread1224

832:                                              ; preds = %826
  %833 = add nsw i64 %.41104.in1455, 3
  %834 = getelementptr double, ptr %12, i64 %.41104.in1455
  %835 = load double, ptr %834, align 8, !tbaa !9
  store double %835, ptr %22, align 8, !tbaa !9
  %836 = getelementptr inbounds double, ptr %45, i64 %824
  %837 = load double, ptr %836, align 8, !tbaa !9
  %838 = fcmp oge double %835, %837
  %839 = select i1 %838, double %835, double %837
  %840 = fcmp ogt double %839, %.010541458
  br i1 %840, label %887, label %894

.thread1224:                                      ; preds = %..thread1224_crit_edge, %826
  %.pre1557 = phi i64 [ %.pre1557.pre, %..thread1224_crit_edge ], [ %.pre1557.pre1563, %826 ]
  %841 = getelementptr double, ptr %12, i64 %.41104.in1455
  %842 = load double, ptr %841, align 8, !tbaa !9
  %843 = fcmp ogt double %842, %.010541458
  br i1 %843, label %844, label %851

844:                                              ; preds = %.thread1224
  %845 = fdiv double 1.000000e+00, %.010591456
  store double %845, ptr %27, align 8, !tbaa !9
  %846 = add i64 %821, 1
  %847 = sub i64 %846, %.pre1557
  store i64 %847, ptr %21, align 8, !tbaa !5
  %848 = getelementptr double, ptr %45, i64 %.pre1557
  %849 = getelementptr double, ptr %848, i64 %821
  %850 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef %849, ptr noundef nonnull @c__1) #6
  %.pre1556 = load i64, ptr %24, align 8, !tbaa !5
  %.pre1558 = load i64, ptr %3, align 8, !tbaa !5
  br label %851

851:                                              ; preds = %844, %.thread1224
  %852 = phi i64 [ %.pre1558, %844 ], [ %821, %.thread1224 ]
  %853 = phi i64 [ %.pre1556, %844 ], [ %.pre1557, %.thread1224 ]
  %.11060 = phi double [ 1.000000e+00, %844 ], [ %.010591456, %.thread1224 ]
  %854 = sub i64 %.41104.in1455, %853
  store i64 %854, ptr %21, align 8, !tbaa !5
  %855 = mul nsw i64 %.411041459, %36
  %gep1448 = getelementptr double, ptr %invariant.gep1469, i64 %853
  %856 = getelementptr double, ptr %gep1448, i64 %855
  %857 = getelementptr double, ptr %12, i64 %853
  %858 = getelementptr double, ptr %857, i64 %852
  %859 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %856, ptr noundef nonnull @c__1, ptr noundef %858, ptr noundef nonnull @c__1) #6
  %860 = load i64, ptr %3, align 8, !tbaa !5
  %861 = getelementptr double, ptr %841, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !9
  %863 = fsub double %862, %859
  store double %863, ptr %861, align 8, !tbaa !9
  %864 = getelementptr double, ptr %38, i64 %.411041459
  %865 = getelementptr double, ptr %864, i64 %855
  %866 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull @c_b22, ptr noundef %865, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %861, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull @c_b25, ptr noundef nonnull %23, ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %867 = load double, ptr %32, align 8, !tbaa !9
  %868 = fcmp une double %867, 1.000000e+00
  br i1 %868, label %869, label %877

869:                                              ; preds = %851
  %870 = load i64, ptr %3, align 8, !tbaa !5
  %871 = load i64, ptr %24, align 8, !tbaa !5
  %872 = add i64 %870, 1
  %873 = sub i64 %872, %871
  store i64 %873, ptr %21, align 8, !tbaa !5
  %874 = getelementptr double, ptr %45, i64 %871
  %875 = getelementptr double, ptr %874, i64 %870
  %876 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %32, ptr noundef %875, ptr noundef nonnull @c__1) #6
  br label %877

877:                                              ; preds = %869, %851
  %878 = load double, ptr %23, align 16, !tbaa !9
  %879 = load i64, ptr %3, align 8, !tbaa !5
  %880 = getelementptr double, ptr %841, i64 %879
  store double %878, ptr %880, align 8, !tbaa !9
  store double %878, ptr %22, align 8, !tbaa !9
  %881 = fcmp oge double %878, 0.000000e+00
  %882 = fneg double %878
  %883 = select i1 %881, double %878, double %882
  %884 = fcmp oge double %883, %.11060
  %885 = select i1 %884, double %883, double %.11060
  %886 = fdiv double %131, %885
  br label %946

887:                                              ; preds = %832
  %888 = fdiv double 1.000000e+00, %.010591456
  store double %888, ptr %27, align 8, !tbaa !9
  %889 = add i64 %821, 1
  %890 = sub i64 %889, %.pre1557.pre1563
  store i64 %890, ptr %21, align 8, !tbaa !5
  %891 = getelementptr double, ptr %45, i64 %.pre1557.pre1563
  %892 = getelementptr double, ptr %891, i64 %821
  %893 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef %892, ptr noundef nonnull @c__1) #6
  %.pre1559 = load i64, ptr %24, align 8, !tbaa !5
  %.pre1561 = load i64, ptr %3, align 8, !tbaa !5
  br label %894

894:                                              ; preds = %887, %832
  %895 = phi i64 [ %.pre1561, %887 ], [ %821, %832 ]
  %896 = phi i64 [ %.pre1559, %887 ], [ %.pre1557.pre1563, %832 ]
  %.21061 = phi double [ 1.000000e+00, %887 ], [ %.010591456, %832 ]
  %897 = sub i64 %.41104.in1455, %896
  store i64 %897, ptr %21, align 8, !tbaa !5
  %gep1450 = getelementptr double, ptr %invariant.gep1469, i64 %896
  %898 = getelementptr double, ptr %gep1450, i64 %827
  %899 = getelementptr double, ptr %12, i64 %896
  %900 = getelementptr double, ptr %899, i64 %895
  %901 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %898, ptr noundef nonnull @c__1, ptr noundef %900, ptr noundef nonnull @c__1) #6
  %902 = load i64, ptr %3, align 8, !tbaa !5
  %903 = getelementptr double, ptr %834, i64 %902
  %904 = load double, ptr %903, align 8, !tbaa !9
  %905 = fsub double %904, %901
  store double %905, ptr %903, align 8, !tbaa !9
  %906 = load i64, ptr %24, align 8, !tbaa !5
  %907 = sub i64 %.41104.in1455, %906
  store i64 %907, ptr %21, align 8, !tbaa !5
  %908 = mul nsw i64 %824, %36
  %gep1452 = getelementptr double, ptr %invariant.gep1469, i64 %906
  %909 = getelementptr double, ptr %gep1452, i64 %908
  %910 = getelementptr double, ptr %12, i64 %906
  %911 = getelementptr double, ptr %910, i64 %902
  %912 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %909, ptr noundef nonnull @c__1, ptr noundef %911, ptr noundef nonnull @c__1) #6
  %913 = load i64, ptr %3, align 8, !tbaa !5
  %914 = getelementptr double, ptr %836, i64 %913
  %915 = load double, ptr %914, align 8, !tbaa !9
  %916 = fsub double %915, %912
  store double %916, ptr %914, align 8, !tbaa !9
  %917 = getelementptr double, ptr %38, i64 %.411041459
  %918 = getelementptr double, ptr %917, i64 %827
  %919 = getelementptr double, ptr %834, i64 %913
  %920 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull @c_b22, ptr noundef %918, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef %919, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull @c_b25, ptr noundef nonnull %23, ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %921 = load double, ptr %32, align 8, !tbaa !9
  %922 = fcmp une double %921, 1.000000e+00
  br i1 %922, label %923, label %931

923:                                              ; preds = %894
  %924 = load i64, ptr %3, align 8, !tbaa !5
  %925 = load i64, ptr %24, align 8, !tbaa !5
  %926 = add i64 %924, 1
  %927 = sub i64 %926, %925
  store i64 %927, ptr %21, align 8, !tbaa !5
  %928 = getelementptr double, ptr %45, i64 %925
  %929 = getelementptr double, ptr %928, i64 %924
  %930 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %32, ptr noundef %929, ptr noundef nonnull @c__1) #6
  br label %931

931:                                              ; preds = %923, %894
  %932 = load i64, ptr %3, align 8, !tbaa !5
  %933 = getelementptr double, ptr %834, i64 %932
  %934 = load <2 x double>, ptr %23, align 16, !tbaa !9
  store <2 x double> %934, ptr %933, align 8, !tbaa !9
  %935 = extractelement <2 x double> %934, i64 0
  store double %935, ptr %22, align 8, !tbaa !9
  %936 = fcmp oge <2 x double> %934, zeroinitializer
  %937 = fneg <2 x double> %934
  %938 = select <2 x i1> %936, <2 x double> %934, <2 x double> %937
  %939 = extractelement <2 x double> %938, i64 0
  %940 = extractelement <2 x double> %938, i64 1
  %941 = fcmp oge double %939, %940
  %942 = select i1 %941, double %939, double %940
  %943 = fcmp oge double %942, %.21061
  %944 = select i1 %943, double %942, double %.21061
  %945 = fdiv double %131, %944
  br label %946

946:                                              ; preds = %.lr.ph1461, %931, %877
  %947 = phi i64 [ %821, %.lr.ph1461 ], [ %879, %877 ], [ %932, %931 ]
  %.31062 = phi double [ %.010591456, %.lr.ph1461 ], [ %885, %877 ], [ %944, %931 ]
  %.8 = phi i64 [ %.61457, %.lr.ph1461 ], [ %824, %877 ], [ %833, %931 ]
  %.1 = phi double [ %.010541458, %.lr.ph1461 ], [ %886, %877 ], [ %945, %931 ]
  %948 = load i64, ptr %20, align 8, !tbaa !5
  %.not1140.not = icmp slt i64 %.411041459, %948
  br i1 %.not1140.not, label %.lr.ph1461, label %._crit_edge1462, !llvm.loop !49

._crit_edge1462:                                  ; preds = %946, %._crit_edge1446.thread, %._crit_edge1446
  %949 = phi i64 [ %779, %._crit_edge1446 ], [ %779, %._crit_edge1446.thread ], [ %947, %946 ]
  %950 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %.not1135, label %951, label %989

951:                                              ; preds = %._crit_edge1462
  %952 = add i64 %949, 1
  %953 = sub i64 %952, %950
  store i64 %953, ptr %20, align 8, !tbaa !5
  %954 = getelementptr double, ptr %45, i64 %950
  %955 = getelementptr double, ptr %954, i64 %949
  %956 = mul nsw i64 %.210751512, %39
  %957 = getelementptr double, ptr %41, i64 %950
  %958 = getelementptr double, ptr %957, i64 %956
  %959 = call i32 @f2c_dcopy(ptr noundef nonnull %20, ptr noundef %955, ptr noundef nonnull @c__1, ptr noundef %958, ptr noundef nonnull @c__1) #6
  %960 = load i64, ptr %3, align 8, !tbaa !5
  %961 = load i64, ptr %24, align 8, !tbaa !5
  %962 = add i64 %960, 1
  %963 = sub i64 %962, %961
  store i64 %963, ptr %20, align 8, !tbaa !5
  %964 = getelementptr double, ptr %41, i64 %961
  %965 = getelementptr double, ptr %964, i64 %956
  %966 = call i64 @f2c_idamax(ptr noundef nonnull %20, ptr noundef %965, ptr noundef nonnull @c__1) #6
  %967 = load i64, ptr %24, align 8, !tbaa !5
  %968 = getelementptr double, ptr %41, i64 %966
  %969 = getelementptr double, ptr %968, i64 %967
  %970 = getelementptr i8, ptr %969, i64 -8
  %971 = getelementptr double, ptr %970, i64 %956
  %972 = load double, ptr %971, align 8, !tbaa !9
  store double %972, ptr %22, align 8, !tbaa !9
  %973 = fcmp oge double %972, 0.000000e+00
  %974 = fneg double %972
  %975 = select i1 %973, double %972, double %974
  %976 = fdiv double 1.000000e+00, %975
  store double %976, ptr %33, align 8, !tbaa !9
  %977 = load i64, ptr %3, align 8, !tbaa !5
  %reass.sub = sub i64 %977, %967
  %978 = add i64 %reass.sub, 1
  store i64 %978, ptr %20, align 8, !tbaa !5
  %979 = getelementptr double, ptr %41, i64 %967
  %980 = getelementptr double, ptr %979, i64 %956
  %981 = call i32 @f2c_dscal(ptr noundef nonnull %20, ptr noundef nonnull %33, ptr noundef %980, ptr noundef nonnull @c__1) #6
  %982 = load i64, ptr %24, align 8, !tbaa !5
  %983 = add nsw i64 %982, -1
  store i64 %983, ptr %20, align 8, !tbaa !5
  %.not1142.not1465 = icmp sgt i64 %982, 1
  br i1 %.not1142.not1465, label %.lr.ph1468.preheader, label %.loopexit

.lr.ph1468.preheader:                             ; preds = %951
  %984 = shl i64 %.210751512, 3
  %985 = add i64 %984, -8
  %986 = mul i64 %39, %985
  %scevgep1540 = getelementptr i8, ptr %6, i64 %986
  %987 = shl i64 %982, 3
  %988 = add i64 %987, -8
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1540, i8 0, i64 %988, i1 false), !tbaa !9
  br label %.loopexit

989:                                              ; preds = %._crit_edge1462
  %990 = icmp slt i64 %950, %949
  br i1 %990, label %991, label %1001

991:                                              ; preds = %989
  %992 = sub nsw i64 %949, %950
  store i64 %992, ptr %20, align 8, !tbaa !5
  %993 = add nsw i64 %950, 1
  %994 = mul nsw i64 %993, %39
  %gep1502 = getelementptr double, ptr %invariant.gep1477, i64 %994
  %995 = getelementptr double, ptr %12, i64 %950
  %996 = getelementptr double, ptr %995, i64 %949
  %997 = getelementptr double, ptr %45, i64 %950
  %998 = getelementptr double, ptr %997, i64 %949
  %999 = mul nsw i64 %950, %39
  %gep1504 = getelementptr double, ptr %invariant.gep1477, i64 %999
  %1000 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull @c_b22, ptr noundef %gep1502, ptr noundef nonnull %7, ptr noundef %996, ptr noundef nonnull @c__1, ptr noundef %998, ptr noundef %gep1504, ptr noundef nonnull @c__1) #6
  %.pre1562 = load i64, ptr %24, align 8, !tbaa !5
  br label %1001

1001:                                             ; preds = %991, %989
  %1002 = phi i64 [ %.pre1562, %991 ], [ %950, %989 ]
  %1003 = mul nsw i64 %1002, %39
  %gep1506 = getelementptr double, ptr %invariant.gep1477, i64 %1003
  %1004 = call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %gep1506, ptr noundef nonnull @c__1) #6
  %1005 = load i64, ptr %24, align 8, !tbaa !5
  %1006 = mul nsw i64 %1005, %39
  %1007 = getelementptr double, ptr %41, i64 %1004
  %1008 = getelementptr double, ptr %1007, i64 %1006
  %1009 = load double, ptr %1008, align 8, !tbaa !9
  store double %1009, ptr %22, align 8, !tbaa !9
  %1010 = fcmp oge double %1009, 0.000000e+00
  %1011 = fneg double %1009
  %1012 = select i1 %1010, double %1009, double %1011
  %1013 = fdiv double 1.000000e+00, %1012
  store double %1013, ptr %33, align 8, !tbaa !9
  %gep1508 = getelementptr double, ptr %invariant.gep1477, i64 %1006
  %1014 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1508, ptr noundef nonnull @c__1) #6
  br label %.loopexit

1015:                                             ; preds = %764
  %1016 = add nsw i64 %777, 1
  %1017 = mul nsw i64 %1016, %36
  %1018 = getelementptr double, ptr %38, i64 %777
  %1019 = getelementptr double, ptr %1018, i64 %1017
  %1020 = load double, ptr %1019, align 8, !tbaa !9
  store double %1020, ptr %22, align 8, !tbaa !9
  %1021 = fcmp oge double %1020, 0.000000e+00
  %1022 = fneg double %1020
  %1023 = select i1 %1021, double %1020, double %1022
  %1024 = mul nsw i64 %777, %36
  %1025 = getelementptr double, ptr %38, i64 %1016
  %1026 = getelementptr double, ptr %1025, i64 %1024
  %1027 = load double, ptr %1026, align 8, !tbaa !9
  %1028 = fcmp oge double %1027, 0.000000e+00
  %1029 = fneg double %1027
  %1030 = select i1 %1028, double %1027, double %1029
  %1031 = fcmp ult double %1023, %1030
  br i1 %1031, label %1037, label %1032

1032:                                             ; preds = %1015
  %1033 = fdiv double %765, %1020
  %1034 = load i64, ptr %3, align 8, !tbaa !5
  %1035 = getelementptr double, ptr %45, i64 %777
  %1036 = getelementptr double, ptr %1035, i64 %1034
  store double %1033, ptr %1036, align 8, !tbaa !9
  br label %1045

1037:                                             ; preds = %1015
  %1038 = load i64, ptr %3, align 8, !tbaa !5
  %1039 = getelementptr double, ptr %45, i64 %777
  %1040 = getelementptr double, ptr %1039, i64 %1038
  store double 1.000000e+00, ptr %1040, align 8, !tbaa !9
  %1041 = getelementptr i8, ptr %1018, i64 8
  %1042 = getelementptr double, ptr %1041, i64 %1024
  %1043 = load double, ptr %1042, align 8, !tbaa !9
  %1044 = fdiv double %771, %1043
  br label %1045

1045:                                             ; preds = %1037, %1032
  %.sink1594 = phi double [ %1044, %1037 ], [ 1.000000e+00, %1032 ]
  %1046 = phi i64 [ %1038, %1037 ], [ %1034, %1032 ]
  %gep1476 = getelementptr double, ptr %invariant.gep1473, i64 %777
  store double %.sink1594, ptr %gep1476, align 8, !tbaa !9
  %1047 = getelementptr double, ptr %12, i64 %777
  %1048 = getelementptr double, ptr %1047, i64 %1046
  store double 0.000000e+00, ptr %1048, align 8, !tbaa !9
  %1049 = getelementptr double, ptr %45, i64 %777
  %1050 = getelementptr double, ptr %1049, i64 %159
  store double 0.000000e+00, ptr %1050, align 8, !tbaa !9
  %1051 = add nsw i64 %777, 2
  %.not11331393 = icmp sgt i64 %1051, %1046
  br i1 %.not11331393, label %._crit_edge1397.thread, label %.lr.ph1396

._crit_edge1397.thread:                           ; preds = %1045
  store i64 %1046, ptr %20, align 8, !tbaa !5
  br label %._crit_edge1419

.lr.ph1396:                                       ; preds = %1045
  %1052 = getelementptr double, ptr %1049, i64 %1046
  %1053 = getelementptr double, ptr %1047, i64 %159
  %1054 = getelementptr i8, ptr %1018, i64 8
  %1055 = xor i64 %777, -1
  %1056 = add i64 %1046, %1055
  %min.iters.check1764 = icmp ugt i64 %1056, 15
  %or.cond1784 = select i1 %min.iters.check1764, i1 %ident.check1714.not, i1 false
  br i1 %or.cond1784, label %vector.memcheck1715, label %scalar.ph1763.preheader

vector.memcheck1715:                              ; preds = %.lr.ph1396
  %1057 = shl i64 %1046, 3
  %1058 = shl i64 %777, 3
  %1059 = add i64 %1057, %1058
  %scevgep1717 = getelementptr i8, ptr %scevgep1716, i64 %1059
  %1060 = shl i64 %1046, 4
  %scevgep1718 = getelementptr i8, ptr %12, i64 %1060
  %scevgep1720 = getelementptr i8, ptr %scevgep1719, i64 %1058
  %scevgep1722 = getelementptr i8, ptr %scevgep1721, i64 %1057
  %scevgep1723 = getelementptr i8, ptr %12, i64 %1059
  %1061 = shl i64 %777, 4
  %scevgep1724 = getelementptr i8, ptr %4, i64 %1061
  %1062 = add i64 %1046, %777
  %1063 = shl i64 %1062, 3
  %scevgep1726 = getelementptr i8, ptr %scevgep1725, i64 %1063
  %scevgep1728 = getelementptr i8, ptr %scevgep1727, i64 %1061
  %scevgep1729 = getelementptr i8, ptr %4, i64 %1063
  %bound01730 = icmp ult ptr %scevgep1717, %scevgep1722
  %bound11731 = icmp ult ptr %scevgep1720, %scevgep1718
  %found.conflict1732 = and i1 %bound01730, %bound11731
  %bound11734 = icmp ult ptr %1052, %scevgep1718
  %found.conflict1735 = and i1 %bound01733, %bound11734
  %conflict.rdx1736 = or i1 %found.conflict1732, %found.conflict1735
  %bound01737 = icmp ult ptr %scevgep1717, %scevgep1726
  %bound11738 = icmp ult ptr %scevgep1724, %scevgep1718
  %found.conflict1739 = and i1 %bound01737, %bound11738
  %conflict.rdx1740 = or i1 %conflict.rdx1736, %found.conflict1739
  %bound01741 = icmp ult ptr %scevgep1717, %scevgep1720
  %bound11742 = icmp ult ptr %1053, %scevgep1718
  %found.conflict1743 = and i1 %bound01741, %bound11742
  %conflict.rdx1744 = or i1 %conflict.rdx1740, %found.conflict1743
  %bound01745 = icmp ult ptr %scevgep1717, %scevgep1729
  %bound11746 = icmp ult ptr %scevgep1728, %scevgep1718
  %found.conflict1747 = and i1 %bound01745, %bound11746
  %conflict.rdx1748 = or i1 %conflict.rdx1744, %found.conflict1747
  %bound01749 = icmp ult ptr %scevgep1720, %scevgep1723
  %bound11750 = icmp ult ptr %1052, %scevgep1722
  %found.conflict1751 = and i1 %bound01749, %bound11750
  %conflict.rdx1752 = or i1 %conflict.rdx1748, %found.conflict1751
  %bound01753 = icmp ult ptr %scevgep1720, %scevgep1726
  %bound11754 = icmp ult ptr %scevgep1724, %scevgep1722
  %found.conflict1755 = and i1 %bound01753, %bound11754
  %conflict.rdx1756 = or i1 %conflict.rdx1752, %found.conflict1755
  %bound01758 = icmp ult ptr %scevgep1720, %scevgep1729
  %bound11759 = icmp ult ptr %scevgep1728, %scevgep1722
  %found.conflict1760 = and i1 %bound01758, %bound11759
  %conflict.rdx1761 = or i1 %conflict.rdx1756, %found.conflict1760
  br i1 %conflict.rdx1761, label %scalar.ph1763.preheader, label %vector.ph1765

vector.ph1765:                                    ; preds = %vector.memcheck1715
  %n.vec1767 = and i64 %1056, -2
  %ind.end1768 = add i64 %1051, %n.vec1767
  %1064 = load double, ptr %1052, align 8, !tbaa !9, !alias.scope !50
  %broadcast.splatinsert1773 = insertelement <2 x double> poison, double %1064, i64 0
  %broadcast.splat1774 = shufflevector <2 x double> %broadcast.splatinsert1773, <2 x double> poison, <2 x i32> zeroinitializer
  %1065 = fneg <2 x double> %broadcast.splat1774
  %1066 = load double, ptr %1053, align 8, !tbaa !9, !alias.scope !53
  %broadcast.splatinsert1776 = insertelement <2 x double> poison, double %1066, i64 0
  %broadcast.splat1777 = shufflevector <2 x double> %broadcast.splatinsert1776, <2 x double> poison, <2 x i32> zeroinitializer
  %1067 = fneg <2 x double> %broadcast.splat1777
  br label %vector.body1770

vector.body1770:                                  ; preds = %vector.body1770, %vector.ph1765
  %index1771 = phi i64 [ 0, %vector.ph1765 ], [ %index.next1779, %vector.body1770 ]
  %offset.idx1772 = add i64 %1051, %index1771
  %1068 = getelementptr double, ptr %1018, i64 %offset.idx1772
  %wide.load1775 = load <2 x double>, ptr %1068, align 8, !tbaa !9, !alias.scope !55
  %1069 = fmul <2 x double> %wide.load1775, %1065
  %1070 = getelementptr double, ptr %45, i64 %offset.idx1772
  %1071 = getelementptr double, ptr %1070, i64 %1046
  store <2 x double> %1069, ptr %1071, align 8, !tbaa !9, !alias.scope !57, !noalias !59
  %1072 = getelementptr double, ptr %1054, i64 %offset.idx1772
  %wide.load1778 = load <2 x double>, ptr %1072, align 8, !tbaa !9, !alias.scope !62
  %1073 = fmul <2 x double> %wide.load1778, %1067
  %1074 = getelementptr double, ptr %1070, i64 %159
  store <2 x double> %1073, ptr %1074, align 8, !tbaa !9, !alias.scope !63, !noalias !64
  %index.next1779 = add nuw i64 %index1771, 2
  %1075 = icmp eq i64 %index.next1779, %n.vec1767
  br i1 %1075, label %middle.block1762, label %vector.body1770, !llvm.loop !65

middle.block1762:                                 ; preds = %vector.body1770
  %cmp.n1780 = icmp eq i64 %1056, %n.vec1767
  br i1 %cmp.n1780, label %._crit_edge1397, label %scalar.ph1763.preheader

scalar.ph1763.preheader:                          ; preds = %middle.block1762, %vector.memcheck1715, %.lr.ph1396
  %.810961394.ph = phi i64 [ %1051, %vector.memcheck1715 ], [ %1051, %.lr.ph1396 ], [ %ind.end1768, %middle.block1762 ]
  br label %scalar.ph1763

scalar.ph1763:                                    ; preds = %scalar.ph1763.preheader, %scalar.ph1763
  %.810961394 = phi i64 [ %1090, %scalar.ph1763 ], [ %.810961394.ph, %scalar.ph1763.preheader ]
  %1076 = load double, ptr %1052, align 8, !tbaa !9
  %1077 = fneg double %1076
  %1078 = mul nsw i64 %.810961394, %36
  %1079 = getelementptr double, ptr %1018, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !9
  %1081 = fmul double %1080, %1077
  %1082 = getelementptr double, ptr %45, i64 %.810961394
  %1083 = getelementptr double, ptr %1082, i64 %1046
  store double %1081, ptr %1083, align 8, !tbaa !9
  %1084 = load double, ptr %1053, align 8, !tbaa !9
  %1085 = fneg double %1084
  %1086 = getelementptr double, ptr %1054, i64 %1078
  %1087 = load double, ptr %1086, align 8, !tbaa !9
  %1088 = fmul double %1087, %1085
  %1089 = getelementptr double, ptr %1082, i64 %159
  store double %1088, ptr %1089, align 8, !tbaa !9
  %1090 = add i64 %.810961394, 1
  %exitcond1533.not = icmp eq i64 %.810961394, %1046
  br i1 %exitcond1533.not, label %._crit_edge1397, label %scalar.ph1763, !llvm.loop !66

._crit_edge1397:                                  ; preds = %scalar.ph1763, %middle.block1762
  store i64 %1046, ptr %20, align 8, !tbaa !5
  br i1 %.not11331393, label %._crit_edge1419, label %.lr.ph1418

.lr.ph1418:                                       ; preds = %._crit_edge1397, %.lr.ph1418._crit_edge
  %1091 = phi i64 [ %1302, %.lr.ph1418._crit_edge ], [ %1046, %._crit_edge1397 ]
  %.21416 = phi double [ %.3, %.lr.ph1418._crit_edge ], [ %131, %._crit_edge1397 ]
  %.91415 = phi i64 [ %.11, %.lr.ph1418._crit_edge ], [ %1051, %._crit_edge1397 ]
  %.410631414 = phi double [ %.71066, %.lr.ph1418._crit_edge ], [ 1.000000e+00, %._crit_edge1397 ]
  %.511051413 = phi i64 [ %.pre1571, %.lr.ph1418._crit_edge ], [ %1051, %._crit_edge1397 ]
  %1092 = icmp slt i64 %.511051413, %.91415
  %.pre1571 = add nsw i64 %.511051413, 1
  br i1 %1092, label %.lr.ph1418._crit_edge, label %1093

1093:                                             ; preds = %.lr.ph1418
  %1094 = icmp slt i64 %.511051413, %1091
  br i1 %1094, label %1095, label %1103

1095:                                             ; preds = %1093
  %1096 = mul nsw i64 %.511051413, %36
  %1097 = getelementptr double, ptr %38, i64 %.pre1571
  %1098 = getelementptr double, ptr %1097, i64 %1096
  %1099 = load double, ptr %1098, align 8, !tbaa !9
  %1100 = fcmp une double %1099, 0.000000e+00
  br i1 %1100, label %1101, label %1103

1101:                                             ; preds = %1095
  %1102 = add nsw i64 %.511051413, 2
  br label %1103

1103:                                             ; preds = %1095, %1101, %1093
  %.11085 = phi i64 [ %.pre1571, %1101 ], [ %.511051413, %1095 ], [ %.511051413, %1093 ]
  %.10 = phi i64 [ %1102, %1101 ], [ %.pre1571, %1095 ], [ %.pre1571, %1093 ]
  %1104 = icmp eq i64 %.511051413, %.11085
  %1105 = getelementptr inbounds double, ptr %45, i64 %.511051413
  %1106 = load double, ptr %1105, align 8, !tbaa !9
  br i1 %1104, label %1107, label %1185

1107:                                             ; preds = %1103
  %1108 = fcmp ogt double %1106, %.21416
  %.pre1553 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %1108, label %1109, label %1121

1109:                                             ; preds = %1107
  %1110 = fdiv double 1.000000e+00, %.410631414
  store double %1110, ptr %27, align 8, !tbaa !9
  %1111 = add i64 %1091, 1
  %1112 = sub i64 %1111, %.pre1553
  store i64 %1112, ptr %21, align 8, !tbaa !5
  %1113 = getelementptr double, ptr %45, i64 %.pre1553
  %1114 = getelementptr double, ptr %1113, i64 %1091
  %1115 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef %1114, ptr noundef nonnull @c__1) #6
  %1116 = load i64, ptr %3, align 8, !tbaa !5
  %1117 = load i64, ptr %24, align 8, !tbaa !5
  %1118 = add i64 %1116, 1
  %1119 = sub i64 %1118, %1117
  store i64 %1119, ptr %21, align 8, !tbaa !5
  %gep1407 = getelementptr double, ptr %invariant.gep1489, i64 %1117
  %1120 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef %gep1407, ptr noundef nonnull @c__1) #6
  %.pre1552 = load i64, ptr %24, align 8, !tbaa !5
  %.pre1554 = load i64, ptr %3, align 8, !tbaa !5
  br label %1121

1121:                                             ; preds = %1109, %1107
  %1122 = phi i64 [ %.pre1554, %1109 ], [ %1091, %1107 ]
  %1123 = phi i64 [ %.pre1552, %1109 ], [ %.pre1553, %1107 ]
  %.51064 = phi double [ 1.000000e+00, %1109 ], [ %.410631414, %1107 ]
  %1124 = add nsw i64 %.511051413, -2
  %1125 = sub i64 %1124, %1123
  store i64 %1125, ptr %21, align 8, !tbaa !5
  %1126 = add nsw i64 %1123, 2
  %1127 = mul nsw i64 %.511051413, %36
  %1128 = getelementptr double, ptr %38, i64 %1126
  %1129 = getelementptr double, ptr %1128, i64 %1127
  %1130 = getelementptr double, ptr %45, i64 %1126
  %1131 = getelementptr double, ptr %1130, i64 %1122
  %1132 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %1129, ptr noundef nonnull @c__1, ptr noundef %1131, ptr noundef nonnull @c__1) #6
  %1133 = load i64, ptr %3, align 8, !tbaa !5
  %1134 = getelementptr double, ptr %1105, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !9
  %1136 = fsub double %1135, %1132
  store double %1136, ptr %1134, align 8, !tbaa !9
  %1137 = load i64, ptr %24, align 8, !tbaa !5
  %1138 = sub i64 %1124, %1137
  store i64 %1138, ptr %21, align 8, !tbaa !5
  %1139 = add nsw i64 %1137, 2
  %1140 = getelementptr double, ptr %38, i64 %1139
  %1141 = getelementptr double, ptr %1140, i64 %1127
  %gep1409 = getelementptr double, ptr %invariant.gep1489, i64 %1139
  %1142 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %1141, ptr noundef nonnull @c__1, ptr noundef %gep1409, ptr noundef nonnull @c__1) #6
  %1143 = getelementptr double, ptr %1105, i64 %159
  %1144 = load double, ptr %1143, align 8, !tbaa !9
  %1145 = fsub double %1144, %1142
  store double %1145, ptr %1143, align 8, !tbaa !9
  %1146 = load double, ptr %25, align 8, !tbaa !9
  %1147 = fneg double %1146
  store double %1147, ptr %22, align 8, !tbaa !9
  %1148 = getelementptr double, ptr %38, i64 %.511051413
  %1149 = getelementptr double, ptr %1148, i64 %1127
  %1150 = load i64, ptr %3, align 8, !tbaa !5
  %1151 = getelementptr double, ptr %1105, i64 %1150
  %1152 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull @c_b22, ptr noundef %1149, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef %1151, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %1153 = load double, ptr %32, align 8, !tbaa !9
  %1154 = fcmp une double %1153, 1.000000e+00
  br i1 %1154, label %1155, label %1168

1155:                                             ; preds = %1121
  %1156 = load i64, ptr %3, align 8, !tbaa !5
  %1157 = load i64, ptr %24, align 8, !tbaa !5
  %1158 = add i64 %1156, 1
  %1159 = sub i64 %1158, %1157
  store i64 %1159, ptr %21, align 8, !tbaa !5
  %1160 = getelementptr double, ptr %45, i64 %1157
  %1161 = getelementptr double, ptr %1160, i64 %1156
  %1162 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %32, ptr noundef %1161, ptr noundef nonnull @c__1) #6
  %1163 = load i64, ptr %3, align 8, !tbaa !5
  %1164 = load i64, ptr %24, align 8, !tbaa !5
  %1165 = add i64 %1163, 1
  %1166 = sub i64 %1165, %1164
  store i64 %1166, ptr %21, align 8, !tbaa !5
  %gep1411 = getelementptr double, ptr %invariant.gep1489, i64 %1164
  %1167 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %32, ptr noundef %gep1411, ptr noundef nonnull @c__1) #6
  br label %1168

1168:                                             ; preds = %1155, %1121
  %1169 = load double, ptr %23, align 16, !tbaa !9
  %1170 = load i64, ptr %3, align 8, !tbaa !5
  %1171 = getelementptr double, ptr %1105, i64 %1170
  store double %1169, ptr %1171, align 8, !tbaa !9
  %1172 = load double, ptr %719, align 16, !tbaa !9
  store double %1172, ptr %1143, align 8, !tbaa !9
  %1173 = load double, ptr %1171, align 8, !tbaa !9
  store double %1173, ptr %22, align 8, !tbaa !9
  %1174 = fcmp oge double %1173, 0.000000e+00
  %1175 = fneg double %1173
  %1176 = select i1 %1174, double %1173, double %1175
  %1177 = fcmp oge double %1172, 0.000000e+00
  %1178 = fneg double %1172
  %1179 = select i1 %1177, double %1172, double %1178
  %1180 = fcmp oge double %1176, %1179
  %1181 = select i1 %1180, double %1176, double %1179
  %1182 = fcmp oge double %1181, %.51064
  %1183 = select i1 %1182, double %1181, double %.51064
  %1184 = fdiv double %131, %1183
  br label %.lr.ph1418._crit_edge

1185:                                             ; preds = %1103
  store double %1106, ptr %22, align 8, !tbaa !9
  %1186 = getelementptr double, ptr %12, i64 %.511051413
  %1187 = load double, ptr %1186, align 8, !tbaa !9
  %1188 = fcmp oge double %1106, %1187
  %1189 = select i1 %1188, double %1106, double %1187
  %1190 = fcmp ogt double %1189, %.21416
  %.pre1550 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %1190, label %1191, label %1203

1191:                                             ; preds = %1185
  %1192 = fdiv double 1.000000e+00, %.410631414
  store double %1192, ptr %27, align 8, !tbaa !9
  %1193 = add i64 %1091, 1
  %1194 = sub i64 %1193, %.pre1550
  store i64 %1194, ptr %21, align 8, !tbaa !5
  %1195 = getelementptr double, ptr %45, i64 %.pre1550
  %1196 = getelementptr double, ptr %1195, i64 %1091
  %1197 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef %1196, ptr noundef nonnull @c__1) #6
  %1198 = load i64, ptr %3, align 8, !tbaa !5
  %1199 = load i64, ptr %24, align 8, !tbaa !5
  %1200 = add i64 %1198, 1
  %1201 = sub i64 %1200, %1199
  store i64 %1201, ptr %21, align 8, !tbaa !5
  %gep1399 = getelementptr double, ptr %invariant.gep1489, i64 %1199
  %1202 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef %gep1399, ptr noundef nonnull @c__1) #6
  %.pre1549 = load i64, ptr %24, align 8, !tbaa !5
  %.pre1551 = load i64, ptr %3, align 8, !tbaa !5
  br label %1203

1203:                                             ; preds = %1191, %1185
  %1204 = phi i64 [ %.pre1551, %1191 ], [ %1091, %1185 ]
  %1205 = phi i64 [ %.pre1549, %1191 ], [ %.pre1550, %1185 ]
  %.61065 = phi double [ 1.000000e+00, %1191 ], [ %.410631414, %1185 ]
  %1206 = add nsw i64 %.511051413, -2
  %1207 = sub i64 %1206, %1205
  store i64 %1207, ptr %21, align 8, !tbaa !5
  %1208 = add nsw i64 %1205, 2
  %1209 = mul nsw i64 %.511051413, %36
  %1210 = getelementptr double, ptr %38, i64 %1208
  %1211 = getelementptr double, ptr %1210, i64 %1209
  %1212 = getelementptr double, ptr %45, i64 %1208
  %1213 = getelementptr double, ptr %1212, i64 %1204
  %1214 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %1211, ptr noundef nonnull @c__1, ptr noundef %1213, ptr noundef nonnull @c__1) #6
  %1215 = load i64, ptr %3, align 8, !tbaa !5
  %1216 = getelementptr double, ptr %1105, i64 %1215
  %1217 = load double, ptr %1216, align 8, !tbaa !9
  %1218 = fsub double %1217, %1214
  store double %1218, ptr %1216, align 8, !tbaa !9
  %1219 = load i64, ptr %24, align 8, !tbaa !5
  %1220 = sub i64 %1206, %1219
  store i64 %1220, ptr %21, align 8, !tbaa !5
  %1221 = add nsw i64 %1219, 2
  %1222 = getelementptr double, ptr %38, i64 %1221
  %1223 = getelementptr double, ptr %1222, i64 %1209
  %gep1401 = getelementptr double, ptr %invariant.gep1489, i64 %1221
  %1224 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %1223, ptr noundef nonnull @c__1, ptr noundef %gep1401, ptr noundef nonnull @c__1) #6
  %1225 = getelementptr double, ptr %1105, i64 %159
  %1226 = load double, ptr %1225, align 8, !tbaa !9
  %1227 = fsub double %1226, %1224
  store double %1227, ptr %1225, align 8, !tbaa !9
  %1228 = load i64, ptr %24, align 8, !tbaa !5
  %1229 = sub i64 %1206, %1228
  store i64 %1229, ptr %21, align 8, !tbaa !5
  %1230 = add nsw i64 %1228, 2
  %1231 = mul nsw i64 %.pre1571, %36
  %1232 = getelementptr double, ptr %38, i64 %1230
  %1233 = getelementptr double, ptr %1232, i64 %1231
  %1234 = load i64, ptr %3, align 8, !tbaa !5
  %1235 = getelementptr double, ptr %45, i64 %1230
  %1236 = getelementptr double, ptr %1235, i64 %1234
  %1237 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %1233, ptr noundef nonnull @c__1, ptr noundef %1236, ptr noundef nonnull @c__1) #6
  %1238 = load i64, ptr %3, align 8, !tbaa !5
  %1239 = getelementptr double, ptr %1186, i64 %1238
  %1240 = load double, ptr %1239, align 8, !tbaa !9
  %1241 = fsub double %1240, %1237
  store double %1241, ptr %1239, align 8, !tbaa !9
  %1242 = load i64, ptr %24, align 8, !tbaa !5
  %1243 = sub i64 %1206, %1242
  store i64 %1243, ptr %21, align 8, !tbaa !5
  %1244 = add nsw i64 %1242, 2
  %1245 = getelementptr double, ptr %38, i64 %1244
  %1246 = getelementptr double, ptr %1245, i64 %1231
  %gep1403 = getelementptr double, ptr %invariant.gep1489, i64 %1244
  %1247 = call double @f2c_ddot(ptr noundef nonnull %21, ptr noundef %1246, ptr noundef nonnull @c__1, ptr noundef %gep1403, ptr noundef nonnull @c__1) #6
  %1248 = getelementptr double, ptr %1186, i64 %159
  %1249 = load double, ptr %1248, align 8, !tbaa !9
  %1250 = fsub double %1249, %1247
  store double %1250, ptr %1248, align 8, !tbaa !9
  %1251 = load double, ptr %25, align 8, !tbaa !9
  %1252 = fneg double %1251
  store double %1252, ptr %22, align 8, !tbaa !9
  %1253 = getelementptr double, ptr %38, i64 %.511051413
  %1254 = getelementptr double, ptr %1253, i64 %1209
  %1255 = load i64, ptr %3, align 8, !tbaa !5
  %1256 = getelementptr double, ptr %1105, i64 %1255
  %1257 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull @c_b22, ptr noundef %1254, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef %1256, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %1258 = load double, ptr %32, align 8, !tbaa !9
  %1259 = fcmp une double %1258, 1.000000e+00
  br i1 %1259, label %1260, label %1273

1260:                                             ; preds = %1203
  %1261 = load i64, ptr %3, align 8, !tbaa !5
  %1262 = load i64, ptr %24, align 8, !tbaa !5
  %1263 = add i64 %1261, 1
  %1264 = sub i64 %1263, %1262
  store i64 %1264, ptr %21, align 8, !tbaa !5
  %1265 = getelementptr double, ptr %45, i64 %1262
  %1266 = getelementptr double, ptr %1265, i64 %1261
  %1267 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %32, ptr noundef %1266, ptr noundef nonnull @c__1) #6
  %1268 = load i64, ptr %3, align 8, !tbaa !5
  %1269 = load i64, ptr %24, align 8, !tbaa !5
  %1270 = add i64 %1268, 1
  %1271 = sub i64 %1270, %1269
  store i64 %1271, ptr %21, align 8, !tbaa !5
  %gep1405 = getelementptr double, ptr %invariant.gep1489, i64 %1269
  %1272 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %32, ptr noundef %gep1405, ptr noundef nonnull @c__1) #6
  br label %1273

1273:                                             ; preds = %1260, %1203
  %1274 = load double, ptr %23, align 16
  %1275 = load i64, ptr %3, align 8, !tbaa !5
  %1276 = getelementptr double, ptr %1105, i64 %1275
  store double %1274, ptr %1276, align 8, !tbaa !9
  %1277 = load double, ptr %719, align 16
  store double %1277, ptr %1225, align 8, !tbaa !9
  %1278 = load double, ptr %720, align 8
  %1279 = getelementptr double, ptr %1186, i64 %1275
  store double %1278, ptr %1279, align 8, !tbaa !9
  %1280 = load double, ptr %721, align 8
  store double %1280, ptr %1248, align 8, !tbaa !9
  %1281 = fcmp oge double %1274, 0.000000e+00
  %1282 = fneg double %1274
  %1283 = select i1 %1281, double %1274, double %1282
  %1284 = fcmp oge double %1277, 0.000000e+00
  %1285 = fneg double %1277
  %1286 = select i1 %1284, double %1277, double %1285
  %1287 = fcmp oge double %1283, %1286
  %1288 = select i1 %1287, double %1283, double %1286
  %1289 = fcmp oge double %1278, 0.000000e+00
  %1290 = fneg double %1278
  %1291 = select i1 %1289, double %1278, double %1290
  %1292 = fcmp oge double %1288, %1291
  %1293 = select i1 %1292, double %1288, double %1291
  %1294 = fcmp oge double %1280, 0.000000e+00
  %1295 = fneg double %1280
  %1296 = select i1 %1294, double %1280, double %1295
  %1297 = fcmp oge double %1293, %1296
  %1298 = select i1 %1297, double %1293, double %1296
  store double %1298, ptr %22, align 8, !tbaa !9
  %1299 = fcmp oge double %1298, %.61065
  %1300 = select i1 %1299, double %1298, double %.61065
  %1301 = fdiv double %131, %1300
  br label %.lr.ph1418._crit_edge

.lr.ph1418._crit_edge:                            ; preds = %.lr.ph1418, %1273, %1168
  %1302 = phi i64 [ %1275, %1273 ], [ %1170, %1168 ], [ %1091, %.lr.ph1418 ]
  %.71066 = phi double [ %1300, %1273 ], [ %1183, %1168 ], [ %.410631414, %.lr.ph1418 ]
  %.11 = phi i64 [ %.10, %1273 ], [ %.10, %1168 ], [ %.91415, %.lr.ph1418 ]
  %.3 = phi double [ %1301, %1273 ], [ %1184, %1168 ], [ %.21416, %.lr.ph1418 ]
  %1303 = load i64, ptr %20, align 8, !tbaa !5
  %.not1134.not = icmp slt i64 %.511051413, %1303
  br i1 %.not1134.not, label %.lr.ph1418, label %._crit_edge1419, !llvm.loop !67

._crit_edge1419:                                  ; preds = %.lr.ph1418._crit_edge, %._crit_edge1397.thread, %._crit_edge1397
  %1304 = phi i64 [ %1046, %._crit_edge1397 ], [ %1046, %._crit_edge1397.thread ], [ %1302, %.lr.ph1418._crit_edge ]
  %1305 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %.not1135, label %1306, label %1379

1306:                                             ; preds = %._crit_edge1419
  %1307 = add i64 %1304, 1
  %1308 = sub i64 %1307, %1305
  store i64 %1308, ptr %20, align 8, !tbaa !5
  %1309 = getelementptr double, ptr %45, i64 %1305
  %1310 = getelementptr double, ptr %1309, i64 %1304
  %1311 = mul nsw i64 %.210751512, %39
  %1312 = getelementptr double, ptr %41, i64 %1305
  %1313 = getelementptr double, ptr %1312, i64 %1311
  %1314 = call i32 @f2c_dcopy(ptr noundef nonnull %20, ptr noundef %1310, ptr noundef nonnull @c__1, ptr noundef %1313, ptr noundef nonnull @c__1) #6
  %1315 = load i64, ptr %3, align 8, !tbaa !5
  %1316 = load i64, ptr %24, align 8, !tbaa !5
  %1317 = add i64 %1315, 1
  %1318 = sub i64 %1317, %1316
  store i64 %1318, ptr %20, align 8, !tbaa !5
  %gep1500 = getelementptr double, ptr %invariant.gep1489, i64 %1316
  %1319 = add nsw i64 %.210751512, 1
  %1320 = mul nsw i64 %1319, %39
  %1321 = getelementptr double, ptr %41, i64 %1316
  %1322 = getelementptr double, ptr %1321, i64 %1320
  %1323 = call i32 @f2c_dcopy(ptr noundef nonnull %20, ptr noundef %gep1500, ptr noundef nonnull @c__1, ptr noundef %1322, ptr noundef nonnull @c__1) #6
  %1324 = load i64, ptr %3, align 8, !tbaa !5
  %1325 = load i64, ptr %24, align 8, !tbaa !5
  %.not11361428 = icmp sgt i64 %1325, %1324
  br i1 %.not11361428, label %._crit_edge1567, label %.lr.ph1432

.lr.ph1432:                                       ; preds = %1306, %.lr.ph1432
  %.210711430 = phi double [ %1339, %.lr.ph1432 ], [ 0.000000e+00, %1306 ]
  %.910971429 = phi i64 [ %1340, %.lr.ph1432 ], [ %1325, %1306 ]
  %1326 = getelementptr double, ptr %41, i64 %.910971429
  %1327 = getelementptr double, ptr %1326, i64 %1311
  %1328 = load double, ptr %1327, align 8, !tbaa !9
  %1329 = fcmp oge double %1328, 0.000000e+00
  %1330 = fneg double %1328
  %1331 = select i1 %1329, double %1328, double %1330
  %1332 = getelementptr double, ptr %1326, i64 %1320
  %1333 = load double, ptr %1332, align 8, !tbaa !9
  %1334 = fcmp oge double %1333, 0.000000e+00
  %1335 = fneg double %1333
  %1336 = select i1 %1334, double %1333, double %1335
  %1337 = fadd double %1331, %1336
  %1338 = fcmp oge double %.210711430, %1337
  %1339 = select i1 %1338, double %.210711430, double %1337
  %1340 = add i64 %.910971429, 1
  %exitcond1535.not = icmp eq i64 %.910971429, %1324
  br i1 %exitcond1535.not, label %._crit_edge1433, label %.lr.ph1432, !llvm.loop !68

._crit_edge1433:                                  ; preds = %.lr.ph1432
  store double %1328, ptr %22, align 8, !tbaa !9
  br label %._crit_edge1567

._crit_edge1567:                                  ; preds = %1306, %._crit_edge1433
  %.21071.lcssa = phi double [ %1339, %._crit_edge1433 ], [ 0.000000e+00, %1306 ]
  %.pre-phi = add i64 %1324, 1
  %1341 = fdiv double 1.000000e+00, %.21071.lcssa
  store double %1341, ptr %33, align 8, !tbaa !9
  %1342 = sub i64 %.pre-phi, %1325
  store i64 %1342, ptr %20, align 8, !tbaa !5
  %1343 = getelementptr double, ptr %41, i64 %1325
  %1344 = getelementptr double, ptr %1343, i64 %1311
  %1345 = call i32 @f2c_dscal(ptr noundef nonnull %20, ptr noundef nonnull %33, ptr noundef %1344, ptr noundef nonnull @c__1) #6
  %1346 = load i64, ptr %3, align 8, !tbaa !5
  %1347 = load i64, ptr %24, align 8, !tbaa !5
  %1348 = add i64 %1346, 1
  %1349 = sub i64 %1348, %1347
  store i64 %1349, ptr %20, align 8, !tbaa !5
  %1350 = getelementptr double, ptr %41, i64 %1347
  %1351 = getelementptr double, ptr %1350, i64 %1320
  %1352 = call i32 @f2c_dscal(ptr noundef nonnull %20, ptr noundef nonnull %33, ptr noundef %1351, ptr noundef nonnull @c__1) #6
  %1353 = load i64, ptr %24, align 8, !tbaa !5
  %1354 = add nsw i64 %1353, -1
  store i64 %1354, ptr %20, align 8, !tbaa !5
  %.not1137.not1436 = icmp sgt i64 %1353, 1
  br i1 %.not1137.not1436, label %.lr.ph1439.preheader, label %.loopexit

.lr.ph1439.preheader:                             ; preds = %._crit_edge1567
  %1355 = add nsw i64 %1353, -1
  %min.iters.check1702 = icmp ult i64 %1353, 5
  %or.cond1785 = select i1 %min.iters.check1702, i1 true, i1 %diff.check1699
  br i1 %or.cond1785, label %.lr.ph1439.preheader1786, label %vector.ph1703

vector.ph1703:                                    ; preds = %.lr.ph1439.preheader
  %n.vec1705 = and i64 %1355, -4
  %ind.end1706 = or disjoint i64 %n.vec1705, 1
  br label %vector.body1708

vector.body1708:                                  ; preds = %vector.body1708, %vector.ph1703
  %index1709 = phi i64 [ 0, %vector.ph1703 ], [ %index.next1711, %vector.body1708 ]
  %offset.idx1710 = or disjoint i64 %index1709, 1
  %1356 = getelementptr double, ptr %41, i64 %offset.idx1710
  %1357 = getelementptr double, ptr %1356, i64 %1311
  %1358 = getelementptr i8, ptr %1357, i64 16
  store <2 x double> zeroinitializer, ptr %1357, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %1358, align 8, !tbaa !9
  %1359 = getelementptr double, ptr %1356, i64 %1320
  %1360 = getelementptr i8, ptr %1359, i64 16
  store <2 x double> zeroinitializer, ptr %1359, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %1360, align 8, !tbaa !9
  %index.next1711 = add nuw i64 %index1709, 4
  %1361 = icmp eq i64 %index.next1711, %n.vec1705
  br i1 %1361, label %middle.block1700, label %vector.body1708, !llvm.loop !69

middle.block1700:                                 ; preds = %vector.body1708
  %cmp.n1712 = icmp eq i64 %1355, %n.vec1705
  br i1 %cmp.n1712, label %.loopexit, label %.lr.ph1439.preheader1786

.lr.ph1439.preheader1786:                         ; preds = %middle.block1700, %.lr.ph1439.preheader
  %.1010981437.ph = phi i64 [ 1, %.lr.ph1439.preheader ], [ %ind.end1706, %middle.block1700 ]
  %1362 = sub i64 %1353, %.1010981437.ph
  %xtraiter1806 = and i64 %1362, 3
  %lcmp.mod1807.not = icmp eq i64 %xtraiter1806, 0
  br i1 %lcmp.mod1807.not, label %.lr.ph1439.prol.loopexit, label %.lr.ph1439.prol

.lr.ph1439.prol:                                  ; preds = %.lr.ph1439.preheader1786, %.lr.ph1439.prol
  %.1010981437.prol = phi i64 [ %1366, %.lr.ph1439.prol ], [ %.1010981437.ph, %.lr.ph1439.preheader1786 ]
  %prol.iter1808 = phi i64 [ %prol.iter1808.next, %.lr.ph1439.prol ], [ 0, %.lr.ph1439.preheader1786 ]
  %1363 = getelementptr double, ptr %41, i64 %.1010981437.prol
  %1364 = getelementptr double, ptr %1363, i64 %1311
  store double 0.000000e+00, ptr %1364, align 8, !tbaa !9
  %1365 = getelementptr double, ptr %1363, i64 %1320
  store double 0.000000e+00, ptr %1365, align 8, !tbaa !9
  %1366 = add nuw nsw i64 %.1010981437.prol, 1
  %prol.iter1808.next = add i64 %prol.iter1808, 1
  %prol.iter1808.cmp.not = icmp eq i64 %prol.iter1808.next, %xtraiter1806
  br i1 %prol.iter1808.cmp.not, label %.lr.ph1439.prol.loopexit, label %.lr.ph1439.prol, !llvm.loop !70

.lr.ph1439.prol.loopexit:                         ; preds = %.lr.ph1439.prol, %.lr.ph1439.preheader1786
  %.1010981437.unr = phi i64 [ %.1010981437.ph, %.lr.ph1439.preheader1786 ], [ %1366, %.lr.ph1439.prol ]
  %1367 = sub i64 %.1010981437.ph, %1353
  %1368 = icmp ugt i64 %1367, -4
  br i1 %1368, label %.loopexit, label %.lr.ph1439

.lr.ph1439:                                       ; preds = %.lr.ph1439.prol.loopexit, %.lr.ph1439
  %.1010981437 = phi i64 [ %1378, %.lr.ph1439 ], [ %.1010981437.unr, %.lr.ph1439.prol.loopexit ]
  %1369 = getelementptr double, ptr %41, i64 %.1010981437
  %1370 = getelementptr double, ptr %1369, i64 %1311
  store double 0.000000e+00, ptr %1370, align 8, !tbaa !9
  %1371 = getelementptr double, ptr %1369, i64 %1320
  store double 0.000000e+00, ptr %1371, align 8, !tbaa !9
  %gep1841 = getelementptr double, ptr %invariant.gep1840, i64 %.1010981437
  %1372 = getelementptr double, ptr %gep1841, i64 %1311
  store double 0.000000e+00, ptr %1372, align 8, !tbaa !9
  %1373 = getelementptr double, ptr %gep1841, i64 %1320
  store double 0.000000e+00, ptr %1373, align 8, !tbaa !9
  %gep1843 = getelementptr double, ptr %invariant.gep1842, i64 %.1010981437
  %1374 = getelementptr double, ptr %gep1843, i64 %1311
  store double 0.000000e+00, ptr %1374, align 8, !tbaa !9
  %1375 = getelementptr double, ptr %gep1843, i64 %1320
  store double 0.000000e+00, ptr %1375, align 8, !tbaa !9
  %gep1845 = getelementptr double, ptr %invariant.gep1844, i64 %.1010981437
  %1376 = getelementptr double, ptr %gep1845, i64 %1311
  store double 0.000000e+00, ptr %1376, align 8, !tbaa !9
  %1377 = getelementptr double, ptr %gep1845, i64 %1320
  store double 0.000000e+00, ptr %1377, align 8, !tbaa !9
  %1378 = add nuw nsw i64 %.1010981437, 4
  %exitcond1538.not.3 = icmp eq i64 %1378, %1353
  br i1 %exitcond1538.not.3, label %.loopexit, label %.lr.ph1439, !llvm.loop !71

1379:                                             ; preds = %._crit_edge1419
  %1380 = add nsw i64 %1304, -1
  %1381 = icmp slt i64 %1305, %1380
  br i1 %1381, label %1382, label %1402

1382:                                             ; preds = %1379
  %1383 = xor i64 %1305, -1
  %1384 = add i64 %1304, %1383
  store i64 %1384, ptr %20, align 8, !tbaa !5
  %1385 = add nsw i64 %1305, 2
  %1386 = mul nsw i64 %1385, %39
  %gep1484 = getelementptr double, ptr %invariant.gep1477, i64 %1386
  %1387 = getelementptr double, ptr %45, i64 %1385
  %1388 = getelementptr double, ptr %1387, i64 %1304
  %1389 = getelementptr double, ptr %45, i64 %1305
  %1390 = getelementptr double, ptr %1389, i64 %1304
  %1391 = mul nsw i64 %1305, %39
  %gep1486 = getelementptr double, ptr %invariant.gep1477, i64 %1391
  %1392 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull @c_b22, ptr noundef %gep1484, ptr noundef nonnull %7, ptr noundef %1388, ptr noundef nonnull @c__1, ptr noundef %1390, ptr noundef %gep1486, ptr noundef nonnull @c__1) #6
  %1393 = load i64, ptr %3, align 8, !tbaa !5
  %1394 = load i64, ptr %24, align 8, !tbaa !5
  %1395 = xor i64 %1394, -1
  %1396 = add i64 %1393, %1395
  store i64 %1396, ptr %20, align 8, !tbaa !5
  %1397 = add nsw i64 %1394, 2
  %1398 = mul nsw i64 %1397, %39
  %gep1488 = getelementptr double, ptr %invariant.gep1477, i64 %1398
  %gep1490 = getelementptr double, ptr %invariant.gep1489, i64 %1397
  %1399 = add nsw i64 %1394, 1
  %gep1492 = getelementptr double, ptr %invariant.gep1473, i64 %1394
  %1400 = mul nsw i64 %1399, %39
  %gep1494 = getelementptr double, ptr %invariant.gep1477, i64 %1400
  %1401 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull @c_b22, ptr noundef %gep1488, ptr noundef nonnull %7, ptr noundef %gep1490, ptr noundef nonnull @c__1, ptr noundef %gep1492, ptr noundef %gep1494, ptr noundef nonnull @c__1) #6
  br label %1411

1402:                                             ; preds = %1379
  %1403 = getelementptr double, ptr %45, i64 %1305
  %1404 = getelementptr double, ptr %1403, i64 %1304
  %1405 = mul nsw i64 %1305, %39
  %gep1478 = getelementptr double, ptr %invariant.gep1477, i64 %1405
  %1406 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef %1404, ptr noundef %gep1478, ptr noundef nonnull @c__1) #6
  %1407 = load i64, ptr %24, align 8, !tbaa !5
  %1408 = add nsw i64 %1407, 1
  %gep1480 = getelementptr double, ptr %invariant.gep1473, i64 %1407
  %1409 = mul nsw i64 %1408, %39
  %gep1482 = getelementptr double, ptr %invariant.gep1477, i64 %1409
  %1410 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef %gep1480, ptr noundef %gep1482, ptr noundef nonnull @c__1) #6
  br label %1411

1411:                                             ; preds = %1402, %1382
  %1412 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %1412, ptr %20, align 8, !tbaa !5
  %.not11381420 = icmp slt i64 %1412, 1
  %.pre1555 = load i64, ptr %24, align 8, !tbaa !5
  %.pre1569 = mul nsw i64 %.pre1555, %39
  br i1 %.not11381420, label %._crit_edge1566, label %.lr.ph1424

.lr.ph1424:                                       ; preds = %1411
  %1413 = add nsw i64 %.pre1555, 1
  %1414 = mul nsw i64 %1413, %39
  br label %1415

1415:                                             ; preds = %.lr.ph1424, %1415
  %.310721422 = phi double [ 0.000000e+00, %.lr.ph1424 ], [ %1429, %1415 ]
  %.1110991421 = phi i64 [ 1, %.lr.ph1424 ], [ %1430, %1415 ]
  %1416 = getelementptr double, ptr %41, i64 %.1110991421
  %1417 = getelementptr double, ptr %1416, i64 %.pre1569
  %1418 = load double, ptr %1417, align 8, !tbaa !9
  %1419 = fcmp oge double %1418, 0.000000e+00
  %1420 = fneg double %1418
  %1421 = select i1 %1419, double %1418, double %1420
  %1422 = getelementptr double, ptr %1416, i64 %1414
  %1423 = load double, ptr %1422, align 8, !tbaa !9
  %1424 = fcmp oge double %1423, 0.000000e+00
  %1425 = fneg double %1423
  %1426 = select i1 %1424, double %1423, double %1425
  %1427 = fadd double %1421, %1426
  %1428 = fcmp oge double %.310721422, %1427
  %1429 = select i1 %1428, double %.310721422, double %1427
  %1430 = add nuw i64 %.1110991421, 1
  %exitcond1534.not = icmp eq i64 %.1110991421, %1412
  br i1 %exitcond1534.not, label %._crit_edge1425, label %1415, !llvm.loop !72

._crit_edge1425:                                  ; preds = %1415
  store double %1418, ptr %22, align 8, !tbaa !9
  br label %._crit_edge1566

._crit_edge1566:                                  ; preds = %1411, %._crit_edge1425
  %.31072.lcssa = phi double [ %1429, %._crit_edge1425 ], [ 0.000000e+00, %1411 ]
  %1431 = fdiv double 1.000000e+00, %.31072.lcssa
  store double %1431, ptr %33, align 8, !tbaa !9
  %gep1496 = getelementptr double, ptr %invariant.gep1477, i64 %.pre1569
  %1432 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1496, ptr noundef nonnull @c__1) #6
  %1433 = load i64, ptr %24, align 8, !tbaa !5
  %1434 = add nsw i64 %1433, 1
  %1435 = mul nsw i64 %1434, %39
  %gep1498 = getelementptr double, ptr %invariant.gep1477, i64 %1435
  %1436 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1498, ptr noundef nonnull @c__1) #6
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph1439.prol.loopexit, %.lr.ph1439, %middle.block1700, %.lr.ph1468.preheader, %._crit_edge1567, %951, %1001, %._crit_edge1566
  %spec.select1161.v = phi i64 [ 1, %1001 ], [ 2, %._crit_edge1566 ], [ 1, %951 ], [ 2, %._crit_edge1567 ], [ 1, %.lr.ph1468.preheader ], [ 2, %middle.block1700 ], [ 2, %.lr.ph1439 ], [ 2, %.lr.ph1439.prol.loopexit ]
  %spec.select1161 = add nsw i64 %spec.select1161.v, %.210751512
  %1437 = icmp eq i64 %.41081, -1
  br i1 %1437, label %.thread1241, label %.thread1235

.thread1235:                                      ; preds = %738, %.loopexit
  %.310761233 = phi i64 [ %spec.select1161, %.loopexit ], [ %.210751512, %738 ]
  %1438 = icmp eq i64 %.41081, 1
  %spec.select1250 = select i1 %1438, i64 -1, i64 %.41081
  br label %.thread1241

.thread1241:                                      ; preds = %.thread1235, %.loopexit, %726
  %.3107612331244 = phi i64 [ %.210751512, %726 ], [ %spec.select1161, %.loopexit ], [ %.310761233, %.thread1235 ]
  %1439 = phi i64 [ 0, %726 ], [ 0, %.loopexit ], [ %spec.select1250, %.thread1235 ]
  %1440 = load i64, ptr %24, align 8, !tbaa !5
  %1441 = add nsw i64 %1440, 1
  store i64 %1441, ptr %24, align 8, !tbaa !5
  %1442 = load i64, ptr %19, align 8, !tbaa !5
  %.not1129.not = icmp slt i64 %1440, %1442
  br i1 %.not1129.not, label %726, label %.loopexit1278, !llvm.loop !73

.loopexit1278:                                    ; preds = %.thread1241, %716, %.loopexit1282, %117, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, 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 32, 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
  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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare i32 @dlabad_(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 i32 @dlaln2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

; 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.umax.i64(i64, i64) #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !12, !18}
!21 = distinct !{!21, !12}
!22 = !{!23}
!23 = distinct !{!23, !24}
!24 = distinct !{!24, !"LVerDomain"}
!25 = !{!26}
!26 = distinct !{!26, !24}
!27 = !{!28}
!28 = distinct !{!28, !24}
!29 = !{!30}
!30 = distinct !{!30, !24}
!31 = !{!32, !23, !28, !26, !33}
!32 = distinct !{!32, !24}
!33 = distinct !{!33, !24}
!34 = !{!33}
!35 = !{!32}
!36 = !{!23, !28, !26, !33}
!37 = distinct !{!37, !12, !18, !19}
!38 = distinct !{!38, !12, !18}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12, !18, !19}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !12, !18}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12}
!46 = distinct !{!46, !12, !18, !19}
!47 = distinct !{!47, !16}
!48 = distinct !{!48, !12, !18}
!49 = distinct !{!49, !12}
!50 = !{!51}
!51 = distinct !{!51, !52}
!52 = distinct !{!52, !"LVerDomain"}
!53 = !{!54}
!54 = distinct !{!54, !52}
!55 = !{!56}
!56 = distinct !{!56, !52}
!57 = !{!58}
!58 = distinct !{!58, !52}
!59 = !{!60, !51, !56, !54, !61}
!60 = distinct !{!60, !52}
!61 = distinct !{!61, !52}
!62 = !{!61}
!63 = !{!60}
!64 = !{!51, !56, !54, !61}
!65 = distinct !{!65, !12, !18, !19}
!66 = distinct !{!66, !12, !18}
!67 = distinct !{!67, !12}
!68 = distinct !{!68, !12}
!69 = distinct !{!69, !12, !18, !19}
!70 = distinct !{!70, !16}
!71 = distinct !{!71, !12, !18}
!72 = distinct !{!72, !12}
!73 = distinct !{!73, !12}


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