; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dtrsyl)

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_false = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c_b26 = external hidden global double, align 8
@c_b30 = external hidden global double, align 8
@c_true = external hidden global i32, align 4

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

104:                                              ; preds = %13
  %105 = load ptr, ptr %14, align 8, !tbaa !5
  %106 = call i32 @lsame_(ptr noundef %105, ptr noundef @.str.1)
  %107 = icmp ne i32 %106, 0
  br i1 %107, label %114, label %108

108:                                              ; preds = %104
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = call i32 @lsame_(ptr noundef %109, ptr noundef @.str.2)
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %114, label %112

112:                                              ; preds = %108
  %113 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -1, ptr %113, align 4, !tbaa !9
  br label %201

114:                                              ; preds = %108, %104, %13
  %115 = load i32, ptr %59, align 4, !tbaa !9
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %127, label %117

117:                                              ; preds = %114
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  %119 = call i32 @lsame_(ptr noundef %118, ptr noundef @.str.1)
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %127, label %121

121:                                              ; preds = %117
  %122 = load ptr, ptr %15, align 8, !tbaa !5
  %123 = call i32 @lsame_(ptr noundef %122, ptr noundef @.str.2)
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %127, label %125

125:                                              ; preds = %121
  %126 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -2, ptr %126, align 4, !tbaa !9
  br label %200

127:                                              ; preds = %121, %117, %114
  %128 = load ptr, ptr %16, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = icmp ne i32 %129, 1
  br i1 %130, label %131, label %137

131:                                              ; preds = %127
  %132 = load ptr, ptr %16, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = icmp ne i32 %133, -1
  br i1 %134, label %135, label %137

135:                                              ; preds = %131
  %136 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %136, align 4, !tbaa !9
  br label %199

137:                                              ; preds = %131, %127
  %138 = load ptr, ptr %17, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = icmp slt i32 %139, 0
  br i1 %140, label %141, label %143

141:                                              ; preds = %137
  %142 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -4, ptr %142, align 4, !tbaa !9
  br label %198

143:                                              ; preds = %137
  %144 = load ptr, ptr %18, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp slt i32 %145, 0
  br i1 %146, label %147, label %149

147:                                              ; preds = %143
  %148 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -5, ptr %148, align 4, !tbaa !9
  br label %197

149:                                              ; preds = %143
  %150 = load ptr, ptr %20, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = load ptr, ptr %17, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = icmp sge i32 1, %153
  br i1 %154, label %155, label %156

155:                                              ; preds = %149
  br label %159

156:                                              ; preds = %149
  %157 = load ptr, ptr %17, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  br label %159

159:                                              ; preds = %156, %155
  %160 = phi i32 [ 1, %155 ], [ %158, %156 ]
  %161 = icmp slt i32 %151, %160
  br i1 %161, label %162, label %164

162:                                              ; preds = %159
  %163 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -7, ptr %163, align 4, !tbaa !9
  br label %196

164:                                              ; preds = %159
  %165 = load ptr, ptr %22, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = load ptr, ptr %18, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = icmp sge i32 1, %168
  br i1 %169, label %170, label %171

170:                                              ; preds = %164
  br label %174

171:                                              ; preds = %164
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %171, %170
  %175 = phi i32 [ 1, %170 ], [ %173, %171 ]
  %176 = icmp slt i32 %166, %175
  br i1 %176, label %177, label %179

177:                                              ; preds = %174
  %178 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -9, ptr %178, align 4, !tbaa !9
  br label %195

179:                                              ; preds = %174
  %180 = load ptr, ptr %24, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = load ptr, ptr %17, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = icmp sge i32 1, %183
  br i1 %184, label %185, label %186

185:                                              ; preds = %179
  br label %189

186:                                              ; preds = %179
  %187 = load ptr, ptr %17, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %186, %185
  %190 = phi i32 [ 1, %185 ], [ %188, %186 ]
  %191 = icmp slt i32 %181, %190
  br i1 %191, label %192, label %194

192:                                              ; preds = %189
  %193 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -11, ptr %193, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %192, %189
  br label %195

195:                                              ; preds = %194, %177
  br label %196

196:                                              ; preds = %195, %162
  br label %197

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

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

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

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

201:                                              ; preds = %200, %112
  %202 = load ptr, ptr %26, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %205, label %210

205:                                              ; preds = %201
  %206 = load ptr, ptr %26, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = sub nsw i32 0, %207
  store i32 %208, ptr %33, align 4, !tbaa !9
  %209 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %66, align 4
  br label %5106

210:                                              ; preds = %201
  %211 = load ptr, ptr %25, align 8, !tbaa !5
  store double 1.000000e+00, ptr %211, align 8, !tbaa !11
  %212 = load ptr, ptr %17, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp eq i32 %213, 0
  br i1 %214, label %219, label %215

215:                                              ; preds = %210
  %216 = load ptr, ptr %18, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %220

219:                                              ; preds = %215, %210
  store i32 1, ptr %66, align 4
  br label %5106

220:                                              ; preds = %215
  %221 = call double @dlamch_(ptr noundef @.str.4)
  store double %221, ptr %64, align 8, !tbaa !11
  %222 = call double @dlamch_(ptr noundef @.str.5)
  store double %222, ptr %60, align 8, !tbaa !11
  %223 = load double, ptr %60, align 8, !tbaa !11
  %224 = fdiv double 1.000000e+00, %223
  store double %224, ptr %57, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %60, ptr noundef %57)
  %225 = load double, ptr %60, align 8, !tbaa !11
  %226 = load ptr, ptr %17, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = load ptr, ptr %18, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = mul nsw i32 %227, %229
  %231 = sitofp i32 %230 to double
  %232 = fmul double %225, %231
  %233 = load double, ptr %64, align 8, !tbaa !11
  %234 = fdiv double %232, %233
  store double %234, ptr %60, align 8, !tbaa !11
  %235 = load double, ptr %60, align 8, !tbaa !11
  %236 = fdiv double 1.000000e+00, %235
  store double %236, ptr %57, align 8, !tbaa !11
  %237 = load double, ptr %60, align 8, !tbaa !11
  store double %237, ptr %37, align 8, !tbaa !11
  %238 = load double, ptr %64, align 8, !tbaa !11
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  %240 = load ptr, ptr %17, align 8, !tbaa !5
  %241 = load ptr, ptr %19, align 8, !tbaa !5
  %242 = load i32, ptr %28, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %241, i64 %243
  %245 = load ptr, ptr %20, align 8, !tbaa !5
  %246 = getelementptr inbounds [1 x double], ptr %63, i64 0, i64 0
  %247 = call double @dlange_(ptr noundef @.str.6, ptr noundef %239, ptr noundef %240, ptr noundef %244, ptr noundef %245, ptr noundef %246)
  %248 = fmul double %238, %247
  store double %248, ptr %38, align 8, !tbaa !11
  %249 = load double, ptr %37, align 8, !tbaa !11
  %250 = load double, ptr %38, align 8, !tbaa !11
  %251 = fcmp oge double %249, %250
  br i1 %251, label %252, label %254

252:                                              ; preds = %220
  %253 = load double, ptr %37, align 8, !tbaa !11
  br label %256

254:                                              ; preds = %220
  %255 = load double, ptr %38, align 8, !tbaa !11
  br label %256

256:                                              ; preds = %254, %252
  %257 = phi double [ %253, %252 ], [ %255, %254 ]
  store double %257, ptr %37, align 8, !tbaa !11
  %258 = load double, ptr %64, align 8, !tbaa !11
  %259 = load ptr, ptr %18, align 8, !tbaa !5
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = load ptr, ptr %21, align 8, !tbaa !5
  %262 = load i32, ptr %30, align 4, !tbaa !9
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds double, ptr %261, i64 %263
  %265 = load ptr, ptr %22, align 8, !tbaa !5
  %266 = getelementptr inbounds [1 x double], ptr %63, i64 0, i64 0
  %267 = call double @dlange_(ptr noundef @.str.6, ptr noundef %259, ptr noundef %260, ptr noundef %264, ptr noundef %265, ptr noundef %266)
  %268 = fmul double %258, %267
  store double %268, ptr %38, align 8, !tbaa !11
  %269 = load double, ptr %37, align 8, !tbaa !11
  %270 = load double, ptr %38, align 8, !tbaa !11
  %271 = fcmp oge double %269, %270
  br i1 %271, label %272, label %274

272:                                              ; preds = %256
  %273 = load double, ptr %37, align 8, !tbaa !11
  br label %276

274:                                              ; preds = %256
  %275 = load double, ptr %38, align 8, !tbaa !11
  br label %276

276:                                              ; preds = %274, %272
  %277 = phi double [ %273, %272 ], [ %275, %274 ]
  store double %277, ptr %40, align 8, !tbaa !11
  %278 = load ptr, ptr %16, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = sitofp i32 %279 to double
  store double %280, ptr %65, align 8, !tbaa !11
  %281 = load i32, ptr %58, align 4, !tbaa !9
  %282 = icmp ne i32 %281, 0
  br i1 %282, label %283, label %1481

283:                                              ; preds = %276
  %284 = load i32, ptr %59, align 4, !tbaa !9
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %286, label %1481

286:                                              ; preds = %283
  store i32 1, ptr %48, align 4, !tbaa !9
  %287 = load ptr, ptr %18, align 8, !tbaa !5
  %288 = load i32, ptr %287, align 4, !tbaa !9
  store i32 %288, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %1477, %286
  %290 = load i32, ptr %45, align 4, !tbaa !9
  %291 = load i32, ptr %33, align 4, !tbaa !9
  %292 = icmp sle i32 %290, %291
  br i1 %292, label %293, label %1480

293:                                              ; preds = %289
  %294 = load i32, ptr %45, align 4, !tbaa !9
  %295 = load i32, ptr %48, align 4, !tbaa !9
  %296 = icmp slt i32 %294, %295
  br i1 %296, label %297, label %298

297:                                              ; preds = %293
  br label %1476

298:                                              ; preds = %293
  %299 = load i32, ptr %45, align 4, !tbaa !9
  %300 = load ptr, ptr %18, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = icmp eq i32 %299, %301
  br i1 %302, label %303, label %306

303:                                              ; preds = %298
  %304 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %304, ptr %51, align 4, !tbaa !9
  %305 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %305, ptr %52, align 4, !tbaa !9
  br label %330

306:                                              ; preds = %298
  %307 = load ptr, ptr %21, align 8, !tbaa !5
  %308 = load i32, ptr %45, align 4, !tbaa !9
  %309 = add nsw i32 %308, 1
  %310 = load i32, ptr %45, align 4, !tbaa !9
  %311 = load i32, ptr %29, align 4, !tbaa !9
  %312 = mul nsw i32 %310, %311
  %313 = add nsw i32 %309, %312
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %307, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !11
  %317 = fcmp une double %316, 0.000000e+00
  br i1 %317, label %318, label %324

318:                                              ; preds = %306
  %319 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %319, ptr %51, align 4, !tbaa !9
  %320 = load i32, ptr %45, align 4, !tbaa !9
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %52, align 4, !tbaa !9
  %322 = load i32, ptr %45, align 4, !tbaa !9
  %323 = add nsw i32 %322, 2
  store i32 %323, ptr %48, align 4, !tbaa !9
  br label %329

324:                                              ; preds = %306
  %325 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %325, ptr %51, align 4, !tbaa !9
  %326 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %326, ptr %52, align 4, !tbaa !9
  %327 = load i32, ptr %45, align 4, !tbaa !9
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %48, align 4, !tbaa !9
  br label %329

329:                                              ; preds = %324, %318
  br label %330

330:                                              ; preds = %329, %303
  %331 = load ptr, ptr %17, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  store i32 %332, ptr %47, align 4, !tbaa !9
  %333 = load ptr, ptr %17, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  store i32 %334, ptr %44, align 4, !tbaa !9
  br label %335

335:                                              ; preds = %1472, %330
  %336 = load i32, ptr %44, align 4, !tbaa !9
  %337 = icmp sge i32 %336, 1
  br i1 %337, label %338, label %1475

338:                                              ; preds = %335
  %339 = load i32, ptr %44, align 4, !tbaa !9
  %340 = load i32, ptr %47, align 4, !tbaa !9
  %341 = icmp sgt i32 %339, %340
  br i1 %341, label %342, label %343

342:                                              ; preds = %338
  br label %1471

343:                                              ; preds = %338
  %344 = load i32, ptr %44, align 4, !tbaa !9
  %345 = icmp eq i32 %344, 1
  br i1 %345, label %346, label %349

346:                                              ; preds = %343
  %347 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %347, ptr %49, align 4, !tbaa !9
  %348 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %348, ptr %50, align 4, !tbaa !9
  br label %373

349:                                              ; preds = %343
  %350 = load ptr, ptr %19, align 8, !tbaa !5
  %351 = load i32, ptr %44, align 4, !tbaa !9
  %352 = load i32, ptr %44, align 4, !tbaa !9
  %353 = sub nsw i32 %352, 1
  %354 = load i32, ptr %27, align 4, !tbaa !9
  %355 = mul nsw i32 %353, %354
  %356 = add nsw i32 %351, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %350, i64 %357
  %359 = load double, ptr %358, align 8, !tbaa !11
  %360 = fcmp une double %359, 0.000000e+00
  br i1 %360, label %361, label %367

361:                                              ; preds = %349
  %362 = load i32, ptr %44, align 4, !tbaa !9
  %363 = sub nsw i32 %362, 1
  store i32 %363, ptr %49, align 4, !tbaa !9
  %364 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %364, ptr %50, align 4, !tbaa !9
  %365 = load i32, ptr %44, align 4, !tbaa !9
  %366 = sub nsw i32 %365, 2
  store i32 %366, ptr %47, align 4, !tbaa !9
  br label %372

367:                                              ; preds = %349
  %368 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %368, ptr %49, align 4, !tbaa !9
  %369 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %369, ptr %50, align 4, !tbaa !9
  %370 = load i32, ptr %44, align 4, !tbaa !9
  %371 = sub nsw i32 %370, 1
  store i32 %371, ptr %47, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %367, %361
  br label %373

373:                                              ; preds = %372, %346
  %374 = load i32, ptr %51, align 4, !tbaa !9
  %375 = load i32, ptr %52, align 4, !tbaa !9
  %376 = icmp eq i32 %374, %375
  br i1 %376, label %377, label %569

377:                                              ; preds = %373
  %378 = load i32, ptr %49, align 4, !tbaa !9
  %379 = load i32, ptr %50, align 4, !tbaa !9
  %380 = icmp eq i32 %378, %379
  br i1 %380, label %381, label %569

381:                                              ; preds = %377
  %382 = load ptr, ptr %17, align 8, !tbaa !5
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = load i32, ptr %49, align 4, !tbaa !9
  %385 = sub nsw i32 %383, %384
  store i32 %385, ptr %34, align 4, !tbaa !9
  %386 = load i32, ptr %49, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %35, align 4, !tbaa !9
  %388 = load i32, ptr %49, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %36, align 4, !tbaa !9
  %390 = load ptr, ptr %19, align 8, !tbaa !5
  %391 = load i32, ptr %49, align 4, !tbaa !9
  %392 = load i32, ptr %35, align 4, !tbaa !9
  %393 = load ptr, ptr %17, align 8, !tbaa !5
  %394 = load i32, ptr %393, align 4, !tbaa !9
  %395 = icmp sle i32 %392, %394
  br i1 %395, label %396, label %398

396:                                              ; preds = %381
  %397 = load i32, ptr %35, align 4, !tbaa !9
  br label %401

398:                                              ; preds = %381
  %399 = load ptr, ptr %17, align 8, !tbaa !5
  %400 = load i32, ptr %399, align 4, !tbaa !9
  br label %401

401:                                              ; preds = %398, %396
  %402 = phi i32 [ %397, %396 ], [ %400, %398 ]
  %403 = load i32, ptr %27, align 4, !tbaa !9
  %404 = mul nsw i32 %402, %403
  %405 = add nsw i32 %391, %404
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %390, i64 %406
  %408 = load ptr, ptr %20, align 8, !tbaa !5
  %409 = load ptr, ptr %23, align 8, !tbaa !5
  %410 = load i32, ptr %36, align 4, !tbaa !9
  %411 = load ptr, ptr %17, align 8, !tbaa !5
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = icmp sle i32 %410, %412
  br i1 %413, label %414, label %416

414:                                              ; preds = %401
  %415 = load i32, ptr %36, align 4, !tbaa !9
  br label %419

416:                                              ; preds = %401
  %417 = load ptr, ptr %17, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  br label %419

419:                                              ; preds = %416, %414
  %420 = phi i32 [ %415, %414 ], [ %418, %416 ]
  %421 = load i32, ptr %51, align 4, !tbaa !9
  %422 = load i32, ptr %31, align 4, !tbaa !9
  %423 = mul nsw i32 %421, %422
  %424 = add nsw i32 %420, %423
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %409, i64 %425
  %427 = call double @ddot_(ptr noundef %34, ptr noundef %407, ptr noundef %408, ptr noundef %426, ptr noundef @c__1)
  store double %427, ptr %41, align 8, !tbaa !11
  %428 = load i32, ptr %51, align 4, !tbaa !9
  %429 = sub nsw i32 %428, 1
  store i32 %429, ptr %34, align 4, !tbaa !9
  %430 = load ptr, ptr %23, align 8, !tbaa !5
  %431 = load i32, ptr %49, align 4, !tbaa !9
  %432 = load i32, ptr %31, align 4, !tbaa !9
  %433 = add nsw i32 %431, %432
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %430, i64 %434
  %436 = load ptr, ptr %24, align 8, !tbaa !5
  %437 = load ptr, ptr %21, align 8, !tbaa !5
  %438 = load i32, ptr %51, align 4, !tbaa !9
  %439 = load i32, ptr %29, align 4, !tbaa !9
  %440 = mul nsw i32 %438, %439
  %441 = add nsw i32 %440, 1
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %437, i64 %442
  %444 = call double @ddot_(ptr noundef %34, ptr noundef %435, ptr noundef %436, ptr noundef %443, ptr noundef @c__1)
  store double %444, ptr %42, align 8, !tbaa !11
  %445 = load ptr, ptr %23, align 8, !tbaa !5
  %446 = load i32, ptr %49, align 4, !tbaa !9
  %447 = load i32, ptr %51, align 4, !tbaa !9
  %448 = load i32, ptr %31, align 4, !tbaa !9
  %449 = mul nsw i32 %447, %448
  %450 = add nsw i32 %446, %449
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds double, ptr %445, i64 %451
  %453 = load double, ptr %452, align 8, !tbaa !11
  %454 = load double, ptr %41, align 8, !tbaa !11
  %455 = load double, ptr %65, align 8, !tbaa !11
  %456 = load double, ptr %42, align 8, !tbaa !11
  %457 = call double @llvm.fmuladd.f64(double %455, double %456, double %454)
  %458 = fsub double %453, %457
  %459 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %458, ptr %459, align 16, !tbaa !11
  store double 1.000000e+00, ptr %56, align 8, !tbaa !11
  %460 = load ptr, ptr %19, align 8, !tbaa !5
  %461 = load i32, ptr %49, align 4, !tbaa !9
  %462 = load i32, ptr %49, align 4, !tbaa !9
  %463 = load i32, ptr %27, align 4, !tbaa !9
  %464 = mul nsw i32 %462, %463
  %465 = add nsw i32 %461, %464
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds double, ptr %460, i64 %466
  %468 = load double, ptr %467, align 8, !tbaa !11
  %469 = load double, ptr %65, align 8, !tbaa !11
  %470 = load ptr, ptr %21, align 8, !tbaa !5
  %471 = load i32, ptr %51, align 4, !tbaa !9
  %472 = load i32, ptr %51, align 4, !tbaa !9
  %473 = load i32, ptr %29, align 4, !tbaa !9
  %474 = mul nsw i32 %472, %473
  %475 = add nsw i32 %471, %474
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds double, ptr %470, i64 %476
  %478 = load double, ptr %477, align 8, !tbaa !11
  %479 = call double @llvm.fmuladd.f64(double %469, double %478, double %468)
  store double %479, ptr %54, align 8, !tbaa !11
  %480 = load double, ptr %54, align 8, !tbaa !11
  %481 = fcmp oge double %480, 0.000000e+00
  br i1 %481, label %482, label %484

482:                                              ; preds = %419
  %483 = load double, ptr %54, align 8, !tbaa !11
  br label %487

484:                                              ; preds = %419
  %485 = load double, ptr %54, align 8, !tbaa !11
  %486 = fneg double %485
  br label %487

487:                                              ; preds = %484, %482
  %488 = phi double [ %483, %482 ], [ %486, %484 ]
  store double %488, ptr %61, align 8, !tbaa !11
  %489 = load double, ptr %61, align 8, !tbaa !11
  %490 = load double, ptr %40, align 8, !tbaa !11
  %491 = fcmp ole double %489, %490
  br i1 %491, label %492, label %496

492:                                              ; preds = %487
  %493 = load double, ptr %40, align 8, !tbaa !11
  store double %493, ptr %54, align 8, !tbaa !11
  %494 = load double, ptr %40, align 8, !tbaa !11
  store double %494, ptr %61, align 8, !tbaa !11
  %495 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %495, align 4, !tbaa !9
  br label %496

496:                                              ; preds = %492, %487
  %497 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %498 = load double, ptr %497, align 16, !tbaa !11
  %499 = fcmp oge double %498, 0.000000e+00
  br i1 %499, label %500, label %503

500:                                              ; preds = %496
  %501 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %502 = load double, ptr %501, align 16, !tbaa !11
  br label %507

503:                                              ; preds = %496
  %504 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %505 = load double, ptr %504, align 16, !tbaa !11
  %506 = fneg double %505
  br label %507

507:                                              ; preds = %503, %500
  %508 = phi double [ %502, %500 ], [ %506, %503 ]
  store double %508, ptr %55, align 8, !tbaa !11
  %509 = load double, ptr %61, align 8, !tbaa !11
  %510 = fcmp olt double %509, 1.000000e+00
  br i1 %510, label %511, label %524

511:                                              ; preds = %507
  %512 = load double, ptr %55, align 8, !tbaa !11
  %513 = fcmp ogt double %512, 1.000000e+00
  br i1 %513, label %514, label %524

514:                                              ; preds = %511
  %515 = load double, ptr %55, align 8, !tbaa !11
  %516 = load double, ptr %57, align 8, !tbaa !11
  %517 = load double, ptr %61, align 8, !tbaa !11
  %518 = fmul double %516, %517
  %519 = fcmp ogt double %515, %518
  br i1 %519, label %520, label %523

520:                                              ; preds = %514
  %521 = load double, ptr %55, align 8, !tbaa !11
  %522 = fdiv double 1.000000e+00, %521
  store double %522, ptr %56, align 8, !tbaa !11
  br label %523

523:                                              ; preds = %520, %514
  br label %524

524:                                              ; preds = %523, %511, %507
  %525 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %526 = load double, ptr %525, align 16, !tbaa !11
  %527 = load double, ptr %56, align 8, !tbaa !11
  %528 = fmul double %526, %527
  %529 = load double, ptr %54, align 8, !tbaa !11
  %530 = fdiv double %528, %529
  %531 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  store double %530, ptr %531, align 16, !tbaa !11
  %532 = load double, ptr %56, align 8, !tbaa !11
  %533 = fcmp une double %532, 1.000000e+00
  br i1 %533, label %534, label %558

534:                                              ; preds = %524
  %535 = load ptr, ptr %18, align 8, !tbaa !5
  %536 = load i32, ptr %535, align 4, !tbaa !9
  store i32 %536, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %550, %534
  %538 = load i32, ptr %43, align 4, !tbaa !9
  %539 = load i32, ptr %34, align 4, !tbaa !9
  %540 = icmp sle i32 %538, %539
  br i1 %540, label %541, label %553

541:                                              ; preds = %537
  %542 = load ptr, ptr %17, align 8, !tbaa !5
  %543 = load ptr, ptr %23, align 8, !tbaa !5
  %544 = load i32, ptr %43, align 4, !tbaa !9
  %545 = load i32, ptr %31, align 4, !tbaa !9
  %546 = mul nsw i32 %544, %545
  %547 = add nsw i32 %546, 1
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %543, i64 %548
  call void @dscal_(ptr noundef %542, ptr noundef %56, ptr noundef %549, ptr noundef @c__1)
  br label %550

550:                                              ; preds = %541
  %551 = load i32, ptr %43, align 4, !tbaa !9
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr %43, align 4, !tbaa !9
  br label %537, !llvm.loop !13

553:                                              ; preds = %537
  %554 = load double, ptr %56, align 8, !tbaa !11
  %555 = load ptr, ptr %25, align 8, !tbaa !5
  %556 = load double, ptr %555, align 8, !tbaa !11
  %557 = fmul double %556, %554
  store double %557, ptr %555, align 8, !tbaa !11
  br label %558

558:                                              ; preds = %553, %524
  %559 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %560 = load double, ptr %559, align 16, !tbaa !11
  %561 = load ptr, ptr %23, align 8, !tbaa !5
  %562 = load i32, ptr %49, align 4, !tbaa !9
  %563 = load i32, ptr %51, align 4, !tbaa !9
  %564 = load i32, ptr %31, align 4, !tbaa !9
  %565 = mul nsw i32 %563, %564
  %566 = add nsw i32 %562, %565
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds double, ptr %561, i64 %567
  store double %560, ptr %568, align 8, !tbaa !11
  br label %1470

569:                                              ; preds = %377, %373
  %570 = load i32, ptr %51, align 4, !tbaa !9
  %571 = load i32, ptr %52, align 4, !tbaa !9
  %572 = icmp eq i32 %570, %571
  br i1 %572, label %573, label %809

573:                                              ; preds = %569
  %574 = load i32, ptr %49, align 4, !tbaa !9
  %575 = load i32, ptr %50, align 4, !tbaa !9
  %576 = icmp ne i32 %574, %575
  br i1 %576, label %577, label %809

577:                                              ; preds = %573
  %578 = load ptr, ptr %17, align 8, !tbaa !5
  %579 = load i32, ptr %578, align 4, !tbaa !9
  %580 = load i32, ptr %50, align 4, !tbaa !9
  %581 = sub nsw i32 %579, %580
  store i32 %581, ptr %34, align 4, !tbaa !9
  %582 = load i32, ptr %50, align 4, !tbaa !9
  %583 = add nsw i32 %582, 1
  store i32 %583, ptr %35, align 4, !tbaa !9
  %584 = load i32, ptr %50, align 4, !tbaa !9
  %585 = add nsw i32 %584, 1
  store i32 %585, ptr %36, align 4, !tbaa !9
  %586 = load ptr, ptr %19, align 8, !tbaa !5
  %587 = load i32, ptr %49, align 4, !tbaa !9
  %588 = load i32, ptr %35, align 4, !tbaa !9
  %589 = load ptr, ptr %17, align 8, !tbaa !5
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = icmp sle i32 %588, %590
  br i1 %591, label %592, label %594

592:                                              ; preds = %577
  %593 = load i32, ptr %35, align 4, !tbaa !9
  br label %597

594:                                              ; preds = %577
  %595 = load ptr, ptr %17, align 8, !tbaa !5
  %596 = load i32, ptr %595, align 4, !tbaa !9
  br label %597

597:                                              ; preds = %594, %592
  %598 = phi i32 [ %593, %592 ], [ %596, %594 ]
  %599 = load i32, ptr %27, align 4, !tbaa !9
  %600 = mul nsw i32 %598, %599
  %601 = add nsw i32 %587, %600
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %586, i64 %602
  %604 = load ptr, ptr %20, align 8, !tbaa !5
  %605 = load ptr, ptr %23, align 8, !tbaa !5
  %606 = load i32, ptr %36, align 4, !tbaa !9
  %607 = load ptr, ptr %17, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = icmp sle i32 %606, %608
  br i1 %609, label %610, label %612

610:                                              ; preds = %597
  %611 = load i32, ptr %36, align 4, !tbaa !9
  br label %615

612:                                              ; preds = %597
  %613 = load ptr, ptr %17, align 8, !tbaa !5
  %614 = load i32, ptr %613, align 4, !tbaa !9
  br label %615

615:                                              ; preds = %612, %610
  %616 = phi i32 [ %611, %610 ], [ %614, %612 ]
  %617 = load i32, ptr %51, align 4, !tbaa !9
  %618 = load i32, ptr %31, align 4, !tbaa !9
  %619 = mul nsw i32 %617, %618
  %620 = add nsw i32 %616, %619
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds double, ptr %605, i64 %621
  %623 = call double @ddot_(ptr noundef %34, ptr noundef %603, ptr noundef %604, ptr noundef %622, ptr noundef @c__1)
  store double %623, ptr %41, align 8, !tbaa !11
  %624 = load i32, ptr %51, align 4, !tbaa !9
  %625 = sub nsw i32 %624, 1
  store i32 %625, ptr %34, align 4, !tbaa !9
  %626 = load ptr, ptr %23, align 8, !tbaa !5
  %627 = load i32, ptr %49, align 4, !tbaa !9
  %628 = load i32, ptr %31, align 4, !tbaa !9
  %629 = add nsw i32 %627, %628
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds double, ptr %626, i64 %630
  %632 = load ptr, ptr %24, align 8, !tbaa !5
  %633 = load ptr, ptr %21, align 8, !tbaa !5
  %634 = load i32, ptr %51, align 4, !tbaa !9
  %635 = load i32, ptr %29, align 4, !tbaa !9
  %636 = mul nsw i32 %634, %635
  %637 = add nsw i32 %636, 1
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds double, ptr %633, i64 %638
  %640 = call double @ddot_(ptr noundef %34, ptr noundef %631, ptr noundef %632, ptr noundef %639, ptr noundef @c__1)
  store double %640, ptr %42, align 8, !tbaa !11
  %641 = load ptr, ptr %23, align 8, !tbaa !5
  %642 = load i32, ptr %49, align 4, !tbaa !9
  %643 = load i32, ptr %51, align 4, !tbaa !9
  %644 = load i32, ptr %31, align 4, !tbaa !9
  %645 = mul nsw i32 %643, %644
  %646 = add nsw i32 %642, %645
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %641, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !11
  %650 = load double, ptr %41, align 8, !tbaa !11
  %651 = load double, ptr %65, align 8, !tbaa !11
  %652 = load double, ptr %42, align 8, !tbaa !11
  %653 = call double @llvm.fmuladd.f64(double %651, double %652, double %650)
  %654 = fsub double %649, %653
  %655 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %654, ptr %655, align 16, !tbaa !11
  %656 = load ptr, ptr %17, align 8, !tbaa !5
  %657 = load i32, ptr %656, align 4, !tbaa !9
  %658 = load i32, ptr %50, align 4, !tbaa !9
  %659 = sub nsw i32 %657, %658
  store i32 %659, ptr %34, align 4, !tbaa !9
  %660 = load i32, ptr %50, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %35, align 4, !tbaa !9
  %662 = load i32, ptr %50, align 4, !tbaa !9
  %663 = add nsw i32 %662, 1
  store i32 %663, ptr %36, align 4, !tbaa !9
  %664 = load ptr, ptr %19, align 8, !tbaa !5
  %665 = load i32, ptr %50, align 4, !tbaa !9
  %666 = load i32, ptr %35, align 4, !tbaa !9
  %667 = load ptr, ptr %17, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = icmp sle i32 %666, %668
  br i1 %669, label %670, label %672

670:                                              ; preds = %615
  %671 = load i32, ptr %35, align 4, !tbaa !9
  br label %675

672:                                              ; preds = %615
  %673 = load ptr, ptr %17, align 8, !tbaa !5
  %674 = load i32, ptr %673, align 4, !tbaa !9
  br label %675

675:                                              ; preds = %672, %670
  %676 = phi i32 [ %671, %670 ], [ %674, %672 ]
  %677 = load i32, ptr %27, align 4, !tbaa !9
  %678 = mul nsw i32 %676, %677
  %679 = add nsw i32 %665, %678
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %664, i64 %680
  %682 = load ptr, ptr %20, align 8, !tbaa !5
  %683 = load ptr, ptr %23, align 8, !tbaa !5
  %684 = load i32, ptr %36, align 4, !tbaa !9
  %685 = load ptr, ptr %17, align 8, !tbaa !5
  %686 = load i32, ptr %685, align 4, !tbaa !9
  %687 = icmp sle i32 %684, %686
  br i1 %687, label %688, label %690

688:                                              ; preds = %675
  %689 = load i32, ptr %36, align 4, !tbaa !9
  br label %693

690:                                              ; preds = %675
  %691 = load ptr, ptr %17, align 8, !tbaa !5
  %692 = load i32, ptr %691, align 4, !tbaa !9
  br label %693

693:                                              ; preds = %690, %688
  %694 = phi i32 [ %689, %688 ], [ %692, %690 ]
  %695 = load i32, ptr %51, align 4, !tbaa !9
  %696 = load i32, ptr %31, align 4, !tbaa !9
  %697 = mul nsw i32 %695, %696
  %698 = add nsw i32 %694, %697
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %683, i64 %699
  %701 = call double @ddot_(ptr noundef %34, ptr noundef %681, ptr noundef %682, ptr noundef %700, ptr noundef @c__1)
  store double %701, ptr %41, align 8, !tbaa !11
  %702 = load i32, ptr %51, align 4, !tbaa !9
  %703 = sub nsw i32 %702, 1
  store i32 %703, ptr %34, align 4, !tbaa !9
  %704 = load ptr, ptr %23, align 8, !tbaa !5
  %705 = load i32, ptr %50, align 4, !tbaa !9
  %706 = load i32, ptr %31, align 4, !tbaa !9
  %707 = add nsw i32 %705, %706
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %704, i64 %708
  %710 = load ptr, ptr %24, align 8, !tbaa !5
  %711 = load ptr, ptr %21, align 8, !tbaa !5
  %712 = load i32, ptr %51, align 4, !tbaa !9
  %713 = load i32, ptr %29, align 4, !tbaa !9
  %714 = mul nsw i32 %712, %713
  %715 = add nsw i32 %714, 1
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds double, ptr %711, i64 %716
  %718 = call double @ddot_(ptr noundef %34, ptr noundef %709, ptr noundef %710, ptr noundef %717, ptr noundef @c__1)
  store double %718, ptr %42, align 8, !tbaa !11
  %719 = load ptr, ptr %23, align 8, !tbaa !5
  %720 = load i32, ptr %50, align 4, !tbaa !9
  %721 = load i32, ptr %51, align 4, !tbaa !9
  %722 = load i32, ptr %31, align 4, !tbaa !9
  %723 = mul nsw i32 %721, %722
  %724 = add nsw i32 %720, %723
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %719, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !11
  %728 = load double, ptr %41, align 8, !tbaa !11
  %729 = load double, ptr %65, align 8, !tbaa !11
  %730 = load double, ptr %42, align 8, !tbaa !11
  %731 = call double @llvm.fmuladd.f64(double %729, double %730, double %728)
  %732 = fsub double %727, %731
  %733 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %732, ptr %733, align 8, !tbaa !11
  %734 = load double, ptr %65, align 8, !tbaa !11
  %735 = fneg double %734
  %736 = load ptr, ptr %21, align 8, !tbaa !5
  %737 = load i32, ptr %51, align 4, !tbaa !9
  %738 = load i32, ptr %51, align 4, !tbaa !9
  %739 = load i32, ptr %29, align 4, !tbaa !9
  %740 = mul nsw i32 %738, %739
  %741 = add nsw i32 %737, %740
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds double, ptr %736, i64 %742
  %744 = load double, ptr %743, align 8, !tbaa !11
  %745 = fmul double %735, %744
  store double %745, ptr %37, align 8, !tbaa !11
  %746 = load ptr, ptr %19, align 8, !tbaa !5
  %747 = load i32, ptr %49, align 4, !tbaa !9
  %748 = load i32, ptr %49, align 4, !tbaa !9
  %749 = load i32, ptr %27, align 4, !tbaa !9
  %750 = mul nsw i32 %748, %749
  %751 = add nsw i32 %747, %750
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %746, i64 %752
  %754 = load ptr, ptr %20, align 8, !tbaa !5
  %755 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %756 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %40, ptr noundef @c_b26, ptr noundef %753, ptr noundef %754, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %755, ptr noundef @c__2, ptr noundef %37, ptr noundef @c_b30, ptr noundef %756, ptr noundef @c__2, ptr noundef %56, ptr noundef %53, ptr noundef %39)
  %757 = load i32, ptr %39, align 4, !tbaa !9
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %761

759:                                              ; preds = %693
  %760 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %760, align 4, !tbaa !9
  br label %761

761:                                              ; preds = %759, %693
  %762 = load double, ptr %56, align 8, !tbaa !11
  %763 = fcmp une double %762, 1.000000e+00
  br i1 %763, label %764, label %788

764:                                              ; preds = %761
  %765 = load ptr, ptr %18, align 8, !tbaa !5
  %766 = load i32, ptr %765, align 4, !tbaa !9
  store i32 %766, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %767

767:                                              ; preds = %780, %764
  %768 = load i32, ptr %43, align 4, !tbaa !9
  %769 = load i32, ptr %34, align 4, !tbaa !9
  %770 = icmp sle i32 %768, %769
  br i1 %770, label %771, label %783

771:                                              ; preds = %767
  %772 = load ptr, ptr %17, align 8, !tbaa !5
  %773 = load ptr, ptr %23, align 8, !tbaa !5
  %774 = load i32, ptr %43, align 4, !tbaa !9
  %775 = load i32, ptr %31, align 4, !tbaa !9
  %776 = mul nsw i32 %774, %775
  %777 = add nsw i32 %776, 1
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds double, ptr %773, i64 %778
  call void @dscal_(ptr noundef %772, ptr noundef %56, ptr noundef %779, ptr noundef @c__1)
  br label %780

780:                                              ; preds = %771
  %781 = load i32, ptr %43, align 4, !tbaa !9
  %782 = add nsw i32 %781, 1
  store i32 %782, ptr %43, align 4, !tbaa !9
  br label %767, !llvm.loop !15

783:                                              ; preds = %767
  %784 = load double, ptr %56, align 8, !tbaa !11
  %785 = load ptr, ptr %25, align 8, !tbaa !5
  %786 = load double, ptr %785, align 8, !tbaa !11
  %787 = fmul double %786, %784
  store double %787, ptr %785, align 8, !tbaa !11
  br label %788

788:                                              ; preds = %783, %761
  %789 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %790 = load double, ptr %789, align 16, !tbaa !11
  %791 = load ptr, ptr %23, align 8, !tbaa !5
  %792 = load i32, ptr %49, align 4, !tbaa !9
  %793 = load i32, ptr %51, align 4, !tbaa !9
  %794 = load i32, ptr %31, align 4, !tbaa !9
  %795 = mul nsw i32 %793, %794
  %796 = add nsw i32 %792, %795
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %791, i64 %797
  store double %790, ptr %798, align 8, !tbaa !11
  %799 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %800 = load double, ptr %799, align 8, !tbaa !11
  %801 = load ptr, ptr %23, align 8, !tbaa !5
  %802 = load i32, ptr %50, align 4, !tbaa !9
  %803 = load i32, ptr %51, align 4, !tbaa !9
  %804 = load i32, ptr %31, align 4, !tbaa !9
  %805 = mul nsw i32 %803, %804
  %806 = add nsw i32 %802, %805
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %801, i64 %807
  store double %800, ptr %808, align 8, !tbaa !11
  br label %1469

809:                                              ; preds = %573, %569
  %810 = load i32, ptr %51, align 4, !tbaa !9
  %811 = load i32, ptr %52, align 4, !tbaa !9
  %812 = icmp ne i32 %810, %811
  br i1 %812, label %813, label %1053

813:                                              ; preds = %809
  %814 = load i32, ptr %49, align 4, !tbaa !9
  %815 = load i32, ptr %50, align 4, !tbaa !9
  %816 = icmp eq i32 %814, %815
  br i1 %816, label %817, label %1053

817:                                              ; preds = %813
  %818 = load ptr, ptr %17, align 8, !tbaa !5
  %819 = load i32, ptr %818, align 4, !tbaa !9
  %820 = load i32, ptr %49, align 4, !tbaa !9
  %821 = sub nsw i32 %819, %820
  store i32 %821, ptr %34, align 4, !tbaa !9
  %822 = load i32, ptr %49, align 4, !tbaa !9
  %823 = add nsw i32 %822, 1
  store i32 %823, ptr %35, align 4, !tbaa !9
  %824 = load i32, ptr %49, align 4, !tbaa !9
  %825 = add nsw i32 %824, 1
  store i32 %825, ptr %36, align 4, !tbaa !9
  %826 = load ptr, ptr %19, align 8, !tbaa !5
  %827 = load i32, ptr %49, align 4, !tbaa !9
  %828 = load i32, ptr %35, align 4, !tbaa !9
  %829 = load ptr, ptr %17, align 8, !tbaa !5
  %830 = load i32, ptr %829, align 4, !tbaa !9
  %831 = icmp sle i32 %828, %830
  br i1 %831, label %832, label %834

832:                                              ; preds = %817
  %833 = load i32, ptr %35, align 4, !tbaa !9
  br label %837

834:                                              ; preds = %817
  %835 = load ptr, ptr %17, align 8, !tbaa !5
  %836 = load i32, ptr %835, align 4, !tbaa !9
  br label %837

837:                                              ; preds = %834, %832
  %838 = phi i32 [ %833, %832 ], [ %836, %834 ]
  %839 = load i32, ptr %27, align 4, !tbaa !9
  %840 = mul nsw i32 %838, %839
  %841 = add nsw i32 %827, %840
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %826, i64 %842
  %844 = load ptr, ptr %20, align 8, !tbaa !5
  %845 = load ptr, ptr %23, align 8, !tbaa !5
  %846 = load i32, ptr %36, align 4, !tbaa !9
  %847 = load ptr, ptr %17, align 8, !tbaa !5
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = icmp sle i32 %846, %848
  br i1 %849, label %850, label %852

850:                                              ; preds = %837
  %851 = load i32, ptr %36, align 4, !tbaa !9
  br label %855

852:                                              ; preds = %837
  %853 = load ptr, ptr %17, align 8, !tbaa !5
  %854 = load i32, ptr %853, align 4, !tbaa !9
  br label %855

855:                                              ; preds = %852, %850
  %856 = phi i32 [ %851, %850 ], [ %854, %852 ]
  %857 = load i32, ptr %51, align 4, !tbaa !9
  %858 = load i32, ptr %31, align 4, !tbaa !9
  %859 = mul nsw i32 %857, %858
  %860 = add nsw i32 %856, %859
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %845, i64 %861
  %863 = call double @ddot_(ptr noundef %34, ptr noundef %843, ptr noundef %844, ptr noundef %862, ptr noundef @c__1)
  store double %863, ptr %41, align 8, !tbaa !11
  %864 = load i32, ptr %51, align 4, !tbaa !9
  %865 = sub nsw i32 %864, 1
  store i32 %865, ptr %34, align 4, !tbaa !9
  %866 = load ptr, ptr %23, align 8, !tbaa !5
  %867 = load i32, ptr %49, align 4, !tbaa !9
  %868 = load i32, ptr %31, align 4, !tbaa !9
  %869 = add nsw i32 %867, %868
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds double, ptr %866, i64 %870
  %872 = load ptr, ptr %24, align 8, !tbaa !5
  %873 = load ptr, ptr %21, align 8, !tbaa !5
  %874 = load i32, ptr %51, align 4, !tbaa !9
  %875 = load i32, ptr %29, align 4, !tbaa !9
  %876 = mul nsw i32 %874, %875
  %877 = add nsw i32 %876, 1
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds double, ptr %873, i64 %878
  %880 = call double @ddot_(ptr noundef %34, ptr noundef %871, ptr noundef %872, ptr noundef %879, ptr noundef @c__1)
  store double %880, ptr %42, align 8, !tbaa !11
  %881 = load double, ptr %65, align 8, !tbaa !11
  %882 = load ptr, ptr %23, align 8, !tbaa !5
  %883 = load i32, ptr %49, align 4, !tbaa !9
  %884 = load i32, ptr %51, align 4, !tbaa !9
  %885 = load i32, ptr %31, align 4, !tbaa !9
  %886 = mul nsw i32 %884, %885
  %887 = add nsw i32 %883, %886
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %882, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !11
  %891 = load double, ptr %41, align 8, !tbaa !11
  %892 = load double, ptr %65, align 8, !tbaa !11
  %893 = load double, ptr %42, align 8, !tbaa !11
  %894 = call double @llvm.fmuladd.f64(double %892, double %893, double %891)
  %895 = fsub double %890, %894
  %896 = fmul double %881, %895
  %897 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %896, ptr %897, align 16, !tbaa !11
  %898 = load ptr, ptr %17, align 8, !tbaa !5
  %899 = load i32, ptr %898, align 4, !tbaa !9
  %900 = load i32, ptr %49, align 4, !tbaa !9
  %901 = sub nsw i32 %899, %900
  store i32 %901, ptr %34, align 4, !tbaa !9
  %902 = load i32, ptr %49, align 4, !tbaa !9
  %903 = add nsw i32 %902, 1
  store i32 %903, ptr %35, align 4, !tbaa !9
  %904 = load i32, ptr %49, align 4, !tbaa !9
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr %36, align 4, !tbaa !9
  %906 = load ptr, ptr %19, align 8, !tbaa !5
  %907 = load i32, ptr %49, align 4, !tbaa !9
  %908 = load i32, ptr %35, align 4, !tbaa !9
  %909 = load ptr, ptr %17, align 8, !tbaa !5
  %910 = load i32, ptr %909, align 4, !tbaa !9
  %911 = icmp sle i32 %908, %910
  br i1 %911, label %912, label %914

912:                                              ; preds = %855
  %913 = load i32, ptr %35, align 4, !tbaa !9
  br label %917

914:                                              ; preds = %855
  %915 = load ptr, ptr %17, align 8, !tbaa !5
  %916 = load i32, ptr %915, align 4, !tbaa !9
  br label %917

917:                                              ; preds = %914, %912
  %918 = phi i32 [ %913, %912 ], [ %916, %914 ]
  %919 = load i32, ptr %27, align 4, !tbaa !9
  %920 = mul nsw i32 %918, %919
  %921 = add nsw i32 %907, %920
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds double, ptr %906, i64 %922
  %924 = load ptr, ptr %20, align 8, !tbaa !5
  %925 = load ptr, ptr %23, align 8, !tbaa !5
  %926 = load i32, ptr %36, align 4, !tbaa !9
  %927 = load ptr, ptr %17, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = icmp sle i32 %926, %928
  br i1 %929, label %930, label %932

930:                                              ; preds = %917
  %931 = load i32, ptr %36, align 4, !tbaa !9
  br label %935

932:                                              ; preds = %917
  %933 = load ptr, ptr %17, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !9
  br label %935

935:                                              ; preds = %932, %930
  %936 = phi i32 [ %931, %930 ], [ %934, %932 ]
  %937 = load i32, ptr %52, align 4, !tbaa !9
  %938 = load i32, ptr %31, align 4, !tbaa !9
  %939 = mul nsw i32 %937, %938
  %940 = add nsw i32 %936, %939
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %925, i64 %941
  %943 = call double @ddot_(ptr noundef %34, ptr noundef %923, ptr noundef %924, ptr noundef %942, ptr noundef @c__1)
  store double %943, ptr %41, align 8, !tbaa !11
  %944 = load i32, ptr %51, align 4, !tbaa !9
  %945 = sub nsw i32 %944, 1
  store i32 %945, ptr %34, align 4, !tbaa !9
  %946 = load ptr, ptr %23, align 8, !tbaa !5
  %947 = load i32, ptr %49, align 4, !tbaa !9
  %948 = load i32, ptr %31, align 4, !tbaa !9
  %949 = add nsw i32 %947, %948
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds double, ptr %946, i64 %950
  %952 = load ptr, ptr %24, align 8, !tbaa !5
  %953 = load ptr, ptr %21, align 8, !tbaa !5
  %954 = load i32, ptr %52, align 4, !tbaa !9
  %955 = load i32, ptr %29, align 4, !tbaa !9
  %956 = mul nsw i32 %954, %955
  %957 = add nsw i32 %956, 1
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds double, ptr %953, i64 %958
  %960 = call double @ddot_(ptr noundef %34, ptr noundef %951, ptr noundef %952, ptr noundef %959, ptr noundef @c__1)
  store double %960, ptr %42, align 8, !tbaa !11
  %961 = load double, ptr %65, align 8, !tbaa !11
  %962 = load ptr, ptr %23, align 8, !tbaa !5
  %963 = load i32, ptr %49, align 4, !tbaa !9
  %964 = load i32, ptr %52, align 4, !tbaa !9
  %965 = load i32, ptr %31, align 4, !tbaa !9
  %966 = mul nsw i32 %964, %965
  %967 = add nsw i32 %963, %966
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %962, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !11
  %971 = load double, ptr %41, align 8, !tbaa !11
  %972 = load double, ptr %65, align 8, !tbaa !11
  %973 = load double, ptr %42, align 8, !tbaa !11
  %974 = call double @llvm.fmuladd.f64(double %972, double %973, double %971)
  %975 = fsub double %970, %974
  %976 = fmul double %961, %975
  %977 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %976, ptr %977, align 8, !tbaa !11
  %978 = load double, ptr %65, align 8, !tbaa !11
  %979 = fneg double %978
  %980 = load ptr, ptr %19, align 8, !tbaa !5
  %981 = load i32, ptr %49, align 4, !tbaa !9
  %982 = load i32, ptr %49, align 4, !tbaa !9
  %983 = load i32, ptr %27, align 4, !tbaa !9
  %984 = mul nsw i32 %982, %983
  %985 = add nsw i32 %981, %984
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %980, i64 %986
  %988 = load double, ptr %987, align 8, !tbaa !11
  %989 = fmul double %979, %988
  store double %989, ptr %37, align 8, !tbaa !11
  %990 = load ptr, ptr %21, align 8, !tbaa !5
  %991 = load i32, ptr %51, align 4, !tbaa !9
  %992 = load i32, ptr %51, align 4, !tbaa !9
  %993 = load i32, ptr %29, align 4, !tbaa !9
  %994 = mul nsw i32 %992, %993
  %995 = add nsw i32 %991, %994
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds double, ptr %990, i64 %996
  %998 = load ptr, ptr %22, align 8, !tbaa !5
  %999 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1000 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %40, ptr noundef @c_b26, ptr noundef %997, ptr noundef %998, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %999, ptr noundef @c__2, ptr noundef %37, ptr noundef @c_b30, ptr noundef %1000, ptr noundef @c__2, ptr noundef %56, ptr noundef %53, ptr noundef %39)
  %1001 = load i32, ptr %39, align 4, !tbaa !9
  %1002 = icmp ne i32 %1001, 0
  br i1 %1002, label %1003, label %1005

1003:                                             ; preds = %935
  %1004 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %1004, align 4, !tbaa !9
  br label %1005

1005:                                             ; preds = %1003, %935
  %1006 = load double, ptr %56, align 8, !tbaa !11
  %1007 = fcmp une double %1006, 1.000000e+00
  br i1 %1007, label %1008, label %1032

1008:                                             ; preds = %1005
  %1009 = load ptr, ptr %18, align 8, !tbaa !5
  %1010 = load i32, ptr %1009, align 4, !tbaa !9
  store i32 %1010, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1011

1011:                                             ; preds = %1024, %1008
  %1012 = load i32, ptr %43, align 4, !tbaa !9
  %1013 = load i32, ptr %34, align 4, !tbaa !9
  %1014 = icmp sle i32 %1012, %1013
  br i1 %1014, label %1015, label %1027

1015:                                             ; preds = %1011
  %1016 = load ptr, ptr %17, align 8, !tbaa !5
  %1017 = load ptr, ptr %23, align 8, !tbaa !5
  %1018 = load i32, ptr %43, align 4, !tbaa !9
  %1019 = load i32, ptr %31, align 4, !tbaa !9
  %1020 = mul nsw i32 %1018, %1019
  %1021 = add nsw i32 %1020, 1
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds double, ptr %1017, i64 %1022
  call void @dscal_(ptr noundef %1016, ptr noundef %56, ptr noundef %1023, ptr noundef @c__1)
  br label %1024

1024:                                             ; preds = %1015
  %1025 = load i32, ptr %43, align 4, !tbaa !9
  %1026 = add nsw i32 %1025, 1
  store i32 %1026, ptr %43, align 4, !tbaa !9
  br label %1011, !llvm.loop !16

1027:                                             ; preds = %1011
  %1028 = load double, ptr %56, align 8, !tbaa !11
  %1029 = load ptr, ptr %25, align 8, !tbaa !5
  %1030 = load double, ptr %1029, align 8, !tbaa !11
  %1031 = fmul double %1030, %1028
  store double %1031, ptr %1029, align 8, !tbaa !11
  br label %1032

1032:                                             ; preds = %1027, %1005
  %1033 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1034 = load double, ptr %1033, align 16, !tbaa !11
  %1035 = load ptr, ptr %23, align 8, !tbaa !5
  %1036 = load i32, ptr %49, align 4, !tbaa !9
  %1037 = load i32, ptr %51, align 4, !tbaa !9
  %1038 = load i32, ptr %31, align 4, !tbaa !9
  %1039 = mul nsw i32 %1037, %1038
  %1040 = add nsw i32 %1036, %1039
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds double, ptr %1035, i64 %1041
  store double %1034, ptr %1042, align 8, !tbaa !11
  %1043 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %1044 = load double, ptr %1043, align 8, !tbaa !11
  %1045 = load ptr, ptr %23, align 8, !tbaa !5
  %1046 = load i32, ptr %49, align 4, !tbaa !9
  %1047 = load i32, ptr %52, align 4, !tbaa !9
  %1048 = load i32, ptr %31, align 4, !tbaa !9
  %1049 = mul nsw i32 %1047, %1048
  %1050 = add nsw i32 %1046, %1049
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1045, i64 %1051
  store double %1044, ptr %1052, align 8, !tbaa !11
  br label %1468

1053:                                             ; preds = %813, %809
  %1054 = load i32, ptr %51, align 4, !tbaa !9
  %1055 = load i32, ptr %52, align 4, !tbaa !9
  %1056 = icmp ne i32 %1054, %1055
  br i1 %1056, label %1057, label %1467

1057:                                             ; preds = %1053
  %1058 = load i32, ptr %49, align 4, !tbaa !9
  %1059 = load i32, ptr %50, align 4, !tbaa !9
  %1060 = icmp ne i32 %1058, %1059
  br i1 %1060, label %1061, label %1467

1061:                                             ; preds = %1057
  %1062 = load ptr, ptr %17, align 8, !tbaa !5
  %1063 = load i32, ptr %1062, align 4, !tbaa !9
  %1064 = load i32, ptr %50, align 4, !tbaa !9
  %1065 = sub nsw i32 %1063, %1064
  store i32 %1065, ptr %34, align 4, !tbaa !9
  %1066 = load i32, ptr %50, align 4, !tbaa !9
  %1067 = add nsw i32 %1066, 1
  store i32 %1067, ptr %35, align 4, !tbaa !9
  %1068 = load i32, ptr %50, align 4, !tbaa !9
  %1069 = add nsw i32 %1068, 1
  store i32 %1069, ptr %36, align 4, !tbaa !9
  %1070 = load ptr, ptr %19, align 8, !tbaa !5
  %1071 = load i32, ptr %49, align 4, !tbaa !9
  %1072 = load i32, ptr %35, align 4, !tbaa !9
  %1073 = load ptr, ptr %17, align 8, !tbaa !5
  %1074 = load i32, ptr %1073, align 4, !tbaa !9
  %1075 = icmp sle i32 %1072, %1074
  br i1 %1075, label %1076, label %1078

1076:                                             ; preds = %1061
  %1077 = load i32, ptr %35, align 4, !tbaa !9
  br label %1081

1078:                                             ; preds = %1061
  %1079 = load ptr, ptr %17, align 8, !tbaa !5
  %1080 = load i32, ptr %1079, align 4, !tbaa !9
  br label %1081

1081:                                             ; preds = %1078, %1076
  %1082 = phi i32 [ %1077, %1076 ], [ %1080, %1078 ]
  %1083 = load i32, ptr %27, align 4, !tbaa !9
  %1084 = mul nsw i32 %1082, %1083
  %1085 = add nsw i32 %1071, %1084
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds double, ptr %1070, i64 %1086
  %1088 = load ptr, ptr %20, align 8, !tbaa !5
  %1089 = load ptr, ptr %23, align 8, !tbaa !5
  %1090 = load i32, ptr %36, align 4, !tbaa !9
  %1091 = load ptr, ptr %17, align 8, !tbaa !5
  %1092 = load i32, ptr %1091, align 4, !tbaa !9
  %1093 = icmp sle i32 %1090, %1092
  br i1 %1093, label %1094, label %1096

1094:                                             ; preds = %1081
  %1095 = load i32, ptr %36, align 4, !tbaa !9
  br label %1099

1096:                                             ; preds = %1081
  %1097 = load ptr, ptr %17, align 8, !tbaa !5
  %1098 = load i32, ptr %1097, align 4, !tbaa !9
  br label %1099

1099:                                             ; preds = %1096, %1094
  %1100 = phi i32 [ %1095, %1094 ], [ %1098, %1096 ]
  %1101 = load i32, ptr %51, align 4, !tbaa !9
  %1102 = load i32, ptr %31, align 4, !tbaa !9
  %1103 = mul nsw i32 %1101, %1102
  %1104 = add nsw i32 %1100, %1103
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds double, ptr %1089, i64 %1105
  %1107 = call double @ddot_(ptr noundef %34, ptr noundef %1087, ptr noundef %1088, ptr noundef %1106, ptr noundef @c__1)
  store double %1107, ptr %41, align 8, !tbaa !11
  %1108 = load i32, ptr %51, align 4, !tbaa !9
  %1109 = sub nsw i32 %1108, 1
  store i32 %1109, ptr %34, align 4, !tbaa !9
  %1110 = load ptr, ptr %23, align 8, !tbaa !5
  %1111 = load i32, ptr %49, align 4, !tbaa !9
  %1112 = load i32, ptr %31, align 4, !tbaa !9
  %1113 = add nsw i32 %1111, %1112
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds double, ptr %1110, i64 %1114
  %1116 = load ptr, ptr %24, align 8, !tbaa !5
  %1117 = load ptr, ptr %21, align 8, !tbaa !5
  %1118 = load i32, ptr %51, align 4, !tbaa !9
  %1119 = load i32, ptr %29, align 4, !tbaa !9
  %1120 = mul nsw i32 %1118, %1119
  %1121 = add nsw i32 %1120, 1
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds double, ptr %1117, i64 %1122
  %1124 = call double @ddot_(ptr noundef %34, ptr noundef %1115, ptr noundef %1116, ptr noundef %1123, ptr noundef @c__1)
  store double %1124, ptr %42, align 8, !tbaa !11
  %1125 = load ptr, ptr %23, align 8, !tbaa !5
  %1126 = load i32, ptr %49, align 4, !tbaa !9
  %1127 = load i32, ptr %51, align 4, !tbaa !9
  %1128 = load i32, ptr %31, align 4, !tbaa !9
  %1129 = mul nsw i32 %1127, %1128
  %1130 = add nsw i32 %1126, %1129
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds double, ptr %1125, i64 %1131
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  %1134 = load double, ptr %41, align 8, !tbaa !11
  %1135 = load double, ptr %65, align 8, !tbaa !11
  %1136 = load double, ptr %42, align 8, !tbaa !11
  %1137 = call double @llvm.fmuladd.f64(double %1135, double %1136, double %1134)
  %1138 = fsub double %1133, %1137
  %1139 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %1138, ptr %1139, align 16, !tbaa !11
  %1140 = load ptr, ptr %17, align 8, !tbaa !5
  %1141 = load i32, ptr %1140, align 4, !tbaa !9
  %1142 = load i32, ptr %50, align 4, !tbaa !9
  %1143 = sub nsw i32 %1141, %1142
  store i32 %1143, ptr %34, align 4, !tbaa !9
  %1144 = load i32, ptr %50, align 4, !tbaa !9
  %1145 = add nsw i32 %1144, 1
  store i32 %1145, ptr %35, align 4, !tbaa !9
  %1146 = load i32, ptr %50, align 4, !tbaa !9
  %1147 = add nsw i32 %1146, 1
  store i32 %1147, ptr %36, align 4, !tbaa !9
  %1148 = load ptr, ptr %19, align 8, !tbaa !5
  %1149 = load i32, ptr %49, align 4, !tbaa !9
  %1150 = load i32, ptr %35, align 4, !tbaa !9
  %1151 = load ptr, ptr %17, align 8, !tbaa !5
  %1152 = load i32, ptr %1151, align 4, !tbaa !9
  %1153 = icmp sle i32 %1150, %1152
  br i1 %1153, label %1154, label %1156

1154:                                             ; preds = %1099
  %1155 = load i32, ptr %35, align 4, !tbaa !9
  br label %1159

1156:                                             ; preds = %1099
  %1157 = load ptr, ptr %17, align 8, !tbaa !5
  %1158 = load i32, ptr %1157, align 4, !tbaa !9
  br label %1159

1159:                                             ; preds = %1156, %1154
  %1160 = phi i32 [ %1155, %1154 ], [ %1158, %1156 ]
  %1161 = load i32, ptr %27, align 4, !tbaa !9
  %1162 = mul nsw i32 %1160, %1161
  %1163 = add nsw i32 %1149, %1162
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds double, ptr %1148, i64 %1164
  %1166 = load ptr, ptr %20, align 8, !tbaa !5
  %1167 = load ptr, ptr %23, align 8, !tbaa !5
  %1168 = load i32, ptr %36, align 4, !tbaa !9
  %1169 = load ptr, ptr %17, align 8, !tbaa !5
  %1170 = load i32, ptr %1169, align 4, !tbaa !9
  %1171 = icmp sle i32 %1168, %1170
  br i1 %1171, label %1172, label %1174

1172:                                             ; preds = %1159
  %1173 = load i32, ptr %36, align 4, !tbaa !9
  br label %1177

1174:                                             ; preds = %1159
  %1175 = load ptr, ptr %17, align 8, !tbaa !5
  %1176 = load i32, ptr %1175, align 4, !tbaa !9
  br label %1177

1177:                                             ; preds = %1174, %1172
  %1178 = phi i32 [ %1173, %1172 ], [ %1176, %1174 ]
  %1179 = load i32, ptr %52, align 4, !tbaa !9
  %1180 = load i32, ptr %31, align 4, !tbaa !9
  %1181 = mul nsw i32 %1179, %1180
  %1182 = add nsw i32 %1178, %1181
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds double, ptr %1167, i64 %1183
  %1185 = call double @ddot_(ptr noundef %34, ptr noundef %1165, ptr noundef %1166, ptr noundef %1184, ptr noundef @c__1)
  store double %1185, ptr %41, align 8, !tbaa !11
  %1186 = load i32, ptr %51, align 4, !tbaa !9
  %1187 = sub nsw i32 %1186, 1
  store i32 %1187, ptr %34, align 4, !tbaa !9
  %1188 = load ptr, ptr %23, align 8, !tbaa !5
  %1189 = load i32, ptr %49, align 4, !tbaa !9
  %1190 = load i32, ptr %31, align 4, !tbaa !9
  %1191 = add nsw i32 %1189, %1190
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds double, ptr %1188, i64 %1192
  %1194 = load ptr, ptr %24, align 8, !tbaa !5
  %1195 = load ptr, ptr %21, align 8, !tbaa !5
  %1196 = load i32, ptr %52, align 4, !tbaa !9
  %1197 = load i32, ptr %29, align 4, !tbaa !9
  %1198 = mul nsw i32 %1196, %1197
  %1199 = add nsw i32 %1198, 1
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1195, i64 %1200
  %1202 = call double @ddot_(ptr noundef %34, ptr noundef %1193, ptr noundef %1194, ptr noundef %1201, ptr noundef @c__1)
  store double %1202, ptr %42, align 8, !tbaa !11
  %1203 = load ptr, ptr %23, align 8, !tbaa !5
  %1204 = load i32, ptr %49, align 4, !tbaa !9
  %1205 = load i32, ptr %52, align 4, !tbaa !9
  %1206 = load i32, ptr %31, align 4, !tbaa !9
  %1207 = mul nsw i32 %1205, %1206
  %1208 = add nsw i32 %1204, %1207
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1203, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  %1212 = load double, ptr %41, align 8, !tbaa !11
  %1213 = load double, ptr %65, align 8, !tbaa !11
  %1214 = load double, ptr %42, align 8, !tbaa !11
  %1215 = call double @llvm.fmuladd.f64(double %1213, double %1214, double %1212)
  %1216 = fsub double %1211, %1215
  %1217 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  store double %1216, ptr %1217, align 16, !tbaa !11
  %1218 = load ptr, ptr %17, align 8, !tbaa !5
  %1219 = load i32, ptr %1218, align 4, !tbaa !9
  %1220 = load i32, ptr %50, align 4, !tbaa !9
  %1221 = sub nsw i32 %1219, %1220
  store i32 %1221, ptr %34, align 4, !tbaa !9
  %1222 = load i32, ptr %50, align 4, !tbaa !9
  %1223 = add nsw i32 %1222, 1
  store i32 %1223, ptr %35, align 4, !tbaa !9
  %1224 = load i32, ptr %50, align 4, !tbaa !9
  %1225 = add nsw i32 %1224, 1
  store i32 %1225, ptr %36, align 4, !tbaa !9
  %1226 = load ptr, ptr %19, align 8, !tbaa !5
  %1227 = load i32, ptr %50, align 4, !tbaa !9
  %1228 = load i32, ptr %35, align 4, !tbaa !9
  %1229 = load ptr, ptr %17, align 8, !tbaa !5
  %1230 = load i32, ptr %1229, align 4, !tbaa !9
  %1231 = icmp sle i32 %1228, %1230
  br i1 %1231, label %1232, label %1234

1232:                                             ; preds = %1177
  %1233 = load i32, ptr %35, align 4, !tbaa !9
  br label %1237

1234:                                             ; preds = %1177
  %1235 = load ptr, ptr %17, align 8, !tbaa !5
  %1236 = load i32, ptr %1235, align 4, !tbaa !9
  br label %1237

1237:                                             ; preds = %1234, %1232
  %1238 = phi i32 [ %1233, %1232 ], [ %1236, %1234 ]
  %1239 = load i32, ptr %27, align 4, !tbaa !9
  %1240 = mul nsw i32 %1238, %1239
  %1241 = add nsw i32 %1227, %1240
  %1242 = sext i32 %1241 to i64
  %1243 = getelementptr inbounds double, ptr %1226, i64 %1242
  %1244 = load ptr, ptr %20, align 8, !tbaa !5
  %1245 = load ptr, ptr %23, align 8, !tbaa !5
  %1246 = load i32, ptr %36, align 4, !tbaa !9
  %1247 = load ptr, ptr %17, align 8, !tbaa !5
  %1248 = load i32, ptr %1247, align 4, !tbaa !9
  %1249 = icmp sle i32 %1246, %1248
  br i1 %1249, label %1250, label %1252

1250:                                             ; preds = %1237
  %1251 = load i32, ptr %36, align 4, !tbaa !9
  br label %1255

1252:                                             ; preds = %1237
  %1253 = load ptr, ptr %17, align 8, !tbaa !5
  %1254 = load i32, ptr %1253, align 4, !tbaa !9
  br label %1255

1255:                                             ; preds = %1252, %1250
  %1256 = phi i32 [ %1251, %1250 ], [ %1254, %1252 ]
  %1257 = load i32, ptr %51, align 4, !tbaa !9
  %1258 = load i32, ptr %31, align 4, !tbaa !9
  %1259 = mul nsw i32 %1257, %1258
  %1260 = add nsw i32 %1256, %1259
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds double, ptr %1245, i64 %1261
  %1263 = call double @ddot_(ptr noundef %34, ptr noundef %1243, ptr noundef %1244, ptr noundef %1262, ptr noundef @c__1)
  store double %1263, ptr %41, align 8, !tbaa !11
  %1264 = load i32, ptr %51, align 4, !tbaa !9
  %1265 = sub nsw i32 %1264, 1
  store i32 %1265, ptr %34, align 4, !tbaa !9
  %1266 = load ptr, ptr %23, align 8, !tbaa !5
  %1267 = load i32, ptr %50, align 4, !tbaa !9
  %1268 = load i32, ptr %31, align 4, !tbaa !9
  %1269 = add nsw i32 %1267, %1268
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds double, ptr %1266, i64 %1270
  %1272 = load ptr, ptr %24, align 8, !tbaa !5
  %1273 = load ptr, ptr %21, align 8, !tbaa !5
  %1274 = load i32, ptr %51, align 4, !tbaa !9
  %1275 = load i32, ptr %29, align 4, !tbaa !9
  %1276 = mul nsw i32 %1274, %1275
  %1277 = add nsw i32 %1276, 1
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1273, i64 %1278
  %1280 = call double @ddot_(ptr noundef %34, ptr noundef %1271, ptr noundef %1272, ptr noundef %1279, ptr noundef @c__1)
  store double %1280, ptr %42, align 8, !tbaa !11
  %1281 = load ptr, ptr %23, align 8, !tbaa !5
  %1282 = load i32, ptr %50, align 4, !tbaa !9
  %1283 = load i32, ptr %51, align 4, !tbaa !9
  %1284 = load i32, ptr %31, align 4, !tbaa !9
  %1285 = mul nsw i32 %1283, %1284
  %1286 = add nsw i32 %1282, %1285
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds double, ptr %1281, i64 %1287
  %1289 = load double, ptr %1288, align 8, !tbaa !11
  %1290 = load double, ptr %41, align 8, !tbaa !11
  %1291 = load double, ptr %65, align 8, !tbaa !11
  %1292 = load double, ptr %42, align 8, !tbaa !11
  %1293 = call double @llvm.fmuladd.f64(double %1291, double %1292, double %1290)
  %1294 = fsub double %1289, %1293
  %1295 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %1294, ptr %1295, align 8, !tbaa !11
  %1296 = load ptr, ptr %17, align 8, !tbaa !5
  %1297 = load i32, ptr %1296, align 4, !tbaa !9
  %1298 = load i32, ptr %50, align 4, !tbaa !9
  %1299 = sub nsw i32 %1297, %1298
  store i32 %1299, ptr %34, align 4, !tbaa !9
  %1300 = load i32, ptr %50, align 4, !tbaa !9
  %1301 = add nsw i32 %1300, 1
  store i32 %1301, ptr %35, align 4, !tbaa !9
  %1302 = load i32, ptr %50, align 4, !tbaa !9
  %1303 = add nsw i32 %1302, 1
  store i32 %1303, ptr %36, align 4, !tbaa !9
  %1304 = load ptr, ptr %19, align 8, !tbaa !5
  %1305 = load i32, ptr %50, align 4, !tbaa !9
  %1306 = load i32, ptr %35, align 4, !tbaa !9
  %1307 = load ptr, ptr %17, align 8, !tbaa !5
  %1308 = load i32, ptr %1307, align 4, !tbaa !9
  %1309 = icmp sle i32 %1306, %1308
  br i1 %1309, label %1310, label %1312

1310:                                             ; preds = %1255
  %1311 = load i32, ptr %35, align 4, !tbaa !9
  br label %1315

1312:                                             ; preds = %1255
  %1313 = load ptr, ptr %17, align 8, !tbaa !5
  %1314 = load i32, ptr %1313, align 4, !tbaa !9
  br label %1315

1315:                                             ; preds = %1312, %1310
  %1316 = phi i32 [ %1311, %1310 ], [ %1314, %1312 ]
  %1317 = load i32, ptr %27, align 4, !tbaa !9
  %1318 = mul nsw i32 %1316, %1317
  %1319 = add nsw i32 %1305, %1318
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds double, ptr %1304, i64 %1320
  %1322 = load ptr, ptr %20, align 8, !tbaa !5
  %1323 = load ptr, ptr %23, align 8, !tbaa !5
  %1324 = load i32, ptr %36, align 4, !tbaa !9
  %1325 = load ptr, ptr %17, align 8, !tbaa !5
  %1326 = load i32, ptr %1325, align 4, !tbaa !9
  %1327 = icmp sle i32 %1324, %1326
  br i1 %1327, label %1328, label %1330

1328:                                             ; preds = %1315
  %1329 = load i32, ptr %36, align 4, !tbaa !9
  br label %1333

1330:                                             ; preds = %1315
  %1331 = load ptr, ptr %17, align 8, !tbaa !5
  %1332 = load i32, ptr %1331, align 4, !tbaa !9
  br label %1333

1333:                                             ; preds = %1330, %1328
  %1334 = phi i32 [ %1329, %1328 ], [ %1332, %1330 ]
  %1335 = load i32, ptr %52, align 4, !tbaa !9
  %1336 = load i32, ptr %31, align 4, !tbaa !9
  %1337 = mul nsw i32 %1335, %1336
  %1338 = add nsw i32 %1334, %1337
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds double, ptr %1323, i64 %1339
  %1341 = call double @ddot_(ptr noundef %34, ptr noundef %1321, ptr noundef %1322, ptr noundef %1340, ptr noundef @c__1)
  store double %1341, ptr %41, align 8, !tbaa !11
  %1342 = load i32, ptr %51, align 4, !tbaa !9
  %1343 = sub nsw i32 %1342, 1
  store i32 %1343, ptr %34, align 4, !tbaa !9
  %1344 = load ptr, ptr %23, align 8, !tbaa !5
  %1345 = load i32, ptr %50, align 4, !tbaa !9
  %1346 = load i32, ptr %31, align 4, !tbaa !9
  %1347 = add nsw i32 %1345, %1346
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds double, ptr %1344, i64 %1348
  %1350 = load ptr, ptr %24, align 8, !tbaa !5
  %1351 = load ptr, ptr %21, align 8, !tbaa !5
  %1352 = load i32, ptr %52, align 4, !tbaa !9
  %1353 = load i32, ptr %29, align 4, !tbaa !9
  %1354 = mul nsw i32 %1352, %1353
  %1355 = add nsw i32 %1354, 1
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds double, ptr %1351, i64 %1356
  %1358 = call double @ddot_(ptr noundef %34, ptr noundef %1349, ptr noundef %1350, ptr noundef %1357, ptr noundef @c__1)
  store double %1358, ptr %42, align 8, !tbaa !11
  %1359 = load ptr, ptr %23, align 8, !tbaa !5
  %1360 = load i32, ptr %50, align 4, !tbaa !9
  %1361 = load i32, ptr %52, align 4, !tbaa !9
  %1362 = load i32, ptr %31, align 4, !tbaa !9
  %1363 = mul nsw i32 %1361, %1362
  %1364 = add nsw i32 %1360, %1363
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds double, ptr %1359, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = load double, ptr %41, align 8, !tbaa !11
  %1369 = load double, ptr %65, align 8, !tbaa !11
  %1370 = load double, ptr %42, align 8, !tbaa !11
  %1371 = call double @llvm.fmuladd.f64(double %1369, double %1370, double %1368)
  %1372 = fsub double %1367, %1371
  %1373 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  store double %1372, ptr %1373, align 8, !tbaa !11
  %1374 = load ptr, ptr %16, align 8, !tbaa !5
  %1375 = load ptr, ptr %19, align 8, !tbaa !5
  %1376 = load i32, ptr %49, align 4, !tbaa !9
  %1377 = load i32, ptr %49, align 4, !tbaa !9
  %1378 = load i32, ptr %27, align 4, !tbaa !9
  %1379 = mul nsw i32 %1377, %1378
  %1380 = add nsw i32 %1376, %1379
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds double, ptr %1375, i64 %1381
  %1383 = load ptr, ptr %20, align 8, !tbaa !5
  %1384 = load ptr, ptr %21, align 8, !tbaa !5
  %1385 = load i32, ptr %51, align 4, !tbaa !9
  %1386 = load i32, ptr %51, align 4, !tbaa !9
  %1387 = load i32, ptr %29, align 4, !tbaa !9
  %1388 = mul nsw i32 %1386, %1387
  %1389 = add nsw i32 %1385, %1388
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds double, ptr %1384, i64 %1390
  %1392 = load ptr, ptr %22, align 8, !tbaa !5
  %1393 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1394 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlasy2_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %1374, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %1382, ptr noundef %1383, ptr noundef %1391, ptr noundef %1392, ptr noundef %1393, ptr noundef @c__2, ptr noundef %56, ptr noundef %1394, ptr noundef @c__2, ptr noundef %53, ptr noundef %39)
  %1395 = load i32, ptr %39, align 4, !tbaa !9
  %1396 = icmp ne i32 %1395, 0
  br i1 %1396, label %1397, label %1399

1397:                                             ; preds = %1333
  %1398 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %1398, align 4, !tbaa !9
  br label %1399

1399:                                             ; preds = %1397, %1333
  %1400 = load double, ptr %56, align 8, !tbaa !11
  %1401 = fcmp une double %1400, 1.000000e+00
  br i1 %1401, label %1402, label %1426

1402:                                             ; preds = %1399
  %1403 = load ptr, ptr %18, align 8, !tbaa !5
  %1404 = load i32, ptr %1403, align 4, !tbaa !9
  store i32 %1404, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1405

1405:                                             ; preds = %1418, %1402
  %1406 = load i32, ptr %43, align 4, !tbaa !9
  %1407 = load i32, ptr %34, align 4, !tbaa !9
  %1408 = icmp sle i32 %1406, %1407
  br i1 %1408, label %1409, label %1421

1409:                                             ; preds = %1405
  %1410 = load ptr, ptr %17, align 8, !tbaa !5
  %1411 = load ptr, ptr %23, align 8, !tbaa !5
  %1412 = load i32, ptr %43, align 4, !tbaa !9
  %1413 = load i32, ptr %31, align 4, !tbaa !9
  %1414 = mul nsw i32 %1412, %1413
  %1415 = add nsw i32 %1414, 1
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds double, ptr %1411, i64 %1416
  call void @dscal_(ptr noundef %1410, ptr noundef %56, ptr noundef %1417, ptr noundef @c__1)
  br label %1418

1418:                                             ; preds = %1409
  %1419 = load i32, ptr %43, align 4, !tbaa !9
  %1420 = add nsw i32 %1419, 1
  store i32 %1420, ptr %43, align 4, !tbaa !9
  br label %1405, !llvm.loop !17

1421:                                             ; preds = %1405
  %1422 = load double, ptr %56, align 8, !tbaa !11
  %1423 = load ptr, ptr %25, align 8, !tbaa !5
  %1424 = load double, ptr %1423, align 8, !tbaa !11
  %1425 = fmul double %1424, %1422
  store double %1425, ptr %1423, align 8, !tbaa !11
  br label %1426

1426:                                             ; preds = %1421, %1399
  %1427 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1428 = load double, ptr %1427, align 16, !tbaa !11
  %1429 = load ptr, ptr %23, align 8, !tbaa !5
  %1430 = load i32, ptr %49, align 4, !tbaa !9
  %1431 = load i32, ptr %51, align 4, !tbaa !9
  %1432 = load i32, ptr %31, align 4, !tbaa !9
  %1433 = mul nsw i32 %1431, %1432
  %1434 = add nsw i32 %1430, %1433
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds double, ptr %1429, i64 %1435
  store double %1428, ptr %1436, align 8, !tbaa !11
  %1437 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %1438 = load double, ptr %1437, align 16, !tbaa !11
  %1439 = load ptr, ptr %23, align 8, !tbaa !5
  %1440 = load i32, ptr %49, align 4, !tbaa !9
  %1441 = load i32, ptr %52, align 4, !tbaa !9
  %1442 = load i32, ptr %31, align 4, !tbaa !9
  %1443 = mul nsw i32 %1441, %1442
  %1444 = add nsw i32 %1440, %1443
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr inbounds double, ptr %1439, i64 %1445
  store double %1438, ptr %1446, align 8, !tbaa !11
  %1447 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %1448 = load double, ptr %1447, align 8, !tbaa !11
  %1449 = load ptr, ptr %23, align 8, !tbaa !5
  %1450 = load i32, ptr %50, align 4, !tbaa !9
  %1451 = load i32, ptr %51, align 4, !tbaa !9
  %1452 = load i32, ptr %31, align 4, !tbaa !9
  %1453 = mul nsw i32 %1451, %1452
  %1454 = add nsw i32 %1450, %1453
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds double, ptr %1449, i64 %1455
  store double %1448, ptr %1456, align 8, !tbaa !11
  %1457 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %1458 = load double, ptr %1457, align 8, !tbaa !11
  %1459 = load ptr, ptr %23, align 8, !tbaa !5
  %1460 = load i32, ptr %50, align 4, !tbaa !9
  %1461 = load i32, ptr %52, align 4, !tbaa !9
  %1462 = load i32, ptr %31, align 4, !tbaa !9
  %1463 = mul nsw i32 %1461, %1462
  %1464 = add nsw i32 %1460, %1463
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds double, ptr %1459, i64 %1465
  store double %1458, ptr %1466, align 8, !tbaa !11
  br label %1467

1467:                                             ; preds = %1426, %1057, %1053
  br label %1468

1468:                                             ; preds = %1467, %1032
  br label %1469

1469:                                             ; preds = %1468, %788
  br label %1470

1470:                                             ; preds = %1469, %558
  br label %1471

1471:                                             ; preds = %1470, %342
  br label %1472

1472:                                             ; preds = %1471
  %1473 = load i32, ptr %44, align 4, !tbaa !9
  %1474 = add nsw i32 %1473, -1
  store i32 %1474, ptr %44, align 4, !tbaa !9
  br label %335, !llvm.loop !18

1475:                                             ; preds = %335
  br label %1476

1476:                                             ; preds = %1475, %297
  br label %1477

1477:                                             ; preds = %1476
  %1478 = load i32, ptr %45, align 4, !tbaa !9
  %1479 = add nsw i32 %1478, 1
  store i32 %1479, ptr %45, align 4, !tbaa !9
  br label %289, !llvm.loop !19

1480:                                             ; preds = %289
  br label %5105

1481:                                             ; preds = %283, %276
  %1482 = load i32, ptr %58, align 4, !tbaa !9
  %1483 = icmp ne i32 %1482, 0
  br i1 %1483, label %2422, label %1484

1484:                                             ; preds = %1481
  %1485 = load i32, ptr %59, align 4, !tbaa !9
  %1486 = icmp ne i32 %1485, 0
  br i1 %1486, label %1487, label %2422

1487:                                             ; preds = %1484
  store i32 1, ptr %48, align 4, !tbaa !9
  %1488 = load ptr, ptr %18, align 8, !tbaa !5
  %1489 = load i32, ptr %1488, align 4, !tbaa !9
  store i32 %1489, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %1490

1490:                                             ; preds = %2418, %1487
  %1491 = load i32, ptr %45, align 4, !tbaa !9
  %1492 = load i32, ptr %33, align 4, !tbaa !9
  %1493 = icmp sle i32 %1491, %1492
  br i1 %1493, label %1494, label %2421

1494:                                             ; preds = %1490
  %1495 = load i32, ptr %45, align 4, !tbaa !9
  %1496 = load i32, ptr %48, align 4, !tbaa !9
  %1497 = icmp slt i32 %1495, %1496
  br i1 %1497, label %1498, label %1499

1498:                                             ; preds = %1494
  br label %2417

1499:                                             ; preds = %1494
  %1500 = load i32, ptr %45, align 4, !tbaa !9
  %1501 = load ptr, ptr %18, align 8, !tbaa !5
  %1502 = load i32, ptr %1501, align 4, !tbaa !9
  %1503 = icmp eq i32 %1500, %1502
  br i1 %1503, label %1504, label %1507

1504:                                             ; preds = %1499
  %1505 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1505, ptr %51, align 4, !tbaa !9
  %1506 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1506, ptr %52, align 4, !tbaa !9
  br label %1531

1507:                                             ; preds = %1499
  %1508 = load ptr, ptr %21, align 8, !tbaa !5
  %1509 = load i32, ptr %45, align 4, !tbaa !9
  %1510 = add nsw i32 %1509, 1
  %1511 = load i32, ptr %45, align 4, !tbaa !9
  %1512 = load i32, ptr %29, align 4, !tbaa !9
  %1513 = mul nsw i32 %1511, %1512
  %1514 = add nsw i32 %1510, %1513
  %1515 = sext i32 %1514 to i64
  %1516 = getelementptr inbounds double, ptr %1508, i64 %1515
  %1517 = load double, ptr %1516, align 8, !tbaa !11
  %1518 = fcmp une double %1517, 0.000000e+00
  br i1 %1518, label %1519, label %1525

1519:                                             ; preds = %1507
  %1520 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1520, ptr %51, align 4, !tbaa !9
  %1521 = load i32, ptr %45, align 4, !tbaa !9
  %1522 = add nsw i32 %1521, 1
  store i32 %1522, ptr %52, align 4, !tbaa !9
  %1523 = load i32, ptr %45, align 4, !tbaa !9
  %1524 = add nsw i32 %1523, 2
  store i32 %1524, ptr %48, align 4, !tbaa !9
  br label %1530

1525:                                             ; preds = %1507
  %1526 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1526, ptr %51, align 4, !tbaa !9
  %1527 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1527, ptr %52, align 4, !tbaa !9
  %1528 = load i32, ptr %45, align 4, !tbaa !9
  %1529 = add nsw i32 %1528, 1
  store i32 %1529, ptr %48, align 4, !tbaa !9
  br label %1530

1530:                                             ; preds = %1525, %1519
  br label %1531

1531:                                             ; preds = %1530, %1504
  store i32 1, ptr %47, align 4, !tbaa !9
  %1532 = load ptr, ptr %17, align 8, !tbaa !5
  %1533 = load i32, ptr %1532, align 4, !tbaa !9
  store i32 %1533, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %44, align 4, !tbaa !9
  br label %1534

1534:                                             ; preds = %2413, %1531
  %1535 = load i32, ptr %44, align 4, !tbaa !9
  %1536 = load i32, ptr %34, align 4, !tbaa !9
  %1537 = icmp sle i32 %1535, %1536
  br i1 %1537, label %1538, label %2416

1538:                                             ; preds = %1534
  %1539 = load i32, ptr %44, align 4, !tbaa !9
  %1540 = load i32, ptr %47, align 4, !tbaa !9
  %1541 = icmp slt i32 %1539, %1540
  br i1 %1541, label %1542, label %1543

1542:                                             ; preds = %1538
  br label %2412

1543:                                             ; preds = %1538
  %1544 = load i32, ptr %44, align 4, !tbaa !9
  %1545 = load ptr, ptr %17, align 8, !tbaa !5
  %1546 = load i32, ptr %1545, align 4, !tbaa !9
  %1547 = icmp eq i32 %1544, %1546
  br i1 %1547, label %1548, label %1551

1548:                                             ; preds = %1543
  %1549 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1549, ptr %49, align 4, !tbaa !9
  %1550 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1550, ptr %50, align 4, !tbaa !9
  br label %1575

1551:                                             ; preds = %1543
  %1552 = load ptr, ptr %19, align 8, !tbaa !5
  %1553 = load i32, ptr %44, align 4, !tbaa !9
  %1554 = add nsw i32 %1553, 1
  %1555 = load i32, ptr %44, align 4, !tbaa !9
  %1556 = load i32, ptr %27, align 4, !tbaa !9
  %1557 = mul nsw i32 %1555, %1556
  %1558 = add nsw i32 %1554, %1557
  %1559 = sext i32 %1558 to i64
  %1560 = getelementptr inbounds double, ptr %1552, i64 %1559
  %1561 = load double, ptr %1560, align 8, !tbaa !11
  %1562 = fcmp une double %1561, 0.000000e+00
  br i1 %1562, label %1563, label %1569

1563:                                             ; preds = %1551
  %1564 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1564, ptr %49, align 4, !tbaa !9
  %1565 = load i32, ptr %44, align 4, !tbaa !9
  %1566 = add nsw i32 %1565, 1
  store i32 %1566, ptr %50, align 4, !tbaa !9
  %1567 = load i32, ptr %44, align 4, !tbaa !9
  %1568 = add nsw i32 %1567, 2
  store i32 %1568, ptr %47, align 4, !tbaa !9
  br label %1574

1569:                                             ; preds = %1551
  %1570 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1570, ptr %49, align 4, !tbaa !9
  %1571 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1571, ptr %50, align 4, !tbaa !9
  %1572 = load i32, ptr %44, align 4, !tbaa !9
  %1573 = add nsw i32 %1572, 1
  store i32 %1573, ptr %47, align 4, !tbaa !9
  br label %1574

1574:                                             ; preds = %1569, %1563
  br label %1575

1575:                                             ; preds = %1574, %1548
  %1576 = load i32, ptr %51, align 4, !tbaa !9
  %1577 = load i32, ptr %52, align 4, !tbaa !9
  %1578 = icmp eq i32 %1576, %1577
  br i1 %1578, label %1579, label %1742

1579:                                             ; preds = %1575
  %1580 = load i32, ptr %49, align 4, !tbaa !9
  %1581 = load i32, ptr %50, align 4, !tbaa !9
  %1582 = icmp eq i32 %1580, %1581
  br i1 %1582, label %1583, label %1742

1583:                                             ; preds = %1579
  %1584 = load i32, ptr %49, align 4, !tbaa !9
  %1585 = sub nsw i32 %1584, 1
  store i32 %1585, ptr %35, align 4, !tbaa !9
  %1586 = load ptr, ptr %19, align 8, !tbaa !5
  %1587 = load i32, ptr %49, align 4, !tbaa !9
  %1588 = load i32, ptr %27, align 4, !tbaa !9
  %1589 = mul nsw i32 %1587, %1588
  %1590 = add nsw i32 %1589, 1
  %1591 = sext i32 %1590 to i64
  %1592 = getelementptr inbounds double, ptr %1586, i64 %1591
  %1593 = load ptr, ptr %23, align 8, !tbaa !5
  %1594 = load i32, ptr %51, align 4, !tbaa !9
  %1595 = load i32, ptr %31, align 4, !tbaa !9
  %1596 = mul nsw i32 %1594, %1595
  %1597 = add nsw i32 %1596, 1
  %1598 = sext i32 %1597 to i64
  %1599 = getelementptr inbounds double, ptr %1593, i64 %1598
  %1600 = call double @ddot_(ptr noundef %35, ptr noundef %1592, ptr noundef @c__1, ptr noundef %1599, ptr noundef @c__1)
  store double %1600, ptr %41, align 8, !tbaa !11
  %1601 = load i32, ptr %51, align 4, !tbaa !9
  %1602 = sub nsw i32 %1601, 1
  store i32 %1602, ptr %35, align 4, !tbaa !9
  %1603 = load ptr, ptr %23, align 8, !tbaa !5
  %1604 = load i32, ptr %49, align 4, !tbaa !9
  %1605 = load i32, ptr %31, align 4, !tbaa !9
  %1606 = add nsw i32 %1604, %1605
  %1607 = sext i32 %1606 to i64
  %1608 = getelementptr inbounds double, ptr %1603, i64 %1607
  %1609 = load ptr, ptr %24, align 8, !tbaa !5
  %1610 = load ptr, ptr %21, align 8, !tbaa !5
  %1611 = load i32, ptr %51, align 4, !tbaa !9
  %1612 = load i32, ptr %29, align 4, !tbaa !9
  %1613 = mul nsw i32 %1611, %1612
  %1614 = add nsw i32 %1613, 1
  %1615 = sext i32 %1614 to i64
  %1616 = getelementptr inbounds double, ptr %1610, i64 %1615
  %1617 = call double @ddot_(ptr noundef %35, ptr noundef %1608, ptr noundef %1609, ptr noundef %1616, ptr noundef @c__1)
  store double %1617, ptr %42, align 8, !tbaa !11
  %1618 = load ptr, ptr %23, align 8, !tbaa !5
  %1619 = load i32, ptr %49, align 4, !tbaa !9
  %1620 = load i32, ptr %51, align 4, !tbaa !9
  %1621 = load i32, ptr %31, align 4, !tbaa !9
  %1622 = mul nsw i32 %1620, %1621
  %1623 = add nsw i32 %1619, %1622
  %1624 = sext i32 %1623 to i64
  %1625 = getelementptr inbounds double, ptr %1618, i64 %1624
  %1626 = load double, ptr %1625, align 8, !tbaa !11
  %1627 = load double, ptr %41, align 8, !tbaa !11
  %1628 = load double, ptr %65, align 8, !tbaa !11
  %1629 = load double, ptr %42, align 8, !tbaa !11
  %1630 = call double @llvm.fmuladd.f64(double %1628, double %1629, double %1627)
  %1631 = fsub double %1626, %1630
  %1632 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %1631, ptr %1632, align 16, !tbaa !11
  store double 1.000000e+00, ptr %56, align 8, !tbaa !11
  %1633 = load ptr, ptr %19, align 8, !tbaa !5
  %1634 = load i32, ptr %49, align 4, !tbaa !9
  %1635 = load i32, ptr %49, align 4, !tbaa !9
  %1636 = load i32, ptr %27, align 4, !tbaa !9
  %1637 = mul nsw i32 %1635, %1636
  %1638 = add nsw i32 %1634, %1637
  %1639 = sext i32 %1638 to i64
  %1640 = getelementptr inbounds double, ptr %1633, i64 %1639
  %1641 = load double, ptr %1640, align 8, !tbaa !11
  %1642 = load double, ptr %65, align 8, !tbaa !11
  %1643 = load ptr, ptr %21, align 8, !tbaa !5
  %1644 = load i32, ptr %51, align 4, !tbaa !9
  %1645 = load i32, ptr %51, align 4, !tbaa !9
  %1646 = load i32, ptr %29, align 4, !tbaa !9
  %1647 = mul nsw i32 %1645, %1646
  %1648 = add nsw i32 %1644, %1647
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds double, ptr %1643, i64 %1649
  %1651 = load double, ptr %1650, align 8, !tbaa !11
  %1652 = call double @llvm.fmuladd.f64(double %1642, double %1651, double %1641)
  store double %1652, ptr %54, align 8, !tbaa !11
  %1653 = load double, ptr %54, align 8, !tbaa !11
  %1654 = fcmp oge double %1653, 0.000000e+00
  br i1 %1654, label %1655, label %1657

1655:                                             ; preds = %1583
  %1656 = load double, ptr %54, align 8, !tbaa !11
  br label %1660

1657:                                             ; preds = %1583
  %1658 = load double, ptr %54, align 8, !tbaa !11
  %1659 = fneg double %1658
  br label %1660

1660:                                             ; preds = %1657, %1655
  %1661 = phi double [ %1656, %1655 ], [ %1659, %1657 ]
  store double %1661, ptr %61, align 8, !tbaa !11
  %1662 = load double, ptr %61, align 8, !tbaa !11
  %1663 = load double, ptr %40, align 8, !tbaa !11
  %1664 = fcmp ole double %1662, %1663
  br i1 %1664, label %1665, label %1669

1665:                                             ; preds = %1660
  %1666 = load double, ptr %40, align 8, !tbaa !11
  store double %1666, ptr %54, align 8, !tbaa !11
  %1667 = load double, ptr %40, align 8, !tbaa !11
  store double %1667, ptr %61, align 8, !tbaa !11
  %1668 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %1668, align 4, !tbaa !9
  br label %1669

1669:                                             ; preds = %1665, %1660
  %1670 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1671 = load double, ptr %1670, align 16, !tbaa !11
  %1672 = fcmp oge double %1671, 0.000000e+00
  br i1 %1672, label %1673, label %1676

1673:                                             ; preds = %1669
  %1674 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1675 = load double, ptr %1674, align 16, !tbaa !11
  br label %1680

1676:                                             ; preds = %1669
  %1677 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1678 = load double, ptr %1677, align 16, !tbaa !11
  %1679 = fneg double %1678
  br label %1680

1680:                                             ; preds = %1676, %1673
  %1681 = phi double [ %1675, %1673 ], [ %1679, %1676 ]
  store double %1681, ptr %55, align 8, !tbaa !11
  %1682 = load double, ptr %61, align 8, !tbaa !11
  %1683 = fcmp olt double %1682, 1.000000e+00
  br i1 %1683, label %1684, label %1697

1684:                                             ; preds = %1680
  %1685 = load double, ptr %55, align 8, !tbaa !11
  %1686 = fcmp ogt double %1685, 1.000000e+00
  br i1 %1686, label %1687, label %1697

1687:                                             ; preds = %1684
  %1688 = load double, ptr %55, align 8, !tbaa !11
  %1689 = load double, ptr %57, align 8, !tbaa !11
  %1690 = load double, ptr %61, align 8, !tbaa !11
  %1691 = fmul double %1689, %1690
  %1692 = fcmp ogt double %1688, %1691
  br i1 %1692, label %1693, label %1696

1693:                                             ; preds = %1687
  %1694 = load double, ptr %55, align 8, !tbaa !11
  %1695 = fdiv double 1.000000e+00, %1694
  store double %1695, ptr %56, align 8, !tbaa !11
  br label %1696

1696:                                             ; preds = %1693, %1687
  br label %1697

1697:                                             ; preds = %1696, %1684, %1680
  %1698 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1699 = load double, ptr %1698, align 16, !tbaa !11
  %1700 = load double, ptr %56, align 8, !tbaa !11
  %1701 = fmul double %1699, %1700
  %1702 = load double, ptr %54, align 8, !tbaa !11
  %1703 = fdiv double %1701, %1702
  %1704 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  store double %1703, ptr %1704, align 16, !tbaa !11
  %1705 = load double, ptr %56, align 8, !tbaa !11
  %1706 = fcmp une double %1705, 1.000000e+00
  br i1 %1706, label %1707, label %1731

1707:                                             ; preds = %1697
  %1708 = load ptr, ptr %18, align 8, !tbaa !5
  %1709 = load i32, ptr %1708, align 4, !tbaa !9
  store i32 %1709, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1710

1710:                                             ; preds = %1723, %1707
  %1711 = load i32, ptr %43, align 4, !tbaa !9
  %1712 = load i32, ptr %35, align 4, !tbaa !9
  %1713 = icmp sle i32 %1711, %1712
  br i1 %1713, label %1714, label %1726

1714:                                             ; preds = %1710
  %1715 = load ptr, ptr %17, align 8, !tbaa !5
  %1716 = load ptr, ptr %23, align 8, !tbaa !5
  %1717 = load i32, ptr %43, align 4, !tbaa !9
  %1718 = load i32, ptr %31, align 4, !tbaa !9
  %1719 = mul nsw i32 %1717, %1718
  %1720 = add nsw i32 %1719, 1
  %1721 = sext i32 %1720 to i64
  %1722 = getelementptr inbounds double, ptr %1716, i64 %1721
  call void @dscal_(ptr noundef %1715, ptr noundef %56, ptr noundef %1722, ptr noundef @c__1)
  br label %1723

1723:                                             ; preds = %1714
  %1724 = load i32, ptr %43, align 4, !tbaa !9
  %1725 = add nsw i32 %1724, 1
  store i32 %1725, ptr %43, align 4, !tbaa !9
  br label %1710, !llvm.loop !20

1726:                                             ; preds = %1710
  %1727 = load double, ptr %56, align 8, !tbaa !11
  %1728 = load ptr, ptr %25, align 8, !tbaa !5
  %1729 = load double, ptr %1728, align 8, !tbaa !11
  %1730 = fmul double %1729, %1727
  store double %1730, ptr %1728, align 8, !tbaa !11
  br label %1731

1731:                                             ; preds = %1726, %1697
  %1732 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1733 = load double, ptr %1732, align 16, !tbaa !11
  %1734 = load ptr, ptr %23, align 8, !tbaa !5
  %1735 = load i32, ptr %49, align 4, !tbaa !9
  %1736 = load i32, ptr %51, align 4, !tbaa !9
  %1737 = load i32, ptr %31, align 4, !tbaa !9
  %1738 = mul nsw i32 %1736, %1737
  %1739 = add nsw i32 %1735, %1738
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds double, ptr %1734, i64 %1740
  store double %1733, ptr %1741, align 8, !tbaa !11
  br label %2411

1742:                                             ; preds = %1579, %1575
  %1743 = load i32, ptr %51, align 4, !tbaa !9
  %1744 = load i32, ptr %52, align 4, !tbaa !9
  %1745 = icmp eq i32 %1743, %1744
  br i1 %1745, label %1746, label %1924

1746:                                             ; preds = %1742
  %1747 = load i32, ptr %49, align 4, !tbaa !9
  %1748 = load i32, ptr %50, align 4, !tbaa !9
  %1749 = icmp ne i32 %1747, %1748
  br i1 %1749, label %1750, label %1924

1750:                                             ; preds = %1746
  %1751 = load i32, ptr %49, align 4, !tbaa !9
  %1752 = sub nsw i32 %1751, 1
  store i32 %1752, ptr %35, align 4, !tbaa !9
  %1753 = load ptr, ptr %19, align 8, !tbaa !5
  %1754 = load i32, ptr %49, align 4, !tbaa !9
  %1755 = load i32, ptr %27, align 4, !tbaa !9
  %1756 = mul nsw i32 %1754, %1755
  %1757 = add nsw i32 %1756, 1
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds double, ptr %1753, i64 %1758
  %1760 = load ptr, ptr %23, align 8, !tbaa !5
  %1761 = load i32, ptr %51, align 4, !tbaa !9
  %1762 = load i32, ptr %31, align 4, !tbaa !9
  %1763 = mul nsw i32 %1761, %1762
  %1764 = add nsw i32 %1763, 1
  %1765 = sext i32 %1764 to i64
  %1766 = getelementptr inbounds double, ptr %1760, i64 %1765
  %1767 = call double @ddot_(ptr noundef %35, ptr noundef %1759, ptr noundef @c__1, ptr noundef %1766, ptr noundef @c__1)
  store double %1767, ptr %41, align 8, !tbaa !11
  %1768 = load i32, ptr %51, align 4, !tbaa !9
  %1769 = sub nsw i32 %1768, 1
  store i32 %1769, ptr %35, align 4, !tbaa !9
  %1770 = load ptr, ptr %23, align 8, !tbaa !5
  %1771 = load i32, ptr %49, align 4, !tbaa !9
  %1772 = load i32, ptr %31, align 4, !tbaa !9
  %1773 = add nsw i32 %1771, %1772
  %1774 = sext i32 %1773 to i64
  %1775 = getelementptr inbounds double, ptr %1770, i64 %1774
  %1776 = load ptr, ptr %24, align 8, !tbaa !5
  %1777 = load ptr, ptr %21, align 8, !tbaa !5
  %1778 = load i32, ptr %51, align 4, !tbaa !9
  %1779 = load i32, ptr %29, align 4, !tbaa !9
  %1780 = mul nsw i32 %1778, %1779
  %1781 = add nsw i32 %1780, 1
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds double, ptr %1777, i64 %1782
  %1784 = call double @ddot_(ptr noundef %35, ptr noundef %1775, ptr noundef %1776, ptr noundef %1783, ptr noundef @c__1)
  store double %1784, ptr %42, align 8, !tbaa !11
  %1785 = load ptr, ptr %23, align 8, !tbaa !5
  %1786 = load i32, ptr %49, align 4, !tbaa !9
  %1787 = load i32, ptr %51, align 4, !tbaa !9
  %1788 = load i32, ptr %31, align 4, !tbaa !9
  %1789 = mul nsw i32 %1787, %1788
  %1790 = add nsw i32 %1786, %1789
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds double, ptr %1785, i64 %1791
  %1793 = load double, ptr %1792, align 8, !tbaa !11
  %1794 = load double, ptr %41, align 8, !tbaa !11
  %1795 = load double, ptr %65, align 8, !tbaa !11
  %1796 = load double, ptr %42, align 8, !tbaa !11
  %1797 = call double @llvm.fmuladd.f64(double %1795, double %1796, double %1794)
  %1798 = fsub double %1793, %1797
  %1799 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %1798, ptr %1799, align 16, !tbaa !11
  %1800 = load i32, ptr %49, align 4, !tbaa !9
  %1801 = sub nsw i32 %1800, 1
  store i32 %1801, ptr %35, align 4, !tbaa !9
  %1802 = load ptr, ptr %19, align 8, !tbaa !5
  %1803 = load i32, ptr %50, align 4, !tbaa !9
  %1804 = load i32, ptr %27, align 4, !tbaa !9
  %1805 = mul nsw i32 %1803, %1804
  %1806 = add nsw i32 %1805, 1
  %1807 = sext i32 %1806 to i64
  %1808 = getelementptr inbounds double, ptr %1802, i64 %1807
  %1809 = load ptr, ptr %23, align 8, !tbaa !5
  %1810 = load i32, ptr %51, align 4, !tbaa !9
  %1811 = load i32, ptr %31, align 4, !tbaa !9
  %1812 = mul nsw i32 %1810, %1811
  %1813 = add nsw i32 %1812, 1
  %1814 = sext i32 %1813 to i64
  %1815 = getelementptr inbounds double, ptr %1809, i64 %1814
  %1816 = call double @ddot_(ptr noundef %35, ptr noundef %1808, ptr noundef @c__1, ptr noundef %1815, ptr noundef @c__1)
  store double %1816, ptr %41, align 8, !tbaa !11
  %1817 = load i32, ptr %51, align 4, !tbaa !9
  %1818 = sub nsw i32 %1817, 1
  store i32 %1818, ptr %35, align 4, !tbaa !9
  %1819 = load ptr, ptr %23, align 8, !tbaa !5
  %1820 = load i32, ptr %50, align 4, !tbaa !9
  %1821 = load i32, ptr %31, align 4, !tbaa !9
  %1822 = add nsw i32 %1820, %1821
  %1823 = sext i32 %1822 to i64
  %1824 = getelementptr inbounds double, ptr %1819, i64 %1823
  %1825 = load ptr, ptr %24, align 8, !tbaa !5
  %1826 = load ptr, ptr %21, align 8, !tbaa !5
  %1827 = load i32, ptr %51, align 4, !tbaa !9
  %1828 = load i32, ptr %29, align 4, !tbaa !9
  %1829 = mul nsw i32 %1827, %1828
  %1830 = add nsw i32 %1829, 1
  %1831 = sext i32 %1830 to i64
  %1832 = getelementptr inbounds double, ptr %1826, i64 %1831
  %1833 = call double @ddot_(ptr noundef %35, ptr noundef %1824, ptr noundef %1825, ptr noundef %1832, ptr noundef @c__1)
  store double %1833, ptr %42, align 8, !tbaa !11
  %1834 = load ptr, ptr %23, align 8, !tbaa !5
  %1835 = load i32, ptr %50, align 4, !tbaa !9
  %1836 = load i32, ptr %51, align 4, !tbaa !9
  %1837 = load i32, ptr %31, align 4, !tbaa !9
  %1838 = mul nsw i32 %1836, %1837
  %1839 = add nsw i32 %1835, %1838
  %1840 = sext i32 %1839 to i64
  %1841 = getelementptr inbounds double, ptr %1834, i64 %1840
  %1842 = load double, ptr %1841, align 8, !tbaa !11
  %1843 = load double, ptr %41, align 8, !tbaa !11
  %1844 = load double, ptr %65, align 8, !tbaa !11
  %1845 = load double, ptr %42, align 8, !tbaa !11
  %1846 = call double @llvm.fmuladd.f64(double %1844, double %1845, double %1843)
  %1847 = fsub double %1842, %1846
  %1848 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %1847, ptr %1848, align 8, !tbaa !11
  %1849 = load double, ptr %65, align 8, !tbaa !11
  %1850 = fneg double %1849
  %1851 = load ptr, ptr %21, align 8, !tbaa !5
  %1852 = load i32, ptr %51, align 4, !tbaa !9
  %1853 = load i32, ptr %51, align 4, !tbaa !9
  %1854 = load i32, ptr %29, align 4, !tbaa !9
  %1855 = mul nsw i32 %1853, %1854
  %1856 = add nsw i32 %1852, %1855
  %1857 = sext i32 %1856 to i64
  %1858 = getelementptr inbounds double, ptr %1851, i64 %1857
  %1859 = load double, ptr %1858, align 8, !tbaa !11
  %1860 = fmul double %1850, %1859
  store double %1860, ptr %37, align 8, !tbaa !11
  %1861 = load ptr, ptr %19, align 8, !tbaa !5
  %1862 = load i32, ptr %49, align 4, !tbaa !9
  %1863 = load i32, ptr %49, align 4, !tbaa !9
  %1864 = load i32, ptr %27, align 4, !tbaa !9
  %1865 = mul nsw i32 %1863, %1864
  %1866 = add nsw i32 %1862, %1865
  %1867 = sext i32 %1866 to i64
  %1868 = getelementptr inbounds double, ptr %1861, i64 %1867
  %1869 = load ptr, ptr %20, align 8, !tbaa !5
  %1870 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1871 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %40, ptr noundef @c_b26, ptr noundef %1868, ptr noundef %1869, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %1870, ptr noundef @c__2, ptr noundef %37, ptr noundef @c_b30, ptr noundef %1871, ptr noundef @c__2, ptr noundef %56, ptr noundef %53, ptr noundef %39)
  %1872 = load i32, ptr %39, align 4, !tbaa !9
  %1873 = icmp ne i32 %1872, 0
  br i1 %1873, label %1874, label %1876

1874:                                             ; preds = %1750
  %1875 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %1875, align 4, !tbaa !9
  br label %1876

1876:                                             ; preds = %1874, %1750
  %1877 = load double, ptr %56, align 8, !tbaa !11
  %1878 = fcmp une double %1877, 1.000000e+00
  br i1 %1878, label %1879, label %1903

1879:                                             ; preds = %1876
  %1880 = load ptr, ptr %18, align 8, !tbaa !5
  %1881 = load i32, ptr %1880, align 4, !tbaa !9
  store i32 %1881, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1882

1882:                                             ; preds = %1895, %1879
  %1883 = load i32, ptr %43, align 4, !tbaa !9
  %1884 = load i32, ptr %35, align 4, !tbaa !9
  %1885 = icmp sle i32 %1883, %1884
  br i1 %1885, label %1886, label %1898

1886:                                             ; preds = %1882
  %1887 = load ptr, ptr %17, align 8, !tbaa !5
  %1888 = load ptr, ptr %23, align 8, !tbaa !5
  %1889 = load i32, ptr %43, align 4, !tbaa !9
  %1890 = load i32, ptr %31, align 4, !tbaa !9
  %1891 = mul nsw i32 %1889, %1890
  %1892 = add nsw i32 %1891, 1
  %1893 = sext i32 %1892 to i64
  %1894 = getelementptr inbounds double, ptr %1888, i64 %1893
  call void @dscal_(ptr noundef %1887, ptr noundef %56, ptr noundef %1894, ptr noundef @c__1)
  br label %1895

1895:                                             ; preds = %1886
  %1896 = load i32, ptr %43, align 4, !tbaa !9
  %1897 = add nsw i32 %1896, 1
  store i32 %1897, ptr %43, align 4, !tbaa !9
  br label %1882, !llvm.loop !21

1898:                                             ; preds = %1882
  %1899 = load double, ptr %56, align 8, !tbaa !11
  %1900 = load ptr, ptr %25, align 8, !tbaa !5
  %1901 = load double, ptr %1900, align 8, !tbaa !11
  %1902 = fmul double %1901, %1899
  store double %1902, ptr %1900, align 8, !tbaa !11
  br label %1903

1903:                                             ; preds = %1898, %1876
  %1904 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %1905 = load double, ptr %1904, align 16, !tbaa !11
  %1906 = load ptr, ptr %23, align 8, !tbaa !5
  %1907 = load i32, ptr %49, align 4, !tbaa !9
  %1908 = load i32, ptr %51, align 4, !tbaa !9
  %1909 = load i32, ptr %31, align 4, !tbaa !9
  %1910 = mul nsw i32 %1908, %1909
  %1911 = add nsw i32 %1907, %1910
  %1912 = sext i32 %1911 to i64
  %1913 = getelementptr inbounds double, ptr %1906, i64 %1912
  store double %1905, ptr %1913, align 8, !tbaa !11
  %1914 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %1915 = load double, ptr %1914, align 8, !tbaa !11
  %1916 = load ptr, ptr %23, align 8, !tbaa !5
  %1917 = load i32, ptr %50, align 4, !tbaa !9
  %1918 = load i32, ptr %51, align 4, !tbaa !9
  %1919 = load i32, ptr %31, align 4, !tbaa !9
  %1920 = mul nsw i32 %1918, %1919
  %1921 = add nsw i32 %1917, %1920
  %1922 = sext i32 %1921 to i64
  %1923 = getelementptr inbounds double, ptr %1916, i64 %1922
  store double %1915, ptr %1923, align 8, !tbaa !11
  br label %2410

1924:                                             ; preds = %1746, %1742
  %1925 = load i32, ptr %51, align 4, !tbaa !9
  %1926 = load i32, ptr %52, align 4, !tbaa !9
  %1927 = icmp ne i32 %1925, %1926
  br i1 %1927, label %1928, label %2110

1928:                                             ; preds = %1924
  %1929 = load i32, ptr %49, align 4, !tbaa !9
  %1930 = load i32, ptr %50, align 4, !tbaa !9
  %1931 = icmp eq i32 %1929, %1930
  br i1 %1931, label %1932, label %2110

1932:                                             ; preds = %1928
  %1933 = load i32, ptr %49, align 4, !tbaa !9
  %1934 = sub nsw i32 %1933, 1
  store i32 %1934, ptr %35, align 4, !tbaa !9
  %1935 = load ptr, ptr %19, align 8, !tbaa !5
  %1936 = load i32, ptr %49, align 4, !tbaa !9
  %1937 = load i32, ptr %27, align 4, !tbaa !9
  %1938 = mul nsw i32 %1936, %1937
  %1939 = add nsw i32 %1938, 1
  %1940 = sext i32 %1939 to i64
  %1941 = getelementptr inbounds double, ptr %1935, i64 %1940
  %1942 = load ptr, ptr %23, align 8, !tbaa !5
  %1943 = load i32, ptr %51, align 4, !tbaa !9
  %1944 = load i32, ptr %31, align 4, !tbaa !9
  %1945 = mul nsw i32 %1943, %1944
  %1946 = add nsw i32 %1945, 1
  %1947 = sext i32 %1946 to i64
  %1948 = getelementptr inbounds double, ptr %1942, i64 %1947
  %1949 = call double @ddot_(ptr noundef %35, ptr noundef %1941, ptr noundef @c__1, ptr noundef %1948, ptr noundef @c__1)
  store double %1949, ptr %41, align 8, !tbaa !11
  %1950 = load i32, ptr %51, align 4, !tbaa !9
  %1951 = sub nsw i32 %1950, 1
  store i32 %1951, ptr %35, align 4, !tbaa !9
  %1952 = load ptr, ptr %23, align 8, !tbaa !5
  %1953 = load i32, ptr %49, align 4, !tbaa !9
  %1954 = load i32, ptr %31, align 4, !tbaa !9
  %1955 = add nsw i32 %1953, %1954
  %1956 = sext i32 %1955 to i64
  %1957 = getelementptr inbounds double, ptr %1952, i64 %1956
  %1958 = load ptr, ptr %24, align 8, !tbaa !5
  %1959 = load ptr, ptr %21, align 8, !tbaa !5
  %1960 = load i32, ptr %51, align 4, !tbaa !9
  %1961 = load i32, ptr %29, align 4, !tbaa !9
  %1962 = mul nsw i32 %1960, %1961
  %1963 = add nsw i32 %1962, 1
  %1964 = sext i32 %1963 to i64
  %1965 = getelementptr inbounds double, ptr %1959, i64 %1964
  %1966 = call double @ddot_(ptr noundef %35, ptr noundef %1957, ptr noundef %1958, ptr noundef %1965, ptr noundef @c__1)
  store double %1966, ptr %42, align 8, !tbaa !11
  %1967 = load double, ptr %65, align 8, !tbaa !11
  %1968 = load ptr, ptr %23, align 8, !tbaa !5
  %1969 = load i32, ptr %49, align 4, !tbaa !9
  %1970 = load i32, ptr %51, align 4, !tbaa !9
  %1971 = load i32, ptr %31, align 4, !tbaa !9
  %1972 = mul nsw i32 %1970, %1971
  %1973 = add nsw i32 %1969, %1972
  %1974 = sext i32 %1973 to i64
  %1975 = getelementptr inbounds double, ptr %1968, i64 %1974
  %1976 = load double, ptr %1975, align 8, !tbaa !11
  %1977 = load double, ptr %41, align 8, !tbaa !11
  %1978 = load double, ptr %65, align 8, !tbaa !11
  %1979 = load double, ptr %42, align 8, !tbaa !11
  %1980 = call double @llvm.fmuladd.f64(double %1978, double %1979, double %1977)
  %1981 = fsub double %1976, %1980
  %1982 = fmul double %1967, %1981
  %1983 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %1982, ptr %1983, align 16, !tbaa !11
  %1984 = load i32, ptr %49, align 4, !tbaa !9
  %1985 = sub nsw i32 %1984, 1
  store i32 %1985, ptr %35, align 4, !tbaa !9
  %1986 = load ptr, ptr %19, align 8, !tbaa !5
  %1987 = load i32, ptr %49, align 4, !tbaa !9
  %1988 = load i32, ptr %27, align 4, !tbaa !9
  %1989 = mul nsw i32 %1987, %1988
  %1990 = add nsw i32 %1989, 1
  %1991 = sext i32 %1990 to i64
  %1992 = getelementptr inbounds double, ptr %1986, i64 %1991
  %1993 = load ptr, ptr %23, align 8, !tbaa !5
  %1994 = load i32, ptr %52, align 4, !tbaa !9
  %1995 = load i32, ptr %31, align 4, !tbaa !9
  %1996 = mul nsw i32 %1994, %1995
  %1997 = add nsw i32 %1996, 1
  %1998 = sext i32 %1997 to i64
  %1999 = getelementptr inbounds double, ptr %1993, i64 %1998
  %2000 = call double @ddot_(ptr noundef %35, ptr noundef %1992, ptr noundef @c__1, ptr noundef %1999, ptr noundef @c__1)
  store double %2000, ptr %41, align 8, !tbaa !11
  %2001 = load i32, ptr %51, align 4, !tbaa !9
  %2002 = sub nsw i32 %2001, 1
  store i32 %2002, ptr %35, align 4, !tbaa !9
  %2003 = load ptr, ptr %23, align 8, !tbaa !5
  %2004 = load i32, ptr %49, align 4, !tbaa !9
  %2005 = load i32, ptr %31, align 4, !tbaa !9
  %2006 = add nsw i32 %2004, %2005
  %2007 = sext i32 %2006 to i64
  %2008 = getelementptr inbounds double, ptr %2003, i64 %2007
  %2009 = load ptr, ptr %24, align 8, !tbaa !5
  %2010 = load ptr, ptr %21, align 8, !tbaa !5
  %2011 = load i32, ptr %52, align 4, !tbaa !9
  %2012 = load i32, ptr %29, align 4, !tbaa !9
  %2013 = mul nsw i32 %2011, %2012
  %2014 = add nsw i32 %2013, 1
  %2015 = sext i32 %2014 to i64
  %2016 = getelementptr inbounds double, ptr %2010, i64 %2015
  %2017 = call double @ddot_(ptr noundef %35, ptr noundef %2008, ptr noundef %2009, ptr noundef %2016, ptr noundef @c__1)
  store double %2017, ptr %42, align 8, !tbaa !11
  %2018 = load double, ptr %65, align 8, !tbaa !11
  %2019 = load ptr, ptr %23, align 8, !tbaa !5
  %2020 = load i32, ptr %49, align 4, !tbaa !9
  %2021 = load i32, ptr %52, align 4, !tbaa !9
  %2022 = load i32, ptr %31, align 4, !tbaa !9
  %2023 = mul nsw i32 %2021, %2022
  %2024 = add nsw i32 %2020, %2023
  %2025 = sext i32 %2024 to i64
  %2026 = getelementptr inbounds double, ptr %2019, i64 %2025
  %2027 = load double, ptr %2026, align 8, !tbaa !11
  %2028 = load double, ptr %41, align 8, !tbaa !11
  %2029 = load double, ptr %65, align 8, !tbaa !11
  %2030 = load double, ptr %42, align 8, !tbaa !11
  %2031 = call double @llvm.fmuladd.f64(double %2029, double %2030, double %2028)
  %2032 = fsub double %2027, %2031
  %2033 = fmul double %2018, %2032
  %2034 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %2033, ptr %2034, align 8, !tbaa !11
  %2035 = load double, ptr %65, align 8, !tbaa !11
  %2036 = fneg double %2035
  %2037 = load ptr, ptr %19, align 8, !tbaa !5
  %2038 = load i32, ptr %49, align 4, !tbaa !9
  %2039 = load i32, ptr %49, align 4, !tbaa !9
  %2040 = load i32, ptr %27, align 4, !tbaa !9
  %2041 = mul nsw i32 %2039, %2040
  %2042 = add nsw i32 %2038, %2041
  %2043 = sext i32 %2042 to i64
  %2044 = getelementptr inbounds double, ptr %2037, i64 %2043
  %2045 = load double, ptr %2044, align 8, !tbaa !11
  %2046 = fmul double %2036, %2045
  store double %2046, ptr %37, align 8, !tbaa !11
  %2047 = load ptr, ptr %21, align 8, !tbaa !5
  %2048 = load i32, ptr %51, align 4, !tbaa !9
  %2049 = load i32, ptr %51, align 4, !tbaa !9
  %2050 = load i32, ptr %29, align 4, !tbaa !9
  %2051 = mul nsw i32 %2049, %2050
  %2052 = add nsw i32 %2048, %2051
  %2053 = sext i32 %2052 to i64
  %2054 = getelementptr inbounds double, ptr %2047, i64 %2053
  %2055 = load ptr, ptr %22, align 8, !tbaa !5
  %2056 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2057 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %40, ptr noundef @c_b26, ptr noundef %2054, ptr noundef %2055, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %2056, ptr noundef @c__2, ptr noundef %37, ptr noundef @c_b30, ptr noundef %2057, ptr noundef @c__2, ptr noundef %56, ptr noundef %53, ptr noundef %39)
  %2058 = load i32, ptr %39, align 4, !tbaa !9
  %2059 = icmp ne i32 %2058, 0
  br i1 %2059, label %2060, label %2062

2060:                                             ; preds = %1932
  %2061 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %2061, align 4, !tbaa !9
  br label %2062

2062:                                             ; preds = %2060, %1932
  %2063 = load double, ptr %56, align 8, !tbaa !11
  %2064 = fcmp une double %2063, 1.000000e+00
  br i1 %2064, label %2065, label %2089

2065:                                             ; preds = %2062
  %2066 = load ptr, ptr %18, align 8, !tbaa !5
  %2067 = load i32, ptr %2066, align 4, !tbaa !9
  store i32 %2067, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %2068

2068:                                             ; preds = %2081, %2065
  %2069 = load i32, ptr %43, align 4, !tbaa !9
  %2070 = load i32, ptr %35, align 4, !tbaa !9
  %2071 = icmp sle i32 %2069, %2070
  br i1 %2071, label %2072, label %2084

2072:                                             ; preds = %2068
  %2073 = load ptr, ptr %17, align 8, !tbaa !5
  %2074 = load ptr, ptr %23, align 8, !tbaa !5
  %2075 = load i32, ptr %43, align 4, !tbaa !9
  %2076 = load i32, ptr %31, align 4, !tbaa !9
  %2077 = mul nsw i32 %2075, %2076
  %2078 = add nsw i32 %2077, 1
  %2079 = sext i32 %2078 to i64
  %2080 = getelementptr inbounds double, ptr %2074, i64 %2079
  call void @dscal_(ptr noundef %2073, ptr noundef %56, ptr noundef %2080, ptr noundef @c__1)
  br label %2081

2081:                                             ; preds = %2072
  %2082 = load i32, ptr %43, align 4, !tbaa !9
  %2083 = add nsw i32 %2082, 1
  store i32 %2083, ptr %43, align 4, !tbaa !9
  br label %2068, !llvm.loop !22

2084:                                             ; preds = %2068
  %2085 = load double, ptr %56, align 8, !tbaa !11
  %2086 = load ptr, ptr %25, align 8, !tbaa !5
  %2087 = load double, ptr %2086, align 8, !tbaa !11
  %2088 = fmul double %2087, %2085
  store double %2088, ptr %2086, align 8, !tbaa !11
  br label %2089

2089:                                             ; preds = %2084, %2062
  %2090 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2091 = load double, ptr %2090, align 16, !tbaa !11
  %2092 = load ptr, ptr %23, align 8, !tbaa !5
  %2093 = load i32, ptr %49, align 4, !tbaa !9
  %2094 = load i32, ptr %51, align 4, !tbaa !9
  %2095 = load i32, ptr %31, align 4, !tbaa !9
  %2096 = mul nsw i32 %2094, %2095
  %2097 = add nsw i32 %2093, %2096
  %2098 = sext i32 %2097 to i64
  %2099 = getelementptr inbounds double, ptr %2092, i64 %2098
  store double %2091, ptr %2099, align 8, !tbaa !11
  %2100 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %2101 = load double, ptr %2100, align 8, !tbaa !11
  %2102 = load ptr, ptr %23, align 8, !tbaa !5
  %2103 = load i32, ptr %49, align 4, !tbaa !9
  %2104 = load i32, ptr %52, align 4, !tbaa !9
  %2105 = load i32, ptr %31, align 4, !tbaa !9
  %2106 = mul nsw i32 %2104, %2105
  %2107 = add nsw i32 %2103, %2106
  %2108 = sext i32 %2107 to i64
  %2109 = getelementptr inbounds double, ptr %2102, i64 %2108
  store double %2101, ptr %2109, align 8, !tbaa !11
  br label %2409

2110:                                             ; preds = %1928, %1924
  %2111 = load i32, ptr %51, align 4, !tbaa !9
  %2112 = load i32, ptr %52, align 4, !tbaa !9
  %2113 = icmp ne i32 %2111, %2112
  br i1 %2113, label %2114, label %2408

2114:                                             ; preds = %2110
  %2115 = load i32, ptr %49, align 4, !tbaa !9
  %2116 = load i32, ptr %50, align 4, !tbaa !9
  %2117 = icmp ne i32 %2115, %2116
  br i1 %2117, label %2118, label %2408

2118:                                             ; preds = %2114
  %2119 = load i32, ptr %49, align 4, !tbaa !9
  %2120 = sub nsw i32 %2119, 1
  store i32 %2120, ptr %35, align 4, !tbaa !9
  %2121 = load ptr, ptr %19, align 8, !tbaa !5
  %2122 = load i32, ptr %49, align 4, !tbaa !9
  %2123 = load i32, ptr %27, align 4, !tbaa !9
  %2124 = mul nsw i32 %2122, %2123
  %2125 = add nsw i32 %2124, 1
  %2126 = sext i32 %2125 to i64
  %2127 = getelementptr inbounds double, ptr %2121, i64 %2126
  %2128 = load ptr, ptr %23, align 8, !tbaa !5
  %2129 = load i32, ptr %51, align 4, !tbaa !9
  %2130 = load i32, ptr %31, align 4, !tbaa !9
  %2131 = mul nsw i32 %2129, %2130
  %2132 = add nsw i32 %2131, 1
  %2133 = sext i32 %2132 to i64
  %2134 = getelementptr inbounds double, ptr %2128, i64 %2133
  %2135 = call double @ddot_(ptr noundef %35, ptr noundef %2127, ptr noundef @c__1, ptr noundef %2134, ptr noundef @c__1)
  store double %2135, ptr %41, align 8, !tbaa !11
  %2136 = load i32, ptr %51, align 4, !tbaa !9
  %2137 = sub nsw i32 %2136, 1
  store i32 %2137, ptr %35, align 4, !tbaa !9
  %2138 = load ptr, ptr %23, align 8, !tbaa !5
  %2139 = load i32, ptr %49, align 4, !tbaa !9
  %2140 = load i32, ptr %31, align 4, !tbaa !9
  %2141 = add nsw i32 %2139, %2140
  %2142 = sext i32 %2141 to i64
  %2143 = getelementptr inbounds double, ptr %2138, i64 %2142
  %2144 = load ptr, ptr %24, align 8, !tbaa !5
  %2145 = load ptr, ptr %21, align 8, !tbaa !5
  %2146 = load i32, ptr %51, align 4, !tbaa !9
  %2147 = load i32, ptr %29, align 4, !tbaa !9
  %2148 = mul nsw i32 %2146, %2147
  %2149 = add nsw i32 %2148, 1
  %2150 = sext i32 %2149 to i64
  %2151 = getelementptr inbounds double, ptr %2145, i64 %2150
  %2152 = call double @ddot_(ptr noundef %35, ptr noundef %2143, ptr noundef %2144, ptr noundef %2151, ptr noundef @c__1)
  store double %2152, ptr %42, align 8, !tbaa !11
  %2153 = load ptr, ptr %23, align 8, !tbaa !5
  %2154 = load i32, ptr %49, align 4, !tbaa !9
  %2155 = load i32, ptr %51, align 4, !tbaa !9
  %2156 = load i32, ptr %31, align 4, !tbaa !9
  %2157 = mul nsw i32 %2155, %2156
  %2158 = add nsw i32 %2154, %2157
  %2159 = sext i32 %2158 to i64
  %2160 = getelementptr inbounds double, ptr %2153, i64 %2159
  %2161 = load double, ptr %2160, align 8, !tbaa !11
  %2162 = load double, ptr %41, align 8, !tbaa !11
  %2163 = load double, ptr %65, align 8, !tbaa !11
  %2164 = load double, ptr %42, align 8, !tbaa !11
  %2165 = call double @llvm.fmuladd.f64(double %2163, double %2164, double %2162)
  %2166 = fsub double %2161, %2165
  %2167 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %2166, ptr %2167, align 16, !tbaa !11
  %2168 = load i32, ptr %49, align 4, !tbaa !9
  %2169 = sub nsw i32 %2168, 1
  store i32 %2169, ptr %35, align 4, !tbaa !9
  %2170 = load ptr, ptr %19, align 8, !tbaa !5
  %2171 = load i32, ptr %49, align 4, !tbaa !9
  %2172 = load i32, ptr %27, align 4, !tbaa !9
  %2173 = mul nsw i32 %2171, %2172
  %2174 = add nsw i32 %2173, 1
  %2175 = sext i32 %2174 to i64
  %2176 = getelementptr inbounds double, ptr %2170, i64 %2175
  %2177 = load ptr, ptr %23, align 8, !tbaa !5
  %2178 = load i32, ptr %52, align 4, !tbaa !9
  %2179 = load i32, ptr %31, align 4, !tbaa !9
  %2180 = mul nsw i32 %2178, %2179
  %2181 = add nsw i32 %2180, 1
  %2182 = sext i32 %2181 to i64
  %2183 = getelementptr inbounds double, ptr %2177, i64 %2182
  %2184 = call double @ddot_(ptr noundef %35, ptr noundef %2176, ptr noundef @c__1, ptr noundef %2183, ptr noundef @c__1)
  store double %2184, ptr %41, align 8, !tbaa !11
  %2185 = load i32, ptr %51, align 4, !tbaa !9
  %2186 = sub nsw i32 %2185, 1
  store i32 %2186, ptr %35, align 4, !tbaa !9
  %2187 = load ptr, ptr %23, align 8, !tbaa !5
  %2188 = load i32, ptr %49, align 4, !tbaa !9
  %2189 = load i32, ptr %31, align 4, !tbaa !9
  %2190 = add nsw i32 %2188, %2189
  %2191 = sext i32 %2190 to i64
  %2192 = getelementptr inbounds double, ptr %2187, i64 %2191
  %2193 = load ptr, ptr %24, align 8, !tbaa !5
  %2194 = load ptr, ptr %21, align 8, !tbaa !5
  %2195 = load i32, ptr %52, align 4, !tbaa !9
  %2196 = load i32, ptr %29, align 4, !tbaa !9
  %2197 = mul nsw i32 %2195, %2196
  %2198 = add nsw i32 %2197, 1
  %2199 = sext i32 %2198 to i64
  %2200 = getelementptr inbounds double, ptr %2194, i64 %2199
  %2201 = call double @ddot_(ptr noundef %35, ptr noundef %2192, ptr noundef %2193, ptr noundef %2200, ptr noundef @c__1)
  store double %2201, ptr %42, align 8, !tbaa !11
  %2202 = load ptr, ptr %23, align 8, !tbaa !5
  %2203 = load i32, ptr %49, align 4, !tbaa !9
  %2204 = load i32, ptr %52, align 4, !tbaa !9
  %2205 = load i32, ptr %31, align 4, !tbaa !9
  %2206 = mul nsw i32 %2204, %2205
  %2207 = add nsw i32 %2203, %2206
  %2208 = sext i32 %2207 to i64
  %2209 = getelementptr inbounds double, ptr %2202, i64 %2208
  %2210 = load double, ptr %2209, align 8, !tbaa !11
  %2211 = load double, ptr %41, align 8, !tbaa !11
  %2212 = load double, ptr %65, align 8, !tbaa !11
  %2213 = load double, ptr %42, align 8, !tbaa !11
  %2214 = call double @llvm.fmuladd.f64(double %2212, double %2213, double %2211)
  %2215 = fsub double %2210, %2214
  %2216 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  store double %2215, ptr %2216, align 16, !tbaa !11
  %2217 = load i32, ptr %49, align 4, !tbaa !9
  %2218 = sub nsw i32 %2217, 1
  store i32 %2218, ptr %35, align 4, !tbaa !9
  %2219 = load ptr, ptr %19, align 8, !tbaa !5
  %2220 = load i32, ptr %50, align 4, !tbaa !9
  %2221 = load i32, ptr %27, align 4, !tbaa !9
  %2222 = mul nsw i32 %2220, %2221
  %2223 = add nsw i32 %2222, 1
  %2224 = sext i32 %2223 to i64
  %2225 = getelementptr inbounds double, ptr %2219, i64 %2224
  %2226 = load ptr, ptr %23, align 8, !tbaa !5
  %2227 = load i32, ptr %51, align 4, !tbaa !9
  %2228 = load i32, ptr %31, align 4, !tbaa !9
  %2229 = mul nsw i32 %2227, %2228
  %2230 = add nsw i32 %2229, 1
  %2231 = sext i32 %2230 to i64
  %2232 = getelementptr inbounds double, ptr %2226, i64 %2231
  %2233 = call double @ddot_(ptr noundef %35, ptr noundef %2225, ptr noundef @c__1, ptr noundef %2232, ptr noundef @c__1)
  store double %2233, ptr %41, align 8, !tbaa !11
  %2234 = load i32, ptr %51, align 4, !tbaa !9
  %2235 = sub nsw i32 %2234, 1
  store i32 %2235, ptr %35, align 4, !tbaa !9
  %2236 = load ptr, ptr %23, align 8, !tbaa !5
  %2237 = load i32, ptr %50, align 4, !tbaa !9
  %2238 = load i32, ptr %31, align 4, !tbaa !9
  %2239 = add nsw i32 %2237, %2238
  %2240 = sext i32 %2239 to i64
  %2241 = getelementptr inbounds double, ptr %2236, i64 %2240
  %2242 = load ptr, ptr %24, align 8, !tbaa !5
  %2243 = load ptr, ptr %21, align 8, !tbaa !5
  %2244 = load i32, ptr %51, align 4, !tbaa !9
  %2245 = load i32, ptr %29, align 4, !tbaa !9
  %2246 = mul nsw i32 %2244, %2245
  %2247 = add nsw i32 %2246, 1
  %2248 = sext i32 %2247 to i64
  %2249 = getelementptr inbounds double, ptr %2243, i64 %2248
  %2250 = call double @ddot_(ptr noundef %35, ptr noundef %2241, ptr noundef %2242, ptr noundef %2249, ptr noundef @c__1)
  store double %2250, ptr %42, align 8, !tbaa !11
  %2251 = load ptr, ptr %23, align 8, !tbaa !5
  %2252 = load i32, ptr %50, align 4, !tbaa !9
  %2253 = load i32, ptr %51, align 4, !tbaa !9
  %2254 = load i32, ptr %31, align 4, !tbaa !9
  %2255 = mul nsw i32 %2253, %2254
  %2256 = add nsw i32 %2252, %2255
  %2257 = sext i32 %2256 to i64
  %2258 = getelementptr inbounds double, ptr %2251, i64 %2257
  %2259 = load double, ptr %2258, align 8, !tbaa !11
  %2260 = load double, ptr %41, align 8, !tbaa !11
  %2261 = load double, ptr %65, align 8, !tbaa !11
  %2262 = load double, ptr %42, align 8, !tbaa !11
  %2263 = call double @llvm.fmuladd.f64(double %2261, double %2262, double %2260)
  %2264 = fsub double %2259, %2263
  %2265 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %2264, ptr %2265, align 8, !tbaa !11
  %2266 = load i32, ptr %49, align 4, !tbaa !9
  %2267 = sub nsw i32 %2266, 1
  store i32 %2267, ptr %35, align 4, !tbaa !9
  %2268 = load ptr, ptr %19, align 8, !tbaa !5
  %2269 = load i32, ptr %50, align 4, !tbaa !9
  %2270 = load i32, ptr %27, align 4, !tbaa !9
  %2271 = mul nsw i32 %2269, %2270
  %2272 = add nsw i32 %2271, 1
  %2273 = sext i32 %2272 to i64
  %2274 = getelementptr inbounds double, ptr %2268, i64 %2273
  %2275 = load ptr, ptr %23, align 8, !tbaa !5
  %2276 = load i32, ptr %52, align 4, !tbaa !9
  %2277 = load i32, ptr %31, align 4, !tbaa !9
  %2278 = mul nsw i32 %2276, %2277
  %2279 = add nsw i32 %2278, 1
  %2280 = sext i32 %2279 to i64
  %2281 = getelementptr inbounds double, ptr %2275, i64 %2280
  %2282 = call double @ddot_(ptr noundef %35, ptr noundef %2274, ptr noundef @c__1, ptr noundef %2281, ptr noundef @c__1)
  store double %2282, ptr %41, align 8, !tbaa !11
  %2283 = load i32, ptr %51, align 4, !tbaa !9
  %2284 = sub nsw i32 %2283, 1
  store i32 %2284, ptr %35, align 4, !tbaa !9
  %2285 = load ptr, ptr %23, align 8, !tbaa !5
  %2286 = load i32, ptr %50, align 4, !tbaa !9
  %2287 = load i32, ptr %31, align 4, !tbaa !9
  %2288 = add nsw i32 %2286, %2287
  %2289 = sext i32 %2288 to i64
  %2290 = getelementptr inbounds double, ptr %2285, i64 %2289
  %2291 = load ptr, ptr %24, align 8, !tbaa !5
  %2292 = load ptr, ptr %21, align 8, !tbaa !5
  %2293 = load i32, ptr %52, align 4, !tbaa !9
  %2294 = load i32, ptr %29, align 4, !tbaa !9
  %2295 = mul nsw i32 %2293, %2294
  %2296 = add nsw i32 %2295, 1
  %2297 = sext i32 %2296 to i64
  %2298 = getelementptr inbounds double, ptr %2292, i64 %2297
  %2299 = call double @ddot_(ptr noundef %35, ptr noundef %2290, ptr noundef %2291, ptr noundef %2298, ptr noundef @c__1)
  store double %2299, ptr %42, align 8, !tbaa !11
  %2300 = load ptr, ptr %23, align 8, !tbaa !5
  %2301 = load i32, ptr %50, align 4, !tbaa !9
  %2302 = load i32, ptr %52, align 4, !tbaa !9
  %2303 = load i32, ptr %31, align 4, !tbaa !9
  %2304 = mul nsw i32 %2302, %2303
  %2305 = add nsw i32 %2301, %2304
  %2306 = sext i32 %2305 to i64
  %2307 = getelementptr inbounds double, ptr %2300, i64 %2306
  %2308 = load double, ptr %2307, align 8, !tbaa !11
  %2309 = load double, ptr %41, align 8, !tbaa !11
  %2310 = load double, ptr %65, align 8, !tbaa !11
  %2311 = load double, ptr %42, align 8, !tbaa !11
  %2312 = call double @llvm.fmuladd.f64(double %2310, double %2311, double %2309)
  %2313 = fsub double %2308, %2312
  %2314 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  store double %2313, ptr %2314, align 8, !tbaa !11
  %2315 = load ptr, ptr %16, align 8, !tbaa !5
  %2316 = load ptr, ptr %19, align 8, !tbaa !5
  %2317 = load i32, ptr %49, align 4, !tbaa !9
  %2318 = load i32, ptr %49, align 4, !tbaa !9
  %2319 = load i32, ptr %27, align 4, !tbaa !9
  %2320 = mul nsw i32 %2318, %2319
  %2321 = add nsw i32 %2317, %2320
  %2322 = sext i32 %2321 to i64
  %2323 = getelementptr inbounds double, ptr %2316, i64 %2322
  %2324 = load ptr, ptr %20, align 8, !tbaa !5
  %2325 = load ptr, ptr %21, align 8, !tbaa !5
  %2326 = load i32, ptr %51, align 4, !tbaa !9
  %2327 = load i32, ptr %51, align 4, !tbaa !9
  %2328 = load i32, ptr %29, align 4, !tbaa !9
  %2329 = mul nsw i32 %2327, %2328
  %2330 = add nsw i32 %2326, %2329
  %2331 = sext i32 %2330 to i64
  %2332 = getelementptr inbounds double, ptr %2325, i64 %2331
  %2333 = load ptr, ptr %22, align 8, !tbaa !5
  %2334 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2335 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlasy2_(ptr noundef @c_true, ptr noundef @c_false, ptr noundef %2315, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %2323, ptr noundef %2324, ptr noundef %2332, ptr noundef %2333, ptr noundef %2334, ptr noundef @c__2, ptr noundef %56, ptr noundef %2335, ptr noundef @c__2, ptr noundef %53, ptr noundef %39)
  %2336 = load i32, ptr %39, align 4, !tbaa !9
  %2337 = icmp ne i32 %2336, 0
  br i1 %2337, label %2338, label %2340

2338:                                             ; preds = %2118
  %2339 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %2339, align 4, !tbaa !9
  br label %2340

2340:                                             ; preds = %2338, %2118
  %2341 = load double, ptr %56, align 8, !tbaa !11
  %2342 = fcmp une double %2341, 1.000000e+00
  br i1 %2342, label %2343, label %2367

2343:                                             ; preds = %2340
  %2344 = load ptr, ptr %18, align 8, !tbaa !5
  %2345 = load i32, ptr %2344, align 4, !tbaa !9
  store i32 %2345, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %2346

2346:                                             ; preds = %2359, %2343
  %2347 = load i32, ptr %43, align 4, !tbaa !9
  %2348 = load i32, ptr %35, align 4, !tbaa !9
  %2349 = icmp sle i32 %2347, %2348
  br i1 %2349, label %2350, label %2362

2350:                                             ; preds = %2346
  %2351 = load ptr, ptr %17, align 8, !tbaa !5
  %2352 = load ptr, ptr %23, align 8, !tbaa !5
  %2353 = load i32, ptr %43, align 4, !tbaa !9
  %2354 = load i32, ptr %31, align 4, !tbaa !9
  %2355 = mul nsw i32 %2353, %2354
  %2356 = add nsw i32 %2355, 1
  %2357 = sext i32 %2356 to i64
  %2358 = getelementptr inbounds double, ptr %2352, i64 %2357
  call void @dscal_(ptr noundef %2351, ptr noundef %56, ptr noundef %2358, ptr noundef @c__1)
  br label %2359

2359:                                             ; preds = %2350
  %2360 = load i32, ptr %43, align 4, !tbaa !9
  %2361 = add nsw i32 %2360, 1
  store i32 %2361, ptr %43, align 4, !tbaa !9
  br label %2346, !llvm.loop !23

2362:                                             ; preds = %2346
  %2363 = load double, ptr %56, align 8, !tbaa !11
  %2364 = load ptr, ptr %25, align 8, !tbaa !5
  %2365 = load double, ptr %2364, align 8, !tbaa !11
  %2366 = fmul double %2365, %2363
  store double %2366, ptr %2364, align 8, !tbaa !11
  br label %2367

2367:                                             ; preds = %2362, %2340
  %2368 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2369 = load double, ptr %2368, align 16, !tbaa !11
  %2370 = load ptr, ptr %23, align 8, !tbaa !5
  %2371 = load i32, ptr %49, align 4, !tbaa !9
  %2372 = load i32, ptr %51, align 4, !tbaa !9
  %2373 = load i32, ptr %31, align 4, !tbaa !9
  %2374 = mul nsw i32 %2372, %2373
  %2375 = add nsw i32 %2371, %2374
  %2376 = sext i32 %2375 to i64
  %2377 = getelementptr inbounds double, ptr %2370, i64 %2376
  store double %2369, ptr %2377, align 8, !tbaa !11
  %2378 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %2379 = load double, ptr %2378, align 16, !tbaa !11
  %2380 = load ptr, ptr %23, align 8, !tbaa !5
  %2381 = load i32, ptr %49, align 4, !tbaa !9
  %2382 = load i32, ptr %52, align 4, !tbaa !9
  %2383 = load i32, ptr %31, align 4, !tbaa !9
  %2384 = mul nsw i32 %2382, %2383
  %2385 = add nsw i32 %2381, %2384
  %2386 = sext i32 %2385 to i64
  %2387 = getelementptr inbounds double, ptr %2380, i64 %2386
  store double %2379, ptr %2387, align 8, !tbaa !11
  %2388 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %2389 = load double, ptr %2388, align 8, !tbaa !11
  %2390 = load ptr, ptr %23, align 8, !tbaa !5
  %2391 = load i32, ptr %50, align 4, !tbaa !9
  %2392 = load i32, ptr %51, align 4, !tbaa !9
  %2393 = load i32, ptr %31, align 4, !tbaa !9
  %2394 = mul nsw i32 %2392, %2393
  %2395 = add nsw i32 %2391, %2394
  %2396 = sext i32 %2395 to i64
  %2397 = getelementptr inbounds double, ptr %2390, i64 %2396
  store double %2389, ptr %2397, align 8, !tbaa !11
  %2398 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %2399 = load double, ptr %2398, align 8, !tbaa !11
  %2400 = load ptr, ptr %23, align 8, !tbaa !5
  %2401 = load i32, ptr %50, align 4, !tbaa !9
  %2402 = load i32, ptr %52, align 4, !tbaa !9
  %2403 = load i32, ptr %31, align 4, !tbaa !9
  %2404 = mul nsw i32 %2402, %2403
  %2405 = add nsw i32 %2401, %2404
  %2406 = sext i32 %2405 to i64
  %2407 = getelementptr inbounds double, ptr %2400, i64 %2406
  store double %2399, ptr %2407, align 8, !tbaa !11
  br label %2408

2408:                                             ; preds = %2367, %2114, %2110
  br label %2409

2409:                                             ; preds = %2408, %2089
  br label %2410

2410:                                             ; preds = %2409, %1903
  br label %2411

2411:                                             ; preds = %2410, %1731
  br label %2412

2412:                                             ; preds = %2411, %1542
  br label %2413

2413:                                             ; preds = %2412
  %2414 = load i32, ptr %44, align 4, !tbaa !9
  %2415 = add nsw i32 %2414, 1
  store i32 %2415, ptr %44, align 4, !tbaa !9
  br label %1534, !llvm.loop !24

2416:                                             ; preds = %1534
  br label %2417

2417:                                             ; preds = %2416, %1498
  br label %2418

2418:                                             ; preds = %2417
  %2419 = load i32, ptr %45, align 4, !tbaa !9
  %2420 = add nsw i32 %2419, 1
  store i32 %2420, ptr %45, align 4, !tbaa !9
  br label %1490, !llvm.loop !25

2421:                                             ; preds = %1490
  br label %5104

2422:                                             ; preds = %1484, %1481
  %2423 = load i32, ptr %58, align 4, !tbaa !9
  %2424 = icmp ne i32 %2423, 0
  br i1 %2424, label %3632, label %2425

2425:                                             ; preds = %2422
  %2426 = load i32, ptr %59, align 4, !tbaa !9
  %2427 = icmp ne i32 %2426, 0
  br i1 %2427, label %3632, label %2428

2428:                                             ; preds = %2425
  %2429 = load ptr, ptr %18, align 8, !tbaa !5
  %2430 = load i32, ptr %2429, align 4, !tbaa !9
  store i32 %2430, ptr %48, align 4, !tbaa !9
  %2431 = load ptr, ptr %18, align 8, !tbaa !5
  %2432 = load i32, ptr %2431, align 4, !tbaa !9
  store i32 %2432, ptr %45, align 4, !tbaa !9
  br label %2433

2433:                                             ; preds = %3628, %2428
  %2434 = load i32, ptr %45, align 4, !tbaa !9
  %2435 = icmp sge i32 %2434, 1
  br i1 %2435, label %2436, label %3631

2436:                                             ; preds = %2433
  %2437 = load i32, ptr %45, align 4, !tbaa !9
  %2438 = load i32, ptr %48, align 4, !tbaa !9
  %2439 = icmp sgt i32 %2437, %2438
  br i1 %2439, label %2440, label %2441

2440:                                             ; preds = %2436
  br label %3627

2441:                                             ; preds = %2436
  %2442 = load i32, ptr %45, align 4, !tbaa !9
  %2443 = icmp eq i32 %2442, 1
  br i1 %2443, label %2444, label %2447

2444:                                             ; preds = %2441
  %2445 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %2445, ptr %51, align 4, !tbaa !9
  %2446 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %2446, ptr %52, align 4, !tbaa !9
  br label %2471

2447:                                             ; preds = %2441
  %2448 = load ptr, ptr %21, align 8, !tbaa !5
  %2449 = load i32, ptr %45, align 4, !tbaa !9
  %2450 = load i32, ptr %45, align 4, !tbaa !9
  %2451 = sub nsw i32 %2450, 1
  %2452 = load i32, ptr %29, align 4, !tbaa !9
  %2453 = mul nsw i32 %2451, %2452
  %2454 = add nsw i32 %2449, %2453
  %2455 = sext i32 %2454 to i64
  %2456 = getelementptr inbounds double, ptr %2448, i64 %2455
  %2457 = load double, ptr %2456, align 8, !tbaa !11
  %2458 = fcmp une double %2457, 0.000000e+00
  br i1 %2458, label %2459, label %2465

2459:                                             ; preds = %2447
  %2460 = load i32, ptr %45, align 4, !tbaa !9
  %2461 = sub nsw i32 %2460, 1
  store i32 %2461, ptr %51, align 4, !tbaa !9
  %2462 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %2462, ptr %52, align 4, !tbaa !9
  %2463 = load i32, ptr %45, align 4, !tbaa !9
  %2464 = sub nsw i32 %2463, 2
  store i32 %2464, ptr %48, align 4, !tbaa !9
  br label %2470

2465:                                             ; preds = %2447
  %2466 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %2466, ptr %51, align 4, !tbaa !9
  %2467 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %2467, ptr %52, align 4, !tbaa !9
  %2468 = load i32, ptr %45, align 4, !tbaa !9
  %2469 = sub nsw i32 %2468, 1
  store i32 %2469, ptr %48, align 4, !tbaa !9
  br label %2470

2470:                                             ; preds = %2465, %2459
  br label %2471

2471:                                             ; preds = %2470, %2444
  store i32 1, ptr %47, align 4, !tbaa !9
  %2472 = load ptr, ptr %17, align 8, !tbaa !5
  %2473 = load i32, ptr %2472, align 4, !tbaa !9
  store i32 %2473, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %44, align 4, !tbaa !9
  br label %2474

2474:                                             ; preds = %3623, %2471
  %2475 = load i32, ptr %44, align 4, !tbaa !9
  %2476 = load i32, ptr %33, align 4, !tbaa !9
  %2477 = icmp sle i32 %2475, %2476
  br i1 %2477, label %2478, label %3626

2478:                                             ; preds = %2474
  %2479 = load i32, ptr %44, align 4, !tbaa !9
  %2480 = load i32, ptr %47, align 4, !tbaa !9
  %2481 = icmp slt i32 %2479, %2480
  br i1 %2481, label %2482, label %2483

2482:                                             ; preds = %2478
  br label %3622

2483:                                             ; preds = %2478
  %2484 = load i32, ptr %44, align 4, !tbaa !9
  %2485 = load ptr, ptr %17, align 8, !tbaa !5
  %2486 = load i32, ptr %2485, align 4, !tbaa !9
  %2487 = icmp eq i32 %2484, %2486
  br i1 %2487, label %2488, label %2491

2488:                                             ; preds = %2483
  %2489 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %2489, ptr %49, align 4, !tbaa !9
  %2490 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %2490, ptr %50, align 4, !tbaa !9
  br label %2515

2491:                                             ; preds = %2483
  %2492 = load ptr, ptr %19, align 8, !tbaa !5
  %2493 = load i32, ptr %44, align 4, !tbaa !9
  %2494 = add nsw i32 %2493, 1
  %2495 = load i32, ptr %44, align 4, !tbaa !9
  %2496 = load i32, ptr %27, align 4, !tbaa !9
  %2497 = mul nsw i32 %2495, %2496
  %2498 = add nsw i32 %2494, %2497
  %2499 = sext i32 %2498 to i64
  %2500 = getelementptr inbounds double, ptr %2492, i64 %2499
  %2501 = load double, ptr %2500, align 8, !tbaa !11
  %2502 = fcmp une double %2501, 0.000000e+00
  br i1 %2502, label %2503, label %2509

2503:                                             ; preds = %2491
  %2504 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %2504, ptr %49, align 4, !tbaa !9
  %2505 = load i32, ptr %44, align 4, !tbaa !9
  %2506 = add nsw i32 %2505, 1
  store i32 %2506, ptr %50, align 4, !tbaa !9
  %2507 = load i32, ptr %44, align 4, !tbaa !9
  %2508 = add nsw i32 %2507, 2
  store i32 %2508, ptr %47, align 4, !tbaa !9
  br label %2514

2509:                                             ; preds = %2491
  %2510 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %2510, ptr %49, align 4, !tbaa !9
  %2511 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %2511, ptr %50, align 4, !tbaa !9
  %2512 = load i32, ptr %44, align 4, !tbaa !9
  %2513 = add nsw i32 %2512, 1
  store i32 %2513, ptr %47, align 4, !tbaa !9
  br label %2514

2514:                                             ; preds = %2509, %2503
  br label %2515

2515:                                             ; preds = %2514, %2488
  %2516 = load i32, ptr %51, align 4, !tbaa !9
  %2517 = load i32, ptr %52, align 4, !tbaa !9
  %2518 = icmp eq i32 %2516, %2517
  br i1 %2518, label %2519, label %2712

2519:                                             ; preds = %2515
  %2520 = load i32, ptr %49, align 4, !tbaa !9
  %2521 = load i32, ptr %50, align 4, !tbaa !9
  %2522 = icmp eq i32 %2520, %2521
  br i1 %2522, label %2523, label %2712

2523:                                             ; preds = %2519
  %2524 = load i32, ptr %49, align 4, !tbaa !9
  %2525 = sub nsw i32 %2524, 1
  store i32 %2525, ptr %34, align 4, !tbaa !9
  %2526 = load ptr, ptr %19, align 8, !tbaa !5
  %2527 = load i32, ptr %49, align 4, !tbaa !9
  %2528 = load i32, ptr %27, align 4, !tbaa !9
  %2529 = mul nsw i32 %2527, %2528
  %2530 = add nsw i32 %2529, 1
  %2531 = sext i32 %2530 to i64
  %2532 = getelementptr inbounds double, ptr %2526, i64 %2531
  %2533 = load ptr, ptr %23, align 8, !tbaa !5
  %2534 = load i32, ptr %51, align 4, !tbaa !9
  %2535 = load i32, ptr %31, align 4, !tbaa !9
  %2536 = mul nsw i32 %2534, %2535
  %2537 = add nsw i32 %2536, 1
  %2538 = sext i32 %2537 to i64
  %2539 = getelementptr inbounds double, ptr %2533, i64 %2538
  %2540 = call double @ddot_(ptr noundef %34, ptr noundef %2532, ptr noundef @c__1, ptr noundef %2539, ptr noundef @c__1)
  store double %2540, ptr %41, align 8, !tbaa !11
  %2541 = load ptr, ptr %18, align 8, !tbaa !5
  %2542 = load i32, ptr %2541, align 4, !tbaa !9
  %2543 = load i32, ptr %51, align 4, !tbaa !9
  %2544 = sub nsw i32 %2542, %2543
  store i32 %2544, ptr %34, align 4, !tbaa !9
  %2545 = load i32, ptr %51, align 4, !tbaa !9
  %2546 = add nsw i32 %2545, 1
  store i32 %2546, ptr %35, align 4, !tbaa !9
  %2547 = load i32, ptr %51, align 4, !tbaa !9
  %2548 = add nsw i32 %2547, 1
  store i32 %2548, ptr %36, align 4, !tbaa !9
  %2549 = load ptr, ptr %23, align 8, !tbaa !5
  %2550 = load i32, ptr %49, align 4, !tbaa !9
  %2551 = load i32, ptr %35, align 4, !tbaa !9
  %2552 = load ptr, ptr %18, align 8, !tbaa !5
  %2553 = load i32, ptr %2552, align 4, !tbaa !9
  %2554 = icmp sle i32 %2551, %2553
  br i1 %2554, label %2555, label %2557

2555:                                             ; preds = %2523
  %2556 = load i32, ptr %35, align 4, !tbaa !9
  br label %2560

2557:                                             ; preds = %2523
  %2558 = load ptr, ptr %18, align 8, !tbaa !5
  %2559 = load i32, ptr %2558, align 4, !tbaa !9
  br label %2560

2560:                                             ; preds = %2557, %2555
  %2561 = phi i32 [ %2556, %2555 ], [ %2559, %2557 ]
  %2562 = load i32, ptr %31, align 4, !tbaa !9
  %2563 = mul nsw i32 %2561, %2562
  %2564 = add nsw i32 %2550, %2563
  %2565 = sext i32 %2564 to i64
  %2566 = getelementptr inbounds double, ptr %2549, i64 %2565
  %2567 = load ptr, ptr %24, align 8, !tbaa !5
  %2568 = load ptr, ptr %21, align 8, !tbaa !5
  %2569 = load i32, ptr %51, align 4, !tbaa !9
  %2570 = load i32, ptr %36, align 4, !tbaa !9
  %2571 = load ptr, ptr %18, align 8, !tbaa !5
  %2572 = load i32, ptr %2571, align 4, !tbaa !9
  %2573 = icmp sle i32 %2570, %2572
  br i1 %2573, label %2574, label %2576

2574:                                             ; preds = %2560
  %2575 = load i32, ptr %36, align 4, !tbaa !9
  br label %2579

2576:                                             ; preds = %2560
  %2577 = load ptr, ptr %18, align 8, !tbaa !5
  %2578 = load i32, ptr %2577, align 4, !tbaa !9
  br label %2579

2579:                                             ; preds = %2576, %2574
  %2580 = phi i32 [ %2575, %2574 ], [ %2578, %2576 ]
  %2581 = load i32, ptr %29, align 4, !tbaa !9
  %2582 = mul nsw i32 %2580, %2581
  %2583 = add nsw i32 %2569, %2582
  %2584 = sext i32 %2583 to i64
  %2585 = getelementptr inbounds double, ptr %2568, i64 %2584
  %2586 = load ptr, ptr %22, align 8, !tbaa !5
  %2587 = call double @ddot_(ptr noundef %34, ptr noundef %2566, ptr noundef %2567, ptr noundef %2585, ptr noundef %2586)
  store double %2587, ptr %42, align 8, !tbaa !11
  %2588 = load ptr, ptr %23, align 8, !tbaa !5
  %2589 = load i32, ptr %49, align 4, !tbaa !9
  %2590 = load i32, ptr %51, align 4, !tbaa !9
  %2591 = load i32, ptr %31, align 4, !tbaa !9
  %2592 = mul nsw i32 %2590, %2591
  %2593 = add nsw i32 %2589, %2592
  %2594 = sext i32 %2593 to i64
  %2595 = getelementptr inbounds double, ptr %2588, i64 %2594
  %2596 = load double, ptr %2595, align 8, !tbaa !11
  %2597 = load double, ptr %41, align 8, !tbaa !11
  %2598 = load double, ptr %65, align 8, !tbaa !11
  %2599 = load double, ptr %42, align 8, !tbaa !11
  %2600 = call double @llvm.fmuladd.f64(double %2598, double %2599, double %2597)
  %2601 = fsub double %2596, %2600
  %2602 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %2601, ptr %2602, align 16, !tbaa !11
  store double 1.000000e+00, ptr %56, align 8, !tbaa !11
  %2603 = load ptr, ptr %19, align 8, !tbaa !5
  %2604 = load i32, ptr %49, align 4, !tbaa !9
  %2605 = load i32, ptr %49, align 4, !tbaa !9
  %2606 = load i32, ptr %27, align 4, !tbaa !9
  %2607 = mul nsw i32 %2605, %2606
  %2608 = add nsw i32 %2604, %2607
  %2609 = sext i32 %2608 to i64
  %2610 = getelementptr inbounds double, ptr %2603, i64 %2609
  %2611 = load double, ptr %2610, align 8, !tbaa !11
  %2612 = load double, ptr %65, align 8, !tbaa !11
  %2613 = load ptr, ptr %21, align 8, !tbaa !5
  %2614 = load i32, ptr %51, align 4, !tbaa !9
  %2615 = load i32, ptr %51, align 4, !tbaa !9
  %2616 = load i32, ptr %29, align 4, !tbaa !9
  %2617 = mul nsw i32 %2615, %2616
  %2618 = add nsw i32 %2614, %2617
  %2619 = sext i32 %2618 to i64
  %2620 = getelementptr inbounds double, ptr %2613, i64 %2619
  %2621 = load double, ptr %2620, align 8, !tbaa !11
  %2622 = call double @llvm.fmuladd.f64(double %2612, double %2621, double %2611)
  store double %2622, ptr %54, align 8, !tbaa !11
  %2623 = load double, ptr %54, align 8, !tbaa !11
  %2624 = fcmp oge double %2623, 0.000000e+00
  br i1 %2624, label %2625, label %2627

2625:                                             ; preds = %2579
  %2626 = load double, ptr %54, align 8, !tbaa !11
  br label %2630

2627:                                             ; preds = %2579
  %2628 = load double, ptr %54, align 8, !tbaa !11
  %2629 = fneg double %2628
  br label %2630

2630:                                             ; preds = %2627, %2625
  %2631 = phi double [ %2626, %2625 ], [ %2629, %2627 ]
  store double %2631, ptr %61, align 8, !tbaa !11
  %2632 = load double, ptr %61, align 8, !tbaa !11
  %2633 = load double, ptr %40, align 8, !tbaa !11
  %2634 = fcmp ole double %2632, %2633
  br i1 %2634, label %2635, label %2639

2635:                                             ; preds = %2630
  %2636 = load double, ptr %40, align 8, !tbaa !11
  store double %2636, ptr %54, align 8, !tbaa !11
  %2637 = load double, ptr %40, align 8, !tbaa !11
  store double %2637, ptr %61, align 8, !tbaa !11
  %2638 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %2638, align 4, !tbaa !9
  br label %2639

2639:                                             ; preds = %2635, %2630
  %2640 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2641 = load double, ptr %2640, align 16, !tbaa !11
  %2642 = fcmp oge double %2641, 0.000000e+00
  br i1 %2642, label %2643, label %2646

2643:                                             ; preds = %2639
  %2644 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2645 = load double, ptr %2644, align 16, !tbaa !11
  br label %2650

2646:                                             ; preds = %2639
  %2647 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2648 = load double, ptr %2647, align 16, !tbaa !11
  %2649 = fneg double %2648
  br label %2650

2650:                                             ; preds = %2646, %2643
  %2651 = phi double [ %2645, %2643 ], [ %2649, %2646 ]
  store double %2651, ptr %55, align 8, !tbaa !11
  %2652 = load double, ptr %61, align 8, !tbaa !11
  %2653 = fcmp olt double %2652, 1.000000e+00
  br i1 %2653, label %2654, label %2667

2654:                                             ; preds = %2650
  %2655 = load double, ptr %55, align 8, !tbaa !11
  %2656 = fcmp ogt double %2655, 1.000000e+00
  br i1 %2656, label %2657, label %2667

2657:                                             ; preds = %2654
  %2658 = load double, ptr %55, align 8, !tbaa !11
  %2659 = load double, ptr %57, align 8, !tbaa !11
  %2660 = load double, ptr %61, align 8, !tbaa !11
  %2661 = fmul double %2659, %2660
  %2662 = fcmp ogt double %2658, %2661
  br i1 %2662, label %2663, label %2666

2663:                                             ; preds = %2657
  %2664 = load double, ptr %55, align 8, !tbaa !11
  %2665 = fdiv double 1.000000e+00, %2664
  store double %2665, ptr %56, align 8, !tbaa !11
  br label %2666

2666:                                             ; preds = %2663, %2657
  br label %2667

2667:                                             ; preds = %2666, %2654, %2650
  %2668 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2669 = load double, ptr %2668, align 16, !tbaa !11
  %2670 = load double, ptr %56, align 8, !tbaa !11
  %2671 = fmul double %2669, %2670
  %2672 = load double, ptr %54, align 8, !tbaa !11
  %2673 = fdiv double %2671, %2672
  %2674 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  store double %2673, ptr %2674, align 16, !tbaa !11
  %2675 = load double, ptr %56, align 8, !tbaa !11
  %2676 = fcmp une double %2675, 1.000000e+00
  br i1 %2676, label %2677, label %2701

2677:                                             ; preds = %2667
  %2678 = load ptr, ptr %18, align 8, !tbaa !5
  %2679 = load i32, ptr %2678, align 4, !tbaa !9
  store i32 %2679, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %2680

2680:                                             ; preds = %2693, %2677
  %2681 = load i32, ptr %43, align 4, !tbaa !9
  %2682 = load i32, ptr %34, align 4, !tbaa !9
  %2683 = icmp sle i32 %2681, %2682
  br i1 %2683, label %2684, label %2696

2684:                                             ; preds = %2680
  %2685 = load ptr, ptr %17, align 8, !tbaa !5
  %2686 = load ptr, ptr %23, align 8, !tbaa !5
  %2687 = load i32, ptr %43, align 4, !tbaa !9
  %2688 = load i32, ptr %31, align 4, !tbaa !9
  %2689 = mul nsw i32 %2687, %2688
  %2690 = add nsw i32 %2689, 1
  %2691 = sext i32 %2690 to i64
  %2692 = getelementptr inbounds double, ptr %2686, i64 %2691
  call void @dscal_(ptr noundef %2685, ptr noundef %56, ptr noundef %2692, ptr noundef @c__1)
  br label %2693

2693:                                             ; preds = %2684
  %2694 = load i32, ptr %43, align 4, !tbaa !9
  %2695 = add nsw i32 %2694, 1
  store i32 %2695, ptr %43, align 4, !tbaa !9
  br label %2680, !llvm.loop !26

2696:                                             ; preds = %2680
  %2697 = load double, ptr %56, align 8, !tbaa !11
  %2698 = load ptr, ptr %25, align 8, !tbaa !5
  %2699 = load double, ptr %2698, align 8, !tbaa !11
  %2700 = fmul double %2699, %2697
  store double %2700, ptr %2698, align 8, !tbaa !11
  br label %2701

2701:                                             ; preds = %2696, %2667
  %2702 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2703 = load double, ptr %2702, align 16, !tbaa !11
  %2704 = load ptr, ptr %23, align 8, !tbaa !5
  %2705 = load i32, ptr %49, align 4, !tbaa !9
  %2706 = load i32, ptr %51, align 4, !tbaa !9
  %2707 = load i32, ptr %31, align 4, !tbaa !9
  %2708 = mul nsw i32 %2706, %2707
  %2709 = add nsw i32 %2705, %2708
  %2710 = sext i32 %2709 to i64
  %2711 = getelementptr inbounds double, ptr %2704, i64 %2710
  store double %2703, ptr %2711, align 8, !tbaa !11
  br label %3621

2712:                                             ; preds = %2519, %2515
  %2713 = load i32, ptr %51, align 4, !tbaa !9
  %2714 = load i32, ptr %52, align 4, !tbaa !9
  %2715 = icmp eq i32 %2713, %2714
  br i1 %2715, label %2716, label %2954

2716:                                             ; preds = %2712
  %2717 = load i32, ptr %49, align 4, !tbaa !9
  %2718 = load i32, ptr %50, align 4, !tbaa !9
  %2719 = icmp ne i32 %2717, %2718
  br i1 %2719, label %2720, label %2954

2720:                                             ; preds = %2716
  %2721 = load i32, ptr %49, align 4, !tbaa !9
  %2722 = sub nsw i32 %2721, 1
  store i32 %2722, ptr %34, align 4, !tbaa !9
  %2723 = load ptr, ptr %19, align 8, !tbaa !5
  %2724 = load i32, ptr %49, align 4, !tbaa !9
  %2725 = load i32, ptr %27, align 4, !tbaa !9
  %2726 = mul nsw i32 %2724, %2725
  %2727 = add nsw i32 %2726, 1
  %2728 = sext i32 %2727 to i64
  %2729 = getelementptr inbounds double, ptr %2723, i64 %2728
  %2730 = load ptr, ptr %23, align 8, !tbaa !5
  %2731 = load i32, ptr %51, align 4, !tbaa !9
  %2732 = load i32, ptr %31, align 4, !tbaa !9
  %2733 = mul nsw i32 %2731, %2732
  %2734 = add nsw i32 %2733, 1
  %2735 = sext i32 %2734 to i64
  %2736 = getelementptr inbounds double, ptr %2730, i64 %2735
  %2737 = call double @ddot_(ptr noundef %34, ptr noundef %2729, ptr noundef @c__1, ptr noundef %2736, ptr noundef @c__1)
  store double %2737, ptr %41, align 8, !tbaa !11
  %2738 = load ptr, ptr %18, align 8, !tbaa !5
  %2739 = load i32, ptr %2738, align 4, !tbaa !9
  %2740 = load i32, ptr %52, align 4, !tbaa !9
  %2741 = sub nsw i32 %2739, %2740
  store i32 %2741, ptr %34, align 4, !tbaa !9
  %2742 = load i32, ptr %52, align 4, !tbaa !9
  %2743 = add nsw i32 %2742, 1
  store i32 %2743, ptr %35, align 4, !tbaa !9
  %2744 = load i32, ptr %52, align 4, !tbaa !9
  %2745 = add nsw i32 %2744, 1
  store i32 %2745, ptr %36, align 4, !tbaa !9
  %2746 = load ptr, ptr %23, align 8, !tbaa !5
  %2747 = load i32, ptr %49, align 4, !tbaa !9
  %2748 = load i32, ptr %35, align 4, !tbaa !9
  %2749 = load ptr, ptr %18, align 8, !tbaa !5
  %2750 = load i32, ptr %2749, align 4, !tbaa !9
  %2751 = icmp sle i32 %2748, %2750
  br i1 %2751, label %2752, label %2754

2752:                                             ; preds = %2720
  %2753 = load i32, ptr %35, align 4, !tbaa !9
  br label %2757

2754:                                             ; preds = %2720
  %2755 = load ptr, ptr %18, align 8, !tbaa !5
  %2756 = load i32, ptr %2755, align 4, !tbaa !9
  br label %2757

2757:                                             ; preds = %2754, %2752
  %2758 = phi i32 [ %2753, %2752 ], [ %2756, %2754 ]
  %2759 = load i32, ptr %31, align 4, !tbaa !9
  %2760 = mul nsw i32 %2758, %2759
  %2761 = add nsw i32 %2747, %2760
  %2762 = sext i32 %2761 to i64
  %2763 = getelementptr inbounds double, ptr %2746, i64 %2762
  %2764 = load ptr, ptr %24, align 8, !tbaa !5
  %2765 = load ptr, ptr %21, align 8, !tbaa !5
  %2766 = load i32, ptr %51, align 4, !tbaa !9
  %2767 = load i32, ptr %36, align 4, !tbaa !9
  %2768 = load ptr, ptr %18, align 8, !tbaa !5
  %2769 = load i32, ptr %2768, align 4, !tbaa !9
  %2770 = icmp sle i32 %2767, %2769
  br i1 %2770, label %2771, label %2773

2771:                                             ; preds = %2757
  %2772 = load i32, ptr %36, align 4, !tbaa !9
  br label %2776

2773:                                             ; preds = %2757
  %2774 = load ptr, ptr %18, align 8, !tbaa !5
  %2775 = load i32, ptr %2774, align 4, !tbaa !9
  br label %2776

2776:                                             ; preds = %2773, %2771
  %2777 = phi i32 [ %2772, %2771 ], [ %2775, %2773 ]
  %2778 = load i32, ptr %29, align 4, !tbaa !9
  %2779 = mul nsw i32 %2777, %2778
  %2780 = add nsw i32 %2766, %2779
  %2781 = sext i32 %2780 to i64
  %2782 = getelementptr inbounds double, ptr %2765, i64 %2781
  %2783 = load ptr, ptr %22, align 8, !tbaa !5
  %2784 = call double @ddot_(ptr noundef %34, ptr noundef %2763, ptr noundef %2764, ptr noundef %2782, ptr noundef %2783)
  store double %2784, ptr %42, align 8, !tbaa !11
  %2785 = load ptr, ptr %23, align 8, !tbaa !5
  %2786 = load i32, ptr %49, align 4, !tbaa !9
  %2787 = load i32, ptr %51, align 4, !tbaa !9
  %2788 = load i32, ptr %31, align 4, !tbaa !9
  %2789 = mul nsw i32 %2787, %2788
  %2790 = add nsw i32 %2786, %2789
  %2791 = sext i32 %2790 to i64
  %2792 = getelementptr inbounds double, ptr %2785, i64 %2791
  %2793 = load double, ptr %2792, align 8, !tbaa !11
  %2794 = load double, ptr %41, align 8, !tbaa !11
  %2795 = load double, ptr %65, align 8, !tbaa !11
  %2796 = load double, ptr %42, align 8, !tbaa !11
  %2797 = call double @llvm.fmuladd.f64(double %2795, double %2796, double %2794)
  %2798 = fsub double %2793, %2797
  %2799 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %2798, ptr %2799, align 16, !tbaa !11
  %2800 = load i32, ptr %49, align 4, !tbaa !9
  %2801 = sub nsw i32 %2800, 1
  store i32 %2801, ptr %34, align 4, !tbaa !9
  %2802 = load ptr, ptr %19, align 8, !tbaa !5
  %2803 = load i32, ptr %50, align 4, !tbaa !9
  %2804 = load i32, ptr %27, align 4, !tbaa !9
  %2805 = mul nsw i32 %2803, %2804
  %2806 = add nsw i32 %2805, 1
  %2807 = sext i32 %2806 to i64
  %2808 = getelementptr inbounds double, ptr %2802, i64 %2807
  %2809 = load ptr, ptr %23, align 8, !tbaa !5
  %2810 = load i32, ptr %51, align 4, !tbaa !9
  %2811 = load i32, ptr %31, align 4, !tbaa !9
  %2812 = mul nsw i32 %2810, %2811
  %2813 = add nsw i32 %2812, 1
  %2814 = sext i32 %2813 to i64
  %2815 = getelementptr inbounds double, ptr %2809, i64 %2814
  %2816 = call double @ddot_(ptr noundef %34, ptr noundef %2808, ptr noundef @c__1, ptr noundef %2815, ptr noundef @c__1)
  store double %2816, ptr %41, align 8, !tbaa !11
  %2817 = load ptr, ptr %18, align 8, !tbaa !5
  %2818 = load i32, ptr %2817, align 4, !tbaa !9
  %2819 = load i32, ptr %52, align 4, !tbaa !9
  %2820 = sub nsw i32 %2818, %2819
  store i32 %2820, ptr %34, align 4, !tbaa !9
  %2821 = load i32, ptr %52, align 4, !tbaa !9
  %2822 = add nsw i32 %2821, 1
  store i32 %2822, ptr %35, align 4, !tbaa !9
  %2823 = load i32, ptr %52, align 4, !tbaa !9
  %2824 = add nsw i32 %2823, 1
  store i32 %2824, ptr %36, align 4, !tbaa !9
  %2825 = load ptr, ptr %23, align 8, !tbaa !5
  %2826 = load i32, ptr %50, align 4, !tbaa !9
  %2827 = load i32, ptr %35, align 4, !tbaa !9
  %2828 = load ptr, ptr %18, align 8, !tbaa !5
  %2829 = load i32, ptr %2828, align 4, !tbaa !9
  %2830 = icmp sle i32 %2827, %2829
  br i1 %2830, label %2831, label %2833

2831:                                             ; preds = %2776
  %2832 = load i32, ptr %35, align 4, !tbaa !9
  br label %2836

2833:                                             ; preds = %2776
  %2834 = load ptr, ptr %18, align 8, !tbaa !5
  %2835 = load i32, ptr %2834, align 4, !tbaa !9
  br label %2836

2836:                                             ; preds = %2833, %2831
  %2837 = phi i32 [ %2832, %2831 ], [ %2835, %2833 ]
  %2838 = load i32, ptr %31, align 4, !tbaa !9
  %2839 = mul nsw i32 %2837, %2838
  %2840 = add nsw i32 %2826, %2839
  %2841 = sext i32 %2840 to i64
  %2842 = getelementptr inbounds double, ptr %2825, i64 %2841
  %2843 = load ptr, ptr %24, align 8, !tbaa !5
  %2844 = load ptr, ptr %21, align 8, !tbaa !5
  %2845 = load i32, ptr %51, align 4, !tbaa !9
  %2846 = load i32, ptr %36, align 4, !tbaa !9
  %2847 = load ptr, ptr %18, align 8, !tbaa !5
  %2848 = load i32, ptr %2847, align 4, !tbaa !9
  %2849 = icmp sle i32 %2846, %2848
  br i1 %2849, label %2850, label %2852

2850:                                             ; preds = %2836
  %2851 = load i32, ptr %36, align 4, !tbaa !9
  br label %2855

2852:                                             ; preds = %2836
  %2853 = load ptr, ptr %18, align 8, !tbaa !5
  %2854 = load i32, ptr %2853, align 4, !tbaa !9
  br label %2855

2855:                                             ; preds = %2852, %2850
  %2856 = phi i32 [ %2851, %2850 ], [ %2854, %2852 ]
  %2857 = load i32, ptr %29, align 4, !tbaa !9
  %2858 = mul nsw i32 %2856, %2857
  %2859 = add nsw i32 %2845, %2858
  %2860 = sext i32 %2859 to i64
  %2861 = getelementptr inbounds double, ptr %2844, i64 %2860
  %2862 = load ptr, ptr %22, align 8, !tbaa !5
  %2863 = call double @ddot_(ptr noundef %34, ptr noundef %2842, ptr noundef %2843, ptr noundef %2861, ptr noundef %2862)
  store double %2863, ptr %42, align 8, !tbaa !11
  %2864 = load ptr, ptr %23, align 8, !tbaa !5
  %2865 = load i32, ptr %50, align 4, !tbaa !9
  %2866 = load i32, ptr %51, align 4, !tbaa !9
  %2867 = load i32, ptr %31, align 4, !tbaa !9
  %2868 = mul nsw i32 %2866, %2867
  %2869 = add nsw i32 %2865, %2868
  %2870 = sext i32 %2869 to i64
  %2871 = getelementptr inbounds double, ptr %2864, i64 %2870
  %2872 = load double, ptr %2871, align 8, !tbaa !11
  %2873 = load double, ptr %41, align 8, !tbaa !11
  %2874 = load double, ptr %65, align 8, !tbaa !11
  %2875 = load double, ptr %42, align 8, !tbaa !11
  %2876 = call double @llvm.fmuladd.f64(double %2874, double %2875, double %2873)
  %2877 = fsub double %2872, %2876
  %2878 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %2877, ptr %2878, align 8, !tbaa !11
  %2879 = load double, ptr %65, align 8, !tbaa !11
  %2880 = fneg double %2879
  %2881 = load ptr, ptr %21, align 8, !tbaa !5
  %2882 = load i32, ptr %51, align 4, !tbaa !9
  %2883 = load i32, ptr %51, align 4, !tbaa !9
  %2884 = load i32, ptr %29, align 4, !tbaa !9
  %2885 = mul nsw i32 %2883, %2884
  %2886 = add nsw i32 %2882, %2885
  %2887 = sext i32 %2886 to i64
  %2888 = getelementptr inbounds double, ptr %2881, i64 %2887
  %2889 = load double, ptr %2888, align 8, !tbaa !11
  %2890 = fmul double %2880, %2889
  store double %2890, ptr %37, align 8, !tbaa !11
  %2891 = load ptr, ptr %19, align 8, !tbaa !5
  %2892 = load i32, ptr %49, align 4, !tbaa !9
  %2893 = load i32, ptr %49, align 4, !tbaa !9
  %2894 = load i32, ptr %27, align 4, !tbaa !9
  %2895 = mul nsw i32 %2893, %2894
  %2896 = add nsw i32 %2892, %2895
  %2897 = sext i32 %2896 to i64
  %2898 = getelementptr inbounds double, ptr %2891, i64 %2897
  %2899 = load ptr, ptr %20, align 8, !tbaa !5
  %2900 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2901 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %40, ptr noundef @c_b26, ptr noundef %2898, ptr noundef %2899, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %2900, ptr noundef @c__2, ptr noundef %37, ptr noundef @c_b30, ptr noundef %2901, ptr noundef @c__2, ptr noundef %56, ptr noundef %53, ptr noundef %39)
  %2902 = load i32, ptr %39, align 4, !tbaa !9
  %2903 = icmp ne i32 %2902, 0
  br i1 %2903, label %2904, label %2906

2904:                                             ; preds = %2855
  %2905 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %2905, align 4, !tbaa !9
  br label %2906

2906:                                             ; preds = %2904, %2855
  %2907 = load double, ptr %56, align 8, !tbaa !11
  %2908 = fcmp une double %2907, 1.000000e+00
  br i1 %2908, label %2909, label %2933

2909:                                             ; preds = %2906
  %2910 = load ptr, ptr %18, align 8, !tbaa !5
  %2911 = load i32, ptr %2910, align 4, !tbaa !9
  store i32 %2911, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %2912

2912:                                             ; preds = %2925, %2909
  %2913 = load i32, ptr %43, align 4, !tbaa !9
  %2914 = load i32, ptr %34, align 4, !tbaa !9
  %2915 = icmp sle i32 %2913, %2914
  br i1 %2915, label %2916, label %2928

2916:                                             ; preds = %2912
  %2917 = load ptr, ptr %17, align 8, !tbaa !5
  %2918 = load ptr, ptr %23, align 8, !tbaa !5
  %2919 = load i32, ptr %43, align 4, !tbaa !9
  %2920 = load i32, ptr %31, align 4, !tbaa !9
  %2921 = mul nsw i32 %2919, %2920
  %2922 = add nsw i32 %2921, 1
  %2923 = sext i32 %2922 to i64
  %2924 = getelementptr inbounds double, ptr %2918, i64 %2923
  call void @dscal_(ptr noundef %2917, ptr noundef %56, ptr noundef %2924, ptr noundef @c__1)
  br label %2925

2925:                                             ; preds = %2916
  %2926 = load i32, ptr %43, align 4, !tbaa !9
  %2927 = add nsw i32 %2926, 1
  store i32 %2927, ptr %43, align 4, !tbaa !9
  br label %2912, !llvm.loop !27

2928:                                             ; preds = %2912
  %2929 = load double, ptr %56, align 8, !tbaa !11
  %2930 = load ptr, ptr %25, align 8, !tbaa !5
  %2931 = load double, ptr %2930, align 8, !tbaa !11
  %2932 = fmul double %2931, %2929
  store double %2932, ptr %2930, align 8, !tbaa !11
  br label %2933

2933:                                             ; preds = %2928, %2906
  %2934 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %2935 = load double, ptr %2934, align 16, !tbaa !11
  %2936 = load ptr, ptr %23, align 8, !tbaa !5
  %2937 = load i32, ptr %49, align 4, !tbaa !9
  %2938 = load i32, ptr %51, align 4, !tbaa !9
  %2939 = load i32, ptr %31, align 4, !tbaa !9
  %2940 = mul nsw i32 %2938, %2939
  %2941 = add nsw i32 %2937, %2940
  %2942 = sext i32 %2941 to i64
  %2943 = getelementptr inbounds double, ptr %2936, i64 %2942
  store double %2935, ptr %2943, align 8, !tbaa !11
  %2944 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %2945 = load double, ptr %2944, align 8, !tbaa !11
  %2946 = load ptr, ptr %23, align 8, !tbaa !5
  %2947 = load i32, ptr %50, align 4, !tbaa !9
  %2948 = load i32, ptr %51, align 4, !tbaa !9
  %2949 = load i32, ptr %31, align 4, !tbaa !9
  %2950 = mul nsw i32 %2948, %2949
  %2951 = add nsw i32 %2947, %2950
  %2952 = sext i32 %2951 to i64
  %2953 = getelementptr inbounds double, ptr %2946, i64 %2952
  store double %2945, ptr %2953, align 8, !tbaa !11
  br label %3620

2954:                                             ; preds = %2716, %2712
  %2955 = load i32, ptr %51, align 4, !tbaa !9
  %2956 = load i32, ptr %52, align 4, !tbaa !9
  %2957 = icmp ne i32 %2955, %2956
  br i1 %2957, label %2958, label %3200

2958:                                             ; preds = %2954
  %2959 = load i32, ptr %49, align 4, !tbaa !9
  %2960 = load i32, ptr %50, align 4, !tbaa !9
  %2961 = icmp eq i32 %2959, %2960
  br i1 %2961, label %2962, label %3200

2962:                                             ; preds = %2958
  %2963 = load i32, ptr %49, align 4, !tbaa !9
  %2964 = sub nsw i32 %2963, 1
  store i32 %2964, ptr %34, align 4, !tbaa !9
  %2965 = load ptr, ptr %19, align 8, !tbaa !5
  %2966 = load i32, ptr %49, align 4, !tbaa !9
  %2967 = load i32, ptr %27, align 4, !tbaa !9
  %2968 = mul nsw i32 %2966, %2967
  %2969 = add nsw i32 %2968, 1
  %2970 = sext i32 %2969 to i64
  %2971 = getelementptr inbounds double, ptr %2965, i64 %2970
  %2972 = load ptr, ptr %23, align 8, !tbaa !5
  %2973 = load i32, ptr %51, align 4, !tbaa !9
  %2974 = load i32, ptr %31, align 4, !tbaa !9
  %2975 = mul nsw i32 %2973, %2974
  %2976 = add nsw i32 %2975, 1
  %2977 = sext i32 %2976 to i64
  %2978 = getelementptr inbounds double, ptr %2972, i64 %2977
  %2979 = call double @ddot_(ptr noundef %34, ptr noundef %2971, ptr noundef @c__1, ptr noundef %2978, ptr noundef @c__1)
  store double %2979, ptr %41, align 8, !tbaa !11
  %2980 = load ptr, ptr %18, align 8, !tbaa !5
  %2981 = load i32, ptr %2980, align 4, !tbaa !9
  %2982 = load i32, ptr %52, align 4, !tbaa !9
  %2983 = sub nsw i32 %2981, %2982
  store i32 %2983, ptr %34, align 4, !tbaa !9
  %2984 = load i32, ptr %52, align 4, !tbaa !9
  %2985 = add nsw i32 %2984, 1
  store i32 %2985, ptr %35, align 4, !tbaa !9
  %2986 = load i32, ptr %52, align 4, !tbaa !9
  %2987 = add nsw i32 %2986, 1
  store i32 %2987, ptr %36, align 4, !tbaa !9
  %2988 = load ptr, ptr %23, align 8, !tbaa !5
  %2989 = load i32, ptr %49, align 4, !tbaa !9
  %2990 = load i32, ptr %35, align 4, !tbaa !9
  %2991 = load ptr, ptr %18, align 8, !tbaa !5
  %2992 = load i32, ptr %2991, align 4, !tbaa !9
  %2993 = icmp sle i32 %2990, %2992
  br i1 %2993, label %2994, label %2996

2994:                                             ; preds = %2962
  %2995 = load i32, ptr %35, align 4, !tbaa !9
  br label %2999

2996:                                             ; preds = %2962
  %2997 = load ptr, ptr %18, align 8, !tbaa !5
  %2998 = load i32, ptr %2997, align 4, !tbaa !9
  br label %2999

2999:                                             ; preds = %2996, %2994
  %3000 = phi i32 [ %2995, %2994 ], [ %2998, %2996 ]
  %3001 = load i32, ptr %31, align 4, !tbaa !9
  %3002 = mul nsw i32 %3000, %3001
  %3003 = add nsw i32 %2989, %3002
  %3004 = sext i32 %3003 to i64
  %3005 = getelementptr inbounds double, ptr %2988, i64 %3004
  %3006 = load ptr, ptr %24, align 8, !tbaa !5
  %3007 = load ptr, ptr %21, align 8, !tbaa !5
  %3008 = load i32, ptr %51, align 4, !tbaa !9
  %3009 = load i32, ptr %36, align 4, !tbaa !9
  %3010 = load ptr, ptr %18, align 8, !tbaa !5
  %3011 = load i32, ptr %3010, align 4, !tbaa !9
  %3012 = icmp sle i32 %3009, %3011
  br i1 %3012, label %3013, label %3015

3013:                                             ; preds = %2999
  %3014 = load i32, ptr %36, align 4, !tbaa !9
  br label %3018

3015:                                             ; preds = %2999
  %3016 = load ptr, ptr %18, align 8, !tbaa !5
  %3017 = load i32, ptr %3016, align 4, !tbaa !9
  br label %3018

3018:                                             ; preds = %3015, %3013
  %3019 = phi i32 [ %3014, %3013 ], [ %3017, %3015 ]
  %3020 = load i32, ptr %29, align 4, !tbaa !9
  %3021 = mul nsw i32 %3019, %3020
  %3022 = add nsw i32 %3008, %3021
  %3023 = sext i32 %3022 to i64
  %3024 = getelementptr inbounds double, ptr %3007, i64 %3023
  %3025 = load ptr, ptr %22, align 8, !tbaa !5
  %3026 = call double @ddot_(ptr noundef %34, ptr noundef %3005, ptr noundef %3006, ptr noundef %3024, ptr noundef %3025)
  store double %3026, ptr %42, align 8, !tbaa !11
  %3027 = load double, ptr %65, align 8, !tbaa !11
  %3028 = load ptr, ptr %23, align 8, !tbaa !5
  %3029 = load i32, ptr %49, align 4, !tbaa !9
  %3030 = load i32, ptr %51, align 4, !tbaa !9
  %3031 = load i32, ptr %31, align 4, !tbaa !9
  %3032 = mul nsw i32 %3030, %3031
  %3033 = add nsw i32 %3029, %3032
  %3034 = sext i32 %3033 to i64
  %3035 = getelementptr inbounds double, ptr %3028, i64 %3034
  %3036 = load double, ptr %3035, align 8, !tbaa !11
  %3037 = load double, ptr %41, align 8, !tbaa !11
  %3038 = load double, ptr %65, align 8, !tbaa !11
  %3039 = load double, ptr %42, align 8, !tbaa !11
  %3040 = call double @llvm.fmuladd.f64(double %3038, double %3039, double %3037)
  %3041 = fsub double %3036, %3040
  %3042 = fmul double %3027, %3041
  %3043 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %3042, ptr %3043, align 16, !tbaa !11
  %3044 = load i32, ptr %49, align 4, !tbaa !9
  %3045 = sub nsw i32 %3044, 1
  store i32 %3045, ptr %34, align 4, !tbaa !9
  %3046 = load ptr, ptr %19, align 8, !tbaa !5
  %3047 = load i32, ptr %49, align 4, !tbaa !9
  %3048 = load i32, ptr %27, align 4, !tbaa !9
  %3049 = mul nsw i32 %3047, %3048
  %3050 = add nsw i32 %3049, 1
  %3051 = sext i32 %3050 to i64
  %3052 = getelementptr inbounds double, ptr %3046, i64 %3051
  %3053 = load ptr, ptr %23, align 8, !tbaa !5
  %3054 = load i32, ptr %52, align 4, !tbaa !9
  %3055 = load i32, ptr %31, align 4, !tbaa !9
  %3056 = mul nsw i32 %3054, %3055
  %3057 = add nsw i32 %3056, 1
  %3058 = sext i32 %3057 to i64
  %3059 = getelementptr inbounds double, ptr %3053, i64 %3058
  %3060 = call double @ddot_(ptr noundef %34, ptr noundef %3052, ptr noundef @c__1, ptr noundef %3059, ptr noundef @c__1)
  store double %3060, ptr %41, align 8, !tbaa !11
  %3061 = load ptr, ptr %18, align 8, !tbaa !5
  %3062 = load i32, ptr %3061, align 4, !tbaa !9
  %3063 = load i32, ptr %52, align 4, !tbaa !9
  %3064 = sub nsw i32 %3062, %3063
  store i32 %3064, ptr %34, align 4, !tbaa !9
  %3065 = load i32, ptr %52, align 4, !tbaa !9
  %3066 = add nsw i32 %3065, 1
  store i32 %3066, ptr %35, align 4, !tbaa !9
  %3067 = load i32, ptr %52, align 4, !tbaa !9
  %3068 = add nsw i32 %3067, 1
  store i32 %3068, ptr %36, align 4, !tbaa !9
  %3069 = load ptr, ptr %23, align 8, !tbaa !5
  %3070 = load i32, ptr %49, align 4, !tbaa !9
  %3071 = load i32, ptr %35, align 4, !tbaa !9
  %3072 = load ptr, ptr %18, align 8, !tbaa !5
  %3073 = load i32, ptr %3072, align 4, !tbaa !9
  %3074 = icmp sle i32 %3071, %3073
  br i1 %3074, label %3075, label %3077

3075:                                             ; preds = %3018
  %3076 = load i32, ptr %35, align 4, !tbaa !9
  br label %3080

3077:                                             ; preds = %3018
  %3078 = load ptr, ptr %18, align 8, !tbaa !5
  %3079 = load i32, ptr %3078, align 4, !tbaa !9
  br label %3080

3080:                                             ; preds = %3077, %3075
  %3081 = phi i32 [ %3076, %3075 ], [ %3079, %3077 ]
  %3082 = load i32, ptr %31, align 4, !tbaa !9
  %3083 = mul nsw i32 %3081, %3082
  %3084 = add nsw i32 %3070, %3083
  %3085 = sext i32 %3084 to i64
  %3086 = getelementptr inbounds double, ptr %3069, i64 %3085
  %3087 = load ptr, ptr %24, align 8, !tbaa !5
  %3088 = load ptr, ptr %21, align 8, !tbaa !5
  %3089 = load i32, ptr %52, align 4, !tbaa !9
  %3090 = load i32, ptr %36, align 4, !tbaa !9
  %3091 = load ptr, ptr %18, align 8, !tbaa !5
  %3092 = load i32, ptr %3091, align 4, !tbaa !9
  %3093 = icmp sle i32 %3090, %3092
  br i1 %3093, label %3094, label %3096

3094:                                             ; preds = %3080
  %3095 = load i32, ptr %36, align 4, !tbaa !9
  br label %3099

3096:                                             ; preds = %3080
  %3097 = load ptr, ptr %18, align 8, !tbaa !5
  %3098 = load i32, ptr %3097, align 4, !tbaa !9
  br label %3099

3099:                                             ; preds = %3096, %3094
  %3100 = phi i32 [ %3095, %3094 ], [ %3098, %3096 ]
  %3101 = load i32, ptr %29, align 4, !tbaa !9
  %3102 = mul nsw i32 %3100, %3101
  %3103 = add nsw i32 %3089, %3102
  %3104 = sext i32 %3103 to i64
  %3105 = getelementptr inbounds double, ptr %3088, i64 %3104
  %3106 = load ptr, ptr %22, align 8, !tbaa !5
  %3107 = call double @ddot_(ptr noundef %34, ptr noundef %3086, ptr noundef %3087, ptr noundef %3105, ptr noundef %3106)
  store double %3107, ptr %42, align 8, !tbaa !11
  %3108 = load double, ptr %65, align 8, !tbaa !11
  %3109 = load ptr, ptr %23, align 8, !tbaa !5
  %3110 = load i32, ptr %49, align 4, !tbaa !9
  %3111 = load i32, ptr %52, align 4, !tbaa !9
  %3112 = load i32, ptr %31, align 4, !tbaa !9
  %3113 = mul nsw i32 %3111, %3112
  %3114 = add nsw i32 %3110, %3113
  %3115 = sext i32 %3114 to i64
  %3116 = getelementptr inbounds double, ptr %3109, i64 %3115
  %3117 = load double, ptr %3116, align 8, !tbaa !11
  %3118 = load double, ptr %41, align 8, !tbaa !11
  %3119 = load double, ptr %65, align 8, !tbaa !11
  %3120 = load double, ptr %42, align 8, !tbaa !11
  %3121 = call double @llvm.fmuladd.f64(double %3119, double %3120, double %3118)
  %3122 = fsub double %3117, %3121
  %3123 = fmul double %3108, %3122
  %3124 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %3123, ptr %3124, align 8, !tbaa !11
  %3125 = load double, ptr %65, align 8, !tbaa !11
  %3126 = fneg double %3125
  %3127 = load ptr, ptr %19, align 8, !tbaa !5
  %3128 = load i32, ptr %49, align 4, !tbaa !9
  %3129 = load i32, ptr %49, align 4, !tbaa !9
  %3130 = load i32, ptr %27, align 4, !tbaa !9
  %3131 = mul nsw i32 %3129, %3130
  %3132 = add nsw i32 %3128, %3131
  %3133 = sext i32 %3132 to i64
  %3134 = getelementptr inbounds double, ptr %3127, i64 %3133
  %3135 = load double, ptr %3134, align 8, !tbaa !11
  %3136 = fmul double %3126, %3135
  store double %3136, ptr %37, align 8, !tbaa !11
  %3137 = load ptr, ptr %21, align 8, !tbaa !5
  %3138 = load i32, ptr %51, align 4, !tbaa !9
  %3139 = load i32, ptr %51, align 4, !tbaa !9
  %3140 = load i32, ptr %29, align 4, !tbaa !9
  %3141 = mul nsw i32 %3139, %3140
  %3142 = add nsw i32 %3138, %3141
  %3143 = sext i32 %3142 to i64
  %3144 = getelementptr inbounds double, ptr %3137, i64 %3143
  %3145 = load ptr, ptr %22, align 8, !tbaa !5
  %3146 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %3147 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %40, ptr noundef @c_b26, ptr noundef %3144, ptr noundef %3145, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %3146, ptr noundef @c__2, ptr noundef %37, ptr noundef @c_b30, ptr noundef %3147, ptr noundef @c__2, ptr noundef %56, ptr noundef %53, ptr noundef %39)
  %3148 = load i32, ptr %39, align 4, !tbaa !9
  %3149 = icmp ne i32 %3148, 0
  br i1 %3149, label %3150, label %3152

3150:                                             ; preds = %3099
  %3151 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %3151, align 4, !tbaa !9
  br label %3152

3152:                                             ; preds = %3150, %3099
  %3153 = load double, ptr %56, align 8, !tbaa !11
  %3154 = fcmp une double %3153, 1.000000e+00
  br i1 %3154, label %3155, label %3179

3155:                                             ; preds = %3152
  %3156 = load ptr, ptr %18, align 8, !tbaa !5
  %3157 = load i32, ptr %3156, align 4, !tbaa !9
  store i32 %3157, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %3158

3158:                                             ; preds = %3171, %3155
  %3159 = load i32, ptr %43, align 4, !tbaa !9
  %3160 = load i32, ptr %34, align 4, !tbaa !9
  %3161 = icmp sle i32 %3159, %3160
  br i1 %3161, label %3162, label %3174

3162:                                             ; preds = %3158
  %3163 = load ptr, ptr %17, align 8, !tbaa !5
  %3164 = load ptr, ptr %23, align 8, !tbaa !5
  %3165 = load i32, ptr %43, align 4, !tbaa !9
  %3166 = load i32, ptr %31, align 4, !tbaa !9
  %3167 = mul nsw i32 %3165, %3166
  %3168 = add nsw i32 %3167, 1
  %3169 = sext i32 %3168 to i64
  %3170 = getelementptr inbounds double, ptr %3164, i64 %3169
  call void @dscal_(ptr noundef %3163, ptr noundef %56, ptr noundef %3170, ptr noundef @c__1)
  br label %3171

3171:                                             ; preds = %3162
  %3172 = load i32, ptr %43, align 4, !tbaa !9
  %3173 = add nsw i32 %3172, 1
  store i32 %3173, ptr %43, align 4, !tbaa !9
  br label %3158, !llvm.loop !28

3174:                                             ; preds = %3158
  %3175 = load double, ptr %56, align 8, !tbaa !11
  %3176 = load ptr, ptr %25, align 8, !tbaa !5
  %3177 = load double, ptr %3176, align 8, !tbaa !11
  %3178 = fmul double %3177, %3175
  store double %3178, ptr %3176, align 8, !tbaa !11
  br label %3179

3179:                                             ; preds = %3174, %3152
  %3180 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %3181 = load double, ptr %3180, align 16, !tbaa !11
  %3182 = load ptr, ptr %23, align 8, !tbaa !5
  %3183 = load i32, ptr %49, align 4, !tbaa !9
  %3184 = load i32, ptr %51, align 4, !tbaa !9
  %3185 = load i32, ptr %31, align 4, !tbaa !9
  %3186 = mul nsw i32 %3184, %3185
  %3187 = add nsw i32 %3183, %3186
  %3188 = sext i32 %3187 to i64
  %3189 = getelementptr inbounds double, ptr %3182, i64 %3188
  store double %3181, ptr %3189, align 8, !tbaa !11
  %3190 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %3191 = load double, ptr %3190, align 8, !tbaa !11
  %3192 = load ptr, ptr %23, align 8, !tbaa !5
  %3193 = load i32, ptr %49, align 4, !tbaa !9
  %3194 = load i32, ptr %52, align 4, !tbaa !9
  %3195 = load i32, ptr %31, align 4, !tbaa !9
  %3196 = mul nsw i32 %3194, %3195
  %3197 = add nsw i32 %3193, %3196
  %3198 = sext i32 %3197 to i64
  %3199 = getelementptr inbounds double, ptr %3192, i64 %3198
  store double %3191, ptr %3199, align 8, !tbaa !11
  br label %3619

3200:                                             ; preds = %2958, %2954
  %3201 = load i32, ptr %51, align 4, !tbaa !9
  %3202 = load i32, ptr %52, align 4, !tbaa !9
  %3203 = icmp ne i32 %3201, %3202
  br i1 %3203, label %3204, label %3618

3204:                                             ; preds = %3200
  %3205 = load i32, ptr %49, align 4, !tbaa !9
  %3206 = load i32, ptr %50, align 4, !tbaa !9
  %3207 = icmp ne i32 %3205, %3206
  br i1 %3207, label %3208, label %3618

3208:                                             ; preds = %3204
  %3209 = load i32, ptr %49, align 4, !tbaa !9
  %3210 = sub nsw i32 %3209, 1
  store i32 %3210, ptr %34, align 4, !tbaa !9
  %3211 = load ptr, ptr %19, align 8, !tbaa !5
  %3212 = load i32, ptr %49, align 4, !tbaa !9
  %3213 = load i32, ptr %27, align 4, !tbaa !9
  %3214 = mul nsw i32 %3212, %3213
  %3215 = add nsw i32 %3214, 1
  %3216 = sext i32 %3215 to i64
  %3217 = getelementptr inbounds double, ptr %3211, i64 %3216
  %3218 = load ptr, ptr %23, align 8, !tbaa !5
  %3219 = load i32, ptr %51, align 4, !tbaa !9
  %3220 = load i32, ptr %31, align 4, !tbaa !9
  %3221 = mul nsw i32 %3219, %3220
  %3222 = add nsw i32 %3221, 1
  %3223 = sext i32 %3222 to i64
  %3224 = getelementptr inbounds double, ptr %3218, i64 %3223
  %3225 = call double @ddot_(ptr noundef %34, ptr noundef %3217, ptr noundef @c__1, ptr noundef %3224, ptr noundef @c__1)
  store double %3225, ptr %41, align 8, !tbaa !11
  %3226 = load ptr, ptr %18, align 8, !tbaa !5
  %3227 = load i32, ptr %3226, align 4, !tbaa !9
  %3228 = load i32, ptr %52, align 4, !tbaa !9
  %3229 = sub nsw i32 %3227, %3228
  store i32 %3229, ptr %34, align 4, !tbaa !9
  %3230 = load i32, ptr %52, align 4, !tbaa !9
  %3231 = add nsw i32 %3230, 1
  store i32 %3231, ptr %35, align 4, !tbaa !9
  %3232 = load i32, ptr %52, align 4, !tbaa !9
  %3233 = add nsw i32 %3232, 1
  store i32 %3233, ptr %36, align 4, !tbaa !9
  %3234 = load ptr, ptr %23, align 8, !tbaa !5
  %3235 = load i32, ptr %49, align 4, !tbaa !9
  %3236 = load i32, ptr %35, align 4, !tbaa !9
  %3237 = load ptr, ptr %18, align 8, !tbaa !5
  %3238 = load i32, ptr %3237, align 4, !tbaa !9
  %3239 = icmp sle i32 %3236, %3238
  br i1 %3239, label %3240, label %3242

3240:                                             ; preds = %3208
  %3241 = load i32, ptr %35, align 4, !tbaa !9
  br label %3245

3242:                                             ; preds = %3208
  %3243 = load ptr, ptr %18, align 8, !tbaa !5
  %3244 = load i32, ptr %3243, align 4, !tbaa !9
  br label %3245

3245:                                             ; preds = %3242, %3240
  %3246 = phi i32 [ %3241, %3240 ], [ %3244, %3242 ]
  %3247 = load i32, ptr %31, align 4, !tbaa !9
  %3248 = mul nsw i32 %3246, %3247
  %3249 = add nsw i32 %3235, %3248
  %3250 = sext i32 %3249 to i64
  %3251 = getelementptr inbounds double, ptr %3234, i64 %3250
  %3252 = load ptr, ptr %24, align 8, !tbaa !5
  %3253 = load ptr, ptr %21, align 8, !tbaa !5
  %3254 = load i32, ptr %51, align 4, !tbaa !9
  %3255 = load i32, ptr %36, align 4, !tbaa !9
  %3256 = load ptr, ptr %18, align 8, !tbaa !5
  %3257 = load i32, ptr %3256, align 4, !tbaa !9
  %3258 = icmp sle i32 %3255, %3257
  br i1 %3258, label %3259, label %3261

3259:                                             ; preds = %3245
  %3260 = load i32, ptr %36, align 4, !tbaa !9
  br label %3264

3261:                                             ; preds = %3245
  %3262 = load ptr, ptr %18, align 8, !tbaa !5
  %3263 = load i32, ptr %3262, align 4, !tbaa !9
  br label %3264

3264:                                             ; preds = %3261, %3259
  %3265 = phi i32 [ %3260, %3259 ], [ %3263, %3261 ]
  %3266 = load i32, ptr %29, align 4, !tbaa !9
  %3267 = mul nsw i32 %3265, %3266
  %3268 = add nsw i32 %3254, %3267
  %3269 = sext i32 %3268 to i64
  %3270 = getelementptr inbounds double, ptr %3253, i64 %3269
  %3271 = load ptr, ptr %22, align 8, !tbaa !5
  %3272 = call double @ddot_(ptr noundef %34, ptr noundef %3251, ptr noundef %3252, ptr noundef %3270, ptr noundef %3271)
  store double %3272, ptr %42, align 8, !tbaa !11
  %3273 = load ptr, ptr %23, align 8, !tbaa !5
  %3274 = load i32, ptr %49, align 4, !tbaa !9
  %3275 = load i32, ptr %51, align 4, !tbaa !9
  %3276 = load i32, ptr %31, align 4, !tbaa !9
  %3277 = mul nsw i32 %3275, %3276
  %3278 = add nsw i32 %3274, %3277
  %3279 = sext i32 %3278 to i64
  %3280 = getelementptr inbounds double, ptr %3273, i64 %3279
  %3281 = load double, ptr %3280, align 8, !tbaa !11
  %3282 = load double, ptr %41, align 8, !tbaa !11
  %3283 = load double, ptr %65, align 8, !tbaa !11
  %3284 = load double, ptr %42, align 8, !tbaa !11
  %3285 = call double @llvm.fmuladd.f64(double %3283, double %3284, double %3282)
  %3286 = fsub double %3281, %3285
  %3287 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %3286, ptr %3287, align 16, !tbaa !11
  %3288 = load i32, ptr %49, align 4, !tbaa !9
  %3289 = sub nsw i32 %3288, 1
  store i32 %3289, ptr %34, align 4, !tbaa !9
  %3290 = load ptr, ptr %19, align 8, !tbaa !5
  %3291 = load i32, ptr %49, align 4, !tbaa !9
  %3292 = load i32, ptr %27, align 4, !tbaa !9
  %3293 = mul nsw i32 %3291, %3292
  %3294 = add nsw i32 %3293, 1
  %3295 = sext i32 %3294 to i64
  %3296 = getelementptr inbounds double, ptr %3290, i64 %3295
  %3297 = load ptr, ptr %23, align 8, !tbaa !5
  %3298 = load i32, ptr %52, align 4, !tbaa !9
  %3299 = load i32, ptr %31, align 4, !tbaa !9
  %3300 = mul nsw i32 %3298, %3299
  %3301 = add nsw i32 %3300, 1
  %3302 = sext i32 %3301 to i64
  %3303 = getelementptr inbounds double, ptr %3297, i64 %3302
  %3304 = call double @ddot_(ptr noundef %34, ptr noundef %3296, ptr noundef @c__1, ptr noundef %3303, ptr noundef @c__1)
  store double %3304, ptr %41, align 8, !tbaa !11
  %3305 = load ptr, ptr %18, align 8, !tbaa !5
  %3306 = load i32, ptr %3305, align 4, !tbaa !9
  %3307 = load i32, ptr %52, align 4, !tbaa !9
  %3308 = sub nsw i32 %3306, %3307
  store i32 %3308, ptr %34, align 4, !tbaa !9
  %3309 = load i32, ptr %52, align 4, !tbaa !9
  %3310 = add nsw i32 %3309, 1
  store i32 %3310, ptr %35, align 4, !tbaa !9
  %3311 = load i32, ptr %52, align 4, !tbaa !9
  %3312 = add nsw i32 %3311, 1
  store i32 %3312, ptr %36, align 4, !tbaa !9
  %3313 = load ptr, ptr %23, align 8, !tbaa !5
  %3314 = load i32, ptr %49, align 4, !tbaa !9
  %3315 = load i32, ptr %35, align 4, !tbaa !9
  %3316 = load ptr, ptr %18, align 8, !tbaa !5
  %3317 = load i32, ptr %3316, align 4, !tbaa !9
  %3318 = icmp sle i32 %3315, %3317
  br i1 %3318, label %3319, label %3321

3319:                                             ; preds = %3264
  %3320 = load i32, ptr %35, align 4, !tbaa !9
  br label %3324

3321:                                             ; preds = %3264
  %3322 = load ptr, ptr %18, align 8, !tbaa !5
  %3323 = load i32, ptr %3322, align 4, !tbaa !9
  br label %3324

3324:                                             ; preds = %3321, %3319
  %3325 = phi i32 [ %3320, %3319 ], [ %3323, %3321 ]
  %3326 = load i32, ptr %31, align 4, !tbaa !9
  %3327 = mul nsw i32 %3325, %3326
  %3328 = add nsw i32 %3314, %3327
  %3329 = sext i32 %3328 to i64
  %3330 = getelementptr inbounds double, ptr %3313, i64 %3329
  %3331 = load ptr, ptr %24, align 8, !tbaa !5
  %3332 = load ptr, ptr %21, align 8, !tbaa !5
  %3333 = load i32, ptr %52, align 4, !tbaa !9
  %3334 = load i32, ptr %36, align 4, !tbaa !9
  %3335 = load ptr, ptr %18, align 8, !tbaa !5
  %3336 = load i32, ptr %3335, align 4, !tbaa !9
  %3337 = icmp sle i32 %3334, %3336
  br i1 %3337, label %3338, label %3340

3338:                                             ; preds = %3324
  %3339 = load i32, ptr %36, align 4, !tbaa !9
  br label %3343

3340:                                             ; preds = %3324
  %3341 = load ptr, ptr %18, align 8, !tbaa !5
  %3342 = load i32, ptr %3341, align 4, !tbaa !9
  br label %3343

3343:                                             ; preds = %3340, %3338
  %3344 = phi i32 [ %3339, %3338 ], [ %3342, %3340 ]
  %3345 = load i32, ptr %29, align 4, !tbaa !9
  %3346 = mul nsw i32 %3344, %3345
  %3347 = add nsw i32 %3333, %3346
  %3348 = sext i32 %3347 to i64
  %3349 = getelementptr inbounds double, ptr %3332, i64 %3348
  %3350 = load ptr, ptr %22, align 8, !tbaa !5
  %3351 = call double @ddot_(ptr noundef %34, ptr noundef %3330, ptr noundef %3331, ptr noundef %3349, ptr noundef %3350)
  store double %3351, ptr %42, align 8, !tbaa !11
  %3352 = load ptr, ptr %23, align 8, !tbaa !5
  %3353 = load i32, ptr %49, align 4, !tbaa !9
  %3354 = load i32, ptr %52, align 4, !tbaa !9
  %3355 = load i32, ptr %31, align 4, !tbaa !9
  %3356 = mul nsw i32 %3354, %3355
  %3357 = add nsw i32 %3353, %3356
  %3358 = sext i32 %3357 to i64
  %3359 = getelementptr inbounds double, ptr %3352, i64 %3358
  %3360 = load double, ptr %3359, align 8, !tbaa !11
  %3361 = load double, ptr %41, align 8, !tbaa !11
  %3362 = load double, ptr %65, align 8, !tbaa !11
  %3363 = load double, ptr %42, align 8, !tbaa !11
  %3364 = call double @llvm.fmuladd.f64(double %3362, double %3363, double %3361)
  %3365 = fsub double %3360, %3364
  %3366 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  store double %3365, ptr %3366, align 16, !tbaa !11
  %3367 = load i32, ptr %49, align 4, !tbaa !9
  %3368 = sub nsw i32 %3367, 1
  store i32 %3368, ptr %34, align 4, !tbaa !9
  %3369 = load ptr, ptr %19, align 8, !tbaa !5
  %3370 = load i32, ptr %50, align 4, !tbaa !9
  %3371 = load i32, ptr %27, align 4, !tbaa !9
  %3372 = mul nsw i32 %3370, %3371
  %3373 = add nsw i32 %3372, 1
  %3374 = sext i32 %3373 to i64
  %3375 = getelementptr inbounds double, ptr %3369, i64 %3374
  %3376 = load ptr, ptr %23, align 8, !tbaa !5
  %3377 = load i32, ptr %51, align 4, !tbaa !9
  %3378 = load i32, ptr %31, align 4, !tbaa !9
  %3379 = mul nsw i32 %3377, %3378
  %3380 = add nsw i32 %3379, 1
  %3381 = sext i32 %3380 to i64
  %3382 = getelementptr inbounds double, ptr %3376, i64 %3381
  %3383 = call double @ddot_(ptr noundef %34, ptr noundef %3375, ptr noundef @c__1, ptr noundef %3382, ptr noundef @c__1)
  store double %3383, ptr %41, align 8, !tbaa !11
  %3384 = load ptr, ptr %18, align 8, !tbaa !5
  %3385 = load i32, ptr %3384, align 4, !tbaa !9
  %3386 = load i32, ptr %52, align 4, !tbaa !9
  %3387 = sub nsw i32 %3385, %3386
  store i32 %3387, ptr %34, align 4, !tbaa !9
  %3388 = load i32, ptr %52, align 4, !tbaa !9
  %3389 = add nsw i32 %3388, 1
  store i32 %3389, ptr %35, align 4, !tbaa !9
  %3390 = load i32, ptr %52, align 4, !tbaa !9
  %3391 = add nsw i32 %3390, 1
  store i32 %3391, ptr %36, align 4, !tbaa !9
  %3392 = load ptr, ptr %23, align 8, !tbaa !5
  %3393 = load i32, ptr %50, align 4, !tbaa !9
  %3394 = load i32, ptr %35, align 4, !tbaa !9
  %3395 = load ptr, ptr %18, align 8, !tbaa !5
  %3396 = load i32, ptr %3395, align 4, !tbaa !9
  %3397 = icmp sle i32 %3394, %3396
  br i1 %3397, label %3398, label %3400

3398:                                             ; preds = %3343
  %3399 = load i32, ptr %35, align 4, !tbaa !9
  br label %3403

3400:                                             ; preds = %3343
  %3401 = load ptr, ptr %18, align 8, !tbaa !5
  %3402 = load i32, ptr %3401, align 4, !tbaa !9
  br label %3403

3403:                                             ; preds = %3400, %3398
  %3404 = phi i32 [ %3399, %3398 ], [ %3402, %3400 ]
  %3405 = load i32, ptr %31, align 4, !tbaa !9
  %3406 = mul nsw i32 %3404, %3405
  %3407 = add nsw i32 %3393, %3406
  %3408 = sext i32 %3407 to i64
  %3409 = getelementptr inbounds double, ptr %3392, i64 %3408
  %3410 = load ptr, ptr %24, align 8, !tbaa !5
  %3411 = load ptr, ptr %21, align 8, !tbaa !5
  %3412 = load i32, ptr %51, align 4, !tbaa !9
  %3413 = load i32, ptr %36, align 4, !tbaa !9
  %3414 = load ptr, ptr %18, align 8, !tbaa !5
  %3415 = load i32, ptr %3414, align 4, !tbaa !9
  %3416 = icmp sle i32 %3413, %3415
  br i1 %3416, label %3417, label %3419

3417:                                             ; preds = %3403
  %3418 = load i32, ptr %36, align 4, !tbaa !9
  br label %3422

3419:                                             ; preds = %3403
  %3420 = load ptr, ptr %18, align 8, !tbaa !5
  %3421 = load i32, ptr %3420, align 4, !tbaa !9
  br label %3422

3422:                                             ; preds = %3419, %3417
  %3423 = phi i32 [ %3418, %3417 ], [ %3421, %3419 ]
  %3424 = load i32, ptr %29, align 4, !tbaa !9
  %3425 = mul nsw i32 %3423, %3424
  %3426 = add nsw i32 %3412, %3425
  %3427 = sext i32 %3426 to i64
  %3428 = getelementptr inbounds double, ptr %3411, i64 %3427
  %3429 = load ptr, ptr %22, align 8, !tbaa !5
  %3430 = call double @ddot_(ptr noundef %34, ptr noundef %3409, ptr noundef %3410, ptr noundef %3428, ptr noundef %3429)
  store double %3430, ptr %42, align 8, !tbaa !11
  %3431 = load ptr, ptr %23, align 8, !tbaa !5
  %3432 = load i32, ptr %50, align 4, !tbaa !9
  %3433 = load i32, ptr %51, align 4, !tbaa !9
  %3434 = load i32, ptr %31, align 4, !tbaa !9
  %3435 = mul nsw i32 %3433, %3434
  %3436 = add nsw i32 %3432, %3435
  %3437 = sext i32 %3436 to i64
  %3438 = getelementptr inbounds double, ptr %3431, i64 %3437
  %3439 = load double, ptr %3438, align 8, !tbaa !11
  %3440 = load double, ptr %41, align 8, !tbaa !11
  %3441 = load double, ptr %65, align 8, !tbaa !11
  %3442 = load double, ptr %42, align 8, !tbaa !11
  %3443 = call double @llvm.fmuladd.f64(double %3441, double %3442, double %3440)
  %3444 = fsub double %3439, %3443
  %3445 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %3444, ptr %3445, align 8, !tbaa !11
  %3446 = load i32, ptr %49, align 4, !tbaa !9
  %3447 = sub nsw i32 %3446, 1
  store i32 %3447, ptr %34, align 4, !tbaa !9
  %3448 = load ptr, ptr %19, align 8, !tbaa !5
  %3449 = load i32, ptr %50, align 4, !tbaa !9
  %3450 = load i32, ptr %27, align 4, !tbaa !9
  %3451 = mul nsw i32 %3449, %3450
  %3452 = add nsw i32 %3451, 1
  %3453 = sext i32 %3452 to i64
  %3454 = getelementptr inbounds double, ptr %3448, i64 %3453
  %3455 = load ptr, ptr %23, align 8, !tbaa !5
  %3456 = load i32, ptr %52, align 4, !tbaa !9
  %3457 = load i32, ptr %31, align 4, !tbaa !9
  %3458 = mul nsw i32 %3456, %3457
  %3459 = add nsw i32 %3458, 1
  %3460 = sext i32 %3459 to i64
  %3461 = getelementptr inbounds double, ptr %3455, i64 %3460
  %3462 = call double @ddot_(ptr noundef %34, ptr noundef %3454, ptr noundef @c__1, ptr noundef %3461, ptr noundef @c__1)
  store double %3462, ptr %41, align 8, !tbaa !11
  %3463 = load ptr, ptr %18, align 8, !tbaa !5
  %3464 = load i32, ptr %3463, align 4, !tbaa !9
  %3465 = load i32, ptr %52, align 4, !tbaa !9
  %3466 = sub nsw i32 %3464, %3465
  store i32 %3466, ptr %34, align 4, !tbaa !9
  %3467 = load i32, ptr %52, align 4, !tbaa !9
  %3468 = add nsw i32 %3467, 1
  store i32 %3468, ptr %35, align 4, !tbaa !9
  %3469 = load i32, ptr %52, align 4, !tbaa !9
  %3470 = add nsw i32 %3469, 1
  store i32 %3470, ptr %36, align 4, !tbaa !9
  %3471 = load ptr, ptr %23, align 8, !tbaa !5
  %3472 = load i32, ptr %50, align 4, !tbaa !9
  %3473 = load i32, ptr %35, align 4, !tbaa !9
  %3474 = load ptr, ptr %18, align 8, !tbaa !5
  %3475 = load i32, ptr %3474, align 4, !tbaa !9
  %3476 = icmp sle i32 %3473, %3475
  br i1 %3476, label %3477, label %3479

3477:                                             ; preds = %3422
  %3478 = load i32, ptr %35, align 4, !tbaa !9
  br label %3482

3479:                                             ; preds = %3422
  %3480 = load ptr, ptr %18, align 8, !tbaa !5
  %3481 = load i32, ptr %3480, align 4, !tbaa !9
  br label %3482

3482:                                             ; preds = %3479, %3477
  %3483 = phi i32 [ %3478, %3477 ], [ %3481, %3479 ]
  %3484 = load i32, ptr %31, align 4, !tbaa !9
  %3485 = mul nsw i32 %3483, %3484
  %3486 = add nsw i32 %3472, %3485
  %3487 = sext i32 %3486 to i64
  %3488 = getelementptr inbounds double, ptr %3471, i64 %3487
  %3489 = load ptr, ptr %24, align 8, !tbaa !5
  %3490 = load ptr, ptr %21, align 8, !tbaa !5
  %3491 = load i32, ptr %52, align 4, !tbaa !9
  %3492 = load i32, ptr %36, align 4, !tbaa !9
  %3493 = load ptr, ptr %18, align 8, !tbaa !5
  %3494 = load i32, ptr %3493, align 4, !tbaa !9
  %3495 = icmp sle i32 %3492, %3494
  br i1 %3495, label %3496, label %3498

3496:                                             ; preds = %3482
  %3497 = load i32, ptr %36, align 4, !tbaa !9
  br label %3501

3498:                                             ; preds = %3482
  %3499 = load ptr, ptr %18, align 8, !tbaa !5
  %3500 = load i32, ptr %3499, align 4, !tbaa !9
  br label %3501

3501:                                             ; preds = %3498, %3496
  %3502 = phi i32 [ %3497, %3496 ], [ %3500, %3498 ]
  %3503 = load i32, ptr %29, align 4, !tbaa !9
  %3504 = mul nsw i32 %3502, %3503
  %3505 = add nsw i32 %3491, %3504
  %3506 = sext i32 %3505 to i64
  %3507 = getelementptr inbounds double, ptr %3490, i64 %3506
  %3508 = load ptr, ptr %22, align 8, !tbaa !5
  %3509 = call double @ddot_(ptr noundef %34, ptr noundef %3488, ptr noundef %3489, ptr noundef %3507, ptr noundef %3508)
  store double %3509, ptr %42, align 8, !tbaa !11
  %3510 = load ptr, ptr %23, align 8, !tbaa !5
  %3511 = load i32, ptr %50, align 4, !tbaa !9
  %3512 = load i32, ptr %52, align 4, !tbaa !9
  %3513 = load i32, ptr %31, align 4, !tbaa !9
  %3514 = mul nsw i32 %3512, %3513
  %3515 = add nsw i32 %3511, %3514
  %3516 = sext i32 %3515 to i64
  %3517 = getelementptr inbounds double, ptr %3510, i64 %3516
  %3518 = load double, ptr %3517, align 8, !tbaa !11
  %3519 = load double, ptr %41, align 8, !tbaa !11
  %3520 = load double, ptr %65, align 8, !tbaa !11
  %3521 = load double, ptr %42, align 8, !tbaa !11
  %3522 = call double @llvm.fmuladd.f64(double %3520, double %3521, double %3519)
  %3523 = fsub double %3518, %3522
  %3524 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  store double %3523, ptr %3524, align 8, !tbaa !11
  %3525 = load ptr, ptr %16, align 8, !tbaa !5
  %3526 = load ptr, ptr %19, align 8, !tbaa !5
  %3527 = load i32, ptr %49, align 4, !tbaa !9
  %3528 = load i32, ptr %49, align 4, !tbaa !9
  %3529 = load i32, ptr %27, align 4, !tbaa !9
  %3530 = mul nsw i32 %3528, %3529
  %3531 = add nsw i32 %3527, %3530
  %3532 = sext i32 %3531 to i64
  %3533 = getelementptr inbounds double, ptr %3526, i64 %3532
  %3534 = load ptr, ptr %20, align 8, !tbaa !5
  %3535 = load ptr, ptr %21, align 8, !tbaa !5
  %3536 = load i32, ptr %51, align 4, !tbaa !9
  %3537 = load i32, ptr %51, align 4, !tbaa !9
  %3538 = load i32, ptr %29, align 4, !tbaa !9
  %3539 = mul nsw i32 %3537, %3538
  %3540 = add nsw i32 %3536, %3539
  %3541 = sext i32 %3540 to i64
  %3542 = getelementptr inbounds double, ptr %3535, i64 %3541
  %3543 = load ptr, ptr %22, align 8, !tbaa !5
  %3544 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %3545 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlasy2_(ptr noundef @c_true, ptr noundef @c_true, ptr noundef %3525, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %3533, ptr noundef %3534, ptr noundef %3542, ptr noundef %3543, ptr noundef %3544, ptr noundef @c__2, ptr noundef %56, ptr noundef %3545, ptr noundef @c__2, ptr noundef %53, ptr noundef %39)
  %3546 = load i32, ptr %39, align 4, !tbaa !9
  %3547 = icmp ne i32 %3546, 0
  br i1 %3547, label %3548, label %3550

3548:                                             ; preds = %3501
  %3549 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %3549, align 4, !tbaa !9
  br label %3550

3550:                                             ; preds = %3548, %3501
  %3551 = load double, ptr %56, align 8, !tbaa !11
  %3552 = fcmp une double %3551, 1.000000e+00
  br i1 %3552, label %3553, label %3577

3553:                                             ; preds = %3550
  %3554 = load ptr, ptr %18, align 8, !tbaa !5
  %3555 = load i32, ptr %3554, align 4, !tbaa !9
  store i32 %3555, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %3556

3556:                                             ; preds = %3569, %3553
  %3557 = load i32, ptr %43, align 4, !tbaa !9
  %3558 = load i32, ptr %34, align 4, !tbaa !9
  %3559 = icmp sle i32 %3557, %3558
  br i1 %3559, label %3560, label %3572

3560:                                             ; preds = %3556
  %3561 = load ptr, ptr %17, align 8, !tbaa !5
  %3562 = load ptr, ptr %23, align 8, !tbaa !5
  %3563 = load i32, ptr %43, align 4, !tbaa !9
  %3564 = load i32, ptr %31, align 4, !tbaa !9
  %3565 = mul nsw i32 %3563, %3564
  %3566 = add nsw i32 %3565, 1
  %3567 = sext i32 %3566 to i64
  %3568 = getelementptr inbounds double, ptr %3562, i64 %3567
  call void @dscal_(ptr noundef %3561, ptr noundef %56, ptr noundef %3568, ptr noundef @c__1)
  br label %3569

3569:                                             ; preds = %3560
  %3570 = load i32, ptr %43, align 4, !tbaa !9
  %3571 = add nsw i32 %3570, 1
  store i32 %3571, ptr %43, align 4, !tbaa !9
  br label %3556, !llvm.loop !29

3572:                                             ; preds = %3556
  %3573 = load double, ptr %56, align 8, !tbaa !11
  %3574 = load ptr, ptr %25, align 8, !tbaa !5
  %3575 = load double, ptr %3574, align 8, !tbaa !11
  %3576 = fmul double %3575, %3573
  store double %3576, ptr %3574, align 8, !tbaa !11
  br label %3577

3577:                                             ; preds = %3572, %3550
  %3578 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %3579 = load double, ptr %3578, align 16, !tbaa !11
  %3580 = load ptr, ptr %23, align 8, !tbaa !5
  %3581 = load i32, ptr %49, align 4, !tbaa !9
  %3582 = load i32, ptr %51, align 4, !tbaa !9
  %3583 = load i32, ptr %31, align 4, !tbaa !9
  %3584 = mul nsw i32 %3582, %3583
  %3585 = add nsw i32 %3581, %3584
  %3586 = sext i32 %3585 to i64
  %3587 = getelementptr inbounds double, ptr %3580, i64 %3586
  store double %3579, ptr %3587, align 8, !tbaa !11
  %3588 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %3589 = load double, ptr %3588, align 16, !tbaa !11
  %3590 = load ptr, ptr %23, align 8, !tbaa !5
  %3591 = load i32, ptr %49, align 4, !tbaa !9
  %3592 = load i32, ptr %52, align 4, !tbaa !9
  %3593 = load i32, ptr %31, align 4, !tbaa !9
  %3594 = mul nsw i32 %3592, %3593
  %3595 = add nsw i32 %3591, %3594
  %3596 = sext i32 %3595 to i64
  %3597 = getelementptr inbounds double, ptr %3590, i64 %3596
  store double %3589, ptr %3597, align 8, !tbaa !11
  %3598 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %3599 = load double, ptr %3598, align 8, !tbaa !11
  %3600 = load ptr, ptr %23, align 8, !tbaa !5
  %3601 = load i32, ptr %50, align 4, !tbaa !9
  %3602 = load i32, ptr %51, align 4, !tbaa !9
  %3603 = load i32, ptr %31, align 4, !tbaa !9
  %3604 = mul nsw i32 %3602, %3603
  %3605 = add nsw i32 %3601, %3604
  %3606 = sext i32 %3605 to i64
  %3607 = getelementptr inbounds double, ptr %3600, i64 %3606
  store double %3599, ptr %3607, align 8, !tbaa !11
  %3608 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %3609 = load double, ptr %3608, align 8, !tbaa !11
  %3610 = load ptr, ptr %23, align 8, !tbaa !5
  %3611 = load i32, ptr %50, align 4, !tbaa !9
  %3612 = load i32, ptr %52, align 4, !tbaa !9
  %3613 = load i32, ptr %31, align 4, !tbaa !9
  %3614 = mul nsw i32 %3612, %3613
  %3615 = add nsw i32 %3611, %3614
  %3616 = sext i32 %3615 to i64
  %3617 = getelementptr inbounds double, ptr %3610, i64 %3616
  store double %3609, ptr %3617, align 8, !tbaa !11
  br label %3618

3618:                                             ; preds = %3577, %3204, %3200
  br label %3619

3619:                                             ; preds = %3618, %3179
  br label %3620

3620:                                             ; preds = %3619, %2933
  br label %3621

3621:                                             ; preds = %3620, %2701
  br label %3622

3622:                                             ; preds = %3621, %2482
  br label %3623

3623:                                             ; preds = %3622
  %3624 = load i32, ptr %44, align 4, !tbaa !9
  %3625 = add nsw i32 %3624, 1
  store i32 %3625, ptr %44, align 4, !tbaa !9
  br label %2474, !llvm.loop !30

3626:                                             ; preds = %2474
  br label %3627

3627:                                             ; preds = %3626, %2440
  br label %3628

3628:                                             ; preds = %3627
  %3629 = load i32, ptr %45, align 4, !tbaa !9
  %3630 = add nsw i32 %3629, -1
  store i32 %3630, ptr %45, align 4, !tbaa !9
  br label %2433, !llvm.loop !31

3631:                                             ; preds = %2433
  br label %5103

3632:                                             ; preds = %2425, %2422
  %3633 = load i32, ptr %58, align 4, !tbaa !9
  %3634 = icmp ne i32 %3633, 0
  br i1 %3634, label %3635, label %5102

3635:                                             ; preds = %3632
  %3636 = load i32, ptr %59, align 4, !tbaa !9
  %3637 = icmp ne i32 %3636, 0
  br i1 %3637, label %5102, label %3638

3638:                                             ; preds = %3635
  %3639 = load ptr, ptr %18, align 8, !tbaa !5
  %3640 = load i32, ptr %3639, align 4, !tbaa !9
  store i32 %3640, ptr %48, align 4, !tbaa !9
  %3641 = load ptr, ptr %18, align 8, !tbaa !5
  %3642 = load i32, ptr %3641, align 4, !tbaa !9
  store i32 %3642, ptr %45, align 4, !tbaa !9
  br label %3643

3643:                                             ; preds = %5098, %3638
  %3644 = load i32, ptr %45, align 4, !tbaa !9
  %3645 = icmp sge i32 %3644, 1
  br i1 %3645, label %3646, label %5101

3646:                                             ; preds = %3643
  %3647 = load i32, ptr %45, align 4, !tbaa !9
  %3648 = load i32, ptr %48, align 4, !tbaa !9
  %3649 = icmp sgt i32 %3647, %3648
  br i1 %3649, label %3650, label %3651

3650:                                             ; preds = %3646
  br label %5097

3651:                                             ; preds = %3646
  %3652 = load i32, ptr %45, align 4, !tbaa !9
  %3653 = icmp eq i32 %3652, 1
  br i1 %3653, label %3654, label %3657

3654:                                             ; preds = %3651
  %3655 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %3655, ptr %51, align 4, !tbaa !9
  %3656 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %3656, ptr %52, align 4, !tbaa !9
  br label %3681

3657:                                             ; preds = %3651
  %3658 = load ptr, ptr %21, align 8, !tbaa !5
  %3659 = load i32, ptr %45, align 4, !tbaa !9
  %3660 = load i32, ptr %45, align 4, !tbaa !9
  %3661 = sub nsw i32 %3660, 1
  %3662 = load i32, ptr %29, align 4, !tbaa !9
  %3663 = mul nsw i32 %3661, %3662
  %3664 = add nsw i32 %3659, %3663
  %3665 = sext i32 %3664 to i64
  %3666 = getelementptr inbounds double, ptr %3658, i64 %3665
  %3667 = load double, ptr %3666, align 8, !tbaa !11
  %3668 = fcmp une double %3667, 0.000000e+00
  br i1 %3668, label %3669, label %3675

3669:                                             ; preds = %3657
  %3670 = load i32, ptr %45, align 4, !tbaa !9
  %3671 = sub nsw i32 %3670, 1
  store i32 %3671, ptr %51, align 4, !tbaa !9
  %3672 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %3672, ptr %52, align 4, !tbaa !9
  %3673 = load i32, ptr %45, align 4, !tbaa !9
  %3674 = sub nsw i32 %3673, 2
  store i32 %3674, ptr %48, align 4, !tbaa !9
  br label %3680

3675:                                             ; preds = %3657
  %3676 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %3676, ptr %51, align 4, !tbaa !9
  %3677 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %3677, ptr %52, align 4, !tbaa !9
  %3678 = load i32, ptr %45, align 4, !tbaa !9
  %3679 = sub nsw i32 %3678, 1
  store i32 %3679, ptr %48, align 4, !tbaa !9
  br label %3680

3680:                                             ; preds = %3675, %3669
  br label %3681

3681:                                             ; preds = %3680, %3654
  %3682 = load ptr, ptr %17, align 8, !tbaa !5
  %3683 = load i32, ptr %3682, align 4, !tbaa !9
  store i32 %3683, ptr %47, align 4, !tbaa !9
  %3684 = load ptr, ptr %17, align 8, !tbaa !5
  %3685 = load i32, ptr %3684, align 4, !tbaa !9
  store i32 %3685, ptr %44, align 4, !tbaa !9
  br label %3686

3686:                                             ; preds = %5093, %3681
  %3687 = load i32, ptr %44, align 4, !tbaa !9
  %3688 = icmp sge i32 %3687, 1
  br i1 %3688, label %3689, label %5096

3689:                                             ; preds = %3686
  %3690 = load i32, ptr %44, align 4, !tbaa !9
  %3691 = load i32, ptr %47, align 4, !tbaa !9
  %3692 = icmp sgt i32 %3690, %3691
  br i1 %3692, label %3693, label %3694

3693:                                             ; preds = %3689
  br label %5092

3694:                                             ; preds = %3689
  %3695 = load i32, ptr %44, align 4, !tbaa !9
  %3696 = icmp eq i32 %3695, 1
  br i1 %3696, label %3697, label %3700

3697:                                             ; preds = %3694
  %3698 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %3698, ptr %49, align 4, !tbaa !9
  %3699 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %3699, ptr %50, align 4, !tbaa !9
  br label %3724

3700:                                             ; preds = %3694
  %3701 = load ptr, ptr %19, align 8, !tbaa !5
  %3702 = load i32, ptr %44, align 4, !tbaa !9
  %3703 = load i32, ptr %44, align 4, !tbaa !9
  %3704 = sub nsw i32 %3703, 1
  %3705 = load i32, ptr %27, align 4, !tbaa !9
  %3706 = mul nsw i32 %3704, %3705
  %3707 = add nsw i32 %3702, %3706
  %3708 = sext i32 %3707 to i64
  %3709 = getelementptr inbounds double, ptr %3701, i64 %3708
  %3710 = load double, ptr %3709, align 8, !tbaa !11
  %3711 = fcmp une double %3710, 0.000000e+00
  br i1 %3711, label %3712, label %3718

3712:                                             ; preds = %3700
  %3713 = load i32, ptr %44, align 4, !tbaa !9
  %3714 = sub nsw i32 %3713, 1
  store i32 %3714, ptr %49, align 4, !tbaa !9
  %3715 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %3715, ptr %50, align 4, !tbaa !9
  %3716 = load i32, ptr %44, align 4, !tbaa !9
  %3717 = sub nsw i32 %3716, 2
  store i32 %3717, ptr %47, align 4, !tbaa !9
  br label %3723

3718:                                             ; preds = %3700
  %3719 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %3719, ptr %49, align 4, !tbaa !9
  %3720 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %3720, ptr %50, align 4, !tbaa !9
  %3721 = load i32, ptr %44, align 4, !tbaa !9
  %3722 = sub nsw i32 %3721, 1
  store i32 %3722, ptr %47, align 4, !tbaa !9
  br label %3723

3723:                                             ; preds = %3718, %3712
  br label %3724

3724:                                             ; preds = %3723, %3697
  %3725 = load i32, ptr %51, align 4, !tbaa !9
  %3726 = load i32, ptr %52, align 4, !tbaa !9
  %3727 = icmp eq i32 %3725, %3726
  br i1 %3727, label %3728, label %3950

3728:                                             ; preds = %3724
  %3729 = load i32, ptr %49, align 4, !tbaa !9
  %3730 = load i32, ptr %50, align 4, !tbaa !9
  %3731 = icmp eq i32 %3729, %3730
  br i1 %3731, label %3732, label %3950

3732:                                             ; preds = %3728
  %3733 = load ptr, ptr %17, align 8, !tbaa !5
  %3734 = load i32, ptr %3733, align 4, !tbaa !9
  %3735 = load i32, ptr %49, align 4, !tbaa !9
  %3736 = sub nsw i32 %3734, %3735
  store i32 %3736, ptr %33, align 4, !tbaa !9
  %3737 = load i32, ptr %49, align 4, !tbaa !9
  %3738 = add nsw i32 %3737, 1
  store i32 %3738, ptr %34, align 4, !tbaa !9
  %3739 = load i32, ptr %49, align 4, !tbaa !9
  %3740 = add nsw i32 %3739, 1
  store i32 %3740, ptr %35, align 4, !tbaa !9
  %3741 = load ptr, ptr %19, align 8, !tbaa !5
  %3742 = load i32, ptr %49, align 4, !tbaa !9
  %3743 = load i32, ptr %34, align 4, !tbaa !9
  %3744 = load ptr, ptr %17, align 8, !tbaa !5
  %3745 = load i32, ptr %3744, align 4, !tbaa !9
  %3746 = icmp sle i32 %3743, %3745
  br i1 %3746, label %3747, label %3749

3747:                                             ; preds = %3732
  %3748 = load i32, ptr %34, align 4, !tbaa !9
  br label %3752

3749:                                             ; preds = %3732
  %3750 = load ptr, ptr %17, align 8, !tbaa !5
  %3751 = load i32, ptr %3750, align 4, !tbaa !9
  br label %3752

3752:                                             ; preds = %3749, %3747
  %3753 = phi i32 [ %3748, %3747 ], [ %3751, %3749 ]
  %3754 = load i32, ptr %27, align 4, !tbaa !9
  %3755 = mul nsw i32 %3753, %3754
  %3756 = add nsw i32 %3742, %3755
  %3757 = sext i32 %3756 to i64
  %3758 = getelementptr inbounds double, ptr %3741, i64 %3757
  %3759 = load ptr, ptr %20, align 8, !tbaa !5
  %3760 = load ptr, ptr %23, align 8, !tbaa !5
  %3761 = load i32, ptr %35, align 4, !tbaa !9
  %3762 = load ptr, ptr %17, align 8, !tbaa !5
  %3763 = load i32, ptr %3762, align 4, !tbaa !9
  %3764 = icmp sle i32 %3761, %3763
  br i1 %3764, label %3765, label %3767

3765:                                             ; preds = %3752
  %3766 = load i32, ptr %35, align 4, !tbaa !9
  br label %3770

3767:                                             ; preds = %3752
  %3768 = load ptr, ptr %17, align 8, !tbaa !5
  %3769 = load i32, ptr %3768, align 4, !tbaa !9
  br label %3770

3770:                                             ; preds = %3767, %3765
  %3771 = phi i32 [ %3766, %3765 ], [ %3769, %3767 ]
  %3772 = load i32, ptr %51, align 4, !tbaa !9
  %3773 = load i32, ptr %31, align 4, !tbaa !9
  %3774 = mul nsw i32 %3772, %3773
  %3775 = add nsw i32 %3771, %3774
  %3776 = sext i32 %3775 to i64
  %3777 = getelementptr inbounds double, ptr %3760, i64 %3776
  %3778 = call double @ddot_(ptr noundef %33, ptr noundef %3758, ptr noundef %3759, ptr noundef %3777, ptr noundef @c__1)
  store double %3778, ptr %41, align 8, !tbaa !11
  %3779 = load ptr, ptr %18, align 8, !tbaa !5
  %3780 = load i32, ptr %3779, align 4, !tbaa !9
  %3781 = load i32, ptr %51, align 4, !tbaa !9
  %3782 = sub nsw i32 %3780, %3781
  store i32 %3782, ptr %33, align 4, !tbaa !9
  %3783 = load i32, ptr %51, align 4, !tbaa !9
  %3784 = add nsw i32 %3783, 1
  store i32 %3784, ptr %34, align 4, !tbaa !9
  %3785 = load i32, ptr %51, align 4, !tbaa !9
  %3786 = add nsw i32 %3785, 1
  store i32 %3786, ptr %35, align 4, !tbaa !9
  %3787 = load ptr, ptr %23, align 8, !tbaa !5
  %3788 = load i32, ptr %49, align 4, !tbaa !9
  %3789 = load i32, ptr %34, align 4, !tbaa !9
  %3790 = load ptr, ptr %18, align 8, !tbaa !5
  %3791 = load i32, ptr %3790, align 4, !tbaa !9
  %3792 = icmp sle i32 %3789, %3791
  br i1 %3792, label %3793, label %3795

3793:                                             ; preds = %3770
  %3794 = load i32, ptr %34, align 4, !tbaa !9
  br label %3798

3795:                                             ; preds = %3770
  %3796 = load ptr, ptr %18, align 8, !tbaa !5
  %3797 = load i32, ptr %3796, align 4, !tbaa !9
  br label %3798

3798:                                             ; preds = %3795, %3793
  %3799 = phi i32 [ %3794, %3793 ], [ %3797, %3795 ]
  %3800 = load i32, ptr %31, align 4, !tbaa !9
  %3801 = mul nsw i32 %3799, %3800
  %3802 = add nsw i32 %3788, %3801
  %3803 = sext i32 %3802 to i64
  %3804 = getelementptr inbounds double, ptr %3787, i64 %3803
  %3805 = load ptr, ptr %24, align 8, !tbaa !5
  %3806 = load ptr, ptr %21, align 8, !tbaa !5
  %3807 = load i32, ptr %51, align 4, !tbaa !9
  %3808 = load i32, ptr %35, align 4, !tbaa !9
  %3809 = load ptr, ptr %18, align 8, !tbaa !5
  %3810 = load i32, ptr %3809, align 4, !tbaa !9
  %3811 = icmp sle i32 %3808, %3810
  br i1 %3811, label %3812, label %3814

3812:                                             ; preds = %3798
  %3813 = load i32, ptr %35, align 4, !tbaa !9
  br label %3817

3814:                                             ; preds = %3798
  %3815 = load ptr, ptr %18, align 8, !tbaa !5
  %3816 = load i32, ptr %3815, align 4, !tbaa !9
  br label %3817

3817:                                             ; preds = %3814, %3812
  %3818 = phi i32 [ %3813, %3812 ], [ %3816, %3814 ]
  %3819 = load i32, ptr %29, align 4, !tbaa !9
  %3820 = mul nsw i32 %3818, %3819
  %3821 = add nsw i32 %3807, %3820
  %3822 = sext i32 %3821 to i64
  %3823 = getelementptr inbounds double, ptr %3806, i64 %3822
  %3824 = load ptr, ptr %22, align 8, !tbaa !5
  %3825 = call double @ddot_(ptr noundef %33, ptr noundef %3804, ptr noundef %3805, ptr noundef %3823, ptr noundef %3824)
  store double %3825, ptr %42, align 8, !tbaa !11
  %3826 = load ptr, ptr %23, align 8, !tbaa !5
  %3827 = load i32, ptr %49, align 4, !tbaa !9
  %3828 = load i32, ptr %51, align 4, !tbaa !9
  %3829 = load i32, ptr %31, align 4, !tbaa !9
  %3830 = mul nsw i32 %3828, %3829
  %3831 = add nsw i32 %3827, %3830
  %3832 = sext i32 %3831 to i64
  %3833 = getelementptr inbounds double, ptr %3826, i64 %3832
  %3834 = load double, ptr %3833, align 8, !tbaa !11
  %3835 = load double, ptr %41, align 8, !tbaa !11
  %3836 = load double, ptr %65, align 8, !tbaa !11
  %3837 = load double, ptr %42, align 8, !tbaa !11
  %3838 = call double @llvm.fmuladd.f64(double %3836, double %3837, double %3835)
  %3839 = fsub double %3834, %3838
  %3840 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %3839, ptr %3840, align 16, !tbaa !11
  store double 1.000000e+00, ptr %56, align 8, !tbaa !11
  %3841 = load ptr, ptr %19, align 8, !tbaa !5
  %3842 = load i32, ptr %49, align 4, !tbaa !9
  %3843 = load i32, ptr %49, align 4, !tbaa !9
  %3844 = load i32, ptr %27, align 4, !tbaa !9
  %3845 = mul nsw i32 %3843, %3844
  %3846 = add nsw i32 %3842, %3845
  %3847 = sext i32 %3846 to i64
  %3848 = getelementptr inbounds double, ptr %3841, i64 %3847
  %3849 = load double, ptr %3848, align 8, !tbaa !11
  %3850 = load double, ptr %65, align 8, !tbaa !11
  %3851 = load ptr, ptr %21, align 8, !tbaa !5
  %3852 = load i32, ptr %51, align 4, !tbaa !9
  %3853 = load i32, ptr %51, align 4, !tbaa !9
  %3854 = load i32, ptr %29, align 4, !tbaa !9
  %3855 = mul nsw i32 %3853, %3854
  %3856 = add nsw i32 %3852, %3855
  %3857 = sext i32 %3856 to i64
  %3858 = getelementptr inbounds double, ptr %3851, i64 %3857
  %3859 = load double, ptr %3858, align 8, !tbaa !11
  %3860 = call double @llvm.fmuladd.f64(double %3850, double %3859, double %3849)
  store double %3860, ptr %54, align 8, !tbaa !11
  %3861 = load double, ptr %54, align 8, !tbaa !11
  %3862 = fcmp oge double %3861, 0.000000e+00
  br i1 %3862, label %3863, label %3865

3863:                                             ; preds = %3817
  %3864 = load double, ptr %54, align 8, !tbaa !11
  br label %3868

3865:                                             ; preds = %3817
  %3866 = load double, ptr %54, align 8, !tbaa !11
  %3867 = fneg double %3866
  br label %3868

3868:                                             ; preds = %3865, %3863
  %3869 = phi double [ %3864, %3863 ], [ %3867, %3865 ]
  store double %3869, ptr %61, align 8, !tbaa !11
  %3870 = load double, ptr %61, align 8, !tbaa !11
  %3871 = load double, ptr %40, align 8, !tbaa !11
  %3872 = fcmp ole double %3870, %3871
  br i1 %3872, label %3873, label %3877

3873:                                             ; preds = %3868
  %3874 = load double, ptr %40, align 8, !tbaa !11
  store double %3874, ptr %54, align 8, !tbaa !11
  %3875 = load double, ptr %40, align 8, !tbaa !11
  store double %3875, ptr %61, align 8, !tbaa !11
  %3876 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %3876, align 4, !tbaa !9
  br label %3877

3877:                                             ; preds = %3873, %3868
  %3878 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %3879 = load double, ptr %3878, align 16, !tbaa !11
  %3880 = fcmp oge double %3879, 0.000000e+00
  br i1 %3880, label %3881, label %3884

3881:                                             ; preds = %3877
  %3882 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %3883 = load double, ptr %3882, align 16, !tbaa !11
  br label %3888

3884:                                             ; preds = %3877
  %3885 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %3886 = load double, ptr %3885, align 16, !tbaa !11
  %3887 = fneg double %3886
  br label %3888

3888:                                             ; preds = %3884, %3881
  %3889 = phi double [ %3883, %3881 ], [ %3887, %3884 ]
  store double %3889, ptr %55, align 8, !tbaa !11
  %3890 = load double, ptr %61, align 8, !tbaa !11
  %3891 = fcmp olt double %3890, 1.000000e+00
  br i1 %3891, label %3892, label %3905

3892:                                             ; preds = %3888
  %3893 = load double, ptr %55, align 8, !tbaa !11
  %3894 = fcmp ogt double %3893, 1.000000e+00
  br i1 %3894, label %3895, label %3905

3895:                                             ; preds = %3892
  %3896 = load double, ptr %55, align 8, !tbaa !11
  %3897 = load double, ptr %57, align 8, !tbaa !11
  %3898 = load double, ptr %61, align 8, !tbaa !11
  %3899 = fmul double %3897, %3898
  %3900 = fcmp ogt double %3896, %3899
  br i1 %3900, label %3901, label %3904

3901:                                             ; preds = %3895
  %3902 = load double, ptr %55, align 8, !tbaa !11
  %3903 = fdiv double 1.000000e+00, %3902
  store double %3903, ptr %56, align 8, !tbaa !11
  br label %3904

3904:                                             ; preds = %3901, %3895
  br label %3905

3905:                                             ; preds = %3904, %3892, %3888
  %3906 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %3907 = load double, ptr %3906, align 16, !tbaa !11
  %3908 = load double, ptr %56, align 8, !tbaa !11
  %3909 = fmul double %3907, %3908
  %3910 = load double, ptr %54, align 8, !tbaa !11
  %3911 = fdiv double %3909, %3910
  %3912 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  store double %3911, ptr %3912, align 16, !tbaa !11
  %3913 = load double, ptr %56, align 8, !tbaa !11
  %3914 = fcmp une double %3913, 1.000000e+00
  br i1 %3914, label %3915, label %3939

3915:                                             ; preds = %3905
  %3916 = load ptr, ptr %18, align 8, !tbaa !5
  %3917 = load i32, ptr %3916, align 4, !tbaa !9
  store i32 %3917, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %3918

3918:                                             ; preds = %3931, %3915
  %3919 = load i32, ptr %43, align 4, !tbaa !9
  %3920 = load i32, ptr %33, align 4, !tbaa !9
  %3921 = icmp sle i32 %3919, %3920
  br i1 %3921, label %3922, label %3934

3922:                                             ; preds = %3918
  %3923 = load ptr, ptr %17, align 8, !tbaa !5
  %3924 = load ptr, ptr %23, align 8, !tbaa !5
  %3925 = load i32, ptr %43, align 4, !tbaa !9
  %3926 = load i32, ptr %31, align 4, !tbaa !9
  %3927 = mul nsw i32 %3925, %3926
  %3928 = add nsw i32 %3927, 1
  %3929 = sext i32 %3928 to i64
  %3930 = getelementptr inbounds double, ptr %3924, i64 %3929
  call void @dscal_(ptr noundef %3923, ptr noundef %56, ptr noundef %3930, ptr noundef @c__1)
  br label %3931

3931:                                             ; preds = %3922
  %3932 = load i32, ptr %43, align 4, !tbaa !9
  %3933 = add nsw i32 %3932, 1
  store i32 %3933, ptr %43, align 4, !tbaa !9
  br label %3918, !llvm.loop !32

3934:                                             ; preds = %3918
  %3935 = load double, ptr %56, align 8, !tbaa !11
  %3936 = load ptr, ptr %25, align 8, !tbaa !5
  %3937 = load double, ptr %3936, align 8, !tbaa !11
  %3938 = fmul double %3937, %3935
  store double %3938, ptr %3936, align 8, !tbaa !11
  br label %3939

3939:                                             ; preds = %3934, %3905
  %3940 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %3941 = load double, ptr %3940, align 16, !tbaa !11
  %3942 = load ptr, ptr %23, align 8, !tbaa !5
  %3943 = load i32, ptr %49, align 4, !tbaa !9
  %3944 = load i32, ptr %51, align 4, !tbaa !9
  %3945 = load i32, ptr %31, align 4, !tbaa !9
  %3946 = mul nsw i32 %3944, %3945
  %3947 = add nsw i32 %3943, %3946
  %3948 = sext i32 %3947 to i64
  %3949 = getelementptr inbounds double, ptr %3942, i64 %3948
  store double %3941, ptr %3949, align 8, !tbaa !11
  br label %5091

3950:                                             ; preds = %3728, %3724
  %3951 = load i32, ptr %51, align 4, !tbaa !9
  %3952 = load i32, ptr %52, align 4, !tbaa !9
  %3953 = icmp eq i32 %3951, %3952
  br i1 %3953, label %3954, label %4250

3954:                                             ; preds = %3950
  %3955 = load i32, ptr %49, align 4, !tbaa !9
  %3956 = load i32, ptr %50, align 4, !tbaa !9
  %3957 = icmp ne i32 %3955, %3956
  br i1 %3957, label %3958, label %4250

3958:                                             ; preds = %3954
  %3959 = load ptr, ptr %17, align 8, !tbaa !5
  %3960 = load i32, ptr %3959, align 4, !tbaa !9
  %3961 = load i32, ptr %50, align 4, !tbaa !9
  %3962 = sub nsw i32 %3960, %3961
  store i32 %3962, ptr %33, align 4, !tbaa !9
  %3963 = load i32, ptr %50, align 4, !tbaa !9
  %3964 = add nsw i32 %3963, 1
  store i32 %3964, ptr %34, align 4, !tbaa !9
  %3965 = load i32, ptr %50, align 4, !tbaa !9
  %3966 = add nsw i32 %3965, 1
  store i32 %3966, ptr %35, align 4, !tbaa !9
  %3967 = load ptr, ptr %19, align 8, !tbaa !5
  %3968 = load i32, ptr %49, align 4, !tbaa !9
  %3969 = load i32, ptr %34, align 4, !tbaa !9
  %3970 = load ptr, ptr %17, align 8, !tbaa !5
  %3971 = load i32, ptr %3970, align 4, !tbaa !9
  %3972 = icmp sle i32 %3969, %3971
  br i1 %3972, label %3973, label %3975

3973:                                             ; preds = %3958
  %3974 = load i32, ptr %34, align 4, !tbaa !9
  br label %3978

3975:                                             ; preds = %3958
  %3976 = load ptr, ptr %17, align 8, !tbaa !5
  %3977 = load i32, ptr %3976, align 4, !tbaa !9
  br label %3978

3978:                                             ; preds = %3975, %3973
  %3979 = phi i32 [ %3974, %3973 ], [ %3977, %3975 ]
  %3980 = load i32, ptr %27, align 4, !tbaa !9
  %3981 = mul nsw i32 %3979, %3980
  %3982 = add nsw i32 %3968, %3981
  %3983 = sext i32 %3982 to i64
  %3984 = getelementptr inbounds double, ptr %3967, i64 %3983
  %3985 = load ptr, ptr %20, align 8, !tbaa !5
  %3986 = load ptr, ptr %23, align 8, !tbaa !5
  %3987 = load i32, ptr %35, align 4, !tbaa !9
  %3988 = load ptr, ptr %17, align 8, !tbaa !5
  %3989 = load i32, ptr %3988, align 4, !tbaa !9
  %3990 = icmp sle i32 %3987, %3989
  br i1 %3990, label %3991, label %3993

3991:                                             ; preds = %3978
  %3992 = load i32, ptr %35, align 4, !tbaa !9
  br label %3996

3993:                                             ; preds = %3978
  %3994 = load ptr, ptr %17, align 8, !tbaa !5
  %3995 = load i32, ptr %3994, align 4, !tbaa !9
  br label %3996

3996:                                             ; preds = %3993, %3991
  %3997 = phi i32 [ %3992, %3991 ], [ %3995, %3993 ]
  %3998 = load i32, ptr %51, align 4, !tbaa !9
  %3999 = load i32, ptr %31, align 4, !tbaa !9
  %4000 = mul nsw i32 %3998, %3999
  %4001 = add nsw i32 %3997, %4000
  %4002 = sext i32 %4001 to i64
  %4003 = getelementptr inbounds double, ptr %3986, i64 %4002
  %4004 = call double @ddot_(ptr noundef %33, ptr noundef %3984, ptr noundef %3985, ptr noundef %4003, ptr noundef @c__1)
  store double %4004, ptr %41, align 8, !tbaa !11
  %4005 = load ptr, ptr %18, align 8, !tbaa !5
  %4006 = load i32, ptr %4005, align 4, !tbaa !9
  %4007 = load i32, ptr %52, align 4, !tbaa !9
  %4008 = sub nsw i32 %4006, %4007
  store i32 %4008, ptr %33, align 4, !tbaa !9
  %4009 = load i32, ptr %52, align 4, !tbaa !9
  %4010 = add nsw i32 %4009, 1
  store i32 %4010, ptr %34, align 4, !tbaa !9
  %4011 = load i32, ptr %52, align 4, !tbaa !9
  %4012 = add nsw i32 %4011, 1
  store i32 %4012, ptr %35, align 4, !tbaa !9
  %4013 = load ptr, ptr %23, align 8, !tbaa !5
  %4014 = load i32, ptr %49, align 4, !tbaa !9
  %4015 = load i32, ptr %34, align 4, !tbaa !9
  %4016 = load ptr, ptr %18, align 8, !tbaa !5
  %4017 = load i32, ptr %4016, align 4, !tbaa !9
  %4018 = icmp sle i32 %4015, %4017
  br i1 %4018, label %4019, label %4021

4019:                                             ; preds = %3996
  %4020 = load i32, ptr %34, align 4, !tbaa !9
  br label %4024

4021:                                             ; preds = %3996
  %4022 = load ptr, ptr %18, align 8, !tbaa !5
  %4023 = load i32, ptr %4022, align 4, !tbaa !9
  br label %4024

4024:                                             ; preds = %4021, %4019
  %4025 = phi i32 [ %4020, %4019 ], [ %4023, %4021 ]
  %4026 = load i32, ptr %31, align 4, !tbaa !9
  %4027 = mul nsw i32 %4025, %4026
  %4028 = add nsw i32 %4014, %4027
  %4029 = sext i32 %4028 to i64
  %4030 = getelementptr inbounds double, ptr %4013, i64 %4029
  %4031 = load ptr, ptr %24, align 8, !tbaa !5
  %4032 = load ptr, ptr %21, align 8, !tbaa !5
  %4033 = load i32, ptr %51, align 4, !tbaa !9
  %4034 = load i32, ptr %35, align 4, !tbaa !9
  %4035 = load ptr, ptr %18, align 8, !tbaa !5
  %4036 = load i32, ptr %4035, align 4, !tbaa !9
  %4037 = icmp sle i32 %4034, %4036
  br i1 %4037, label %4038, label %4040

4038:                                             ; preds = %4024
  %4039 = load i32, ptr %35, align 4, !tbaa !9
  br label %4043

4040:                                             ; preds = %4024
  %4041 = load ptr, ptr %18, align 8, !tbaa !5
  %4042 = load i32, ptr %4041, align 4, !tbaa !9
  br label %4043

4043:                                             ; preds = %4040, %4038
  %4044 = phi i32 [ %4039, %4038 ], [ %4042, %4040 ]
  %4045 = load i32, ptr %29, align 4, !tbaa !9
  %4046 = mul nsw i32 %4044, %4045
  %4047 = add nsw i32 %4033, %4046
  %4048 = sext i32 %4047 to i64
  %4049 = getelementptr inbounds double, ptr %4032, i64 %4048
  %4050 = load ptr, ptr %22, align 8, !tbaa !5
  %4051 = call double @ddot_(ptr noundef %33, ptr noundef %4030, ptr noundef %4031, ptr noundef %4049, ptr noundef %4050)
  store double %4051, ptr %42, align 8, !tbaa !11
  %4052 = load ptr, ptr %23, align 8, !tbaa !5
  %4053 = load i32, ptr %49, align 4, !tbaa !9
  %4054 = load i32, ptr %51, align 4, !tbaa !9
  %4055 = load i32, ptr %31, align 4, !tbaa !9
  %4056 = mul nsw i32 %4054, %4055
  %4057 = add nsw i32 %4053, %4056
  %4058 = sext i32 %4057 to i64
  %4059 = getelementptr inbounds double, ptr %4052, i64 %4058
  %4060 = load double, ptr %4059, align 8, !tbaa !11
  %4061 = load double, ptr %41, align 8, !tbaa !11
  %4062 = load double, ptr %65, align 8, !tbaa !11
  %4063 = load double, ptr %42, align 8, !tbaa !11
  %4064 = call double @llvm.fmuladd.f64(double %4062, double %4063, double %4061)
  %4065 = fsub double %4060, %4064
  %4066 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %4065, ptr %4066, align 16, !tbaa !11
  %4067 = load ptr, ptr %17, align 8, !tbaa !5
  %4068 = load i32, ptr %4067, align 4, !tbaa !9
  %4069 = load i32, ptr %50, align 4, !tbaa !9
  %4070 = sub nsw i32 %4068, %4069
  store i32 %4070, ptr %33, align 4, !tbaa !9
  %4071 = load i32, ptr %50, align 4, !tbaa !9
  %4072 = add nsw i32 %4071, 1
  store i32 %4072, ptr %34, align 4, !tbaa !9
  %4073 = load i32, ptr %50, align 4, !tbaa !9
  %4074 = add nsw i32 %4073, 1
  store i32 %4074, ptr %35, align 4, !tbaa !9
  %4075 = load ptr, ptr %19, align 8, !tbaa !5
  %4076 = load i32, ptr %50, align 4, !tbaa !9
  %4077 = load i32, ptr %34, align 4, !tbaa !9
  %4078 = load ptr, ptr %17, align 8, !tbaa !5
  %4079 = load i32, ptr %4078, align 4, !tbaa !9
  %4080 = icmp sle i32 %4077, %4079
  br i1 %4080, label %4081, label %4083

4081:                                             ; preds = %4043
  %4082 = load i32, ptr %34, align 4, !tbaa !9
  br label %4086

4083:                                             ; preds = %4043
  %4084 = load ptr, ptr %17, align 8, !tbaa !5
  %4085 = load i32, ptr %4084, align 4, !tbaa !9
  br label %4086

4086:                                             ; preds = %4083, %4081
  %4087 = phi i32 [ %4082, %4081 ], [ %4085, %4083 ]
  %4088 = load i32, ptr %27, align 4, !tbaa !9
  %4089 = mul nsw i32 %4087, %4088
  %4090 = add nsw i32 %4076, %4089
  %4091 = sext i32 %4090 to i64
  %4092 = getelementptr inbounds double, ptr %4075, i64 %4091
  %4093 = load ptr, ptr %20, align 8, !tbaa !5
  %4094 = load ptr, ptr %23, align 8, !tbaa !5
  %4095 = load i32, ptr %35, align 4, !tbaa !9
  %4096 = load ptr, ptr %17, align 8, !tbaa !5
  %4097 = load i32, ptr %4096, align 4, !tbaa !9
  %4098 = icmp sle i32 %4095, %4097
  br i1 %4098, label %4099, label %4101

4099:                                             ; preds = %4086
  %4100 = load i32, ptr %35, align 4, !tbaa !9
  br label %4104

4101:                                             ; preds = %4086
  %4102 = load ptr, ptr %17, align 8, !tbaa !5
  %4103 = load i32, ptr %4102, align 4, !tbaa !9
  br label %4104

4104:                                             ; preds = %4101, %4099
  %4105 = phi i32 [ %4100, %4099 ], [ %4103, %4101 ]
  %4106 = load i32, ptr %51, align 4, !tbaa !9
  %4107 = load i32, ptr %31, align 4, !tbaa !9
  %4108 = mul nsw i32 %4106, %4107
  %4109 = add nsw i32 %4105, %4108
  %4110 = sext i32 %4109 to i64
  %4111 = getelementptr inbounds double, ptr %4094, i64 %4110
  %4112 = call double @ddot_(ptr noundef %33, ptr noundef %4092, ptr noundef %4093, ptr noundef %4111, ptr noundef @c__1)
  store double %4112, ptr %41, align 8, !tbaa !11
  %4113 = load ptr, ptr %18, align 8, !tbaa !5
  %4114 = load i32, ptr %4113, align 4, !tbaa !9
  %4115 = load i32, ptr %52, align 4, !tbaa !9
  %4116 = sub nsw i32 %4114, %4115
  store i32 %4116, ptr %33, align 4, !tbaa !9
  %4117 = load i32, ptr %52, align 4, !tbaa !9
  %4118 = add nsw i32 %4117, 1
  store i32 %4118, ptr %34, align 4, !tbaa !9
  %4119 = load i32, ptr %52, align 4, !tbaa !9
  %4120 = add nsw i32 %4119, 1
  store i32 %4120, ptr %35, align 4, !tbaa !9
  %4121 = load ptr, ptr %23, align 8, !tbaa !5
  %4122 = load i32, ptr %50, align 4, !tbaa !9
  %4123 = load i32, ptr %34, align 4, !tbaa !9
  %4124 = load ptr, ptr %18, align 8, !tbaa !5
  %4125 = load i32, ptr %4124, align 4, !tbaa !9
  %4126 = icmp sle i32 %4123, %4125
  br i1 %4126, label %4127, label %4129

4127:                                             ; preds = %4104
  %4128 = load i32, ptr %34, align 4, !tbaa !9
  br label %4132

4129:                                             ; preds = %4104
  %4130 = load ptr, ptr %18, align 8, !tbaa !5
  %4131 = load i32, ptr %4130, align 4, !tbaa !9
  br label %4132

4132:                                             ; preds = %4129, %4127
  %4133 = phi i32 [ %4128, %4127 ], [ %4131, %4129 ]
  %4134 = load i32, ptr %31, align 4, !tbaa !9
  %4135 = mul nsw i32 %4133, %4134
  %4136 = add nsw i32 %4122, %4135
  %4137 = sext i32 %4136 to i64
  %4138 = getelementptr inbounds double, ptr %4121, i64 %4137
  %4139 = load ptr, ptr %24, align 8, !tbaa !5
  %4140 = load ptr, ptr %21, align 8, !tbaa !5
  %4141 = load i32, ptr %51, align 4, !tbaa !9
  %4142 = load i32, ptr %35, align 4, !tbaa !9
  %4143 = load ptr, ptr %18, align 8, !tbaa !5
  %4144 = load i32, ptr %4143, align 4, !tbaa !9
  %4145 = icmp sle i32 %4142, %4144
  br i1 %4145, label %4146, label %4148

4146:                                             ; preds = %4132
  %4147 = load i32, ptr %35, align 4, !tbaa !9
  br label %4151

4148:                                             ; preds = %4132
  %4149 = load ptr, ptr %18, align 8, !tbaa !5
  %4150 = load i32, ptr %4149, align 4, !tbaa !9
  br label %4151

4151:                                             ; preds = %4148, %4146
  %4152 = phi i32 [ %4147, %4146 ], [ %4150, %4148 ]
  %4153 = load i32, ptr %29, align 4, !tbaa !9
  %4154 = mul nsw i32 %4152, %4153
  %4155 = add nsw i32 %4141, %4154
  %4156 = sext i32 %4155 to i64
  %4157 = getelementptr inbounds double, ptr %4140, i64 %4156
  %4158 = load ptr, ptr %22, align 8, !tbaa !5
  %4159 = call double @ddot_(ptr noundef %33, ptr noundef %4138, ptr noundef %4139, ptr noundef %4157, ptr noundef %4158)
  store double %4159, ptr %42, align 8, !tbaa !11
  %4160 = load ptr, ptr %23, align 8, !tbaa !5
  %4161 = load i32, ptr %50, align 4, !tbaa !9
  %4162 = load i32, ptr %51, align 4, !tbaa !9
  %4163 = load i32, ptr %31, align 4, !tbaa !9
  %4164 = mul nsw i32 %4162, %4163
  %4165 = add nsw i32 %4161, %4164
  %4166 = sext i32 %4165 to i64
  %4167 = getelementptr inbounds double, ptr %4160, i64 %4166
  %4168 = load double, ptr %4167, align 8, !tbaa !11
  %4169 = load double, ptr %41, align 8, !tbaa !11
  %4170 = load double, ptr %65, align 8, !tbaa !11
  %4171 = load double, ptr %42, align 8, !tbaa !11
  %4172 = call double @llvm.fmuladd.f64(double %4170, double %4171, double %4169)
  %4173 = fsub double %4168, %4172
  %4174 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %4173, ptr %4174, align 8, !tbaa !11
  %4175 = load double, ptr %65, align 8, !tbaa !11
  %4176 = fneg double %4175
  %4177 = load ptr, ptr %21, align 8, !tbaa !5
  %4178 = load i32, ptr %51, align 4, !tbaa !9
  %4179 = load i32, ptr %51, align 4, !tbaa !9
  %4180 = load i32, ptr %29, align 4, !tbaa !9
  %4181 = mul nsw i32 %4179, %4180
  %4182 = add nsw i32 %4178, %4181
  %4183 = sext i32 %4182 to i64
  %4184 = getelementptr inbounds double, ptr %4177, i64 %4183
  %4185 = load double, ptr %4184, align 8, !tbaa !11
  %4186 = fmul double %4176, %4185
  store double %4186, ptr %37, align 8, !tbaa !11
  %4187 = load ptr, ptr %19, align 8, !tbaa !5
  %4188 = load i32, ptr %49, align 4, !tbaa !9
  %4189 = load i32, ptr %49, align 4, !tbaa !9
  %4190 = load i32, ptr %27, align 4, !tbaa !9
  %4191 = mul nsw i32 %4189, %4190
  %4192 = add nsw i32 %4188, %4191
  %4193 = sext i32 %4192 to i64
  %4194 = getelementptr inbounds double, ptr %4187, i64 %4193
  %4195 = load ptr, ptr %20, align 8, !tbaa !5
  %4196 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %4197 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %40, ptr noundef @c_b26, ptr noundef %4194, ptr noundef %4195, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %4196, ptr noundef @c__2, ptr noundef %37, ptr noundef @c_b30, ptr noundef %4197, ptr noundef @c__2, ptr noundef %56, ptr noundef %53, ptr noundef %39)
  %4198 = load i32, ptr %39, align 4, !tbaa !9
  %4199 = icmp ne i32 %4198, 0
  br i1 %4199, label %4200, label %4202

4200:                                             ; preds = %4151
  %4201 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %4201, align 4, !tbaa !9
  br label %4202

4202:                                             ; preds = %4200, %4151
  %4203 = load double, ptr %56, align 8, !tbaa !11
  %4204 = fcmp une double %4203, 1.000000e+00
  br i1 %4204, label %4205, label %4229

4205:                                             ; preds = %4202
  %4206 = load ptr, ptr %18, align 8, !tbaa !5
  %4207 = load i32, ptr %4206, align 4, !tbaa !9
  store i32 %4207, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %4208

4208:                                             ; preds = %4221, %4205
  %4209 = load i32, ptr %43, align 4, !tbaa !9
  %4210 = load i32, ptr %33, align 4, !tbaa !9
  %4211 = icmp sle i32 %4209, %4210
  br i1 %4211, label %4212, label %4224

4212:                                             ; preds = %4208
  %4213 = load ptr, ptr %17, align 8, !tbaa !5
  %4214 = load ptr, ptr %23, align 8, !tbaa !5
  %4215 = load i32, ptr %43, align 4, !tbaa !9
  %4216 = load i32, ptr %31, align 4, !tbaa !9
  %4217 = mul nsw i32 %4215, %4216
  %4218 = add nsw i32 %4217, 1
  %4219 = sext i32 %4218 to i64
  %4220 = getelementptr inbounds double, ptr %4214, i64 %4219
  call void @dscal_(ptr noundef %4213, ptr noundef %56, ptr noundef %4220, ptr noundef @c__1)
  br label %4221

4221:                                             ; preds = %4212
  %4222 = load i32, ptr %43, align 4, !tbaa !9
  %4223 = add nsw i32 %4222, 1
  store i32 %4223, ptr %43, align 4, !tbaa !9
  br label %4208, !llvm.loop !33

4224:                                             ; preds = %4208
  %4225 = load double, ptr %56, align 8, !tbaa !11
  %4226 = load ptr, ptr %25, align 8, !tbaa !5
  %4227 = load double, ptr %4226, align 8, !tbaa !11
  %4228 = fmul double %4227, %4225
  store double %4228, ptr %4226, align 8, !tbaa !11
  br label %4229

4229:                                             ; preds = %4224, %4202
  %4230 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %4231 = load double, ptr %4230, align 16, !tbaa !11
  %4232 = load ptr, ptr %23, align 8, !tbaa !5
  %4233 = load i32, ptr %49, align 4, !tbaa !9
  %4234 = load i32, ptr %51, align 4, !tbaa !9
  %4235 = load i32, ptr %31, align 4, !tbaa !9
  %4236 = mul nsw i32 %4234, %4235
  %4237 = add nsw i32 %4233, %4236
  %4238 = sext i32 %4237 to i64
  %4239 = getelementptr inbounds double, ptr %4232, i64 %4238
  store double %4231, ptr %4239, align 8, !tbaa !11
  %4240 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %4241 = load double, ptr %4240, align 8, !tbaa !11
  %4242 = load ptr, ptr %23, align 8, !tbaa !5
  %4243 = load i32, ptr %50, align 4, !tbaa !9
  %4244 = load i32, ptr %51, align 4, !tbaa !9
  %4245 = load i32, ptr %31, align 4, !tbaa !9
  %4246 = mul nsw i32 %4244, %4245
  %4247 = add nsw i32 %4243, %4246
  %4248 = sext i32 %4247 to i64
  %4249 = getelementptr inbounds double, ptr %4242, i64 %4248
  store double %4241, ptr %4249, align 8, !tbaa !11
  br label %5090

4250:                                             ; preds = %3954, %3950
  %4251 = load i32, ptr %51, align 4, !tbaa !9
  %4252 = load i32, ptr %52, align 4, !tbaa !9
  %4253 = icmp ne i32 %4251, %4252
  br i1 %4253, label %4254, label %4554

4254:                                             ; preds = %4250
  %4255 = load i32, ptr %49, align 4, !tbaa !9
  %4256 = load i32, ptr %50, align 4, !tbaa !9
  %4257 = icmp eq i32 %4255, %4256
  br i1 %4257, label %4258, label %4554

4258:                                             ; preds = %4254
  %4259 = load ptr, ptr %17, align 8, !tbaa !5
  %4260 = load i32, ptr %4259, align 4, !tbaa !9
  %4261 = load i32, ptr %49, align 4, !tbaa !9
  %4262 = sub nsw i32 %4260, %4261
  store i32 %4262, ptr %33, align 4, !tbaa !9
  %4263 = load i32, ptr %49, align 4, !tbaa !9
  %4264 = add nsw i32 %4263, 1
  store i32 %4264, ptr %34, align 4, !tbaa !9
  %4265 = load i32, ptr %49, align 4, !tbaa !9
  %4266 = add nsw i32 %4265, 1
  store i32 %4266, ptr %35, align 4, !tbaa !9
  %4267 = load ptr, ptr %19, align 8, !tbaa !5
  %4268 = load i32, ptr %49, align 4, !tbaa !9
  %4269 = load i32, ptr %34, align 4, !tbaa !9
  %4270 = load ptr, ptr %17, align 8, !tbaa !5
  %4271 = load i32, ptr %4270, align 4, !tbaa !9
  %4272 = icmp sle i32 %4269, %4271
  br i1 %4272, label %4273, label %4275

4273:                                             ; preds = %4258
  %4274 = load i32, ptr %34, align 4, !tbaa !9
  br label %4278

4275:                                             ; preds = %4258
  %4276 = load ptr, ptr %17, align 8, !tbaa !5
  %4277 = load i32, ptr %4276, align 4, !tbaa !9
  br label %4278

4278:                                             ; preds = %4275, %4273
  %4279 = phi i32 [ %4274, %4273 ], [ %4277, %4275 ]
  %4280 = load i32, ptr %27, align 4, !tbaa !9
  %4281 = mul nsw i32 %4279, %4280
  %4282 = add nsw i32 %4268, %4281
  %4283 = sext i32 %4282 to i64
  %4284 = getelementptr inbounds double, ptr %4267, i64 %4283
  %4285 = load ptr, ptr %20, align 8, !tbaa !5
  %4286 = load ptr, ptr %23, align 8, !tbaa !5
  %4287 = load i32, ptr %35, align 4, !tbaa !9
  %4288 = load ptr, ptr %17, align 8, !tbaa !5
  %4289 = load i32, ptr %4288, align 4, !tbaa !9
  %4290 = icmp sle i32 %4287, %4289
  br i1 %4290, label %4291, label %4293

4291:                                             ; preds = %4278
  %4292 = load i32, ptr %35, align 4, !tbaa !9
  br label %4296

4293:                                             ; preds = %4278
  %4294 = load ptr, ptr %17, align 8, !tbaa !5
  %4295 = load i32, ptr %4294, align 4, !tbaa !9
  br label %4296

4296:                                             ; preds = %4293, %4291
  %4297 = phi i32 [ %4292, %4291 ], [ %4295, %4293 ]
  %4298 = load i32, ptr %51, align 4, !tbaa !9
  %4299 = load i32, ptr %31, align 4, !tbaa !9
  %4300 = mul nsw i32 %4298, %4299
  %4301 = add nsw i32 %4297, %4300
  %4302 = sext i32 %4301 to i64
  %4303 = getelementptr inbounds double, ptr %4286, i64 %4302
  %4304 = call double @ddot_(ptr noundef %33, ptr noundef %4284, ptr noundef %4285, ptr noundef %4303, ptr noundef @c__1)
  store double %4304, ptr %41, align 8, !tbaa !11
  %4305 = load ptr, ptr %18, align 8, !tbaa !5
  %4306 = load i32, ptr %4305, align 4, !tbaa !9
  %4307 = load i32, ptr %52, align 4, !tbaa !9
  %4308 = sub nsw i32 %4306, %4307
  store i32 %4308, ptr %33, align 4, !tbaa !9
  %4309 = load i32, ptr %52, align 4, !tbaa !9
  %4310 = add nsw i32 %4309, 1
  store i32 %4310, ptr %34, align 4, !tbaa !9
  %4311 = load i32, ptr %52, align 4, !tbaa !9
  %4312 = add nsw i32 %4311, 1
  store i32 %4312, ptr %35, align 4, !tbaa !9
  %4313 = load ptr, ptr %23, align 8, !tbaa !5
  %4314 = load i32, ptr %49, align 4, !tbaa !9
  %4315 = load i32, ptr %34, align 4, !tbaa !9
  %4316 = load ptr, ptr %18, align 8, !tbaa !5
  %4317 = load i32, ptr %4316, align 4, !tbaa !9
  %4318 = icmp sle i32 %4315, %4317
  br i1 %4318, label %4319, label %4321

4319:                                             ; preds = %4296
  %4320 = load i32, ptr %34, align 4, !tbaa !9
  br label %4324

4321:                                             ; preds = %4296
  %4322 = load ptr, ptr %18, align 8, !tbaa !5
  %4323 = load i32, ptr %4322, align 4, !tbaa !9
  br label %4324

4324:                                             ; preds = %4321, %4319
  %4325 = phi i32 [ %4320, %4319 ], [ %4323, %4321 ]
  %4326 = load i32, ptr %31, align 4, !tbaa !9
  %4327 = mul nsw i32 %4325, %4326
  %4328 = add nsw i32 %4314, %4327
  %4329 = sext i32 %4328 to i64
  %4330 = getelementptr inbounds double, ptr %4313, i64 %4329
  %4331 = load ptr, ptr %24, align 8, !tbaa !5
  %4332 = load ptr, ptr %21, align 8, !tbaa !5
  %4333 = load i32, ptr %51, align 4, !tbaa !9
  %4334 = load i32, ptr %35, align 4, !tbaa !9
  %4335 = load ptr, ptr %18, align 8, !tbaa !5
  %4336 = load i32, ptr %4335, align 4, !tbaa !9
  %4337 = icmp sle i32 %4334, %4336
  br i1 %4337, label %4338, label %4340

4338:                                             ; preds = %4324
  %4339 = load i32, ptr %35, align 4, !tbaa !9
  br label %4343

4340:                                             ; preds = %4324
  %4341 = load ptr, ptr %18, align 8, !tbaa !5
  %4342 = load i32, ptr %4341, align 4, !tbaa !9
  br label %4343

4343:                                             ; preds = %4340, %4338
  %4344 = phi i32 [ %4339, %4338 ], [ %4342, %4340 ]
  %4345 = load i32, ptr %29, align 4, !tbaa !9
  %4346 = mul nsw i32 %4344, %4345
  %4347 = add nsw i32 %4333, %4346
  %4348 = sext i32 %4347 to i64
  %4349 = getelementptr inbounds double, ptr %4332, i64 %4348
  %4350 = load ptr, ptr %22, align 8, !tbaa !5
  %4351 = call double @ddot_(ptr noundef %33, ptr noundef %4330, ptr noundef %4331, ptr noundef %4349, ptr noundef %4350)
  store double %4351, ptr %42, align 8, !tbaa !11
  %4352 = load double, ptr %65, align 8, !tbaa !11
  %4353 = load ptr, ptr %23, align 8, !tbaa !5
  %4354 = load i32, ptr %49, align 4, !tbaa !9
  %4355 = load i32, ptr %51, align 4, !tbaa !9
  %4356 = load i32, ptr %31, align 4, !tbaa !9
  %4357 = mul nsw i32 %4355, %4356
  %4358 = add nsw i32 %4354, %4357
  %4359 = sext i32 %4358 to i64
  %4360 = getelementptr inbounds double, ptr %4353, i64 %4359
  %4361 = load double, ptr %4360, align 8, !tbaa !11
  %4362 = load double, ptr %41, align 8, !tbaa !11
  %4363 = load double, ptr %65, align 8, !tbaa !11
  %4364 = load double, ptr %42, align 8, !tbaa !11
  %4365 = call double @llvm.fmuladd.f64(double %4363, double %4364, double %4362)
  %4366 = fsub double %4361, %4365
  %4367 = fmul double %4352, %4366
  %4368 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %4367, ptr %4368, align 16, !tbaa !11
  %4369 = load ptr, ptr %17, align 8, !tbaa !5
  %4370 = load i32, ptr %4369, align 4, !tbaa !9
  %4371 = load i32, ptr %49, align 4, !tbaa !9
  %4372 = sub nsw i32 %4370, %4371
  store i32 %4372, ptr %33, align 4, !tbaa !9
  %4373 = load i32, ptr %49, align 4, !tbaa !9
  %4374 = add nsw i32 %4373, 1
  store i32 %4374, ptr %34, align 4, !tbaa !9
  %4375 = load i32, ptr %49, align 4, !tbaa !9
  %4376 = add nsw i32 %4375, 1
  store i32 %4376, ptr %35, align 4, !tbaa !9
  %4377 = load ptr, ptr %19, align 8, !tbaa !5
  %4378 = load i32, ptr %49, align 4, !tbaa !9
  %4379 = load i32, ptr %34, align 4, !tbaa !9
  %4380 = load ptr, ptr %17, align 8, !tbaa !5
  %4381 = load i32, ptr %4380, align 4, !tbaa !9
  %4382 = icmp sle i32 %4379, %4381
  br i1 %4382, label %4383, label %4385

4383:                                             ; preds = %4343
  %4384 = load i32, ptr %34, align 4, !tbaa !9
  br label %4388

4385:                                             ; preds = %4343
  %4386 = load ptr, ptr %17, align 8, !tbaa !5
  %4387 = load i32, ptr %4386, align 4, !tbaa !9
  br label %4388

4388:                                             ; preds = %4385, %4383
  %4389 = phi i32 [ %4384, %4383 ], [ %4387, %4385 ]
  %4390 = load i32, ptr %27, align 4, !tbaa !9
  %4391 = mul nsw i32 %4389, %4390
  %4392 = add nsw i32 %4378, %4391
  %4393 = sext i32 %4392 to i64
  %4394 = getelementptr inbounds double, ptr %4377, i64 %4393
  %4395 = load ptr, ptr %20, align 8, !tbaa !5
  %4396 = load ptr, ptr %23, align 8, !tbaa !5
  %4397 = load i32, ptr %35, align 4, !tbaa !9
  %4398 = load ptr, ptr %17, align 8, !tbaa !5
  %4399 = load i32, ptr %4398, align 4, !tbaa !9
  %4400 = icmp sle i32 %4397, %4399
  br i1 %4400, label %4401, label %4403

4401:                                             ; preds = %4388
  %4402 = load i32, ptr %35, align 4, !tbaa !9
  br label %4406

4403:                                             ; preds = %4388
  %4404 = load ptr, ptr %17, align 8, !tbaa !5
  %4405 = load i32, ptr %4404, align 4, !tbaa !9
  br label %4406

4406:                                             ; preds = %4403, %4401
  %4407 = phi i32 [ %4402, %4401 ], [ %4405, %4403 ]
  %4408 = load i32, ptr %52, align 4, !tbaa !9
  %4409 = load i32, ptr %31, align 4, !tbaa !9
  %4410 = mul nsw i32 %4408, %4409
  %4411 = add nsw i32 %4407, %4410
  %4412 = sext i32 %4411 to i64
  %4413 = getelementptr inbounds double, ptr %4396, i64 %4412
  %4414 = call double @ddot_(ptr noundef %33, ptr noundef %4394, ptr noundef %4395, ptr noundef %4413, ptr noundef @c__1)
  store double %4414, ptr %41, align 8, !tbaa !11
  %4415 = load ptr, ptr %18, align 8, !tbaa !5
  %4416 = load i32, ptr %4415, align 4, !tbaa !9
  %4417 = load i32, ptr %52, align 4, !tbaa !9
  %4418 = sub nsw i32 %4416, %4417
  store i32 %4418, ptr %33, align 4, !tbaa !9
  %4419 = load i32, ptr %52, align 4, !tbaa !9
  %4420 = add nsw i32 %4419, 1
  store i32 %4420, ptr %34, align 4, !tbaa !9
  %4421 = load i32, ptr %52, align 4, !tbaa !9
  %4422 = add nsw i32 %4421, 1
  store i32 %4422, ptr %35, align 4, !tbaa !9
  %4423 = load ptr, ptr %23, align 8, !tbaa !5
  %4424 = load i32, ptr %49, align 4, !tbaa !9
  %4425 = load i32, ptr %34, align 4, !tbaa !9
  %4426 = load ptr, ptr %18, align 8, !tbaa !5
  %4427 = load i32, ptr %4426, align 4, !tbaa !9
  %4428 = icmp sle i32 %4425, %4427
  br i1 %4428, label %4429, label %4431

4429:                                             ; preds = %4406
  %4430 = load i32, ptr %34, align 4, !tbaa !9
  br label %4434

4431:                                             ; preds = %4406
  %4432 = load ptr, ptr %18, align 8, !tbaa !5
  %4433 = load i32, ptr %4432, align 4, !tbaa !9
  br label %4434

4434:                                             ; preds = %4431, %4429
  %4435 = phi i32 [ %4430, %4429 ], [ %4433, %4431 ]
  %4436 = load i32, ptr %31, align 4, !tbaa !9
  %4437 = mul nsw i32 %4435, %4436
  %4438 = add nsw i32 %4424, %4437
  %4439 = sext i32 %4438 to i64
  %4440 = getelementptr inbounds double, ptr %4423, i64 %4439
  %4441 = load ptr, ptr %24, align 8, !tbaa !5
  %4442 = load ptr, ptr %21, align 8, !tbaa !5
  %4443 = load i32, ptr %52, align 4, !tbaa !9
  %4444 = load i32, ptr %35, align 4, !tbaa !9
  %4445 = load ptr, ptr %18, align 8, !tbaa !5
  %4446 = load i32, ptr %4445, align 4, !tbaa !9
  %4447 = icmp sle i32 %4444, %4446
  br i1 %4447, label %4448, label %4450

4448:                                             ; preds = %4434
  %4449 = load i32, ptr %35, align 4, !tbaa !9
  br label %4453

4450:                                             ; preds = %4434
  %4451 = load ptr, ptr %18, align 8, !tbaa !5
  %4452 = load i32, ptr %4451, align 4, !tbaa !9
  br label %4453

4453:                                             ; preds = %4450, %4448
  %4454 = phi i32 [ %4449, %4448 ], [ %4452, %4450 ]
  %4455 = load i32, ptr %29, align 4, !tbaa !9
  %4456 = mul nsw i32 %4454, %4455
  %4457 = add nsw i32 %4443, %4456
  %4458 = sext i32 %4457 to i64
  %4459 = getelementptr inbounds double, ptr %4442, i64 %4458
  %4460 = load ptr, ptr %22, align 8, !tbaa !5
  %4461 = call double @ddot_(ptr noundef %33, ptr noundef %4440, ptr noundef %4441, ptr noundef %4459, ptr noundef %4460)
  store double %4461, ptr %42, align 8, !tbaa !11
  %4462 = load double, ptr %65, align 8, !tbaa !11
  %4463 = load ptr, ptr %23, align 8, !tbaa !5
  %4464 = load i32, ptr %49, align 4, !tbaa !9
  %4465 = load i32, ptr %52, align 4, !tbaa !9
  %4466 = load i32, ptr %31, align 4, !tbaa !9
  %4467 = mul nsw i32 %4465, %4466
  %4468 = add nsw i32 %4464, %4467
  %4469 = sext i32 %4468 to i64
  %4470 = getelementptr inbounds double, ptr %4463, i64 %4469
  %4471 = load double, ptr %4470, align 8, !tbaa !11
  %4472 = load double, ptr %41, align 8, !tbaa !11
  %4473 = load double, ptr %65, align 8, !tbaa !11
  %4474 = load double, ptr %42, align 8, !tbaa !11
  %4475 = call double @llvm.fmuladd.f64(double %4473, double %4474, double %4472)
  %4476 = fsub double %4471, %4475
  %4477 = fmul double %4462, %4476
  %4478 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %4477, ptr %4478, align 8, !tbaa !11
  %4479 = load double, ptr %65, align 8, !tbaa !11
  %4480 = fneg double %4479
  %4481 = load ptr, ptr %19, align 8, !tbaa !5
  %4482 = load i32, ptr %49, align 4, !tbaa !9
  %4483 = load i32, ptr %49, align 4, !tbaa !9
  %4484 = load i32, ptr %27, align 4, !tbaa !9
  %4485 = mul nsw i32 %4483, %4484
  %4486 = add nsw i32 %4482, %4485
  %4487 = sext i32 %4486 to i64
  %4488 = getelementptr inbounds double, ptr %4481, i64 %4487
  %4489 = load double, ptr %4488, align 8, !tbaa !11
  %4490 = fmul double %4480, %4489
  store double %4490, ptr %37, align 8, !tbaa !11
  %4491 = load ptr, ptr %21, align 8, !tbaa !5
  %4492 = load i32, ptr %51, align 4, !tbaa !9
  %4493 = load i32, ptr %51, align 4, !tbaa !9
  %4494 = load i32, ptr %29, align 4, !tbaa !9
  %4495 = mul nsw i32 %4493, %4494
  %4496 = add nsw i32 %4492, %4495
  %4497 = sext i32 %4496 to i64
  %4498 = getelementptr inbounds double, ptr %4491, i64 %4497
  %4499 = load ptr, ptr %22, align 8, !tbaa !5
  %4500 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %4501 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %40, ptr noundef @c_b26, ptr noundef %4498, ptr noundef %4499, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %4500, ptr noundef @c__2, ptr noundef %37, ptr noundef @c_b30, ptr noundef %4501, ptr noundef @c__2, ptr noundef %56, ptr noundef %53, ptr noundef %39)
  %4502 = load i32, ptr %39, align 4, !tbaa !9
  %4503 = icmp ne i32 %4502, 0
  br i1 %4503, label %4504, label %4506

4504:                                             ; preds = %4453
  %4505 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %4505, align 4, !tbaa !9
  br label %4506

4506:                                             ; preds = %4504, %4453
  %4507 = load double, ptr %56, align 8, !tbaa !11
  %4508 = fcmp une double %4507, 1.000000e+00
  br i1 %4508, label %4509, label %4533

4509:                                             ; preds = %4506
  %4510 = load ptr, ptr %18, align 8, !tbaa !5
  %4511 = load i32, ptr %4510, align 4, !tbaa !9
  store i32 %4511, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %4512

4512:                                             ; preds = %4525, %4509
  %4513 = load i32, ptr %43, align 4, !tbaa !9
  %4514 = load i32, ptr %33, align 4, !tbaa !9
  %4515 = icmp sle i32 %4513, %4514
  br i1 %4515, label %4516, label %4528

4516:                                             ; preds = %4512
  %4517 = load ptr, ptr %17, align 8, !tbaa !5
  %4518 = load ptr, ptr %23, align 8, !tbaa !5
  %4519 = load i32, ptr %43, align 4, !tbaa !9
  %4520 = load i32, ptr %31, align 4, !tbaa !9
  %4521 = mul nsw i32 %4519, %4520
  %4522 = add nsw i32 %4521, 1
  %4523 = sext i32 %4522 to i64
  %4524 = getelementptr inbounds double, ptr %4518, i64 %4523
  call void @dscal_(ptr noundef %4517, ptr noundef %56, ptr noundef %4524, ptr noundef @c__1)
  br label %4525

4525:                                             ; preds = %4516
  %4526 = load i32, ptr %43, align 4, !tbaa !9
  %4527 = add nsw i32 %4526, 1
  store i32 %4527, ptr %43, align 4, !tbaa !9
  br label %4512, !llvm.loop !34

4528:                                             ; preds = %4512
  %4529 = load double, ptr %56, align 8, !tbaa !11
  %4530 = load ptr, ptr %25, align 8, !tbaa !5
  %4531 = load double, ptr %4530, align 8, !tbaa !11
  %4532 = fmul double %4531, %4529
  store double %4532, ptr %4530, align 8, !tbaa !11
  br label %4533

4533:                                             ; preds = %4528, %4506
  %4534 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %4535 = load double, ptr %4534, align 16, !tbaa !11
  %4536 = load ptr, ptr %23, align 8, !tbaa !5
  %4537 = load i32, ptr %49, align 4, !tbaa !9
  %4538 = load i32, ptr %51, align 4, !tbaa !9
  %4539 = load i32, ptr %31, align 4, !tbaa !9
  %4540 = mul nsw i32 %4538, %4539
  %4541 = add nsw i32 %4537, %4540
  %4542 = sext i32 %4541 to i64
  %4543 = getelementptr inbounds double, ptr %4536, i64 %4542
  store double %4535, ptr %4543, align 8, !tbaa !11
  %4544 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %4545 = load double, ptr %4544, align 8, !tbaa !11
  %4546 = load ptr, ptr %23, align 8, !tbaa !5
  %4547 = load i32, ptr %49, align 4, !tbaa !9
  %4548 = load i32, ptr %52, align 4, !tbaa !9
  %4549 = load i32, ptr %31, align 4, !tbaa !9
  %4550 = mul nsw i32 %4548, %4549
  %4551 = add nsw i32 %4547, %4550
  %4552 = sext i32 %4551 to i64
  %4553 = getelementptr inbounds double, ptr %4546, i64 %4552
  store double %4545, ptr %4553, align 8, !tbaa !11
  br label %5089

4554:                                             ; preds = %4254, %4250
  %4555 = load i32, ptr %51, align 4, !tbaa !9
  %4556 = load i32, ptr %52, align 4, !tbaa !9
  %4557 = icmp ne i32 %4555, %4556
  br i1 %4557, label %4558, label %5088

4558:                                             ; preds = %4554
  %4559 = load i32, ptr %49, align 4, !tbaa !9
  %4560 = load i32, ptr %50, align 4, !tbaa !9
  %4561 = icmp ne i32 %4559, %4560
  br i1 %4561, label %4562, label %5088

4562:                                             ; preds = %4558
  %4563 = load ptr, ptr %17, align 8, !tbaa !5
  %4564 = load i32, ptr %4563, align 4, !tbaa !9
  %4565 = load i32, ptr %50, align 4, !tbaa !9
  %4566 = sub nsw i32 %4564, %4565
  store i32 %4566, ptr %33, align 4, !tbaa !9
  %4567 = load i32, ptr %50, align 4, !tbaa !9
  %4568 = add nsw i32 %4567, 1
  store i32 %4568, ptr %34, align 4, !tbaa !9
  %4569 = load i32, ptr %50, align 4, !tbaa !9
  %4570 = add nsw i32 %4569, 1
  store i32 %4570, ptr %35, align 4, !tbaa !9
  %4571 = load ptr, ptr %19, align 8, !tbaa !5
  %4572 = load i32, ptr %49, align 4, !tbaa !9
  %4573 = load i32, ptr %34, align 4, !tbaa !9
  %4574 = load ptr, ptr %17, align 8, !tbaa !5
  %4575 = load i32, ptr %4574, align 4, !tbaa !9
  %4576 = icmp sle i32 %4573, %4575
  br i1 %4576, label %4577, label %4579

4577:                                             ; preds = %4562
  %4578 = load i32, ptr %34, align 4, !tbaa !9
  br label %4582

4579:                                             ; preds = %4562
  %4580 = load ptr, ptr %17, align 8, !tbaa !5
  %4581 = load i32, ptr %4580, align 4, !tbaa !9
  br label %4582

4582:                                             ; preds = %4579, %4577
  %4583 = phi i32 [ %4578, %4577 ], [ %4581, %4579 ]
  %4584 = load i32, ptr %27, align 4, !tbaa !9
  %4585 = mul nsw i32 %4583, %4584
  %4586 = add nsw i32 %4572, %4585
  %4587 = sext i32 %4586 to i64
  %4588 = getelementptr inbounds double, ptr %4571, i64 %4587
  %4589 = load ptr, ptr %20, align 8, !tbaa !5
  %4590 = load ptr, ptr %23, align 8, !tbaa !5
  %4591 = load i32, ptr %35, align 4, !tbaa !9
  %4592 = load ptr, ptr %17, align 8, !tbaa !5
  %4593 = load i32, ptr %4592, align 4, !tbaa !9
  %4594 = icmp sle i32 %4591, %4593
  br i1 %4594, label %4595, label %4597

4595:                                             ; preds = %4582
  %4596 = load i32, ptr %35, align 4, !tbaa !9
  br label %4600

4597:                                             ; preds = %4582
  %4598 = load ptr, ptr %17, align 8, !tbaa !5
  %4599 = load i32, ptr %4598, align 4, !tbaa !9
  br label %4600

4600:                                             ; preds = %4597, %4595
  %4601 = phi i32 [ %4596, %4595 ], [ %4599, %4597 ]
  %4602 = load i32, ptr %51, align 4, !tbaa !9
  %4603 = load i32, ptr %31, align 4, !tbaa !9
  %4604 = mul nsw i32 %4602, %4603
  %4605 = add nsw i32 %4601, %4604
  %4606 = sext i32 %4605 to i64
  %4607 = getelementptr inbounds double, ptr %4590, i64 %4606
  %4608 = call double @ddot_(ptr noundef %33, ptr noundef %4588, ptr noundef %4589, ptr noundef %4607, ptr noundef @c__1)
  store double %4608, ptr %41, align 8, !tbaa !11
  %4609 = load ptr, ptr %18, align 8, !tbaa !5
  %4610 = load i32, ptr %4609, align 4, !tbaa !9
  %4611 = load i32, ptr %52, align 4, !tbaa !9
  %4612 = sub nsw i32 %4610, %4611
  store i32 %4612, ptr %33, align 4, !tbaa !9
  %4613 = load i32, ptr %52, align 4, !tbaa !9
  %4614 = add nsw i32 %4613, 1
  store i32 %4614, ptr %34, align 4, !tbaa !9
  %4615 = load i32, ptr %52, align 4, !tbaa !9
  %4616 = add nsw i32 %4615, 1
  store i32 %4616, ptr %35, align 4, !tbaa !9
  %4617 = load ptr, ptr %23, align 8, !tbaa !5
  %4618 = load i32, ptr %49, align 4, !tbaa !9
  %4619 = load i32, ptr %34, align 4, !tbaa !9
  %4620 = load ptr, ptr %18, align 8, !tbaa !5
  %4621 = load i32, ptr %4620, align 4, !tbaa !9
  %4622 = icmp sle i32 %4619, %4621
  br i1 %4622, label %4623, label %4625

4623:                                             ; preds = %4600
  %4624 = load i32, ptr %34, align 4, !tbaa !9
  br label %4628

4625:                                             ; preds = %4600
  %4626 = load ptr, ptr %18, align 8, !tbaa !5
  %4627 = load i32, ptr %4626, align 4, !tbaa !9
  br label %4628

4628:                                             ; preds = %4625, %4623
  %4629 = phi i32 [ %4624, %4623 ], [ %4627, %4625 ]
  %4630 = load i32, ptr %31, align 4, !tbaa !9
  %4631 = mul nsw i32 %4629, %4630
  %4632 = add nsw i32 %4618, %4631
  %4633 = sext i32 %4632 to i64
  %4634 = getelementptr inbounds double, ptr %4617, i64 %4633
  %4635 = load ptr, ptr %24, align 8, !tbaa !5
  %4636 = load ptr, ptr %21, align 8, !tbaa !5
  %4637 = load i32, ptr %51, align 4, !tbaa !9
  %4638 = load i32, ptr %35, align 4, !tbaa !9
  %4639 = load ptr, ptr %18, align 8, !tbaa !5
  %4640 = load i32, ptr %4639, align 4, !tbaa !9
  %4641 = icmp sle i32 %4638, %4640
  br i1 %4641, label %4642, label %4644

4642:                                             ; preds = %4628
  %4643 = load i32, ptr %35, align 4, !tbaa !9
  br label %4647

4644:                                             ; preds = %4628
  %4645 = load ptr, ptr %18, align 8, !tbaa !5
  %4646 = load i32, ptr %4645, align 4, !tbaa !9
  br label %4647

4647:                                             ; preds = %4644, %4642
  %4648 = phi i32 [ %4643, %4642 ], [ %4646, %4644 ]
  %4649 = load i32, ptr %29, align 4, !tbaa !9
  %4650 = mul nsw i32 %4648, %4649
  %4651 = add nsw i32 %4637, %4650
  %4652 = sext i32 %4651 to i64
  %4653 = getelementptr inbounds double, ptr %4636, i64 %4652
  %4654 = load ptr, ptr %22, align 8, !tbaa !5
  %4655 = call double @ddot_(ptr noundef %33, ptr noundef %4634, ptr noundef %4635, ptr noundef %4653, ptr noundef %4654)
  store double %4655, ptr %42, align 8, !tbaa !11
  %4656 = load ptr, ptr %23, align 8, !tbaa !5
  %4657 = load i32, ptr %49, align 4, !tbaa !9
  %4658 = load i32, ptr %51, align 4, !tbaa !9
  %4659 = load i32, ptr %31, align 4, !tbaa !9
  %4660 = mul nsw i32 %4658, %4659
  %4661 = add nsw i32 %4657, %4660
  %4662 = sext i32 %4661 to i64
  %4663 = getelementptr inbounds double, ptr %4656, i64 %4662
  %4664 = load double, ptr %4663, align 8, !tbaa !11
  %4665 = load double, ptr %41, align 8, !tbaa !11
  %4666 = load double, ptr %65, align 8, !tbaa !11
  %4667 = load double, ptr %42, align 8, !tbaa !11
  %4668 = call double @llvm.fmuladd.f64(double %4666, double %4667, double %4665)
  %4669 = fsub double %4664, %4668
  %4670 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  store double %4669, ptr %4670, align 16, !tbaa !11
  %4671 = load ptr, ptr %17, align 8, !tbaa !5
  %4672 = load i32, ptr %4671, align 4, !tbaa !9
  %4673 = load i32, ptr %50, align 4, !tbaa !9
  %4674 = sub nsw i32 %4672, %4673
  store i32 %4674, ptr %33, align 4, !tbaa !9
  %4675 = load i32, ptr %50, align 4, !tbaa !9
  %4676 = add nsw i32 %4675, 1
  store i32 %4676, ptr %34, align 4, !tbaa !9
  %4677 = load i32, ptr %50, align 4, !tbaa !9
  %4678 = add nsw i32 %4677, 1
  store i32 %4678, ptr %35, align 4, !tbaa !9
  %4679 = load ptr, ptr %19, align 8, !tbaa !5
  %4680 = load i32, ptr %49, align 4, !tbaa !9
  %4681 = load i32, ptr %34, align 4, !tbaa !9
  %4682 = load ptr, ptr %17, align 8, !tbaa !5
  %4683 = load i32, ptr %4682, align 4, !tbaa !9
  %4684 = icmp sle i32 %4681, %4683
  br i1 %4684, label %4685, label %4687

4685:                                             ; preds = %4647
  %4686 = load i32, ptr %34, align 4, !tbaa !9
  br label %4690

4687:                                             ; preds = %4647
  %4688 = load ptr, ptr %17, align 8, !tbaa !5
  %4689 = load i32, ptr %4688, align 4, !tbaa !9
  br label %4690

4690:                                             ; preds = %4687, %4685
  %4691 = phi i32 [ %4686, %4685 ], [ %4689, %4687 ]
  %4692 = load i32, ptr %27, align 4, !tbaa !9
  %4693 = mul nsw i32 %4691, %4692
  %4694 = add nsw i32 %4680, %4693
  %4695 = sext i32 %4694 to i64
  %4696 = getelementptr inbounds double, ptr %4679, i64 %4695
  %4697 = load ptr, ptr %20, align 8, !tbaa !5
  %4698 = load ptr, ptr %23, align 8, !tbaa !5
  %4699 = load i32, ptr %35, align 4, !tbaa !9
  %4700 = load ptr, ptr %17, align 8, !tbaa !5
  %4701 = load i32, ptr %4700, align 4, !tbaa !9
  %4702 = icmp sle i32 %4699, %4701
  br i1 %4702, label %4703, label %4705

4703:                                             ; preds = %4690
  %4704 = load i32, ptr %35, align 4, !tbaa !9
  br label %4708

4705:                                             ; preds = %4690
  %4706 = load ptr, ptr %17, align 8, !tbaa !5
  %4707 = load i32, ptr %4706, align 4, !tbaa !9
  br label %4708

4708:                                             ; preds = %4705, %4703
  %4709 = phi i32 [ %4704, %4703 ], [ %4707, %4705 ]
  %4710 = load i32, ptr %52, align 4, !tbaa !9
  %4711 = load i32, ptr %31, align 4, !tbaa !9
  %4712 = mul nsw i32 %4710, %4711
  %4713 = add nsw i32 %4709, %4712
  %4714 = sext i32 %4713 to i64
  %4715 = getelementptr inbounds double, ptr %4698, i64 %4714
  %4716 = call double @ddot_(ptr noundef %33, ptr noundef %4696, ptr noundef %4697, ptr noundef %4715, ptr noundef @c__1)
  store double %4716, ptr %41, align 8, !tbaa !11
  %4717 = load ptr, ptr %18, align 8, !tbaa !5
  %4718 = load i32, ptr %4717, align 4, !tbaa !9
  %4719 = load i32, ptr %52, align 4, !tbaa !9
  %4720 = sub nsw i32 %4718, %4719
  store i32 %4720, ptr %33, align 4, !tbaa !9
  %4721 = load i32, ptr %52, align 4, !tbaa !9
  %4722 = add nsw i32 %4721, 1
  store i32 %4722, ptr %34, align 4, !tbaa !9
  %4723 = load i32, ptr %52, align 4, !tbaa !9
  %4724 = add nsw i32 %4723, 1
  store i32 %4724, ptr %35, align 4, !tbaa !9
  %4725 = load ptr, ptr %23, align 8, !tbaa !5
  %4726 = load i32, ptr %49, align 4, !tbaa !9
  %4727 = load i32, ptr %34, align 4, !tbaa !9
  %4728 = load ptr, ptr %18, align 8, !tbaa !5
  %4729 = load i32, ptr %4728, align 4, !tbaa !9
  %4730 = icmp sle i32 %4727, %4729
  br i1 %4730, label %4731, label %4733

4731:                                             ; preds = %4708
  %4732 = load i32, ptr %34, align 4, !tbaa !9
  br label %4736

4733:                                             ; preds = %4708
  %4734 = load ptr, ptr %18, align 8, !tbaa !5
  %4735 = load i32, ptr %4734, align 4, !tbaa !9
  br label %4736

4736:                                             ; preds = %4733, %4731
  %4737 = phi i32 [ %4732, %4731 ], [ %4735, %4733 ]
  %4738 = load i32, ptr %31, align 4, !tbaa !9
  %4739 = mul nsw i32 %4737, %4738
  %4740 = add nsw i32 %4726, %4739
  %4741 = sext i32 %4740 to i64
  %4742 = getelementptr inbounds double, ptr %4725, i64 %4741
  %4743 = load ptr, ptr %24, align 8, !tbaa !5
  %4744 = load ptr, ptr %21, align 8, !tbaa !5
  %4745 = load i32, ptr %52, align 4, !tbaa !9
  %4746 = load i32, ptr %35, align 4, !tbaa !9
  %4747 = load ptr, ptr %18, align 8, !tbaa !5
  %4748 = load i32, ptr %4747, align 4, !tbaa !9
  %4749 = icmp sle i32 %4746, %4748
  br i1 %4749, label %4750, label %4752

4750:                                             ; preds = %4736
  %4751 = load i32, ptr %35, align 4, !tbaa !9
  br label %4755

4752:                                             ; preds = %4736
  %4753 = load ptr, ptr %18, align 8, !tbaa !5
  %4754 = load i32, ptr %4753, align 4, !tbaa !9
  br label %4755

4755:                                             ; preds = %4752, %4750
  %4756 = phi i32 [ %4751, %4750 ], [ %4754, %4752 ]
  %4757 = load i32, ptr %29, align 4, !tbaa !9
  %4758 = mul nsw i32 %4756, %4757
  %4759 = add nsw i32 %4745, %4758
  %4760 = sext i32 %4759 to i64
  %4761 = getelementptr inbounds double, ptr %4744, i64 %4760
  %4762 = load ptr, ptr %22, align 8, !tbaa !5
  %4763 = call double @ddot_(ptr noundef %33, ptr noundef %4742, ptr noundef %4743, ptr noundef %4761, ptr noundef %4762)
  store double %4763, ptr %42, align 8, !tbaa !11
  %4764 = load ptr, ptr %23, align 8, !tbaa !5
  %4765 = load i32, ptr %49, align 4, !tbaa !9
  %4766 = load i32, ptr %52, align 4, !tbaa !9
  %4767 = load i32, ptr %31, align 4, !tbaa !9
  %4768 = mul nsw i32 %4766, %4767
  %4769 = add nsw i32 %4765, %4768
  %4770 = sext i32 %4769 to i64
  %4771 = getelementptr inbounds double, ptr %4764, i64 %4770
  %4772 = load double, ptr %4771, align 8, !tbaa !11
  %4773 = load double, ptr %41, align 8, !tbaa !11
  %4774 = load double, ptr %65, align 8, !tbaa !11
  %4775 = load double, ptr %42, align 8, !tbaa !11
  %4776 = call double @llvm.fmuladd.f64(double %4774, double %4775, double %4773)
  %4777 = fsub double %4772, %4776
  %4778 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  store double %4777, ptr %4778, align 16, !tbaa !11
  %4779 = load ptr, ptr %17, align 8, !tbaa !5
  %4780 = load i32, ptr %4779, align 4, !tbaa !9
  %4781 = load i32, ptr %50, align 4, !tbaa !9
  %4782 = sub nsw i32 %4780, %4781
  store i32 %4782, ptr %33, align 4, !tbaa !9
  %4783 = load i32, ptr %50, align 4, !tbaa !9
  %4784 = add nsw i32 %4783, 1
  store i32 %4784, ptr %34, align 4, !tbaa !9
  %4785 = load i32, ptr %50, align 4, !tbaa !9
  %4786 = add nsw i32 %4785, 1
  store i32 %4786, ptr %35, align 4, !tbaa !9
  %4787 = load ptr, ptr %19, align 8, !tbaa !5
  %4788 = load i32, ptr %50, align 4, !tbaa !9
  %4789 = load i32, ptr %34, align 4, !tbaa !9
  %4790 = load ptr, ptr %17, align 8, !tbaa !5
  %4791 = load i32, ptr %4790, align 4, !tbaa !9
  %4792 = icmp sle i32 %4789, %4791
  br i1 %4792, label %4793, label %4795

4793:                                             ; preds = %4755
  %4794 = load i32, ptr %34, align 4, !tbaa !9
  br label %4798

4795:                                             ; preds = %4755
  %4796 = load ptr, ptr %17, align 8, !tbaa !5
  %4797 = load i32, ptr %4796, align 4, !tbaa !9
  br label %4798

4798:                                             ; preds = %4795, %4793
  %4799 = phi i32 [ %4794, %4793 ], [ %4797, %4795 ]
  %4800 = load i32, ptr %27, align 4, !tbaa !9
  %4801 = mul nsw i32 %4799, %4800
  %4802 = add nsw i32 %4788, %4801
  %4803 = sext i32 %4802 to i64
  %4804 = getelementptr inbounds double, ptr %4787, i64 %4803
  %4805 = load ptr, ptr %20, align 8, !tbaa !5
  %4806 = load ptr, ptr %23, align 8, !tbaa !5
  %4807 = load i32, ptr %35, align 4, !tbaa !9
  %4808 = load ptr, ptr %17, align 8, !tbaa !5
  %4809 = load i32, ptr %4808, align 4, !tbaa !9
  %4810 = icmp sle i32 %4807, %4809
  br i1 %4810, label %4811, label %4813

4811:                                             ; preds = %4798
  %4812 = load i32, ptr %35, align 4, !tbaa !9
  br label %4816

4813:                                             ; preds = %4798
  %4814 = load ptr, ptr %17, align 8, !tbaa !5
  %4815 = load i32, ptr %4814, align 4, !tbaa !9
  br label %4816

4816:                                             ; preds = %4813, %4811
  %4817 = phi i32 [ %4812, %4811 ], [ %4815, %4813 ]
  %4818 = load i32, ptr %51, align 4, !tbaa !9
  %4819 = load i32, ptr %31, align 4, !tbaa !9
  %4820 = mul nsw i32 %4818, %4819
  %4821 = add nsw i32 %4817, %4820
  %4822 = sext i32 %4821 to i64
  %4823 = getelementptr inbounds double, ptr %4806, i64 %4822
  %4824 = call double @ddot_(ptr noundef %33, ptr noundef %4804, ptr noundef %4805, ptr noundef %4823, ptr noundef @c__1)
  store double %4824, ptr %41, align 8, !tbaa !11
  %4825 = load ptr, ptr %18, align 8, !tbaa !5
  %4826 = load i32, ptr %4825, align 4, !tbaa !9
  %4827 = load i32, ptr %52, align 4, !tbaa !9
  %4828 = sub nsw i32 %4826, %4827
  store i32 %4828, ptr %33, align 4, !tbaa !9
  %4829 = load i32, ptr %52, align 4, !tbaa !9
  %4830 = add nsw i32 %4829, 1
  store i32 %4830, ptr %34, align 4, !tbaa !9
  %4831 = load i32, ptr %52, align 4, !tbaa !9
  %4832 = add nsw i32 %4831, 1
  store i32 %4832, ptr %35, align 4, !tbaa !9
  %4833 = load ptr, ptr %23, align 8, !tbaa !5
  %4834 = load i32, ptr %50, align 4, !tbaa !9
  %4835 = load i32, ptr %34, align 4, !tbaa !9
  %4836 = load ptr, ptr %18, align 8, !tbaa !5
  %4837 = load i32, ptr %4836, align 4, !tbaa !9
  %4838 = icmp sle i32 %4835, %4837
  br i1 %4838, label %4839, label %4841

4839:                                             ; preds = %4816
  %4840 = load i32, ptr %34, align 4, !tbaa !9
  br label %4844

4841:                                             ; preds = %4816
  %4842 = load ptr, ptr %18, align 8, !tbaa !5
  %4843 = load i32, ptr %4842, align 4, !tbaa !9
  br label %4844

4844:                                             ; preds = %4841, %4839
  %4845 = phi i32 [ %4840, %4839 ], [ %4843, %4841 ]
  %4846 = load i32, ptr %31, align 4, !tbaa !9
  %4847 = mul nsw i32 %4845, %4846
  %4848 = add nsw i32 %4834, %4847
  %4849 = sext i32 %4848 to i64
  %4850 = getelementptr inbounds double, ptr %4833, i64 %4849
  %4851 = load ptr, ptr %24, align 8, !tbaa !5
  %4852 = load ptr, ptr %21, align 8, !tbaa !5
  %4853 = load i32, ptr %51, align 4, !tbaa !9
  %4854 = load i32, ptr %35, align 4, !tbaa !9
  %4855 = load ptr, ptr %18, align 8, !tbaa !5
  %4856 = load i32, ptr %4855, align 4, !tbaa !9
  %4857 = icmp sle i32 %4854, %4856
  br i1 %4857, label %4858, label %4860

4858:                                             ; preds = %4844
  %4859 = load i32, ptr %35, align 4, !tbaa !9
  br label %4863

4860:                                             ; preds = %4844
  %4861 = load ptr, ptr %18, align 8, !tbaa !5
  %4862 = load i32, ptr %4861, align 4, !tbaa !9
  br label %4863

4863:                                             ; preds = %4860, %4858
  %4864 = phi i32 [ %4859, %4858 ], [ %4862, %4860 ]
  %4865 = load i32, ptr %29, align 4, !tbaa !9
  %4866 = mul nsw i32 %4864, %4865
  %4867 = add nsw i32 %4853, %4866
  %4868 = sext i32 %4867 to i64
  %4869 = getelementptr inbounds double, ptr %4852, i64 %4868
  %4870 = load ptr, ptr %22, align 8, !tbaa !5
  %4871 = call double @ddot_(ptr noundef %33, ptr noundef %4850, ptr noundef %4851, ptr noundef %4869, ptr noundef %4870)
  store double %4871, ptr %42, align 8, !tbaa !11
  %4872 = load ptr, ptr %23, align 8, !tbaa !5
  %4873 = load i32, ptr %50, align 4, !tbaa !9
  %4874 = load i32, ptr %51, align 4, !tbaa !9
  %4875 = load i32, ptr %31, align 4, !tbaa !9
  %4876 = mul nsw i32 %4874, %4875
  %4877 = add nsw i32 %4873, %4876
  %4878 = sext i32 %4877 to i64
  %4879 = getelementptr inbounds double, ptr %4872, i64 %4878
  %4880 = load double, ptr %4879, align 8, !tbaa !11
  %4881 = load double, ptr %41, align 8, !tbaa !11
  %4882 = load double, ptr %65, align 8, !tbaa !11
  %4883 = load double, ptr %42, align 8, !tbaa !11
  %4884 = call double @llvm.fmuladd.f64(double %4882, double %4883, double %4881)
  %4885 = fsub double %4880, %4884
  %4886 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  store double %4885, ptr %4886, align 8, !tbaa !11
  %4887 = load ptr, ptr %17, align 8, !tbaa !5
  %4888 = load i32, ptr %4887, align 4, !tbaa !9
  %4889 = load i32, ptr %50, align 4, !tbaa !9
  %4890 = sub nsw i32 %4888, %4889
  store i32 %4890, ptr %33, align 4, !tbaa !9
  %4891 = load i32, ptr %50, align 4, !tbaa !9
  %4892 = add nsw i32 %4891, 1
  store i32 %4892, ptr %34, align 4, !tbaa !9
  %4893 = load i32, ptr %50, align 4, !tbaa !9
  %4894 = add nsw i32 %4893, 1
  store i32 %4894, ptr %35, align 4, !tbaa !9
  %4895 = load ptr, ptr %19, align 8, !tbaa !5
  %4896 = load i32, ptr %50, align 4, !tbaa !9
  %4897 = load i32, ptr %34, align 4, !tbaa !9
  %4898 = load ptr, ptr %17, align 8, !tbaa !5
  %4899 = load i32, ptr %4898, align 4, !tbaa !9
  %4900 = icmp sle i32 %4897, %4899
  br i1 %4900, label %4901, label %4903

4901:                                             ; preds = %4863
  %4902 = load i32, ptr %34, align 4, !tbaa !9
  br label %4906

4903:                                             ; preds = %4863
  %4904 = load ptr, ptr %17, align 8, !tbaa !5
  %4905 = load i32, ptr %4904, align 4, !tbaa !9
  br label %4906

4906:                                             ; preds = %4903, %4901
  %4907 = phi i32 [ %4902, %4901 ], [ %4905, %4903 ]
  %4908 = load i32, ptr %27, align 4, !tbaa !9
  %4909 = mul nsw i32 %4907, %4908
  %4910 = add nsw i32 %4896, %4909
  %4911 = sext i32 %4910 to i64
  %4912 = getelementptr inbounds double, ptr %4895, i64 %4911
  %4913 = load ptr, ptr %20, align 8, !tbaa !5
  %4914 = load ptr, ptr %23, align 8, !tbaa !5
  %4915 = load i32, ptr %35, align 4, !tbaa !9
  %4916 = load ptr, ptr %17, align 8, !tbaa !5
  %4917 = load i32, ptr %4916, align 4, !tbaa !9
  %4918 = icmp sle i32 %4915, %4917
  br i1 %4918, label %4919, label %4921

4919:                                             ; preds = %4906
  %4920 = load i32, ptr %35, align 4, !tbaa !9
  br label %4924

4921:                                             ; preds = %4906
  %4922 = load ptr, ptr %17, align 8, !tbaa !5
  %4923 = load i32, ptr %4922, align 4, !tbaa !9
  br label %4924

4924:                                             ; preds = %4921, %4919
  %4925 = phi i32 [ %4920, %4919 ], [ %4923, %4921 ]
  %4926 = load i32, ptr %52, align 4, !tbaa !9
  %4927 = load i32, ptr %31, align 4, !tbaa !9
  %4928 = mul nsw i32 %4926, %4927
  %4929 = add nsw i32 %4925, %4928
  %4930 = sext i32 %4929 to i64
  %4931 = getelementptr inbounds double, ptr %4914, i64 %4930
  %4932 = call double @ddot_(ptr noundef %33, ptr noundef %4912, ptr noundef %4913, ptr noundef %4931, ptr noundef @c__1)
  store double %4932, ptr %41, align 8, !tbaa !11
  %4933 = load ptr, ptr %18, align 8, !tbaa !5
  %4934 = load i32, ptr %4933, align 4, !tbaa !9
  %4935 = load i32, ptr %52, align 4, !tbaa !9
  %4936 = sub nsw i32 %4934, %4935
  store i32 %4936, ptr %33, align 4, !tbaa !9
  %4937 = load i32, ptr %52, align 4, !tbaa !9
  %4938 = add nsw i32 %4937, 1
  store i32 %4938, ptr %34, align 4, !tbaa !9
  %4939 = load i32, ptr %52, align 4, !tbaa !9
  %4940 = add nsw i32 %4939, 1
  store i32 %4940, ptr %35, align 4, !tbaa !9
  %4941 = load ptr, ptr %23, align 8, !tbaa !5
  %4942 = load i32, ptr %50, align 4, !tbaa !9
  %4943 = load i32, ptr %34, align 4, !tbaa !9
  %4944 = load ptr, ptr %18, align 8, !tbaa !5
  %4945 = load i32, ptr %4944, align 4, !tbaa !9
  %4946 = icmp sle i32 %4943, %4945
  br i1 %4946, label %4947, label %4949

4947:                                             ; preds = %4924
  %4948 = load i32, ptr %34, align 4, !tbaa !9
  br label %4952

4949:                                             ; preds = %4924
  %4950 = load ptr, ptr %18, align 8, !tbaa !5
  %4951 = load i32, ptr %4950, align 4, !tbaa !9
  br label %4952

4952:                                             ; preds = %4949, %4947
  %4953 = phi i32 [ %4948, %4947 ], [ %4951, %4949 ]
  %4954 = load i32, ptr %31, align 4, !tbaa !9
  %4955 = mul nsw i32 %4953, %4954
  %4956 = add nsw i32 %4942, %4955
  %4957 = sext i32 %4956 to i64
  %4958 = getelementptr inbounds double, ptr %4941, i64 %4957
  %4959 = load ptr, ptr %24, align 8, !tbaa !5
  %4960 = load ptr, ptr %21, align 8, !tbaa !5
  %4961 = load i32, ptr %52, align 4, !tbaa !9
  %4962 = load i32, ptr %35, align 4, !tbaa !9
  %4963 = load ptr, ptr %18, align 8, !tbaa !5
  %4964 = load i32, ptr %4963, align 4, !tbaa !9
  %4965 = icmp sle i32 %4962, %4964
  br i1 %4965, label %4966, label %4968

4966:                                             ; preds = %4952
  %4967 = load i32, ptr %35, align 4, !tbaa !9
  br label %4971

4968:                                             ; preds = %4952
  %4969 = load ptr, ptr %18, align 8, !tbaa !5
  %4970 = load i32, ptr %4969, align 4, !tbaa !9
  br label %4971

4971:                                             ; preds = %4968, %4966
  %4972 = phi i32 [ %4967, %4966 ], [ %4970, %4968 ]
  %4973 = load i32, ptr %29, align 4, !tbaa !9
  %4974 = mul nsw i32 %4972, %4973
  %4975 = add nsw i32 %4961, %4974
  %4976 = sext i32 %4975 to i64
  %4977 = getelementptr inbounds double, ptr %4960, i64 %4976
  %4978 = load ptr, ptr %22, align 8, !tbaa !5
  %4979 = call double @ddot_(ptr noundef %33, ptr noundef %4958, ptr noundef %4959, ptr noundef %4977, ptr noundef %4978)
  store double %4979, ptr %42, align 8, !tbaa !11
  %4980 = load ptr, ptr %23, align 8, !tbaa !5
  %4981 = load i32, ptr %50, align 4, !tbaa !9
  %4982 = load i32, ptr %52, align 4, !tbaa !9
  %4983 = load i32, ptr %31, align 4, !tbaa !9
  %4984 = mul nsw i32 %4982, %4983
  %4985 = add nsw i32 %4981, %4984
  %4986 = sext i32 %4985 to i64
  %4987 = getelementptr inbounds double, ptr %4980, i64 %4986
  %4988 = load double, ptr %4987, align 8, !tbaa !11
  %4989 = load double, ptr %41, align 8, !tbaa !11
  %4990 = load double, ptr %65, align 8, !tbaa !11
  %4991 = load double, ptr %42, align 8, !tbaa !11
  %4992 = call double @llvm.fmuladd.f64(double %4990, double %4991, double %4989)
  %4993 = fsub double %4988, %4992
  %4994 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  store double %4993, ptr %4994, align 8, !tbaa !11
  %4995 = load ptr, ptr %16, align 8, !tbaa !5
  %4996 = load ptr, ptr %19, align 8, !tbaa !5
  %4997 = load i32, ptr %49, align 4, !tbaa !9
  %4998 = load i32, ptr %49, align 4, !tbaa !9
  %4999 = load i32, ptr %27, align 4, !tbaa !9
  %5000 = mul nsw i32 %4998, %4999
  %5001 = add nsw i32 %4997, %5000
  %5002 = sext i32 %5001 to i64
  %5003 = getelementptr inbounds double, ptr %4996, i64 %5002
  %5004 = load ptr, ptr %20, align 8, !tbaa !5
  %5005 = load ptr, ptr %21, align 8, !tbaa !5
  %5006 = load i32, ptr %51, align 4, !tbaa !9
  %5007 = load i32, ptr %51, align 4, !tbaa !9
  %5008 = load i32, ptr %29, align 4, !tbaa !9
  %5009 = mul nsw i32 %5007, %5008
  %5010 = add nsw i32 %5006, %5009
  %5011 = sext i32 %5010 to i64
  %5012 = getelementptr inbounds double, ptr %5005, i64 %5011
  %5013 = load ptr, ptr %22, align 8, !tbaa !5
  %5014 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %5015 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  call void @dlasy2_(ptr noundef @c_false, ptr noundef @c_true, ptr noundef %4995, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %5003, ptr noundef %5004, ptr noundef %5012, ptr noundef %5013, ptr noundef %5014, ptr noundef @c__2, ptr noundef %56, ptr noundef %5015, ptr noundef @c__2, ptr noundef %53, ptr noundef %39)
  %5016 = load i32, ptr %39, align 4, !tbaa !9
  %5017 = icmp ne i32 %5016, 0
  br i1 %5017, label %5018, label %5020

5018:                                             ; preds = %4971
  %5019 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 1, ptr %5019, align 4, !tbaa !9
  br label %5020

5020:                                             ; preds = %5018, %4971
  %5021 = load double, ptr %56, align 8, !tbaa !11
  %5022 = fcmp une double %5021, 1.000000e+00
  br i1 %5022, label %5023, label %5047

5023:                                             ; preds = %5020
  %5024 = load ptr, ptr %18, align 8, !tbaa !5
  %5025 = load i32, ptr %5024, align 4, !tbaa !9
  store i32 %5025, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %5026

5026:                                             ; preds = %5039, %5023
  %5027 = load i32, ptr %43, align 4, !tbaa !9
  %5028 = load i32, ptr %33, align 4, !tbaa !9
  %5029 = icmp sle i32 %5027, %5028
  br i1 %5029, label %5030, label %5042

5030:                                             ; preds = %5026
  %5031 = load ptr, ptr %17, align 8, !tbaa !5
  %5032 = load ptr, ptr %23, align 8, !tbaa !5
  %5033 = load i32, ptr %43, align 4, !tbaa !9
  %5034 = load i32, ptr %31, align 4, !tbaa !9
  %5035 = mul nsw i32 %5033, %5034
  %5036 = add nsw i32 %5035, 1
  %5037 = sext i32 %5036 to i64
  %5038 = getelementptr inbounds double, ptr %5032, i64 %5037
  call void @dscal_(ptr noundef %5031, ptr noundef %56, ptr noundef %5038, ptr noundef @c__1)
  br label %5039

5039:                                             ; preds = %5030
  %5040 = load i32, ptr %43, align 4, !tbaa !9
  %5041 = add nsw i32 %5040, 1
  store i32 %5041, ptr %43, align 4, !tbaa !9
  br label %5026, !llvm.loop !35

5042:                                             ; preds = %5026
  %5043 = load double, ptr %56, align 8, !tbaa !11
  %5044 = load ptr, ptr %25, align 8, !tbaa !5
  %5045 = load double, ptr %5044, align 8, !tbaa !11
  %5046 = fmul double %5045, %5043
  store double %5046, ptr %5044, align 8, !tbaa !11
  br label %5047

5047:                                             ; preds = %5042, %5020
  %5048 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 0
  %5049 = load double, ptr %5048, align 16, !tbaa !11
  %5050 = load ptr, ptr %23, align 8, !tbaa !5
  %5051 = load i32, ptr %49, align 4, !tbaa !9
  %5052 = load i32, ptr %51, align 4, !tbaa !9
  %5053 = load i32, ptr %31, align 4, !tbaa !9
  %5054 = mul nsw i32 %5052, %5053
  %5055 = add nsw i32 %5051, %5054
  %5056 = sext i32 %5055 to i64
  %5057 = getelementptr inbounds double, ptr %5050, i64 %5056
  store double %5049, ptr %5057, align 8, !tbaa !11
  %5058 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 2
  %5059 = load double, ptr %5058, align 16, !tbaa !11
  %5060 = load ptr, ptr %23, align 8, !tbaa !5
  %5061 = load i32, ptr %49, align 4, !tbaa !9
  %5062 = load i32, ptr %52, align 4, !tbaa !9
  %5063 = load i32, ptr %31, align 4, !tbaa !9
  %5064 = mul nsw i32 %5062, %5063
  %5065 = add nsw i32 %5061, %5064
  %5066 = sext i32 %5065 to i64
  %5067 = getelementptr inbounds double, ptr %5060, i64 %5066
  store double %5059, ptr %5067, align 8, !tbaa !11
  %5068 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 1
  %5069 = load double, ptr %5068, align 8, !tbaa !11
  %5070 = load ptr, ptr %23, align 8, !tbaa !5
  %5071 = load i32, ptr %50, align 4, !tbaa !9
  %5072 = load i32, ptr %51, align 4, !tbaa !9
  %5073 = load i32, ptr %31, align 4, !tbaa !9
  %5074 = mul nsw i32 %5072, %5073
  %5075 = add nsw i32 %5071, %5074
  %5076 = sext i32 %5075 to i64
  %5077 = getelementptr inbounds double, ptr %5070, i64 %5076
  store double %5069, ptr %5077, align 8, !tbaa !11
  %5078 = getelementptr inbounds [4 x double], ptr %46, i64 0, i64 3
  %5079 = load double, ptr %5078, align 8, !tbaa !11
  %5080 = load ptr, ptr %23, align 8, !tbaa !5
  %5081 = load i32, ptr %50, align 4, !tbaa !9
  %5082 = load i32, ptr %52, align 4, !tbaa !9
  %5083 = load i32, ptr %31, align 4, !tbaa !9
  %5084 = mul nsw i32 %5082, %5083
  %5085 = add nsw i32 %5081, %5084
  %5086 = sext i32 %5085 to i64
  %5087 = getelementptr inbounds double, ptr %5080, i64 %5086
  store double %5079, ptr %5087, align 8, !tbaa !11
  br label %5088

5088:                                             ; preds = %5047, %4558, %4554
  br label %5089

5089:                                             ; preds = %5088, %4533
  br label %5090

5090:                                             ; preds = %5089, %4229
  br label %5091

5091:                                             ; preds = %5090, %3939
  br label %5092

5092:                                             ; preds = %5091, %3693
  br label %5093

5093:                                             ; preds = %5092
  %5094 = load i32, ptr %44, align 4, !tbaa !9
  %5095 = add nsw i32 %5094, -1
  store i32 %5095, ptr %44, align 4, !tbaa !9
  br label %3686, !llvm.loop !36

5096:                                             ; preds = %3686
  br label %5097

5097:                                             ; preds = %5096, %3650
  br label %5098

5098:                                             ; preds = %5097
  %5099 = load i32, ptr %45, align 4, !tbaa !9
  %5100 = add nsw i32 %5099, -1
  store i32 %5100, ptr %45, align 4, !tbaa !9
  br label %3643, !llvm.loop !37

5101:                                             ; preds = %3643
  br label %5102

5102:                                             ; preds = %5101, %3635, %3632
  br label %5103

5103:                                             ; preds = %5102, %3631
  br label %5104

5104:                                             ; preds = %5103, %2421
  br label %5105

5105:                                             ; preds = %5104, %1480
  store i32 1, ptr %66, align 4
  br label %5106

5106:                                             ; preds = %5105, %219, %205
  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 32, 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 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

declare void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @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 void @dlasy2_(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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !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}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_false = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c_b26 = external hidden global double, align 8
@c_b30 = external hidden global double, align 8
@c_true = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dtrsyl_(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 nocapture noundef %11, ptr nocapture noundef %12) local_unnamed_addr #0 {
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca double, align 8
  %18 = alloca i32, align 4
  %19 = alloca double, align 8
  %20 = alloca [4 x double], align 16
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca [4 x double], align 16
  %26 = alloca [1 x double], align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  %27 = load i32, ptr %6, align 4, !tbaa !5
  %narrow2141 = xor i32 %27, -1
  %28 = sext i32 %narrow2141 to i64
  %29 = getelementptr inbounds double, ptr %5, i64 %28
  %30 = load i32, ptr %8, align 4, !tbaa !5
  %narrow2142 = xor i32 %30, -1
  %31 = sext i32 %narrow2142 to i64
  %32 = getelementptr inbounds double, ptr %7, i64 %31
  %33 = load i32, ptr %10, align 4, !tbaa !5
  %narrow = xor i32 %33, -1
  %34 = sext i32 %narrow to i64
  %35 = getelementptr inbounds double, ptr %9, i64 %34
  %36 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %37 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  store i32 0, ptr %12, align 4, !tbaa !5
  %38 = icmp ne i32 %36, 0
  br i1 %38, label %43, label %39

39:                                               ; preds = %13
  %40 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not = icmp eq i32 %40, 0
  br i1 %.not, label %41, label %43

41:                                               ; preds = %39
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not2134 = icmp eq i32 %42, 0
  br i1 %.not2134, label %.thread.sink.split, label %43

43:                                               ; preds = %41, %39, %13
  %.not2135 = icmp eq i32 %37, 0
  br i1 %.not2135, label %44, label %48

44:                                               ; preds = %43
  %45 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not2136 = icmp eq i32 %45, 0
  br i1 %.not2136, label %46, label %48

46:                                               ; preds = %44
  %47 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not2137 = icmp eq i32 %47, 0
  br i1 %.not2137, label %.thread.sink.split, label %48

48:                                               ; preds = %46, %44, %43
  %49 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %49, label %.thread.sink.split [
    i32 1, label %50
    i32 -1, label %50
  ]

50:                                               ; preds = %48, %48
  %51 = load i32, ptr %3, align 4, !tbaa !5
  %52 = icmp slt i32 %51, 0
  br i1 %52, label %.thread.sink.split, label %53

53:                                               ; preds = %50
  %54 = load i32, ptr %4, align 4, !tbaa !5
  %55 = icmp slt i32 %54, 0
  br i1 %55, label %.thread.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %51, i32 1)
  %58 = icmp slt i32 %57, %spec.select
  br i1 %58, label %.thread.sink.split, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select2259 = tail call i32 @llvm.umax.i32(i32 %54, i32 1)
  %61 = icmp slt i32 %60, %spec.select2259
  br i1 %61, label %.thread.sink.split, label %62

62:                                               ; preds = %59
  %63 = load i32, ptr %10, align 4, !tbaa !5
  %64 = icmp slt i32 %63, %spec.select
  br i1 %64, label %.thread.sink.split, label %65

65:                                               ; preds = %62
  %.pr = load i32, ptr %12, align 4, !tbaa !5
  %.not2140 = icmp eq i32 %.pr, 0
  br i1 %.not2140, label %69, label %.thread

.thread.sink.split:                               ; preds = %62, %59, %56, %53, %50, %48, %46, %41
  %.sink = phi i32 [ -1, %41 ], [ -2, %46 ], [ -3, %48 ], [ -4, %50 ], [ -5, %53 ], [ -7, %56 ], [ -9, %59 ], [ -11, %62 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %65
  %66 = phi i32 [ %.pr, %65 ], [ %.sink, %.thread.sink.split ]
  %67 = sub nsw i32 0, %66
  store i32 %67, ptr %14, align 4, !tbaa !5
  %68 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %14, i32 noundef 6) #5
  br label %.loopexit2313

69:                                               ; preds = %65
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %70 = icmp eq i32 %51, 0
  %71 = icmp eq i32 %54, 0
  %or.cond2723 = or i1 %70, %71
  br i1 %or.cond2723, label %.loopexit2313, label %72

72:                                               ; preds = %69
  %73 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  %74 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  store double %74, ptr %24, align 8, !tbaa !9
  %75 = fdiv double 1.000000e+00, %74
  store double %75, ptr %23, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %24, ptr noundef nonnull %23) #5
  %76 = load double, ptr %24, align 8, !tbaa !9
  %77 = load i32, ptr %3, align 4, !tbaa !5
  %78 = load i32, ptr %4, align 4, !tbaa !5
  %79 = mul nsw i32 %78, %77
  %80 = sitofp i32 %79 to double
  %81 = fmul double %76, %80
  %82 = fdiv double %81, %73
  store double %82, ptr %24, align 8, !tbaa !9
  %83 = fdiv double 1.000000e+00, %82
  store double %83, ptr %23, align 8, !tbaa !9
  store double %82, ptr %17, align 8, !tbaa !9
  %84 = call double @dlange_(ptr noundef nonnull @.str.6, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %26) #5
  %85 = fmul double %73, %84
  %86 = load double, ptr %17, align 8
  %87 = fcmp oge double %86, %85
  %88 = select i1 %87, double %86, double %85
  store double %88, ptr %17, align 8, !tbaa !9
  %89 = call double @dlange_(ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %26) #5
  %90 = fmul double %73, %89
  %91 = load double, ptr %17, align 8
  %92 = fcmp oge double %91, %90
  %93 = select i1 %92, double %91, double %90
  store double %93, ptr %19, align 8, !tbaa !9
  %94 = load i32, ptr %2, align 4, !tbaa !5
  %95 = sitofp i32 %94 to double
  %96 = icmp ne i32 %37, 0
  %or.cond = select i1 %38, i1 %96, i1 false
  br i1 %or.cond, label %97, label %431

97:                                               ; preds = %72
  %98 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %98, ptr %14, align 4, !tbaa !5
  %.not22302533 = icmp slt i32 %98, 1
  br i1 %.not22302533, label %.loopexit2313, label %.lr.ph2538

.lr.ph2538:                                       ; preds = %97
  %invariant.gep2517 = getelementptr i8, ptr %32, i64 8
  %99 = getelementptr inbounds i8, ptr %25, i64 8
  %100 = fneg double %95
  %101 = add i32 %27, 1
  %invariant.gep2489 = getelementptr i8, ptr %35, i64 8
  %102 = getelementptr inbounds i8, ptr %20, i64 8
  %103 = getelementptr inbounds i8, ptr %25, i64 16
  %104 = getelementptr inbounds i8, ptr %25, i64 24
  %105 = getelementptr inbounds i8, ptr %20, i64 16
  %106 = getelementptr inbounds i8, ptr %20, i64 24
  %107 = sext i32 %33 to i64
  %108 = sext i32 %30 to i64
  %invariant.gep2709 = getelementptr double, ptr %35, i64 %107
  %invariant.gep2713 = getelementptr double, ptr %35, i64 %107
  %invariant.gep2719 = getelementptr double, ptr %35, i64 %107
  br label %109

109:                                              ; preds = %.lr.ph2538, %.loopexit
  %110 = phi i32 [ %98, %.lr.ph2538 ], [ %429, %.loopexit ]
  %indvars.iv2609 = phi i64 [ 1, %.lr.ph2538 ], [ %indvars.iv.next2610, %.loopexit ]
  %.019372536 = phi i32 [ 1, %.lr.ph2538 ], [ %.21939, %.loopexit ]
  %indvars2611 = trunc i64 %indvars.iv2609 to i32
  %111 = sext i32 %.019372536 to i64
  %112 = icmp slt i64 %indvars.iv2609, %111
  br i1 %112, label %.loopexit, label %113

113:                                              ; preds = %109
  %114 = load i32, ptr %4, align 4, !tbaa !5
  %115 = zext i32 %114 to i64
  %116 = icmp eq i64 %indvars.iv2609, %115
  br i1 %116, label %128, label %117

117:                                              ; preds = %113
  %118 = add nuw nsw i64 %indvars.iv2609, 1
  %119 = mul nsw i64 %indvars.iv2609, %108
  %120 = getelementptr double, ptr %32, i64 %118
  %121 = getelementptr double, ptr %120, i64 %119
  %122 = load double, ptr %121, align 8, !tbaa !9
  %123 = fcmp une double %122, 0.000000e+00
  %124 = trunc nsw i64 %118 to i32
  br i1 %123, label %125, label %128

125:                                              ; preds = %117
  %126 = add nuw nsw i32 %indvars2611, 1
  %127 = add nuw nsw i32 %indvars2611, 2
  br label %128

128:                                              ; preds = %117, %113, %125
  %.11938 = phi i32 [ %127, %125 ], [ %.019372536, %113 ], [ %124, %117 ]
  %.01921 = phi i32 [ %126, %125 ], [ %indvars2611, %113 ], [ %indvars2611, %117 ]
  %129 = load i32, ptr %3, align 4, !tbaa !5
  %130 = icmp sgt i32 %129, 0
  br i1 %130, label %.lr.ph2532, label %.loopexit

.lr.ph2532:                                       ; preds = %128
  %131 = zext i32 %.01921 to i64
  %132 = icmp eq i64 %indvars.iv2609, %131
  %133 = mul nsw i64 %indvars.iv2609, %107
  %134 = add nsw i64 %indvars.iv2609, -1
  %135 = mul nsw i64 %indvars.iv2609, %108
  %136 = mul nsw i32 %30, %indvars2611
  %gep2518 = getelementptr double, ptr %invariant.gep2517, i64 %135
  %137 = sext i32 %136 to i64
  %138 = getelementptr double, ptr %32, i64 %indvars.iv2609
  %139 = getelementptr double, ptr %138, i64 %137
  %140 = mul nsw i32 %.01921, %33
  %141 = mul nsw i32 %.01921, %30
  %142 = sext i32 %141 to i64
  %gep2522 = getelementptr double, ptr %invariant.gep2517, i64 %142
  %143 = zext nneg i32 %129 to i64
  %144 = sext i32 %140 to i64
  %145 = getelementptr double, ptr %35, i64 %133
  %146 = trunc nuw nsw i64 %134 to i32
  %147 = getelementptr double, ptr %35, i64 %133
  %148 = getelementptr double, ptr %35, i64 %133
  %invariant.gep2711 = getelementptr double, ptr %35, i64 %133
  %149 = getelementptr double, ptr %35, i64 %133
  %150 = trunc nuw nsw i64 %134 to i32
  %151 = getelementptr double, ptr %35, i64 %133
  %152 = getelementptr double, ptr %35, i64 %133
  %invariant.gep2715 = getelementptr double, ptr %35, i64 %133
  %invariant.gep2717 = getelementptr double, ptr %35, i64 %144
  %153 = getelementptr double, ptr %35, i64 %133
  %154 = trunc nuw nsw i64 %134 to i32
  %155 = getelementptr double, ptr %35, i64 %133
  %156 = getelementptr double, ptr %35, i64 %133
  %157 = trunc nuw nsw i64 %134 to i32
  %invariant.gep2721 = getelementptr double, ptr %35, i64 %133
  br label %158

158:                                              ; preds = %.lr.ph2532, %427
  %indvars.iv2606 = phi i64 [ %143, %.lr.ph2532 ], [ %indvars.iv.next2607, %427 ]
  %.019412530 = phi i32 [ %129, %.lr.ph2532 ], [ %.21943, %427 ]
  %indvars2608 = trunc i64 %indvars.iv2606 to i32
  %159 = sext i32 %.019412530 to i64
  %160 = icmp sgt i64 %indvars.iv2606, %159
  br i1 %160, label %427, label %161

161:                                              ; preds = %158
  %162 = icmp eq i64 %indvars.iv2606, 1
  br i1 %162, label %173, label %163

163:                                              ; preds = %161
  %164 = add nsw i32 %indvars2608, -1
  %165 = mul nsw i32 %164, %27
  %166 = sext i32 %165 to i64
  %167 = getelementptr double, ptr %29, i64 %indvars.iv2606
  %168 = getelementptr double, ptr %167, i64 %166
  %169 = load double, ptr %168, align 8, !tbaa !9
  %170 = fcmp une double %169, 0.000000e+00
  %171 = trunc i64 %indvars.iv2606 to i32
  %172 = add i32 %171, -1
  br i1 %170, label %228, label %173

173:                                              ; preds = %163, %161
  %.11942 = phi i32 [ %.019412530, %161 ], [ %172, %163 ]
  %174 = load i32, ptr %3, align 4, !tbaa !5
  %175 = sub nsw i32 %174, %indvars2608
  store i32 %175, ptr %15, align 4, !tbaa !5
  br i1 %132, label %176, label %289

176:                                              ; preds = %173
  %177 = trunc i64 %indvars.iv2606 to i32
  %178 = add i32 %177, 1
  store i32 %178, ptr %16, align 4, !tbaa !5
  %179 = sext i32 %174 to i64
  %.not2256.not = icmp slt i64 %indvars.iv2606, %179
  %. = select i1 %.not2256.not, i32 %178, i32 %174
  %180 = mul nsw i32 %., %27
  %181 = sext i32 %180 to i64
  %182 = getelementptr double, ptr %29, i64 %indvars.iv2606
  %183 = getelementptr double, ptr %182, i64 %181
  %184 = sext i32 %. to i64
  %185 = getelementptr double, ptr %156, i64 %184
  %186 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %183, ptr noundef nonnull %6, ptr noundef %185, ptr noundef nonnull @c__1) #5
  store i32 %157, ptr %15, align 4, !tbaa !5
  %gep2720 = getelementptr double, ptr %invariant.gep2719, i64 %indvars.iv2606
  %187 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2720, ptr noundef nonnull %10, ptr noundef %gep2518, ptr noundef nonnull @c__1) #5
  %gep2722 = getelementptr double, ptr %invariant.gep2721, i64 %indvars.iv2606
  %188 = load double, ptr %gep2722, align 8, !tbaa !9
  %189 = call double @llvm.fmuladd.f64(double %95, double %187, double %186)
  %190 = fsub double %188, %189
  store double %190, ptr %25, align 16, !tbaa !9
  store double 1.000000e+00, ptr %22, align 8, !tbaa !9
  %191 = mul i32 %101, %indvars2608
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds double, ptr %29, i64 %192
  %194 = load double, ptr %193, align 8, !tbaa !9
  %195 = load double, ptr %139, align 8, !tbaa !9
  %196 = call double @llvm.fmuladd.f64(double %95, double %195, double %194)
  %197 = fcmp oge double %196, 0.000000e+00
  %198 = fneg double %196
  %199 = select i1 %197, double %196, double %198
  %200 = load double, ptr %19, align 8, !tbaa !9
  %201 = fcmp ugt double %199, %200
  br i1 %201, label %203, label %202

202:                                              ; preds = %176
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %203

203:                                              ; preds = %202, %176
  %.01917 = phi double [ %200, %202 ], [ %196, %176 ]
  %.0 = phi double [ %200, %202 ], [ %199, %176 ]
  %204 = fcmp oge double %190, 0.000000e+00
  %205 = fneg double %190
  %206 = select i1 %204, double %190, double %205
  %207 = fcmp olt double %.0, 1.000000e+00
  %208 = fcmp ogt double %206, 1.000000e+00
  %or.cond3 = select i1 %207, i1 %208, i1 false
  br i1 %or.cond3, label %209, label %thread-pre-split2299.thread

209:                                              ; preds = %203
  %210 = load double, ptr %23, align 8, !tbaa !9
  %211 = fmul double %.0, %210
  %212 = fcmp ogt double %206, %211
  br i1 %212, label %thread-pre-split2299, label %thread-pre-split2299.thread

thread-pre-split2299.thread:                      ; preds = %203, %209
  %213 = fdiv double %190, %.01917
  store double %213, ptr %20, align 16, !tbaa !9
  br label %226

thread-pre-split2299:                             ; preds = %209
  %214 = fdiv double 1.000000e+00, %206
  store double %214, ptr %22, align 8, !tbaa !9
  %215 = fmul double %190, %214
  %216 = fdiv double %215, %.01917
  store double %216, ptr %20, align 16, !tbaa !9
  %217 = fcmp une double %214, 1.000000e+00
  br i1 %217, label %218, label %226

218:                                              ; preds = %thread-pre-split2299
  %219 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %219, ptr %15, align 4, !tbaa !5
  %.not22582512 = icmp slt i32 %219, 1
  br i1 %.not22582512, label %._crit_edge2516, label %.lr.ph2515

.lr.ph2515:                                       ; preds = %218, %.lr.ph2515
  %indvars.iv2603 = phi i64 [ %indvars.iv.next2604, %.lr.ph2515 ], [ 1, %218 ]
  %220 = mul nsw i64 %indvars.iv2603, %107
  %gep2511 = getelementptr double, ptr %invariant.gep2489, i64 %220
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2511, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2604 = add nuw nsw i64 %indvars.iv2603, 1
  %221 = load i32, ptr %15, align 4, !tbaa !5
  %222 = sext i32 %221 to i64
  %.not2258.not = icmp slt i64 %indvars.iv2603, %222
  br i1 %.not2258.not, label %.lr.ph2515, label %._crit_edge2516.loopexit, !llvm.loop !11

._crit_edge2516.loopexit:                         ; preds = %.lr.ph2515
  %.pre2630 = load double, ptr %22, align 8, !tbaa !9
  %.pre2631.pre = load double, ptr %20, align 16, !tbaa !9
  br label %._crit_edge2516

._crit_edge2516:                                  ; preds = %._crit_edge2516.loopexit, %218
  %.pre2631 = phi double [ %.pre2631.pre, %._crit_edge2516.loopexit ], [ %216, %218 ]
  %223 = phi double [ %.pre2630, %._crit_edge2516.loopexit ], [ %214, %218 ]
  %224 = load double, ptr %11, align 8, !tbaa !9
  %225 = fmul double %223, %224
  store double %225, ptr %11, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %thread-pre-split2299.thread, %._crit_edge2516, %thread-pre-split2299
  %227 = phi double [ %.pre2631, %._crit_edge2516 ], [ %216, %thread-pre-split2299 ], [ %213, %thread-pre-split2299.thread ]
  store double %227, ptr %gep2722, align 8, !tbaa !9
  br label %427

228:                                              ; preds = %163
  %229 = trunc i64 %indvars.iv2606 to i32
  %230 = add i32 %229, -2
  %231 = load i32, ptr %3, align 4, !tbaa !5
  %232 = sub nsw i32 %231, %indvars2608
  store i32 %232, ptr %15, align 4, !tbaa !5
  %233 = trunc i64 %indvars.iv2606 to i32
  %234 = add i32 %233, 1
  %235 = sext i32 %231 to i64
  %.not2250.not = icmp slt i64 %indvars.iv2606, %235
  %.2264 = select i1 %.not2250.not, i32 %234, i32 %231
  %236 = mul nsw i32 %.2264, %27
  %237 = add nsw i32 %236, %164
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds double, ptr %29, i64 %238
  %240 = sext i32 %.2264 to i64
  %241 = add nsw i32 %164, %33
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %35, i64 %242
  %244 = sext i32 %164 to i64
  br i1 %132, label %245, label %348

245:                                              ; preds = %228
  %246 = getelementptr double, ptr %145, i64 %240
  %247 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %239, ptr noundef nonnull %6, ptr noundef %246, ptr noundef nonnull @c__1) #5
  store i32 %146, ptr %15, align 4, !tbaa !5
  %248 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %243, ptr noundef nonnull %10, ptr noundef %gep2518, ptr noundef nonnull @c__1) #5
  %249 = getelementptr double, ptr %147, i64 %244
  %250 = load double, ptr %249, align 8, !tbaa !9
  %251 = call double @llvm.fmuladd.f64(double %95, double %248, double %247)
  %252 = fsub double %250, %251
  store double %252, ptr %25, align 16, !tbaa !9
  %253 = load i32, ptr %3, align 4, !tbaa !5
  %254 = sub nsw i32 %253, %indvars2608
  store i32 %254, ptr %15, align 4, !tbaa !5
  store i32 %234, ptr %16, align 4, !tbaa !5
  %255 = sext i32 %253 to i64
  %.not2252.not = icmp slt i64 %indvars.iv2606, %255
  %256 = select i1 %.not2252.not, i32 %234, i32 %253
  %257 = mul nsw i32 %256, %27
  %258 = sext i32 %257 to i64
  %259 = getelementptr double, ptr %29, i64 %indvars.iv2606
  %260 = getelementptr double, ptr %259, i64 %258
  %261 = sext i32 %256 to i64
  %262 = getelementptr double, ptr %148, i64 %261
  %263 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %260, ptr noundef nonnull %6, ptr noundef %262, ptr noundef nonnull @c__1) #5
  store i32 %146, ptr %15, align 4, !tbaa !5
  %gep2710 = getelementptr double, ptr %invariant.gep2709, i64 %indvars.iv2606
  %264 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2710, ptr noundef nonnull %10, ptr noundef %gep2518, ptr noundef nonnull @c__1) #5
  %gep2712 = getelementptr double, ptr %invariant.gep2711, i64 %indvars.iv2606
  %265 = load double, ptr %gep2712, align 8, !tbaa !9
  %266 = call double @llvm.fmuladd.f64(double %95, double %264, double %263)
  %267 = fsub double %265, %266
  store double %267, ptr %99, align 8, !tbaa !9
  %268 = load double, ptr %139, align 8, !tbaa !9
  %269 = fmul double %268, %100
  store double %269, ptr %17, align 8, !tbaa !9
  %270 = mul i32 %164, %101
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %29, i64 %271
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull @c_b26, ptr noundef %272, ptr noundef nonnull %6, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %273 = load i32, ptr %18, align 4, !tbaa !5
  %.not2254 = icmp eq i32 %273, 0
  br i1 %.not2254, label %275, label %274

274:                                              ; preds = %245
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %275

275:                                              ; preds = %274, %245
  %276 = load double, ptr %22, align 8, !tbaa !9
  %277 = fcmp une double %276, 1.000000e+00
  br i1 %277, label %278, label %286

278:                                              ; preds = %275
  %279 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %279, ptr %15, align 4, !tbaa !5
  %.not22552491 = icmp slt i32 %279, 1
  br i1 %.not22552491, label %._crit_edge2495, label %.lr.ph2494

.lr.ph2494:                                       ; preds = %278, %.lr.ph2494
  %indvars.iv2594 = phi i64 [ %indvars.iv.next2595, %.lr.ph2494 ], [ 1, %278 ]
  %280 = mul nsw i64 %indvars.iv2594, %107
  %gep2490 = getelementptr double, ptr %invariant.gep2489, i64 %280
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2490, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2595 = add nuw nsw i64 %indvars.iv2594, 1
  %281 = load i32, ptr %15, align 4, !tbaa !5
  %282 = sext i32 %281 to i64
  %.not2255.not = icmp slt i64 %indvars.iv2594, %282
  br i1 %.not2255.not, label %.lr.ph2494, label %._crit_edge2495.loopexit, !llvm.loop !13

._crit_edge2495.loopexit:                         ; preds = %.lr.ph2494
  %.pre2627 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2495

._crit_edge2495:                                  ; preds = %._crit_edge2495.loopexit, %278
  %283 = phi double [ %.pre2627, %._crit_edge2495.loopexit ], [ %276, %278 ]
  %284 = load double, ptr %11, align 8, !tbaa !9
  %285 = fmul double %283, %284
  store double %285, ptr %11, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %._crit_edge2495, %275
  %287 = load double, ptr %20, align 16, !tbaa !9
  store double %287, ptr %249, align 8, !tbaa !9
  %288 = load double, ptr %102, align 8, !tbaa !9
  store double %288, ptr %gep2712, align 8, !tbaa !9
  br label %427

289:                                              ; preds = %173
  %290 = add nuw nsw i32 %indvars2608, 1
  %.not2244.not = icmp sgt i32 %174, %indvars2608
  %.2266 = select i1 %.not2244.not, i32 %290, i32 %174
  %291 = mul nsw i32 %.2266, %27
  %292 = add nsw i32 %291, %indvars2608
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %29, i64 %293
  %295 = sext i32 %.2266 to i64
  %296 = getelementptr double, ptr %153, i64 %295
  %297 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %294, ptr noundef nonnull %6, ptr noundef %296, ptr noundef nonnull @c__1) #5
  store i32 %154, ptr %15, align 4, !tbaa !5
  %298 = add nsw i32 %33, %indvars2608
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %35, i64 %299
  %301 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %300, ptr noundef nonnull %10, ptr noundef %gep2518, ptr noundef nonnull @c__1) #5
  %sext2724 = shl i64 %indvars.iv2606, 32
  %302 = ashr exact i64 %sext2724, 29
  %303 = getelementptr i8, ptr %155, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !9
  %305 = call double @llvm.fmuladd.f64(double %95, double %301, double %297)
  %306 = fsub double %304, %305
  %307 = fmul double %306, %95
  store double %307, ptr %25, align 16, !tbaa !9
  %308 = load i32, ptr %3, align 4, !tbaa !5
  %309 = sub nsw i32 %308, %indvars2608
  store i32 %309, ptr %15, align 4, !tbaa !5
  store i32 %290, ptr %16, align 4, !tbaa !5
  %.not2246.not = icmp sgt i32 %308, %indvars2608
  %310 = select i1 %.not2246.not, i32 %290, i32 %308
  %311 = mul nsw i32 %310, %27
  %312 = add nsw i32 %311, %indvars2608
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds double, ptr %29, i64 %313
  %315 = add nsw i32 %310, %140
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds double, ptr %35, i64 %316
  %318 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %314, ptr noundef nonnull %6, ptr noundef %317, ptr noundef nonnull @c__1) #5
  store i32 %154, ptr %15, align 4, !tbaa !5
  %319 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %300, ptr noundef nonnull %10, ptr noundef %gep2522, ptr noundef nonnull @c__1) #5
  %320 = add nsw i32 %140, %indvars2608
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %35, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !9
  %324 = call double @llvm.fmuladd.f64(double %95, double %319, double %318)
  %325 = fsub double %323, %324
  %326 = fmul double %325, %95
  store double %326, ptr %99, align 8, !tbaa !9
  %327 = mul i32 %101, %indvars2608
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds double, ptr %29, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !9
  %331 = fmul double %330, %100
  store double %331, ptr %17, align 8, !tbaa !9
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull @c_b26, ptr noundef %139, ptr noundef nonnull %8, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %332 = load i32, ptr %18, align 4, !tbaa !5
  %.not2248 = icmp eq i32 %332, 0
  br i1 %.not2248, label %334, label %333

333:                                              ; preds = %289
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %334

334:                                              ; preds = %333, %289
  %335 = load double, ptr %22, align 8, !tbaa !9
  %336 = fcmp une double %335, 1.000000e+00
  br i1 %336, label %337, label %345

337:                                              ; preds = %334
  %338 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %338, ptr %15, align 4, !tbaa !5
  %.not22492505 = icmp slt i32 %338, 1
  br i1 %.not22492505, label %._crit_edge2509, label %.lr.ph2508

.lr.ph2508:                                       ; preds = %337, %.lr.ph2508
  %indvars.iv2600 = phi i64 [ %indvars.iv.next2601, %.lr.ph2508 ], [ 1, %337 ]
  %339 = mul nsw i64 %indvars.iv2600, %107
  %gep2504 = getelementptr double, ptr %invariant.gep2489, i64 %339
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2504, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2601 = add nuw nsw i64 %indvars.iv2600, 1
  %340 = load i32, ptr %15, align 4, !tbaa !5
  %341 = sext i32 %340 to i64
  %.not2249.not = icmp slt i64 %indvars.iv2600, %341
  br i1 %.not2249.not, label %.lr.ph2508, label %._crit_edge2509.loopexit, !llvm.loop !14

._crit_edge2509.loopexit:                         ; preds = %.lr.ph2508
  %.pre2629 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2509

._crit_edge2509:                                  ; preds = %._crit_edge2509.loopexit, %337
  %342 = phi double [ %.pre2629, %._crit_edge2509.loopexit ], [ %335, %337 ]
  %343 = load double, ptr %11, align 8, !tbaa !9
  %344 = fmul double %342, %343
  store double %344, ptr %11, align 8, !tbaa !9
  br label %345

345:                                              ; preds = %._crit_edge2509, %334
  %346 = load double, ptr %20, align 16, !tbaa !9
  store double %346, ptr %303, align 8, !tbaa !9
  %347 = load double, ptr %102, align 8, !tbaa !9
  store double %347, ptr %322, align 8, !tbaa !9
  br label %427

348:                                              ; preds = %228
  %349 = getelementptr double, ptr %149, i64 %240
  %350 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %239, ptr noundef nonnull %6, ptr noundef %349, ptr noundef nonnull @c__1) #5
  store i32 %150, ptr %15, align 4, !tbaa !5
  %351 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %243, ptr noundef nonnull %10, ptr noundef %gep2518, ptr noundef nonnull @c__1) #5
  %352 = getelementptr double, ptr %151, i64 %244
  %353 = load double, ptr %352, align 8, !tbaa !9
  %354 = call double @llvm.fmuladd.f64(double %95, double %351, double %350)
  %355 = fsub double %353, %354
  store double %355, ptr %25, align 16, !tbaa !9
  %356 = load i32, ptr %3, align 4, !tbaa !5
  %357 = sub nsw i32 %356, %indvars2608
  store i32 %357, ptr %15, align 4, !tbaa !5
  %358 = sext i32 %356 to i64
  %.not2236.not = icmp slt i64 %indvars.iv2606, %358
  %359 = select i1 %.not2236.not, i32 %234, i32 %356
  %360 = mul nsw i32 %359, %27
  %361 = add nsw i32 %360, %164
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %29, i64 %362
  %364 = add nsw i32 %359, %140
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %35, i64 %365
  %367 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %363, ptr noundef nonnull %6, ptr noundef %366, ptr noundef nonnull @c__1) #5
  store i32 %150, ptr %15, align 4, !tbaa !5
  %368 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %243, ptr noundef nonnull %10, ptr noundef %gep2522, ptr noundef nonnull @c__1) #5
  %369 = add nsw i32 %164, %140
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds double, ptr %35, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !9
  %373 = call double @llvm.fmuladd.f64(double %95, double %368, double %367)
  %374 = fsub double %372, %373
  store double %374, ptr %103, align 16, !tbaa !9
  %375 = load i32, ptr %3, align 4, !tbaa !5
  %376 = sub nsw i32 %375, %indvars2608
  store i32 %376, ptr %15, align 4, !tbaa !5
  %377 = sext i32 %375 to i64
  %.not2238.not = icmp slt i64 %indvars.iv2606, %377
  %378 = select i1 %.not2238.not, i32 %234, i32 %375
  %379 = mul nsw i32 %378, %27
  %380 = sext i32 %379 to i64
  %381 = getelementptr double, ptr %29, i64 %indvars.iv2606
  %382 = getelementptr double, ptr %381, i64 %380
  %383 = sext i32 %378 to i64
  %384 = getelementptr double, ptr %152, i64 %383
  %385 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %382, ptr noundef nonnull %6, ptr noundef %384, ptr noundef nonnull @c__1) #5
  store i32 %150, ptr %15, align 4, !tbaa !5
  %gep2714 = getelementptr double, ptr %invariant.gep2713, i64 %indvars.iv2606
  %386 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2714, ptr noundef nonnull %10, ptr noundef %gep2518, ptr noundef nonnull @c__1) #5
  %gep2716 = getelementptr double, ptr %invariant.gep2715, i64 %indvars.iv2606
  %387 = load double, ptr %gep2716, align 8, !tbaa !9
  %388 = call double @llvm.fmuladd.f64(double %95, double %386, double %385)
  %389 = fsub double %387, %388
  store double %389, ptr %99, align 8, !tbaa !9
  %390 = load i32, ptr %3, align 4, !tbaa !5
  %391 = sub nsw i32 %390, %indvars2608
  store i32 %391, ptr %15, align 4, !tbaa !5
  store i32 %234, ptr %16, align 4, !tbaa !5
  %392 = sext i32 %390 to i64
  %.not2240.not = icmp slt i64 %indvars.iv2606, %392
  %393 = select i1 %.not2240.not, i32 %234, i32 %390
  %394 = mul nsw i32 %393, %27
  %395 = sext i32 %394 to i64
  %396 = getelementptr double, ptr %29, i64 %indvars.iv2606
  %397 = getelementptr double, ptr %396, i64 %395
  %398 = add nsw i32 %393, %140
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds double, ptr %35, i64 %399
  %401 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %397, ptr noundef nonnull %6, ptr noundef %400, ptr noundef nonnull @c__1) #5
  store i32 %150, ptr %15, align 4, !tbaa !5
  %402 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2714, ptr noundef nonnull %10, ptr noundef %gep2522, ptr noundef nonnull @c__1) #5
  %gep2718 = getelementptr double, ptr %invariant.gep2717, i64 %indvars.iv2606
  %403 = load double, ptr %gep2718, align 8, !tbaa !9
  %404 = call double @llvm.fmuladd.f64(double %95, double %402, double %401)
  %405 = fsub double %403, %404
  store double %405, ptr %104, align 8, !tbaa !9
  %406 = mul i32 %164, %101
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %29, i64 %407
  call void @dlasy2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull %2, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef %408, ptr noundef nonnull %6, ptr noundef %139, ptr noundef nonnull %8, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %409 = load i32, ptr %18, align 4, !tbaa !5
  %.not2242 = icmp eq i32 %409, 0
  br i1 %.not2242, label %411, label %410

410:                                              ; preds = %348
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %411

411:                                              ; preds = %410, %348
  %412 = load double, ptr %22, align 8, !tbaa !9
  %413 = fcmp une double %412, 1.000000e+00
  br i1 %413, label %414, label %422

414:                                              ; preds = %411
  %415 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %415, ptr %15, align 4, !tbaa !5
  %.not22432498 = icmp slt i32 %415, 1
  br i1 %.not22432498, label %._crit_edge2502, label %.lr.ph2501

.lr.ph2501:                                       ; preds = %414, %.lr.ph2501
  %indvars.iv2597 = phi i64 [ %indvars.iv.next2598, %.lr.ph2501 ], [ 1, %414 ]
  %416 = mul nsw i64 %indvars.iv2597, %107
  %gep2497 = getelementptr double, ptr %invariant.gep2489, i64 %416
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2497, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2598 = add nuw nsw i64 %indvars.iv2597, 1
  %417 = load i32, ptr %15, align 4, !tbaa !5
  %418 = sext i32 %417 to i64
  %.not2243.not = icmp slt i64 %indvars.iv2597, %418
  br i1 %.not2243.not, label %.lr.ph2501, label %._crit_edge2502.loopexit, !llvm.loop !15

._crit_edge2502.loopexit:                         ; preds = %.lr.ph2501
  %.pre2628 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2502

._crit_edge2502:                                  ; preds = %._crit_edge2502.loopexit, %414
  %419 = phi double [ %.pre2628, %._crit_edge2502.loopexit ], [ %412, %414 ]
  %420 = load double, ptr %11, align 8, !tbaa !9
  %421 = fmul double %419, %420
  store double %421, ptr %11, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %._crit_edge2502, %411
  %423 = load double, ptr %20, align 16, !tbaa !9
  store double %423, ptr %352, align 8, !tbaa !9
  %424 = load double, ptr %105, align 16, !tbaa !9
  store double %424, ptr %371, align 8, !tbaa !9
  %425 = load double, ptr %102, align 8, !tbaa !9
  store double %425, ptr %gep2716, align 8, !tbaa !9
  %426 = load double, ptr %106, align 8, !tbaa !9
  store double %426, ptr %gep2718, align 8, !tbaa !9
  br label %427

427:                                              ; preds = %158, %286, %422, %345, %226
  %.21943 = phi i32 [ %.019412530, %158 ], [ %.11942, %226 ], [ %230, %286 ], [ %.11942, %345 ], [ %230, %422 ]
  %indvars.iv.next2607 = add nsw i64 %indvars.iv2606, -1
  %428 = icmp sgt i64 %indvars.iv2606, 1
  br i1 %428, label %158, label %.loopexit.loopexit, !llvm.loop !16

.loopexit.loopexit:                               ; preds = %427
  %.pre2632 = load i32, ptr %14, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %128, %109
  %429 = phi i32 [ %110, %109 ], [ %110, %128 ], [ %.pre2632, %.loopexit.loopexit ]
  %.21939 = phi i32 [ %.019372536, %109 ], [ %.11938, %128 ], [ %.11938, %.loopexit.loopexit ]
  %indvars.iv.next2610 = add nuw nsw i64 %indvars.iv2609, 1
  %430 = sext i32 %429 to i64
  %.not2230.not = icmp slt i64 %indvars.iv2609, %430
  br i1 %.not2230.not, label %109, label %.loopexit2313, !llvm.loop !17

431:                                              ; preds = %72
  %432 = icmp eq i32 %36, 0
  %or.cond5 = select i1 %432, i1 %96, i1 false
  br i1 %or.cond5, label %433, label %698

433:                                              ; preds = %431
  %434 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %434, ptr %14, align 4, !tbaa !5
  %.not22182483 = icmp slt i32 %434, 1
  br i1 %.not22182483, label %.loopexit2313, label %.lr.ph2488

.lr.ph2488:                                       ; preds = %433
  %invariant.gep2442 = getelementptr i8, ptr %29, i64 8
  %invariant.gep2444 = getelementptr i8, ptr %35, i64 8
  %invariant.gep2446 = getelementptr i8, ptr %32, i64 8
  %435 = getelementptr inbounds i8, ptr %25, i64 8
  %436 = fneg double %95
  %437 = getelementptr inbounds i8, ptr %20, i64 8
  %438 = getelementptr inbounds i8, ptr %25, i64 16
  %439 = getelementptr inbounds i8, ptr %25, i64 24
  %440 = getelementptr inbounds i8, ptr %20, i64 16
  %441 = getelementptr inbounds i8, ptr %20, i64 24
  %442 = sext i32 %33 to i64
  %443 = sext i32 %27 to i64
  %444 = sext i32 %30 to i64
  %invariant.gep2689 = getelementptr double, ptr %35, i64 %442
  %invariant.gep2693 = getelementptr double, ptr %35, i64 %442
  %invariant.gep2699 = getelementptr double, ptr %35, i64 %442
  %invariant.gep2705 = getelementptr double, ptr %35, i64 %442
  br label %445

445:                                              ; preds = %.lr.ph2488, %.loopexit2314
  %446 = phi i32 [ %434, %.lr.ph2488 ], [ %696, %.loopexit2314 ]
  %indvars.iv2591 = phi i64 [ 1, %.lr.ph2488 ], [ %indvars.iv.next2592, %.loopexit2314 ]
  %.319402486 = phi i32 [ 1, %.lr.ph2488 ], [ %.5, %.loopexit2314 ]
  %indvars2593 = trunc i64 %indvars.iv2591 to i32
  %447 = sext i32 %.319402486 to i64
  %448 = icmp slt i64 %indvars.iv2591, %447
  br i1 %448, label %.loopexit2314, label %449

449:                                              ; preds = %445
  %450 = load i32, ptr %4, align 4, !tbaa !5
  %451 = zext i32 %450 to i64
  %452 = icmp eq i64 %indvars.iv2591, %451
  br i1 %452, label %464, label %453

453:                                              ; preds = %449
  %454 = add nuw nsw i64 %indvars.iv2591, 1
  %455 = mul nsw i64 %indvars.iv2591, %444
  %456 = getelementptr double, ptr %32, i64 %454
  %457 = getelementptr double, ptr %456, i64 %455
  %458 = load double, ptr %457, align 8, !tbaa !9
  %459 = fcmp une double %458, 0.000000e+00
  %460 = trunc nsw i64 %454 to i32
  br i1 %459, label %461, label %464

461:                                              ; preds = %453
  %462 = add nuw nsw i32 %indvars2593, 1
  %463 = add nuw nsw i32 %indvars2593, 2
  br label %464

464:                                              ; preds = %453, %449, %461
  %.4 = phi i32 [ %463, %461 ], [ %.319402486, %449 ], [ %460, %453 ]
  %.11922 = phi i32 [ %462, %461 ], [ %indvars2593, %449 ], [ %indvars2593, %453 ]
  %465 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %465, ptr %15, align 4, !tbaa !5
  %.not22192478 = icmp slt i32 %465, 1
  br i1 %.not22192478, label %.loopexit2314, label %.lr.ph2482

.lr.ph2482:                                       ; preds = %464
  %466 = zext i32 %.11922 to i64
  %467 = icmp eq i64 %indvars.iv2591, %466
  %.not2270 = xor i1 %467, true
  %468 = mul nsw i64 %indvars.iv2591, %442
  %gep2445 = getelementptr double, ptr %invariant.gep2444, i64 %468
  %469 = add nsw i64 %indvars.iv2591, -1
  %470 = mul nsw i64 %indvars.iv2591, %444
  %471 = mul nsw i32 %30, %indvars2593
  %gep2447 = getelementptr double, ptr %invariant.gep2446, i64 %470
  %472 = sext i32 %471 to i64
  %473 = getelementptr double, ptr %32, i64 %indvars.iv2591
  %474 = getelementptr double, ptr %473, i64 %472
  %475 = mul nsw i32 %.11922, %33
  %476 = sext i32 %475 to i64
  %gep2457 = getelementptr double, ptr %invariant.gep2444, i64 %476
  %477 = mul nsw i32 %.11922, %30
  %478 = sext i32 %477 to i64
  %gep2459 = getelementptr double, ptr %invariant.gep2446, i64 %478
  %479 = trunc nuw nsw i64 %469 to i32
  %invariant.gep2691 = getelementptr double, ptr %35, i64 %468
  %480 = getelementptr double, ptr %35, i64 %468
  %481 = trunc nuw nsw i64 %469 to i32
  %invariant.gep2695 = getelementptr double, ptr %35, i64 %468
  %invariant.gep2697 = getelementptr double, ptr %35, i64 %476
  %482 = getelementptr double, ptr %35, i64 %468
  %483 = trunc nuw nsw i64 %469 to i32
  %invariant.gep2701 = getelementptr double, ptr %35, i64 %468
  %invariant.gep2703 = getelementptr double, ptr %35, i64 %476
  %484 = trunc nuw nsw i64 %469 to i32
  %invariant.gep2707 = getelementptr double, ptr %35, i64 %468
  br label %485

485:                                              ; preds = %.lr.ph2482, %693
  %indvars.iv2588 = phi i64 [ 1, %.lr.ph2482 ], [ %indvars.iv.next2589, %693 ]
  %.319442480 = phi i32 [ 1, %.lr.ph2482 ], [ %.51946, %693 ]
  %indvars2590 = trunc i64 %indvars.iv2588 to i32
  %486 = sext i32 %.319442480 to i64
  %487 = icmp slt i64 %indvars.iv2588, %486
  br i1 %487, label %693, label %488

488:                                              ; preds = %485
  %489 = load i32, ptr %3, align 4, !tbaa !5
  %490 = zext i32 %489 to i64
  %491 = icmp eq i64 %indvars.iv2588, %490
  br i1 %491, label %503, label %492

492:                                              ; preds = %488
  %493 = add nuw nsw i64 %indvars.iv2588, 1
  %494 = mul nsw i64 %indvars.iv2588, %443
  %495 = getelementptr double, ptr %29, i64 %493
  %496 = getelementptr double, ptr %495, i64 %494
  %497 = load double, ptr %496, align 8, !tbaa !9
  %498 = fcmp une double %497, 0.000000e+00
  %499 = trunc nsw i64 %493 to i32
  br i1 %498, label %500, label %503

500:                                              ; preds = %492
  %501 = add nuw nsw i32 %indvars2590, 1
  %502 = add nuw nsw i32 %indvars2590, 2
  br label %503

503:                                              ; preds = %492, %488, %500
  %.41945 = phi i32 [ %502, %500 ], [ %.319442480, %488 ], [ %499, %492 ]
  %.11930 = phi i32 [ %501, %500 ], [ %indvars2590, %488 ], [ %indvars2590, %492 ]
  %504 = zext i32 %.11930 to i64
  %505 = icmp eq i64 %indvars.iv2588, %504
  %or.cond2269 = and i1 %467, %505
  br i1 %or.cond2269, label %506, label %553

506:                                              ; preds = %503
  %507 = trunc i64 %indvars.iv2588 to i32
  %508 = add nsw i32 %507, -1
  store i32 %508, ptr %16, align 4, !tbaa !5
  %509 = mul nsw i64 %indvars.iv2588, %443
  %510 = mul nsw i32 %27, %indvars2590
  %gep2473 = getelementptr double, ptr %invariant.gep2442, i64 %509
  %511 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2473, ptr noundef nonnull @c__1, ptr noundef %gep2445, ptr noundef nonnull @c__1) #5
  store i32 %484, ptr %16, align 4, !tbaa !5
  %gep2706 = getelementptr double, ptr %invariant.gep2705, i64 %indvars.iv2588
  %512 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2706, ptr noundef nonnull %10, ptr noundef %gep2447, ptr noundef nonnull @c__1) #5
  %gep2708 = getelementptr double, ptr %invariant.gep2707, i64 %indvars.iv2588
  %513 = load double, ptr %gep2708, align 8, !tbaa !9
  %514 = call double @llvm.fmuladd.f64(double %95, double %512, double %511)
  %515 = fsub double %513, %514
  store double %515, ptr %25, align 16, !tbaa !9
  store double 1.000000e+00, ptr %22, align 8, !tbaa !9
  %516 = sext i32 %510 to i64
  %517 = getelementptr double, ptr %29, i64 %indvars.iv2588
  %518 = getelementptr double, ptr %517, i64 %516
  %519 = load double, ptr %518, align 8, !tbaa !9
  %520 = load double, ptr %474, align 8, !tbaa !9
  %521 = call double @llvm.fmuladd.f64(double %95, double %520, double %519)
  %522 = fcmp oge double %521, 0.000000e+00
  %523 = fneg double %521
  %524 = select i1 %522, double %521, double %523
  %525 = load double, ptr %19, align 8, !tbaa !9
  %526 = fcmp ugt double %524, %525
  br i1 %526, label %528, label %527

527:                                              ; preds = %506
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %528

528:                                              ; preds = %527, %506
  %.11918 = phi double [ %525, %527 ], [ %521, %506 ]
  %.1 = phi double [ %525, %527 ], [ %524, %506 ]
  %529 = fcmp oge double %515, 0.000000e+00
  %530 = fneg double %515
  %531 = select i1 %529, double %515, double %530
  %532 = fcmp olt double %.1, 1.000000e+00
  %533 = fcmp ogt double %531, 1.000000e+00
  %or.cond7 = select i1 %532, i1 %533, i1 false
  br i1 %or.cond7, label %534, label %thread-pre-split2301.thread

534:                                              ; preds = %528
  %535 = load double, ptr %23, align 8, !tbaa !9
  %536 = fmul double %.1, %535
  %537 = fcmp ogt double %531, %536
  br i1 %537, label %thread-pre-split2301, label %thread-pre-split2301.thread

thread-pre-split2301.thread:                      ; preds = %528, %534
  %538 = fdiv double %515, %.11918
  store double %538, ptr %20, align 16, !tbaa !9
  br label %551

thread-pre-split2301:                             ; preds = %534
  %539 = fdiv double 1.000000e+00, %531
  store double %539, ptr %22, align 8, !tbaa !9
  %540 = fmul double %515, %539
  %541 = fdiv double %540, %.11918
  store double %541, ptr %20, align 16, !tbaa !9
  %542 = fcmp une double %539, 1.000000e+00
  br i1 %542, label %543, label %551

543:                                              ; preds = %thread-pre-split2301
  %544 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %544, ptr %16, align 4, !tbaa !5
  %.not22292437 = icmp slt i32 %544, 1
  br i1 %.not22292437, label %._crit_edge2441, label %.lr.ph2440

.lr.ph2440:                                       ; preds = %543, %.lr.ph2440
  %indvars.iv2585 = phi i64 [ %indvars.iv.next2586, %.lr.ph2440 ], [ 1, %543 ]
  %545 = mul nsw i64 %indvars.iv2585, %442
  %gep2436 = getelementptr double, ptr %invariant.gep2444, i64 %545
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2436, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2586 = add nuw nsw i64 %indvars.iv2585, 1
  %546 = load i32, ptr %16, align 4, !tbaa !5
  %547 = sext i32 %546 to i64
  %.not2229.not = icmp slt i64 %indvars.iv2585, %547
  br i1 %.not2229.not, label %.lr.ph2440, label %._crit_edge2441.loopexit, !llvm.loop !18

._crit_edge2441.loopexit:                         ; preds = %.lr.ph2440
  %.pre2624 = load double, ptr %22, align 8, !tbaa !9
  %.pre2625.pre = load double, ptr %20, align 16, !tbaa !9
  br label %._crit_edge2441

._crit_edge2441:                                  ; preds = %._crit_edge2441.loopexit, %543
  %.pre2625 = phi double [ %.pre2625.pre, %._crit_edge2441.loopexit ], [ %541, %543 ]
  %548 = phi double [ %.pre2624, %._crit_edge2441.loopexit ], [ %539, %543 ]
  %549 = load double, ptr %11, align 8, !tbaa !9
  %550 = fmul double %548, %549
  store double %550, ptr %11, align 8, !tbaa !9
  br label %551

551:                                              ; preds = %thread-pre-split2301.thread, %._crit_edge2441, %thread-pre-split2301
  %552 = phi double [ %.pre2625, %._crit_edge2441 ], [ %541, %thread-pre-split2301 ], [ %538, %thread-pre-split2301.thread ]
  store double %552, ptr %gep2708, align 8, !tbaa !9
  br label %693

553:                                              ; preds = %503
  %or.cond2271 = or i1 %505, %.not2270
  br i1 %or.cond2271, label %597, label %554

554:                                              ; preds = %553
  %555 = trunc i64 %indvars.iv2588 to i32
  %556 = add i32 %555, -1
  store i32 %556, ptr %16, align 4, !tbaa !5
  %557 = mul nsw i64 %indvars.iv2588, %443
  %558 = mul nsw i32 %27, %indvars2590
  %gep2443 = getelementptr double, ptr %invariant.gep2442, i64 %557
  %559 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2443, ptr noundef nonnull @c__1, ptr noundef %gep2445, ptr noundef nonnull @c__1) #5
  store i32 %479, ptr %16, align 4, !tbaa !5
  %gep2690 = getelementptr double, ptr %invariant.gep2689, i64 %indvars.iv2588
  %560 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2690, ptr noundef nonnull %10, ptr noundef %gep2447, ptr noundef nonnull @c__1) #5
  %gep2692 = getelementptr double, ptr %invariant.gep2691, i64 %indvars.iv2588
  %561 = load double, ptr %gep2692, align 8, !tbaa !9
  %562 = call double @llvm.fmuladd.f64(double %95, double %560, double %559)
  %563 = fsub double %561, %562
  store double %563, ptr %25, align 16, !tbaa !9
  store i32 %556, ptr %16, align 4, !tbaa !5
  %564 = mul nsw i32 %.11930, %27
  %565 = sext i32 %564 to i64
  %gep2449 = getelementptr double, ptr %invariant.gep2442, i64 %565
  %566 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2449, ptr noundef nonnull @c__1, ptr noundef %gep2445, ptr noundef nonnull @c__1) #5
  store i32 %479, ptr %16, align 4, !tbaa !5
  %567 = add nsw i32 %.11930, %33
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds double, ptr %35, i64 %568
  %570 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %569, ptr noundef nonnull %10, ptr noundef %gep2447, ptr noundef nonnull @c__1) #5
  %571 = sext i32 %.11930 to i64
  %572 = getelementptr double, ptr %480, i64 %571
  %573 = load double, ptr %572, align 8, !tbaa !9
  %574 = call double @llvm.fmuladd.f64(double %95, double %570, double %566)
  %575 = fsub double %573, %574
  store double %575, ptr %435, align 8, !tbaa !9
  %576 = load double, ptr %474, align 8, !tbaa !9
  %577 = fmul double %576, %436
  store double %577, ptr %17, align 8, !tbaa !9
  %578 = sext i32 %558 to i64
  %579 = getelementptr double, ptr %29, i64 %indvars.iv2588
  %580 = getelementptr double, ptr %579, i64 %578
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull @c_b26, ptr noundef %580, ptr noundef nonnull %6, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %581 = load i32, ptr %18, align 4, !tbaa !5
  %.not2227 = icmp eq i32 %581, 0
  br i1 %.not2227, label %583, label %582

582:                                              ; preds = %554
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %583

583:                                              ; preds = %582, %554
  %584 = load double, ptr %22, align 8, !tbaa !9
  %585 = fcmp une double %584, 1.000000e+00
  br i1 %585, label %586, label %594

586:                                              ; preds = %583
  %587 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %587, ptr %16, align 4, !tbaa !5
  %.not22282416 = icmp slt i32 %587, 1
  br i1 %.not22282416, label %._crit_edge2420, label %.lr.ph2419

.lr.ph2419:                                       ; preds = %586, %.lr.ph2419
  %indvars.iv2576 = phi i64 [ %indvars.iv.next2577, %.lr.ph2419 ], [ 1, %586 ]
  %588 = mul nsw i64 %indvars.iv2576, %442
  %gep2415 = getelementptr double, ptr %invariant.gep2444, i64 %588
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2415, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2577 = add nuw nsw i64 %indvars.iv2576, 1
  %589 = load i32, ptr %16, align 4, !tbaa !5
  %590 = sext i32 %589 to i64
  %.not2228.not = icmp slt i64 %indvars.iv2576, %590
  br i1 %.not2228.not, label %.lr.ph2419, label %._crit_edge2420.loopexit, !llvm.loop !19

._crit_edge2420.loopexit:                         ; preds = %.lr.ph2419
  %.pre2621 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2420

._crit_edge2420:                                  ; preds = %._crit_edge2420.loopexit, %586
  %591 = phi double [ %.pre2621, %._crit_edge2420.loopexit ], [ %584, %586 ]
  %592 = load double, ptr %11, align 8, !tbaa !9
  %593 = fmul double %591, %592
  store double %593, ptr %11, align 8, !tbaa !9
  br label %594

594:                                              ; preds = %._crit_edge2420, %583
  %595 = load double, ptr %20, align 16, !tbaa !9
  store double %595, ptr %gep2692, align 8, !tbaa !9
  %596 = load double, ptr %437, align 8, !tbaa !9
  store double %596, ptr %572, align 8, !tbaa !9
  br label %693

597:                                              ; preds = %553
  %or.cond2272 = and i1 %505, %.not2270
  br i1 %or.cond2272, label %598, label %636

598:                                              ; preds = %597
  %599 = trunc i64 %indvars.iv2588 to i32
  %600 = add nsw i32 %599, -1
  store i32 %600, ptr %16, align 4, !tbaa !5
  %601 = mul nsw i64 %indvars.iv2588, %443
  %602 = mul nsw i32 %27, %indvars2590
  %gep2463 = getelementptr double, ptr %invariant.gep2442, i64 %601
  %603 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2463, ptr noundef nonnull @c__1, ptr noundef %gep2445, ptr noundef nonnull @c__1) #5
  store i32 %483, ptr %16, align 4, !tbaa !5
  %gep2700 = getelementptr double, ptr %invariant.gep2699, i64 %indvars.iv2588
  %604 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2700, ptr noundef nonnull %10, ptr noundef %gep2447, ptr noundef nonnull @c__1) #5
  %gep2702 = getelementptr double, ptr %invariant.gep2701, i64 %indvars.iv2588
  %605 = load double, ptr %gep2702, align 8, !tbaa !9
  %606 = call double @llvm.fmuladd.f64(double %95, double %604, double %603)
  %607 = fsub double %605, %606
  %608 = fmul double %607, %95
  store double %608, ptr %25, align 16, !tbaa !9
  store i32 %600, ptr %16, align 4, !tbaa !5
  %609 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2463, ptr noundef nonnull @c__1, ptr noundef %gep2457, ptr noundef nonnull @c__1) #5
  store i32 %483, ptr %16, align 4, !tbaa !5
  %610 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2700, ptr noundef nonnull %10, ptr noundef %gep2459, ptr noundef nonnull @c__1) #5
  %gep2704 = getelementptr double, ptr %invariant.gep2703, i64 %indvars.iv2588
  %611 = load double, ptr %gep2704, align 8, !tbaa !9
  %612 = call double @llvm.fmuladd.f64(double %95, double %610, double %609)
  %613 = fsub double %611, %612
  %614 = fmul double %613, %95
  store double %614, ptr %435, align 8, !tbaa !9
  %615 = sext i32 %602 to i64
  %616 = getelementptr double, ptr %29, i64 %indvars.iv2588
  %617 = getelementptr double, ptr %616, i64 %615
  %618 = load double, ptr %617, align 8, !tbaa !9
  %619 = fmul double %618, %436
  store double %619, ptr %17, align 8, !tbaa !9
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull @c_b26, ptr noundef %474, ptr noundef nonnull %8, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %620 = load i32, ptr %18, align 4, !tbaa !5
  %.not2225 = icmp eq i32 %620, 0
  br i1 %.not2225, label %622, label %621

621:                                              ; preds = %598
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %622

622:                                              ; preds = %621, %598
  %623 = load double, ptr %22, align 8, !tbaa !9
  %624 = fcmp une double %623, 1.000000e+00
  br i1 %624, label %625, label %633

625:                                              ; preds = %622
  %626 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %626, ptr %16, align 4, !tbaa !5
  %.not22262430 = icmp slt i32 %626, 1
  br i1 %.not22262430, label %._crit_edge2434, label %.lr.ph2433

.lr.ph2433:                                       ; preds = %625, %.lr.ph2433
  %indvars.iv2582 = phi i64 [ %indvars.iv.next2583, %.lr.ph2433 ], [ 1, %625 ]
  %627 = mul nsw i64 %indvars.iv2582, %442
  %gep2429 = getelementptr double, ptr %invariant.gep2444, i64 %627
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2429, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2583 = add nuw nsw i64 %indvars.iv2582, 1
  %628 = load i32, ptr %16, align 4, !tbaa !5
  %629 = sext i32 %628 to i64
  %.not2226.not = icmp slt i64 %indvars.iv2582, %629
  br i1 %.not2226.not, label %.lr.ph2433, label %._crit_edge2434.loopexit, !llvm.loop !20

._crit_edge2434.loopexit:                         ; preds = %.lr.ph2433
  %.pre2623 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2434

._crit_edge2434:                                  ; preds = %._crit_edge2434.loopexit, %625
  %630 = phi double [ %.pre2623, %._crit_edge2434.loopexit ], [ %623, %625 ]
  %631 = load double, ptr %11, align 8, !tbaa !9
  %632 = fmul double %630, %631
  store double %632, ptr %11, align 8, !tbaa !9
  br label %633

633:                                              ; preds = %._crit_edge2434, %622
  %634 = load double, ptr %20, align 16, !tbaa !9
  store double %634, ptr %gep2702, align 8, !tbaa !9
  %635 = load double, ptr %437, align 8, !tbaa !9
  store double %635, ptr %gep2704, align 8, !tbaa !9
  br label %693

636:                                              ; preds = %597
  %or.cond2273 = or i1 %467, %505
  br i1 %or.cond2273, label %693, label %637

637:                                              ; preds = %636
  %638 = trunc i64 %indvars.iv2588 to i32
  %639 = add i32 %638, -1
  store i32 %639, ptr %16, align 4, !tbaa !5
  %640 = mul nsw i64 %indvars.iv2588, %443
  %641 = mul nsw i32 %27, %indvars2590
  %gep2451 = getelementptr double, ptr %invariant.gep2442, i64 %640
  %642 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2451, ptr noundef nonnull @c__1, ptr noundef %gep2445, ptr noundef nonnull @c__1) #5
  store i32 %481, ptr %16, align 4, !tbaa !5
  %gep2694 = getelementptr double, ptr %invariant.gep2693, i64 %indvars.iv2588
  %643 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2694, ptr noundef nonnull %10, ptr noundef %gep2447, ptr noundef nonnull @c__1) #5
  %gep2696 = getelementptr double, ptr %invariant.gep2695, i64 %indvars.iv2588
  %644 = load double, ptr %gep2696, align 8, !tbaa !9
  %645 = call double @llvm.fmuladd.f64(double %95, double %643, double %642)
  %646 = fsub double %644, %645
  store double %646, ptr %25, align 16, !tbaa !9
  store i32 %639, ptr %16, align 4, !tbaa !5
  %647 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2451, ptr noundef nonnull @c__1, ptr noundef %gep2457, ptr noundef nonnull @c__1) #5
  store i32 %481, ptr %16, align 4, !tbaa !5
  %648 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2694, ptr noundef nonnull %10, ptr noundef %gep2459, ptr noundef nonnull @c__1) #5
  %gep2698 = getelementptr double, ptr %invariant.gep2697, i64 %indvars.iv2588
  %649 = load double, ptr %gep2698, align 8, !tbaa !9
  %650 = call double @llvm.fmuladd.f64(double %95, double %648, double %647)
  %651 = fsub double %649, %650
  store double %651, ptr %438, align 16, !tbaa !9
  store i32 %639, ptr %16, align 4, !tbaa !5
  %652 = mul nsw i32 %.11930, %27
  %653 = sext i32 %652 to i64
  %gep2461 = getelementptr double, ptr %invariant.gep2442, i64 %653
  %654 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2461, ptr noundef nonnull @c__1, ptr noundef %gep2445, ptr noundef nonnull @c__1) #5
  store i32 %481, ptr %16, align 4, !tbaa !5
  %655 = add nsw i32 %.11930, %33
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds double, ptr %35, i64 %656
  %658 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %657, ptr noundef nonnull %10, ptr noundef %gep2447, ptr noundef nonnull @c__1) #5
  %659 = sext i32 %.11930 to i64
  %660 = getelementptr double, ptr %482, i64 %659
  %661 = load double, ptr %660, align 8, !tbaa !9
  %662 = call double @llvm.fmuladd.f64(double %95, double %658, double %654)
  %663 = fsub double %661, %662
  store double %663, ptr %435, align 8, !tbaa !9
  store i32 %639, ptr %16, align 4, !tbaa !5
  %664 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %gep2461, ptr noundef nonnull @c__1, ptr noundef %gep2457, ptr noundef nonnull @c__1) #5
  store i32 %481, ptr %16, align 4, !tbaa !5
  %665 = call double @ddot_(ptr noundef nonnull %16, ptr noundef %657, ptr noundef nonnull %10, ptr noundef %gep2459, ptr noundef nonnull @c__1) #5
  %666 = add nsw i32 %.11930, %475
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds double, ptr %35, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !9
  %670 = call double @llvm.fmuladd.f64(double %95, double %665, double %664)
  %671 = fsub double %669, %670
  store double %671, ptr %439, align 8, !tbaa !9
  %672 = sext i32 %641 to i64
  %673 = getelementptr double, ptr %29, i64 %indvars.iv2588
  %674 = getelementptr double, ptr %673, i64 %672
  call void @dlasy2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c_false, ptr noundef nonnull %2, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef %674, ptr noundef nonnull %6, ptr noundef %474, ptr noundef nonnull %8, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %675 = load i32, ptr %18, align 4, !tbaa !5
  %.not2223 = icmp eq i32 %675, 0
  br i1 %.not2223, label %677, label %676

676:                                              ; preds = %637
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %677

677:                                              ; preds = %676, %637
  %678 = load double, ptr %22, align 8, !tbaa !9
  %679 = fcmp une double %678, 1.000000e+00
  br i1 %679, label %680, label %688

680:                                              ; preds = %677
  %681 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %681, ptr %16, align 4, !tbaa !5
  %.not22242423 = icmp slt i32 %681, 1
  br i1 %.not22242423, label %._crit_edge2427, label %.lr.ph2426

.lr.ph2426:                                       ; preds = %680, %.lr.ph2426
  %indvars.iv2579 = phi i64 [ %indvars.iv.next2580, %.lr.ph2426 ], [ 1, %680 ]
  %682 = mul nsw i64 %indvars.iv2579, %442
  %gep2422 = getelementptr double, ptr %invariant.gep2444, i64 %682
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2422, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2580 = add nuw nsw i64 %indvars.iv2579, 1
  %683 = load i32, ptr %16, align 4, !tbaa !5
  %684 = sext i32 %683 to i64
  %.not2224.not = icmp slt i64 %indvars.iv2579, %684
  br i1 %.not2224.not, label %.lr.ph2426, label %._crit_edge2427.loopexit, !llvm.loop !21

._crit_edge2427.loopexit:                         ; preds = %.lr.ph2426
  %.pre2622 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2427

._crit_edge2427:                                  ; preds = %._crit_edge2427.loopexit, %680
  %685 = phi double [ %.pre2622, %._crit_edge2427.loopexit ], [ %678, %680 ]
  %686 = load double, ptr %11, align 8, !tbaa !9
  %687 = fmul double %685, %686
  store double %687, ptr %11, align 8, !tbaa !9
  br label %688

688:                                              ; preds = %._crit_edge2427, %677
  %689 = load double, ptr %20, align 16, !tbaa !9
  store double %689, ptr %gep2696, align 8, !tbaa !9
  %690 = load double, ptr %440, align 16, !tbaa !9
  store double %690, ptr %gep2698, align 8, !tbaa !9
  %691 = load double, ptr %437, align 8, !tbaa !9
  store double %691, ptr %660, align 8, !tbaa !9
  %692 = load double, ptr %441, align 8, !tbaa !9
  store double %692, ptr %668, align 8, !tbaa !9
  br label %693

693:                                              ; preds = %485, %594, %636, %688, %633, %551
  %.51946 = phi i32 [ %.319442480, %485 ], [ %.41945, %551 ], [ %.41945, %594 ], [ %.41945, %633 ], [ %.41945, %688 ], [ %.41945, %636 ]
  %indvars.iv.next2589 = add nuw nsw i64 %indvars.iv2588, 1
  %694 = load i32, ptr %15, align 4, !tbaa !5
  %695 = sext i32 %694 to i64
  %.not2219.not = icmp slt i64 %indvars.iv2588, %695
  br i1 %.not2219.not, label %485, label %.loopexit2314.loopexit, !llvm.loop !22

.loopexit2314.loopexit:                           ; preds = %693
  %.pre2626 = load i32, ptr %14, align 4, !tbaa !5
  br label %.loopexit2314

.loopexit2314:                                    ; preds = %.loopexit2314.loopexit, %464, %445
  %696 = phi i32 [ %446, %445 ], [ %446, %464 ], [ %.pre2626, %.loopexit2314.loopexit ]
  %.5 = phi i32 [ %.319402486, %445 ], [ %.4, %464 ], [ %.4, %.loopexit2314.loopexit ]
  %indvars.iv.next2592 = add nuw nsw i64 %indvars.iv2591, 1
  %697 = sext i32 %696 to i64
  %.not2218.not = icmp slt i64 %indvars.iv2591, %697
  br i1 %.not2218.not, label %445, label %.loopexit2313, !llvm.loop !23

698:                                              ; preds = %431
  %or.cond9 = select i1 %38, i1 true, i1 %96
  br i1 %or.cond9, label %1055, label %699

699:                                              ; preds = %698
  %700 = load i32, ptr %4, align 4, !tbaa !5
  %701 = icmp sgt i32 %700, 0
  br i1 %701, label %.lr.ph2376, label %.loopexit2313

.lr.ph2376:                                       ; preds = %699
  %invariant.gep2343 = getelementptr i8, ptr %29, i64 8
  %invariant.gep2345 = getelementptr i8, ptr %35, i64 8
  %702 = getelementptr inbounds i8, ptr %25, i64 8
  %703 = fneg double %95
  %704 = add i32 %30, 1
  %705 = getelementptr inbounds i8, ptr %20, i64 8
  %706 = getelementptr inbounds i8, ptr %25, i64 16
  %707 = getelementptr inbounds i8, ptr %25, i64 24
  %708 = getelementptr inbounds i8, ptr %20, i64 16
  %709 = getelementptr inbounds i8, ptr %20, i64 24
  %710 = sext i32 %33 to i64
  %711 = sext i32 %27 to i64
  %712 = zext nneg i32 %700 to i64
  br label %713

713:                                              ; preds = %.lr.ph2376, %.loopexit2318
  %indvars.iv2555 = phi i64 [ %712, %.lr.ph2376 ], [ %indvars.iv.next2556, %.loopexit2318 ]
  %.62374 = phi i32 [ %700, %.lr.ph2376 ], [ %.8, %.loopexit2318 ]
  %indvars2557 = trunc i64 %indvars.iv2555 to i32
  %714 = sext i32 %.62374 to i64
  %715 = icmp sgt i64 %indvars.iv2555, %714
  br i1 %715, label %.loopexit2318, label %716

716:                                              ; preds = %713
  %717 = icmp eq i64 %indvars.iv2555, 1
  br i1 %717, label %729, label %718

718:                                              ; preds = %716
  %719 = add nsw i32 %indvars2557, -1
  %720 = mul nsw i32 %719, %30
  %721 = sext i32 %720 to i64
  %722 = getelementptr double, ptr %32, i64 %indvars.iv2555
  %723 = getelementptr double, ptr %722, i64 %721
  %724 = load double, ptr %723, align 8, !tbaa !9
  %725 = fcmp une double %724, 0.000000e+00
  br i1 %725, label %726, label %729

726:                                              ; preds = %718
  %727 = trunc i64 %indvars.iv2555 to i32
  %728 = add i32 %727, -2
  br label %729

729:                                              ; preds = %718, %716, %726
  %.7 = phi i32 [ %728, %726 ], [ %.62374, %716 ], [ %719, %718 ]
  %.21927 = phi i32 [ %719, %726 ], [ 1, %716 ], [ %indvars2557, %718 ]
  %730 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %730, ptr %14, align 4, !tbaa !5
  %.not21432367 = icmp slt i32 %730, 1
  br i1 %.not21432367, label %.loopexit2318, label %.lr.ph2371

.lr.ph2371:                                       ; preds = %729
  %731 = zext i32 %.21927 to i64
  %732 = icmp eq i64 %indvars.iv2555, %731
  %.not2276 = xor i1 %732, true
  %733 = mul nsw i32 %.21927, %33
  %734 = sext i32 %733 to i64
  %gep2346 = getelementptr double, ptr %invariant.gep2345, i64 %734
  %735 = add nuw nsw i64 %indvars.iv2555, 1
  %736 = mul i32 %.21927, %704
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %32, i64 %737
  %739 = mul nsw i64 %indvars.iv2555, %710
  %gep2354 = getelementptr double, ptr %invariant.gep2345, i64 %739
  %740 = add nuw nsw i32 %.21927, 1
  %741 = trunc nsw i64 %735 to i32
  %invariant.gep = getelementptr double, ptr %35, i64 %734
  %742 = trunc nsw i64 %735 to i32
  %invariant.gep2671 = getelementptr double, ptr %35, i64 %734
  %743 = getelementptr double, ptr %32, i64 %indvars.iv2555
  %invariant.gep2673 = getelementptr double, ptr %35, i64 %739
  %744 = getelementptr double, ptr %32, i64 %indvars.iv2555
  %745 = getelementptr double, ptr %35, i64 %739
  %746 = trunc nsw i64 %735 to i32
  %invariant.gep2675 = getelementptr double, ptr %35, i64 %734
  %747 = getelementptr double, ptr %32, i64 %indvars.iv2555
  %invariant.gep2677 = getelementptr double, ptr %35, i64 %739
  %invariant.gep2679 = getelementptr double, ptr %35, i64 %734
  br label %748

748:                                              ; preds = %.lr.ph2371, %1051
  %indvars.iv2552 = phi i64 [ 1, %.lr.ph2371 ], [ %indvars.iv.next2553, %1051 ]
  %.619472369 = phi i32 [ 1, %.lr.ph2371 ], [ %.81949, %1051 ]
  %indvars2554 = trunc i64 %indvars.iv2552 to i32
  %749 = sext i32 %.619472369 to i64
  %750 = icmp slt i64 %indvars.iv2552, %749
  br i1 %750, label %1051, label %751

751:                                              ; preds = %748
  %752 = load i32, ptr %3, align 4, !tbaa !5
  %753 = zext i32 %752 to i64
  %754 = icmp eq i64 %indvars.iv2552, %753
  br i1 %754, label %766, label %755

755:                                              ; preds = %751
  %756 = add nuw nsw i64 %indvars.iv2552, 1
  %757 = mul nsw i64 %indvars.iv2552, %711
  %758 = getelementptr double, ptr %29, i64 %756
  %759 = getelementptr double, ptr %758, i64 %757
  %760 = load double, ptr %759, align 8, !tbaa !9
  %761 = fcmp une double %760, 0.000000e+00
  %762 = trunc nsw i64 %756 to i32
  br i1 %761, label %763, label %766

763:                                              ; preds = %755
  %764 = add nuw nsw i32 %indvars2554, 1
  %765 = add nuw nsw i32 %indvars2554, 2
  br label %766

766:                                              ; preds = %755, %751, %763
  %.71948 = phi i32 [ %765, %763 ], [ %.619472369, %751 ], [ %762, %755 ]
  %.21931 = phi i32 [ %764, %763 ], [ %indvars2554, %751 ], [ %indvars2554, %755 ]
  %767 = zext i32 %.21931 to i64
  %768 = icmp eq i64 %indvars.iv2552, %767
  %or.cond2274 = and i1 %732, %768
  br i1 %or.cond2274, label %769, label %826

769:                                              ; preds = %766
  %770 = trunc i64 %indvars.iv2552 to i32
  %771 = add nsw i32 %770, -1
  store i32 %771, ptr %15, align 4, !tbaa !5
  %772 = mul nsw i64 %indvars.iv2552, %711
  %773 = mul nsw i32 %27, %indvars2554
  %gep2364 = getelementptr double, ptr %invariant.gep2343, i64 %772
  %774 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2364, ptr noundef nonnull @c__1, ptr noundef %gep2346, ptr noundef nonnull @c__1) #5
  %775 = load i32, ptr %4, align 4, !tbaa !5
  %776 = sub nsw i32 %775, %.21927
  store i32 %776, ptr %15, align 4, !tbaa !5
  store i32 %740, ptr %16, align 4, !tbaa !5
  %.not2169.not = icmp slt i32 %.21927, %775
  %.2275 = select i1 %.not2169.not, i32 %740, i32 %775
  %777 = mul nsw i32 %.2275, %33
  %778 = sext i32 %777 to i64
  %779 = getelementptr double, ptr %35, i64 %indvars.iv2552
  %780 = getelementptr double, ptr %779, i64 %778
  %781 = mul nsw i32 %.2275, %30
  %782 = add nsw i32 %781, %.21927
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds double, ptr %32, i64 %783
  %785 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %780, ptr noundef nonnull %10, ptr noundef %784, ptr noundef nonnull %8) #5
  %gep2680 = getelementptr double, ptr %invariant.gep2679, i64 %indvars.iv2552
  %786 = load double, ptr %gep2680, align 8, !tbaa !9
  %787 = call double @llvm.fmuladd.f64(double %95, double %785, double %774)
  %788 = fsub double %786, %787
  store double %788, ptr %25, align 16, !tbaa !9
  store double 1.000000e+00, ptr %22, align 8, !tbaa !9
  %789 = sext i32 %773 to i64
  %790 = getelementptr double, ptr %29, i64 %indvars.iv2552
  %791 = getelementptr double, ptr %790, i64 %789
  %792 = load double, ptr %791, align 8, !tbaa !9
  %793 = load double, ptr %738, align 8, !tbaa !9
  %794 = call double @llvm.fmuladd.f64(double %95, double %793, double %792)
  %795 = fcmp oge double %794, 0.000000e+00
  %796 = fneg double %794
  %797 = select i1 %795, double %794, double %796
  %798 = load double, ptr %19, align 8, !tbaa !9
  %799 = fcmp ugt double %797, %798
  br i1 %799, label %801, label %800

800:                                              ; preds = %769
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %801

801:                                              ; preds = %800, %769
  %.21919 = phi double [ %798, %800 ], [ %794, %769 ]
  %.2 = phi double [ %798, %800 ], [ %797, %769 ]
  %802 = fcmp oge double %788, 0.000000e+00
  %803 = fneg double %788
  %804 = select i1 %802, double %788, double %803
  %805 = fcmp olt double %.2, 1.000000e+00
  %806 = fcmp ogt double %804, 1.000000e+00
  %or.cond11 = select i1 %805, i1 %806, i1 false
  br i1 %or.cond11, label %807, label %thread-pre-split2303.thread

807:                                              ; preds = %801
  %808 = load double, ptr %23, align 8, !tbaa !9
  %809 = fmul double %.2, %808
  %810 = fcmp ogt double %804, %809
  br i1 %810, label %thread-pre-split2303, label %thread-pre-split2303.thread

thread-pre-split2303.thread:                      ; preds = %801, %807
  %811 = fdiv double %788, %.21919
  store double %811, ptr %20, align 16, !tbaa !9
  br label %824

thread-pre-split2303:                             ; preds = %807
  %812 = fdiv double 1.000000e+00, %804
  store double %812, ptr %22, align 8, !tbaa !9
  %813 = fmul double %788, %812
  %814 = fdiv double %813, %.21919
  store double %814, ptr %20, align 16, !tbaa !9
  %815 = fcmp une double %812, 1.000000e+00
  br i1 %815, label %816, label %824

816:                                              ; preds = %thread-pre-split2303
  %817 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %817, ptr %15, align 4, !tbaa !5
  %.not21712338 = icmp slt i32 %817, 1
  br i1 %.not21712338, label %._crit_edge2342, label %.lr.ph2341

.lr.ph2341:                                       ; preds = %816, %.lr.ph2341
  %indvars.iv2549 = phi i64 [ %indvars.iv.next2550, %.lr.ph2341 ], [ 1, %816 ]
  %818 = mul nsw i64 %indvars.iv2549, %710
  %gep2337 = getelementptr double, ptr %invariant.gep2345, i64 %818
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2337, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2550 = add nuw nsw i64 %indvars.iv2549, 1
  %819 = load i32, ptr %15, align 4, !tbaa !5
  %820 = sext i32 %819 to i64
  %.not2171.not = icmp slt i64 %indvars.iv2549, %820
  br i1 %.not2171.not, label %.lr.ph2341, label %._crit_edge2342.loopexit, !llvm.loop !24

._crit_edge2342.loopexit:                         ; preds = %.lr.ph2341
  %.pre2614 = load double, ptr %22, align 8, !tbaa !9
  %.pre2615.pre = load double, ptr %20, align 16, !tbaa !9
  br label %._crit_edge2342

._crit_edge2342:                                  ; preds = %._crit_edge2342.loopexit, %816
  %.pre2615 = phi double [ %.pre2615.pre, %._crit_edge2342.loopexit ], [ %814, %816 ]
  %821 = phi double [ %.pre2614, %._crit_edge2342.loopexit ], [ %812, %816 ]
  %822 = load double, ptr %11, align 8, !tbaa !9
  %823 = fmul double %821, %822
  store double %823, ptr %11, align 8, !tbaa !9
  br label %824

824:                                              ; preds = %thread-pre-split2303.thread, %._crit_edge2342, %thread-pre-split2303
  %825 = phi double [ %.pre2615, %._crit_edge2342 ], [ %814, %thread-pre-split2303 ], [ %811, %thread-pre-split2303.thread ]
  store double %825, ptr %gep2680, align 8, !tbaa !9
  br label %1051

826:                                              ; preds = %766
  %or.cond2277 = or i1 %768, %.not2276
  br i1 %or.cond2277, label %891, label %827

827:                                              ; preds = %826
  %828 = trunc i64 %indvars.iv2552 to i32
  %829 = add i32 %828, -1
  store i32 %829, ptr %15, align 4, !tbaa !5
  %830 = mul nsw i64 %indvars.iv2552, %711
  %831 = mul nsw i32 %27, %indvars2554
  %gep2344 = getelementptr double, ptr %invariant.gep2343, i64 %830
  %832 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2344, ptr noundef nonnull @c__1, ptr noundef %gep2346, ptr noundef nonnull @c__1) #5
  %833 = load i32, ptr %4, align 4, !tbaa !5
  %834 = sub nsw i32 %833, %indvars2557
  store i32 %834, ptr %15, align 4, !tbaa !5
  %835 = sext i32 %833 to i64
  %.not2163.not = icmp slt i64 %indvars.iv2555, %835
  %.2278 = select i1 %.not2163.not, i32 %741, i32 %833
  %836 = mul nsw i32 %.2278, %33
  %837 = sext i32 %836 to i64
  %838 = getelementptr double, ptr %35, i64 %indvars.iv2552
  %839 = getelementptr double, ptr %838, i64 %837
  %840 = mul nsw i32 %.2278, %30
  %841 = add nsw i32 %840, %.21927
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %32, i64 %842
  %844 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %839, ptr noundef nonnull %10, ptr noundef %843, ptr noundef nonnull %8) #5
  %gep2670 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv2552
  %845 = load double, ptr %gep2670, align 8, !tbaa !9
  %846 = call double @llvm.fmuladd.f64(double %95, double %844, double %832)
  %847 = fsub double %845, %846
  store double %847, ptr %25, align 16, !tbaa !9
  store i32 %829, ptr %15, align 4, !tbaa !5
  %848 = mul nsw i32 %.21931, %27
  %849 = sext i32 %848 to i64
  %gep2348 = getelementptr double, ptr %invariant.gep2343, i64 %849
  %850 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2348, ptr noundef nonnull @c__1, ptr noundef %gep2346, ptr noundef nonnull @c__1) #5
  %851 = load i32, ptr %4, align 4, !tbaa !5
  %852 = sub nsw i32 %851, %indvars2557
  store i32 %852, ptr %15, align 4, !tbaa !5
  store i32 %741, ptr %16, align 4, !tbaa !5
  %853 = sext i32 %851 to i64
  %.not2165.not = icmp slt i64 %indvars.iv2555, %853
  %854 = select i1 %.not2165.not, i32 %741, i32 %851
  %855 = mul nsw i32 %854, %33
  %856 = add nsw i32 %855, %.21931
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds double, ptr %35, i64 %857
  %859 = mul nsw i32 %854, %30
  %860 = add nsw i32 %859, %.21927
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %32, i64 %861
  %863 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %858, ptr noundef nonnull %10, ptr noundef %862, ptr noundef nonnull %8) #5
  %864 = add nsw i32 %.21931, %733
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %35, i64 %865
  %867 = load double, ptr %866, align 8, !tbaa !9
  %868 = call double @llvm.fmuladd.f64(double %95, double %863, double %850)
  %869 = fsub double %867, %868
  store double %869, ptr %702, align 8, !tbaa !9
  %870 = load double, ptr %738, align 8, !tbaa !9
  %871 = fmul double %870, %703
  store double %871, ptr %17, align 8, !tbaa !9
  %872 = sext i32 %831 to i64
  %873 = getelementptr double, ptr %29, i64 %indvars.iv2552
  %874 = getelementptr double, ptr %873, i64 %872
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull @c_b26, ptr noundef %874, ptr noundef nonnull %6, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %875 = load i32, ptr %18, align 4, !tbaa !5
  %.not2167 = icmp eq i32 %875, 0
  br i1 %.not2167, label %877, label %876

876:                                              ; preds = %827
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %877

877:                                              ; preds = %876, %827
  %878 = load double, ptr %22, align 8, !tbaa !9
  %879 = fcmp une double %878, 1.000000e+00
  br i1 %879, label %880, label %888

880:                                              ; preds = %877
  %881 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %881, ptr %15, align 4, !tbaa !5
  %.not21682320 = icmp slt i32 %881, 1
  br i1 %.not21682320, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %880, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %880 ]
  %882 = mul nsw i64 %indvars.iv, %710
  %gep = getelementptr double, ptr %invariant.gep2345, i64 %882
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %883 = load i32, ptr %15, align 4, !tbaa !5
  %884 = sext i32 %883 to i64
  %.not2168.not = icmp slt i64 %indvars.iv, %884
  br i1 %.not2168.not, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !25

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %880
  %885 = phi double [ %.pre, %._crit_edge.loopexit ], [ %878, %880 ]
  %886 = load double, ptr %11, align 8, !tbaa !9
  %887 = fmul double %885, %886
  store double %887, ptr %11, align 8, !tbaa !9
  br label %888

888:                                              ; preds = %._crit_edge, %877
  %889 = load double, ptr %20, align 16, !tbaa !9
  store double %889, ptr %gep2670, align 8, !tbaa !9
  %890 = load double, ptr %705, align 8, !tbaa !9
  store double %890, ptr %866, align 8, !tbaa !9
  br label %1051

891:                                              ; preds = %826
  %or.cond2279 = and i1 %768, %.not2276
  br i1 %or.cond2279, label %892, label %952

892:                                              ; preds = %891
  %893 = trunc i64 %indvars.iv2552 to i32
  %894 = add nsw i32 %893, -1
  store i32 %894, ptr %15, align 4, !tbaa !5
  %895 = mul nsw i64 %indvars.iv2552, %711
  %896 = mul nsw i32 %27, %indvars2554
  %gep2358 = getelementptr double, ptr %invariant.gep2343, i64 %895
  %897 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2358, ptr noundef nonnull @c__1, ptr noundef %gep2346, ptr noundef nonnull @c__1) #5
  %898 = load i32, ptr %4, align 4, !tbaa !5
  %899 = sub nsw i32 %898, %indvars2557
  store i32 %899, ptr %15, align 4, !tbaa !5
  %900 = sext i32 %898 to i64
  %.not2157.not = icmp slt i64 %indvars.iv2555, %900
  %.2280 = select i1 %.not2157.not, i32 %746, i32 %898
  %901 = mul nsw i32 %.2280, %33
  %902 = sext i32 %901 to i64
  %903 = getelementptr double, ptr %35, i64 %indvars.iv2552
  %904 = getelementptr double, ptr %903, i64 %902
  %905 = mul nsw i32 %.2280, %30
  %906 = add nsw i32 %905, %.21927
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %32, i64 %907
  %909 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %904, ptr noundef nonnull %10, ptr noundef %908, ptr noundef nonnull %8) #5
  %gep2676 = getelementptr double, ptr %invariant.gep2675, i64 %indvars.iv2552
  %910 = load double, ptr %gep2676, align 8, !tbaa !9
  %911 = call double @llvm.fmuladd.f64(double %95, double %909, double %897)
  %912 = fsub double %910, %911
  %913 = fmul double %912, %95
  store double %913, ptr %25, align 16, !tbaa !9
  store i32 %894, ptr %15, align 4, !tbaa !5
  %914 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2358, ptr noundef nonnull @c__1, ptr noundef %gep2354, ptr noundef nonnull @c__1) #5
  %915 = load i32, ptr %4, align 4, !tbaa !5
  %916 = sub nsw i32 %915, %indvars2557
  store i32 %916, ptr %15, align 4, !tbaa !5
  store i32 %746, ptr %16, align 4, !tbaa !5
  %917 = sext i32 %915 to i64
  %.not2159.not = icmp slt i64 %indvars.iv2555, %917
  %918 = select i1 %.not2159.not, i32 %746, i32 %915
  %919 = mul nsw i32 %918, %33
  %920 = sext i32 %919 to i64
  %921 = getelementptr double, ptr %35, i64 %indvars.iv2552
  %922 = getelementptr double, ptr %921, i64 %920
  %923 = mul nsw i32 %918, %30
  %924 = sext i32 %923 to i64
  %925 = getelementptr double, ptr %747, i64 %924
  %926 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %922, ptr noundef nonnull %10, ptr noundef %925, ptr noundef nonnull %8) #5
  %gep2678 = getelementptr double, ptr %invariant.gep2677, i64 %indvars.iv2552
  %927 = load double, ptr %gep2678, align 8, !tbaa !9
  %928 = call double @llvm.fmuladd.f64(double %95, double %926, double %914)
  %929 = fsub double %927, %928
  %930 = fmul double %929, %95
  store double %930, ptr %702, align 8, !tbaa !9
  %931 = sext i32 %896 to i64
  %932 = getelementptr double, ptr %29, i64 %indvars.iv2552
  %933 = getelementptr double, ptr %932, i64 %931
  %934 = load double, ptr %933, align 8, !tbaa !9
  %935 = fmul double %934, %703
  store double %935, ptr %17, align 8, !tbaa !9
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull @c_b26, ptr noundef %738, ptr noundef nonnull %8, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %936 = load i32, ptr %18, align 4, !tbaa !5
  %.not2161 = icmp eq i32 %936, 0
  br i1 %.not2161, label %938, label %937

937:                                              ; preds = %892
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %938

938:                                              ; preds = %937, %892
  %939 = load double, ptr %22, align 8, !tbaa !9
  %940 = fcmp une double %939, 1.000000e+00
  br i1 %940, label %941, label %949

941:                                              ; preds = %938
  %942 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %942, ptr %15, align 4, !tbaa !5
  %.not21622331 = icmp slt i32 %942, 1
  br i1 %.not21622331, label %._crit_edge2335, label %.lr.ph2334

.lr.ph2334:                                       ; preds = %941, %.lr.ph2334
  %indvars.iv2546 = phi i64 [ %indvars.iv.next2547, %.lr.ph2334 ], [ 1, %941 ]
  %943 = mul nsw i64 %indvars.iv2546, %710
  %gep2330 = getelementptr double, ptr %invariant.gep2345, i64 %943
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2330, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2547 = add nuw nsw i64 %indvars.iv2546, 1
  %944 = load i32, ptr %15, align 4, !tbaa !5
  %945 = sext i32 %944 to i64
  %.not2162.not = icmp slt i64 %indvars.iv2546, %945
  br i1 %.not2162.not, label %.lr.ph2334, label %._crit_edge2335.loopexit, !llvm.loop !26

._crit_edge2335.loopexit:                         ; preds = %.lr.ph2334
  %.pre2613 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2335

._crit_edge2335:                                  ; preds = %._crit_edge2335.loopexit, %941
  %946 = phi double [ %.pre2613, %._crit_edge2335.loopexit ], [ %939, %941 ]
  %947 = load double, ptr %11, align 8, !tbaa !9
  %948 = fmul double %946, %947
  store double %948, ptr %11, align 8, !tbaa !9
  br label %949

949:                                              ; preds = %._crit_edge2335, %938
  %950 = load double, ptr %20, align 16, !tbaa !9
  store double %950, ptr %gep2676, align 8, !tbaa !9
  %951 = load double, ptr %705, align 8, !tbaa !9
  store double %951, ptr %gep2678, align 8, !tbaa !9
  br label %1051

952:                                              ; preds = %891
  %or.cond2281 = or i1 %732, %768
  br i1 %or.cond2281, label %1051, label %953

953:                                              ; preds = %952
  %954 = trunc i64 %indvars.iv2552 to i32
  %955 = add i32 %954, -1
  store i32 %955, ptr %15, align 4, !tbaa !5
  %956 = mul nsw i64 %indvars.iv2552, %711
  %957 = mul nsw i32 %27, %indvars2554
  %gep2350 = getelementptr double, ptr %invariant.gep2343, i64 %956
  %958 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2350, ptr noundef nonnull @c__1, ptr noundef %gep2346, ptr noundef nonnull @c__1) #5
  %959 = load i32, ptr %4, align 4, !tbaa !5
  %960 = sub nsw i32 %959, %indvars2557
  store i32 %960, ptr %15, align 4, !tbaa !5
  %961 = sext i32 %959 to i64
  %.not2147.not = icmp slt i64 %indvars.iv2555, %961
  %.2282 = select i1 %.not2147.not, i32 %742, i32 %959
  %962 = mul nsw i32 %.2282, %33
  %963 = sext i32 %962 to i64
  %964 = getelementptr double, ptr %35, i64 %indvars.iv2552
  %965 = getelementptr double, ptr %964, i64 %963
  %966 = mul nsw i32 %.2282, %30
  %967 = add nsw i32 %966, %.21927
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %32, i64 %968
  %970 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %965, ptr noundef nonnull %10, ptr noundef %969, ptr noundef nonnull %8) #5
  %gep2672 = getelementptr double, ptr %invariant.gep2671, i64 %indvars.iv2552
  %971 = load double, ptr %gep2672, align 8, !tbaa !9
  %972 = call double @llvm.fmuladd.f64(double %95, double %970, double %958)
  %973 = fsub double %971, %972
  store double %973, ptr %25, align 16, !tbaa !9
  store i32 %955, ptr %15, align 4, !tbaa !5
  %974 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2350, ptr noundef nonnull @c__1, ptr noundef %gep2354, ptr noundef nonnull @c__1) #5
  %975 = load i32, ptr %4, align 4, !tbaa !5
  %976 = sub nsw i32 %975, %indvars2557
  store i32 %976, ptr %15, align 4, !tbaa !5
  %977 = sext i32 %975 to i64
  %.not2149.not = icmp slt i64 %indvars.iv2555, %977
  %978 = select i1 %.not2149.not, i32 %742, i32 %975
  %979 = mul nsw i32 %978, %33
  %980 = sext i32 %979 to i64
  %981 = getelementptr double, ptr %35, i64 %indvars.iv2552
  %982 = getelementptr double, ptr %981, i64 %980
  %983 = mul nsw i32 %978, %30
  %984 = sext i32 %983 to i64
  %985 = getelementptr double, ptr %743, i64 %984
  %986 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %982, ptr noundef nonnull %10, ptr noundef %985, ptr noundef nonnull %8) #5
  %gep2674 = getelementptr double, ptr %invariant.gep2673, i64 %indvars.iv2552
  %987 = load double, ptr %gep2674, align 8, !tbaa !9
  %988 = call double @llvm.fmuladd.f64(double %95, double %986, double %974)
  %989 = fsub double %987, %988
  store double %989, ptr %706, align 16, !tbaa !9
  store i32 %955, ptr %15, align 4, !tbaa !5
  %990 = mul nsw i32 %.21931, %27
  %991 = sext i32 %990 to i64
  %gep2356 = getelementptr double, ptr %invariant.gep2343, i64 %991
  %992 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2356, ptr noundef nonnull @c__1, ptr noundef %gep2346, ptr noundef nonnull @c__1) #5
  %993 = load i32, ptr %4, align 4, !tbaa !5
  %994 = sub nsw i32 %993, %indvars2557
  store i32 %994, ptr %15, align 4, !tbaa !5
  %995 = sext i32 %993 to i64
  %.not2151.not = icmp slt i64 %indvars.iv2555, %995
  %996 = select i1 %.not2151.not, i32 %742, i32 %993
  %997 = mul nsw i32 %996, %33
  %998 = add nsw i32 %997, %.21931
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds double, ptr %35, i64 %999
  %1001 = mul nsw i32 %996, %30
  %1002 = add nsw i32 %1001, %.21927
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds double, ptr %32, i64 %1003
  %1005 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %1000, ptr noundef nonnull %10, ptr noundef %1004, ptr noundef nonnull %8) #5
  %1006 = add nsw i32 %.21931, %733
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds double, ptr %35, i64 %1007
  %1009 = load double, ptr %1008, align 8, !tbaa !9
  %1010 = call double @llvm.fmuladd.f64(double %95, double %1005, double %992)
  %1011 = fsub double %1009, %1010
  store double %1011, ptr %702, align 8, !tbaa !9
  store i32 %955, ptr %15, align 4, !tbaa !5
  %1012 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %gep2356, ptr noundef nonnull @c__1, ptr noundef %gep2354, ptr noundef nonnull @c__1) #5
  %1013 = load i32, ptr %4, align 4, !tbaa !5
  %1014 = sub nsw i32 %1013, %indvars2557
  store i32 %1014, ptr %15, align 4, !tbaa !5
  store i32 %742, ptr %16, align 4, !tbaa !5
  %1015 = sext i32 %1013 to i64
  %.not2153.not = icmp slt i64 %indvars.iv2555, %1015
  %1016 = select i1 %.not2153.not, i32 %742, i32 %1013
  %1017 = mul nsw i32 %1016, %33
  %1018 = add nsw i32 %1017, %.21931
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds double, ptr %35, i64 %1019
  %1021 = mul nsw i32 %1016, %30
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr double, ptr %744, i64 %1022
  %1024 = call double @ddot_(ptr noundef nonnull %15, ptr noundef %1020, ptr noundef nonnull %10, ptr noundef %1023, ptr noundef nonnull %8) #5
  %1025 = sext i32 %.21931 to i64
  %1026 = getelementptr double, ptr %745, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !9
  %1028 = call double @llvm.fmuladd.f64(double %95, double %1024, double %1012)
  %1029 = fsub double %1027, %1028
  store double %1029, ptr %707, align 8, !tbaa !9
  %1030 = sext i32 %957 to i64
  %1031 = getelementptr double, ptr %29, i64 %indvars.iv2552
  %1032 = getelementptr double, ptr %1031, i64 %1030
  call void @dlasy2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c_true, ptr noundef nonnull %2, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef %1032, ptr noundef nonnull %6, ptr noundef %738, ptr noundef nonnull %8, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %1033 = load i32, ptr %18, align 4, !tbaa !5
  %.not2155 = icmp eq i32 %1033, 0
  br i1 %.not2155, label %1035, label %1034

1034:                                             ; preds = %953
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1035

1035:                                             ; preds = %1034, %953
  %1036 = load double, ptr %22, align 8, !tbaa !9
  %1037 = fcmp une double %1036, 1.000000e+00
  br i1 %1037, label %1038, label %1046

1038:                                             ; preds = %1035
  %1039 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %1039, ptr %15, align 4, !tbaa !5
  %.not21562324 = icmp slt i32 %1039, 1
  br i1 %.not21562324, label %._crit_edge2328, label %.lr.ph2327

.lr.ph2327:                                       ; preds = %1038, %.lr.ph2327
  %indvars.iv2543 = phi i64 [ %indvars.iv.next2544, %.lr.ph2327 ], [ 1, %1038 ]
  %1040 = mul nsw i64 %indvars.iv2543, %710
  %gep2323 = getelementptr double, ptr %invariant.gep2345, i64 %1040
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2323, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2544 = add nuw nsw i64 %indvars.iv2543, 1
  %1041 = load i32, ptr %15, align 4, !tbaa !5
  %1042 = sext i32 %1041 to i64
  %.not2156.not = icmp slt i64 %indvars.iv2543, %1042
  br i1 %.not2156.not, label %.lr.ph2327, label %._crit_edge2328.loopexit, !llvm.loop !27

._crit_edge2328.loopexit:                         ; preds = %.lr.ph2327
  %.pre2612 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2328

._crit_edge2328:                                  ; preds = %._crit_edge2328.loopexit, %1038
  %1043 = phi double [ %.pre2612, %._crit_edge2328.loopexit ], [ %1036, %1038 ]
  %1044 = load double, ptr %11, align 8, !tbaa !9
  %1045 = fmul double %1043, %1044
  store double %1045, ptr %11, align 8, !tbaa !9
  br label %1046

1046:                                             ; preds = %._crit_edge2328, %1035
  %1047 = load double, ptr %20, align 16, !tbaa !9
  store double %1047, ptr %gep2672, align 8, !tbaa !9
  %1048 = load double, ptr %708, align 16, !tbaa !9
  store double %1048, ptr %gep2674, align 8, !tbaa !9
  %1049 = load double, ptr %705, align 8, !tbaa !9
  store double %1049, ptr %1008, align 8, !tbaa !9
  %1050 = load double, ptr %709, align 8, !tbaa !9
  store double %1050, ptr %1026, align 8, !tbaa !9
  br label %1051

1051:                                             ; preds = %748, %888, %952, %1046, %949, %824
  %.81949 = phi i32 [ %.619472369, %748 ], [ %.71948, %824 ], [ %.71948, %888 ], [ %.71948, %949 ], [ %.71948, %1046 ], [ %.71948, %952 ]
  %indvars.iv.next2553 = add nuw nsw i64 %indvars.iv2552, 1
  %1052 = load i32, ptr %14, align 4, !tbaa !5
  %1053 = sext i32 %1052 to i64
  %.not2143.not = icmp slt i64 %indvars.iv2552, %1053
  br i1 %.not2143.not, label %748, label %.loopexit2318, !llvm.loop !28

.loopexit2318:                                    ; preds = %1051, %729, %713
  %.8 = phi i32 [ %.62374, %713 ], [ %.7, %729 ], [ %.7, %1051 ]
  %indvars.iv.next2556 = add nsw i64 %indvars.iv2555, -1
  %1054 = icmp sgt i64 %indvars.iv2555, 1
  br i1 %1054, label %713, label %.loopexit2313, !llvm.loop !29

1055:                                             ; preds = %698
  %or.cond13 = select i1 %432, i1 true, i1 %96
  br i1 %or.cond13, label %.loopexit2313, label %1056

1056:                                             ; preds = %1055
  %1057 = load i32, ptr %4, align 4, !tbaa !5
  %1058 = icmp sgt i32 %1057, 0
  br i1 %1058, label %.lr.ph2413, label %.loopexit2313

.lr.ph2413:                                       ; preds = %1056
  %1059 = getelementptr inbounds i8, ptr %25, i64 8
  %1060 = fneg double %95
  %1061 = add i32 %30, 1
  %1062 = add i32 %27, 1
  %invariant.gep2377 = getelementptr i8, ptr %35, i64 8
  %1063 = getelementptr inbounds i8, ptr %20, i64 8
  %1064 = getelementptr inbounds i8, ptr %25, i64 16
  %1065 = getelementptr inbounds i8, ptr %25, i64 24
  %1066 = getelementptr inbounds i8, ptr %20, i64 16
  %1067 = getelementptr inbounds i8, ptr %20, i64 24
  %1068 = sext i32 %33 to i64
  %1069 = zext nneg i32 %1057 to i64
  br label %1070

1070:                                             ; preds = %.lr.ph2413, %.loopexit2316
  %indvars.iv2573 = phi i64 [ %1069, %.lr.ph2413 ], [ %indvars.iv.next2574, %.loopexit2316 ]
  %.92411 = phi i32 [ %1057, %.lr.ph2413 ], [ %.11, %.loopexit2316 ]
  %indvars2575 = trunc i64 %indvars.iv2573 to i32
  %1071 = sext i32 %.92411 to i64
  %1072 = icmp sgt i64 %indvars.iv2573, %1071
  br i1 %1072, label %.loopexit2316, label %1073

1073:                                             ; preds = %1070
  %1074 = icmp eq i64 %indvars.iv2573, 1
  br i1 %1074, label %1086, label %1075

1075:                                             ; preds = %1073
  %1076 = add nsw i32 %indvars2575, -1
  %1077 = mul nsw i32 %1076, %30
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr double, ptr %32, i64 %indvars.iv2573
  %1080 = getelementptr double, ptr %1079, i64 %1078
  %1081 = load double, ptr %1080, align 8, !tbaa !9
  %1082 = fcmp une double %1081, 0.000000e+00
  br i1 %1082, label %1083, label %1086

1083:                                             ; preds = %1075
  %1084 = trunc i64 %indvars.iv2573 to i32
  %1085 = add i32 %1084, -2
  br label %1086

1086:                                             ; preds = %1075, %1073, %1083
  %.10 = phi i32 [ %1085, %1083 ], [ %.92411, %1073 ], [ %1076, %1075 ]
  %.31928 = phi i32 [ %1076, %1083 ], [ 1, %1073 ], [ %indvars2575, %1075 ]
  %1087 = load i32, ptr %3, align 4, !tbaa !5
  %1088 = icmp sgt i32 %1087, 0
  br i1 %1088, label %.lr.ph2408, label %.loopexit2316

.lr.ph2408:                                       ; preds = %1086
  %1089 = zext i32 %.31928 to i64
  %1090 = icmp eq i64 %indvars.iv2573, %1089
  %1091 = mul nsw i32 %.31928, %33
  %1092 = add nuw nsw i64 %indvars.iv2573, 1
  %1093 = mul i32 %.31928, %1061
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds double, ptr %32, i64 %1094
  %1096 = mul nsw i64 %indvars.iv2573, %1068
  %1097 = add nuw nsw i32 %.31928, 1
  %1098 = zext nneg i32 %1087 to i64
  %1099 = sext i32 %1091 to i64
  %1100 = trunc nsw i64 %1092 to i32
  %invariant.gep2681 = getelementptr double, ptr %35, i64 %1099
  %1101 = trunc nsw i64 %1092 to i32
  %1102 = getelementptr double, ptr %35, i64 %1096
  %1103 = getelementptr double, ptr %32, i64 %indvars.iv2573
  %1104 = getelementptr double, ptr %35, i64 %1096
  %invariant.gep2683 = getelementptr double, ptr %35, i64 %1099
  %1105 = getelementptr double, ptr %35, i64 %1096
  %1106 = getelementptr double, ptr %32, i64 %indvars.iv2573
  %invariant.gep2685 = getelementptr double, ptr %35, i64 %1096
  %1107 = trunc nsw i64 %1092 to i32
  %1108 = getelementptr double, ptr %35, i64 %1096
  %1109 = getelementptr double, ptr %32, i64 %indvars.iv2573
  %1110 = getelementptr double, ptr %35, i64 %1096
  %invariant.gep2687 = getelementptr double, ptr %35, i64 %1099
  br label %1111

1111:                                             ; preds = %.lr.ph2408, %1491
  %indvars.iv2570 = phi i64 [ %1098, %.lr.ph2408 ], [ %indvars.iv.next2571, %1491 ]
  %.919502406 = phi i32 [ %1087, %.lr.ph2408 ], [ %.111952, %1491 ]
  %indvars2572 = trunc i64 %indvars.iv2570 to i32
  %1112 = sext i32 %.919502406 to i64
  %1113 = icmp sgt i64 %indvars.iv2570, %1112
  br i1 %1113, label %1491, label %1114

1114:                                             ; preds = %1111
  %1115 = icmp eq i64 %indvars.iv2570, 1
  br i1 %1115, label %1126, label %1116

1116:                                             ; preds = %1114
  %1117 = add nsw i32 %indvars2572, -1
  %1118 = mul nsw i32 %1117, %27
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr double, ptr %29, i64 %indvars.iv2570
  %1121 = getelementptr double, ptr %1120, i64 %1119
  %1122 = load double, ptr %1121, align 8, !tbaa !9
  %1123 = fcmp une double %1122, 0.000000e+00
  %1124 = trunc i64 %indvars.iv2570 to i32
  %1125 = add i32 %1124, -1
  br i1 %1123, label %1195, label %1126

1126:                                             ; preds = %1116, %1114
  %.101951 = phi i32 [ %.919502406, %1114 ], [ %1125, %1116 ]
  %1127 = load i32, ptr %3, align 4, !tbaa !5
  %1128 = sub nsw i32 %1127, %indvars2572
  store i32 %1128, ptr %14, align 4, !tbaa !5
  br i1 %1090, label %1129, label %1284

1129:                                             ; preds = %1126
  %1130 = trunc i64 %indvars.iv2570 to i32
  %1131 = add i32 %1130, 1
  store i32 %1131, ptr %15, align 4, !tbaa !5
  %1132 = sext i32 %1127 to i64
  %.not2213.not = icmp slt i64 %indvars.iv2570, %1132
  %.2284 = select i1 %.not2213.not, i32 %1131, i32 %1127
  %1133 = mul nsw i32 %.2284, %27
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr double, ptr %29, i64 %indvars.iv2570
  %1136 = getelementptr double, ptr %1135, i64 %1134
  %1137 = call i32 @llvm.smin.i32(i32 %1131, i32 %1127)
  %1138 = add nsw i32 %1137, %1091
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds double, ptr %35, i64 %1139
  %1141 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1136, ptr noundef nonnull %6, ptr noundef %1140, ptr noundef nonnull @c__1) #5
  %1142 = load i32, ptr %4, align 4, !tbaa !5
  %1143 = sub nsw i32 %1142, %.31928
  store i32 %1143, ptr %14, align 4, !tbaa !5
  store i32 %1097, ptr %15, align 4, !tbaa !5
  store i32 %1097, ptr %16, align 4, !tbaa !5
  %.not2215.not = icmp slt i32 %.31928, %1142
  %1144 = select i1 %.not2215.not, i32 %1097, i32 %1142
  %1145 = mul nsw i32 %1144, %33
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr double, ptr %35, i64 %indvars.iv2570
  %1148 = getelementptr double, ptr %1147, i64 %1146
  %1149 = call i32 @llvm.smin.i32(i32 %1097, i32 %1142)
  %1150 = mul nsw i32 %1149, %30
  %1151 = add nsw i32 %1150, %.31928
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds double, ptr %32, i64 %1152
  %1154 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1148, ptr noundef nonnull %10, ptr noundef %1153, ptr noundef nonnull %8) #5
  %gep2688 = getelementptr double, ptr %invariant.gep2687, i64 %indvars.iv2570
  %1155 = load double, ptr %gep2688, align 8, !tbaa !9
  %1156 = call double @llvm.fmuladd.f64(double %95, double %1154, double %1141)
  %1157 = fsub double %1155, %1156
  store double %1157, ptr %25, align 16, !tbaa !9
  store double 1.000000e+00, ptr %22, align 8, !tbaa !9
  %1158 = mul i32 %1062, %indvars2572
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds double, ptr %29, i64 %1159
  %1161 = load double, ptr %1160, align 8, !tbaa !9
  %1162 = load double, ptr %1095, align 8, !tbaa !9
  %1163 = call double @llvm.fmuladd.f64(double %95, double %1162, double %1161)
  %1164 = fcmp oge double %1163, 0.000000e+00
  %1165 = fneg double %1163
  %1166 = select i1 %1164, double %1163, double %1165
  %1167 = load double, ptr %19, align 8, !tbaa !9
  %1168 = fcmp ugt double %1166, %1167
  br i1 %1168, label %1170, label %1169

1169:                                             ; preds = %1129
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1170

1170:                                             ; preds = %1169, %1129
  %.31920 = phi double [ %1167, %1169 ], [ %1163, %1129 ]
  %.3 = phi double [ %1167, %1169 ], [ %1166, %1129 ]
  %1171 = fcmp oge double %1157, 0.000000e+00
  %1172 = fneg double %1157
  %1173 = select i1 %1171, double %1157, double %1172
  %1174 = fcmp olt double %.3, 1.000000e+00
  %1175 = fcmp ogt double %1173, 1.000000e+00
  %or.cond15 = select i1 %1174, i1 %1175, i1 false
  br i1 %or.cond15, label %1176, label %thread-pre-split2311.thread

1176:                                             ; preds = %1170
  %1177 = load double, ptr %23, align 8, !tbaa !9
  %1178 = fmul double %.3, %1177
  %1179 = fcmp ogt double %1173, %1178
  br i1 %1179, label %thread-pre-split2311, label %thread-pre-split2311.thread

thread-pre-split2311.thread:                      ; preds = %1170, %1176
  %1180 = fdiv double %1157, %.31920
  store double %1180, ptr %20, align 16, !tbaa !9
  br label %1193

thread-pre-split2311:                             ; preds = %1176
  %1181 = fdiv double 1.000000e+00, %1173
  store double %1181, ptr %22, align 8, !tbaa !9
  %1182 = fmul double %1157, %1181
  %1183 = fdiv double %1182, %.31920
  store double %1183, ptr %20, align 16, !tbaa !9
  %1184 = fcmp une double %1181, 1.000000e+00
  br i1 %1184, label %1185, label %1193

1185:                                             ; preds = %thread-pre-split2311
  %1186 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %1186, ptr %14, align 4, !tbaa !5
  %.not22172400 = icmp slt i32 %1186, 1
  br i1 %.not22172400, label %._crit_edge2404, label %.lr.ph2403

.lr.ph2403:                                       ; preds = %1185, %.lr.ph2403
  %indvars.iv2567 = phi i64 [ %indvars.iv.next2568, %.lr.ph2403 ], [ 1, %1185 ]
  %1187 = mul nsw i64 %indvars.iv2567, %1068
  %gep2399 = getelementptr double, ptr %invariant.gep2377, i64 %1187
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2399, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2568 = add nuw nsw i64 %indvars.iv2567, 1
  %1188 = load i32, ptr %14, align 4, !tbaa !5
  %1189 = sext i32 %1188 to i64
  %.not2217.not = icmp slt i64 %indvars.iv2567, %1189
  br i1 %.not2217.not, label %.lr.ph2403, label %._crit_edge2404.loopexit, !llvm.loop !30

._crit_edge2404.loopexit:                         ; preds = %.lr.ph2403
  %.pre2619 = load double, ptr %22, align 8, !tbaa !9
  %.pre2620.pre = load double, ptr %20, align 16, !tbaa !9
  br label %._crit_edge2404

._crit_edge2404:                                  ; preds = %._crit_edge2404.loopexit, %1185
  %.pre2620 = phi double [ %.pre2620.pre, %._crit_edge2404.loopexit ], [ %1183, %1185 ]
  %1190 = phi double [ %.pre2619, %._crit_edge2404.loopexit ], [ %1181, %1185 ]
  %1191 = load double, ptr %11, align 8, !tbaa !9
  %1192 = fmul double %1190, %1191
  store double %1192, ptr %11, align 8, !tbaa !9
  br label %1193

1193:                                             ; preds = %thread-pre-split2311.thread, %._crit_edge2404, %thread-pre-split2311
  %1194 = phi double [ %.pre2620, %._crit_edge2404 ], [ %1183, %thread-pre-split2311 ], [ %1180, %thread-pre-split2311.thread ]
  store double %1194, ptr %gep2688, align 8, !tbaa !9
  br label %1491

1195:                                             ; preds = %1116
  %1196 = trunc i64 %indvars.iv2570 to i32
  %1197 = add i32 %1196, -2
  %1198 = load i32, ptr %3, align 4, !tbaa !5
  %1199 = sub nsw i32 %1198, %indvars2572
  store i32 %1199, ptr %14, align 4, !tbaa !5
  %1200 = trunc i64 %indvars.iv2570 to i32
  %1201 = add i32 %1200, 1
  store i32 %1201, ptr %15, align 4, !tbaa !5
  %1202 = sext i32 %1198 to i64
  %.not2203.not = icmp slt i64 %indvars.iv2570, %1202
  %.2287 = select i1 %.not2203.not, i32 %1201, i32 %1198
  %1203 = mul nsw i32 %.2287, %27
  %1204 = add nsw i32 %1203, %1117
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds double, ptr %29, i64 %1205
  %1207 = call i32 @llvm.smin.i32(i32 %1201, i32 %1198)
  %1208 = add nsw i32 %1207, %1091
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %35, i64 %1209
  %1211 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1206, ptr noundef nonnull %6, ptr noundef %1210, ptr noundef nonnull @c__1) #5
  %1212 = load i32, ptr %4, align 4, !tbaa !5
  %1213 = sub nsw i32 %1212, %indvars2575
  store i32 %1213, ptr %14, align 4, !tbaa !5
  %1214 = sext i32 %1212 to i64
  %.not2205.not = icmp slt i64 %indvars.iv2573, %1214
  %1215 = add nsw i32 %1117, %1091
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds double, ptr %35, i64 %1216
  br i1 %1090, label %1218, label %1367

1218:                                             ; preds = %1195
  store i32 %1100, ptr %15, align 4, !tbaa !5
  %1219 = select i1 %.not2205.not, i32 %1100, i32 %1212
  %1220 = mul nsw i32 %1219, %33
  %1221 = add nsw i32 %1220, %1117
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %35, i64 %1222
  %1224 = call i32 @llvm.smin.i32(i32 %1100, i32 %1212)
  %1225 = mul nsw i32 %1224, %30
  %1226 = add nsw i32 %1225, %.31928
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds double, ptr %32, i64 %1227
  %1229 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1223, ptr noundef nonnull %10, ptr noundef %1228, ptr noundef nonnull %8) #5
  %1230 = load double, ptr %1217, align 8, !tbaa !9
  %1231 = call double @llvm.fmuladd.f64(double %95, double %1229, double %1211)
  %1232 = fsub double %1230, %1231
  store double %1232, ptr %25, align 16, !tbaa !9
  %1233 = load i32, ptr %3, align 4, !tbaa !5
  %1234 = sub nsw i32 %1233, %indvars2572
  store i32 %1234, ptr %14, align 4, !tbaa !5
  store i32 %1201, ptr %15, align 4, !tbaa !5
  %1235 = sext i32 %1233 to i64
  %.not2207.not = icmp slt i64 %indvars.iv2570, %1235
  %1236 = select i1 %.not2207.not, i32 %1201, i32 %1233
  %1237 = mul nsw i32 %1236, %27
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr double, ptr %29, i64 %indvars.iv2570
  %1240 = getelementptr double, ptr %1239, i64 %1238
  %1241 = call i32 @llvm.smin.i32(i32 %1201, i32 %1233)
  %1242 = add nsw i32 %1241, %1091
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds double, ptr %35, i64 %1243
  %1245 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1240, ptr noundef nonnull %6, ptr noundef %1244, ptr noundef nonnull @c__1) #5
  %1246 = load i32, ptr %4, align 4, !tbaa !5
  %1247 = sub nsw i32 %1246, %indvars2575
  store i32 %1247, ptr %14, align 4, !tbaa !5
  store i32 %1100, ptr %15, align 4, !tbaa !5
  store i32 %1100, ptr %16, align 4, !tbaa !5
  %1248 = sext i32 %1246 to i64
  %.not2209.not = icmp slt i64 %indvars.iv2573, %1248
  %1249 = select i1 %.not2209.not, i32 %1100, i32 %1246
  %1250 = mul nsw i32 %1249, %33
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr double, ptr %35, i64 %indvars.iv2570
  %1253 = getelementptr double, ptr %1252, i64 %1251
  %1254 = call i32 @llvm.smin.i32(i32 %1100, i32 %1246)
  %1255 = mul nsw i32 %1254, %30
  %1256 = add nsw i32 %1255, %.31928
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds double, ptr %32, i64 %1257
  %1259 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1253, ptr noundef nonnull %10, ptr noundef %1258, ptr noundef nonnull %8) #5
  %gep2682 = getelementptr double, ptr %invariant.gep2681, i64 %indvars.iv2570
  %1260 = load double, ptr %gep2682, align 8, !tbaa !9
  %1261 = call double @llvm.fmuladd.f64(double %95, double %1259, double %1245)
  %1262 = fsub double %1260, %1261
  store double %1262, ptr %1059, align 8, !tbaa !9
  %1263 = load double, ptr %1095, align 8, !tbaa !9
  %1264 = fmul double %1263, %1060
  store double %1264, ptr %17, align 8, !tbaa !9
  %1265 = mul i32 %1117, %1062
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds double, ptr %29, i64 %1266
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull @c_b26, ptr noundef %1267, ptr noundef nonnull %6, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %1268 = load i32, ptr %18, align 4, !tbaa !5
  %.not2211 = icmp eq i32 %1268, 0
  br i1 %.not2211, label %1270, label %1269

1269:                                             ; preds = %1218
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1270

1270:                                             ; preds = %1269, %1218
  %1271 = load double, ptr %22, align 8, !tbaa !9
  %1272 = fcmp une double %1271, 1.000000e+00
  br i1 %1272, label %1273, label %1281

1273:                                             ; preds = %1270
  %1274 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %1274, ptr %14, align 4, !tbaa !5
  %.not22122379 = icmp slt i32 %1274, 1
  br i1 %.not22122379, label %._crit_edge2383, label %.lr.ph2382

.lr.ph2382:                                       ; preds = %1273, %.lr.ph2382
  %indvars.iv2558 = phi i64 [ %indvars.iv.next2559, %.lr.ph2382 ], [ 1, %1273 ]
  %1275 = mul nsw i64 %indvars.iv2558, %1068
  %gep2378 = getelementptr double, ptr %invariant.gep2377, i64 %1275
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2378, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2559 = add nuw nsw i64 %indvars.iv2558, 1
  %1276 = load i32, ptr %14, align 4, !tbaa !5
  %1277 = sext i32 %1276 to i64
  %.not2212.not = icmp slt i64 %indvars.iv2558, %1277
  br i1 %.not2212.not, label %.lr.ph2382, label %._crit_edge2383.loopexit, !llvm.loop !31

._crit_edge2383.loopexit:                         ; preds = %.lr.ph2382
  %.pre2616 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2383

._crit_edge2383:                                  ; preds = %._crit_edge2383.loopexit, %1273
  %1278 = phi double [ %.pre2616, %._crit_edge2383.loopexit ], [ %1271, %1273 ]
  %1279 = load double, ptr %11, align 8, !tbaa !9
  %1280 = fmul double %1278, %1279
  store double %1280, ptr %11, align 8, !tbaa !9
  br label %1281

1281:                                             ; preds = %._crit_edge2383, %1270
  %1282 = load double, ptr %20, align 16, !tbaa !9
  store double %1282, ptr %1217, align 8, !tbaa !9
  %1283 = load double, ptr %1063, align 8, !tbaa !9
  store double %1283, ptr %gep2682, align 8, !tbaa !9
  br label %1491

1284:                                             ; preds = %1126
  %1285 = add nuw nsw i32 %indvars2572, 1
  store i32 %1285, ptr %15, align 4, !tbaa !5
  %.not2193.not = icmp sgt i32 %1127, %indvars2572
  %.2289 = select i1 %.not2193.not, i32 %1285, i32 %1127
  %1286 = mul nsw i32 %.2289, %27
  %1287 = add nsw i32 %1286, %indvars2572
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds double, ptr %29, i64 %1288
  %1290 = call i32 @llvm.smin.i32(i32 %1285, i32 %1127)
  %1291 = add nsw i32 %1290, %1091
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds double, ptr %35, i64 %1292
  %1294 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1289, ptr noundef nonnull %6, ptr noundef %1293, ptr noundef nonnull @c__1) #5
  %1295 = load i32, ptr %4, align 4, !tbaa !5
  %1296 = sub nsw i32 %1295, %indvars2575
  store i32 %1296, ptr %14, align 4, !tbaa !5
  store i32 %1107, ptr %15, align 4, !tbaa !5
  %1297 = sext i32 %1295 to i64
  %.not2195.not = icmp slt i64 %indvars.iv2573, %1297
  %1298 = select i1 %.not2195.not, i32 %1107, i32 %1295
  %1299 = mul nsw i32 %1298, %33
  %1300 = add nsw i32 %1299, %indvars2572
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds double, ptr %35, i64 %1301
  %1303 = call i32 @llvm.smin.i32(i32 %1107, i32 %1295)
  %1304 = mul nsw i32 %1303, %30
  %1305 = add nsw i32 %1304, %.31928
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds double, ptr %32, i64 %1306
  %1308 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1302, ptr noundef nonnull %10, ptr noundef %1307, ptr noundef nonnull %8) #5
  %1309 = add nsw i32 %1091, %indvars2572
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds double, ptr %35, i64 %1310
  %1312 = load double, ptr %1311, align 8, !tbaa !9
  %1313 = call double @llvm.fmuladd.f64(double %95, double %1308, double %1294)
  %1314 = fsub double %1312, %1313
  %1315 = fmul double %1314, %95
  store double %1315, ptr %25, align 16, !tbaa !9
  %1316 = load i32, ptr %3, align 4, !tbaa !5
  %1317 = sub nsw i32 %1316, %indvars2572
  store i32 %1317, ptr %14, align 4, !tbaa !5
  store i32 %1285, ptr %15, align 4, !tbaa !5
  %.not2197.not = icmp sgt i32 %1316, %indvars2572
  %1318 = select i1 %.not2197.not, i32 %1285, i32 %1316
  %1319 = mul nsw i32 %1318, %27
  %1320 = add nsw i32 %1319, %indvars2572
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds double, ptr %29, i64 %1321
  %1323 = call i32 @llvm.smin.i32(i32 %1285, i32 %1316)
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr double, ptr %1108, i64 %1324
  %1326 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1322, ptr noundef nonnull %6, ptr noundef %1325, ptr noundef nonnull @c__1) #5
  %1327 = load i32, ptr %4, align 4, !tbaa !5
  %1328 = sub nsw i32 %1327, %indvars2575
  store i32 %1328, ptr %14, align 4, !tbaa !5
  store i32 %1107, ptr %15, align 4, !tbaa !5
  store i32 %1107, ptr %16, align 4, !tbaa !5
  %1329 = sext i32 %1327 to i64
  %.not2199.not = icmp slt i64 %indvars.iv2573, %1329
  %1330 = select i1 %.not2199.not, i32 %1107, i32 %1327
  %1331 = mul nsw i32 %1330, %33
  %1332 = add nsw i32 %1331, %indvars2572
  %1333 = sext i32 %1332 to i64
  %1334 = getelementptr inbounds double, ptr %35, i64 %1333
  %1335 = call i32 @llvm.smin.i32(i32 %1107, i32 %1327)
  %1336 = mul nsw i32 %1335, %30
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr double, ptr %1109, i64 %1337
  %1339 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1334, ptr noundef nonnull %10, ptr noundef %1338, ptr noundef nonnull %8) #5
  %sext = shl i64 %indvars.iv2570, 32
  %1340 = ashr exact i64 %sext, 29
  %1341 = getelementptr i8, ptr %1110, i64 %1340
  %1342 = load double, ptr %1341, align 8, !tbaa !9
  %1343 = call double @llvm.fmuladd.f64(double %95, double %1339, double %1326)
  %1344 = fsub double %1342, %1343
  %1345 = fmul double %1344, %95
  store double %1345, ptr %1059, align 8, !tbaa !9
  %1346 = mul i32 %1062, %indvars2572
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds double, ptr %29, i64 %1347
  %1349 = load double, ptr %1348, align 8, !tbaa !9
  %1350 = fmul double %1349, %1060
  store double %1350, ptr %17, align 8, !tbaa !9
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull @c_b26, ptr noundef %1095, ptr noundef nonnull %8, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %1351 = load i32, ptr %18, align 4, !tbaa !5
  %.not2201 = icmp eq i32 %1351, 0
  br i1 %.not2201, label %1353, label %1352

1352:                                             ; preds = %1284
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1353

1353:                                             ; preds = %1352, %1284
  %1354 = load double, ptr %22, align 8, !tbaa !9
  %1355 = fcmp une double %1354, 1.000000e+00
  br i1 %1355, label %1356, label %1364

1356:                                             ; preds = %1353
  %1357 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %1357, ptr %14, align 4, !tbaa !5
  %.not22022393 = icmp slt i32 %1357, 1
  br i1 %.not22022393, label %._crit_edge2397, label %.lr.ph2396

.lr.ph2396:                                       ; preds = %1356, %.lr.ph2396
  %indvars.iv2564 = phi i64 [ %indvars.iv.next2565, %.lr.ph2396 ], [ 1, %1356 ]
  %1358 = mul nsw i64 %indvars.iv2564, %1068
  %gep2392 = getelementptr double, ptr %invariant.gep2377, i64 %1358
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2392, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2565 = add nuw nsw i64 %indvars.iv2564, 1
  %1359 = load i32, ptr %14, align 4, !tbaa !5
  %1360 = sext i32 %1359 to i64
  %.not2202.not = icmp slt i64 %indvars.iv2564, %1360
  br i1 %.not2202.not, label %.lr.ph2396, label %._crit_edge2397.loopexit, !llvm.loop !32

._crit_edge2397.loopexit:                         ; preds = %.lr.ph2396
  %.pre2618 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2397

._crit_edge2397:                                  ; preds = %._crit_edge2397.loopexit, %1356
  %1361 = phi double [ %.pre2618, %._crit_edge2397.loopexit ], [ %1354, %1356 ]
  %1362 = load double, ptr %11, align 8, !tbaa !9
  %1363 = fmul double %1361, %1362
  store double %1363, ptr %11, align 8, !tbaa !9
  br label %1364

1364:                                             ; preds = %._crit_edge2397, %1353
  %1365 = load double, ptr %20, align 16, !tbaa !9
  store double %1365, ptr %1311, align 8, !tbaa !9
  %1366 = load double, ptr %1063, align 8, !tbaa !9
  store double %1366, ptr %1341, align 8, !tbaa !9
  br label %1491

1367:                                             ; preds = %1195
  store i32 %1101, ptr %15, align 4, !tbaa !5
  %1368 = select i1 %.not2205.not, i32 %1101, i32 %1212
  %1369 = mul nsw i32 %1368, %33
  %1370 = add nsw i32 %1369, %1117
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds double, ptr %35, i64 %1371
  %1373 = call i32 @llvm.smin.i32(i32 %1101, i32 %1212)
  %1374 = mul nsw i32 %1373, %30
  %1375 = add nsw i32 %1374, %.31928
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds double, ptr %32, i64 %1376
  %1378 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1372, ptr noundef nonnull %10, ptr noundef %1377, ptr noundef nonnull %8) #5
  %1379 = load double, ptr %1217, align 8, !tbaa !9
  %1380 = call double @llvm.fmuladd.f64(double %95, double %1378, double %1211)
  %1381 = fsub double %1379, %1380
  store double %1381, ptr %25, align 16, !tbaa !9
  %1382 = load i32, ptr %3, align 4, !tbaa !5
  %1383 = sub nsw i32 %1382, %indvars2572
  store i32 %1383, ptr %14, align 4, !tbaa !5
  store i32 %1201, ptr %15, align 4, !tbaa !5
  %1384 = sext i32 %1382 to i64
  %.not2179.not = icmp slt i64 %indvars.iv2570, %1384
  %1385 = select i1 %.not2179.not, i32 %1201, i32 %1382
  %1386 = mul nsw i32 %1385, %27
  %1387 = add nsw i32 %1386, %1117
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds double, ptr %29, i64 %1388
  %1390 = call i32 @llvm.smin.i32(i32 %1201, i32 %1382)
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr double, ptr %1102, i64 %1391
  %1393 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1389, ptr noundef nonnull %6, ptr noundef %1392, ptr noundef nonnull @c__1) #5
  %1394 = load i32, ptr %4, align 4, !tbaa !5
  %1395 = sub nsw i32 %1394, %indvars2575
  store i32 %1395, ptr %14, align 4, !tbaa !5
  store i32 %1101, ptr %15, align 4, !tbaa !5
  %1396 = sext i32 %1394 to i64
  %.not2181.not = icmp slt i64 %indvars.iv2573, %1396
  %1397 = select i1 %.not2181.not, i32 %1101, i32 %1394
  %1398 = mul nsw i32 %1397, %33
  %1399 = add nsw i32 %1398, %1117
  %1400 = sext i32 %1399 to i64
  %1401 = getelementptr inbounds double, ptr %35, i64 %1400
  %1402 = call i32 @llvm.smin.i32(i32 %1101, i32 %1394)
  %1403 = mul nsw i32 %1402, %30
  %1404 = sext i32 %1403 to i64
  %1405 = getelementptr double, ptr %1103, i64 %1404
  %1406 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1401, ptr noundef nonnull %10, ptr noundef %1405, ptr noundef nonnull %8) #5
  %1407 = sext i32 %1117 to i64
  %1408 = getelementptr double, ptr %1104, i64 %1407
  %1409 = load double, ptr %1408, align 8, !tbaa !9
  %1410 = call double @llvm.fmuladd.f64(double %95, double %1406, double %1393)
  %1411 = fsub double %1409, %1410
  store double %1411, ptr %1064, align 16, !tbaa !9
  %1412 = load i32, ptr %3, align 4, !tbaa !5
  %1413 = sub nsw i32 %1412, %indvars2572
  store i32 %1413, ptr %14, align 4, !tbaa !5
  store i32 %1201, ptr %15, align 4, !tbaa !5
  %1414 = sext i32 %1412 to i64
  %.not2183.not = icmp slt i64 %indvars.iv2570, %1414
  %1415 = select i1 %.not2183.not, i32 %1201, i32 %1412
  %1416 = mul nsw i32 %1415, %27
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr double, ptr %29, i64 %indvars.iv2570
  %1419 = getelementptr double, ptr %1418, i64 %1417
  %1420 = call i32 @llvm.smin.i32(i32 %1201, i32 %1412)
  %1421 = add nsw i32 %1420, %1091
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds double, ptr %35, i64 %1422
  %1424 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1419, ptr noundef nonnull %6, ptr noundef %1423, ptr noundef nonnull @c__1) #5
  %1425 = load i32, ptr %4, align 4, !tbaa !5
  %1426 = sub nsw i32 %1425, %indvars2575
  store i32 %1426, ptr %14, align 4, !tbaa !5
  store i32 %1101, ptr %15, align 4, !tbaa !5
  %1427 = sext i32 %1425 to i64
  %.not2185.not = icmp slt i64 %indvars.iv2573, %1427
  %1428 = select i1 %.not2185.not, i32 %1101, i32 %1425
  %1429 = mul nsw i32 %1428, %33
  %1430 = sext i32 %1429 to i64
  %1431 = getelementptr double, ptr %35, i64 %indvars.iv2570
  %1432 = getelementptr double, ptr %1431, i64 %1430
  %1433 = call i32 @llvm.smin.i32(i32 %1101, i32 %1425)
  %1434 = mul nsw i32 %1433, %30
  %1435 = add nsw i32 %1434, %.31928
  %1436 = sext i32 %1435 to i64
  %1437 = getelementptr inbounds double, ptr %32, i64 %1436
  %1438 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1432, ptr noundef nonnull %10, ptr noundef %1437, ptr noundef nonnull %8) #5
  %gep2684 = getelementptr double, ptr %invariant.gep2683, i64 %indvars.iv2570
  %1439 = load double, ptr %gep2684, align 8, !tbaa !9
  %1440 = call double @llvm.fmuladd.f64(double %95, double %1438, double %1424)
  %1441 = fsub double %1439, %1440
  store double %1441, ptr %1059, align 8, !tbaa !9
  %1442 = load i32, ptr %3, align 4, !tbaa !5
  %1443 = sub nsw i32 %1442, %indvars2572
  store i32 %1443, ptr %14, align 4, !tbaa !5
  store i32 %1201, ptr %15, align 4, !tbaa !5
  %1444 = sext i32 %1442 to i64
  %.not2187.not = icmp slt i64 %indvars.iv2570, %1444
  %1445 = select i1 %.not2187.not, i32 %1201, i32 %1442
  %1446 = mul nsw i32 %1445, %27
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr double, ptr %29, i64 %indvars.iv2570
  %1449 = getelementptr double, ptr %1448, i64 %1447
  %1450 = call i32 @llvm.smin.i32(i32 %1201, i32 %1442)
  %1451 = sext i32 %1450 to i64
  %1452 = getelementptr double, ptr %1105, i64 %1451
  %1453 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1449, ptr noundef nonnull %6, ptr noundef %1452, ptr noundef nonnull @c__1) #5
  %1454 = load i32, ptr %4, align 4, !tbaa !5
  %1455 = sub nsw i32 %1454, %indvars2575
  store i32 %1455, ptr %14, align 4, !tbaa !5
  store i32 %1101, ptr %15, align 4, !tbaa !5
  store i32 %1101, ptr %16, align 4, !tbaa !5
  %1456 = sext i32 %1454 to i64
  %.not2189.not = icmp slt i64 %indvars.iv2573, %1456
  %1457 = select i1 %.not2189.not, i32 %1101, i32 %1454
  %1458 = mul nsw i32 %1457, %33
  %1459 = sext i32 %1458 to i64
  %1460 = getelementptr double, ptr %35, i64 %indvars.iv2570
  %1461 = getelementptr double, ptr %1460, i64 %1459
  %1462 = call i32 @llvm.smin.i32(i32 %1101, i32 %1454)
  %1463 = mul nsw i32 %1462, %30
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr double, ptr %1106, i64 %1464
  %1466 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %1461, ptr noundef nonnull %10, ptr noundef %1465, ptr noundef nonnull %8) #5
  %gep2686 = getelementptr double, ptr %invariant.gep2685, i64 %indvars.iv2570
  %1467 = load double, ptr %gep2686, align 8, !tbaa !9
  %1468 = call double @llvm.fmuladd.f64(double %95, double %1466, double %1453)
  %1469 = fsub double %1467, %1468
  store double %1469, ptr %1065, align 8, !tbaa !9
  %1470 = mul i32 %1117, %1062
  %1471 = sext i32 %1470 to i64
  %1472 = getelementptr inbounds double, ptr %29, i64 %1471
  call void @dlasy2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_true, ptr noundef nonnull %2, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef %1472, ptr noundef nonnull %6, ptr noundef %1095, ptr noundef nonnull %8, ptr noundef nonnull %25, ptr noundef nonnull @c__2, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %21, ptr noundef nonnull %18) #5
  %1473 = load i32, ptr %18, align 4, !tbaa !5
  %.not2191 = icmp eq i32 %1473, 0
  br i1 %.not2191, label %1475, label %1474

1474:                                             ; preds = %1367
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1475

1475:                                             ; preds = %1474, %1367
  %1476 = load double, ptr %22, align 8, !tbaa !9
  %1477 = fcmp une double %1476, 1.000000e+00
  br i1 %1477, label %1478, label %1486

1478:                                             ; preds = %1475
  %1479 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %1479, ptr %14, align 4, !tbaa !5
  %.not21922386 = icmp slt i32 %1479, 1
  br i1 %.not21922386, label %._crit_edge2390, label %.lr.ph2389

.lr.ph2389:                                       ; preds = %1478, %.lr.ph2389
  %indvars.iv2561 = phi i64 [ %indvars.iv.next2562, %.lr.ph2389 ], [ 1, %1478 ]
  %1480 = mul nsw i64 %indvars.iv2561, %1068
  %gep2385 = getelementptr double, ptr %invariant.gep2377, i64 %1480
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep2385, ptr noundef nonnull @c__1) #5
  %indvars.iv.next2562 = add nuw nsw i64 %indvars.iv2561, 1
  %1481 = load i32, ptr %14, align 4, !tbaa !5
  %1482 = sext i32 %1481 to i64
  %.not2192.not = icmp slt i64 %indvars.iv2561, %1482
  br i1 %.not2192.not, label %.lr.ph2389, label %._crit_edge2390.loopexit, !llvm.loop !33

._crit_edge2390.loopexit:                         ; preds = %.lr.ph2389
  %.pre2617 = load double, ptr %22, align 8, !tbaa !9
  br label %._crit_edge2390

._crit_edge2390:                                  ; preds = %._crit_edge2390.loopexit, %1478
  %1483 = phi double [ %.pre2617, %._crit_edge2390.loopexit ], [ %1476, %1478 ]
  %1484 = load double, ptr %11, align 8, !tbaa !9
  %1485 = fmul double %1483, %1484
  store double %1485, ptr %11, align 8, !tbaa !9
  br label %1486

1486:                                             ; preds = %._crit_edge2390, %1475
  %1487 = load double, ptr %20, align 16, !tbaa !9
  store double %1487, ptr %1217, align 8, !tbaa !9
  %1488 = load double, ptr %1066, align 16, !tbaa !9
  store double %1488, ptr %1408, align 8, !tbaa !9
  %1489 = load double, ptr %1063, align 8, !tbaa !9
  store double %1489, ptr %gep2684, align 8, !tbaa !9
  %1490 = load double, ptr %1067, align 8, !tbaa !9
  store double %1490, ptr %gep2686, align 8, !tbaa !9
  br label %1491

1491:                                             ; preds = %1111, %1281, %1486, %1364, %1193
  %.111952 = phi i32 [ %.919502406, %1111 ], [ %.101951, %1193 ], [ %1197, %1281 ], [ %.101951, %1364 ], [ %1197, %1486 ]
  %indvars.iv.next2571 = add nsw i64 %indvars.iv2570, -1
  %1492 = icmp sgt i64 %indvars.iv2570, 1
  br i1 %1492, label %1111, label %.loopexit2316, !llvm.loop !34

.loopexit2316:                                    ; preds = %1491, %1086, %1070
  %.11 = phi i32 [ %.92411, %1070 ], [ %.10, %1086 ], [ %.10, %1491 ]
  %indvars.iv.next2574 = add nsw i64 %indvars.iv2573, -1
  %1493 = icmp sgt i64 %indvars.iv2573, 1
  br i1 %1493, label %1070, label %.loopexit2313, !llvm.loop !35

.loopexit2313:                                    ; preds = %.loopexit2318, %.loopexit2316, %.loopexit2314, %.loopexit, %699, %1056, %433, %97, %1055, %69, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare void @dlabad_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @dlasy2_(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

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

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass