; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8
@c_false = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c_b26 = external hidden global double, align 8
@c_b30 = external hidden global double, align 8
@c_true = external hidden global i64, align 8

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

99:                                               ; preds = %13
  %100 = load ptr, ptr %15, align 8, !tbaa !5
  %101 = call i64 @lsame_(ptr noundef %100, ptr noundef @.str.1)
  %102 = icmp ne i64 %101, 0
  br i1 %102, label %109, label %103

103:                                              ; preds = %99
  %104 = load ptr, ptr %15, align 8, !tbaa !5
  %105 = call i64 @lsame_(ptr noundef %104, ptr noundef @.str.2)
  %106 = icmp ne i64 %105, 0
  br i1 %106, label %109, label %107

107:                                              ; preds = %103
  %108 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -1, ptr %108, align 8, !tbaa !9
  br label %196

109:                                              ; preds = %103, %99, %13
  %110 = load i64, ptr %65, align 8, !tbaa !9
  %111 = icmp ne i64 %110, 0
  br i1 %111, label %122, label %112

112:                                              ; preds = %109
  %113 = load ptr, ptr %16, align 8, !tbaa !5
  %114 = call i64 @lsame_(ptr noundef %113, ptr noundef @.str.1)
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %122, label %116

116:                                              ; preds = %112
  %117 = load ptr, ptr %16, align 8, !tbaa !5
  %118 = call i64 @lsame_(ptr noundef %117, ptr noundef @.str.2)
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %122, label %120

120:                                              ; preds = %116
  %121 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -2, ptr %121, align 8, !tbaa !9
  br label %195

122:                                              ; preds = %116, %112, %109
  %123 = load ptr, ptr %17, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = icmp ne i64 %124, 1
  br i1 %125, label %126, label %132

126:                                              ; preds = %122
  %127 = load ptr, ptr %17, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = icmp ne i64 %128, -1
  br i1 %129, label %130, label %132

130:                                              ; preds = %126
  %131 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %131, align 8, !tbaa !9
  br label %194

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

136:                                              ; preds = %132
  %137 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %137, align 8, !tbaa !9
  br label %193

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

142:                                              ; preds = %138
  %143 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -5, ptr %143, align 8, !tbaa !9
  br label %192

144:                                              ; preds = %138
  %145 = load ptr, ptr %21, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = load ptr, ptr %18, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp sge i64 1, %148
  br i1 %149, label %150, label %151

150:                                              ; preds = %144
  br label %154

151:                                              ; preds = %144
  %152 = load ptr, ptr %18, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  br label %154

154:                                              ; preds = %151, %150
  %155 = phi i64 [ 1, %150 ], [ %153, %151 ]
  %156 = icmp slt i64 %146, %155
  br i1 %156, label %157, label %159

157:                                              ; preds = %154
  %158 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -7, ptr %158, align 8, !tbaa !9
  br label %191

159:                                              ; preds = %154
  %160 = load ptr, ptr %23, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = load ptr, ptr %19, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp sge i64 1, %163
  br i1 %164, label %165, label %166

165:                                              ; preds = %159
  br label %169

166:                                              ; preds = %159
  %167 = load ptr, ptr %19, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %166, %165
  %170 = phi i64 [ 1, %165 ], [ %168, %166 ]
  %171 = icmp slt i64 %161, %170
  br i1 %171, label %172, label %174

172:                                              ; preds = %169
  %173 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -9, ptr %173, align 8, !tbaa !9
  br label %190

174:                                              ; preds = %169
  %175 = load ptr, ptr %25, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = icmp sge i64 1, %178
  br i1 %179, label %180, label %181

180:                                              ; preds = %174
  br label %184

181:                                              ; preds = %174
  %182 = load ptr, ptr %18, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %181, %180
  %185 = phi i64 [ 1, %180 ], [ %183, %181 ]
  %186 = icmp slt i64 %176, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %184
  %188 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -11, ptr %188, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %187, %184
  br label %190

190:                                              ; preds = %189, %172
  br label %191

191:                                              ; preds = %190, %157
  br label %192

192:                                              ; preds = %191, %142
  br label %193

193:                                              ; preds = %192, %136
  br label %194

194:                                              ; preds = %193, %130
  br label %195

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

196:                                              ; preds = %195, %107
  %197 = load ptr, ptr %27, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %200, label %205

200:                                              ; preds = %196
  %201 = load ptr, ptr %27, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = sub nsw i64 0, %202
  store i64 %203, ptr %34, align 8, !tbaa !9
  %204 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %34)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %67, align 4
  br label %4856

205:                                              ; preds = %196
  %206 = load ptr, ptr %26, align 8, !tbaa !5
  store double 1.000000e+00, ptr %206, align 8, !tbaa !11
  %207 = load ptr, ptr %18, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = icmp eq i64 %208, 0
  br i1 %209, label %214, label %210

210:                                              ; preds = %205
  %211 = load ptr, ptr %19, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp eq i64 %212, 0
  br i1 %213, label %214, label %215

214:                                              ; preds = %210, %205
  store i32 0, ptr %14, align 4
  store i32 1, ptr %67, align 4
  br label %4856

215:                                              ; preds = %210
  %216 = call double @dlamch_(ptr noundef @.str.4)
  store double %216, ptr %53, align 8, !tbaa !11
  %217 = call double @dlamch_(ptr noundef @.str.5)
  store double %217, ptr %66, align 8, !tbaa !11
  %218 = load double, ptr %66, align 8, !tbaa !11
  %219 = fdiv double 1.000000e+00, %218
  store double %219, ptr %63, align 8, !tbaa !11
  %220 = call i32 @dlabad_(ptr noundef %66, ptr noundef %63)
  %221 = load double, ptr %66, align 8, !tbaa !11
  %222 = load ptr, ptr %18, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  %224 = load ptr, ptr %19, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = mul nsw i64 %223, %225
  %227 = sitofp i64 %226 to double
  %228 = fmul double %221, %227
  %229 = load double, ptr %53, align 8, !tbaa !11
  %230 = fdiv double %228, %229
  store double %230, ptr %66, align 8, !tbaa !11
  %231 = load double, ptr %66, align 8, !tbaa !11
  %232 = fdiv double 1.000000e+00, %231
  store double %232, ptr %63, align 8, !tbaa !11
  %233 = load double, ptr %66, align 8, !tbaa !11
  store double %233, ptr %38, align 8, !tbaa !11
  %234 = load double, ptr %53, align 8, !tbaa !11
  %235 = load ptr, ptr %18, align 8, !tbaa !5
  %236 = load ptr, ptr %18, align 8, !tbaa !5
  %237 = load ptr, ptr %20, align 8, !tbaa !5
  %238 = load i64, ptr %29, align 8, !tbaa !9
  %239 = getelementptr inbounds double, ptr %237, i64 %238
  %240 = load ptr, ptr %21, align 8, !tbaa !5
  %241 = getelementptr inbounds [1 x double], ptr %52, i64 0, i64 0
  %242 = call double @dlange_(ptr noundef @.str.6, ptr noundef %235, ptr noundef %236, ptr noundef %239, ptr noundef %240, ptr noundef %241)
  %243 = fmul double %234, %242
  store double %243, ptr %39, align 8, !tbaa !11
  %244 = load double, ptr %38, align 8, !tbaa !11
  %245 = load double, ptr %39, align 8, !tbaa !11
  %246 = fcmp oge double %244, %245
  br i1 %246, label %247, label %249

247:                                              ; preds = %215
  %248 = load double, ptr %38, align 8, !tbaa !11
  br label %251

249:                                              ; preds = %215
  %250 = load double, ptr %39, align 8, !tbaa !11
  br label %251

251:                                              ; preds = %249, %247
  %252 = phi double [ %248, %247 ], [ %250, %249 ]
  store double %252, ptr %38, align 8, !tbaa !11
  %253 = load double, ptr %53, align 8, !tbaa !11
  %254 = load ptr, ptr %19, align 8, !tbaa !5
  %255 = load ptr, ptr %19, align 8, !tbaa !5
  %256 = load ptr, ptr %22, align 8, !tbaa !5
  %257 = load i64, ptr %31, align 8, !tbaa !9
  %258 = getelementptr inbounds double, ptr %256, i64 %257
  %259 = load ptr, ptr %23, align 8, !tbaa !5
  %260 = getelementptr inbounds [1 x double], ptr %52, i64 0, i64 0
  %261 = call double @dlange_(ptr noundef @.str.6, ptr noundef %254, ptr noundef %255, ptr noundef %258, ptr noundef %259, ptr noundef %260)
  %262 = fmul double %253, %261
  store double %262, ptr %39, align 8, !tbaa !11
  %263 = load double, ptr %38, align 8, !tbaa !11
  %264 = load double, ptr %39, align 8, !tbaa !11
  %265 = fcmp oge double %263, %264
  br i1 %265, label %266, label %268

266:                                              ; preds = %251
  %267 = load double, ptr %38, align 8, !tbaa !11
  br label %270

268:                                              ; preds = %251
  %269 = load double, ptr %39, align 8, !tbaa !11
  br label %270

270:                                              ; preds = %268, %266
  %271 = phi double [ %267, %266 ], [ %269, %268 ]
  store double %271, ptr %56, align 8, !tbaa !11
  %272 = load ptr, ptr %17, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = sitofp i64 %273 to double
  store double %274, ptr %54, align 8, !tbaa !11
  %275 = load i64, ptr %64, align 8, !tbaa !9
  %276 = icmp ne i64 %275, 0
  br i1 %276, label %277, label %1414

277:                                              ; preds = %270
  %278 = load i64, ptr %65, align 8, !tbaa !9
  %279 = icmp ne i64 %278, 0
  br i1 %279, label %280, label %1414

280:                                              ; preds = %277
  store i64 1, ptr %60, align 8, !tbaa !9
  %281 = load ptr, ptr %19, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  store i64 %282, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %283

283:                                              ; preds = %1410, %280
  %284 = load i64, ptr %42, align 8, !tbaa !9
  %285 = load i64, ptr %34, align 8, !tbaa !9
  %286 = icmp sle i64 %284, %285
  br i1 %286, label %287, label %1413

287:                                              ; preds = %283
  %288 = load i64, ptr %42, align 8, !tbaa !9
  %289 = load i64, ptr %60, align 8, !tbaa !9
  %290 = icmp slt i64 %288, %289
  br i1 %290, label %291, label %292

291:                                              ; preds = %287
  br label %1409

292:                                              ; preds = %287
  %293 = load i64, ptr %42, align 8, !tbaa !9
  %294 = load ptr, ptr %19, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = icmp eq i64 %293, %295
  br i1 %296, label %297, label %300

297:                                              ; preds = %292
  %298 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %298, ptr %46, align 8, !tbaa !9
  %299 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %299, ptr %47, align 8, !tbaa !9
  br label %323

300:                                              ; preds = %292
  %301 = load ptr, ptr %22, align 8, !tbaa !5
  %302 = load i64, ptr %42, align 8, !tbaa !9
  %303 = add nsw i64 %302, 1
  %304 = load i64, ptr %42, align 8, !tbaa !9
  %305 = load i64, ptr %30, align 8, !tbaa !9
  %306 = mul nsw i64 %304, %305
  %307 = add nsw i64 %303, %306
  %308 = getelementptr inbounds double, ptr %301, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !11
  %310 = fcmp une double %309, 0.000000e+00
  br i1 %310, label %311, label %317

311:                                              ; preds = %300
  %312 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %312, ptr %46, align 8, !tbaa !9
  %313 = load i64, ptr %42, align 8, !tbaa !9
  %314 = add nsw i64 %313, 1
  store i64 %314, ptr %47, align 8, !tbaa !9
  %315 = load i64, ptr %42, align 8, !tbaa !9
  %316 = add nsw i64 %315, 2
  store i64 %316, ptr %60, align 8, !tbaa !9
  br label %322

317:                                              ; preds = %300
  %318 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %318, ptr %46, align 8, !tbaa !9
  %319 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %319, ptr %47, align 8, !tbaa !9
  %320 = load i64, ptr %42, align 8, !tbaa !9
  %321 = add nsw i64 %320, 1
  store i64 %321, ptr %60, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %317, %311
  br label %323

323:                                              ; preds = %322, %297
  %324 = load ptr, ptr %18, align 8, !tbaa !5
  %325 = load i64, ptr %324, align 8, !tbaa !9
  store i64 %325, ptr %59, align 8, !tbaa !9
  %326 = load ptr, ptr %18, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  store i64 %327, ptr %41, align 8, !tbaa !9
  br label %328

328:                                              ; preds = %1405, %323
  %329 = load i64, ptr %41, align 8, !tbaa !9
  %330 = icmp sge i64 %329, 1
  br i1 %330, label %331, label %1408

331:                                              ; preds = %328
  %332 = load i64, ptr %41, align 8, !tbaa !9
  %333 = load i64, ptr %59, align 8, !tbaa !9
  %334 = icmp sgt i64 %332, %333
  br i1 %334, label %335, label %336

335:                                              ; preds = %331
  br label %1404

336:                                              ; preds = %331
  %337 = load i64, ptr %41, align 8, !tbaa !9
  %338 = icmp eq i64 %337, 1
  br i1 %338, label %339, label %342

339:                                              ; preds = %336
  %340 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %340, ptr %44, align 8, !tbaa !9
  %341 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %341, ptr %45, align 8, !tbaa !9
  br label %365

342:                                              ; preds = %336
  %343 = load ptr, ptr %20, align 8, !tbaa !5
  %344 = load i64, ptr %41, align 8, !tbaa !9
  %345 = load i64, ptr %41, align 8, !tbaa !9
  %346 = sub nsw i64 %345, 1
  %347 = load i64, ptr %28, align 8, !tbaa !9
  %348 = mul nsw i64 %346, %347
  %349 = add nsw i64 %344, %348
  %350 = getelementptr inbounds double, ptr %343, i64 %349
  %351 = load double, ptr %350, align 8, !tbaa !11
  %352 = fcmp une double %351, 0.000000e+00
  br i1 %352, label %353, label %359

353:                                              ; preds = %342
  %354 = load i64, ptr %41, align 8, !tbaa !9
  %355 = sub nsw i64 %354, 1
  store i64 %355, ptr %44, align 8, !tbaa !9
  %356 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %356, ptr %45, align 8, !tbaa !9
  %357 = load i64, ptr %41, align 8, !tbaa !9
  %358 = sub nsw i64 %357, 2
  store i64 %358, ptr %59, align 8, !tbaa !9
  br label %364

359:                                              ; preds = %342
  %360 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %360, ptr %44, align 8, !tbaa !9
  %361 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %361, ptr %45, align 8, !tbaa !9
  %362 = load i64, ptr %41, align 8, !tbaa !9
  %363 = sub nsw i64 %362, 1
  store i64 %363, ptr %59, align 8, !tbaa !9
  br label %364

364:                                              ; preds = %359, %353
  br label %365

365:                                              ; preds = %364, %339
  %366 = load i64, ptr %46, align 8, !tbaa !9
  %367 = load i64, ptr %47, align 8, !tbaa !9
  %368 = icmp eq i64 %366, %367
  br i1 %368, label %369, label %553

369:                                              ; preds = %365
  %370 = load i64, ptr %44, align 8, !tbaa !9
  %371 = load i64, ptr %45, align 8, !tbaa !9
  %372 = icmp eq i64 %370, %371
  br i1 %372, label %373, label %553

373:                                              ; preds = %369
  %374 = load ptr, ptr %18, align 8, !tbaa !5
  %375 = load i64, ptr %374, align 8, !tbaa !9
  %376 = load i64, ptr %44, align 8, !tbaa !9
  %377 = sub nsw i64 %375, %376
  store i64 %377, ptr %35, align 8, !tbaa !9
  %378 = load i64, ptr %44, align 8, !tbaa !9
  %379 = add nsw i64 %378, 1
  store i64 %379, ptr %36, align 8, !tbaa !9
  %380 = load i64, ptr %44, align 8, !tbaa !9
  %381 = add nsw i64 %380, 1
  store i64 %381, ptr %37, align 8, !tbaa !9
  %382 = load ptr, ptr %20, align 8, !tbaa !5
  %383 = load i64, ptr %44, align 8, !tbaa !9
  %384 = load i64, ptr %36, align 8, !tbaa !9
  %385 = load ptr, ptr %18, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = icmp sle i64 %384, %386
  br i1 %387, label %388, label %390

388:                                              ; preds = %373
  %389 = load i64, ptr %36, align 8, !tbaa !9
  br label %393

390:                                              ; preds = %373
  %391 = load ptr, ptr %18, align 8, !tbaa !5
  %392 = load i64, ptr %391, align 8, !tbaa !9
  br label %393

393:                                              ; preds = %390, %388
  %394 = phi i64 [ %389, %388 ], [ %392, %390 ]
  %395 = load i64, ptr %28, align 8, !tbaa !9
  %396 = mul nsw i64 %394, %395
  %397 = add nsw i64 %383, %396
  %398 = getelementptr inbounds double, ptr %382, i64 %397
  %399 = load ptr, ptr %21, align 8, !tbaa !5
  %400 = load ptr, ptr %24, align 8, !tbaa !5
  %401 = load i64, ptr %37, align 8, !tbaa !9
  %402 = load ptr, ptr %18, align 8, !tbaa !5
  %403 = load i64, ptr %402, align 8, !tbaa !9
  %404 = icmp sle i64 %401, %403
  br i1 %404, label %405, label %407

405:                                              ; preds = %393
  %406 = load i64, ptr %37, align 8, !tbaa !9
  br label %410

407:                                              ; preds = %393
  %408 = load ptr, ptr %18, align 8, !tbaa !5
  %409 = load i64, ptr %408, align 8, !tbaa !9
  br label %410

410:                                              ; preds = %407, %405
  %411 = phi i64 [ %406, %405 ], [ %409, %407 ]
  %412 = load i64, ptr %46, align 8, !tbaa !9
  %413 = load i64, ptr %32, align 8, !tbaa !9
  %414 = mul nsw i64 %412, %413
  %415 = add nsw i64 %411, %414
  %416 = getelementptr inbounds double, ptr %400, i64 %415
  %417 = call double @f2c_ddot(ptr noundef %35, ptr noundef %398, ptr noundef %399, ptr noundef %416, ptr noundef @c__1)
  store double %417, ptr %57, align 8, !tbaa !11
  %418 = load i64, ptr %46, align 8, !tbaa !9
  %419 = sub nsw i64 %418, 1
  store i64 %419, ptr %35, align 8, !tbaa !9
  %420 = load ptr, ptr %24, align 8, !tbaa !5
  %421 = load i64, ptr %44, align 8, !tbaa !9
  %422 = load i64, ptr %32, align 8, !tbaa !9
  %423 = add nsw i64 %421, %422
  %424 = getelementptr inbounds double, ptr %420, i64 %423
  %425 = load ptr, ptr %25, align 8, !tbaa !5
  %426 = load ptr, ptr %22, align 8, !tbaa !5
  %427 = load i64, ptr %46, align 8, !tbaa !9
  %428 = load i64, ptr %30, align 8, !tbaa !9
  %429 = mul nsw i64 %427, %428
  %430 = add nsw i64 %429, 1
  %431 = getelementptr inbounds double, ptr %426, i64 %430
  %432 = call double @f2c_ddot(ptr noundef %35, ptr noundef %424, ptr noundef %425, ptr noundef %431, ptr noundef @c__1)
  store double %432, ptr %58, align 8, !tbaa !11
  %433 = load ptr, ptr %24, align 8, !tbaa !5
  %434 = load i64, ptr %44, align 8, !tbaa !9
  %435 = load i64, ptr %46, align 8, !tbaa !9
  %436 = load i64, ptr %32, align 8, !tbaa !9
  %437 = mul nsw i64 %435, %436
  %438 = add nsw i64 %434, %437
  %439 = getelementptr inbounds double, ptr %433, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !11
  %441 = load double, ptr %57, align 8, !tbaa !11
  %442 = load double, ptr %54, align 8, !tbaa !11
  %443 = load double, ptr %58, align 8, !tbaa !11
  %444 = call double @llvm.fmuladd.f64(double %442, double %443, double %441)
  %445 = fsub double %440, %444
  %446 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %445, ptr %446, align 16, !tbaa !11
  store double 1.000000e+00, ptr %62, align 8, !tbaa !11
  %447 = load ptr, ptr %20, align 8, !tbaa !5
  %448 = load i64, ptr %44, align 8, !tbaa !9
  %449 = load i64, ptr %44, align 8, !tbaa !9
  %450 = load i64, ptr %28, align 8, !tbaa !9
  %451 = mul nsw i64 %449, %450
  %452 = add nsw i64 %448, %451
  %453 = getelementptr inbounds double, ptr %447, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !11
  %455 = load double, ptr %54, align 8, !tbaa !11
  %456 = load ptr, ptr %22, align 8, !tbaa !5
  %457 = load i64, ptr %46, align 8, !tbaa !9
  %458 = load i64, ptr %46, align 8, !tbaa !9
  %459 = load i64, ptr %30, align 8, !tbaa !9
  %460 = mul nsw i64 %458, %459
  %461 = add nsw i64 %457, %460
  %462 = getelementptr inbounds double, ptr %456, i64 %461
  %463 = load double, ptr %462, align 8, !tbaa !11
  %464 = call double @llvm.fmuladd.f64(double %455, double %463, double %454)
  store double %464, ptr %48, align 8, !tbaa !11
  %465 = load double, ptr %48, align 8, !tbaa !11
  %466 = fcmp oge double %465, 0.000000e+00
  br i1 %466, label %467, label %469

467:                                              ; preds = %410
  %468 = load double, ptr %48, align 8, !tbaa !11
  br label %472

469:                                              ; preds = %410
  %470 = load double, ptr %48, align 8, !tbaa !11
  %471 = fneg double %470
  br label %472

472:                                              ; preds = %469, %467
  %473 = phi double [ %468, %467 ], [ %471, %469 ]
  store double %473, ptr %50, align 8, !tbaa !11
  %474 = load double, ptr %50, align 8, !tbaa !11
  %475 = load double, ptr %56, align 8, !tbaa !11
  %476 = fcmp ole double %474, %475
  br i1 %476, label %477, label %481

477:                                              ; preds = %472
  %478 = load double, ptr %56, align 8, !tbaa !11
  store double %478, ptr %48, align 8, !tbaa !11
  %479 = load double, ptr %56, align 8, !tbaa !11
  store double %479, ptr %50, align 8, !tbaa !11
  %480 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %480, align 8, !tbaa !9
  br label %481

481:                                              ; preds = %477, %472
  %482 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %483 = load double, ptr %482, align 16, !tbaa !11
  %484 = fcmp oge double %483, 0.000000e+00
  br i1 %484, label %485, label %488

485:                                              ; preds = %481
  %486 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %487 = load double, ptr %486, align 16, !tbaa !11
  br label %492

488:                                              ; preds = %481
  %489 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %490 = load double, ptr %489, align 16, !tbaa !11
  %491 = fneg double %490
  br label %492

492:                                              ; preds = %488, %485
  %493 = phi double [ %487, %485 ], [ %491, %488 ]
  store double %493, ptr %49, align 8, !tbaa !11
  %494 = load double, ptr %50, align 8, !tbaa !11
  %495 = fcmp olt double %494, 1.000000e+00
  br i1 %495, label %496, label %509

496:                                              ; preds = %492
  %497 = load double, ptr %49, align 8, !tbaa !11
  %498 = fcmp ogt double %497, 1.000000e+00
  br i1 %498, label %499, label %509

499:                                              ; preds = %496
  %500 = load double, ptr %49, align 8, !tbaa !11
  %501 = load double, ptr %63, align 8, !tbaa !11
  %502 = load double, ptr %50, align 8, !tbaa !11
  %503 = fmul double %501, %502
  %504 = fcmp ogt double %500, %503
  br i1 %504, label %505, label %508

505:                                              ; preds = %499
  %506 = load double, ptr %49, align 8, !tbaa !11
  %507 = fdiv double 1.000000e+00, %506
  store double %507, ptr %62, align 8, !tbaa !11
  br label %508

508:                                              ; preds = %505, %499
  br label %509

509:                                              ; preds = %508, %496, %492
  %510 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %511 = load double, ptr %510, align 16, !tbaa !11
  %512 = load double, ptr %62, align 8, !tbaa !11
  %513 = fmul double %511, %512
  %514 = load double, ptr %48, align 8, !tbaa !11
  %515 = fdiv double %513, %514
  %516 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  store double %515, ptr %516, align 16, !tbaa !11
  %517 = load double, ptr %62, align 8, !tbaa !11
  %518 = fcmp une double %517, 1.000000e+00
  br i1 %518, label %519, label %543

519:                                              ; preds = %509
  %520 = load ptr, ptr %19, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  store i64 %521, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %522

522:                                              ; preds = %535, %519
  %523 = load i64, ptr %40, align 8, !tbaa !9
  %524 = load i64, ptr %35, align 8, !tbaa !9
  %525 = icmp sle i64 %523, %524
  br i1 %525, label %526, label %538

526:                                              ; preds = %522
  %527 = load ptr, ptr %18, align 8, !tbaa !5
  %528 = load ptr, ptr %24, align 8, !tbaa !5
  %529 = load i64, ptr %40, align 8, !tbaa !9
  %530 = load i64, ptr %32, align 8, !tbaa !9
  %531 = mul nsw i64 %529, %530
  %532 = add nsw i64 %531, 1
  %533 = getelementptr inbounds double, ptr %528, i64 %532
  %534 = call i32 @f2c_dscal(ptr noundef %527, ptr noundef %62, ptr noundef %533, ptr noundef @c__1)
  br label %535

535:                                              ; preds = %526
  %536 = load i64, ptr %40, align 8, !tbaa !9
  %537 = add nsw i64 %536, 1
  store i64 %537, ptr %40, align 8, !tbaa !9
  br label %522, !llvm.loop !13

538:                                              ; preds = %522
  %539 = load double, ptr %62, align 8, !tbaa !11
  %540 = load ptr, ptr %26, align 8, !tbaa !5
  %541 = load double, ptr %540, align 8, !tbaa !11
  %542 = fmul double %541, %539
  store double %542, ptr %540, align 8, !tbaa !11
  br label %543

543:                                              ; preds = %538, %509
  %544 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %545 = load double, ptr %544, align 16, !tbaa !11
  %546 = load ptr, ptr %24, align 8, !tbaa !5
  %547 = load i64, ptr %44, align 8, !tbaa !9
  %548 = load i64, ptr %46, align 8, !tbaa !9
  %549 = load i64, ptr %32, align 8, !tbaa !9
  %550 = mul nsw i64 %548, %549
  %551 = add nsw i64 %547, %550
  %552 = getelementptr inbounds double, ptr %546, i64 %551
  store double %545, ptr %552, align 8, !tbaa !11
  br label %1403

553:                                              ; preds = %369, %365
  %554 = load i64, ptr %46, align 8, !tbaa !9
  %555 = load i64, ptr %47, align 8, !tbaa !9
  %556 = icmp eq i64 %554, %555
  br i1 %556, label %557, label %780

557:                                              ; preds = %553
  %558 = load i64, ptr %44, align 8, !tbaa !9
  %559 = load i64, ptr %45, align 8, !tbaa !9
  %560 = icmp ne i64 %558, %559
  br i1 %560, label %561, label %780

561:                                              ; preds = %557
  %562 = load ptr, ptr %18, align 8, !tbaa !5
  %563 = load i64, ptr %562, align 8, !tbaa !9
  %564 = load i64, ptr %45, align 8, !tbaa !9
  %565 = sub nsw i64 %563, %564
  store i64 %565, ptr %35, align 8, !tbaa !9
  %566 = load i64, ptr %45, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %36, align 8, !tbaa !9
  %568 = load i64, ptr %45, align 8, !tbaa !9
  %569 = add nsw i64 %568, 1
  store i64 %569, ptr %37, align 8, !tbaa !9
  %570 = load ptr, ptr %20, align 8, !tbaa !5
  %571 = load i64, ptr %44, align 8, !tbaa !9
  %572 = load i64, ptr %36, align 8, !tbaa !9
  %573 = load ptr, ptr %18, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  %575 = icmp sle i64 %572, %574
  br i1 %575, label %576, label %578

576:                                              ; preds = %561
  %577 = load i64, ptr %36, align 8, !tbaa !9
  br label %581

578:                                              ; preds = %561
  %579 = load ptr, ptr %18, align 8, !tbaa !5
  %580 = load i64, ptr %579, align 8, !tbaa !9
  br label %581

581:                                              ; preds = %578, %576
  %582 = phi i64 [ %577, %576 ], [ %580, %578 ]
  %583 = load i64, ptr %28, align 8, !tbaa !9
  %584 = mul nsw i64 %582, %583
  %585 = add nsw i64 %571, %584
  %586 = getelementptr inbounds double, ptr %570, i64 %585
  %587 = load ptr, ptr %21, align 8, !tbaa !5
  %588 = load ptr, ptr %24, align 8, !tbaa !5
  %589 = load i64, ptr %37, align 8, !tbaa !9
  %590 = load ptr, ptr %18, align 8, !tbaa !5
  %591 = load i64, ptr %590, align 8, !tbaa !9
  %592 = icmp sle i64 %589, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %581
  %594 = load i64, ptr %37, align 8, !tbaa !9
  br label %598

595:                                              ; preds = %581
  %596 = load ptr, ptr %18, align 8, !tbaa !5
  %597 = load i64, ptr %596, align 8, !tbaa !9
  br label %598

598:                                              ; preds = %595, %593
  %599 = phi i64 [ %594, %593 ], [ %597, %595 ]
  %600 = load i64, ptr %46, align 8, !tbaa !9
  %601 = load i64, ptr %32, align 8, !tbaa !9
  %602 = mul nsw i64 %600, %601
  %603 = add nsw i64 %599, %602
  %604 = getelementptr inbounds double, ptr %588, i64 %603
  %605 = call double @f2c_ddot(ptr noundef %35, ptr noundef %586, ptr noundef %587, ptr noundef %604, ptr noundef @c__1)
  store double %605, ptr %57, align 8, !tbaa !11
  %606 = load i64, ptr %46, align 8, !tbaa !9
  %607 = sub nsw i64 %606, 1
  store i64 %607, ptr %35, align 8, !tbaa !9
  %608 = load ptr, ptr %24, align 8, !tbaa !5
  %609 = load i64, ptr %44, align 8, !tbaa !9
  %610 = load i64, ptr %32, align 8, !tbaa !9
  %611 = add nsw i64 %609, %610
  %612 = getelementptr inbounds double, ptr %608, i64 %611
  %613 = load ptr, ptr %25, align 8, !tbaa !5
  %614 = load ptr, ptr %22, align 8, !tbaa !5
  %615 = load i64, ptr %46, align 8, !tbaa !9
  %616 = load i64, ptr %30, align 8, !tbaa !9
  %617 = mul nsw i64 %615, %616
  %618 = add nsw i64 %617, 1
  %619 = getelementptr inbounds double, ptr %614, i64 %618
  %620 = call double @f2c_ddot(ptr noundef %35, ptr noundef %612, ptr noundef %613, ptr noundef %619, ptr noundef @c__1)
  store double %620, ptr %58, align 8, !tbaa !11
  %621 = load ptr, ptr %24, align 8, !tbaa !5
  %622 = load i64, ptr %44, align 8, !tbaa !9
  %623 = load i64, ptr %46, align 8, !tbaa !9
  %624 = load i64, ptr %32, align 8, !tbaa !9
  %625 = mul nsw i64 %623, %624
  %626 = add nsw i64 %622, %625
  %627 = getelementptr inbounds double, ptr %621, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = load double, ptr %57, align 8, !tbaa !11
  %630 = load double, ptr %54, align 8, !tbaa !11
  %631 = load double, ptr %58, align 8, !tbaa !11
  %632 = call double @llvm.fmuladd.f64(double %630, double %631, double %629)
  %633 = fsub double %628, %632
  %634 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %633, ptr %634, align 16, !tbaa !11
  %635 = load ptr, ptr %18, align 8, !tbaa !5
  %636 = load i64, ptr %635, align 8, !tbaa !9
  %637 = load i64, ptr %45, align 8, !tbaa !9
  %638 = sub nsw i64 %636, %637
  store i64 %638, ptr %35, align 8, !tbaa !9
  %639 = load i64, ptr %45, align 8, !tbaa !9
  %640 = add nsw i64 %639, 1
  store i64 %640, ptr %36, align 8, !tbaa !9
  %641 = load i64, ptr %45, align 8, !tbaa !9
  %642 = add nsw i64 %641, 1
  store i64 %642, ptr %37, align 8, !tbaa !9
  %643 = load ptr, ptr %20, align 8, !tbaa !5
  %644 = load i64, ptr %45, align 8, !tbaa !9
  %645 = load i64, ptr %36, align 8, !tbaa !9
  %646 = load ptr, ptr %18, align 8, !tbaa !5
  %647 = load i64, ptr %646, align 8, !tbaa !9
  %648 = icmp sle i64 %645, %647
  br i1 %648, label %649, label %651

649:                                              ; preds = %598
  %650 = load i64, ptr %36, align 8, !tbaa !9
  br label %654

651:                                              ; preds = %598
  %652 = load ptr, ptr %18, align 8, !tbaa !5
  %653 = load i64, ptr %652, align 8, !tbaa !9
  br label %654

654:                                              ; preds = %651, %649
  %655 = phi i64 [ %650, %649 ], [ %653, %651 ]
  %656 = load i64, ptr %28, align 8, !tbaa !9
  %657 = mul nsw i64 %655, %656
  %658 = add nsw i64 %644, %657
  %659 = getelementptr inbounds double, ptr %643, i64 %658
  %660 = load ptr, ptr %21, align 8, !tbaa !5
  %661 = load ptr, ptr %24, align 8, !tbaa !5
  %662 = load i64, ptr %37, align 8, !tbaa !9
  %663 = load ptr, ptr %18, align 8, !tbaa !5
  %664 = load i64, ptr %663, align 8, !tbaa !9
  %665 = icmp sle i64 %662, %664
  br i1 %665, label %666, label %668

666:                                              ; preds = %654
  %667 = load i64, ptr %37, align 8, !tbaa !9
  br label %671

668:                                              ; preds = %654
  %669 = load ptr, ptr %18, align 8, !tbaa !5
  %670 = load i64, ptr %669, align 8, !tbaa !9
  br label %671

671:                                              ; preds = %668, %666
  %672 = phi i64 [ %667, %666 ], [ %670, %668 ]
  %673 = load i64, ptr %46, align 8, !tbaa !9
  %674 = load i64, ptr %32, align 8, !tbaa !9
  %675 = mul nsw i64 %673, %674
  %676 = add nsw i64 %672, %675
  %677 = getelementptr inbounds double, ptr %661, i64 %676
  %678 = call double @f2c_ddot(ptr noundef %35, ptr noundef %659, ptr noundef %660, ptr noundef %677, ptr noundef @c__1)
  store double %678, ptr %57, align 8, !tbaa !11
  %679 = load i64, ptr %46, align 8, !tbaa !9
  %680 = sub nsw i64 %679, 1
  store i64 %680, ptr %35, align 8, !tbaa !9
  %681 = load ptr, ptr %24, align 8, !tbaa !5
  %682 = load i64, ptr %45, align 8, !tbaa !9
  %683 = load i64, ptr %32, align 8, !tbaa !9
  %684 = add nsw i64 %682, %683
  %685 = getelementptr inbounds double, ptr %681, i64 %684
  %686 = load ptr, ptr %25, align 8, !tbaa !5
  %687 = load ptr, ptr %22, align 8, !tbaa !5
  %688 = load i64, ptr %46, align 8, !tbaa !9
  %689 = load i64, ptr %30, align 8, !tbaa !9
  %690 = mul nsw i64 %688, %689
  %691 = add nsw i64 %690, 1
  %692 = getelementptr inbounds double, ptr %687, i64 %691
  %693 = call double @f2c_ddot(ptr noundef %35, ptr noundef %685, ptr noundef %686, ptr noundef %692, ptr noundef @c__1)
  store double %693, ptr %58, align 8, !tbaa !11
  %694 = load ptr, ptr %24, align 8, !tbaa !5
  %695 = load i64, ptr %45, align 8, !tbaa !9
  %696 = load i64, ptr %46, align 8, !tbaa !9
  %697 = load i64, ptr %32, align 8, !tbaa !9
  %698 = mul nsw i64 %696, %697
  %699 = add nsw i64 %695, %698
  %700 = getelementptr inbounds double, ptr %694, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !11
  %702 = load double, ptr %57, align 8, !tbaa !11
  %703 = load double, ptr %54, align 8, !tbaa !11
  %704 = load double, ptr %58, align 8, !tbaa !11
  %705 = call double @llvm.fmuladd.f64(double %703, double %704, double %702)
  %706 = fsub double %701, %705
  %707 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %706, ptr %707, align 8, !tbaa !11
  %708 = load double, ptr %54, align 8, !tbaa !11
  %709 = fneg double %708
  %710 = load ptr, ptr %22, align 8, !tbaa !5
  %711 = load i64, ptr %46, align 8, !tbaa !9
  %712 = load i64, ptr %46, align 8, !tbaa !9
  %713 = load i64, ptr %30, align 8, !tbaa !9
  %714 = mul nsw i64 %712, %713
  %715 = add nsw i64 %711, %714
  %716 = getelementptr inbounds double, ptr %710, i64 %715
  %717 = load double, ptr %716, align 8, !tbaa !11
  %718 = fmul double %709, %717
  store double %718, ptr %38, align 8, !tbaa !11
  %719 = load ptr, ptr %20, align 8, !tbaa !5
  %720 = load i64, ptr %44, align 8, !tbaa !9
  %721 = load i64, ptr %44, align 8, !tbaa !9
  %722 = load i64, ptr %28, align 8, !tbaa !9
  %723 = mul nsw i64 %721, %722
  %724 = add nsw i64 %720, %723
  %725 = getelementptr inbounds double, ptr %719, i64 %724
  %726 = load ptr, ptr %21, align 8, !tbaa !5
  %727 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %728 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %729 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %56, ptr noundef @c_b26, ptr noundef %725, ptr noundef %726, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %727, ptr noundef @c__2, ptr noundef %38, ptr noundef @c_b30, ptr noundef %728, ptr noundef @c__2, ptr noundef %62, ptr noundef %61, ptr noundef %55)
  %730 = load i64, ptr %55, align 8, !tbaa !9
  %731 = icmp ne i64 %730, 0
  br i1 %731, label %732, label %734

732:                                              ; preds = %671
  %733 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %733, align 8, !tbaa !9
  br label %734

734:                                              ; preds = %732, %671
  %735 = load double, ptr %62, align 8, !tbaa !11
  %736 = fcmp une double %735, 1.000000e+00
  br i1 %736, label %737, label %761

737:                                              ; preds = %734
  %738 = load ptr, ptr %19, align 8, !tbaa !5
  %739 = load i64, ptr %738, align 8, !tbaa !9
  store i64 %739, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %740

740:                                              ; preds = %753, %737
  %741 = load i64, ptr %40, align 8, !tbaa !9
  %742 = load i64, ptr %35, align 8, !tbaa !9
  %743 = icmp sle i64 %741, %742
  br i1 %743, label %744, label %756

744:                                              ; preds = %740
  %745 = load ptr, ptr %18, align 8, !tbaa !5
  %746 = load ptr, ptr %24, align 8, !tbaa !5
  %747 = load i64, ptr %40, align 8, !tbaa !9
  %748 = load i64, ptr %32, align 8, !tbaa !9
  %749 = mul nsw i64 %747, %748
  %750 = add nsw i64 %749, 1
  %751 = getelementptr inbounds double, ptr %746, i64 %750
  %752 = call i32 @f2c_dscal(ptr noundef %745, ptr noundef %62, ptr noundef %751, ptr noundef @c__1)
  br label %753

753:                                              ; preds = %744
  %754 = load i64, ptr %40, align 8, !tbaa !9
  %755 = add nsw i64 %754, 1
  store i64 %755, ptr %40, align 8, !tbaa !9
  br label %740, !llvm.loop !15

756:                                              ; preds = %740
  %757 = load double, ptr %62, align 8, !tbaa !11
  %758 = load ptr, ptr %26, align 8, !tbaa !5
  %759 = load double, ptr %758, align 8, !tbaa !11
  %760 = fmul double %759, %757
  store double %760, ptr %758, align 8, !tbaa !11
  br label %761

761:                                              ; preds = %756, %734
  %762 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %763 = load double, ptr %762, align 16, !tbaa !11
  %764 = load ptr, ptr %24, align 8, !tbaa !5
  %765 = load i64, ptr %44, align 8, !tbaa !9
  %766 = load i64, ptr %46, align 8, !tbaa !9
  %767 = load i64, ptr %32, align 8, !tbaa !9
  %768 = mul nsw i64 %766, %767
  %769 = add nsw i64 %765, %768
  %770 = getelementptr inbounds double, ptr %764, i64 %769
  store double %763, ptr %770, align 8, !tbaa !11
  %771 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %772 = load double, ptr %771, align 8, !tbaa !11
  %773 = load ptr, ptr %24, align 8, !tbaa !5
  %774 = load i64, ptr %45, align 8, !tbaa !9
  %775 = load i64, ptr %46, align 8, !tbaa !9
  %776 = load i64, ptr %32, align 8, !tbaa !9
  %777 = mul nsw i64 %775, %776
  %778 = add nsw i64 %774, %777
  %779 = getelementptr inbounds double, ptr %773, i64 %778
  store double %772, ptr %779, align 8, !tbaa !11
  br label %1402

780:                                              ; preds = %557, %553
  %781 = load i64, ptr %46, align 8, !tbaa !9
  %782 = load i64, ptr %47, align 8, !tbaa !9
  %783 = icmp ne i64 %781, %782
  br i1 %783, label %784, label %1011

784:                                              ; preds = %780
  %785 = load i64, ptr %44, align 8, !tbaa !9
  %786 = load i64, ptr %45, align 8, !tbaa !9
  %787 = icmp eq i64 %785, %786
  br i1 %787, label %788, label %1011

788:                                              ; preds = %784
  %789 = load ptr, ptr %18, align 8, !tbaa !5
  %790 = load i64, ptr %789, align 8, !tbaa !9
  %791 = load i64, ptr %44, align 8, !tbaa !9
  %792 = sub nsw i64 %790, %791
  store i64 %792, ptr %35, align 8, !tbaa !9
  %793 = load i64, ptr %44, align 8, !tbaa !9
  %794 = add nsw i64 %793, 1
  store i64 %794, ptr %36, align 8, !tbaa !9
  %795 = load i64, ptr %44, align 8, !tbaa !9
  %796 = add nsw i64 %795, 1
  store i64 %796, ptr %37, align 8, !tbaa !9
  %797 = load ptr, ptr %20, align 8, !tbaa !5
  %798 = load i64, ptr %44, align 8, !tbaa !9
  %799 = load i64, ptr %36, align 8, !tbaa !9
  %800 = load ptr, ptr %18, align 8, !tbaa !5
  %801 = load i64, ptr %800, align 8, !tbaa !9
  %802 = icmp sle i64 %799, %801
  br i1 %802, label %803, label %805

803:                                              ; preds = %788
  %804 = load i64, ptr %36, align 8, !tbaa !9
  br label %808

805:                                              ; preds = %788
  %806 = load ptr, ptr %18, align 8, !tbaa !5
  %807 = load i64, ptr %806, align 8, !tbaa !9
  br label %808

808:                                              ; preds = %805, %803
  %809 = phi i64 [ %804, %803 ], [ %807, %805 ]
  %810 = load i64, ptr %28, align 8, !tbaa !9
  %811 = mul nsw i64 %809, %810
  %812 = add nsw i64 %798, %811
  %813 = getelementptr inbounds double, ptr %797, i64 %812
  %814 = load ptr, ptr %21, align 8, !tbaa !5
  %815 = load ptr, ptr %24, align 8, !tbaa !5
  %816 = load i64, ptr %37, align 8, !tbaa !9
  %817 = load ptr, ptr %18, align 8, !tbaa !5
  %818 = load i64, ptr %817, align 8, !tbaa !9
  %819 = icmp sle i64 %816, %818
  br i1 %819, label %820, label %822

820:                                              ; preds = %808
  %821 = load i64, ptr %37, align 8, !tbaa !9
  br label %825

822:                                              ; preds = %808
  %823 = load ptr, ptr %18, align 8, !tbaa !5
  %824 = load i64, ptr %823, align 8, !tbaa !9
  br label %825

825:                                              ; preds = %822, %820
  %826 = phi i64 [ %821, %820 ], [ %824, %822 ]
  %827 = load i64, ptr %46, align 8, !tbaa !9
  %828 = load i64, ptr %32, align 8, !tbaa !9
  %829 = mul nsw i64 %827, %828
  %830 = add nsw i64 %826, %829
  %831 = getelementptr inbounds double, ptr %815, i64 %830
  %832 = call double @f2c_ddot(ptr noundef %35, ptr noundef %813, ptr noundef %814, ptr noundef %831, ptr noundef @c__1)
  store double %832, ptr %57, align 8, !tbaa !11
  %833 = load i64, ptr %46, align 8, !tbaa !9
  %834 = sub nsw i64 %833, 1
  store i64 %834, ptr %35, align 8, !tbaa !9
  %835 = load ptr, ptr %24, align 8, !tbaa !5
  %836 = load i64, ptr %44, align 8, !tbaa !9
  %837 = load i64, ptr %32, align 8, !tbaa !9
  %838 = add nsw i64 %836, %837
  %839 = getelementptr inbounds double, ptr %835, i64 %838
  %840 = load ptr, ptr %25, align 8, !tbaa !5
  %841 = load ptr, ptr %22, align 8, !tbaa !5
  %842 = load i64, ptr %46, align 8, !tbaa !9
  %843 = load i64, ptr %30, align 8, !tbaa !9
  %844 = mul nsw i64 %842, %843
  %845 = add nsw i64 %844, 1
  %846 = getelementptr inbounds double, ptr %841, i64 %845
  %847 = call double @f2c_ddot(ptr noundef %35, ptr noundef %839, ptr noundef %840, ptr noundef %846, ptr noundef @c__1)
  store double %847, ptr %58, align 8, !tbaa !11
  %848 = load double, ptr %54, align 8, !tbaa !11
  %849 = load ptr, ptr %24, align 8, !tbaa !5
  %850 = load i64, ptr %44, align 8, !tbaa !9
  %851 = load i64, ptr %46, align 8, !tbaa !9
  %852 = load i64, ptr %32, align 8, !tbaa !9
  %853 = mul nsw i64 %851, %852
  %854 = add nsw i64 %850, %853
  %855 = getelementptr inbounds double, ptr %849, i64 %854
  %856 = load double, ptr %855, align 8, !tbaa !11
  %857 = load double, ptr %57, align 8, !tbaa !11
  %858 = load double, ptr %54, align 8, !tbaa !11
  %859 = load double, ptr %58, align 8, !tbaa !11
  %860 = call double @llvm.fmuladd.f64(double %858, double %859, double %857)
  %861 = fsub double %856, %860
  %862 = fmul double %848, %861
  %863 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %862, ptr %863, align 16, !tbaa !11
  %864 = load ptr, ptr %18, align 8, !tbaa !5
  %865 = load i64, ptr %864, align 8, !tbaa !9
  %866 = load i64, ptr %44, align 8, !tbaa !9
  %867 = sub nsw i64 %865, %866
  store i64 %867, ptr %35, align 8, !tbaa !9
  %868 = load i64, ptr %44, align 8, !tbaa !9
  %869 = add nsw i64 %868, 1
  store i64 %869, ptr %36, align 8, !tbaa !9
  %870 = load i64, ptr %44, align 8, !tbaa !9
  %871 = add nsw i64 %870, 1
  store i64 %871, ptr %37, align 8, !tbaa !9
  %872 = load ptr, ptr %20, align 8, !tbaa !5
  %873 = load i64, ptr %44, align 8, !tbaa !9
  %874 = load i64, ptr %36, align 8, !tbaa !9
  %875 = load ptr, ptr %18, align 8, !tbaa !5
  %876 = load i64, ptr %875, align 8, !tbaa !9
  %877 = icmp sle i64 %874, %876
  br i1 %877, label %878, label %880

878:                                              ; preds = %825
  %879 = load i64, ptr %36, align 8, !tbaa !9
  br label %883

880:                                              ; preds = %825
  %881 = load ptr, ptr %18, align 8, !tbaa !5
  %882 = load i64, ptr %881, align 8, !tbaa !9
  br label %883

883:                                              ; preds = %880, %878
  %884 = phi i64 [ %879, %878 ], [ %882, %880 ]
  %885 = load i64, ptr %28, align 8, !tbaa !9
  %886 = mul nsw i64 %884, %885
  %887 = add nsw i64 %873, %886
  %888 = getelementptr inbounds double, ptr %872, i64 %887
  %889 = load ptr, ptr %21, align 8, !tbaa !5
  %890 = load ptr, ptr %24, align 8, !tbaa !5
  %891 = load i64, ptr %37, align 8, !tbaa !9
  %892 = load ptr, ptr %18, align 8, !tbaa !5
  %893 = load i64, ptr %892, align 8, !tbaa !9
  %894 = icmp sle i64 %891, %893
  br i1 %894, label %895, label %897

895:                                              ; preds = %883
  %896 = load i64, ptr %37, align 8, !tbaa !9
  br label %900

897:                                              ; preds = %883
  %898 = load ptr, ptr %18, align 8, !tbaa !5
  %899 = load i64, ptr %898, align 8, !tbaa !9
  br label %900

900:                                              ; preds = %897, %895
  %901 = phi i64 [ %896, %895 ], [ %899, %897 ]
  %902 = load i64, ptr %47, align 8, !tbaa !9
  %903 = load i64, ptr %32, align 8, !tbaa !9
  %904 = mul nsw i64 %902, %903
  %905 = add nsw i64 %901, %904
  %906 = getelementptr inbounds double, ptr %890, i64 %905
  %907 = call double @f2c_ddot(ptr noundef %35, ptr noundef %888, ptr noundef %889, ptr noundef %906, ptr noundef @c__1)
  store double %907, ptr %57, align 8, !tbaa !11
  %908 = load i64, ptr %46, align 8, !tbaa !9
  %909 = sub nsw i64 %908, 1
  store i64 %909, ptr %35, align 8, !tbaa !9
  %910 = load ptr, ptr %24, align 8, !tbaa !5
  %911 = load i64, ptr %44, align 8, !tbaa !9
  %912 = load i64, ptr %32, align 8, !tbaa !9
  %913 = add nsw i64 %911, %912
  %914 = getelementptr inbounds double, ptr %910, i64 %913
  %915 = load ptr, ptr %25, align 8, !tbaa !5
  %916 = load ptr, ptr %22, align 8, !tbaa !5
  %917 = load i64, ptr %47, align 8, !tbaa !9
  %918 = load i64, ptr %30, align 8, !tbaa !9
  %919 = mul nsw i64 %917, %918
  %920 = add nsw i64 %919, 1
  %921 = getelementptr inbounds double, ptr %916, i64 %920
  %922 = call double @f2c_ddot(ptr noundef %35, ptr noundef %914, ptr noundef %915, ptr noundef %921, ptr noundef @c__1)
  store double %922, ptr %58, align 8, !tbaa !11
  %923 = load double, ptr %54, align 8, !tbaa !11
  %924 = load ptr, ptr %24, align 8, !tbaa !5
  %925 = load i64, ptr %44, align 8, !tbaa !9
  %926 = load i64, ptr %47, align 8, !tbaa !9
  %927 = load i64, ptr %32, align 8, !tbaa !9
  %928 = mul nsw i64 %926, %927
  %929 = add nsw i64 %925, %928
  %930 = getelementptr inbounds double, ptr %924, i64 %929
  %931 = load double, ptr %930, align 8, !tbaa !11
  %932 = load double, ptr %57, align 8, !tbaa !11
  %933 = load double, ptr %54, align 8, !tbaa !11
  %934 = load double, ptr %58, align 8, !tbaa !11
  %935 = call double @llvm.fmuladd.f64(double %933, double %934, double %932)
  %936 = fsub double %931, %935
  %937 = fmul double %923, %936
  %938 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %937, ptr %938, align 8, !tbaa !11
  %939 = load double, ptr %54, align 8, !tbaa !11
  %940 = fneg double %939
  %941 = load ptr, ptr %20, align 8, !tbaa !5
  %942 = load i64, ptr %44, align 8, !tbaa !9
  %943 = load i64, ptr %44, align 8, !tbaa !9
  %944 = load i64, ptr %28, align 8, !tbaa !9
  %945 = mul nsw i64 %943, %944
  %946 = add nsw i64 %942, %945
  %947 = getelementptr inbounds double, ptr %941, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !11
  %949 = fmul double %940, %948
  store double %949, ptr %38, align 8, !tbaa !11
  %950 = load ptr, ptr %22, align 8, !tbaa !5
  %951 = load i64, ptr %46, align 8, !tbaa !9
  %952 = load i64, ptr %46, align 8, !tbaa !9
  %953 = load i64, ptr %30, align 8, !tbaa !9
  %954 = mul nsw i64 %952, %953
  %955 = add nsw i64 %951, %954
  %956 = getelementptr inbounds double, ptr %950, i64 %955
  %957 = load ptr, ptr %23, align 8, !tbaa !5
  %958 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %959 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %960 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %56, ptr noundef @c_b26, ptr noundef %956, ptr noundef %957, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %958, ptr noundef @c__2, ptr noundef %38, ptr noundef @c_b30, ptr noundef %959, ptr noundef @c__2, ptr noundef %62, ptr noundef %61, ptr noundef %55)
  %961 = load i64, ptr %55, align 8, !tbaa !9
  %962 = icmp ne i64 %961, 0
  br i1 %962, label %963, label %965

963:                                              ; preds = %900
  %964 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %964, align 8, !tbaa !9
  br label %965

965:                                              ; preds = %963, %900
  %966 = load double, ptr %62, align 8, !tbaa !11
  %967 = fcmp une double %966, 1.000000e+00
  br i1 %967, label %968, label %992

968:                                              ; preds = %965
  %969 = load ptr, ptr %19, align 8, !tbaa !5
  %970 = load i64, ptr %969, align 8, !tbaa !9
  store i64 %970, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %971

971:                                              ; preds = %984, %968
  %972 = load i64, ptr %40, align 8, !tbaa !9
  %973 = load i64, ptr %35, align 8, !tbaa !9
  %974 = icmp sle i64 %972, %973
  br i1 %974, label %975, label %987

975:                                              ; preds = %971
  %976 = load ptr, ptr %18, align 8, !tbaa !5
  %977 = load ptr, ptr %24, align 8, !tbaa !5
  %978 = load i64, ptr %40, align 8, !tbaa !9
  %979 = load i64, ptr %32, align 8, !tbaa !9
  %980 = mul nsw i64 %978, %979
  %981 = add nsw i64 %980, 1
  %982 = getelementptr inbounds double, ptr %977, i64 %981
  %983 = call i32 @f2c_dscal(ptr noundef %976, ptr noundef %62, ptr noundef %982, ptr noundef @c__1)
  br label %984

984:                                              ; preds = %975
  %985 = load i64, ptr %40, align 8, !tbaa !9
  %986 = add nsw i64 %985, 1
  store i64 %986, ptr %40, align 8, !tbaa !9
  br label %971, !llvm.loop !16

987:                                              ; preds = %971
  %988 = load double, ptr %62, align 8, !tbaa !11
  %989 = load ptr, ptr %26, align 8, !tbaa !5
  %990 = load double, ptr %989, align 8, !tbaa !11
  %991 = fmul double %990, %988
  store double %991, ptr %989, align 8, !tbaa !11
  br label %992

992:                                              ; preds = %987, %965
  %993 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %994 = load double, ptr %993, align 16, !tbaa !11
  %995 = load ptr, ptr %24, align 8, !tbaa !5
  %996 = load i64, ptr %44, align 8, !tbaa !9
  %997 = load i64, ptr %46, align 8, !tbaa !9
  %998 = load i64, ptr %32, align 8, !tbaa !9
  %999 = mul nsw i64 %997, %998
  %1000 = add nsw i64 %996, %999
  %1001 = getelementptr inbounds double, ptr %995, i64 %1000
  store double %994, ptr %1001, align 8, !tbaa !11
  %1002 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %1003 = load double, ptr %1002, align 8, !tbaa !11
  %1004 = load ptr, ptr %24, align 8, !tbaa !5
  %1005 = load i64, ptr %44, align 8, !tbaa !9
  %1006 = load i64, ptr %47, align 8, !tbaa !9
  %1007 = load i64, ptr %32, align 8, !tbaa !9
  %1008 = mul nsw i64 %1006, %1007
  %1009 = add nsw i64 %1005, %1008
  %1010 = getelementptr inbounds double, ptr %1004, i64 %1009
  store double %1003, ptr %1010, align 8, !tbaa !11
  br label %1401

1011:                                             ; preds = %784, %780
  %1012 = load i64, ptr %46, align 8, !tbaa !9
  %1013 = load i64, ptr %47, align 8, !tbaa !9
  %1014 = icmp ne i64 %1012, %1013
  br i1 %1014, label %1015, label %1400

1015:                                             ; preds = %1011
  %1016 = load i64, ptr %44, align 8, !tbaa !9
  %1017 = load i64, ptr %45, align 8, !tbaa !9
  %1018 = icmp ne i64 %1016, %1017
  br i1 %1018, label %1019, label %1400

1019:                                             ; preds = %1015
  %1020 = load ptr, ptr %18, align 8, !tbaa !5
  %1021 = load i64, ptr %1020, align 8, !tbaa !9
  %1022 = load i64, ptr %45, align 8, !tbaa !9
  %1023 = sub nsw i64 %1021, %1022
  store i64 %1023, ptr %35, align 8, !tbaa !9
  %1024 = load i64, ptr %45, align 8, !tbaa !9
  %1025 = add nsw i64 %1024, 1
  store i64 %1025, ptr %36, align 8, !tbaa !9
  %1026 = load i64, ptr %45, align 8, !tbaa !9
  %1027 = add nsw i64 %1026, 1
  store i64 %1027, ptr %37, align 8, !tbaa !9
  %1028 = load ptr, ptr %20, align 8, !tbaa !5
  %1029 = load i64, ptr %44, align 8, !tbaa !9
  %1030 = load i64, ptr %36, align 8, !tbaa !9
  %1031 = load ptr, ptr %18, align 8, !tbaa !5
  %1032 = load i64, ptr %1031, align 8, !tbaa !9
  %1033 = icmp sle i64 %1030, %1032
  br i1 %1033, label %1034, label %1036

1034:                                             ; preds = %1019
  %1035 = load i64, ptr %36, align 8, !tbaa !9
  br label %1039

1036:                                             ; preds = %1019
  %1037 = load ptr, ptr %18, align 8, !tbaa !5
  %1038 = load i64, ptr %1037, align 8, !tbaa !9
  br label %1039

1039:                                             ; preds = %1036, %1034
  %1040 = phi i64 [ %1035, %1034 ], [ %1038, %1036 ]
  %1041 = load i64, ptr %28, align 8, !tbaa !9
  %1042 = mul nsw i64 %1040, %1041
  %1043 = add nsw i64 %1029, %1042
  %1044 = getelementptr inbounds double, ptr %1028, i64 %1043
  %1045 = load ptr, ptr %21, align 8, !tbaa !5
  %1046 = load ptr, ptr %24, align 8, !tbaa !5
  %1047 = load i64, ptr %37, align 8, !tbaa !9
  %1048 = load ptr, ptr %18, align 8, !tbaa !5
  %1049 = load i64, ptr %1048, align 8, !tbaa !9
  %1050 = icmp sle i64 %1047, %1049
  br i1 %1050, label %1051, label %1053

1051:                                             ; preds = %1039
  %1052 = load i64, ptr %37, align 8, !tbaa !9
  br label %1056

1053:                                             ; preds = %1039
  %1054 = load ptr, ptr %18, align 8, !tbaa !5
  %1055 = load i64, ptr %1054, align 8, !tbaa !9
  br label %1056

1056:                                             ; preds = %1053, %1051
  %1057 = phi i64 [ %1052, %1051 ], [ %1055, %1053 ]
  %1058 = load i64, ptr %46, align 8, !tbaa !9
  %1059 = load i64, ptr %32, align 8, !tbaa !9
  %1060 = mul nsw i64 %1058, %1059
  %1061 = add nsw i64 %1057, %1060
  %1062 = getelementptr inbounds double, ptr %1046, i64 %1061
  %1063 = call double @f2c_ddot(ptr noundef %35, ptr noundef %1044, ptr noundef %1045, ptr noundef %1062, ptr noundef @c__1)
  store double %1063, ptr %57, align 8, !tbaa !11
  %1064 = load i64, ptr %46, align 8, !tbaa !9
  %1065 = sub nsw i64 %1064, 1
  store i64 %1065, ptr %35, align 8, !tbaa !9
  %1066 = load ptr, ptr %24, align 8, !tbaa !5
  %1067 = load i64, ptr %44, align 8, !tbaa !9
  %1068 = load i64, ptr %32, align 8, !tbaa !9
  %1069 = add nsw i64 %1067, %1068
  %1070 = getelementptr inbounds double, ptr %1066, i64 %1069
  %1071 = load ptr, ptr %25, align 8, !tbaa !5
  %1072 = load ptr, ptr %22, align 8, !tbaa !5
  %1073 = load i64, ptr %46, align 8, !tbaa !9
  %1074 = load i64, ptr %30, align 8, !tbaa !9
  %1075 = mul nsw i64 %1073, %1074
  %1076 = add nsw i64 %1075, 1
  %1077 = getelementptr inbounds double, ptr %1072, i64 %1076
  %1078 = call double @f2c_ddot(ptr noundef %35, ptr noundef %1070, ptr noundef %1071, ptr noundef %1077, ptr noundef @c__1)
  store double %1078, ptr %58, align 8, !tbaa !11
  %1079 = load ptr, ptr %24, align 8, !tbaa !5
  %1080 = load i64, ptr %44, align 8, !tbaa !9
  %1081 = load i64, ptr %46, align 8, !tbaa !9
  %1082 = load i64, ptr %32, align 8, !tbaa !9
  %1083 = mul nsw i64 %1081, %1082
  %1084 = add nsw i64 %1080, %1083
  %1085 = getelementptr inbounds double, ptr %1079, i64 %1084
  %1086 = load double, ptr %1085, align 8, !tbaa !11
  %1087 = load double, ptr %57, align 8, !tbaa !11
  %1088 = load double, ptr %54, align 8, !tbaa !11
  %1089 = load double, ptr %58, align 8, !tbaa !11
  %1090 = call double @llvm.fmuladd.f64(double %1088, double %1089, double %1087)
  %1091 = fsub double %1086, %1090
  %1092 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %1091, ptr %1092, align 16, !tbaa !11
  %1093 = load ptr, ptr %18, align 8, !tbaa !5
  %1094 = load i64, ptr %1093, align 8, !tbaa !9
  %1095 = load i64, ptr %45, align 8, !tbaa !9
  %1096 = sub nsw i64 %1094, %1095
  store i64 %1096, ptr %35, align 8, !tbaa !9
  %1097 = load i64, ptr %45, align 8, !tbaa !9
  %1098 = add nsw i64 %1097, 1
  store i64 %1098, ptr %36, align 8, !tbaa !9
  %1099 = load i64, ptr %45, align 8, !tbaa !9
  %1100 = add nsw i64 %1099, 1
  store i64 %1100, ptr %37, align 8, !tbaa !9
  %1101 = load ptr, ptr %20, align 8, !tbaa !5
  %1102 = load i64, ptr %44, align 8, !tbaa !9
  %1103 = load i64, ptr %36, align 8, !tbaa !9
  %1104 = load ptr, ptr %18, align 8, !tbaa !5
  %1105 = load i64, ptr %1104, align 8, !tbaa !9
  %1106 = icmp sle i64 %1103, %1105
  br i1 %1106, label %1107, label %1109

1107:                                             ; preds = %1056
  %1108 = load i64, ptr %36, align 8, !tbaa !9
  br label %1112

1109:                                             ; preds = %1056
  %1110 = load ptr, ptr %18, align 8, !tbaa !5
  %1111 = load i64, ptr %1110, align 8, !tbaa !9
  br label %1112

1112:                                             ; preds = %1109, %1107
  %1113 = phi i64 [ %1108, %1107 ], [ %1111, %1109 ]
  %1114 = load i64, ptr %28, align 8, !tbaa !9
  %1115 = mul nsw i64 %1113, %1114
  %1116 = add nsw i64 %1102, %1115
  %1117 = getelementptr inbounds double, ptr %1101, i64 %1116
  %1118 = load ptr, ptr %21, align 8, !tbaa !5
  %1119 = load ptr, ptr %24, align 8, !tbaa !5
  %1120 = load i64, ptr %37, align 8, !tbaa !9
  %1121 = load ptr, ptr %18, align 8, !tbaa !5
  %1122 = load i64, ptr %1121, align 8, !tbaa !9
  %1123 = icmp sle i64 %1120, %1122
  br i1 %1123, label %1124, label %1126

1124:                                             ; preds = %1112
  %1125 = load i64, ptr %37, align 8, !tbaa !9
  br label %1129

1126:                                             ; preds = %1112
  %1127 = load ptr, ptr %18, align 8, !tbaa !5
  %1128 = load i64, ptr %1127, align 8, !tbaa !9
  br label %1129

1129:                                             ; preds = %1126, %1124
  %1130 = phi i64 [ %1125, %1124 ], [ %1128, %1126 ]
  %1131 = load i64, ptr %47, align 8, !tbaa !9
  %1132 = load i64, ptr %32, align 8, !tbaa !9
  %1133 = mul nsw i64 %1131, %1132
  %1134 = add nsw i64 %1130, %1133
  %1135 = getelementptr inbounds double, ptr %1119, i64 %1134
  %1136 = call double @f2c_ddot(ptr noundef %35, ptr noundef %1117, ptr noundef %1118, ptr noundef %1135, ptr noundef @c__1)
  store double %1136, ptr %57, align 8, !tbaa !11
  %1137 = load i64, ptr %46, align 8, !tbaa !9
  %1138 = sub nsw i64 %1137, 1
  store i64 %1138, ptr %35, align 8, !tbaa !9
  %1139 = load ptr, ptr %24, align 8, !tbaa !5
  %1140 = load i64, ptr %44, align 8, !tbaa !9
  %1141 = load i64, ptr %32, align 8, !tbaa !9
  %1142 = add nsw i64 %1140, %1141
  %1143 = getelementptr inbounds double, ptr %1139, i64 %1142
  %1144 = load ptr, ptr %25, align 8, !tbaa !5
  %1145 = load ptr, ptr %22, align 8, !tbaa !5
  %1146 = load i64, ptr %47, align 8, !tbaa !9
  %1147 = load i64, ptr %30, align 8, !tbaa !9
  %1148 = mul nsw i64 %1146, %1147
  %1149 = add nsw i64 %1148, 1
  %1150 = getelementptr inbounds double, ptr %1145, i64 %1149
  %1151 = call double @f2c_ddot(ptr noundef %35, ptr noundef %1143, ptr noundef %1144, ptr noundef %1150, ptr noundef @c__1)
  store double %1151, ptr %58, align 8, !tbaa !11
  %1152 = load ptr, ptr %24, align 8, !tbaa !5
  %1153 = load i64, ptr %44, align 8, !tbaa !9
  %1154 = load i64, ptr %47, align 8, !tbaa !9
  %1155 = load i64, ptr %32, align 8, !tbaa !9
  %1156 = mul nsw i64 %1154, %1155
  %1157 = add nsw i64 %1153, %1156
  %1158 = getelementptr inbounds double, ptr %1152, i64 %1157
  %1159 = load double, ptr %1158, align 8, !tbaa !11
  %1160 = load double, ptr %57, align 8, !tbaa !11
  %1161 = load double, ptr %54, align 8, !tbaa !11
  %1162 = load double, ptr %58, align 8, !tbaa !11
  %1163 = call double @llvm.fmuladd.f64(double %1161, double %1162, double %1160)
  %1164 = fsub double %1159, %1163
  %1165 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 2
  store double %1164, ptr %1165, align 16, !tbaa !11
  %1166 = load ptr, ptr %18, align 8, !tbaa !5
  %1167 = load i64, ptr %1166, align 8, !tbaa !9
  %1168 = load i64, ptr %45, align 8, !tbaa !9
  %1169 = sub nsw i64 %1167, %1168
  store i64 %1169, ptr %35, align 8, !tbaa !9
  %1170 = load i64, ptr %45, align 8, !tbaa !9
  %1171 = add nsw i64 %1170, 1
  store i64 %1171, ptr %36, align 8, !tbaa !9
  %1172 = load i64, ptr %45, align 8, !tbaa !9
  %1173 = add nsw i64 %1172, 1
  store i64 %1173, ptr %37, align 8, !tbaa !9
  %1174 = load ptr, ptr %20, align 8, !tbaa !5
  %1175 = load i64, ptr %45, align 8, !tbaa !9
  %1176 = load i64, ptr %36, align 8, !tbaa !9
  %1177 = load ptr, ptr %18, align 8, !tbaa !5
  %1178 = load i64, ptr %1177, align 8, !tbaa !9
  %1179 = icmp sle i64 %1176, %1178
  br i1 %1179, label %1180, label %1182

1180:                                             ; preds = %1129
  %1181 = load i64, ptr %36, align 8, !tbaa !9
  br label %1185

1182:                                             ; preds = %1129
  %1183 = load ptr, ptr %18, align 8, !tbaa !5
  %1184 = load i64, ptr %1183, align 8, !tbaa !9
  br label %1185

1185:                                             ; preds = %1182, %1180
  %1186 = phi i64 [ %1181, %1180 ], [ %1184, %1182 ]
  %1187 = load i64, ptr %28, align 8, !tbaa !9
  %1188 = mul nsw i64 %1186, %1187
  %1189 = add nsw i64 %1175, %1188
  %1190 = getelementptr inbounds double, ptr %1174, i64 %1189
  %1191 = load ptr, ptr %21, align 8, !tbaa !5
  %1192 = load ptr, ptr %24, align 8, !tbaa !5
  %1193 = load i64, ptr %37, align 8, !tbaa !9
  %1194 = load ptr, ptr %18, align 8, !tbaa !5
  %1195 = load i64, ptr %1194, align 8, !tbaa !9
  %1196 = icmp sle i64 %1193, %1195
  br i1 %1196, label %1197, label %1199

1197:                                             ; preds = %1185
  %1198 = load i64, ptr %37, align 8, !tbaa !9
  br label %1202

1199:                                             ; preds = %1185
  %1200 = load ptr, ptr %18, align 8, !tbaa !5
  %1201 = load i64, ptr %1200, align 8, !tbaa !9
  br label %1202

1202:                                             ; preds = %1199, %1197
  %1203 = phi i64 [ %1198, %1197 ], [ %1201, %1199 ]
  %1204 = load i64, ptr %46, align 8, !tbaa !9
  %1205 = load i64, ptr %32, align 8, !tbaa !9
  %1206 = mul nsw i64 %1204, %1205
  %1207 = add nsw i64 %1203, %1206
  %1208 = getelementptr inbounds double, ptr %1192, i64 %1207
  %1209 = call double @f2c_ddot(ptr noundef %35, ptr noundef %1190, ptr noundef %1191, ptr noundef %1208, ptr noundef @c__1)
  store double %1209, ptr %57, align 8, !tbaa !11
  %1210 = load i64, ptr %46, align 8, !tbaa !9
  %1211 = sub nsw i64 %1210, 1
  store i64 %1211, ptr %35, align 8, !tbaa !9
  %1212 = load ptr, ptr %24, align 8, !tbaa !5
  %1213 = load i64, ptr %45, align 8, !tbaa !9
  %1214 = load i64, ptr %32, align 8, !tbaa !9
  %1215 = add nsw i64 %1213, %1214
  %1216 = getelementptr inbounds double, ptr %1212, i64 %1215
  %1217 = load ptr, ptr %25, align 8, !tbaa !5
  %1218 = load ptr, ptr %22, align 8, !tbaa !5
  %1219 = load i64, ptr %46, align 8, !tbaa !9
  %1220 = load i64, ptr %30, align 8, !tbaa !9
  %1221 = mul nsw i64 %1219, %1220
  %1222 = add nsw i64 %1221, 1
  %1223 = getelementptr inbounds double, ptr %1218, i64 %1222
  %1224 = call double @f2c_ddot(ptr noundef %35, ptr noundef %1216, ptr noundef %1217, ptr noundef %1223, ptr noundef @c__1)
  store double %1224, ptr %58, align 8, !tbaa !11
  %1225 = load ptr, ptr %24, align 8, !tbaa !5
  %1226 = load i64, ptr %45, align 8, !tbaa !9
  %1227 = load i64, ptr %46, align 8, !tbaa !9
  %1228 = load i64, ptr %32, align 8, !tbaa !9
  %1229 = mul nsw i64 %1227, %1228
  %1230 = add nsw i64 %1226, %1229
  %1231 = getelementptr inbounds double, ptr %1225, i64 %1230
  %1232 = load double, ptr %1231, align 8, !tbaa !11
  %1233 = load double, ptr %57, align 8, !tbaa !11
  %1234 = load double, ptr %54, align 8, !tbaa !11
  %1235 = load double, ptr %58, align 8, !tbaa !11
  %1236 = call double @llvm.fmuladd.f64(double %1234, double %1235, double %1233)
  %1237 = fsub double %1232, %1236
  %1238 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %1237, ptr %1238, align 8, !tbaa !11
  %1239 = load ptr, ptr %18, align 8, !tbaa !5
  %1240 = load i64, ptr %1239, align 8, !tbaa !9
  %1241 = load i64, ptr %45, align 8, !tbaa !9
  %1242 = sub nsw i64 %1240, %1241
  store i64 %1242, ptr %35, align 8, !tbaa !9
  %1243 = load i64, ptr %45, align 8, !tbaa !9
  %1244 = add nsw i64 %1243, 1
  store i64 %1244, ptr %36, align 8, !tbaa !9
  %1245 = load i64, ptr %45, align 8, !tbaa !9
  %1246 = add nsw i64 %1245, 1
  store i64 %1246, ptr %37, align 8, !tbaa !9
  %1247 = load ptr, ptr %20, align 8, !tbaa !5
  %1248 = load i64, ptr %45, align 8, !tbaa !9
  %1249 = load i64, ptr %36, align 8, !tbaa !9
  %1250 = load ptr, ptr %18, align 8, !tbaa !5
  %1251 = load i64, ptr %1250, align 8, !tbaa !9
  %1252 = icmp sle i64 %1249, %1251
  br i1 %1252, label %1253, label %1255

1253:                                             ; preds = %1202
  %1254 = load i64, ptr %36, align 8, !tbaa !9
  br label %1258

1255:                                             ; preds = %1202
  %1256 = load ptr, ptr %18, align 8, !tbaa !5
  %1257 = load i64, ptr %1256, align 8, !tbaa !9
  br label %1258

1258:                                             ; preds = %1255, %1253
  %1259 = phi i64 [ %1254, %1253 ], [ %1257, %1255 ]
  %1260 = load i64, ptr %28, align 8, !tbaa !9
  %1261 = mul nsw i64 %1259, %1260
  %1262 = add nsw i64 %1248, %1261
  %1263 = getelementptr inbounds double, ptr %1247, i64 %1262
  %1264 = load ptr, ptr %21, align 8, !tbaa !5
  %1265 = load ptr, ptr %24, align 8, !tbaa !5
  %1266 = load i64, ptr %37, align 8, !tbaa !9
  %1267 = load ptr, ptr %18, align 8, !tbaa !5
  %1268 = load i64, ptr %1267, align 8, !tbaa !9
  %1269 = icmp sle i64 %1266, %1268
  br i1 %1269, label %1270, label %1272

1270:                                             ; preds = %1258
  %1271 = load i64, ptr %37, align 8, !tbaa !9
  br label %1275

1272:                                             ; preds = %1258
  %1273 = load ptr, ptr %18, align 8, !tbaa !5
  %1274 = load i64, ptr %1273, align 8, !tbaa !9
  br label %1275

1275:                                             ; preds = %1272, %1270
  %1276 = phi i64 [ %1271, %1270 ], [ %1274, %1272 ]
  %1277 = load i64, ptr %47, align 8, !tbaa !9
  %1278 = load i64, ptr %32, align 8, !tbaa !9
  %1279 = mul nsw i64 %1277, %1278
  %1280 = add nsw i64 %1276, %1279
  %1281 = getelementptr inbounds double, ptr %1265, i64 %1280
  %1282 = call double @f2c_ddot(ptr noundef %35, ptr noundef %1263, ptr noundef %1264, ptr noundef %1281, ptr noundef @c__1)
  store double %1282, ptr %57, align 8, !tbaa !11
  %1283 = load i64, ptr %46, align 8, !tbaa !9
  %1284 = sub nsw i64 %1283, 1
  store i64 %1284, ptr %35, align 8, !tbaa !9
  %1285 = load ptr, ptr %24, align 8, !tbaa !5
  %1286 = load i64, ptr %45, align 8, !tbaa !9
  %1287 = load i64, ptr %32, align 8, !tbaa !9
  %1288 = add nsw i64 %1286, %1287
  %1289 = getelementptr inbounds double, ptr %1285, i64 %1288
  %1290 = load ptr, ptr %25, align 8, !tbaa !5
  %1291 = load ptr, ptr %22, align 8, !tbaa !5
  %1292 = load i64, ptr %47, align 8, !tbaa !9
  %1293 = load i64, ptr %30, align 8, !tbaa !9
  %1294 = mul nsw i64 %1292, %1293
  %1295 = add nsw i64 %1294, 1
  %1296 = getelementptr inbounds double, ptr %1291, i64 %1295
  %1297 = call double @f2c_ddot(ptr noundef %35, ptr noundef %1289, ptr noundef %1290, ptr noundef %1296, ptr noundef @c__1)
  store double %1297, ptr %58, align 8, !tbaa !11
  %1298 = load ptr, ptr %24, align 8, !tbaa !5
  %1299 = load i64, ptr %45, align 8, !tbaa !9
  %1300 = load i64, ptr %47, align 8, !tbaa !9
  %1301 = load i64, ptr %32, align 8, !tbaa !9
  %1302 = mul nsw i64 %1300, %1301
  %1303 = add nsw i64 %1299, %1302
  %1304 = getelementptr inbounds double, ptr %1298, i64 %1303
  %1305 = load double, ptr %1304, align 8, !tbaa !11
  %1306 = load double, ptr %57, align 8, !tbaa !11
  %1307 = load double, ptr %54, align 8, !tbaa !11
  %1308 = load double, ptr %58, align 8, !tbaa !11
  %1309 = call double @llvm.fmuladd.f64(double %1307, double %1308, double %1306)
  %1310 = fsub double %1305, %1309
  %1311 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 3
  store double %1310, ptr %1311, align 8, !tbaa !11
  %1312 = load ptr, ptr %17, align 8, !tbaa !5
  %1313 = load ptr, ptr %20, align 8, !tbaa !5
  %1314 = load i64, ptr %44, align 8, !tbaa !9
  %1315 = load i64, ptr %44, align 8, !tbaa !9
  %1316 = load i64, ptr %28, align 8, !tbaa !9
  %1317 = mul nsw i64 %1315, %1316
  %1318 = add nsw i64 %1314, %1317
  %1319 = getelementptr inbounds double, ptr %1313, i64 %1318
  %1320 = load ptr, ptr %21, align 8, !tbaa !5
  %1321 = load ptr, ptr %22, align 8, !tbaa !5
  %1322 = load i64, ptr %46, align 8, !tbaa !9
  %1323 = load i64, ptr %46, align 8, !tbaa !9
  %1324 = load i64, ptr %30, align 8, !tbaa !9
  %1325 = mul nsw i64 %1323, %1324
  %1326 = add nsw i64 %1322, %1325
  %1327 = getelementptr inbounds double, ptr %1321, i64 %1326
  %1328 = load ptr, ptr %23, align 8, !tbaa !5
  %1329 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %1330 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %1331 = call i32 @dlasy2_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %1312, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %1319, ptr noundef %1320, ptr noundef %1327, ptr noundef %1328, ptr noundef %1329, ptr noundef @c__2, ptr noundef %62, ptr noundef %1330, ptr noundef @c__2, ptr noundef %61, ptr noundef %55)
  %1332 = load i64, ptr %55, align 8, !tbaa !9
  %1333 = icmp ne i64 %1332, 0
  br i1 %1333, label %1334, label %1336

1334:                                             ; preds = %1275
  %1335 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %1335, align 8, !tbaa !9
  br label %1336

1336:                                             ; preds = %1334, %1275
  %1337 = load double, ptr %62, align 8, !tbaa !11
  %1338 = fcmp une double %1337, 1.000000e+00
  br i1 %1338, label %1339, label %1363

1339:                                             ; preds = %1336
  %1340 = load ptr, ptr %19, align 8, !tbaa !5
  %1341 = load i64, ptr %1340, align 8, !tbaa !9
  store i64 %1341, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %1342

1342:                                             ; preds = %1355, %1339
  %1343 = load i64, ptr %40, align 8, !tbaa !9
  %1344 = load i64, ptr %35, align 8, !tbaa !9
  %1345 = icmp sle i64 %1343, %1344
  br i1 %1345, label %1346, label %1358

1346:                                             ; preds = %1342
  %1347 = load ptr, ptr %18, align 8, !tbaa !5
  %1348 = load ptr, ptr %24, align 8, !tbaa !5
  %1349 = load i64, ptr %40, align 8, !tbaa !9
  %1350 = load i64, ptr %32, align 8, !tbaa !9
  %1351 = mul nsw i64 %1349, %1350
  %1352 = add nsw i64 %1351, 1
  %1353 = getelementptr inbounds double, ptr %1348, i64 %1352
  %1354 = call i32 @f2c_dscal(ptr noundef %1347, ptr noundef %62, ptr noundef %1353, ptr noundef @c__1)
  br label %1355

1355:                                             ; preds = %1346
  %1356 = load i64, ptr %40, align 8, !tbaa !9
  %1357 = add nsw i64 %1356, 1
  store i64 %1357, ptr %40, align 8, !tbaa !9
  br label %1342, !llvm.loop !17

1358:                                             ; preds = %1342
  %1359 = load double, ptr %62, align 8, !tbaa !11
  %1360 = load ptr, ptr %26, align 8, !tbaa !5
  %1361 = load double, ptr %1360, align 8, !tbaa !11
  %1362 = fmul double %1361, %1359
  store double %1362, ptr %1360, align 8, !tbaa !11
  br label %1363

1363:                                             ; preds = %1358, %1336
  %1364 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %1365 = load double, ptr %1364, align 16, !tbaa !11
  %1366 = load ptr, ptr %24, align 8, !tbaa !5
  %1367 = load i64, ptr %44, align 8, !tbaa !9
  %1368 = load i64, ptr %46, align 8, !tbaa !9
  %1369 = load i64, ptr %32, align 8, !tbaa !9
  %1370 = mul nsw i64 %1368, %1369
  %1371 = add nsw i64 %1367, %1370
  %1372 = getelementptr inbounds double, ptr %1366, i64 %1371
  store double %1365, ptr %1372, align 8, !tbaa !11
  %1373 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 2
  %1374 = load double, ptr %1373, align 16, !tbaa !11
  %1375 = load ptr, ptr %24, align 8, !tbaa !5
  %1376 = load i64, ptr %44, align 8, !tbaa !9
  %1377 = load i64, ptr %47, align 8, !tbaa !9
  %1378 = load i64, ptr %32, align 8, !tbaa !9
  %1379 = mul nsw i64 %1377, %1378
  %1380 = add nsw i64 %1376, %1379
  %1381 = getelementptr inbounds double, ptr %1375, i64 %1380
  store double %1374, ptr %1381, align 8, !tbaa !11
  %1382 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %1383 = load double, ptr %1382, align 8, !tbaa !11
  %1384 = load ptr, ptr %24, align 8, !tbaa !5
  %1385 = load i64, ptr %45, align 8, !tbaa !9
  %1386 = load i64, ptr %46, align 8, !tbaa !9
  %1387 = load i64, ptr %32, align 8, !tbaa !9
  %1388 = mul nsw i64 %1386, %1387
  %1389 = add nsw i64 %1385, %1388
  %1390 = getelementptr inbounds double, ptr %1384, i64 %1389
  store double %1383, ptr %1390, align 8, !tbaa !11
  %1391 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 3
  %1392 = load double, ptr %1391, align 8, !tbaa !11
  %1393 = load ptr, ptr %24, align 8, !tbaa !5
  %1394 = load i64, ptr %45, align 8, !tbaa !9
  %1395 = load i64, ptr %47, align 8, !tbaa !9
  %1396 = load i64, ptr %32, align 8, !tbaa !9
  %1397 = mul nsw i64 %1395, %1396
  %1398 = add nsw i64 %1394, %1397
  %1399 = getelementptr inbounds double, ptr %1393, i64 %1398
  store double %1392, ptr %1399, align 8, !tbaa !11
  br label %1400

1400:                                             ; preds = %1363, %1015, %1011
  br label %1401

1401:                                             ; preds = %1400, %992
  br label %1402

1402:                                             ; preds = %1401, %761
  br label %1403

1403:                                             ; preds = %1402, %543
  br label %1404

1404:                                             ; preds = %1403, %335
  br label %1405

1405:                                             ; preds = %1404
  %1406 = load i64, ptr %41, align 8, !tbaa !9
  %1407 = add nsw i64 %1406, -1
  store i64 %1407, ptr %41, align 8, !tbaa !9
  br label %328, !llvm.loop !18

1408:                                             ; preds = %328
  br label %1409

1409:                                             ; preds = %1408, %291
  br label %1410

1410:                                             ; preds = %1409
  %1411 = load i64, ptr %42, align 8, !tbaa !9
  %1412 = add nsw i64 %1411, 1
  store i64 %1412, ptr %42, align 8, !tbaa !9
  br label %283, !llvm.loop !19

1413:                                             ; preds = %283
  br label %4855

1414:                                             ; preds = %277, %270
  %1415 = load i64, ptr %64, align 8, !tbaa !9
  %1416 = icmp ne i64 %1415, 0
  br i1 %1416, label %2294, label %1417

1417:                                             ; preds = %1414
  %1418 = load i64, ptr %65, align 8, !tbaa !9
  %1419 = icmp ne i64 %1418, 0
  br i1 %1419, label %1420, label %2294

1420:                                             ; preds = %1417
  store i64 1, ptr %60, align 8, !tbaa !9
  %1421 = load ptr, ptr %19, align 8, !tbaa !5
  %1422 = load i64, ptr %1421, align 8, !tbaa !9
  store i64 %1422, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %1423

1423:                                             ; preds = %2290, %1420
  %1424 = load i64, ptr %42, align 8, !tbaa !9
  %1425 = load i64, ptr %34, align 8, !tbaa !9
  %1426 = icmp sle i64 %1424, %1425
  br i1 %1426, label %1427, label %2293

1427:                                             ; preds = %1423
  %1428 = load i64, ptr %42, align 8, !tbaa !9
  %1429 = load i64, ptr %60, align 8, !tbaa !9
  %1430 = icmp slt i64 %1428, %1429
  br i1 %1430, label %1431, label %1432

1431:                                             ; preds = %1427
  br label %2289

1432:                                             ; preds = %1427
  %1433 = load i64, ptr %42, align 8, !tbaa !9
  %1434 = load ptr, ptr %19, align 8, !tbaa !5
  %1435 = load i64, ptr %1434, align 8, !tbaa !9
  %1436 = icmp eq i64 %1433, %1435
  br i1 %1436, label %1437, label %1440

1437:                                             ; preds = %1432
  %1438 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1438, ptr %46, align 8, !tbaa !9
  %1439 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1439, ptr %47, align 8, !tbaa !9
  br label %1463

1440:                                             ; preds = %1432
  %1441 = load ptr, ptr %22, align 8, !tbaa !5
  %1442 = load i64, ptr %42, align 8, !tbaa !9
  %1443 = add nsw i64 %1442, 1
  %1444 = load i64, ptr %42, align 8, !tbaa !9
  %1445 = load i64, ptr %30, align 8, !tbaa !9
  %1446 = mul nsw i64 %1444, %1445
  %1447 = add nsw i64 %1443, %1446
  %1448 = getelementptr inbounds double, ptr %1441, i64 %1447
  %1449 = load double, ptr %1448, align 8, !tbaa !11
  %1450 = fcmp une double %1449, 0.000000e+00
  br i1 %1450, label %1451, label %1457

1451:                                             ; preds = %1440
  %1452 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1452, ptr %46, align 8, !tbaa !9
  %1453 = load i64, ptr %42, align 8, !tbaa !9
  %1454 = add nsw i64 %1453, 1
  store i64 %1454, ptr %47, align 8, !tbaa !9
  %1455 = load i64, ptr %42, align 8, !tbaa !9
  %1456 = add nsw i64 %1455, 2
  store i64 %1456, ptr %60, align 8, !tbaa !9
  br label %1462

1457:                                             ; preds = %1440
  %1458 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1458, ptr %46, align 8, !tbaa !9
  %1459 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1459, ptr %47, align 8, !tbaa !9
  %1460 = load i64, ptr %42, align 8, !tbaa !9
  %1461 = add nsw i64 %1460, 1
  store i64 %1461, ptr %60, align 8, !tbaa !9
  br label %1462

1462:                                             ; preds = %1457, %1451
  br label %1463

1463:                                             ; preds = %1462, %1437
  store i64 1, ptr %59, align 8, !tbaa !9
  %1464 = load ptr, ptr %18, align 8, !tbaa !5
  %1465 = load i64, ptr %1464, align 8, !tbaa !9
  store i64 %1465, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1466

1466:                                             ; preds = %2285, %1463
  %1467 = load i64, ptr %41, align 8, !tbaa !9
  %1468 = load i64, ptr %35, align 8, !tbaa !9
  %1469 = icmp sle i64 %1467, %1468
  br i1 %1469, label %1470, label %2288

1470:                                             ; preds = %1466
  %1471 = load i64, ptr %41, align 8, !tbaa !9
  %1472 = load i64, ptr %59, align 8, !tbaa !9
  %1473 = icmp slt i64 %1471, %1472
  br i1 %1473, label %1474, label %1475

1474:                                             ; preds = %1470
  br label %2284

1475:                                             ; preds = %1470
  %1476 = load i64, ptr %41, align 8, !tbaa !9
  %1477 = load ptr, ptr %18, align 8, !tbaa !5
  %1478 = load i64, ptr %1477, align 8, !tbaa !9
  %1479 = icmp eq i64 %1476, %1478
  br i1 %1479, label %1480, label %1483

1480:                                             ; preds = %1475
  %1481 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1481, ptr %44, align 8, !tbaa !9
  %1482 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1482, ptr %45, align 8, !tbaa !9
  br label %1506

1483:                                             ; preds = %1475
  %1484 = load ptr, ptr %20, align 8, !tbaa !5
  %1485 = load i64, ptr %41, align 8, !tbaa !9
  %1486 = add nsw i64 %1485, 1
  %1487 = load i64, ptr %41, align 8, !tbaa !9
  %1488 = load i64, ptr %28, align 8, !tbaa !9
  %1489 = mul nsw i64 %1487, %1488
  %1490 = add nsw i64 %1486, %1489
  %1491 = getelementptr inbounds double, ptr %1484, i64 %1490
  %1492 = load double, ptr %1491, align 8, !tbaa !11
  %1493 = fcmp une double %1492, 0.000000e+00
  br i1 %1493, label %1494, label %1500

1494:                                             ; preds = %1483
  %1495 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1495, ptr %44, align 8, !tbaa !9
  %1496 = load i64, ptr %41, align 8, !tbaa !9
  %1497 = add nsw i64 %1496, 1
  store i64 %1497, ptr %45, align 8, !tbaa !9
  %1498 = load i64, ptr %41, align 8, !tbaa !9
  %1499 = add nsw i64 %1498, 2
  store i64 %1499, ptr %59, align 8, !tbaa !9
  br label %1505

1500:                                             ; preds = %1483
  %1501 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1501, ptr %44, align 8, !tbaa !9
  %1502 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1502, ptr %45, align 8, !tbaa !9
  %1503 = load i64, ptr %41, align 8, !tbaa !9
  %1504 = add nsw i64 %1503, 1
  store i64 %1504, ptr %59, align 8, !tbaa !9
  br label %1505

1505:                                             ; preds = %1500, %1494
  br label %1506

1506:                                             ; preds = %1505, %1480
  %1507 = load i64, ptr %46, align 8, !tbaa !9
  %1508 = load i64, ptr %47, align 8, !tbaa !9
  %1509 = icmp eq i64 %1507, %1508
  br i1 %1509, label %1510, label %1665

1510:                                             ; preds = %1506
  %1511 = load i64, ptr %44, align 8, !tbaa !9
  %1512 = load i64, ptr %45, align 8, !tbaa !9
  %1513 = icmp eq i64 %1511, %1512
  br i1 %1513, label %1514, label %1665

1514:                                             ; preds = %1510
  %1515 = load i64, ptr %44, align 8, !tbaa !9
  %1516 = sub nsw i64 %1515, 1
  store i64 %1516, ptr %36, align 8, !tbaa !9
  %1517 = load ptr, ptr %20, align 8, !tbaa !5
  %1518 = load i64, ptr %44, align 8, !tbaa !9
  %1519 = load i64, ptr %28, align 8, !tbaa !9
  %1520 = mul nsw i64 %1518, %1519
  %1521 = add nsw i64 %1520, 1
  %1522 = getelementptr inbounds double, ptr %1517, i64 %1521
  %1523 = load ptr, ptr %24, align 8, !tbaa !5
  %1524 = load i64, ptr %46, align 8, !tbaa !9
  %1525 = load i64, ptr %32, align 8, !tbaa !9
  %1526 = mul nsw i64 %1524, %1525
  %1527 = add nsw i64 %1526, 1
  %1528 = getelementptr inbounds double, ptr %1523, i64 %1527
  %1529 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1522, ptr noundef @c__1, ptr noundef %1528, ptr noundef @c__1)
  store double %1529, ptr %57, align 8, !tbaa !11
  %1530 = load i64, ptr %46, align 8, !tbaa !9
  %1531 = sub nsw i64 %1530, 1
  store i64 %1531, ptr %36, align 8, !tbaa !9
  %1532 = load ptr, ptr %24, align 8, !tbaa !5
  %1533 = load i64, ptr %44, align 8, !tbaa !9
  %1534 = load i64, ptr %32, align 8, !tbaa !9
  %1535 = add nsw i64 %1533, %1534
  %1536 = getelementptr inbounds double, ptr %1532, i64 %1535
  %1537 = load ptr, ptr %25, align 8, !tbaa !5
  %1538 = load ptr, ptr %22, align 8, !tbaa !5
  %1539 = load i64, ptr %46, align 8, !tbaa !9
  %1540 = load i64, ptr %30, align 8, !tbaa !9
  %1541 = mul nsw i64 %1539, %1540
  %1542 = add nsw i64 %1541, 1
  %1543 = getelementptr inbounds double, ptr %1538, i64 %1542
  %1544 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1536, ptr noundef %1537, ptr noundef %1543, ptr noundef @c__1)
  store double %1544, ptr %58, align 8, !tbaa !11
  %1545 = load ptr, ptr %24, align 8, !tbaa !5
  %1546 = load i64, ptr %44, align 8, !tbaa !9
  %1547 = load i64, ptr %46, align 8, !tbaa !9
  %1548 = load i64, ptr %32, align 8, !tbaa !9
  %1549 = mul nsw i64 %1547, %1548
  %1550 = add nsw i64 %1546, %1549
  %1551 = getelementptr inbounds double, ptr %1545, i64 %1550
  %1552 = load double, ptr %1551, align 8, !tbaa !11
  %1553 = load double, ptr %57, align 8, !tbaa !11
  %1554 = load double, ptr %54, align 8, !tbaa !11
  %1555 = load double, ptr %58, align 8, !tbaa !11
  %1556 = call double @llvm.fmuladd.f64(double %1554, double %1555, double %1553)
  %1557 = fsub double %1552, %1556
  %1558 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %1557, ptr %1558, align 16, !tbaa !11
  store double 1.000000e+00, ptr %62, align 8, !tbaa !11
  %1559 = load ptr, ptr %20, align 8, !tbaa !5
  %1560 = load i64, ptr %44, align 8, !tbaa !9
  %1561 = load i64, ptr %44, align 8, !tbaa !9
  %1562 = load i64, ptr %28, align 8, !tbaa !9
  %1563 = mul nsw i64 %1561, %1562
  %1564 = add nsw i64 %1560, %1563
  %1565 = getelementptr inbounds double, ptr %1559, i64 %1564
  %1566 = load double, ptr %1565, align 8, !tbaa !11
  %1567 = load double, ptr %54, align 8, !tbaa !11
  %1568 = load ptr, ptr %22, align 8, !tbaa !5
  %1569 = load i64, ptr %46, align 8, !tbaa !9
  %1570 = load i64, ptr %46, align 8, !tbaa !9
  %1571 = load i64, ptr %30, align 8, !tbaa !9
  %1572 = mul nsw i64 %1570, %1571
  %1573 = add nsw i64 %1569, %1572
  %1574 = getelementptr inbounds double, ptr %1568, i64 %1573
  %1575 = load double, ptr %1574, align 8, !tbaa !11
  %1576 = call double @llvm.fmuladd.f64(double %1567, double %1575, double %1566)
  store double %1576, ptr %48, align 8, !tbaa !11
  %1577 = load double, ptr %48, align 8, !tbaa !11
  %1578 = fcmp oge double %1577, 0.000000e+00
  br i1 %1578, label %1579, label %1581

1579:                                             ; preds = %1514
  %1580 = load double, ptr %48, align 8, !tbaa !11
  br label %1584

1581:                                             ; preds = %1514
  %1582 = load double, ptr %48, align 8, !tbaa !11
  %1583 = fneg double %1582
  br label %1584

1584:                                             ; preds = %1581, %1579
  %1585 = phi double [ %1580, %1579 ], [ %1583, %1581 ]
  store double %1585, ptr %50, align 8, !tbaa !11
  %1586 = load double, ptr %50, align 8, !tbaa !11
  %1587 = load double, ptr %56, align 8, !tbaa !11
  %1588 = fcmp ole double %1586, %1587
  br i1 %1588, label %1589, label %1593

1589:                                             ; preds = %1584
  %1590 = load double, ptr %56, align 8, !tbaa !11
  store double %1590, ptr %48, align 8, !tbaa !11
  %1591 = load double, ptr %56, align 8, !tbaa !11
  store double %1591, ptr %50, align 8, !tbaa !11
  %1592 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %1592, align 8, !tbaa !9
  br label %1593

1593:                                             ; preds = %1589, %1584
  %1594 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %1595 = load double, ptr %1594, align 16, !tbaa !11
  %1596 = fcmp oge double %1595, 0.000000e+00
  br i1 %1596, label %1597, label %1600

1597:                                             ; preds = %1593
  %1598 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %1599 = load double, ptr %1598, align 16, !tbaa !11
  br label %1604

1600:                                             ; preds = %1593
  %1601 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %1602 = load double, ptr %1601, align 16, !tbaa !11
  %1603 = fneg double %1602
  br label %1604

1604:                                             ; preds = %1600, %1597
  %1605 = phi double [ %1599, %1597 ], [ %1603, %1600 ]
  store double %1605, ptr %49, align 8, !tbaa !11
  %1606 = load double, ptr %50, align 8, !tbaa !11
  %1607 = fcmp olt double %1606, 1.000000e+00
  br i1 %1607, label %1608, label %1621

1608:                                             ; preds = %1604
  %1609 = load double, ptr %49, align 8, !tbaa !11
  %1610 = fcmp ogt double %1609, 1.000000e+00
  br i1 %1610, label %1611, label %1621

1611:                                             ; preds = %1608
  %1612 = load double, ptr %49, align 8, !tbaa !11
  %1613 = load double, ptr %63, align 8, !tbaa !11
  %1614 = load double, ptr %50, align 8, !tbaa !11
  %1615 = fmul double %1613, %1614
  %1616 = fcmp ogt double %1612, %1615
  br i1 %1616, label %1617, label %1620

1617:                                             ; preds = %1611
  %1618 = load double, ptr %49, align 8, !tbaa !11
  %1619 = fdiv double 1.000000e+00, %1618
  store double %1619, ptr %62, align 8, !tbaa !11
  br label %1620

1620:                                             ; preds = %1617, %1611
  br label %1621

1621:                                             ; preds = %1620, %1608, %1604
  %1622 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %1623 = load double, ptr %1622, align 16, !tbaa !11
  %1624 = load double, ptr %62, align 8, !tbaa !11
  %1625 = fmul double %1623, %1624
  %1626 = load double, ptr %48, align 8, !tbaa !11
  %1627 = fdiv double %1625, %1626
  %1628 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  store double %1627, ptr %1628, align 16, !tbaa !11
  %1629 = load double, ptr %62, align 8, !tbaa !11
  %1630 = fcmp une double %1629, 1.000000e+00
  br i1 %1630, label %1631, label %1655

1631:                                             ; preds = %1621
  %1632 = load ptr, ptr %19, align 8, !tbaa !5
  %1633 = load i64, ptr %1632, align 8, !tbaa !9
  store i64 %1633, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %1634

1634:                                             ; preds = %1647, %1631
  %1635 = load i64, ptr %40, align 8, !tbaa !9
  %1636 = load i64, ptr %36, align 8, !tbaa !9
  %1637 = icmp sle i64 %1635, %1636
  br i1 %1637, label %1638, label %1650

1638:                                             ; preds = %1634
  %1639 = load ptr, ptr %18, align 8, !tbaa !5
  %1640 = load ptr, ptr %24, align 8, !tbaa !5
  %1641 = load i64, ptr %40, align 8, !tbaa !9
  %1642 = load i64, ptr %32, align 8, !tbaa !9
  %1643 = mul nsw i64 %1641, %1642
  %1644 = add nsw i64 %1643, 1
  %1645 = getelementptr inbounds double, ptr %1640, i64 %1644
  %1646 = call i32 @f2c_dscal(ptr noundef %1639, ptr noundef %62, ptr noundef %1645, ptr noundef @c__1)
  br label %1647

1647:                                             ; preds = %1638
  %1648 = load i64, ptr %40, align 8, !tbaa !9
  %1649 = add nsw i64 %1648, 1
  store i64 %1649, ptr %40, align 8, !tbaa !9
  br label %1634, !llvm.loop !20

1650:                                             ; preds = %1634
  %1651 = load double, ptr %62, align 8, !tbaa !11
  %1652 = load ptr, ptr %26, align 8, !tbaa !5
  %1653 = load double, ptr %1652, align 8, !tbaa !11
  %1654 = fmul double %1653, %1651
  store double %1654, ptr %1652, align 8, !tbaa !11
  br label %1655

1655:                                             ; preds = %1650, %1621
  %1656 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %1657 = load double, ptr %1656, align 16, !tbaa !11
  %1658 = load ptr, ptr %24, align 8, !tbaa !5
  %1659 = load i64, ptr %44, align 8, !tbaa !9
  %1660 = load i64, ptr %46, align 8, !tbaa !9
  %1661 = load i64, ptr %32, align 8, !tbaa !9
  %1662 = mul nsw i64 %1660, %1661
  %1663 = add nsw i64 %1659, %1662
  %1664 = getelementptr inbounds double, ptr %1658, i64 %1663
  store double %1657, ptr %1664, align 8, !tbaa !11
  br label %2283

1665:                                             ; preds = %1510, %1506
  %1666 = load i64, ptr %46, align 8, !tbaa !9
  %1667 = load i64, ptr %47, align 8, !tbaa !9
  %1668 = icmp eq i64 %1666, %1667
  br i1 %1668, label %1669, label %1834

1669:                                             ; preds = %1665
  %1670 = load i64, ptr %44, align 8, !tbaa !9
  %1671 = load i64, ptr %45, align 8, !tbaa !9
  %1672 = icmp ne i64 %1670, %1671
  br i1 %1672, label %1673, label %1834

1673:                                             ; preds = %1669
  %1674 = load i64, ptr %44, align 8, !tbaa !9
  %1675 = sub nsw i64 %1674, 1
  store i64 %1675, ptr %36, align 8, !tbaa !9
  %1676 = load ptr, ptr %20, align 8, !tbaa !5
  %1677 = load i64, ptr %44, align 8, !tbaa !9
  %1678 = load i64, ptr %28, align 8, !tbaa !9
  %1679 = mul nsw i64 %1677, %1678
  %1680 = add nsw i64 %1679, 1
  %1681 = getelementptr inbounds double, ptr %1676, i64 %1680
  %1682 = load ptr, ptr %24, align 8, !tbaa !5
  %1683 = load i64, ptr %46, align 8, !tbaa !9
  %1684 = load i64, ptr %32, align 8, !tbaa !9
  %1685 = mul nsw i64 %1683, %1684
  %1686 = add nsw i64 %1685, 1
  %1687 = getelementptr inbounds double, ptr %1682, i64 %1686
  %1688 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1681, ptr noundef @c__1, ptr noundef %1687, ptr noundef @c__1)
  store double %1688, ptr %57, align 8, !tbaa !11
  %1689 = load i64, ptr %46, align 8, !tbaa !9
  %1690 = sub nsw i64 %1689, 1
  store i64 %1690, ptr %36, align 8, !tbaa !9
  %1691 = load ptr, ptr %24, align 8, !tbaa !5
  %1692 = load i64, ptr %44, align 8, !tbaa !9
  %1693 = load i64, ptr %32, align 8, !tbaa !9
  %1694 = add nsw i64 %1692, %1693
  %1695 = getelementptr inbounds double, ptr %1691, i64 %1694
  %1696 = load ptr, ptr %25, align 8, !tbaa !5
  %1697 = load ptr, ptr %22, align 8, !tbaa !5
  %1698 = load i64, ptr %46, align 8, !tbaa !9
  %1699 = load i64, ptr %30, align 8, !tbaa !9
  %1700 = mul nsw i64 %1698, %1699
  %1701 = add nsw i64 %1700, 1
  %1702 = getelementptr inbounds double, ptr %1697, i64 %1701
  %1703 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1695, ptr noundef %1696, ptr noundef %1702, ptr noundef @c__1)
  store double %1703, ptr %58, align 8, !tbaa !11
  %1704 = load ptr, ptr %24, align 8, !tbaa !5
  %1705 = load i64, ptr %44, align 8, !tbaa !9
  %1706 = load i64, ptr %46, align 8, !tbaa !9
  %1707 = load i64, ptr %32, align 8, !tbaa !9
  %1708 = mul nsw i64 %1706, %1707
  %1709 = add nsw i64 %1705, %1708
  %1710 = getelementptr inbounds double, ptr %1704, i64 %1709
  %1711 = load double, ptr %1710, align 8, !tbaa !11
  %1712 = load double, ptr %57, align 8, !tbaa !11
  %1713 = load double, ptr %54, align 8, !tbaa !11
  %1714 = load double, ptr %58, align 8, !tbaa !11
  %1715 = call double @llvm.fmuladd.f64(double %1713, double %1714, double %1712)
  %1716 = fsub double %1711, %1715
  %1717 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %1716, ptr %1717, align 16, !tbaa !11
  %1718 = load i64, ptr %44, align 8, !tbaa !9
  %1719 = sub nsw i64 %1718, 1
  store i64 %1719, ptr %36, align 8, !tbaa !9
  %1720 = load ptr, ptr %20, align 8, !tbaa !5
  %1721 = load i64, ptr %45, align 8, !tbaa !9
  %1722 = load i64, ptr %28, align 8, !tbaa !9
  %1723 = mul nsw i64 %1721, %1722
  %1724 = add nsw i64 %1723, 1
  %1725 = getelementptr inbounds double, ptr %1720, i64 %1724
  %1726 = load ptr, ptr %24, align 8, !tbaa !5
  %1727 = load i64, ptr %46, align 8, !tbaa !9
  %1728 = load i64, ptr %32, align 8, !tbaa !9
  %1729 = mul nsw i64 %1727, %1728
  %1730 = add nsw i64 %1729, 1
  %1731 = getelementptr inbounds double, ptr %1726, i64 %1730
  %1732 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1725, ptr noundef @c__1, ptr noundef %1731, ptr noundef @c__1)
  store double %1732, ptr %57, align 8, !tbaa !11
  %1733 = load i64, ptr %46, align 8, !tbaa !9
  %1734 = sub nsw i64 %1733, 1
  store i64 %1734, ptr %36, align 8, !tbaa !9
  %1735 = load ptr, ptr %24, align 8, !tbaa !5
  %1736 = load i64, ptr %45, align 8, !tbaa !9
  %1737 = load i64, ptr %32, align 8, !tbaa !9
  %1738 = add nsw i64 %1736, %1737
  %1739 = getelementptr inbounds double, ptr %1735, i64 %1738
  %1740 = load ptr, ptr %25, align 8, !tbaa !5
  %1741 = load ptr, ptr %22, align 8, !tbaa !5
  %1742 = load i64, ptr %46, align 8, !tbaa !9
  %1743 = load i64, ptr %30, align 8, !tbaa !9
  %1744 = mul nsw i64 %1742, %1743
  %1745 = add nsw i64 %1744, 1
  %1746 = getelementptr inbounds double, ptr %1741, i64 %1745
  %1747 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1739, ptr noundef %1740, ptr noundef %1746, ptr noundef @c__1)
  store double %1747, ptr %58, align 8, !tbaa !11
  %1748 = load ptr, ptr %24, align 8, !tbaa !5
  %1749 = load i64, ptr %45, align 8, !tbaa !9
  %1750 = load i64, ptr %46, align 8, !tbaa !9
  %1751 = load i64, ptr %32, align 8, !tbaa !9
  %1752 = mul nsw i64 %1750, %1751
  %1753 = add nsw i64 %1749, %1752
  %1754 = getelementptr inbounds double, ptr %1748, i64 %1753
  %1755 = load double, ptr %1754, align 8, !tbaa !11
  %1756 = load double, ptr %57, align 8, !tbaa !11
  %1757 = load double, ptr %54, align 8, !tbaa !11
  %1758 = load double, ptr %58, align 8, !tbaa !11
  %1759 = call double @llvm.fmuladd.f64(double %1757, double %1758, double %1756)
  %1760 = fsub double %1755, %1759
  %1761 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %1760, ptr %1761, align 8, !tbaa !11
  %1762 = load double, ptr %54, align 8, !tbaa !11
  %1763 = fneg double %1762
  %1764 = load ptr, ptr %22, align 8, !tbaa !5
  %1765 = load i64, ptr %46, align 8, !tbaa !9
  %1766 = load i64, ptr %46, align 8, !tbaa !9
  %1767 = load i64, ptr %30, align 8, !tbaa !9
  %1768 = mul nsw i64 %1766, %1767
  %1769 = add nsw i64 %1765, %1768
  %1770 = getelementptr inbounds double, ptr %1764, i64 %1769
  %1771 = load double, ptr %1770, align 8, !tbaa !11
  %1772 = fmul double %1763, %1771
  store double %1772, ptr %38, align 8, !tbaa !11
  %1773 = load ptr, ptr %20, align 8, !tbaa !5
  %1774 = load i64, ptr %44, align 8, !tbaa !9
  %1775 = load i64, ptr %44, align 8, !tbaa !9
  %1776 = load i64, ptr %28, align 8, !tbaa !9
  %1777 = mul nsw i64 %1775, %1776
  %1778 = add nsw i64 %1774, %1777
  %1779 = getelementptr inbounds double, ptr %1773, i64 %1778
  %1780 = load ptr, ptr %21, align 8, !tbaa !5
  %1781 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %1782 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %1783 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %56, ptr noundef @c_b26, ptr noundef %1779, ptr noundef %1780, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %1781, ptr noundef @c__2, ptr noundef %38, ptr noundef @c_b30, ptr noundef %1782, ptr noundef @c__2, ptr noundef %62, ptr noundef %61, ptr noundef %55)
  %1784 = load i64, ptr %55, align 8, !tbaa !9
  %1785 = icmp ne i64 %1784, 0
  br i1 %1785, label %1786, label %1788

1786:                                             ; preds = %1673
  %1787 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %1787, align 8, !tbaa !9
  br label %1788

1788:                                             ; preds = %1786, %1673
  %1789 = load double, ptr %62, align 8, !tbaa !11
  %1790 = fcmp une double %1789, 1.000000e+00
  br i1 %1790, label %1791, label %1815

1791:                                             ; preds = %1788
  %1792 = load ptr, ptr %19, align 8, !tbaa !5
  %1793 = load i64, ptr %1792, align 8, !tbaa !9
  store i64 %1793, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %1794

1794:                                             ; preds = %1807, %1791
  %1795 = load i64, ptr %40, align 8, !tbaa !9
  %1796 = load i64, ptr %36, align 8, !tbaa !9
  %1797 = icmp sle i64 %1795, %1796
  br i1 %1797, label %1798, label %1810

1798:                                             ; preds = %1794
  %1799 = load ptr, ptr %18, align 8, !tbaa !5
  %1800 = load ptr, ptr %24, align 8, !tbaa !5
  %1801 = load i64, ptr %40, align 8, !tbaa !9
  %1802 = load i64, ptr %32, align 8, !tbaa !9
  %1803 = mul nsw i64 %1801, %1802
  %1804 = add nsw i64 %1803, 1
  %1805 = getelementptr inbounds double, ptr %1800, i64 %1804
  %1806 = call i32 @f2c_dscal(ptr noundef %1799, ptr noundef %62, ptr noundef %1805, ptr noundef @c__1)
  br label %1807

1807:                                             ; preds = %1798
  %1808 = load i64, ptr %40, align 8, !tbaa !9
  %1809 = add nsw i64 %1808, 1
  store i64 %1809, ptr %40, align 8, !tbaa !9
  br label %1794, !llvm.loop !21

1810:                                             ; preds = %1794
  %1811 = load double, ptr %62, align 8, !tbaa !11
  %1812 = load ptr, ptr %26, align 8, !tbaa !5
  %1813 = load double, ptr %1812, align 8, !tbaa !11
  %1814 = fmul double %1813, %1811
  store double %1814, ptr %1812, align 8, !tbaa !11
  br label %1815

1815:                                             ; preds = %1810, %1788
  %1816 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %1817 = load double, ptr %1816, align 16, !tbaa !11
  %1818 = load ptr, ptr %24, align 8, !tbaa !5
  %1819 = load i64, ptr %44, align 8, !tbaa !9
  %1820 = load i64, ptr %46, align 8, !tbaa !9
  %1821 = load i64, ptr %32, align 8, !tbaa !9
  %1822 = mul nsw i64 %1820, %1821
  %1823 = add nsw i64 %1819, %1822
  %1824 = getelementptr inbounds double, ptr %1818, i64 %1823
  store double %1817, ptr %1824, align 8, !tbaa !11
  %1825 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %1826 = load double, ptr %1825, align 8, !tbaa !11
  %1827 = load ptr, ptr %24, align 8, !tbaa !5
  %1828 = load i64, ptr %45, align 8, !tbaa !9
  %1829 = load i64, ptr %46, align 8, !tbaa !9
  %1830 = load i64, ptr %32, align 8, !tbaa !9
  %1831 = mul nsw i64 %1829, %1830
  %1832 = add nsw i64 %1828, %1831
  %1833 = getelementptr inbounds double, ptr %1827, i64 %1832
  store double %1826, ptr %1833, align 8, !tbaa !11
  br label %2282

1834:                                             ; preds = %1669, %1665
  %1835 = load i64, ptr %46, align 8, !tbaa !9
  %1836 = load i64, ptr %47, align 8, !tbaa !9
  %1837 = icmp ne i64 %1835, %1836
  br i1 %1837, label %1838, label %2007

1838:                                             ; preds = %1834
  %1839 = load i64, ptr %44, align 8, !tbaa !9
  %1840 = load i64, ptr %45, align 8, !tbaa !9
  %1841 = icmp eq i64 %1839, %1840
  br i1 %1841, label %1842, label %2007

1842:                                             ; preds = %1838
  %1843 = load i64, ptr %44, align 8, !tbaa !9
  %1844 = sub nsw i64 %1843, 1
  store i64 %1844, ptr %36, align 8, !tbaa !9
  %1845 = load ptr, ptr %20, align 8, !tbaa !5
  %1846 = load i64, ptr %44, align 8, !tbaa !9
  %1847 = load i64, ptr %28, align 8, !tbaa !9
  %1848 = mul nsw i64 %1846, %1847
  %1849 = add nsw i64 %1848, 1
  %1850 = getelementptr inbounds double, ptr %1845, i64 %1849
  %1851 = load ptr, ptr %24, align 8, !tbaa !5
  %1852 = load i64, ptr %46, align 8, !tbaa !9
  %1853 = load i64, ptr %32, align 8, !tbaa !9
  %1854 = mul nsw i64 %1852, %1853
  %1855 = add nsw i64 %1854, 1
  %1856 = getelementptr inbounds double, ptr %1851, i64 %1855
  %1857 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1850, ptr noundef @c__1, ptr noundef %1856, ptr noundef @c__1)
  store double %1857, ptr %57, align 8, !tbaa !11
  %1858 = load i64, ptr %46, align 8, !tbaa !9
  %1859 = sub nsw i64 %1858, 1
  store i64 %1859, ptr %36, align 8, !tbaa !9
  %1860 = load ptr, ptr %24, align 8, !tbaa !5
  %1861 = load i64, ptr %44, align 8, !tbaa !9
  %1862 = load i64, ptr %32, align 8, !tbaa !9
  %1863 = add nsw i64 %1861, %1862
  %1864 = getelementptr inbounds double, ptr %1860, i64 %1863
  %1865 = load ptr, ptr %25, align 8, !tbaa !5
  %1866 = load ptr, ptr %22, align 8, !tbaa !5
  %1867 = load i64, ptr %46, align 8, !tbaa !9
  %1868 = load i64, ptr %30, align 8, !tbaa !9
  %1869 = mul nsw i64 %1867, %1868
  %1870 = add nsw i64 %1869, 1
  %1871 = getelementptr inbounds double, ptr %1866, i64 %1870
  %1872 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1864, ptr noundef %1865, ptr noundef %1871, ptr noundef @c__1)
  store double %1872, ptr %58, align 8, !tbaa !11
  %1873 = load double, ptr %54, align 8, !tbaa !11
  %1874 = load ptr, ptr %24, align 8, !tbaa !5
  %1875 = load i64, ptr %44, align 8, !tbaa !9
  %1876 = load i64, ptr %46, align 8, !tbaa !9
  %1877 = load i64, ptr %32, align 8, !tbaa !9
  %1878 = mul nsw i64 %1876, %1877
  %1879 = add nsw i64 %1875, %1878
  %1880 = getelementptr inbounds double, ptr %1874, i64 %1879
  %1881 = load double, ptr %1880, align 8, !tbaa !11
  %1882 = load double, ptr %57, align 8, !tbaa !11
  %1883 = load double, ptr %54, align 8, !tbaa !11
  %1884 = load double, ptr %58, align 8, !tbaa !11
  %1885 = call double @llvm.fmuladd.f64(double %1883, double %1884, double %1882)
  %1886 = fsub double %1881, %1885
  %1887 = fmul double %1873, %1886
  %1888 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %1887, ptr %1888, align 16, !tbaa !11
  %1889 = load i64, ptr %44, align 8, !tbaa !9
  %1890 = sub nsw i64 %1889, 1
  store i64 %1890, ptr %36, align 8, !tbaa !9
  %1891 = load ptr, ptr %20, align 8, !tbaa !5
  %1892 = load i64, ptr %44, align 8, !tbaa !9
  %1893 = load i64, ptr %28, align 8, !tbaa !9
  %1894 = mul nsw i64 %1892, %1893
  %1895 = add nsw i64 %1894, 1
  %1896 = getelementptr inbounds double, ptr %1891, i64 %1895
  %1897 = load ptr, ptr %24, align 8, !tbaa !5
  %1898 = load i64, ptr %47, align 8, !tbaa !9
  %1899 = load i64, ptr %32, align 8, !tbaa !9
  %1900 = mul nsw i64 %1898, %1899
  %1901 = add nsw i64 %1900, 1
  %1902 = getelementptr inbounds double, ptr %1897, i64 %1901
  %1903 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1896, ptr noundef @c__1, ptr noundef %1902, ptr noundef @c__1)
  store double %1903, ptr %57, align 8, !tbaa !11
  %1904 = load i64, ptr %46, align 8, !tbaa !9
  %1905 = sub nsw i64 %1904, 1
  store i64 %1905, ptr %36, align 8, !tbaa !9
  %1906 = load ptr, ptr %24, align 8, !tbaa !5
  %1907 = load i64, ptr %44, align 8, !tbaa !9
  %1908 = load i64, ptr %32, align 8, !tbaa !9
  %1909 = add nsw i64 %1907, %1908
  %1910 = getelementptr inbounds double, ptr %1906, i64 %1909
  %1911 = load ptr, ptr %25, align 8, !tbaa !5
  %1912 = load ptr, ptr %22, align 8, !tbaa !5
  %1913 = load i64, ptr %47, align 8, !tbaa !9
  %1914 = load i64, ptr %30, align 8, !tbaa !9
  %1915 = mul nsw i64 %1913, %1914
  %1916 = add nsw i64 %1915, 1
  %1917 = getelementptr inbounds double, ptr %1912, i64 %1916
  %1918 = call double @f2c_ddot(ptr noundef %36, ptr noundef %1910, ptr noundef %1911, ptr noundef %1917, ptr noundef @c__1)
  store double %1918, ptr %58, align 8, !tbaa !11
  %1919 = load double, ptr %54, align 8, !tbaa !11
  %1920 = load ptr, ptr %24, align 8, !tbaa !5
  %1921 = load i64, ptr %44, align 8, !tbaa !9
  %1922 = load i64, ptr %47, align 8, !tbaa !9
  %1923 = load i64, ptr %32, align 8, !tbaa !9
  %1924 = mul nsw i64 %1922, %1923
  %1925 = add nsw i64 %1921, %1924
  %1926 = getelementptr inbounds double, ptr %1920, i64 %1925
  %1927 = load double, ptr %1926, align 8, !tbaa !11
  %1928 = load double, ptr %57, align 8, !tbaa !11
  %1929 = load double, ptr %54, align 8, !tbaa !11
  %1930 = load double, ptr %58, align 8, !tbaa !11
  %1931 = call double @llvm.fmuladd.f64(double %1929, double %1930, double %1928)
  %1932 = fsub double %1927, %1931
  %1933 = fmul double %1919, %1932
  %1934 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %1933, ptr %1934, align 8, !tbaa !11
  %1935 = load double, ptr %54, align 8, !tbaa !11
  %1936 = fneg double %1935
  %1937 = load ptr, ptr %20, align 8, !tbaa !5
  %1938 = load i64, ptr %44, align 8, !tbaa !9
  %1939 = load i64, ptr %44, align 8, !tbaa !9
  %1940 = load i64, ptr %28, align 8, !tbaa !9
  %1941 = mul nsw i64 %1939, %1940
  %1942 = add nsw i64 %1938, %1941
  %1943 = getelementptr inbounds double, ptr %1937, i64 %1942
  %1944 = load double, ptr %1943, align 8, !tbaa !11
  %1945 = fmul double %1936, %1944
  store double %1945, ptr %38, align 8, !tbaa !11
  %1946 = load ptr, ptr %22, align 8, !tbaa !5
  %1947 = load i64, ptr %46, align 8, !tbaa !9
  %1948 = load i64, ptr %46, align 8, !tbaa !9
  %1949 = load i64, ptr %30, align 8, !tbaa !9
  %1950 = mul nsw i64 %1948, %1949
  %1951 = add nsw i64 %1947, %1950
  %1952 = getelementptr inbounds double, ptr %1946, i64 %1951
  %1953 = load ptr, ptr %23, align 8, !tbaa !5
  %1954 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %1955 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %1956 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %56, ptr noundef @c_b26, ptr noundef %1952, ptr noundef %1953, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %1954, ptr noundef @c__2, ptr noundef %38, ptr noundef @c_b30, ptr noundef %1955, ptr noundef @c__2, ptr noundef %62, ptr noundef %61, ptr noundef %55)
  %1957 = load i64, ptr %55, align 8, !tbaa !9
  %1958 = icmp ne i64 %1957, 0
  br i1 %1958, label %1959, label %1961

1959:                                             ; preds = %1842
  %1960 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %1960, align 8, !tbaa !9
  br label %1961

1961:                                             ; preds = %1959, %1842
  %1962 = load double, ptr %62, align 8, !tbaa !11
  %1963 = fcmp une double %1962, 1.000000e+00
  br i1 %1963, label %1964, label %1988

1964:                                             ; preds = %1961
  %1965 = load ptr, ptr %19, align 8, !tbaa !5
  %1966 = load i64, ptr %1965, align 8, !tbaa !9
  store i64 %1966, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %1967

1967:                                             ; preds = %1980, %1964
  %1968 = load i64, ptr %40, align 8, !tbaa !9
  %1969 = load i64, ptr %36, align 8, !tbaa !9
  %1970 = icmp sle i64 %1968, %1969
  br i1 %1970, label %1971, label %1983

1971:                                             ; preds = %1967
  %1972 = load ptr, ptr %18, align 8, !tbaa !5
  %1973 = load ptr, ptr %24, align 8, !tbaa !5
  %1974 = load i64, ptr %40, align 8, !tbaa !9
  %1975 = load i64, ptr %32, align 8, !tbaa !9
  %1976 = mul nsw i64 %1974, %1975
  %1977 = add nsw i64 %1976, 1
  %1978 = getelementptr inbounds double, ptr %1973, i64 %1977
  %1979 = call i32 @f2c_dscal(ptr noundef %1972, ptr noundef %62, ptr noundef %1978, ptr noundef @c__1)
  br label %1980

1980:                                             ; preds = %1971
  %1981 = load i64, ptr %40, align 8, !tbaa !9
  %1982 = add nsw i64 %1981, 1
  store i64 %1982, ptr %40, align 8, !tbaa !9
  br label %1967, !llvm.loop !22

1983:                                             ; preds = %1967
  %1984 = load double, ptr %62, align 8, !tbaa !11
  %1985 = load ptr, ptr %26, align 8, !tbaa !5
  %1986 = load double, ptr %1985, align 8, !tbaa !11
  %1987 = fmul double %1986, %1984
  store double %1987, ptr %1985, align 8, !tbaa !11
  br label %1988

1988:                                             ; preds = %1983, %1961
  %1989 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %1990 = load double, ptr %1989, align 16, !tbaa !11
  %1991 = load ptr, ptr %24, align 8, !tbaa !5
  %1992 = load i64, ptr %44, align 8, !tbaa !9
  %1993 = load i64, ptr %46, align 8, !tbaa !9
  %1994 = load i64, ptr %32, align 8, !tbaa !9
  %1995 = mul nsw i64 %1993, %1994
  %1996 = add nsw i64 %1992, %1995
  %1997 = getelementptr inbounds double, ptr %1991, i64 %1996
  store double %1990, ptr %1997, align 8, !tbaa !11
  %1998 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %1999 = load double, ptr %1998, align 8, !tbaa !11
  %2000 = load ptr, ptr %24, align 8, !tbaa !5
  %2001 = load i64, ptr %44, align 8, !tbaa !9
  %2002 = load i64, ptr %47, align 8, !tbaa !9
  %2003 = load i64, ptr %32, align 8, !tbaa !9
  %2004 = mul nsw i64 %2002, %2003
  %2005 = add nsw i64 %2001, %2004
  %2006 = getelementptr inbounds double, ptr %2000, i64 %2005
  store double %1999, ptr %2006, align 8, !tbaa !11
  br label %2281

2007:                                             ; preds = %1838, %1834
  %2008 = load i64, ptr %46, align 8, !tbaa !9
  %2009 = load i64, ptr %47, align 8, !tbaa !9
  %2010 = icmp ne i64 %2008, %2009
  br i1 %2010, label %2011, label %2280

2011:                                             ; preds = %2007
  %2012 = load i64, ptr %44, align 8, !tbaa !9
  %2013 = load i64, ptr %45, align 8, !tbaa !9
  %2014 = icmp ne i64 %2012, %2013
  br i1 %2014, label %2015, label %2280

2015:                                             ; preds = %2011
  %2016 = load i64, ptr %44, align 8, !tbaa !9
  %2017 = sub nsw i64 %2016, 1
  store i64 %2017, ptr %36, align 8, !tbaa !9
  %2018 = load ptr, ptr %20, align 8, !tbaa !5
  %2019 = load i64, ptr %44, align 8, !tbaa !9
  %2020 = load i64, ptr %28, align 8, !tbaa !9
  %2021 = mul nsw i64 %2019, %2020
  %2022 = add nsw i64 %2021, 1
  %2023 = getelementptr inbounds double, ptr %2018, i64 %2022
  %2024 = load ptr, ptr %24, align 8, !tbaa !5
  %2025 = load i64, ptr %46, align 8, !tbaa !9
  %2026 = load i64, ptr %32, align 8, !tbaa !9
  %2027 = mul nsw i64 %2025, %2026
  %2028 = add nsw i64 %2027, 1
  %2029 = getelementptr inbounds double, ptr %2024, i64 %2028
  %2030 = call double @f2c_ddot(ptr noundef %36, ptr noundef %2023, ptr noundef @c__1, ptr noundef %2029, ptr noundef @c__1)
  store double %2030, ptr %57, align 8, !tbaa !11
  %2031 = load i64, ptr %46, align 8, !tbaa !9
  %2032 = sub nsw i64 %2031, 1
  store i64 %2032, ptr %36, align 8, !tbaa !9
  %2033 = load ptr, ptr %24, align 8, !tbaa !5
  %2034 = load i64, ptr %44, align 8, !tbaa !9
  %2035 = load i64, ptr %32, align 8, !tbaa !9
  %2036 = add nsw i64 %2034, %2035
  %2037 = getelementptr inbounds double, ptr %2033, i64 %2036
  %2038 = load ptr, ptr %25, align 8, !tbaa !5
  %2039 = load ptr, ptr %22, align 8, !tbaa !5
  %2040 = load i64, ptr %46, align 8, !tbaa !9
  %2041 = load i64, ptr %30, align 8, !tbaa !9
  %2042 = mul nsw i64 %2040, %2041
  %2043 = add nsw i64 %2042, 1
  %2044 = getelementptr inbounds double, ptr %2039, i64 %2043
  %2045 = call double @f2c_ddot(ptr noundef %36, ptr noundef %2037, ptr noundef %2038, ptr noundef %2044, ptr noundef @c__1)
  store double %2045, ptr %58, align 8, !tbaa !11
  %2046 = load ptr, ptr %24, align 8, !tbaa !5
  %2047 = load i64, ptr %44, align 8, !tbaa !9
  %2048 = load i64, ptr %46, align 8, !tbaa !9
  %2049 = load i64, ptr %32, align 8, !tbaa !9
  %2050 = mul nsw i64 %2048, %2049
  %2051 = add nsw i64 %2047, %2050
  %2052 = getelementptr inbounds double, ptr %2046, i64 %2051
  %2053 = load double, ptr %2052, align 8, !tbaa !11
  %2054 = load double, ptr %57, align 8, !tbaa !11
  %2055 = load double, ptr %54, align 8, !tbaa !11
  %2056 = load double, ptr %58, align 8, !tbaa !11
  %2057 = call double @llvm.fmuladd.f64(double %2055, double %2056, double %2054)
  %2058 = fsub double %2053, %2057
  %2059 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %2058, ptr %2059, align 16, !tbaa !11
  %2060 = load i64, ptr %44, align 8, !tbaa !9
  %2061 = sub nsw i64 %2060, 1
  store i64 %2061, ptr %36, align 8, !tbaa !9
  %2062 = load ptr, ptr %20, align 8, !tbaa !5
  %2063 = load i64, ptr %44, align 8, !tbaa !9
  %2064 = load i64, ptr %28, align 8, !tbaa !9
  %2065 = mul nsw i64 %2063, %2064
  %2066 = add nsw i64 %2065, 1
  %2067 = getelementptr inbounds double, ptr %2062, i64 %2066
  %2068 = load ptr, ptr %24, align 8, !tbaa !5
  %2069 = load i64, ptr %47, align 8, !tbaa !9
  %2070 = load i64, ptr %32, align 8, !tbaa !9
  %2071 = mul nsw i64 %2069, %2070
  %2072 = add nsw i64 %2071, 1
  %2073 = getelementptr inbounds double, ptr %2068, i64 %2072
  %2074 = call double @f2c_ddot(ptr noundef %36, ptr noundef %2067, ptr noundef @c__1, ptr noundef %2073, ptr noundef @c__1)
  store double %2074, ptr %57, align 8, !tbaa !11
  %2075 = load i64, ptr %46, align 8, !tbaa !9
  %2076 = sub nsw i64 %2075, 1
  store i64 %2076, ptr %36, align 8, !tbaa !9
  %2077 = load ptr, ptr %24, align 8, !tbaa !5
  %2078 = load i64, ptr %44, align 8, !tbaa !9
  %2079 = load i64, ptr %32, align 8, !tbaa !9
  %2080 = add nsw i64 %2078, %2079
  %2081 = getelementptr inbounds double, ptr %2077, i64 %2080
  %2082 = load ptr, ptr %25, align 8, !tbaa !5
  %2083 = load ptr, ptr %22, align 8, !tbaa !5
  %2084 = load i64, ptr %47, align 8, !tbaa !9
  %2085 = load i64, ptr %30, align 8, !tbaa !9
  %2086 = mul nsw i64 %2084, %2085
  %2087 = add nsw i64 %2086, 1
  %2088 = getelementptr inbounds double, ptr %2083, i64 %2087
  %2089 = call double @f2c_ddot(ptr noundef %36, ptr noundef %2081, ptr noundef %2082, ptr noundef %2088, ptr noundef @c__1)
  store double %2089, ptr %58, align 8, !tbaa !11
  %2090 = load ptr, ptr %24, align 8, !tbaa !5
  %2091 = load i64, ptr %44, align 8, !tbaa !9
  %2092 = load i64, ptr %47, align 8, !tbaa !9
  %2093 = load i64, ptr %32, align 8, !tbaa !9
  %2094 = mul nsw i64 %2092, %2093
  %2095 = add nsw i64 %2091, %2094
  %2096 = getelementptr inbounds double, ptr %2090, i64 %2095
  %2097 = load double, ptr %2096, align 8, !tbaa !11
  %2098 = load double, ptr %57, align 8, !tbaa !11
  %2099 = load double, ptr %54, align 8, !tbaa !11
  %2100 = load double, ptr %58, align 8, !tbaa !11
  %2101 = call double @llvm.fmuladd.f64(double %2099, double %2100, double %2098)
  %2102 = fsub double %2097, %2101
  %2103 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 2
  store double %2102, ptr %2103, align 16, !tbaa !11
  %2104 = load i64, ptr %44, align 8, !tbaa !9
  %2105 = sub nsw i64 %2104, 1
  store i64 %2105, ptr %36, align 8, !tbaa !9
  %2106 = load ptr, ptr %20, align 8, !tbaa !5
  %2107 = load i64, ptr %45, align 8, !tbaa !9
  %2108 = load i64, ptr %28, align 8, !tbaa !9
  %2109 = mul nsw i64 %2107, %2108
  %2110 = add nsw i64 %2109, 1
  %2111 = getelementptr inbounds double, ptr %2106, i64 %2110
  %2112 = load ptr, ptr %24, align 8, !tbaa !5
  %2113 = load i64, ptr %46, align 8, !tbaa !9
  %2114 = load i64, ptr %32, align 8, !tbaa !9
  %2115 = mul nsw i64 %2113, %2114
  %2116 = add nsw i64 %2115, 1
  %2117 = getelementptr inbounds double, ptr %2112, i64 %2116
  %2118 = call double @f2c_ddot(ptr noundef %36, ptr noundef %2111, ptr noundef @c__1, ptr noundef %2117, ptr noundef @c__1)
  store double %2118, ptr %57, align 8, !tbaa !11
  %2119 = load i64, ptr %46, align 8, !tbaa !9
  %2120 = sub nsw i64 %2119, 1
  store i64 %2120, ptr %36, align 8, !tbaa !9
  %2121 = load ptr, ptr %24, align 8, !tbaa !5
  %2122 = load i64, ptr %45, align 8, !tbaa !9
  %2123 = load i64, ptr %32, align 8, !tbaa !9
  %2124 = add nsw i64 %2122, %2123
  %2125 = getelementptr inbounds double, ptr %2121, i64 %2124
  %2126 = load ptr, ptr %25, align 8, !tbaa !5
  %2127 = load ptr, ptr %22, align 8, !tbaa !5
  %2128 = load i64, ptr %46, align 8, !tbaa !9
  %2129 = load i64, ptr %30, align 8, !tbaa !9
  %2130 = mul nsw i64 %2128, %2129
  %2131 = add nsw i64 %2130, 1
  %2132 = getelementptr inbounds double, ptr %2127, i64 %2131
  %2133 = call double @f2c_ddot(ptr noundef %36, ptr noundef %2125, ptr noundef %2126, ptr noundef %2132, ptr noundef @c__1)
  store double %2133, ptr %58, align 8, !tbaa !11
  %2134 = load ptr, ptr %24, align 8, !tbaa !5
  %2135 = load i64, ptr %45, align 8, !tbaa !9
  %2136 = load i64, ptr %46, align 8, !tbaa !9
  %2137 = load i64, ptr %32, align 8, !tbaa !9
  %2138 = mul nsw i64 %2136, %2137
  %2139 = add nsw i64 %2135, %2138
  %2140 = getelementptr inbounds double, ptr %2134, i64 %2139
  %2141 = load double, ptr %2140, align 8, !tbaa !11
  %2142 = load double, ptr %57, align 8, !tbaa !11
  %2143 = load double, ptr %54, align 8, !tbaa !11
  %2144 = load double, ptr %58, align 8, !tbaa !11
  %2145 = call double @llvm.fmuladd.f64(double %2143, double %2144, double %2142)
  %2146 = fsub double %2141, %2145
  %2147 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %2146, ptr %2147, align 8, !tbaa !11
  %2148 = load i64, ptr %44, align 8, !tbaa !9
  %2149 = sub nsw i64 %2148, 1
  store i64 %2149, ptr %36, align 8, !tbaa !9
  %2150 = load ptr, ptr %20, align 8, !tbaa !5
  %2151 = load i64, ptr %45, align 8, !tbaa !9
  %2152 = load i64, ptr %28, align 8, !tbaa !9
  %2153 = mul nsw i64 %2151, %2152
  %2154 = add nsw i64 %2153, 1
  %2155 = getelementptr inbounds double, ptr %2150, i64 %2154
  %2156 = load ptr, ptr %24, align 8, !tbaa !5
  %2157 = load i64, ptr %47, align 8, !tbaa !9
  %2158 = load i64, ptr %32, align 8, !tbaa !9
  %2159 = mul nsw i64 %2157, %2158
  %2160 = add nsw i64 %2159, 1
  %2161 = getelementptr inbounds double, ptr %2156, i64 %2160
  %2162 = call double @f2c_ddot(ptr noundef %36, ptr noundef %2155, ptr noundef @c__1, ptr noundef %2161, ptr noundef @c__1)
  store double %2162, ptr %57, align 8, !tbaa !11
  %2163 = load i64, ptr %46, align 8, !tbaa !9
  %2164 = sub nsw i64 %2163, 1
  store i64 %2164, ptr %36, align 8, !tbaa !9
  %2165 = load ptr, ptr %24, align 8, !tbaa !5
  %2166 = load i64, ptr %45, align 8, !tbaa !9
  %2167 = load i64, ptr %32, align 8, !tbaa !9
  %2168 = add nsw i64 %2166, %2167
  %2169 = getelementptr inbounds double, ptr %2165, i64 %2168
  %2170 = load ptr, ptr %25, align 8, !tbaa !5
  %2171 = load ptr, ptr %22, align 8, !tbaa !5
  %2172 = load i64, ptr %47, align 8, !tbaa !9
  %2173 = load i64, ptr %30, align 8, !tbaa !9
  %2174 = mul nsw i64 %2172, %2173
  %2175 = add nsw i64 %2174, 1
  %2176 = getelementptr inbounds double, ptr %2171, i64 %2175
  %2177 = call double @f2c_ddot(ptr noundef %36, ptr noundef %2169, ptr noundef %2170, ptr noundef %2176, ptr noundef @c__1)
  store double %2177, ptr %58, align 8, !tbaa !11
  %2178 = load ptr, ptr %24, align 8, !tbaa !5
  %2179 = load i64, ptr %45, align 8, !tbaa !9
  %2180 = load i64, ptr %47, align 8, !tbaa !9
  %2181 = load i64, ptr %32, align 8, !tbaa !9
  %2182 = mul nsw i64 %2180, %2181
  %2183 = add nsw i64 %2179, %2182
  %2184 = getelementptr inbounds double, ptr %2178, i64 %2183
  %2185 = load double, ptr %2184, align 8, !tbaa !11
  %2186 = load double, ptr %57, align 8, !tbaa !11
  %2187 = load double, ptr %54, align 8, !tbaa !11
  %2188 = load double, ptr %58, align 8, !tbaa !11
  %2189 = call double @llvm.fmuladd.f64(double %2187, double %2188, double %2186)
  %2190 = fsub double %2185, %2189
  %2191 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 3
  store double %2190, ptr %2191, align 8, !tbaa !11
  %2192 = load ptr, ptr %17, align 8, !tbaa !5
  %2193 = load ptr, ptr %20, align 8, !tbaa !5
  %2194 = load i64, ptr %44, align 8, !tbaa !9
  %2195 = load i64, ptr %44, align 8, !tbaa !9
  %2196 = load i64, ptr %28, align 8, !tbaa !9
  %2197 = mul nsw i64 %2195, %2196
  %2198 = add nsw i64 %2194, %2197
  %2199 = getelementptr inbounds double, ptr %2193, i64 %2198
  %2200 = load ptr, ptr %21, align 8, !tbaa !5
  %2201 = load ptr, ptr %22, align 8, !tbaa !5
  %2202 = load i64, ptr %46, align 8, !tbaa !9
  %2203 = load i64, ptr %46, align 8, !tbaa !9
  %2204 = load i64, ptr %30, align 8, !tbaa !9
  %2205 = mul nsw i64 %2203, %2204
  %2206 = add nsw i64 %2202, %2205
  %2207 = getelementptr inbounds double, ptr %2201, i64 %2206
  %2208 = load ptr, ptr %23, align 8, !tbaa !5
  %2209 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %2210 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %2211 = call i32 @dlasy2_(ptr noundef @c_true, ptr noundef @c_false, ptr noundef %2192, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %2199, ptr noundef %2200, ptr noundef %2207, ptr noundef %2208, ptr noundef %2209, ptr noundef @c__2, ptr noundef %62, ptr noundef %2210, ptr noundef @c__2, ptr noundef %61, ptr noundef %55)
  %2212 = load i64, ptr %55, align 8, !tbaa !9
  %2213 = icmp ne i64 %2212, 0
  br i1 %2213, label %2214, label %2216

2214:                                             ; preds = %2015
  %2215 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %2215, align 8, !tbaa !9
  br label %2216

2216:                                             ; preds = %2214, %2015
  %2217 = load double, ptr %62, align 8, !tbaa !11
  %2218 = fcmp une double %2217, 1.000000e+00
  br i1 %2218, label %2219, label %2243

2219:                                             ; preds = %2216
  %2220 = load ptr, ptr %19, align 8, !tbaa !5
  %2221 = load i64, ptr %2220, align 8, !tbaa !9
  store i64 %2221, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %2222

2222:                                             ; preds = %2235, %2219
  %2223 = load i64, ptr %40, align 8, !tbaa !9
  %2224 = load i64, ptr %36, align 8, !tbaa !9
  %2225 = icmp sle i64 %2223, %2224
  br i1 %2225, label %2226, label %2238

2226:                                             ; preds = %2222
  %2227 = load ptr, ptr %18, align 8, !tbaa !5
  %2228 = load ptr, ptr %24, align 8, !tbaa !5
  %2229 = load i64, ptr %40, align 8, !tbaa !9
  %2230 = load i64, ptr %32, align 8, !tbaa !9
  %2231 = mul nsw i64 %2229, %2230
  %2232 = add nsw i64 %2231, 1
  %2233 = getelementptr inbounds double, ptr %2228, i64 %2232
  %2234 = call i32 @f2c_dscal(ptr noundef %2227, ptr noundef %62, ptr noundef %2233, ptr noundef @c__1)
  br label %2235

2235:                                             ; preds = %2226
  %2236 = load i64, ptr %40, align 8, !tbaa !9
  %2237 = add nsw i64 %2236, 1
  store i64 %2237, ptr %40, align 8, !tbaa !9
  br label %2222, !llvm.loop !23

2238:                                             ; preds = %2222
  %2239 = load double, ptr %62, align 8, !tbaa !11
  %2240 = load ptr, ptr %26, align 8, !tbaa !5
  %2241 = load double, ptr %2240, align 8, !tbaa !11
  %2242 = fmul double %2241, %2239
  store double %2242, ptr %2240, align 8, !tbaa !11
  br label %2243

2243:                                             ; preds = %2238, %2216
  %2244 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %2245 = load double, ptr %2244, align 16, !tbaa !11
  %2246 = load ptr, ptr %24, align 8, !tbaa !5
  %2247 = load i64, ptr %44, align 8, !tbaa !9
  %2248 = load i64, ptr %46, align 8, !tbaa !9
  %2249 = load i64, ptr %32, align 8, !tbaa !9
  %2250 = mul nsw i64 %2248, %2249
  %2251 = add nsw i64 %2247, %2250
  %2252 = getelementptr inbounds double, ptr %2246, i64 %2251
  store double %2245, ptr %2252, align 8, !tbaa !11
  %2253 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 2
  %2254 = load double, ptr %2253, align 16, !tbaa !11
  %2255 = load ptr, ptr %24, align 8, !tbaa !5
  %2256 = load i64, ptr %44, align 8, !tbaa !9
  %2257 = load i64, ptr %47, align 8, !tbaa !9
  %2258 = load i64, ptr %32, align 8, !tbaa !9
  %2259 = mul nsw i64 %2257, %2258
  %2260 = add nsw i64 %2256, %2259
  %2261 = getelementptr inbounds double, ptr %2255, i64 %2260
  store double %2254, ptr %2261, align 8, !tbaa !11
  %2262 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %2263 = load double, ptr %2262, align 8, !tbaa !11
  %2264 = load ptr, ptr %24, align 8, !tbaa !5
  %2265 = load i64, ptr %45, align 8, !tbaa !9
  %2266 = load i64, ptr %46, align 8, !tbaa !9
  %2267 = load i64, ptr %32, align 8, !tbaa !9
  %2268 = mul nsw i64 %2266, %2267
  %2269 = add nsw i64 %2265, %2268
  %2270 = getelementptr inbounds double, ptr %2264, i64 %2269
  store double %2263, ptr %2270, align 8, !tbaa !11
  %2271 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 3
  %2272 = load double, ptr %2271, align 8, !tbaa !11
  %2273 = load ptr, ptr %24, align 8, !tbaa !5
  %2274 = load i64, ptr %45, align 8, !tbaa !9
  %2275 = load i64, ptr %47, align 8, !tbaa !9
  %2276 = load i64, ptr %32, align 8, !tbaa !9
  %2277 = mul nsw i64 %2275, %2276
  %2278 = add nsw i64 %2274, %2277
  %2279 = getelementptr inbounds double, ptr %2273, i64 %2278
  store double %2272, ptr %2279, align 8, !tbaa !11
  br label %2280

2280:                                             ; preds = %2243, %2011, %2007
  br label %2281

2281:                                             ; preds = %2280, %1988
  br label %2282

2282:                                             ; preds = %2281, %1815
  br label %2283

2283:                                             ; preds = %2282, %1655
  br label %2284

2284:                                             ; preds = %2283, %1474
  br label %2285

2285:                                             ; preds = %2284
  %2286 = load i64, ptr %41, align 8, !tbaa !9
  %2287 = add nsw i64 %2286, 1
  store i64 %2287, ptr %41, align 8, !tbaa !9
  br label %1466, !llvm.loop !24

2288:                                             ; preds = %1466
  br label %2289

2289:                                             ; preds = %2288, %1431
  br label %2290

2290:                                             ; preds = %2289
  %2291 = load i64, ptr %42, align 8, !tbaa !9
  %2292 = add nsw i64 %2291, 1
  store i64 %2292, ptr %42, align 8, !tbaa !9
  br label %1423, !llvm.loop !25

2293:                                             ; preds = %1423
  br label %4854

2294:                                             ; preds = %1417, %1414
  %2295 = load i64, ptr %64, align 8, !tbaa !9
  %2296 = icmp ne i64 %2295, 0
  br i1 %2296, label %3443, label %2297

2297:                                             ; preds = %2294
  %2298 = load i64, ptr %65, align 8, !tbaa !9
  %2299 = icmp ne i64 %2298, 0
  br i1 %2299, label %3443, label %2300

2300:                                             ; preds = %2297
  %2301 = load ptr, ptr %19, align 8, !tbaa !5
  %2302 = load i64, ptr %2301, align 8, !tbaa !9
  store i64 %2302, ptr %60, align 8, !tbaa !9
  %2303 = load ptr, ptr %19, align 8, !tbaa !5
  %2304 = load i64, ptr %2303, align 8, !tbaa !9
  store i64 %2304, ptr %42, align 8, !tbaa !9
  br label %2305

2305:                                             ; preds = %3439, %2300
  %2306 = load i64, ptr %42, align 8, !tbaa !9
  %2307 = icmp sge i64 %2306, 1
  br i1 %2307, label %2308, label %3442

2308:                                             ; preds = %2305
  %2309 = load i64, ptr %42, align 8, !tbaa !9
  %2310 = load i64, ptr %60, align 8, !tbaa !9
  %2311 = icmp sgt i64 %2309, %2310
  br i1 %2311, label %2312, label %2313

2312:                                             ; preds = %2308
  br label %3438

2313:                                             ; preds = %2308
  %2314 = load i64, ptr %42, align 8, !tbaa !9
  %2315 = icmp eq i64 %2314, 1
  br i1 %2315, label %2316, label %2319

2316:                                             ; preds = %2313
  %2317 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2317, ptr %46, align 8, !tbaa !9
  %2318 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2318, ptr %47, align 8, !tbaa !9
  br label %2342

2319:                                             ; preds = %2313
  %2320 = load ptr, ptr %22, align 8, !tbaa !5
  %2321 = load i64, ptr %42, align 8, !tbaa !9
  %2322 = load i64, ptr %42, align 8, !tbaa !9
  %2323 = sub nsw i64 %2322, 1
  %2324 = load i64, ptr %30, align 8, !tbaa !9
  %2325 = mul nsw i64 %2323, %2324
  %2326 = add nsw i64 %2321, %2325
  %2327 = getelementptr inbounds double, ptr %2320, i64 %2326
  %2328 = load double, ptr %2327, align 8, !tbaa !11
  %2329 = fcmp une double %2328, 0.000000e+00
  br i1 %2329, label %2330, label %2336

2330:                                             ; preds = %2319
  %2331 = load i64, ptr %42, align 8, !tbaa !9
  %2332 = sub nsw i64 %2331, 1
  store i64 %2332, ptr %46, align 8, !tbaa !9
  %2333 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2333, ptr %47, align 8, !tbaa !9
  %2334 = load i64, ptr %42, align 8, !tbaa !9
  %2335 = sub nsw i64 %2334, 2
  store i64 %2335, ptr %60, align 8, !tbaa !9
  br label %2341

2336:                                             ; preds = %2319
  %2337 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2337, ptr %46, align 8, !tbaa !9
  %2338 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2338, ptr %47, align 8, !tbaa !9
  %2339 = load i64, ptr %42, align 8, !tbaa !9
  %2340 = sub nsw i64 %2339, 1
  store i64 %2340, ptr %60, align 8, !tbaa !9
  br label %2341

2341:                                             ; preds = %2336, %2330
  br label %2342

2342:                                             ; preds = %2341, %2316
  store i64 1, ptr %59, align 8, !tbaa !9
  %2343 = load ptr, ptr %18, align 8, !tbaa !5
  %2344 = load i64, ptr %2343, align 8, !tbaa !9
  store i64 %2344, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %2345

2345:                                             ; preds = %3434, %2342
  %2346 = load i64, ptr %41, align 8, !tbaa !9
  %2347 = load i64, ptr %34, align 8, !tbaa !9
  %2348 = icmp sle i64 %2346, %2347
  br i1 %2348, label %2349, label %3437

2349:                                             ; preds = %2345
  %2350 = load i64, ptr %41, align 8, !tbaa !9
  %2351 = load i64, ptr %59, align 8, !tbaa !9
  %2352 = icmp slt i64 %2350, %2351
  br i1 %2352, label %2353, label %2354

2353:                                             ; preds = %2349
  br label %3433

2354:                                             ; preds = %2349
  %2355 = load i64, ptr %41, align 8, !tbaa !9
  %2356 = load ptr, ptr %18, align 8, !tbaa !5
  %2357 = load i64, ptr %2356, align 8, !tbaa !9
  %2358 = icmp eq i64 %2355, %2357
  br i1 %2358, label %2359, label %2362

2359:                                             ; preds = %2354
  %2360 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2360, ptr %44, align 8, !tbaa !9
  %2361 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2361, ptr %45, align 8, !tbaa !9
  br label %2385

2362:                                             ; preds = %2354
  %2363 = load ptr, ptr %20, align 8, !tbaa !5
  %2364 = load i64, ptr %41, align 8, !tbaa !9
  %2365 = add nsw i64 %2364, 1
  %2366 = load i64, ptr %41, align 8, !tbaa !9
  %2367 = load i64, ptr %28, align 8, !tbaa !9
  %2368 = mul nsw i64 %2366, %2367
  %2369 = add nsw i64 %2365, %2368
  %2370 = getelementptr inbounds double, ptr %2363, i64 %2369
  %2371 = load double, ptr %2370, align 8, !tbaa !11
  %2372 = fcmp une double %2371, 0.000000e+00
  br i1 %2372, label %2373, label %2379

2373:                                             ; preds = %2362
  %2374 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2374, ptr %44, align 8, !tbaa !9
  %2375 = load i64, ptr %41, align 8, !tbaa !9
  %2376 = add nsw i64 %2375, 1
  store i64 %2376, ptr %45, align 8, !tbaa !9
  %2377 = load i64, ptr %41, align 8, !tbaa !9
  %2378 = add nsw i64 %2377, 2
  store i64 %2378, ptr %59, align 8, !tbaa !9
  br label %2384

2379:                                             ; preds = %2362
  %2380 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2380, ptr %44, align 8, !tbaa !9
  %2381 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2381, ptr %45, align 8, !tbaa !9
  %2382 = load i64, ptr %41, align 8, !tbaa !9
  %2383 = add nsw i64 %2382, 1
  store i64 %2383, ptr %59, align 8, !tbaa !9
  br label %2384

2384:                                             ; preds = %2379, %2373
  br label %2385

2385:                                             ; preds = %2384, %2359
  %2386 = load i64, ptr %46, align 8, !tbaa !9
  %2387 = load i64, ptr %47, align 8, !tbaa !9
  %2388 = icmp eq i64 %2386, %2387
  br i1 %2388, label %2389, label %2574

2389:                                             ; preds = %2385
  %2390 = load i64, ptr %44, align 8, !tbaa !9
  %2391 = load i64, ptr %45, align 8, !tbaa !9
  %2392 = icmp eq i64 %2390, %2391
  br i1 %2392, label %2393, label %2574

2393:                                             ; preds = %2389
  %2394 = load i64, ptr %44, align 8, !tbaa !9
  %2395 = sub nsw i64 %2394, 1
  store i64 %2395, ptr %35, align 8, !tbaa !9
  %2396 = load ptr, ptr %20, align 8, !tbaa !5
  %2397 = load i64, ptr %44, align 8, !tbaa !9
  %2398 = load i64, ptr %28, align 8, !tbaa !9
  %2399 = mul nsw i64 %2397, %2398
  %2400 = add nsw i64 %2399, 1
  %2401 = getelementptr inbounds double, ptr %2396, i64 %2400
  %2402 = load ptr, ptr %24, align 8, !tbaa !5
  %2403 = load i64, ptr %46, align 8, !tbaa !9
  %2404 = load i64, ptr %32, align 8, !tbaa !9
  %2405 = mul nsw i64 %2403, %2404
  %2406 = add nsw i64 %2405, 1
  %2407 = getelementptr inbounds double, ptr %2402, i64 %2406
  %2408 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2401, ptr noundef @c__1, ptr noundef %2407, ptr noundef @c__1)
  store double %2408, ptr %57, align 8, !tbaa !11
  %2409 = load ptr, ptr %19, align 8, !tbaa !5
  %2410 = load i64, ptr %2409, align 8, !tbaa !9
  %2411 = load i64, ptr %46, align 8, !tbaa !9
  %2412 = sub nsw i64 %2410, %2411
  store i64 %2412, ptr %35, align 8, !tbaa !9
  %2413 = load i64, ptr %46, align 8, !tbaa !9
  %2414 = add nsw i64 %2413, 1
  store i64 %2414, ptr %36, align 8, !tbaa !9
  %2415 = load i64, ptr %46, align 8, !tbaa !9
  %2416 = add nsw i64 %2415, 1
  store i64 %2416, ptr %37, align 8, !tbaa !9
  %2417 = load ptr, ptr %24, align 8, !tbaa !5
  %2418 = load i64, ptr %44, align 8, !tbaa !9
  %2419 = load i64, ptr %36, align 8, !tbaa !9
  %2420 = load ptr, ptr %19, align 8, !tbaa !5
  %2421 = load i64, ptr %2420, align 8, !tbaa !9
  %2422 = icmp sle i64 %2419, %2421
  br i1 %2422, label %2423, label %2425

2423:                                             ; preds = %2393
  %2424 = load i64, ptr %36, align 8, !tbaa !9
  br label %2428

2425:                                             ; preds = %2393
  %2426 = load ptr, ptr %19, align 8, !tbaa !5
  %2427 = load i64, ptr %2426, align 8, !tbaa !9
  br label %2428

2428:                                             ; preds = %2425, %2423
  %2429 = phi i64 [ %2424, %2423 ], [ %2427, %2425 ]
  %2430 = load i64, ptr %32, align 8, !tbaa !9
  %2431 = mul nsw i64 %2429, %2430
  %2432 = add nsw i64 %2418, %2431
  %2433 = getelementptr inbounds double, ptr %2417, i64 %2432
  %2434 = load ptr, ptr %25, align 8, !tbaa !5
  %2435 = load ptr, ptr %22, align 8, !tbaa !5
  %2436 = load i64, ptr %46, align 8, !tbaa !9
  %2437 = load i64, ptr %37, align 8, !tbaa !9
  %2438 = load ptr, ptr %19, align 8, !tbaa !5
  %2439 = load i64, ptr %2438, align 8, !tbaa !9
  %2440 = icmp sle i64 %2437, %2439
  br i1 %2440, label %2441, label %2443

2441:                                             ; preds = %2428
  %2442 = load i64, ptr %37, align 8, !tbaa !9
  br label %2446

2443:                                             ; preds = %2428
  %2444 = load ptr, ptr %19, align 8, !tbaa !5
  %2445 = load i64, ptr %2444, align 8, !tbaa !9
  br label %2446

2446:                                             ; preds = %2443, %2441
  %2447 = phi i64 [ %2442, %2441 ], [ %2445, %2443 ]
  %2448 = load i64, ptr %30, align 8, !tbaa !9
  %2449 = mul nsw i64 %2447, %2448
  %2450 = add nsw i64 %2436, %2449
  %2451 = getelementptr inbounds double, ptr %2435, i64 %2450
  %2452 = load ptr, ptr %23, align 8, !tbaa !5
  %2453 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2433, ptr noundef %2434, ptr noundef %2451, ptr noundef %2452)
  store double %2453, ptr %58, align 8, !tbaa !11
  %2454 = load ptr, ptr %24, align 8, !tbaa !5
  %2455 = load i64, ptr %44, align 8, !tbaa !9
  %2456 = load i64, ptr %46, align 8, !tbaa !9
  %2457 = load i64, ptr %32, align 8, !tbaa !9
  %2458 = mul nsw i64 %2456, %2457
  %2459 = add nsw i64 %2455, %2458
  %2460 = getelementptr inbounds double, ptr %2454, i64 %2459
  %2461 = load double, ptr %2460, align 8, !tbaa !11
  %2462 = load double, ptr %57, align 8, !tbaa !11
  %2463 = load double, ptr %54, align 8, !tbaa !11
  %2464 = load double, ptr %58, align 8, !tbaa !11
  %2465 = call double @llvm.fmuladd.f64(double %2463, double %2464, double %2462)
  %2466 = fsub double %2461, %2465
  %2467 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %2466, ptr %2467, align 16, !tbaa !11
  store double 1.000000e+00, ptr %62, align 8, !tbaa !11
  %2468 = load ptr, ptr %20, align 8, !tbaa !5
  %2469 = load i64, ptr %44, align 8, !tbaa !9
  %2470 = load i64, ptr %44, align 8, !tbaa !9
  %2471 = load i64, ptr %28, align 8, !tbaa !9
  %2472 = mul nsw i64 %2470, %2471
  %2473 = add nsw i64 %2469, %2472
  %2474 = getelementptr inbounds double, ptr %2468, i64 %2473
  %2475 = load double, ptr %2474, align 8, !tbaa !11
  %2476 = load double, ptr %54, align 8, !tbaa !11
  %2477 = load ptr, ptr %22, align 8, !tbaa !5
  %2478 = load i64, ptr %46, align 8, !tbaa !9
  %2479 = load i64, ptr %46, align 8, !tbaa !9
  %2480 = load i64, ptr %30, align 8, !tbaa !9
  %2481 = mul nsw i64 %2479, %2480
  %2482 = add nsw i64 %2478, %2481
  %2483 = getelementptr inbounds double, ptr %2477, i64 %2482
  %2484 = load double, ptr %2483, align 8, !tbaa !11
  %2485 = call double @llvm.fmuladd.f64(double %2476, double %2484, double %2475)
  store double %2485, ptr %48, align 8, !tbaa !11
  %2486 = load double, ptr %48, align 8, !tbaa !11
  %2487 = fcmp oge double %2486, 0.000000e+00
  br i1 %2487, label %2488, label %2490

2488:                                             ; preds = %2446
  %2489 = load double, ptr %48, align 8, !tbaa !11
  br label %2493

2490:                                             ; preds = %2446
  %2491 = load double, ptr %48, align 8, !tbaa !11
  %2492 = fneg double %2491
  br label %2493

2493:                                             ; preds = %2490, %2488
  %2494 = phi double [ %2489, %2488 ], [ %2492, %2490 ]
  store double %2494, ptr %50, align 8, !tbaa !11
  %2495 = load double, ptr %50, align 8, !tbaa !11
  %2496 = load double, ptr %56, align 8, !tbaa !11
  %2497 = fcmp ole double %2495, %2496
  br i1 %2497, label %2498, label %2502

2498:                                             ; preds = %2493
  %2499 = load double, ptr %56, align 8, !tbaa !11
  store double %2499, ptr %48, align 8, !tbaa !11
  %2500 = load double, ptr %56, align 8, !tbaa !11
  store double %2500, ptr %50, align 8, !tbaa !11
  %2501 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %2501, align 8, !tbaa !9
  br label %2502

2502:                                             ; preds = %2498, %2493
  %2503 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %2504 = load double, ptr %2503, align 16, !tbaa !11
  %2505 = fcmp oge double %2504, 0.000000e+00
  br i1 %2505, label %2506, label %2509

2506:                                             ; preds = %2502
  %2507 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %2508 = load double, ptr %2507, align 16, !tbaa !11
  br label %2513

2509:                                             ; preds = %2502
  %2510 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %2511 = load double, ptr %2510, align 16, !tbaa !11
  %2512 = fneg double %2511
  br label %2513

2513:                                             ; preds = %2509, %2506
  %2514 = phi double [ %2508, %2506 ], [ %2512, %2509 ]
  store double %2514, ptr %49, align 8, !tbaa !11
  %2515 = load double, ptr %50, align 8, !tbaa !11
  %2516 = fcmp olt double %2515, 1.000000e+00
  br i1 %2516, label %2517, label %2530

2517:                                             ; preds = %2513
  %2518 = load double, ptr %49, align 8, !tbaa !11
  %2519 = fcmp ogt double %2518, 1.000000e+00
  br i1 %2519, label %2520, label %2530

2520:                                             ; preds = %2517
  %2521 = load double, ptr %49, align 8, !tbaa !11
  %2522 = load double, ptr %63, align 8, !tbaa !11
  %2523 = load double, ptr %50, align 8, !tbaa !11
  %2524 = fmul double %2522, %2523
  %2525 = fcmp ogt double %2521, %2524
  br i1 %2525, label %2526, label %2529

2526:                                             ; preds = %2520
  %2527 = load double, ptr %49, align 8, !tbaa !11
  %2528 = fdiv double 1.000000e+00, %2527
  store double %2528, ptr %62, align 8, !tbaa !11
  br label %2529

2529:                                             ; preds = %2526, %2520
  br label %2530

2530:                                             ; preds = %2529, %2517, %2513
  %2531 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %2532 = load double, ptr %2531, align 16, !tbaa !11
  %2533 = load double, ptr %62, align 8, !tbaa !11
  %2534 = fmul double %2532, %2533
  %2535 = load double, ptr %48, align 8, !tbaa !11
  %2536 = fdiv double %2534, %2535
  %2537 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  store double %2536, ptr %2537, align 16, !tbaa !11
  %2538 = load double, ptr %62, align 8, !tbaa !11
  %2539 = fcmp une double %2538, 1.000000e+00
  br i1 %2539, label %2540, label %2564

2540:                                             ; preds = %2530
  %2541 = load ptr, ptr %19, align 8, !tbaa !5
  %2542 = load i64, ptr %2541, align 8, !tbaa !9
  store i64 %2542, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %2543

2543:                                             ; preds = %2556, %2540
  %2544 = load i64, ptr %40, align 8, !tbaa !9
  %2545 = load i64, ptr %35, align 8, !tbaa !9
  %2546 = icmp sle i64 %2544, %2545
  br i1 %2546, label %2547, label %2559

2547:                                             ; preds = %2543
  %2548 = load ptr, ptr %18, align 8, !tbaa !5
  %2549 = load ptr, ptr %24, align 8, !tbaa !5
  %2550 = load i64, ptr %40, align 8, !tbaa !9
  %2551 = load i64, ptr %32, align 8, !tbaa !9
  %2552 = mul nsw i64 %2550, %2551
  %2553 = add nsw i64 %2552, 1
  %2554 = getelementptr inbounds double, ptr %2549, i64 %2553
  %2555 = call i32 @f2c_dscal(ptr noundef %2548, ptr noundef %62, ptr noundef %2554, ptr noundef @c__1)
  br label %2556

2556:                                             ; preds = %2547
  %2557 = load i64, ptr %40, align 8, !tbaa !9
  %2558 = add nsw i64 %2557, 1
  store i64 %2558, ptr %40, align 8, !tbaa !9
  br label %2543, !llvm.loop !26

2559:                                             ; preds = %2543
  %2560 = load double, ptr %62, align 8, !tbaa !11
  %2561 = load ptr, ptr %26, align 8, !tbaa !5
  %2562 = load double, ptr %2561, align 8, !tbaa !11
  %2563 = fmul double %2562, %2560
  store double %2563, ptr %2561, align 8, !tbaa !11
  br label %2564

2564:                                             ; preds = %2559, %2530
  %2565 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %2566 = load double, ptr %2565, align 16, !tbaa !11
  %2567 = load ptr, ptr %24, align 8, !tbaa !5
  %2568 = load i64, ptr %44, align 8, !tbaa !9
  %2569 = load i64, ptr %46, align 8, !tbaa !9
  %2570 = load i64, ptr %32, align 8, !tbaa !9
  %2571 = mul nsw i64 %2569, %2570
  %2572 = add nsw i64 %2568, %2571
  %2573 = getelementptr inbounds double, ptr %2567, i64 %2572
  store double %2566, ptr %2573, align 8, !tbaa !11
  br label %3432

2574:                                             ; preds = %2389, %2385
  %2575 = load i64, ptr %46, align 8, !tbaa !9
  %2576 = load i64, ptr %47, align 8, !tbaa !9
  %2577 = icmp eq i64 %2575, %2576
  br i1 %2577, label %2578, label %2803

2578:                                             ; preds = %2574
  %2579 = load i64, ptr %44, align 8, !tbaa !9
  %2580 = load i64, ptr %45, align 8, !tbaa !9
  %2581 = icmp ne i64 %2579, %2580
  br i1 %2581, label %2582, label %2803

2582:                                             ; preds = %2578
  %2583 = load i64, ptr %44, align 8, !tbaa !9
  %2584 = sub nsw i64 %2583, 1
  store i64 %2584, ptr %35, align 8, !tbaa !9
  %2585 = load ptr, ptr %20, align 8, !tbaa !5
  %2586 = load i64, ptr %44, align 8, !tbaa !9
  %2587 = load i64, ptr %28, align 8, !tbaa !9
  %2588 = mul nsw i64 %2586, %2587
  %2589 = add nsw i64 %2588, 1
  %2590 = getelementptr inbounds double, ptr %2585, i64 %2589
  %2591 = load ptr, ptr %24, align 8, !tbaa !5
  %2592 = load i64, ptr %46, align 8, !tbaa !9
  %2593 = load i64, ptr %32, align 8, !tbaa !9
  %2594 = mul nsw i64 %2592, %2593
  %2595 = add nsw i64 %2594, 1
  %2596 = getelementptr inbounds double, ptr %2591, i64 %2595
  %2597 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2590, ptr noundef @c__1, ptr noundef %2596, ptr noundef @c__1)
  store double %2597, ptr %57, align 8, !tbaa !11
  %2598 = load ptr, ptr %19, align 8, !tbaa !5
  %2599 = load i64, ptr %2598, align 8, !tbaa !9
  %2600 = load i64, ptr %47, align 8, !tbaa !9
  %2601 = sub nsw i64 %2599, %2600
  store i64 %2601, ptr %35, align 8, !tbaa !9
  %2602 = load i64, ptr %47, align 8, !tbaa !9
  %2603 = add nsw i64 %2602, 1
  store i64 %2603, ptr %36, align 8, !tbaa !9
  %2604 = load i64, ptr %47, align 8, !tbaa !9
  %2605 = add nsw i64 %2604, 1
  store i64 %2605, ptr %37, align 8, !tbaa !9
  %2606 = load ptr, ptr %24, align 8, !tbaa !5
  %2607 = load i64, ptr %44, align 8, !tbaa !9
  %2608 = load i64, ptr %36, align 8, !tbaa !9
  %2609 = load ptr, ptr %19, align 8, !tbaa !5
  %2610 = load i64, ptr %2609, align 8, !tbaa !9
  %2611 = icmp sle i64 %2608, %2610
  br i1 %2611, label %2612, label %2614

2612:                                             ; preds = %2582
  %2613 = load i64, ptr %36, align 8, !tbaa !9
  br label %2617

2614:                                             ; preds = %2582
  %2615 = load ptr, ptr %19, align 8, !tbaa !5
  %2616 = load i64, ptr %2615, align 8, !tbaa !9
  br label %2617

2617:                                             ; preds = %2614, %2612
  %2618 = phi i64 [ %2613, %2612 ], [ %2616, %2614 ]
  %2619 = load i64, ptr %32, align 8, !tbaa !9
  %2620 = mul nsw i64 %2618, %2619
  %2621 = add nsw i64 %2607, %2620
  %2622 = getelementptr inbounds double, ptr %2606, i64 %2621
  %2623 = load ptr, ptr %25, align 8, !tbaa !5
  %2624 = load ptr, ptr %22, align 8, !tbaa !5
  %2625 = load i64, ptr %46, align 8, !tbaa !9
  %2626 = load i64, ptr %37, align 8, !tbaa !9
  %2627 = load ptr, ptr %19, align 8, !tbaa !5
  %2628 = load i64, ptr %2627, align 8, !tbaa !9
  %2629 = icmp sle i64 %2626, %2628
  br i1 %2629, label %2630, label %2632

2630:                                             ; preds = %2617
  %2631 = load i64, ptr %37, align 8, !tbaa !9
  br label %2635

2632:                                             ; preds = %2617
  %2633 = load ptr, ptr %19, align 8, !tbaa !5
  %2634 = load i64, ptr %2633, align 8, !tbaa !9
  br label %2635

2635:                                             ; preds = %2632, %2630
  %2636 = phi i64 [ %2631, %2630 ], [ %2634, %2632 ]
  %2637 = load i64, ptr %30, align 8, !tbaa !9
  %2638 = mul nsw i64 %2636, %2637
  %2639 = add nsw i64 %2625, %2638
  %2640 = getelementptr inbounds double, ptr %2624, i64 %2639
  %2641 = load ptr, ptr %23, align 8, !tbaa !5
  %2642 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2622, ptr noundef %2623, ptr noundef %2640, ptr noundef %2641)
  store double %2642, ptr %58, align 8, !tbaa !11
  %2643 = load ptr, ptr %24, align 8, !tbaa !5
  %2644 = load i64, ptr %44, align 8, !tbaa !9
  %2645 = load i64, ptr %46, align 8, !tbaa !9
  %2646 = load i64, ptr %32, align 8, !tbaa !9
  %2647 = mul nsw i64 %2645, %2646
  %2648 = add nsw i64 %2644, %2647
  %2649 = getelementptr inbounds double, ptr %2643, i64 %2648
  %2650 = load double, ptr %2649, align 8, !tbaa !11
  %2651 = load double, ptr %57, align 8, !tbaa !11
  %2652 = load double, ptr %54, align 8, !tbaa !11
  %2653 = load double, ptr %58, align 8, !tbaa !11
  %2654 = call double @llvm.fmuladd.f64(double %2652, double %2653, double %2651)
  %2655 = fsub double %2650, %2654
  %2656 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %2655, ptr %2656, align 16, !tbaa !11
  %2657 = load i64, ptr %44, align 8, !tbaa !9
  %2658 = sub nsw i64 %2657, 1
  store i64 %2658, ptr %35, align 8, !tbaa !9
  %2659 = load ptr, ptr %20, align 8, !tbaa !5
  %2660 = load i64, ptr %45, align 8, !tbaa !9
  %2661 = load i64, ptr %28, align 8, !tbaa !9
  %2662 = mul nsw i64 %2660, %2661
  %2663 = add nsw i64 %2662, 1
  %2664 = getelementptr inbounds double, ptr %2659, i64 %2663
  %2665 = load ptr, ptr %24, align 8, !tbaa !5
  %2666 = load i64, ptr %46, align 8, !tbaa !9
  %2667 = load i64, ptr %32, align 8, !tbaa !9
  %2668 = mul nsw i64 %2666, %2667
  %2669 = add nsw i64 %2668, 1
  %2670 = getelementptr inbounds double, ptr %2665, i64 %2669
  %2671 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2664, ptr noundef @c__1, ptr noundef %2670, ptr noundef @c__1)
  store double %2671, ptr %57, align 8, !tbaa !11
  %2672 = load ptr, ptr %19, align 8, !tbaa !5
  %2673 = load i64, ptr %2672, align 8, !tbaa !9
  %2674 = load i64, ptr %47, align 8, !tbaa !9
  %2675 = sub nsw i64 %2673, %2674
  store i64 %2675, ptr %35, align 8, !tbaa !9
  %2676 = load i64, ptr %47, align 8, !tbaa !9
  %2677 = add nsw i64 %2676, 1
  store i64 %2677, ptr %36, align 8, !tbaa !9
  %2678 = load i64, ptr %47, align 8, !tbaa !9
  %2679 = add nsw i64 %2678, 1
  store i64 %2679, ptr %37, align 8, !tbaa !9
  %2680 = load ptr, ptr %24, align 8, !tbaa !5
  %2681 = load i64, ptr %45, align 8, !tbaa !9
  %2682 = load i64, ptr %36, align 8, !tbaa !9
  %2683 = load ptr, ptr %19, align 8, !tbaa !5
  %2684 = load i64, ptr %2683, align 8, !tbaa !9
  %2685 = icmp sle i64 %2682, %2684
  br i1 %2685, label %2686, label %2688

2686:                                             ; preds = %2635
  %2687 = load i64, ptr %36, align 8, !tbaa !9
  br label %2691

2688:                                             ; preds = %2635
  %2689 = load ptr, ptr %19, align 8, !tbaa !5
  %2690 = load i64, ptr %2689, align 8, !tbaa !9
  br label %2691

2691:                                             ; preds = %2688, %2686
  %2692 = phi i64 [ %2687, %2686 ], [ %2690, %2688 ]
  %2693 = load i64, ptr %32, align 8, !tbaa !9
  %2694 = mul nsw i64 %2692, %2693
  %2695 = add nsw i64 %2681, %2694
  %2696 = getelementptr inbounds double, ptr %2680, i64 %2695
  %2697 = load ptr, ptr %25, align 8, !tbaa !5
  %2698 = load ptr, ptr %22, align 8, !tbaa !5
  %2699 = load i64, ptr %46, align 8, !tbaa !9
  %2700 = load i64, ptr %37, align 8, !tbaa !9
  %2701 = load ptr, ptr %19, align 8, !tbaa !5
  %2702 = load i64, ptr %2701, align 8, !tbaa !9
  %2703 = icmp sle i64 %2700, %2702
  br i1 %2703, label %2704, label %2706

2704:                                             ; preds = %2691
  %2705 = load i64, ptr %37, align 8, !tbaa !9
  br label %2709

2706:                                             ; preds = %2691
  %2707 = load ptr, ptr %19, align 8, !tbaa !5
  %2708 = load i64, ptr %2707, align 8, !tbaa !9
  br label %2709

2709:                                             ; preds = %2706, %2704
  %2710 = phi i64 [ %2705, %2704 ], [ %2708, %2706 ]
  %2711 = load i64, ptr %30, align 8, !tbaa !9
  %2712 = mul nsw i64 %2710, %2711
  %2713 = add nsw i64 %2699, %2712
  %2714 = getelementptr inbounds double, ptr %2698, i64 %2713
  %2715 = load ptr, ptr %23, align 8, !tbaa !5
  %2716 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2696, ptr noundef %2697, ptr noundef %2714, ptr noundef %2715)
  store double %2716, ptr %58, align 8, !tbaa !11
  %2717 = load ptr, ptr %24, align 8, !tbaa !5
  %2718 = load i64, ptr %45, align 8, !tbaa !9
  %2719 = load i64, ptr %46, align 8, !tbaa !9
  %2720 = load i64, ptr %32, align 8, !tbaa !9
  %2721 = mul nsw i64 %2719, %2720
  %2722 = add nsw i64 %2718, %2721
  %2723 = getelementptr inbounds double, ptr %2717, i64 %2722
  %2724 = load double, ptr %2723, align 8, !tbaa !11
  %2725 = load double, ptr %57, align 8, !tbaa !11
  %2726 = load double, ptr %54, align 8, !tbaa !11
  %2727 = load double, ptr %58, align 8, !tbaa !11
  %2728 = call double @llvm.fmuladd.f64(double %2726, double %2727, double %2725)
  %2729 = fsub double %2724, %2728
  %2730 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %2729, ptr %2730, align 8, !tbaa !11
  %2731 = load double, ptr %54, align 8, !tbaa !11
  %2732 = fneg double %2731
  %2733 = load ptr, ptr %22, align 8, !tbaa !5
  %2734 = load i64, ptr %46, align 8, !tbaa !9
  %2735 = load i64, ptr %46, align 8, !tbaa !9
  %2736 = load i64, ptr %30, align 8, !tbaa !9
  %2737 = mul nsw i64 %2735, %2736
  %2738 = add nsw i64 %2734, %2737
  %2739 = getelementptr inbounds double, ptr %2733, i64 %2738
  %2740 = load double, ptr %2739, align 8, !tbaa !11
  %2741 = fmul double %2732, %2740
  store double %2741, ptr %38, align 8, !tbaa !11
  %2742 = load ptr, ptr %20, align 8, !tbaa !5
  %2743 = load i64, ptr %44, align 8, !tbaa !9
  %2744 = load i64, ptr %44, align 8, !tbaa !9
  %2745 = load i64, ptr %28, align 8, !tbaa !9
  %2746 = mul nsw i64 %2744, %2745
  %2747 = add nsw i64 %2743, %2746
  %2748 = getelementptr inbounds double, ptr %2742, i64 %2747
  %2749 = load ptr, ptr %21, align 8, !tbaa !5
  %2750 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %2751 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %2752 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %56, ptr noundef @c_b26, ptr noundef %2748, ptr noundef %2749, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %2750, ptr noundef @c__2, ptr noundef %38, ptr noundef @c_b30, ptr noundef %2751, ptr noundef @c__2, ptr noundef %62, ptr noundef %61, ptr noundef %55)
  %2753 = load i64, ptr %55, align 8, !tbaa !9
  %2754 = icmp ne i64 %2753, 0
  br i1 %2754, label %2755, label %2757

2755:                                             ; preds = %2709
  %2756 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %2756, align 8, !tbaa !9
  br label %2757

2757:                                             ; preds = %2755, %2709
  %2758 = load double, ptr %62, align 8, !tbaa !11
  %2759 = fcmp une double %2758, 1.000000e+00
  br i1 %2759, label %2760, label %2784

2760:                                             ; preds = %2757
  %2761 = load ptr, ptr %19, align 8, !tbaa !5
  %2762 = load i64, ptr %2761, align 8, !tbaa !9
  store i64 %2762, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %2763

2763:                                             ; preds = %2776, %2760
  %2764 = load i64, ptr %40, align 8, !tbaa !9
  %2765 = load i64, ptr %35, align 8, !tbaa !9
  %2766 = icmp sle i64 %2764, %2765
  br i1 %2766, label %2767, label %2779

2767:                                             ; preds = %2763
  %2768 = load ptr, ptr %18, align 8, !tbaa !5
  %2769 = load ptr, ptr %24, align 8, !tbaa !5
  %2770 = load i64, ptr %40, align 8, !tbaa !9
  %2771 = load i64, ptr %32, align 8, !tbaa !9
  %2772 = mul nsw i64 %2770, %2771
  %2773 = add nsw i64 %2772, 1
  %2774 = getelementptr inbounds double, ptr %2769, i64 %2773
  %2775 = call i32 @f2c_dscal(ptr noundef %2768, ptr noundef %62, ptr noundef %2774, ptr noundef @c__1)
  br label %2776

2776:                                             ; preds = %2767
  %2777 = load i64, ptr %40, align 8, !tbaa !9
  %2778 = add nsw i64 %2777, 1
  store i64 %2778, ptr %40, align 8, !tbaa !9
  br label %2763, !llvm.loop !27

2779:                                             ; preds = %2763
  %2780 = load double, ptr %62, align 8, !tbaa !11
  %2781 = load ptr, ptr %26, align 8, !tbaa !5
  %2782 = load double, ptr %2781, align 8, !tbaa !11
  %2783 = fmul double %2782, %2780
  store double %2783, ptr %2781, align 8, !tbaa !11
  br label %2784

2784:                                             ; preds = %2779, %2757
  %2785 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %2786 = load double, ptr %2785, align 16, !tbaa !11
  %2787 = load ptr, ptr %24, align 8, !tbaa !5
  %2788 = load i64, ptr %44, align 8, !tbaa !9
  %2789 = load i64, ptr %46, align 8, !tbaa !9
  %2790 = load i64, ptr %32, align 8, !tbaa !9
  %2791 = mul nsw i64 %2789, %2790
  %2792 = add nsw i64 %2788, %2791
  %2793 = getelementptr inbounds double, ptr %2787, i64 %2792
  store double %2786, ptr %2793, align 8, !tbaa !11
  %2794 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %2795 = load double, ptr %2794, align 8, !tbaa !11
  %2796 = load ptr, ptr %24, align 8, !tbaa !5
  %2797 = load i64, ptr %45, align 8, !tbaa !9
  %2798 = load i64, ptr %46, align 8, !tbaa !9
  %2799 = load i64, ptr %32, align 8, !tbaa !9
  %2800 = mul nsw i64 %2798, %2799
  %2801 = add nsw i64 %2797, %2800
  %2802 = getelementptr inbounds double, ptr %2796, i64 %2801
  store double %2795, ptr %2802, align 8, !tbaa !11
  br label %3431

2803:                                             ; preds = %2578, %2574
  %2804 = load i64, ptr %46, align 8, !tbaa !9
  %2805 = load i64, ptr %47, align 8, !tbaa !9
  %2806 = icmp ne i64 %2804, %2805
  br i1 %2806, label %2807, label %3036

2807:                                             ; preds = %2803
  %2808 = load i64, ptr %44, align 8, !tbaa !9
  %2809 = load i64, ptr %45, align 8, !tbaa !9
  %2810 = icmp eq i64 %2808, %2809
  br i1 %2810, label %2811, label %3036

2811:                                             ; preds = %2807
  %2812 = load i64, ptr %44, align 8, !tbaa !9
  %2813 = sub nsw i64 %2812, 1
  store i64 %2813, ptr %35, align 8, !tbaa !9
  %2814 = load ptr, ptr %20, align 8, !tbaa !5
  %2815 = load i64, ptr %44, align 8, !tbaa !9
  %2816 = load i64, ptr %28, align 8, !tbaa !9
  %2817 = mul nsw i64 %2815, %2816
  %2818 = add nsw i64 %2817, 1
  %2819 = getelementptr inbounds double, ptr %2814, i64 %2818
  %2820 = load ptr, ptr %24, align 8, !tbaa !5
  %2821 = load i64, ptr %46, align 8, !tbaa !9
  %2822 = load i64, ptr %32, align 8, !tbaa !9
  %2823 = mul nsw i64 %2821, %2822
  %2824 = add nsw i64 %2823, 1
  %2825 = getelementptr inbounds double, ptr %2820, i64 %2824
  %2826 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2819, ptr noundef @c__1, ptr noundef %2825, ptr noundef @c__1)
  store double %2826, ptr %57, align 8, !tbaa !11
  %2827 = load ptr, ptr %19, align 8, !tbaa !5
  %2828 = load i64, ptr %2827, align 8, !tbaa !9
  %2829 = load i64, ptr %47, align 8, !tbaa !9
  %2830 = sub nsw i64 %2828, %2829
  store i64 %2830, ptr %35, align 8, !tbaa !9
  %2831 = load i64, ptr %47, align 8, !tbaa !9
  %2832 = add nsw i64 %2831, 1
  store i64 %2832, ptr %36, align 8, !tbaa !9
  %2833 = load i64, ptr %47, align 8, !tbaa !9
  %2834 = add nsw i64 %2833, 1
  store i64 %2834, ptr %37, align 8, !tbaa !9
  %2835 = load ptr, ptr %24, align 8, !tbaa !5
  %2836 = load i64, ptr %44, align 8, !tbaa !9
  %2837 = load i64, ptr %36, align 8, !tbaa !9
  %2838 = load ptr, ptr %19, align 8, !tbaa !5
  %2839 = load i64, ptr %2838, align 8, !tbaa !9
  %2840 = icmp sle i64 %2837, %2839
  br i1 %2840, label %2841, label %2843

2841:                                             ; preds = %2811
  %2842 = load i64, ptr %36, align 8, !tbaa !9
  br label %2846

2843:                                             ; preds = %2811
  %2844 = load ptr, ptr %19, align 8, !tbaa !5
  %2845 = load i64, ptr %2844, align 8, !tbaa !9
  br label %2846

2846:                                             ; preds = %2843, %2841
  %2847 = phi i64 [ %2842, %2841 ], [ %2845, %2843 ]
  %2848 = load i64, ptr %32, align 8, !tbaa !9
  %2849 = mul nsw i64 %2847, %2848
  %2850 = add nsw i64 %2836, %2849
  %2851 = getelementptr inbounds double, ptr %2835, i64 %2850
  %2852 = load ptr, ptr %25, align 8, !tbaa !5
  %2853 = load ptr, ptr %22, align 8, !tbaa !5
  %2854 = load i64, ptr %46, align 8, !tbaa !9
  %2855 = load i64, ptr %37, align 8, !tbaa !9
  %2856 = load ptr, ptr %19, align 8, !tbaa !5
  %2857 = load i64, ptr %2856, align 8, !tbaa !9
  %2858 = icmp sle i64 %2855, %2857
  br i1 %2858, label %2859, label %2861

2859:                                             ; preds = %2846
  %2860 = load i64, ptr %37, align 8, !tbaa !9
  br label %2864

2861:                                             ; preds = %2846
  %2862 = load ptr, ptr %19, align 8, !tbaa !5
  %2863 = load i64, ptr %2862, align 8, !tbaa !9
  br label %2864

2864:                                             ; preds = %2861, %2859
  %2865 = phi i64 [ %2860, %2859 ], [ %2863, %2861 ]
  %2866 = load i64, ptr %30, align 8, !tbaa !9
  %2867 = mul nsw i64 %2865, %2866
  %2868 = add nsw i64 %2854, %2867
  %2869 = getelementptr inbounds double, ptr %2853, i64 %2868
  %2870 = load ptr, ptr %23, align 8, !tbaa !5
  %2871 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2851, ptr noundef %2852, ptr noundef %2869, ptr noundef %2870)
  store double %2871, ptr %58, align 8, !tbaa !11
  %2872 = load double, ptr %54, align 8, !tbaa !11
  %2873 = load ptr, ptr %24, align 8, !tbaa !5
  %2874 = load i64, ptr %44, align 8, !tbaa !9
  %2875 = load i64, ptr %46, align 8, !tbaa !9
  %2876 = load i64, ptr %32, align 8, !tbaa !9
  %2877 = mul nsw i64 %2875, %2876
  %2878 = add nsw i64 %2874, %2877
  %2879 = getelementptr inbounds double, ptr %2873, i64 %2878
  %2880 = load double, ptr %2879, align 8, !tbaa !11
  %2881 = load double, ptr %57, align 8, !tbaa !11
  %2882 = load double, ptr %54, align 8, !tbaa !11
  %2883 = load double, ptr %58, align 8, !tbaa !11
  %2884 = call double @llvm.fmuladd.f64(double %2882, double %2883, double %2881)
  %2885 = fsub double %2880, %2884
  %2886 = fmul double %2872, %2885
  %2887 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %2886, ptr %2887, align 16, !tbaa !11
  %2888 = load i64, ptr %44, align 8, !tbaa !9
  %2889 = sub nsw i64 %2888, 1
  store i64 %2889, ptr %35, align 8, !tbaa !9
  %2890 = load ptr, ptr %20, align 8, !tbaa !5
  %2891 = load i64, ptr %44, align 8, !tbaa !9
  %2892 = load i64, ptr %28, align 8, !tbaa !9
  %2893 = mul nsw i64 %2891, %2892
  %2894 = add nsw i64 %2893, 1
  %2895 = getelementptr inbounds double, ptr %2890, i64 %2894
  %2896 = load ptr, ptr %24, align 8, !tbaa !5
  %2897 = load i64, ptr %47, align 8, !tbaa !9
  %2898 = load i64, ptr %32, align 8, !tbaa !9
  %2899 = mul nsw i64 %2897, %2898
  %2900 = add nsw i64 %2899, 1
  %2901 = getelementptr inbounds double, ptr %2896, i64 %2900
  %2902 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2895, ptr noundef @c__1, ptr noundef %2901, ptr noundef @c__1)
  store double %2902, ptr %57, align 8, !tbaa !11
  %2903 = load ptr, ptr %19, align 8, !tbaa !5
  %2904 = load i64, ptr %2903, align 8, !tbaa !9
  %2905 = load i64, ptr %47, align 8, !tbaa !9
  %2906 = sub nsw i64 %2904, %2905
  store i64 %2906, ptr %35, align 8, !tbaa !9
  %2907 = load i64, ptr %47, align 8, !tbaa !9
  %2908 = add nsw i64 %2907, 1
  store i64 %2908, ptr %36, align 8, !tbaa !9
  %2909 = load i64, ptr %47, align 8, !tbaa !9
  %2910 = add nsw i64 %2909, 1
  store i64 %2910, ptr %37, align 8, !tbaa !9
  %2911 = load ptr, ptr %24, align 8, !tbaa !5
  %2912 = load i64, ptr %44, align 8, !tbaa !9
  %2913 = load i64, ptr %36, align 8, !tbaa !9
  %2914 = load ptr, ptr %19, align 8, !tbaa !5
  %2915 = load i64, ptr %2914, align 8, !tbaa !9
  %2916 = icmp sle i64 %2913, %2915
  br i1 %2916, label %2917, label %2919

2917:                                             ; preds = %2864
  %2918 = load i64, ptr %36, align 8, !tbaa !9
  br label %2922

2919:                                             ; preds = %2864
  %2920 = load ptr, ptr %19, align 8, !tbaa !5
  %2921 = load i64, ptr %2920, align 8, !tbaa !9
  br label %2922

2922:                                             ; preds = %2919, %2917
  %2923 = phi i64 [ %2918, %2917 ], [ %2921, %2919 ]
  %2924 = load i64, ptr %32, align 8, !tbaa !9
  %2925 = mul nsw i64 %2923, %2924
  %2926 = add nsw i64 %2912, %2925
  %2927 = getelementptr inbounds double, ptr %2911, i64 %2926
  %2928 = load ptr, ptr %25, align 8, !tbaa !5
  %2929 = load ptr, ptr %22, align 8, !tbaa !5
  %2930 = load i64, ptr %47, align 8, !tbaa !9
  %2931 = load i64, ptr %37, align 8, !tbaa !9
  %2932 = load ptr, ptr %19, align 8, !tbaa !5
  %2933 = load i64, ptr %2932, align 8, !tbaa !9
  %2934 = icmp sle i64 %2931, %2933
  br i1 %2934, label %2935, label %2937

2935:                                             ; preds = %2922
  %2936 = load i64, ptr %37, align 8, !tbaa !9
  br label %2940

2937:                                             ; preds = %2922
  %2938 = load ptr, ptr %19, align 8, !tbaa !5
  %2939 = load i64, ptr %2938, align 8, !tbaa !9
  br label %2940

2940:                                             ; preds = %2937, %2935
  %2941 = phi i64 [ %2936, %2935 ], [ %2939, %2937 ]
  %2942 = load i64, ptr %30, align 8, !tbaa !9
  %2943 = mul nsw i64 %2941, %2942
  %2944 = add nsw i64 %2930, %2943
  %2945 = getelementptr inbounds double, ptr %2929, i64 %2944
  %2946 = load ptr, ptr %23, align 8, !tbaa !5
  %2947 = call double @f2c_ddot(ptr noundef %35, ptr noundef %2927, ptr noundef %2928, ptr noundef %2945, ptr noundef %2946)
  store double %2947, ptr %58, align 8, !tbaa !11
  %2948 = load double, ptr %54, align 8, !tbaa !11
  %2949 = load ptr, ptr %24, align 8, !tbaa !5
  %2950 = load i64, ptr %44, align 8, !tbaa !9
  %2951 = load i64, ptr %47, align 8, !tbaa !9
  %2952 = load i64, ptr %32, align 8, !tbaa !9
  %2953 = mul nsw i64 %2951, %2952
  %2954 = add nsw i64 %2950, %2953
  %2955 = getelementptr inbounds double, ptr %2949, i64 %2954
  %2956 = load double, ptr %2955, align 8, !tbaa !11
  %2957 = load double, ptr %57, align 8, !tbaa !11
  %2958 = load double, ptr %54, align 8, !tbaa !11
  %2959 = load double, ptr %58, align 8, !tbaa !11
  %2960 = call double @llvm.fmuladd.f64(double %2958, double %2959, double %2957)
  %2961 = fsub double %2956, %2960
  %2962 = fmul double %2948, %2961
  %2963 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %2962, ptr %2963, align 8, !tbaa !11
  %2964 = load double, ptr %54, align 8, !tbaa !11
  %2965 = fneg double %2964
  %2966 = load ptr, ptr %20, align 8, !tbaa !5
  %2967 = load i64, ptr %44, align 8, !tbaa !9
  %2968 = load i64, ptr %44, align 8, !tbaa !9
  %2969 = load i64, ptr %28, align 8, !tbaa !9
  %2970 = mul nsw i64 %2968, %2969
  %2971 = add nsw i64 %2967, %2970
  %2972 = getelementptr inbounds double, ptr %2966, i64 %2971
  %2973 = load double, ptr %2972, align 8, !tbaa !11
  %2974 = fmul double %2965, %2973
  store double %2974, ptr %38, align 8, !tbaa !11
  %2975 = load ptr, ptr %22, align 8, !tbaa !5
  %2976 = load i64, ptr %46, align 8, !tbaa !9
  %2977 = load i64, ptr %46, align 8, !tbaa !9
  %2978 = load i64, ptr %30, align 8, !tbaa !9
  %2979 = mul nsw i64 %2977, %2978
  %2980 = add nsw i64 %2976, %2979
  %2981 = getelementptr inbounds double, ptr %2975, i64 %2980
  %2982 = load ptr, ptr %23, align 8, !tbaa !5
  %2983 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %2984 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %2985 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %56, ptr noundef @c_b26, ptr noundef %2981, ptr noundef %2982, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %2983, ptr noundef @c__2, ptr noundef %38, ptr noundef @c_b30, ptr noundef %2984, ptr noundef @c__2, ptr noundef %62, ptr noundef %61, ptr noundef %55)
  %2986 = load i64, ptr %55, align 8, !tbaa !9
  %2987 = icmp ne i64 %2986, 0
  br i1 %2987, label %2988, label %2990

2988:                                             ; preds = %2940
  %2989 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %2989, align 8, !tbaa !9
  br label %2990

2990:                                             ; preds = %2988, %2940
  %2991 = load double, ptr %62, align 8, !tbaa !11
  %2992 = fcmp une double %2991, 1.000000e+00
  br i1 %2992, label %2993, label %3017

2993:                                             ; preds = %2990
  %2994 = load ptr, ptr %19, align 8, !tbaa !5
  %2995 = load i64, ptr %2994, align 8, !tbaa !9
  store i64 %2995, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %2996

2996:                                             ; preds = %3009, %2993
  %2997 = load i64, ptr %40, align 8, !tbaa !9
  %2998 = load i64, ptr %35, align 8, !tbaa !9
  %2999 = icmp sle i64 %2997, %2998
  br i1 %2999, label %3000, label %3012

3000:                                             ; preds = %2996
  %3001 = load ptr, ptr %18, align 8, !tbaa !5
  %3002 = load ptr, ptr %24, align 8, !tbaa !5
  %3003 = load i64, ptr %40, align 8, !tbaa !9
  %3004 = load i64, ptr %32, align 8, !tbaa !9
  %3005 = mul nsw i64 %3003, %3004
  %3006 = add nsw i64 %3005, 1
  %3007 = getelementptr inbounds double, ptr %3002, i64 %3006
  %3008 = call i32 @f2c_dscal(ptr noundef %3001, ptr noundef %62, ptr noundef %3007, ptr noundef @c__1)
  br label %3009

3009:                                             ; preds = %3000
  %3010 = load i64, ptr %40, align 8, !tbaa !9
  %3011 = add nsw i64 %3010, 1
  store i64 %3011, ptr %40, align 8, !tbaa !9
  br label %2996, !llvm.loop !28

3012:                                             ; preds = %2996
  %3013 = load double, ptr %62, align 8, !tbaa !11
  %3014 = load ptr, ptr %26, align 8, !tbaa !5
  %3015 = load double, ptr %3014, align 8, !tbaa !11
  %3016 = fmul double %3015, %3013
  store double %3016, ptr %3014, align 8, !tbaa !11
  br label %3017

3017:                                             ; preds = %3012, %2990
  %3018 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %3019 = load double, ptr %3018, align 16, !tbaa !11
  %3020 = load ptr, ptr %24, align 8, !tbaa !5
  %3021 = load i64, ptr %44, align 8, !tbaa !9
  %3022 = load i64, ptr %46, align 8, !tbaa !9
  %3023 = load i64, ptr %32, align 8, !tbaa !9
  %3024 = mul nsw i64 %3022, %3023
  %3025 = add nsw i64 %3021, %3024
  %3026 = getelementptr inbounds double, ptr %3020, i64 %3025
  store double %3019, ptr %3026, align 8, !tbaa !11
  %3027 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %3028 = load double, ptr %3027, align 8, !tbaa !11
  %3029 = load ptr, ptr %24, align 8, !tbaa !5
  %3030 = load i64, ptr %44, align 8, !tbaa !9
  %3031 = load i64, ptr %47, align 8, !tbaa !9
  %3032 = load i64, ptr %32, align 8, !tbaa !9
  %3033 = mul nsw i64 %3031, %3032
  %3034 = add nsw i64 %3030, %3033
  %3035 = getelementptr inbounds double, ptr %3029, i64 %3034
  store double %3028, ptr %3035, align 8, !tbaa !11
  br label %3430

3036:                                             ; preds = %2807, %2803
  %3037 = load i64, ptr %46, align 8, !tbaa !9
  %3038 = load i64, ptr %47, align 8, !tbaa !9
  %3039 = icmp ne i64 %3037, %3038
  br i1 %3039, label %3040, label %3429

3040:                                             ; preds = %3036
  %3041 = load i64, ptr %44, align 8, !tbaa !9
  %3042 = load i64, ptr %45, align 8, !tbaa !9
  %3043 = icmp ne i64 %3041, %3042
  br i1 %3043, label %3044, label %3429

3044:                                             ; preds = %3040
  %3045 = load i64, ptr %44, align 8, !tbaa !9
  %3046 = sub nsw i64 %3045, 1
  store i64 %3046, ptr %35, align 8, !tbaa !9
  %3047 = load ptr, ptr %20, align 8, !tbaa !5
  %3048 = load i64, ptr %44, align 8, !tbaa !9
  %3049 = load i64, ptr %28, align 8, !tbaa !9
  %3050 = mul nsw i64 %3048, %3049
  %3051 = add nsw i64 %3050, 1
  %3052 = getelementptr inbounds double, ptr %3047, i64 %3051
  %3053 = load ptr, ptr %24, align 8, !tbaa !5
  %3054 = load i64, ptr %46, align 8, !tbaa !9
  %3055 = load i64, ptr %32, align 8, !tbaa !9
  %3056 = mul nsw i64 %3054, %3055
  %3057 = add nsw i64 %3056, 1
  %3058 = getelementptr inbounds double, ptr %3053, i64 %3057
  %3059 = call double @f2c_ddot(ptr noundef %35, ptr noundef %3052, ptr noundef @c__1, ptr noundef %3058, ptr noundef @c__1)
  store double %3059, ptr %57, align 8, !tbaa !11
  %3060 = load ptr, ptr %19, align 8, !tbaa !5
  %3061 = load i64, ptr %3060, align 8, !tbaa !9
  %3062 = load i64, ptr %47, align 8, !tbaa !9
  %3063 = sub nsw i64 %3061, %3062
  store i64 %3063, ptr %35, align 8, !tbaa !9
  %3064 = load i64, ptr %47, align 8, !tbaa !9
  %3065 = add nsw i64 %3064, 1
  store i64 %3065, ptr %36, align 8, !tbaa !9
  %3066 = load i64, ptr %47, align 8, !tbaa !9
  %3067 = add nsw i64 %3066, 1
  store i64 %3067, ptr %37, align 8, !tbaa !9
  %3068 = load ptr, ptr %24, align 8, !tbaa !5
  %3069 = load i64, ptr %44, align 8, !tbaa !9
  %3070 = load i64, ptr %36, align 8, !tbaa !9
  %3071 = load ptr, ptr %19, align 8, !tbaa !5
  %3072 = load i64, ptr %3071, align 8, !tbaa !9
  %3073 = icmp sle i64 %3070, %3072
  br i1 %3073, label %3074, label %3076

3074:                                             ; preds = %3044
  %3075 = load i64, ptr %36, align 8, !tbaa !9
  br label %3079

3076:                                             ; preds = %3044
  %3077 = load ptr, ptr %19, align 8, !tbaa !5
  %3078 = load i64, ptr %3077, align 8, !tbaa !9
  br label %3079

3079:                                             ; preds = %3076, %3074
  %3080 = phi i64 [ %3075, %3074 ], [ %3078, %3076 ]
  %3081 = load i64, ptr %32, align 8, !tbaa !9
  %3082 = mul nsw i64 %3080, %3081
  %3083 = add nsw i64 %3069, %3082
  %3084 = getelementptr inbounds double, ptr %3068, i64 %3083
  %3085 = load ptr, ptr %25, align 8, !tbaa !5
  %3086 = load ptr, ptr %22, align 8, !tbaa !5
  %3087 = load i64, ptr %46, align 8, !tbaa !9
  %3088 = load i64, ptr %37, align 8, !tbaa !9
  %3089 = load ptr, ptr %19, align 8, !tbaa !5
  %3090 = load i64, ptr %3089, align 8, !tbaa !9
  %3091 = icmp sle i64 %3088, %3090
  br i1 %3091, label %3092, label %3094

3092:                                             ; preds = %3079
  %3093 = load i64, ptr %37, align 8, !tbaa !9
  br label %3097

3094:                                             ; preds = %3079
  %3095 = load ptr, ptr %19, align 8, !tbaa !5
  %3096 = load i64, ptr %3095, align 8, !tbaa !9
  br label %3097

3097:                                             ; preds = %3094, %3092
  %3098 = phi i64 [ %3093, %3092 ], [ %3096, %3094 ]
  %3099 = load i64, ptr %30, align 8, !tbaa !9
  %3100 = mul nsw i64 %3098, %3099
  %3101 = add nsw i64 %3087, %3100
  %3102 = getelementptr inbounds double, ptr %3086, i64 %3101
  %3103 = load ptr, ptr %23, align 8, !tbaa !5
  %3104 = call double @f2c_ddot(ptr noundef %35, ptr noundef %3084, ptr noundef %3085, ptr noundef %3102, ptr noundef %3103)
  store double %3104, ptr %58, align 8, !tbaa !11
  %3105 = load ptr, ptr %24, align 8, !tbaa !5
  %3106 = load i64, ptr %44, align 8, !tbaa !9
  %3107 = load i64, ptr %46, align 8, !tbaa !9
  %3108 = load i64, ptr %32, align 8, !tbaa !9
  %3109 = mul nsw i64 %3107, %3108
  %3110 = add nsw i64 %3106, %3109
  %3111 = getelementptr inbounds double, ptr %3105, i64 %3110
  %3112 = load double, ptr %3111, align 8, !tbaa !11
  %3113 = load double, ptr %57, align 8, !tbaa !11
  %3114 = load double, ptr %54, align 8, !tbaa !11
  %3115 = load double, ptr %58, align 8, !tbaa !11
  %3116 = call double @llvm.fmuladd.f64(double %3114, double %3115, double %3113)
  %3117 = fsub double %3112, %3116
  %3118 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %3117, ptr %3118, align 16, !tbaa !11
  %3119 = load i64, ptr %44, align 8, !tbaa !9
  %3120 = sub nsw i64 %3119, 1
  store i64 %3120, ptr %35, align 8, !tbaa !9
  %3121 = load ptr, ptr %20, align 8, !tbaa !5
  %3122 = load i64, ptr %44, align 8, !tbaa !9
  %3123 = load i64, ptr %28, align 8, !tbaa !9
  %3124 = mul nsw i64 %3122, %3123
  %3125 = add nsw i64 %3124, 1
  %3126 = getelementptr inbounds double, ptr %3121, i64 %3125
  %3127 = load ptr, ptr %24, align 8, !tbaa !5
  %3128 = load i64, ptr %47, align 8, !tbaa !9
  %3129 = load i64, ptr %32, align 8, !tbaa !9
  %3130 = mul nsw i64 %3128, %3129
  %3131 = add nsw i64 %3130, 1
  %3132 = getelementptr inbounds double, ptr %3127, i64 %3131
  %3133 = call double @f2c_ddot(ptr noundef %35, ptr noundef %3126, ptr noundef @c__1, ptr noundef %3132, ptr noundef @c__1)
  store double %3133, ptr %57, align 8, !tbaa !11
  %3134 = load ptr, ptr %19, align 8, !tbaa !5
  %3135 = load i64, ptr %3134, align 8, !tbaa !9
  %3136 = load i64, ptr %47, align 8, !tbaa !9
  %3137 = sub nsw i64 %3135, %3136
  store i64 %3137, ptr %35, align 8, !tbaa !9
  %3138 = load i64, ptr %47, align 8, !tbaa !9
  %3139 = add nsw i64 %3138, 1
  store i64 %3139, ptr %36, align 8, !tbaa !9
  %3140 = load i64, ptr %47, align 8, !tbaa !9
  %3141 = add nsw i64 %3140, 1
  store i64 %3141, ptr %37, align 8, !tbaa !9
  %3142 = load ptr, ptr %24, align 8, !tbaa !5
  %3143 = load i64, ptr %44, align 8, !tbaa !9
  %3144 = load i64, ptr %36, align 8, !tbaa !9
  %3145 = load ptr, ptr %19, align 8, !tbaa !5
  %3146 = load i64, ptr %3145, align 8, !tbaa !9
  %3147 = icmp sle i64 %3144, %3146
  br i1 %3147, label %3148, label %3150

3148:                                             ; preds = %3097
  %3149 = load i64, ptr %36, align 8, !tbaa !9
  br label %3153

3150:                                             ; preds = %3097
  %3151 = load ptr, ptr %19, align 8, !tbaa !5
  %3152 = load i64, ptr %3151, align 8, !tbaa !9
  br label %3153

3153:                                             ; preds = %3150, %3148
  %3154 = phi i64 [ %3149, %3148 ], [ %3152, %3150 ]
  %3155 = load i64, ptr %32, align 8, !tbaa !9
  %3156 = mul nsw i64 %3154, %3155
  %3157 = add nsw i64 %3143, %3156
  %3158 = getelementptr inbounds double, ptr %3142, i64 %3157
  %3159 = load ptr, ptr %25, align 8, !tbaa !5
  %3160 = load ptr, ptr %22, align 8, !tbaa !5
  %3161 = load i64, ptr %47, align 8, !tbaa !9
  %3162 = load i64, ptr %37, align 8, !tbaa !9
  %3163 = load ptr, ptr %19, align 8, !tbaa !5
  %3164 = load i64, ptr %3163, align 8, !tbaa !9
  %3165 = icmp sle i64 %3162, %3164
  br i1 %3165, label %3166, label %3168

3166:                                             ; preds = %3153
  %3167 = load i64, ptr %37, align 8, !tbaa !9
  br label %3171

3168:                                             ; preds = %3153
  %3169 = load ptr, ptr %19, align 8, !tbaa !5
  %3170 = load i64, ptr %3169, align 8, !tbaa !9
  br label %3171

3171:                                             ; preds = %3168, %3166
  %3172 = phi i64 [ %3167, %3166 ], [ %3170, %3168 ]
  %3173 = load i64, ptr %30, align 8, !tbaa !9
  %3174 = mul nsw i64 %3172, %3173
  %3175 = add nsw i64 %3161, %3174
  %3176 = getelementptr inbounds double, ptr %3160, i64 %3175
  %3177 = load ptr, ptr %23, align 8, !tbaa !5
  %3178 = call double @f2c_ddot(ptr noundef %35, ptr noundef %3158, ptr noundef %3159, ptr noundef %3176, ptr noundef %3177)
  store double %3178, ptr %58, align 8, !tbaa !11
  %3179 = load ptr, ptr %24, align 8, !tbaa !5
  %3180 = load i64, ptr %44, align 8, !tbaa !9
  %3181 = load i64, ptr %47, align 8, !tbaa !9
  %3182 = load i64, ptr %32, align 8, !tbaa !9
  %3183 = mul nsw i64 %3181, %3182
  %3184 = add nsw i64 %3180, %3183
  %3185 = getelementptr inbounds double, ptr %3179, i64 %3184
  %3186 = load double, ptr %3185, align 8, !tbaa !11
  %3187 = load double, ptr %57, align 8, !tbaa !11
  %3188 = load double, ptr %54, align 8, !tbaa !11
  %3189 = load double, ptr %58, align 8, !tbaa !11
  %3190 = call double @llvm.fmuladd.f64(double %3188, double %3189, double %3187)
  %3191 = fsub double %3186, %3190
  %3192 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 2
  store double %3191, ptr %3192, align 16, !tbaa !11
  %3193 = load i64, ptr %44, align 8, !tbaa !9
  %3194 = sub nsw i64 %3193, 1
  store i64 %3194, ptr %35, align 8, !tbaa !9
  %3195 = load ptr, ptr %20, align 8, !tbaa !5
  %3196 = load i64, ptr %45, align 8, !tbaa !9
  %3197 = load i64, ptr %28, align 8, !tbaa !9
  %3198 = mul nsw i64 %3196, %3197
  %3199 = add nsw i64 %3198, 1
  %3200 = getelementptr inbounds double, ptr %3195, i64 %3199
  %3201 = load ptr, ptr %24, align 8, !tbaa !5
  %3202 = load i64, ptr %46, align 8, !tbaa !9
  %3203 = load i64, ptr %32, align 8, !tbaa !9
  %3204 = mul nsw i64 %3202, %3203
  %3205 = add nsw i64 %3204, 1
  %3206 = getelementptr inbounds double, ptr %3201, i64 %3205
  %3207 = call double @f2c_ddot(ptr noundef %35, ptr noundef %3200, ptr noundef @c__1, ptr noundef %3206, ptr noundef @c__1)
  store double %3207, ptr %57, align 8, !tbaa !11
  %3208 = load ptr, ptr %19, align 8, !tbaa !5
  %3209 = load i64, ptr %3208, align 8, !tbaa !9
  %3210 = load i64, ptr %47, align 8, !tbaa !9
  %3211 = sub nsw i64 %3209, %3210
  store i64 %3211, ptr %35, align 8, !tbaa !9
  %3212 = load i64, ptr %47, align 8, !tbaa !9
  %3213 = add nsw i64 %3212, 1
  store i64 %3213, ptr %36, align 8, !tbaa !9
  %3214 = load i64, ptr %47, align 8, !tbaa !9
  %3215 = add nsw i64 %3214, 1
  store i64 %3215, ptr %37, align 8, !tbaa !9
  %3216 = load ptr, ptr %24, align 8, !tbaa !5
  %3217 = load i64, ptr %45, align 8, !tbaa !9
  %3218 = load i64, ptr %36, align 8, !tbaa !9
  %3219 = load ptr, ptr %19, align 8, !tbaa !5
  %3220 = load i64, ptr %3219, align 8, !tbaa !9
  %3221 = icmp sle i64 %3218, %3220
  br i1 %3221, label %3222, label %3224

3222:                                             ; preds = %3171
  %3223 = load i64, ptr %36, align 8, !tbaa !9
  br label %3227

3224:                                             ; preds = %3171
  %3225 = load ptr, ptr %19, align 8, !tbaa !5
  %3226 = load i64, ptr %3225, align 8, !tbaa !9
  br label %3227

3227:                                             ; preds = %3224, %3222
  %3228 = phi i64 [ %3223, %3222 ], [ %3226, %3224 ]
  %3229 = load i64, ptr %32, align 8, !tbaa !9
  %3230 = mul nsw i64 %3228, %3229
  %3231 = add nsw i64 %3217, %3230
  %3232 = getelementptr inbounds double, ptr %3216, i64 %3231
  %3233 = load ptr, ptr %25, align 8, !tbaa !5
  %3234 = load ptr, ptr %22, align 8, !tbaa !5
  %3235 = load i64, ptr %46, align 8, !tbaa !9
  %3236 = load i64, ptr %37, align 8, !tbaa !9
  %3237 = load ptr, ptr %19, align 8, !tbaa !5
  %3238 = load i64, ptr %3237, align 8, !tbaa !9
  %3239 = icmp sle i64 %3236, %3238
  br i1 %3239, label %3240, label %3242

3240:                                             ; preds = %3227
  %3241 = load i64, ptr %37, align 8, !tbaa !9
  br label %3245

3242:                                             ; preds = %3227
  %3243 = load ptr, ptr %19, align 8, !tbaa !5
  %3244 = load i64, ptr %3243, align 8, !tbaa !9
  br label %3245

3245:                                             ; preds = %3242, %3240
  %3246 = phi i64 [ %3241, %3240 ], [ %3244, %3242 ]
  %3247 = load i64, ptr %30, align 8, !tbaa !9
  %3248 = mul nsw i64 %3246, %3247
  %3249 = add nsw i64 %3235, %3248
  %3250 = getelementptr inbounds double, ptr %3234, i64 %3249
  %3251 = load ptr, ptr %23, align 8, !tbaa !5
  %3252 = call double @f2c_ddot(ptr noundef %35, ptr noundef %3232, ptr noundef %3233, ptr noundef %3250, ptr noundef %3251)
  store double %3252, ptr %58, align 8, !tbaa !11
  %3253 = load ptr, ptr %24, align 8, !tbaa !5
  %3254 = load i64, ptr %45, align 8, !tbaa !9
  %3255 = load i64, ptr %46, align 8, !tbaa !9
  %3256 = load i64, ptr %32, align 8, !tbaa !9
  %3257 = mul nsw i64 %3255, %3256
  %3258 = add nsw i64 %3254, %3257
  %3259 = getelementptr inbounds double, ptr %3253, i64 %3258
  %3260 = load double, ptr %3259, align 8, !tbaa !11
  %3261 = load double, ptr %57, align 8, !tbaa !11
  %3262 = load double, ptr %54, align 8, !tbaa !11
  %3263 = load double, ptr %58, align 8, !tbaa !11
  %3264 = call double @llvm.fmuladd.f64(double %3262, double %3263, double %3261)
  %3265 = fsub double %3260, %3264
  %3266 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %3265, ptr %3266, align 8, !tbaa !11
  %3267 = load i64, ptr %44, align 8, !tbaa !9
  %3268 = sub nsw i64 %3267, 1
  store i64 %3268, ptr %35, align 8, !tbaa !9
  %3269 = load ptr, ptr %20, align 8, !tbaa !5
  %3270 = load i64, ptr %45, align 8, !tbaa !9
  %3271 = load i64, ptr %28, align 8, !tbaa !9
  %3272 = mul nsw i64 %3270, %3271
  %3273 = add nsw i64 %3272, 1
  %3274 = getelementptr inbounds double, ptr %3269, i64 %3273
  %3275 = load ptr, ptr %24, align 8, !tbaa !5
  %3276 = load i64, ptr %47, align 8, !tbaa !9
  %3277 = load i64, ptr %32, align 8, !tbaa !9
  %3278 = mul nsw i64 %3276, %3277
  %3279 = add nsw i64 %3278, 1
  %3280 = getelementptr inbounds double, ptr %3275, i64 %3279
  %3281 = call double @f2c_ddot(ptr noundef %35, ptr noundef %3274, ptr noundef @c__1, ptr noundef %3280, ptr noundef @c__1)
  store double %3281, ptr %57, align 8, !tbaa !11
  %3282 = load ptr, ptr %19, align 8, !tbaa !5
  %3283 = load i64, ptr %3282, align 8, !tbaa !9
  %3284 = load i64, ptr %47, align 8, !tbaa !9
  %3285 = sub nsw i64 %3283, %3284
  store i64 %3285, ptr %35, align 8, !tbaa !9
  %3286 = load i64, ptr %47, align 8, !tbaa !9
  %3287 = add nsw i64 %3286, 1
  store i64 %3287, ptr %36, align 8, !tbaa !9
  %3288 = load i64, ptr %47, align 8, !tbaa !9
  %3289 = add nsw i64 %3288, 1
  store i64 %3289, ptr %37, align 8, !tbaa !9
  %3290 = load ptr, ptr %24, align 8, !tbaa !5
  %3291 = load i64, ptr %45, align 8, !tbaa !9
  %3292 = load i64, ptr %36, align 8, !tbaa !9
  %3293 = load ptr, ptr %19, align 8, !tbaa !5
  %3294 = load i64, ptr %3293, align 8, !tbaa !9
  %3295 = icmp sle i64 %3292, %3294
  br i1 %3295, label %3296, label %3298

3296:                                             ; preds = %3245
  %3297 = load i64, ptr %36, align 8, !tbaa !9
  br label %3301

3298:                                             ; preds = %3245
  %3299 = load ptr, ptr %19, align 8, !tbaa !5
  %3300 = load i64, ptr %3299, align 8, !tbaa !9
  br label %3301

3301:                                             ; preds = %3298, %3296
  %3302 = phi i64 [ %3297, %3296 ], [ %3300, %3298 ]
  %3303 = load i64, ptr %32, align 8, !tbaa !9
  %3304 = mul nsw i64 %3302, %3303
  %3305 = add nsw i64 %3291, %3304
  %3306 = getelementptr inbounds double, ptr %3290, i64 %3305
  %3307 = load ptr, ptr %25, align 8, !tbaa !5
  %3308 = load ptr, ptr %22, align 8, !tbaa !5
  %3309 = load i64, ptr %47, align 8, !tbaa !9
  %3310 = load i64, ptr %37, align 8, !tbaa !9
  %3311 = load ptr, ptr %19, align 8, !tbaa !5
  %3312 = load i64, ptr %3311, align 8, !tbaa !9
  %3313 = icmp sle i64 %3310, %3312
  br i1 %3313, label %3314, label %3316

3314:                                             ; preds = %3301
  %3315 = load i64, ptr %37, align 8, !tbaa !9
  br label %3319

3316:                                             ; preds = %3301
  %3317 = load ptr, ptr %19, align 8, !tbaa !5
  %3318 = load i64, ptr %3317, align 8, !tbaa !9
  br label %3319

3319:                                             ; preds = %3316, %3314
  %3320 = phi i64 [ %3315, %3314 ], [ %3318, %3316 ]
  %3321 = load i64, ptr %30, align 8, !tbaa !9
  %3322 = mul nsw i64 %3320, %3321
  %3323 = add nsw i64 %3309, %3322
  %3324 = getelementptr inbounds double, ptr %3308, i64 %3323
  %3325 = load ptr, ptr %23, align 8, !tbaa !5
  %3326 = call double @f2c_ddot(ptr noundef %35, ptr noundef %3306, ptr noundef %3307, ptr noundef %3324, ptr noundef %3325)
  store double %3326, ptr %58, align 8, !tbaa !11
  %3327 = load ptr, ptr %24, align 8, !tbaa !5
  %3328 = load i64, ptr %45, align 8, !tbaa !9
  %3329 = load i64, ptr %47, align 8, !tbaa !9
  %3330 = load i64, ptr %32, align 8, !tbaa !9
  %3331 = mul nsw i64 %3329, %3330
  %3332 = add nsw i64 %3328, %3331
  %3333 = getelementptr inbounds double, ptr %3327, i64 %3332
  %3334 = load double, ptr %3333, align 8, !tbaa !11
  %3335 = load double, ptr %57, align 8, !tbaa !11
  %3336 = load double, ptr %54, align 8, !tbaa !11
  %3337 = load double, ptr %58, align 8, !tbaa !11
  %3338 = call double @llvm.fmuladd.f64(double %3336, double %3337, double %3335)
  %3339 = fsub double %3334, %3338
  %3340 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 3
  store double %3339, ptr %3340, align 8, !tbaa !11
  %3341 = load ptr, ptr %17, align 8, !tbaa !5
  %3342 = load ptr, ptr %20, align 8, !tbaa !5
  %3343 = load i64, ptr %44, align 8, !tbaa !9
  %3344 = load i64, ptr %44, align 8, !tbaa !9
  %3345 = load i64, ptr %28, align 8, !tbaa !9
  %3346 = mul nsw i64 %3344, %3345
  %3347 = add nsw i64 %3343, %3346
  %3348 = getelementptr inbounds double, ptr %3342, i64 %3347
  %3349 = load ptr, ptr %21, align 8, !tbaa !5
  %3350 = load ptr, ptr %22, align 8, !tbaa !5
  %3351 = load i64, ptr %46, align 8, !tbaa !9
  %3352 = load i64, ptr %46, align 8, !tbaa !9
  %3353 = load i64, ptr %30, align 8, !tbaa !9
  %3354 = mul nsw i64 %3352, %3353
  %3355 = add nsw i64 %3351, %3354
  %3356 = getelementptr inbounds double, ptr %3350, i64 %3355
  %3357 = load ptr, ptr %23, align 8, !tbaa !5
  %3358 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %3359 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %3360 = call i32 @dlasy2_(ptr noundef @c_true, ptr noundef @c_true, ptr noundef %3341, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %3348, ptr noundef %3349, ptr noundef %3356, ptr noundef %3357, ptr noundef %3358, ptr noundef @c__2, ptr noundef %62, ptr noundef %3359, ptr noundef @c__2, ptr noundef %61, ptr noundef %55)
  %3361 = load i64, ptr %55, align 8, !tbaa !9
  %3362 = icmp ne i64 %3361, 0
  br i1 %3362, label %3363, label %3365

3363:                                             ; preds = %3319
  %3364 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %3364, align 8, !tbaa !9
  br label %3365

3365:                                             ; preds = %3363, %3319
  %3366 = load double, ptr %62, align 8, !tbaa !11
  %3367 = fcmp une double %3366, 1.000000e+00
  br i1 %3367, label %3368, label %3392

3368:                                             ; preds = %3365
  %3369 = load ptr, ptr %19, align 8, !tbaa !5
  %3370 = load i64, ptr %3369, align 8, !tbaa !9
  store i64 %3370, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %3371

3371:                                             ; preds = %3384, %3368
  %3372 = load i64, ptr %40, align 8, !tbaa !9
  %3373 = load i64, ptr %35, align 8, !tbaa !9
  %3374 = icmp sle i64 %3372, %3373
  br i1 %3374, label %3375, label %3387

3375:                                             ; preds = %3371
  %3376 = load ptr, ptr %18, align 8, !tbaa !5
  %3377 = load ptr, ptr %24, align 8, !tbaa !5
  %3378 = load i64, ptr %40, align 8, !tbaa !9
  %3379 = load i64, ptr %32, align 8, !tbaa !9
  %3380 = mul nsw i64 %3378, %3379
  %3381 = add nsw i64 %3380, 1
  %3382 = getelementptr inbounds double, ptr %3377, i64 %3381
  %3383 = call i32 @f2c_dscal(ptr noundef %3376, ptr noundef %62, ptr noundef %3382, ptr noundef @c__1)
  br label %3384

3384:                                             ; preds = %3375
  %3385 = load i64, ptr %40, align 8, !tbaa !9
  %3386 = add nsw i64 %3385, 1
  store i64 %3386, ptr %40, align 8, !tbaa !9
  br label %3371, !llvm.loop !29

3387:                                             ; preds = %3371
  %3388 = load double, ptr %62, align 8, !tbaa !11
  %3389 = load ptr, ptr %26, align 8, !tbaa !5
  %3390 = load double, ptr %3389, align 8, !tbaa !11
  %3391 = fmul double %3390, %3388
  store double %3391, ptr %3389, align 8, !tbaa !11
  br label %3392

3392:                                             ; preds = %3387, %3365
  %3393 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %3394 = load double, ptr %3393, align 16, !tbaa !11
  %3395 = load ptr, ptr %24, align 8, !tbaa !5
  %3396 = load i64, ptr %44, align 8, !tbaa !9
  %3397 = load i64, ptr %46, align 8, !tbaa !9
  %3398 = load i64, ptr %32, align 8, !tbaa !9
  %3399 = mul nsw i64 %3397, %3398
  %3400 = add nsw i64 %3396, %3399
  %3401 = getelementptr inbounds double, ptr %3395, i64 %3400
  store double %3394, ptr %3401, align 8, !tbaa !11
  %3402 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 2
  %3403 = load double, ptr %3402, align 16, !tbaa !11
  %3404 = load ptr, ptr %24, align 8, !tbaa !5
  %3405 = load i64, ptr %44, align 8, !tbaa !9
  %3406 = load i64, ptr %47, align 8, !tbaa !9
  %3407 = load i64, ptr %32, align 8, !tbaa !9
  %3408 = mul nsw i64 %3406, %3407
  %3409 = add nsw i64 %3405, %3408
  %3410 = getelementptr inbounds double, ptr %3404, i64 %3409
  store double %3403, ptr %3410, align 8, !tbaa !11
  %3411 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %3412 = load double, ptr %3411, align 8, !tbaa !11
  %3413 = load ptr, ptr %24, align 8, !tbaa !5
  %3414 = load i64, ptr %45, align 8, !tbaa !9
  %3415 = load i64, ptr %46, align 8, !tbaa !9
  %3416 = load i64, ptr %32, align 8, !tbaa !9
  %3417 = mul nsw i64 %3415, %3416
  %3418 = add nsw i64 %3414, %3417
  %3419 = getelementptr inbounds double, ptr %3413, i64 %3418
  store double %3412, ptr %3419, align 8, !tbaa !11
  %3420 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 3
  %3421 = load double, ptr %3420, align 8, !tbaa !11
  %3422 = load ptr, ptr %24, align 8, !tbaa !5
  %3423 = load i64, ptr %45, align 8, !tbaa !9
  %3424 = load i64, ptr %47, align 8, !tbaa !9
  %3425 = load i64, ptr %32, align 8, !tbaa !9
  %3426 = mul nsw i64 %3424, %3425
  %3427 = add nsw i64 %3423, %3426
  %3428 = getelementptr inbounds double, ptr %3422, i64 %3427
  store double %3421, ptr %3428, align 8, !tbaa !11
  br label %3429

3429:                                             ; preds = %3392, %3040, %3036
  br label %3430

3430:                                             ; preds = %3429, %3017
  br label %3431

3431:                                             ; preds = %3430, %2784
  br label %3432

3432:                                             ; preds = %3431, %2564
  br label %3433

3433:                                             ; preds = %3432, %2353
  br label %3434

3434:                                             ; preds = %3433
  %3435 = load i64, ptr %41, align 8, !tbaa !9
  %3436 = add nsw i64 %3435, 1
  store i64 %3436, ptr %41, align 8, !tbaa !9
  br label %2345, !llvm.loop !30

3437:                                             ; preds = %2345
  br label %3438

3438:                                             ; preds = %3437, %2312
  br label %3439

3439:                                             ; preds = %3438
  %3440 = load i64, ptr %42, align 8, !tbaa !9
  %3441 = add nsw i64 %3440, -1
  store i64 %3441, ptr %42, align 8, !tbaa !9
  br label %2305, !llvm.loop !31

3442:                                             ; preds = %2305
  br label %4853

3443:                                             ; preds = %2297, %2294
  %3444 = load i64, ptr %64, align 8, !tbaa !9
  %3445 = icmp ne i64 %3444, 0
  br i1 %3445, label %3446, label %4852

3446:                                             ; preds = %3443
  %3447 = load i64, ptr %65, align 8, !tbaa !9
  %3448 = icmp ne i64 %3447, 0
  br i1 %3448, label %4852, label %3449

3449:                                             ; preds = %3446
  %3450 = load ptr, ptr %19, align 8, !tbaa !5
  %3451 = load i64, ptr %3450, align 8, !tbaa !9
  store i64 %3451, ptr %60, align 8, !tbaa !9
  %3452 = load ptr, ptr %19, align 8, !tbaa !5
  %3453 = load i64, ptr %3452, align 8, !tbaa !9
  store i64 %3453, ptr %42, align 8, !tbaa !9
  br label %3454

3454:                                             ; preds = %4848, %3449
  %3455 = load i64, ptr %42, align 8, !tbaa !9
  %3456 = icmp sge i64 %3455, 1
  br i1 %3456, label %3457, label %4851

3457:                                             ; preds = %3454
  %3458 = load i64, ptr %42, align 8, !tbaa !9
  %3459 = load i64, ptr %60, align 8, !tbaa !9
  %3460 = icmp sgt i64 %3458, %3459
  br i1 %3460, label %3461, label %3462

3461:                                             ; preds = %3457
  br label %4847

3462:                                             ; preds = %3457
  %3463 = load i64, ptr %42, align 8, !tbaa !9
  %3464 = icmp eq i64 %3463, 1
  br i1 %3464, label %3465, label %3468

3465:                                             ; preds = %3462
  %3466 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %3466, ptr %46, align 8, !tbaa !9
  %3467 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %3467, ptr %47, align 8, !tbaa !9
  br label %3491

3468:                                             ; preds = %3462
  %3469 = load ptr, ptr %22, align 8, !tbaa !5
  %3470 = load i64, ptr %42, align 8, !tbaa !9
  %3471 = load i64, ptr %42, align 8, !tbaa !9
  %3472 = sub nsw i64 %3471, 1
  %3473 = load i64, ptr %30, align 8, !tbaa !9
  %3474 = mul nsw i64 %3472, %3473
  %3475 = add nsw i64 %3470, %3474
  %3476 = getelementptr inbounds double, ptr %3469, i64 %3475
  %3477 = load double, ptr %3476, align 8, !tbaa !11
  %3478 = fcmp une double %3477, 0.000000e+00
  br i1 %3478, label %3479, label %3485

3479:                                             ; preds = %3468
  %3480 = load i64, ptr %42, align 8, !tbaa !9
  %3481 = sub nsw i64 %3480, 1
  store i64 %3481, ptr %46, align 8, !tbaa !9
  %3482 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %3482, ptr %47, align 8, !tbaa !9
  %3483 = load i64, ptr %42, align 8, !tbaa !9
  %3484 = sub nsw i64 %3483, 2
  store i64 %3484, ptr %60, align 8, !tbaa !9
  br label %3490

3485:                                             ; preds = %3468
  %3486 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %3486, ptr %46, align 8, !tbaa !9
  %3487 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %3487, ptr %47, align 8, !tbaa !9
  %3488 = load i64, ptr %42, align 8, !tbaa !9
  %3489 = sub nsw i64 %3488, 1
  store i64 %3489, ptr %60, align 8, !tbaa !9
  br label %3490

3490:                                             ; preds = %3485, %3479
  br label %3491

3491:                                             ; preds = %3490, %3465
  %3492 = load ptr, ptr %18, align 8, !tbaa !5
  %3493 = load i64, ptr %3492, align 8, !tbaa !9
  store i64 %3493, ptr %59, align 8, !tbaa !9
  %3494 = load ptr, ptr %18, align 8, !tbaa !5
  %3495 = load i64, ptr %3494, align 8, !tbaa !9
  store i64 %3495, ptr %41, align 8, !tbaa !9
  br label %3496

3496:                                             ; preds = %4843, %3491
  %3497 = load i64, ptr %41, align 8, !tbaa !9
  %3498 = icmp sge i64 %3497, 1
  br i1 %3498, label %3499, label %4846

3499:                                             ; preds = %3496
  %3500 = load i64, ptr %41, align 8, !tbaa !9
  %3501 = load i64, ptr %59, align 8, !tbaa !9
  %3502 = icmp sgt i64 %3500, %3501
  br i1 %3502, label %3503, label %3504

3503:                                             ; preds = %3499
  br label %4842

3504:                                             ; preds = %3499
  %3505 = load i64, ptr %41, align 8, !tbaa !9
  %3506 = icmp eq i64 %3505, 1
  br i1 %3506, label %3507, label %3510

3507:                                             ; preds = %3504
  %3508 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %3508, ptr %44, align 8, !tbaa !9
  %3509 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %3509, ptr %45, align 8, !tbaa !9
  br label %3533

3510:                                             ; preds = %3504
  %3511 = load ptr, ptr %20, align 8, !tbaa !5
  %3512 = load i64, ptr %41, align 8, !tbaa !9
  %3513 = load i64, ptr %41, align 8, !tbaa !9
  %3514 = sub nsw i64 %3513, 1
  %3515 = load i64, ptr %28, align 8, !tbaa !9
  %3516 = mul nsw i64 %3514, %3515
  %3517 = add nsw i64 %3512, %3516
  %3518 = getelementptr inbounds double, ptr %3511, i64 %3517
  %3519 = load double, ptr %3518, align 8, !tbaa !11
  %3520 = fcmp une double %3519, 0.000000e+00
  br i1 %3520, label %3521, label %3527

3521:                                             ; preds = %3510
  %3522 = load i64, ptr %41, align 8, !tbaa !9
  %3523 = sub nsw i64 %3522, 1
  store i64 %3523, ptr %44, align 8, !tbaa !9
  %3524 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %3524, ptr %45, align 8, !tbaa !9
  %3525 = load i64, ptr %41, align 8, !tbaa !9
  %3526 = sub nsw i64 %3525, 2
  store i64 %3526, ptr %59, align 8, !tbaa !9
  br label %3532

3527:                                             ; preds = %3510
  %3528 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %3528, ptr %44, align 8, !tbaa !9
  %3529 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %3529, ptr %45, align 8, !tbaa !9
  %3530 = load i64, ptr %41, align 8, !tbaa !9
  %3531 = sub nsw i64 %3530, 1
  store i64 %3531, ptr %59, align 8, !tbaa !9
  br label %3532

3532:                                             ; preds = %3527, %3521
  br label %3533

3533:                                             ; preds = %3532, %3507
  %3534 = load i64, ptr %46, align 8, !tbaa !9
  %3535 = load i64, ptr %47, align 8, !tbaa !9
  %3536 = icmp eq i64 %3534, %3535
  br i1 %3536, label %3537, label %3751

3537:                                             ; preds = %3533
  %3538 = load i64, ptr %44, align 8, !tbaa !9
  %3539 = load i64, ptr %45, align 8, !tbaa !9
  %3540 = icmp eq i64 %3538, %3539
  br i1 %3540, label %3541, label %3751

3541:                                             ; preds = %3537
  %3542 = load ptr, ptr %18, align 8, !tbaa !5
  %3543 = load i64, ptr %3542, align 8, !tbaa !9
  %3544 = load i64, ptr %44, align 8, !tbaa !9
  %3545 = sub nsw i64 %3543, %3544
  store i64 %3545, ptr %34, align 8, !tbaa !9
  %3546 = load i64, ptr %44, align 8, !tbaa !9
  %3547 = add nsw i64 %3546, 1
  store i64 %3547, ptr %35, align 8, !tbaa !9
  %3548 = load i64, ptr %44, align 8, !tbaa !9
  %3549 = add nsw i64 %3548, 1
  store i64 %3549, ptr %36, align 8, !tbaa !9
  %3550 = load ptr, ptr %20, align 8, !tbaa !5
  %3551 = load i64, ptr %44, align 8, !tbaa !9
  %3552 = load i64, ptr %35, align 8, !tbaa !9
  %3553 = load ptr, ptr %18, align 8, !tbaa !5
  %3554 = load i64, ptr %3553, align 8, !tbaa !9
  %3555 = icmp sle i64 %3552, %3554
  br i1 %3555, label %3556, label %3558

3556:                                             ; preds = %3541
  %3557 = load i64, ptr %35, align 8, !tbaa !9
  br label %3561

3558:                                             ; preds = %3541
  %3559 = load ptr, ptr %18, align 8, !tbaa !5
  %3560 = load i64, ptr %3559, align 8, !tbaa !9
  br label %3561

3561:                                             ; preds = %3558, %3556
  %3562 = phi i64 [ %3557, %3556 ], [ %3560, %3558 ]
  %3563 = load i64, ptr %28, align 8, !tbaa !9
  %3564 = mul nsw i64 %3562, %3563
  %3565 = add nsw i64 %3551, %3564
  %3566 = getelementptr inbounds double, ptr %3550, i64 %3565
  %3567 = load ptr, ptr %21, align 8, !tbaa !5
  %3568 = load ptr, ptr %24, align 8, !tbaa !5
  %3569 = load i64, ptr %36, align 8, !tbaa !9
  %3570 = load ptr, ptr %18, align 8, !tbaa !5
  %3571 = load i64, ptr %3570, align 8, !tbaa !9
  %3572 = icmp sle i64 %3569, %3571
  br i1 %3572, label %3573, label %3575

3573:                                             ; preds = %3561
  %3574 = load i64, ptr %36, align 8, !tbaa !9
  br label %3578

3575:                                             ; preds = %3561
  %3576 = load ptr, ptr %18, align 8, !tbaa !5
  %3577 = load i64, ptr %3576, align 8, !tbaa !9
  br label %3578

3578:                                             ; preds = %3575, %3573
  %3579 = phi i64 [ %3574, %3573 ], [ %3577, %3575 ]
  %3580 = load i64, ptr %46, align 8, !tbaa !9
  %3581 = load i64, ptr %32, align 8, !tbaa !9
  %3582 = mul nsw i64 %3580, %3581
  %3583 = add nsw i64 %3579, %3582
  %3584 = getelementptr inbounds double, ptr %3568, i64 %3583
  %3585 = call double @f2c_ddot(ptr noundef %34, ptr noundef %3566, ptr noundef %3567, ptr noundef %3584, ptr noundef @c__1)
  store double %3585, ptr %57, align 8, !tbaa !11
  %3586 = load ptr, ptr %19, align 8, !tbaa !5
  %3587 = load i64, ptr %3586, align 8, !tbaa !9
  %3588 = load i64, ptr %46, align 8, !tbaa !9
  %3589 = sub nsw i64 %3587, %3588
  store i64 %3589, ptr %34, align 8, !tbaa !9
  %3590 = load i64, ptr %46, align 8, !tbaa !9
  %3591 = add nsw i64 %3590, 1
  store i64 %3591, ptr %35, align 8, !tbaa !9
  %3592 = load i64, ptr %46, align 8, !tbaa !9
  %3593 = add nsw i64 %3592, 1
  store i64 %3593, ptr %36, align 8, !tbaa !9
  %3594 = load ptr, ptr %24, align 8, !tbaa !5
  %3595 = load i64, ptr %44, align 8, !tbaa !9
  %3596 = load i64, ptr %35, align 8, !tbaa !9
  %3597 = load ptr, ptr %19, align 8, !tbaa !5
  %3598 = load i64, ptr %3597, align 8, !tbaa !9
  %3599 = icmp sle i64 %3596, %3598
  br i1 %3599, label %3600, label %3602

3600:                                             ; preds = %3578
  %3601 = load i64, ptr %35, align 8, !tbaa !9
  br label %3605

3602:                                             ; preds = %3578
  %3603 = load ptr, ptr %19, align 8, !tbaa !5
  %3604 = load i64, ptr %3603, align 8, !tbaa !9
  br label %3605

3605:                                             ; preds = %3602, %3600
  %3606 = phi i64 [ %3601, %3600 ], [ %3604, %3602 ]
  %3607 = load i64, ptr %32, align 8, !tbaa !9
  %3608 = mul nsw i64 %3606, %3607
  %3609 = add nsw i64 %3595, %3608
  %3610 = getelementptr inbounds double, ptr %3594, i64 %3609
  %3611 = load ptr, ptr %25, align 8, !tbaa !5
  %3612 = load ptr, ptr %22, align 8, !tbaa !5
  %3613 = load i64, ptr %46, align 8, !tbaa !9
  %3614 = load i64, ptr %36, align 8, !tbaa !9
  %3615 = load ptr, ptr %19, align 8, !tbaa !5
  %3616 = load i64, ptr %3615, align 8, !tbaa !9
  %3617 = icmp sle i64 %3614, %3616
  br i1 %3617, label %3618, label %3620

3618:                                             ; preds = %3605
  %3619 = load i64, ptr %36, align 8, !tbaa !9
  br label %3623

3620:                                             ; preds = %3605
  %3621 = load ptr, ptr %19, align 8, !tbaa !5
  %3622 = load i64, ptr %3621, align 8, !tbaa !9
  br label %3623

3623:                                             ; preds = %3620, %3618
  %3624 = phi i64 [ %3619, %3618 ], [ %3622, %3620 ]
  %3625 = load i64, ptr %30, align 8, !tbaa !9
  %3626 = mul nsw i64 %3624, %3625
  %3627 = add nsw i64 %3613, %3626
  %3628 = getelementptr inbounds double, ptr %3612, i64 %3627
  %3629 = load ptr, ptr %23, align 8, !tbaa !5
  %3630 = call double @f2c_ddot(ptr noundef %34, ptr noundef %3610, ptr noundef %3611, ptr noundef %3628, ptr noundef %3629)
  store double %3630, ptr %58, align 8, !tbaa !11
  %3631 = load ptr, ptr %24, align 8, !tbaa !5
  %3632 = load i64, ptr %44, align 8, !tbaa !9
  %3633 = load i64, ptr %46, align 8, !tbaa !9
  %3634 = load i64, ptr %32, align 8, !tbaa !9
  %3635 = mul nsw i64 %3633, %3634
  %3636 = add nsw i64 %3632, %3635
  %3637 = getelementptr inbounds double, ptr %3631, i64 %3636
  %3638 = load double, ptr %3637, align 8, !tbaa !11
  %3639 = load double, ptr %57, align 8, !tbaa !11
  %3640 = load double, ptr %54, align 8, !tbaa !11
  %3641 = load double, ptr %58, align 8, !tbaa !11
  %3642 = call double @llvm.fmuladd.f64(double %3640, double %3641, double %3639)
  %3643 = fsub double %3638, %3642
  %3644 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %3643, ptr %3644, align 16, !tbaa !11
  store double 1.000000e+00, ptr %62, align 8, !tbaa !11
  %3645 = load ptr, ptr %20, align 8, !tbaa !5
  %3646 = load i64, ptr %44, align 8, !tbaa !9
  %3647 = load i64, ptr %44, align 8, !tbaa !9
  %3648 = load i64, ptr %28, align 8, !tbaa !9
  %3649 = mul nsw i64 %3647, %3648
  %3650 = add nsw i64 %3646, %3649
  %3651 = getelementptr inbounds double, ptr %3645, i64 %3650
  %3652 = load double, ptr %3651, align 8, !tbaa !11
  %3653 = load double, ptr %54, align 8, !tbaa !11
  %3654 = load ptr, ptr %22, align 8, !tbaa !5
  %3655 = load i64, ptr %46, align 8, !tbaa !9
  %3656 = load i64, ptr %46, align 8, !tbaa !9
  %3657 = load i64, ptr %30, align 8, !tbaa !9
  %3658 = mul nsw i64 %3656, %3657
  %3659 = add nsw i64 %3655, %3658
  %3660 = getelementptr inbounds double, ptr %3654, i64 %3659
  %3661 = load double, ptr %3660, align 8, !tbaa !11
  %3662 = call double @llvm.fmuladd.f64(double %3653, double %3661, double %3652)
  store double %3662, ptr %48, align 8, !tbaa !11
  %3663 = load double, ptr %48, align 8, !tbaa !11
  %3664 = fcmp oge double %3663, 0.000000e+00
  br i1 %3664, label %3665, label %3667

3665:                                             ; preds = %3623
  %3666 = load double, ptr %48, align 8, !tbaa !11
  br label %3670

3667:                                             ; preds = %3623
  %3668 = load double, ptr %48, align 8, !tbaa !11
  %3669 = fneg double %3668
  br label %3670

3670:                                             ; preds = %3667, %3665
  %3671 = phi double [ %3666, %3665 ], [ %3669, %3667 ]
  store double %3671, ptr %50, align 8, !tbaa !11
  %3672 = load double, ptr %50, align 8, !tbaa !11
  %3673 = load double, ptr %56, align 8, !tbaa !11
  %3674 = fcmp ole double %3672, %3673
  br i1 %3674, label %3675, label %3679

3675:                                             ; preds = %3670
  %3676 = load double, ptr %56, align 8, !tbaa !11
  store double %3676, ptr %48, align 8, !tbaa !11
  %3677 = load double, ptr %56, align 8, !tbaa !11
  store double %3677, ptr %50, align 8, !tbaa !11
  %3678 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %3678, align 8, !tbaa !9
  br label %3679

3679:                                             ; preds = %3675, %3670
  %3680 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %3681 = load double, ptr %3680, align 16, !tbaa !11
  %3682 = fcmp oge double %3681, 0.000000e+00
  br i1 %3682, label %3683, label %3686

3683:                                             ; preds = %3679
  %3684 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %3685 = load double, ptr %3684, align 16, !tbaa !11
  br label %3690

3686:                                             ; preds = %3679
  %3687 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %3688 = load double, ptr %3687, align 16, !tbaa !11
  %3689 = fneg double %3688
  br label %3690

3690:                                             ; preds = %3686, %3683
  %3691 = phi double [ %3685, %3683 ], [ %3689, %3686 ]
  store double %3691, ptr %49, align 8, !tbaa !11
  %3692 = load double, ptr %50, align 8, !tbaa !11
  %3693 = fcmp olt double %3692, 1.000000e+00
  br i1 %3693, label %3694, label %3707

3694:                                             ; preds = %3690
  %3695 = load double, ptr %49, align 8, !tbaa !11
  %3696 = fcmp ogt double %3695, 1.000000e+00
  br i1 %3696, label %3697, label %3707

3697:                                             ; preds = %3694
  %3698 = load double, ptr %49, align 8, !tbaa !11
  %3699 = load double, ptr %63, align 8, !tbaa !11
  %3700 = load double, ptr %50, align 8, !tbaa !11
  %3701 = fmul double %3699, %3700
  %3702 = fcmp ogt double %3698, %3701
  br i1 %3702, label %3703, label %3706

3703:                                             ; preds = %3697
  %3704 = load double, ptr %49, align 8, !tbaa !11
  %3705 = fdiv double 1.000000e+00, %3704
  store double %3705, ptr %62, align 8, !tbaa !11
  br label %3706

3706:                                             ; preds = %3703, %3697
  br label %3707

3707:                                             ; preds = %3706, %3694, %3690
  %3708 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %3709 = load double, ptr %3708, align 16, !tbaa !11
  %3710 = load double, ptr %62, align 8, !tbaa !11
  %3711 = fmul double %3709, %3710
  %3712 = load double, ptr %48, align 8, !tbaa !11
  %3713 = fdiv double %3711, %3712
  %3714 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  store double %3713, ptr %3714, align 16, !tbaa !11
  %3715 = load double, ptr %62, align 8, !tbaa !11
  %3716 = fcmp une double %3715, 1.000000e+00
  br i1 %3716, label %3717, label %3741

3717:                                             ; preds = %3707
  %3718 = load ptr, ptr %19, align 8, !tbaa !5
  %3719 = load i64, ptr %3718, align 8, !tbaa !9
  store i64 %3719, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %3720

3720:                                             ; preds = %3733, %3717
  %3721 = load i64, ptr %40, align 8, !tbaa !9
  %3722 = load i64, ptr %34, align 8, !tbaa !9
  %3723 = icmp sle i64 %3721, %3722
  br i1 %3723, label %3724, label %3736

3724:                                             ; preds = %3720
  %3725 = load ptr, ptr %18, align 8, !tbaa !5
  %3726 = load ptr, ptr %24, align 8, !tbaa !5
  %3727 = load i64, ptr %40, align 8, !tbaa !9
  %3728 = load i64, ptr %32, align 8, !tbaa !9
  %3729 = mul nsw i64 %3727, %3728
  %3730 = add nsw i64 %3729, 1
  %3731 = getelementptr inbounds double, ptr %3726, i64 %3730
  %3732 = call i32 @f2c_dscal(ptr noundef %3725, ptr noundef %62, ptr noundef %3731, ptr noundef @c__1)
  br label %3733

3733:                                             ; preds = %3724
  %3734 = load i64, ptr %40, align 8, !tbaa !9
  %3735 = add nsw i64 %3734, 1
  store i64 %3735, ptr %40, align 8, !tbaa !9
  br label %3720, !llvm.loop !32

3736:                                             ; preds = %3720
  %3737 = load double, ptr %62, align 8, !tbaa !11
  %3738 = load ptr, ptr %26, align 8, !tbaa !5
  %3739 = load double, ptr %3738, align 8, !tbaa !11
  %3740 = fmul double %3739, %3737
  store double %3740, ptr %3738, align 8, !tbaa !11
  br label %3741

3741:                                             ; preds = %3736, %3707
  %3742 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %3743 = load double, ptr %3742, align 16, !tbaa !11
  %3744 = load ptr, ptr %24, align 8, !tbaa !5
  %3745 = load i64, ptr %44, align 8, !tbaa !9
  %3746 = load i64, ptr %46, align 8, !tbaa !9
  %3747 = load i64, ptr %32, align 8, !tbaa !9
  %3748 = mul nsw i64 %3746, %3747
  %3749 = add nsw i64 %3745, %3748
  %3750 = getelementptr inbounds double, ptr %3744, i64 %3749
  store double %3743, ptr %3750, align 8, !tbaa !11
  br label %4841

3751:                                             ; preds = %3537, %3533
  %3752 = load i64, ptr %46, align 8, !tbaa !9
  %3753 = load i64, ptr %47, align 8, !tbaa !9
  %3754 = icmp eq i64 %3752, %3753
  br i1 %3754, label %3755, label %4038

3755:                                             ; preds = %3751
  %3756 = load i64, ptr %44, align 8, !tbaa !9
  %3757 = load i64, ptr %45, align 8, !tbaa !9
  %3758 = icmp ne i64 %3756, %3757
  br i1 %3758, label %3759, label %4038

3759:                                             ; preds = %3755
  %3760 = load ptr, ptr %18, align 8, !tbaa !5
  %3761 = load i64, ptr %3760, align 8, !tbaa !9
  %3762 = load i64, ptr %45, align 8, !tbaa !9
  %3763 = sub nsw i64 %3761, %3762
  store i64 %3763, ptr %34, align 8, !tbaa !9
  %3764 = load i64, ptr %45, align 8, !tbaa !9
  %3765 = add nsw i64 %3764, 1
  store i64 %3765, ptr %35, align 8, !tbaa !9
  %3766 = load i64, ptr %45, align 8, !tbaa !9
  %3767 = add nsw i64 %3766, 1
  store i64 %3767, ptr %36, align 8, !tbaa !9
  %3768 = load ptr, ptr %20, align 8, !tbaa !5
  %3769 = load i64, ptr %44, align 8, !tbaa !9
  %3770 = load i64, ptr %35, align 8, !tbaa !9
  %3771 = load ptr, ptr %18, align 8, !tbaa !5
  %3772 = load i64, ptr %3771, align 8, !tbaa !9
  %3773 = icmp sle i64 %3770, %3772
  br i1 %3773, label %3774, label %3776

3774:                                             ; preds = %3759
  %3775 = load i64, ptr %35, align 8, !tbaa !9
  br label %3779

3776:                                             ; preds = %3759
  %3777 = load ptr, ptr %18, align 8, !tbaa !5
  %3778 = load i64, ptr %3777, align 8, !tbaa !9
  br label %3779

3779:                                             ; preds = %3776, %3774
  %3780 = phi i64 [ %3775, %3774 ], [ %3778, %3776 ]
  %3781 = load i64, ptr %28, align 8, !tbaa !9
  %3782 = mul nsw i64 %3780, %3781
  %3783 = add nsw i64 %3769, %3782
  %3784 = getelementptr inbounds double, ptr %3768, i64 %3783
  %3785 = load ptr, ptr %21, align 8, !tbaa !5
  %3786 = load ptr, ptr %24, align 8, !tbaa !5
  %3787 = load i64, ptr %36, align 8, !tbaa !9
  %3788 = load ptr, ptr %18, align 8, !tbaa !5
  %3789 = load i64, ptr %3788, align 8, !tbaa !9
  %3790 = icmp sle i64 %3787, %3789
  br i1 %3790, label %3791, label %3793

3791:                                             ; preds = %3779
  %3792 = load i64, ptr %36, align 8, !tbaa !9
  br label %3796

3793:                                             ; preds = %3779
  %3794 = load ptr, ptr %18, align 8, !tbaa !5
  %3795 = load i64, ptr %3794, align 8, !tbaa !9
  br label %3796

3796:                                             ; preds = %3793, %3791
  %3797 = phi i64 [ %3792, %3791 ], [ %3795, %3793 ]
  %3798 = load i64, ptr %46, align 8, !tbaa !9
  %3799 = load i64, ptr %32, align 8, !tbaa !9
  %3800 = mul nsw i64 %3798, %3799
  %3801 = add nsw i64 %3797, %3800
  %3802 = getelementptr inbounds double, ptr %3786, i64 %3801
  %3803 = call double @f2c_ddot(ptr noundef %34, ptr noundef %3784, ptr noundef %3785, ptr noundef %3802, ptr noundef @c__1)
  store double %3803, ptr %57, align 8, !tbaa !11
  %3804 = load ptr, ptr %19, align 8, !tbaa !5
  %3805 = load i64, ptr %3804, align 8, !tbaa !9
  %3806 = load i64, ptr %47, align 8, !tbaa !9
  %3807 = sub nsw i64 %3805, %3806
  store i64 %3807, ptr %34, align 8, !tbaa !9
  %3808 = load i64, ptr %47, align 8, !tbaa !9
  %3809 = add nsw i64 %3808, 1
  store i64 %3809, ptr %35, align 8, !tbaa !9
  %3810 = load i64, ptr %47, align 8, !tbaa !9
  %3811 = add nsw i64 %3810, 1
  store i64 %3811, ptr %36, align 8, !tbaa !9
  %3812 = load ptr, ptr %24, align 8, !tbaa !5
  %3813 = load i64, ptr %44, align 8, !tbaa !9
  %3814 = load i64, ptr %35, align 8, !tbaa !9
  %3815 = load ptr, ptr %19, align 8, !tbaa !5
  %3816 = load i64, ptr %3815, align 8, !tbaa !9
  %3817 = icmp sle i64 %3814, %3816
  br i1 %3817, label %3818, label %3820

3818:                                             ; preds = %3796
  %3819 = load i64, ptr %35, align 8, !tbaa !9
  br label %3823

3820:                                             ; preds = %3796
  %3821 = load ptr, ptr %19, align 8, !tbaa !5
  %3822 = load i64, ptr %3821, align 8, !tbaa !9
  br label %3823

3823:                                             ; preds = %3820, %3818
  %3824 = phi i64 [ %3819, %3818 ], [ %3822, %3820 ]
  %3825 = load i64, ptr %32, align 8, !tbaa !9
  %3826 = mul nsw i64 %3824, %3825
  %3827 = add nsw i64 %3813, %3826
  %3828 = getelementptr inbounds double, ptr %3812, i64 %3827
  %3829 = load ptr, ptr %25, align 8, !tbaa !5
  %3830 = load ptr, ptr %22, align 8, !tbaa !5
  %3831 = load i64, ptr %46, align 8, !tbaa !9
  %3832 = load i64, ptr %36, align 8, !tbaa !9
  %3833 = load ptr, ptr %19, align 8, !tbaa !5
  %3834 = load i64, ptr %3833, align 8, !tbaa !9
  %3835 = icmp sle i64 %3832, %3834
  br i1 %3835, label %3836, label %3838

3836:                                             ; preds = %3823
  %3837 = load i64, ptr %36, align 8, !tbaa !9
  br label %3841

3838:                                             ; preds = %3823
  %3839 = load ptr, ptr %19, align 8, !tbaa !5
  %3840 = load i64, ptr %3839, align 8, !tbaa !9
  br label %3841

3841:                                             ; preds = %3838, %3836
  %3842 = phi i64 [ %3837, %3836 ], [ %3840, %3838 ]
  %3843 = load i64, ptr %30, align 8, !tbaa !9
  %3844 = mul nsw i64 %3842, %3843
  %3845 = add nsw i64 %3831, %3844
  %3846 = getelementptr inbounds double, ptr %3830, i64 %3845
  %3847 = load ptr, ptr %23, align 8, !tbaa !5
  %3848 = call double @f2c_ddot(ptr noundef %34, ptr noundef %3828, ptr noundef %3829, ptr noundef %3846, ptr noundef %3847)
  store double %3848, ptr %58, align 8, !tbaa !11
  %3849 = load ptr, ptr %24, align 8, !tbaa !5
  %3850 = load i64, ptr %44, align 8, !tbaa !9
  %3851 = load i64, ptr %46, align 8, !tbaa !9
  %3852 = load i64, ptr %32, align 8, !tbaa !9
  %3853 = mul nsw i64 %3851, %3852
  %3854 = add nsw i64 %3850, %3853
  %3855 = getelementptr inbounds double, ptr %3849, i64 %3854
  %3856 = load double, ptr %3855, align 8, !tbaa !11
  %3857 = load double, ptr %57, align 8, !tbaa !11
  %3858 = load double, ptr %54, align 8, !tbaa !11
  %3859 = load double, ptr %58, align 8, !tbaa !11
  %3860 = call double @llvm.fmuladd.f64(double %3858, double %3859, double %3857)
  %3861 = fsub double %3856, %3860
  %3862 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %3861, ptr %3862, align 16, !tbaa !11
  %3863 = load ptr, ptr %18, align 8, !tbaa !5
  %3864 = load i64, ptr %3863, align 8, !tbaa !9
  %3865 = load i64, ptr %45, align 8, !tbaa !9
  %3866 = sub nsw i64 %3864, %3865
  store i64 %3866, ptr %34, align 8, !tbaa !9
  %3867 = load i64, ptr %45, align 8, !tbaa !9
  %3868 = add nsw i64 %3867, 1
  store i64 %3868, ptr %35, align 8, !tbaa !9
  %3869 = load i64, ptr %45, align 8, !tbaa !9
  %3870 = add nsw i64 %3869, 1
  store i64 %3870, ptr %36, align 8, !tbaa !9
  %3871 = load ptr, ptr %20, align 8, !tbaa !5
  %3872 = load i64, ptr %45, align 8, !tbaa !9
  %3873 = load i64, ptr %35, align 8, !tbaa !9
  %3874 = load ptr, ptr %18, align 8, !tbaa !5
  %3875 = load i64, ptr %3874, align 8, !tbaa !9
  %3876 = icmp sle i64 %3873, %3875
  br i1 %3876, label %3877, label %3879

3877:                                             ; preds = %3841
  %3878 = load i64, ptr %35, align 8, !tbaa !9
  br label %3882

3879:                                             ; preds = %3841
  %3880 = load ptr, ptr %18, align 8, !tbaa !5
  %3881 = load i64, ptr %3880, align 8, !tbaa !9
  br label %3882

3882:                                             ; preds = %3879, %3877
  %3883 = phi i64 [ %3878, %3877 ], [ %3881, %3879 ]
  %3884 = load i64, ptr %28, align 8, !tbaa !9
  %3885 = mul nsw i64 %3883, %3884
  %3886 = add nsw i64 %3872, %3885
  %3887 = getelementptr inbounds double, ptr %3871, i64 %3886
  %3888 = load ptr, ptr %21, align 8, !tbaa !5
  %3889 = load ptr, ptr %24, align 8, !tbaa !5
  %3890 = load i64, ptr %36, align 8, !tbaa !9
  %3891 = load ptr, ptr %18, align 8, !tbaa !5
  %3892 = load i64, ptr %3891, align 8, !tbaa !9
  %3893 = icmp sle i64 %3890, %3892
  br i1 %3893, label %3894, label %3896

3894:                                             ; preds = %3882
  %3895 = load i64, ptr %36, align 8, !tbaa !9
  br label %3899

3896:                                             ; preds = %3882
  %3897 = load ptr, ptr %18, align 8, !tbaa !5
  %3898 = load i64, ptr %3897, align 8, !tbaa !9
  br label %3899

3899:                                             ; preds = %3896, %3894
  %3900 = phi i64 [ %3895, %3894 ], [ %3898, %3896 ]
  %3901 = load i64, ptr %46, align 8, !tbaa !9
  %3902 = load i64, ptr %32, align 8, !tbaa !9
  %3903 = mul nsw i64 %3901, %3902
  %3904 = add nsw i64 %3900, %3903
  %3905 = getelementptr inbounds double, ptr %3889, i64 %3904
  %3906 = call double @f2c_ddot(ptr noundef %34, ptr noundef %3887, ptr noundef %3888, ptr noundef %3905, ptr noundef @c__1)
  store double %3906, ptr %57, align 8, !tbaa !11
  %3907 = load ptr, ptr %19, align 8, !tbaa !5
  %3908 = load i64, ptr %3907, align 8, !tbaa !9
  %3909 = load i64, ptr %47, align 8, !tbaa !9
  %3910 = sub nsw i64 %3908, %3909
  store i64 %3910, ptr %34, align 8, !tbaa !9
  %3911 = load i64, ptr %47, align 8, !tbaa !9
  %3912 = add nsw i64 %3911, 1
  store i64 %3912, ptr %35, align 8, !tbaa !9
  %3913 = load i64, ptr %47, align 8, !tbaa !9
  %3914 = add nsw i64 %3913, 1
  store i64 %3914, ptr %36, align 8, !tbaa !9
  %3915 = load ptr, ptr %24, align 8, !tbaa !5
  %3916 = load i64, ptr %45, align 8, !tbaa !9
  %3917 = load i64, ptr %35, align 8, !tbaa !9
  %3918 = load ptr, ptr %19, align 8, !tbaa !5
  %3919 = load i64, ptr %3918, align 8, !tbaa !9
  %3920 = icmp sle i64 %3917, %3919
  br i1 %3920, label %3921, label %3923

3921:                                             ; preds = %3899
  %3922 = load i64, ptr %35, align 8, !tbaa !9
  br label %3926

3923:                                             ; preds = %3899
  %3924 = load ptr, ptr %19, align 8, !tbaa !5
  %3925 = load i64, ptr %3924, align 8, !tbaa !9
  br label %3926

3926:                                             ; preds = %3923, %3921
  %3927 = phi i64 [ %3922, %3921 ], [ %3925, %3923 ]
  %3928 = load i64, ptr %32, align 8, !tbaa !9
  %3929 = mul nsw i64 %3927, %3928
  %3930 = add nsw i64 %3916, %3929
  %3931 = getelementptr inbounds double, ptr %3915, i64 %3930
  %3932 = load ptr, ptr %25, align 8, !tbaa !5
  %3933 = load ptr, ptr %22, align 8, !tbaa !5
  %3934 = load i64, ptr %46, align 8, !tbaa !9
  %3935 = load i64, ptr %36, align 8, !tbaa !9
  %3936 = load ptr, ptr %19, align 8, !tbaa !5
  %3937 = load i64, ptr %3936, align 8, !tbaa !9
  %3938 = icmp sle i64 %3935, %3937
  br i1 %3938, label %3939, label %3941

3939:                                             ; preds = %3926
  %3940 = load i64, ptr %36, align 8, !tbaa !9
  br label %3944

3941:                                             ; preds = %3926
  %3942 = load ptr, ptr %19, align 8, !tbaa !5
  %3943 = load i64, ptr %3942, align 8, !tbaa !9
  br label %3944

3944:                                             ; preds = %3941, %3939
  %3945 = phi i64 [ %3940, %3939 ], [ %3943, %3941 ]
  %3946 = load i64, ptr %30, align 8, !tbaa !9
  %3947 = mul nsw i64 %3945, %3946
  %3948 = add nsw i64 %3934, %3947
  %3949 = getelementptr inbounds double, ptr %3933, i64 %3948
  %3950 = load ptr, ptr %23, align 8, !tbaa !5
  %3951 = call double @f2c_ddot(ptr noundef %34, ptr noundef %3931, ptr noundef %3932, ptr noundef %3949, ptr noundef %3950)
  store double %3951, ptr %58, align 8, !tbaa !11
  %3952 = load ptr, ptr %24, align 8, !tbaa !5
  %3953 = load i64, ptr %45, align 8, !tbaa !9
  %3954 = load i64, ptr %46, align 8, !tbaa !9
  %3955 = load i64, ptr %32, align 8, !tbaa !9
  %3956 = mul nsw i64 %3954, %3955
  %3957 = add nsw i64 %3953, %3956
  %3958 = getelementptr inbounds double, ptr %3952, i64 %3957
  %3959 = load double, ptr %3958, align 8, !tbaa !11
  %3960 = load double, ptr %57, align 8, !tbaa !11
  %3961 = load double, ptr %54, align 8, !tbaa !11
  %3962 = load double, ptr %58, align 8, !tbaa !11
  %3963 = call double @llvm.fmuladd.f64(double %3961, double %3962, double %3960)
  %3964 = fsub double %3959, %3963
  %3965 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %3964, ptr %3965, align 8, !tbaa !11
  %3966 = load double, ptr %54, align 8, !tbaa !11
  %3967 = fneg double %3966
  %3968 = load ptr, ptr %22, align 8, !tbaa !5
  %3969 = load i64, ptr %46, align 8, !tbaa !9
  %3970 = load i64, ptr %46, align 8, !tbaa !9
  %3971 = load i64, ptr %30, align 8, !tbaa !9
  %3972 = mul nsw i64 %3970, %3971
  %3973 = add nsw i64 %3969, %3972
  %3974 = getelementptr inbounds double, ptr %3968, i64 %3973
  %3975 = load double, ptr %3974, align 8, !tbaa !11
  %3976 = fmul double %3967, %3975
  store double %3976, ptr %38, align 8, !tbaa !11
  %3977 = load ptr, ptr %20, align 8, !tbaa !5
  %3978 = load i64, ptr %44, align 8, !tbaa !9
  %3979 = load i64, ptr %44, align 8, !tbaa !9
  %3980 = load i64, ptr %28, align 8, !tbaa !9
  %3981 = mul nsw i64 %3979, %3980
  %3982 = add nsw i64 %3978, %3981
  %3983 = getelementptr inbounds double, ptr %3977, i64 %3982
  %3984 = load ptr, ptr %21, align 8, !tbaa !5
  %3985 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %3986 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %3987 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %56, ptr noundef @c_b26, ptr noundef %3983, ptr noundef %3984, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %3985, ptr noundef @c__2, ptr noundef %38, ptr noundef @c_b30, ptr noundef %3986, ptr noundef @c__2, ptr noundef %62, ptr noundef %61, ptr noundef %55)
  %3988 = load i64, ptr %55, align 8, !tbaa !9
  %3989 = icmp ne i64 %3988, 0
  br i1 %3989, label %3990, label %3992

3990:                                             ; preds = %3944
  %3991 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %3991, align 8, !tbaa !9
  br label %3992

3992:                                             ; preds = %3990, %3944
  %3993 = load double, ptr %62, align 8, !tbaa !11
  %3994 = fcmp une double %3993, 1.000000e+00
  br i1 %3994, label %3995, label %4019

3995:                                             ; preds = %3992
  %3996 = load ptr, ptr %19, align 8, !tbaa !5
  %3997 = load i64, ptr %3996, align 8, !tbaa !9
  store i64 %3997, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %3998

3998:                                             ; preds = %4011, %3995
  %3999 = load i64, ptr %40, align 8, !tbaa !9
  %4000 = load i64, ptr %34, align 8, !tbaa !9
  %4001 = icmp sle i64 %3999, %4000
  br i1 %4001, label %4002, label %4014

4002:                                             ; preds = %3998
  %4003 = load ptr, ptr %18, align 8, !tbaa !5
  %4004 = load ptr, ptr %24, align 8, !tbaa !5
  %4005 = load i64, ptr %40, align 8, !tbaa !9
  %4006 = load i64, ptr %32, align 8, !tbaa !9
  %4007 = mul nsw i64 %4005, %4006
  %4008 = add nsw i64 %4007, 1
  %4009 = getelementptr inbounds double, ptr %4004, i64 %4008
  %4010 = call i32 @f2c_dscal(ptr noundef %4003, ptr noundef %62, ptr noundef %4009, ptr noundef @c__1)
  br label %4011

4011:                                             ; preds = %4002
  %4012 = load i64, ptr %40, align 8, !tbaa !9
  %4013 = add nsw i64 %4012, 1
  store i64 %4013, ptr %40, align 8, !tbaa !9
  br label %3998, !llvm.loop !33

4014:                                             ; preds = %3998
  %4015 = load double, ptr %62, align 8, !tbaa !11
  %4016 = load ptr, ptr %26, align 8, !tbaa !5
  %4017 = load double, ptr %4016, align 8, !tbaa !11
  %4018 = fmul double %4017, %4015
  store double %4018, ptr %4016, align 8, !tbaa !11
  br label %4019

4019:                                             ; preds = %4014, %3992
  %4020 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %4021 = load double, ptr %4020, align 16, !tbaa !11
  %4022 = load ptr, ptr %24, align 8, !tbaa !5
  %4023 = load i64, ptr %44, align 8, !tbaa !9
  %4024 = load i64, ptr %46, align 8, !tbaa !9
  %4025 = load i64, ptr %32, align 8, !tbaa !9
  %4026 = mul nsw i64 %4024, %4025
  %4027 = add nsw i64 %4023, %4026
  %4028 = getelementptr inbounds double, ptr %4022, i64 %4027
  store double %4021, ptr %4028, align 8, !tbaa !11
  %4029 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %4030 = load double, ptr %4029, align 8, !tbaa !11
  %4031 = load ptr, ptr %24, align 8, !tbaa !5
  %4032 = load i64, ptr %45, align 8, !tbaa !9
  %4033 = load i64, ptr %46, align 8, !tbaa !9
  %4034 = load i64, ptr %32, align 8, !tbaa !9
  %4035 = mul nsw i64 %4033, %4034
  %4036 = add nsw i64 %4032, %4035
  %4037 = getelementptr inbounds double, ptr %4031, i64 %4036
  store double %4030, ptr %4037, align 8, !tbaa !11
  br label %4840

4038:                                             ; preds = %3755, %3751
  %4039 = load i64, ptr %46, align 8, !tbaa !9
  %4040 = load i64, ptr %47, align 8, !tbaa !9
  %4041 = icmp ne i64 %4039, %4040
  br i1 %4041, label %4042, label %4329

4042:                                             ; preds = %4038
  %4043 = load i64, ptr %44, align 8, !tbaa !9
  %4044 = load i64, ptr %45, align 8, !tbaa !9
  %4045 = icmp eq i64 %4043, %4044
  br i1 %4045, label %4046, label %4329

4046:                                             ; preds = %4042
  %4047 = load ptr, ptr %18, align 8, !tbaa !5
  %4048 = load i64, ptr %4047, align 8, !tbaa !9
  %4049 = load i64, ptr %44, align 8, !tbaa !9
  %4050 = sub nsw i64 %4048, %4049
  store i64 %4050, ptr %34, align 8, !tbaa !9
  %4051 = load i64, ptr %44, align 8, !tbaa !9
  %4052 = add nsw i64 %4051, 1
  store i64 %4052, ptr %35, align 8, !tbaa !9
  %4053 = load i64, ptr %44, align 8, !tbaa !9
  %4054 = add nsw i64 %4053, 1
  store i64 %4054, ptr %36, align 8, !tbaa !9
  %4055 = load ptr, ptr %20, align 8, !tbaa !5
  %4056 = load i64, ptr %44, align 8, !tbaa !9
  %4057 = load i64, ptr %35, align 8, !tbaa !9
  %4058 = load ptr, ptr %18, align 8, !tbaa !5
  %4059 = load i64, ptr %4058, align 8, !tbaa !9
  %4060 = icmp sle i64 %4057, %4059
  br i1 %4060, label %4061, label %4063

4061:                                             ; preds = %4046
  %4062 = load i64, ptr %35, align 8, !tbaa !9
  br label %4066

4063:                                             ; preds = %4046
  %4064 = load ptr, ptr %18, align 8, !tbaa !5
  %4065 = load i64, ptr %4064, align 8, !tbaa !9
  br label %4066

4066:                                             ; preds = %4063, %4061
  %4067 = phi i64 [ %4062, %4061 ], [ %4065, %4063 ]
  %4068 = load i64, ptr %28, align 8, !tbaa !9
  %4069 = mul nsw i64 %4067, %4068
  %4070 = add nsw i64 %4056, %4069
  %4071 = getelementptr inbounds double, ptr %4055, i64 %4070
  %4072 = load ptr, ptr %21, align 8, !tbaa !5
  %4073 = load ptr, ptr %24, align 8, !tbaa !5
  %4074 = load i64, ptr %36, align 8, !tbaa !9
  %4075 = load ptr, ptr %18, align 8, !tbaa !5
  %4076 = load i64, ptr %4075, align 8, !tbaa !9
  %4077 = icmp sle i64 %4074, %4076
  br i1 %4077, label %4078, label %4080

4078:                                             ; preds = %4066
  %4079 = load i64, ptr %36, align 8, !tbaa !9
  br label %4083

4080:                                             ; preds = %4066
  %4081 = load ptr, ptr %18, align 8, !tbaa !5
  %4082 = load i64, ptr %4081, align 8, !tbaa !9
  br label %4083

4083:                                             ; preds = %4080, %4078
  %4084 = phi i64 [ %4079, %4078 ], [ %4082, %4080 ]
  %4085 = load i64, ptr %46, align 8, !tbaa !9
  %4086 = load i64, ptr %32, align 8, !tbaa !9
  %4087 = mul nsw i64 %4085, %4086
  %4088 = add nsw i64 %4084, %4087
  %4089 = getelementptr inbounds double, ptr %4073, i64 %4088
  %4090 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4071, ptr noundef %4072, ptr noundef %4089, ptr noundef @c__1)
  store double %4090, ptr %57, align 8, !tbaa !11
  %4091 = load ptr, ptr %19, align 8, !tbaa !5
  %4092 = load i64, ptr %4091, align 8, !tbaa !9
  %4093 = load i64, ptr %47, align 8, !tbaa !9
  %4094 = sub nsw i64 %4092, %4093
  store i64 %4094, ptr %34, align 8, !tbaa !9
  %4095 = load i64, ptr %47, align 8, !tbaa !9
  %4096 = add nsw i64 %4095, 1
  store i64 %4096, ptr %35, align 8, !tbaa !9
  %4097 = load i64, ptr %47, align 8, !tbaa !9
  %4098 = add nsw i64 %4097, 1
  store i64 %4098, ptr %36, align 8, !tbaa !9
  %4099 = load ptr, ptr %24, align 8, !tbaa !5
  %4100 = load i64, ptr %44, align 8, !tbaa !9
  %4101 = load i64, ptr %35, align 8, !tbaa !9
  %4102 = load ptr, ptr %19, align 8, !tbaa !5
  %4103 = load i64, ptr %4102, align 8, !tbaa !9
  %4104 = icmp sle i64 %4101, %4103
  br i1 %4104, label %4105, label %4107

4105:                                             ; preds = %4083
  %4106 = load i64, ptr %35, align 8, !tbaa !9
  br label %4110

4107:                                             ; preds = %4083
  %4108 = load ptr, ptr %19, align 8, !tbaa !5
  %4109 = load i64, ptr %4108, align 8, !tbaa !9
  br label %4110

4110:                                             ; preds = %4107, %4105
  %4111 = phi i64 [ %4106, %4105 ], [ %4109, %4107 ]
  %4112 = load i64, ptr %32, align 8, !tbaa !9
  %4113 = mul nsw i64 %4111, %4112
  %4114 = add nsw i64 %4100, %4113
  %4115 = getelementptr inbounds double, ptr %4099, i64 %4114
  %4116 = load ptr, ptr %25, align 8, !tbaa !5
  %4117 = load ptr, ptr %22, align 8, !tbaa !5
  %4118 = load i64, ptr %46, align 8, !tbaa !9
  %4119 = load i64, ptr %36, align 8, !tbaa !9
  %4120 = load ptr, ptr %19, align 8, !tbaa !5
  %4121 = load i64, ptr %4120, align 8, !tbaa !9
  %4122 = icmp sle i64 %4119, %4121
  br i1 %4122, label %4123, label %4125

4123:                                             ; preds = %4110
  %4124 = load i64, ptr %36, align 8, !tbaa !9
  br label %4128

4125:                                             ; preds = %4110
  %4126 = load ptr, ptr %19, align 8, !tbaa !5
  %4127 = load i64, ptr %4126, align 8, !tbaa !9
  br label %4128

4128:                                             ; preds = %4125, %4123
  %4129 = phi i64 [ %4124, %4123 ], [ %4127, %4125 ]
  %4130 = load i64, ptr %30, align 8, !tbaa !9
  %4131 = mul nsw i64 %4129, %4130
  %4132 = add nsw i64 %4118, %4131
  %4133 = getelementptr inbounds double, ptr %4117, i64 %4132
  %4134 = load ptr, ptr %23, align 8, !tbaa !5
  %4135 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4115, ptr noundef %4116, ptr noundef %4133, ptr noundef %4134)
  store double %4135, ptr %58, align 8, !tbaa !11
  %4136 = load double, ptr %54, align 8, !tbaa !11
  %4137 = load ptr, ptr %24, align 8, !tbaa !5
  %4138 = load i64, ptr %44, align 8, !tbaa !9
  %4139 = load i64, ptr %46, align 8, !tbaa !9
  %4140 = load i64, ptr %32, align 8, !tbaa !9
  %4141 = mul nsw i64 %4139, %4140
  %4142 = add nsw i64 %4138, %4141
  %4143 = getelementptr inbounds double, ptr %4137, i64 %4142
  %4144 = load double, ptr %4143, align 8, !tbaa !11
  %4145 = load double, ptr %57, align 8, !tbaa !11
  %4146 = load double, ptr %54, align 8, !tbaa !11
  %4147 = load double, ptr %58, align 8, !tbaa !11
  %4148 = call double @llvm.fmuladd.f64(double %4146, double %4147, double %4145)
  %4149 = fsub double %4144, %4148
  %4150 = fmul double %4136, %4149
  %4151 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %4150, ptr %4151, align 16, !tbaa !11
  %4152 = load ptr, ptr %18, align 8, !tbaa !5
  %4153 = load i64, ptr %4152, align 8, !tbaa !9
  %4154 = load i64, ptr %44, align 8, !tbaa !9
  %4155 = sub nsw i64 %4153, %4154
  store i64 %4155, ptr %34, align 8, !tbaa !9
  %4156 = load i64, ptr %44, align 8, !tbaa !9
  %4157 = add nsw i64 %4156, 1
  store i64 %4157, ptr %35, align 8, !tbaa !9
  %4158 = load i64, ptr %44, align 8, !tbaa !9
  %4159 = add nsw i64 %4158, 1
  store i64 %4159, ptr %36, align 8, !tbaa !9
  %4160 = load ptr, ptr %20, align 8, !tbaa !5
  %4161 = load i64, ptr %44, align 8, !tbaa !9
  %4162 = load i64, ptr %35, align 8, !tbaa !9
  %4163 = load ptr, ptr %18, align 8, !tbaa !5
  %4164 = load i64, ptr %4163, align 8, !tbaa !9
  %4165 = icmp sle i64 %4162, %4164
  br i1 %4165, label %4166, label %4168

4166:                                             ; preds = %4128
  %4167 = load i64, ptr %35, align 8, !tbaa !9
  br label %4171

4168:                                             ; preds = %4128
  %4169 = load ptr, ptr %18, align 8, !tbaa !5
  %4170 = load i64, ptr %4169, align 8, !tbaa !9
  br label %4171

4171:                                             ; preds = %4168, %4166
  %4172 = phi i64 [ %4167, %4166 ], [ %4170, %4168 ]
  %4173 = load i64, ptr %28, align 8, !tbaa !9
  %4174 = mul nsw i64 %4172, %4173
  %4175 = add nsw i64 %4161, %4174
  %4176 = getelementptr inbounds double, ptr %4160, i64 %4175
  %4177 = load ptr, ptr %21, align 8, !tbaa !5
  %4178 = load ptr, ptr %24, align 8, !tbaa !5
  %4179 = load i64, ptr %36, align 8, !tbaa !9
  %4180 = load ptr, ptr %18, align 8, !tbaa !5
  %4181 = load i64, ptr %4180, align 8, !tbaa !9
  %4182 = icmp sle i64 %4179, %4181
  br i1 %4182, label %4183, label %4185

4183:                                             ; preds = %4171
  %4184 = load i64, ptr %36, align 8, !tbaa !9
  br label %4188

4185:                                             ; preds = %4171
  %4186 = load ptr, ptr %18, align 8, !tbaa !5
  %4187 = load i64, ptr %4186, align 8, !tbaa !9
  br label %4188

4188:                                             ; preds = %4185, %4183
  %4189 = phi i64 [ %4184, %4183 ], [ %4187, %4185 ]
  %4190 = load i64, ptr %47, align 8, !tbaa !9
  %4191 = load i64, ptr %32, align 8, !tbaa !9
  %4192 = mul nsw i64 %4190, %4191
  %4193 = add nsw i64 %4189, %4192
  %4194 = getelementptr inbounds double, ptr %4178, i64 %4193
  %4195 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4176, ptr noundef %4177, ptr noundef %4194, ptr noundef @c__1)
  store double %4195, ptr %57, align 8, !tbaa !11
  %4196 = load ptr, ptr %19, align 8, !tbaa !5
  %4197 = load i64, ptr %4196, align 8, !tbaa !9
  %4198 = load i64, ptr %47, align 8, !tbaa !9
  %4199 = sub nsw i64 %4197, %4198
  store i64 %4199, ptr %34, align 8, !tbaa !9
  %4200 = load i64, ptr %47, align 8, !tbaa !9
  %4201 = add nsw i64 %4200, 1
  store i64 %4201, ptr %35, align 8, !tbaa !9
  %4202 = load i64, ptr %47, align 8, !tbaa !9
  %4203 = add nsw i64 %4202, 1
  store i64 %4203, ptr %36, align 8, !tbaa !9
  %4204 = load ptr, ptr %24, align 8, !tbaa !5
  %4205 = load i64, ptr %44, align 8, !tbaa !9
  %4206 = load i64, ptr %35, align 8, !tbaa !9
  %4207 = load ptr, ptr %19, align 8, !tbaa !5
  %4208 = load i64, ptr %4207, align 8, !tbaa !9
  %4209 = icmp sle i64 %4206, %4208
  br i1 %4209, label %4210, label %4212

4210:                                             ; preds = %4188
  %4211 = load i64, ptr %35, align 8, !tbaa !9
  br label %4215

4212:                                             ; preds = %4188
  %4213 = load ptr, ptr %19, align 8, !tbaa !5
  %4214 = load i64, ptr %4213, align 8, !tbaa !9
  br label %4215

4215:                                             ; preds = %4212, %4210
  %4216 = phi i64 [ %4211, %4210 ], [ %4214, %4212 ]
  %4217 = load i64, ptr %32, align 8, !tbaa !9
  %4218 = mul nsw i64 %4216, %4217
  %4219 = add nsw i64 %4205, %4218
  %4220 = getelementptr inbounds double, ptr %4204, i64 %4219
  %4221 = load ptr, ptr %25, align 8, !tbaa !5
  %4222 = load ptr, ptr %22, align 8, !tbaa !5
  %4223 = load i64, ptr %47, align 8, !tbaa !9
  %4224 = load i64, ptr %36, align 8, !tbaa !9
  %4225 = load ptr, ptr %19, align 8, !tbaa !5
  %4226 = load i64, ptr %4225, align 8, !tbaa !9
  %4227 = icmp sle i64 %4224, %4226
  br i1 %4227, label %4228, label %4230

4228:                                             ; preds = %4215
  %4229 = load i64, ptr %36, align 8, !tbaa !9
  br label %4233

4230:                                             ; preds = %4215
  %4231 = load ptr, ptr %19, align 8, !tbaa !5
  %4232 = load i64, ptr %4231, align 8, !tbaa !9
  br label %4233

4233:                                             ; preds = %4230, %4228
  %4234 = phi i64 [ %4229, %4228 ], [ %4232, %4230 ]
  %4235 = load i64, ptr %30, align 8, !tbaa !9
  %4236 = mul nsw i64 %4234, %4235
  %4237 = add nsw i64 %4223, %4236
  %4238 = getelementptr inbounds double, ptr %4222, i64 %4237
  %4239 = load ptr, ptr %23, align 8, !tbaa !5
  %4240 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4220, ptr noundef %4221, ptr noundef %4238, ptr noundef %4239)
  store double %4240, ptr %58, align 8, !tbaa !11
  %4241 = load double, ptr %54, align 8, !tbaa !11
  %4242 = load ptr, ptr %24, align 8, !tbaa !5
  %4243 = load i64, ptr %44, align 8, !tbaa !9
  %4244 = load i64, ptr %47, align 8, !tbaa !9
  %4245 = load i64, ptr %32, align 8, !tbaa !9
  %4246 = mul nsw i64 %4244, %4245
  %4247 = add nsw i64 %4243, %4246
  %4248 = getelementptr inbounds double, ptr %4242, i64 %4247
  %4249 = load double, ptr %4248, align 8, !tbaa !11
  %4250 = load double, ptr %57, align 8, !tbaa !11
  %4251 = load double, ptr %54, align 8, !tbaa !11
  %4252 = load double, ptr %58, align 8, !tbaa !11
  %4253 = call double @llvm.fmuladd.f64(double %4251, double %4252, double %4250)
  %4254 = fsub double %4249, %4253
  %4255 = fmul double %4241, %4254
  %4256 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %4255, ptr %4256, align 8, !tbaa !11
  %4257 = load double, ptr %54, align 8, !tbaa !11
  %4258 = fneg double %4257
  %4259 = load ptr, ptr %20, align 8, !tbaa !5
  %4260 = load i64, ptr %44, align 8, !tbaa !9
  %4261 = load i64, ptr %44, align 8, !tbaa !9
  %4262 = load i64, ptr %28, align 8, !tbaa !9
  %4263 = mul nsw i64 %4261, %4262
  %4264 = add nsw i64 %4260, %4263
  %4265 = getelementptr inbounds double, ptr %4259, i64 %4264
  %4266 = load double, ptr %4265, align 8, !tbaa !11
  %4267 = fmul double %4258, %4266
  store double %4267, ptr %38, align 8, !tbaa !11
  %4268 = load ptr, ptr %22, align 8, !tbaa !5
  %4269 = load i64, ptr %46, align 8, !tbaa !9
  %4270 = load i64, ptr %46, align 8, !tbaa !9
  %4271 = load i64, ptr %30, align 8, !tbaa !9
  %4272 = mul nsw i64 %4270, %4271
  %4273 = add nsw i64 %4269, %4272
  %4274 = getelementptr inbounds double, ptr %4268, i64 %4273
  %4275 = load ptr, ptr %23, align 8, !tbaa !5
  %4276 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %4277 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %4278 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %56, ptr noundef @c_b26, ptr noundef %4274, ptr noundef %4275, ptr noundef @c_b26, ptr noundef @c_b26, ptr noundef %4276, ptr noundef @c__2, ptr noundef %38, ptr noundef @c_b30, ptr noundef %4277, ptr noundef @c__2, ptr noundef %62, ptr noundef %61, ptr noundef %55)
  %4279 = load i64, ptr %55, align 8, !tbaa !9
  %4280 = icmp ne i64 %4279, 0
  br i1 %4280, label %4281, label %4283

4281:                                             ; preds = %4233
  %4282 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %4282, align 8, !tbaa !9
  br label %4283

4283:                                             ; preds = %4281, %4233
  %4284 = load double, ptr %62, align 8, !tbaa !11
  %4285 = fcmp une double %4284, 1.000000e+00
  br i1 %4285, label %4286, label %4310

4286:                                             ; preds = %4283
  %4287 = load ptr, ptr %19, align 8, !tbaa !5
  %4288 = load i64, ptr %4287, align 8, !tbaa !9
  store i64 %4288, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %4289

4289:                                             ; preds = %4302, %4286
  %4290 = load i64, ptr %40, align 8, !tbaa !9
  %4291 = load i64, ptr %34, align 8, !tbaa !9
  %4292 = icmp sle i64 %4290, %4291
  br i1 %4292, label %4293, label %4305

4293:                                             ; preds = %4289
  %4294 = load ptr, ptr %18, align 8, !tbaa !5
  %4295 = load ptr, ptr %24, align 8, !tbaa !5
  %4296 = load i64, ptr %40, align 8, !tbaa !9
  %4297 = load i64, ptr %32, align 8, !tbaa !9
  %4298 = mul nsw i64 %4296, %4297
  %4299 = add nsw i64 %4298, 1
  %4300 = getelementptr inbounds double, ptr %4295, i64 %4299
  %4301 = call i32 @f2c_dscal(ptr noundef %4294, ptr noundef %62, ptr noundef %4300, ptr noundef @c__1)
  br label %4302

4302:                                             ; preds = %4293
  %4303 = load i64, ptr %40, align 8, !tbaa !9
  %4304 = add nsw i64 %4303, 1
  store i64 %4304, ptr %40, align 8, !tbaa !9
  br label %4289, !llvm.loop !34

4305:                                             ; preds = %4289
  %4306 = load double, ptr %62, align 8, !tbaa !11
  %4307 = load ptr, ptr %26, align 8, !tbaa !5
  %4308 = load double, ptr %4307, align 8, !tbaa !11
  %4309 = fmul double %4308, %4306
  store double %4309, ptr %4307, align 8, !tbaa !11
  br label %4310

4310:                                             ; preds = %4305, %4283
  %4311 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %4312 = load double, ptr %4311, align 16, !tbaa !11
  %4313 = load ptr, ptr %24, align 8, !tbaa !5
  %4314 = load i64, ptr %44, align 8, !tbaa !9
  %4315 = load i64, ptr %46, align 8, !tbaa !9
  %4316 = load i64, ptr %32, align 8, !tbaa !9
  %4317 = mul nsw i64 %4315, %4316
  %4318 = add nsw i64 %4314, %4317
  %4319 = getelementptr inbounds double, ptr %4313, i64 %4318
  store double %4312, ptr %4319, align 8, !tbaa !11
  %4320 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %4321 = load double, ptr %4320, align 8, !tbaa !11
  %4322 = load ptr, ptr %24, align 8, !tbaa !5
  %4323 = load i64, ptr %44, align 8, !tbaa !9
  %4324 = load i64, ptr %47, align 8, !tbaa !9
  %4325 = load i64, ptr %32, align 8, !tbaa !9
  %4326 = mul nsw i64 %4324, %4325
  %4327 = add nsw i64 %4323, %4326
  %4328 = getelementptr inbounds double, ptr %4322, i64 %4327
  store double %4321, ptr %4328, align 8, !tbaa !11
  br label %4839

4329:                                             ; preds = %4042, %4038
  %4330 = load i64, ptr %46, align 8, !tbaa !9
  %4331 = load i64, ptr %47, align 8, !tbaa !9
  %4332 = icmp ne i64 %4330, %4331
  br i1 %4332, label %4333, label %4838

4333:                                             ; preds = %4329
  %4334 = load i64, ptr %44, align 8, !tbaa !9
  %4335 = load i64, ptr %45, align 8, !tbaa !9
  %4336 = icmp ne i64 %4334, %4335
  br i1 %4336, label %4337, label %4838

4337:                                             ; preds = %4333
  %4338 = load ptr, ptr %18, align 8, !tbaa !5
  %4339 = load i64, ptr %4338, align 8, !tbaa !9
  %4340 = load i64, ptr %45, align 8, !tbaa !9
  %4341 = sub nsw i64 %4339, %4340
  store i64 %4341, ptr %34, align 8, !tbaa !9
  %4342 = load i64, ptr %45, align 8, !tbaa !9
  %4343 = add nsw i64 %4342, 1
  store i64 %4343, ptr %35, align 8, !tbaa !9
  %4344 = load i64, ptr %45, align 8, !tbaa !9
  %4345 = add nsw i64 %4344, 1
  store i64 %4345, ptr %36, align 8, !tbaa !9
  %4346 = load ptr, ptr %20, align 8, !tbaa !5
  %4347 = load i64, ptr %44, align 8, !tbaa !9
  %4348 = load i64, ptr %35, align 8, !tbaa !9
  %4349 = load ptr, ptr %18, align 8, !tbaa !5
  %4350 = load i64, ptr %4349, align 8, !tbaa !9
  %4351 = icmp sle i64 %4348, %4350
  br i1 %4351, label %4352, label %4354

4352:                                             ; preds = %4337
  %4353 = load i64, ptr %35, align 8, !tbaa !9
  br label %4357

4354:                                             ; preds = %4337
  %4355 = load ptr, ptr %18, align 8, !tbaa !5
  %4356 = load i64, ptr %4355, align 8, !tbaa !9
  br label %4357

4357:                                             ; preds = %4354, %4352
  %4358 = phi i64 [ %4353, %4352 ], [ %4356, %4354 ]
  %4359 = load i64, ptr %28, align 8, !tbaa !9
  %4360 = mul nsw i64 %4358, %4359
  %4361 = add nsw i64 %4347, %4360
  %4362 = getelementptr inbounds double, ptr %4346, i64 %4361
  %4363 = load ptr, ptr %21, align 8, !tbaa !5
  %4364 = load ptr, ptr %24, align 8, !tbaa !5
  %4365 = load i64, ptr %36, align 8, !tbaa !9
  %4366 = load ptr, ptr %18, align 8, !tbaa !5
  %4367 = load i64, ptr %4366, align 8, !tbaa !9
  %4368 = icmp sle i64 %4365, %4367
  br i1 %4368, label %4369, label %4371

4369:                                             ; preds = %4357
  %4370 = load i64, ptr %36, align 8, !tbaa !9
  br label %4374

4371:                                             ; preds = %4357
  %4372 = load ptr, ptr %18, align 8, !tbaa !5
  %4373 = load i64, ptr %4372, align 8, !tbaa !9
  br label %4374

4374:                                             ; preds = %4371, %4369
  %4375 = phi i64 [ %4370, %4369 ], [ %4373, %4371 ]
  %4376 = load i64, ptr %46, align 8, !tbaa !9
  %4377 = load i64, ptr %32, align 8, !tbaa !9
  %4378 = mul nsw i64 %4376, %4377
  %4379 = add nsw i64 %4375, %4378
  %4380 = getelementptr inbounds double, ptr %4364, i64 %4379
  %4381 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4362, ptr noundef %4363, ptr noundef %4380, ptr noundef @c__1)
  store double %4381, ptr %57, align 8, !tbaa !11
  %4382 = load ptr, ptr %19, align 8, !tbaa !5
  %4383 = load i64, ptr %4382, align 8, !tbaa !9
  %4384 = load i64, ptr %47, align 8, !tbaa !9
  %4385 = sub nsw i64 %4383, %4384
  store i64 %4385, ptr %34, align 8, !tbaa !9
  %4386 = load i64, ptr %47, align 8, !tbaa !9
  %4387 = add nsw i64 %4386, 1
  store i64 %4387, ptr %35, align 8, !tbaa !9
  %4388 = load i64, ptr %47, align 8, !tbaa !9
  %4389 = add nsw i64 %4388, 1
  store i64 %4389, ptr %36, align 8, !tbaa !9
  %4390 = load ptr, ptr %24, align 8, !tbaa !5
  %4391 = load i64, ptr %44, align 8, !tbaa !9
  %4392 = load i64, ptr %35, align 8, !tbaa !9
  %4393 = load ptr, ptr %19, align 8, !tbaa !5
  %4394 = load i64, ptr %4393, align 8, !tbaa !9
  %4395 = icmp sle i64 %4392, %4394
  br i1 %4395, label %4396, label %4398

4396:                                             ; preds = %4374
  %4397 = load i64, ptr %35, align 8, !tbaa !9
  br label %4401

4398:                                             ; preds = %4374
  %4399 = load ptr, ptr %19, align 8, !tbaa !5
  %4400 = load i64, ptr %4399, align 8, !tbaa !9
  br label %4401

4401:                                             ; preds = %4398, %4396
  %4402 = phi i64 [ %4397, %4396 ], [ %4400, %4398 ]
  %4403 = load i64, ptr %32, align 8, !tbaa !9
  %4404 = mul nsw i64 %4402, %4403
  %4405 = add nsw i64 %4391, %4404
  %4406 = getelementptr inbounds double, ptr %4390, i64 %4405
  %4407 = load ptr, ptr %25, align 8, !tbaa !5
  %4408 = load ptr, ptr %22, align 8, !tbaa !5
  %4409 = load i64, ptr %46, align 8, !tbaa !9
  %4410 = load i64, ptr %36, align 8, !tbaa !9
  %4411 = load ptr, ptr %19, align 8, !tbaa !5
  %4412 = load i64, ptr %4411, align 8, !tbaa !9
  %4413 = icmp sle i64 %4410, %4412
  br i1 %4413, label %4414, label %4416

4414:                                             ; preds = %4401
  %4415 = load i64, ptr %36, align 8, !tbaa !9
  br label %4419

4416:                                             ; preds = %4401
  %4417 = load ptr, ptr %19, align 8, !tbaa !5
  %4418 = load i64, ptr %4417, align 8, !tbaa !9
  br label %4419

4419:                                             ; preds = %4416, %4414
  %4420 = phi i64 [ %4415, %4414 ], [ %4418, %4416 ]
  %4421 = load i64, ptr %30, align 8, !tbaa !9
  %4422 = mul nsw i64 %4420, %4421
  %4423 = add nsw i64 %4409, %4422
  %4424 = getelementptr inbounds double, ptr %4408, i64 %4423
  %4425 = load ptr, ptr %23, align 8, !tbaa !5
  %4426 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4406, ptr noundef %4407, ptr noundef %4424, ptr noundef %4425)
  store double %4426, ptr %58, align 8, !tbaa !11
  %4427 = load ptr, ptr %24, align 8, !tbaa !5
  %4428 = load i64, ptr %44, align 8, !tbaa !9
  %4429 = load i64, ptr %46, align 8, !tbaa !9
  %4430 = load i64, ptr %32, align 8, !tbaa !9
  %4431 = mul nsw i64 %4429, %4430
  %4432 = add nsw i64 %4428, %4431
  %4433 = getelementptr inbounds double, ptr %4427, i64 %4432
  %4434 = load double, ptr %4433, align 8, !tbaa !11
  %4435 = load double, ptr %57, align 8, !tbaa !11
  %4436 = load double, ptr %54, align 8, !tbaa !11
  %4437 = load double, ptr %58, align 8, !tbaa !11
  %4438 = call double @llvm.fmuladd.f64(double %4436, double %4437, double %4435)
  %4439 = fsub double %4434, %4438
  %4440 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  store double %4439, ptr %4440, align 16, !tbaa !11
  %4441 = load ptr, ptr %18, align 8, !tbaa !5
  %4442 = load i64, ptr %4441, align 8, !tbaa !9
  %4443 = load i64, ptr %45, align 8, !tbaa !9
  %4444 = sub nsw i64 %4442, %4443
  store i64 %4444, ptr %34, align 8, !tbaa !9
  %4445 = load i64, ptr %45, align 8, !tbaa !9
  %4446 = add nsw i64 %4445, 1
  store i64 %4446, ptr %35, align 8, !tbaa !9
  %4447 = load i64, ptr %45, align 8, !tbaa !9
  %4448 = add nsw i64 %4447, 1
  store i64 %4448, ptr %36, align 8, !tbaa !9
  %4449 = load ptr, ptr %20, align 8, !tbaa !5
  %4450 = load i64, ptr %44, align 8, !tbaa !9
  %4451 = load i64, ptr %35, align 8, !tbaa !9
  %4452 = load ptr, ptr %18, align 8, !tbaa !5
  %4453 = load i64, ptr %4452, align 8, !tbaa !9
  %4454 = icmp sle i64 %4451, %4453
  br i1 %4454, label %4455, label %4457

4455:                                             ; preds = %4419
  %4456 = load i64, ptr %35, align 8, !tbaa !9
  br label %4460

4457:                                             ; preds = %4419
  %4458 = load ptr, ptr %18, align 8, !tbaa !5
  %4459 = load i64, ptr %4458, align 8, !tbaa !9
  br label %4460

4460:                                             ; preds = %4457, %4455
  %4461 = phi i64 [ %4456, %4455 ], [ %4459, %4457 ]
  %4462 = load i64, ptr %28, align 8, !tbaa !9
  %4463 = mul nsw i64 %4461, %4462
  %4464 = add nsw i64 %4450, %4463
  %4465 = getelementptr inbounds double, ptr %4449, i64 %4464
  %4466 = load ptr, ptr %21, align 8, !tbaa !5
  %4467 = load ptr, ptr %24, align 8, !tbaa !5
  %4468 = load i64, ptr %36, align 8, !tbaa !9
  %4469 = load ptr, ptr %18, align 8, !tbaa !5
  %4470 = load i64, ptr %4469, align 8, !tbaa !9
  %4471 = icmp sle i64 %4468, %4470
  br i1 %4471, label %4472, label %4474

4472:                                             ; preds = %4460
  %4473 = load i64, ptr %36, align 8, !tbaa !9
  br label %4477

4474:                                             ; preds = %4460
  %4475 = load ptr, ptr %18, align 8, !tbaa !5
  %4476 = load i64, ptr %4475, align 8, !tbaa !9
  br label %4477

4477:                                             ; preds = %4474, %4472
  %4478 = phi i64 [ %4473, %4472 ], [ %4476, %4474 ]
  %4479 = load i64, ptr %47, align 8, !tbaa !9
  %4480 = load i64, ptr %32, align 8, !tbaa !9
  %4481 = mul nsw i64 %4479, %4480
  %4482 = add nsw i64 %4478, %4481
  %4483 = getelementptr inbounds double, ptr %4467, i64 %4482
  %4484 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4465, ptr noundef %4466, ptr noundef %4483, ptr noundef @c__1)
  store double %4484, ptr %57, align 8, !tbaa !11
  %4485 = load ptr, ptr %19, align 8, !tbaa !5
  %4486 = load i64, ptr %4485, align 8, !tbaa !9
  %4487 = load i64, ptr %47, align 8, !tbaa !9
  %4488 = sub nsw i64 %4486, %4487
  store i64 %4488, ptr %34, align 8, !tbaa !9
  %4489 = load i64, ptr %47, align 8, !tbaa !9
  %4490 = add nsw i64 %4489, 1
  store i64 %4490, ptr %35, align 8, !tbaa !9
  %4491 = load i64, ptr %47, align 8, !tbaa !9
  %4492 = add nsw i64 %4491, 1
  store i64 %4492, ptr %36, align 8, !tbaa !9
  %4493 = load ptr, ptr %24, align 8, !tbaa !5
  %4494 = load i64, ptr %44, align 8, !tbaa !9
  %4495 = load i64, ptr %35, align 8, !tbaa !9
  %4496 = load ptr, ptr %19, align 8, !tbaa !5
  %4497 = load i64, ptr %4496, align 8, !tbaa !9
  %4498 = icmp sle i64 %4495, %4497
  br i1 %4498, label %4499, label %4501

4499:                                             ; preds = %4477
  %4500 = load i64, ptr %35, align 8, !tbaa !9
  br label %4504

4501:                                             ; preds = %4477
  %4502 = load ptr, ptr %19, align 8, !tbaa !5
  %4503 = load i64, ptr %4502, align 8, !tbaa !9
  br label %4504

4504:                                             ; preds = %4501, %4499
  %4505 = phi i64 [ %4500, %4499 ], [ %4503, %4501 ]
  %4506 = load i64, ptr %32, align 8, !tbaa !9
  %4507 = mul nsw i64 %4505, %4506
  %4508 = add nsw i64 %4494, %4507
  %4509 = getelementptr inbounds double, ptr %4493, i64 %4508
  %4510 = load ptr, ptr %25, align 8, !tbaa !5
  %4511 = load ptr, ptr %22, align 8, !tbaa !5
  %4512 = load i64, ptr %47, align 8, !tbaa !9
  %4513 = load i64, ptr %36, align 8, !tbaa !9
  %4514 = load ptr, ptr %19, align 8, !tbaa !5
  %4515 = load i64, ptr %4514, align 8, !tbaa !9
  %4516 = icmp sle i64 %4513, %4515
  br i1 %4516, label %4517, label %4519

4517:                                             ; preds = %4504
  %4518 = load i64, ptr %36, align 8, !tbaa !9
  br label %4522

4519:                                             ; preds = %4504
  %4520 = load ptr, ptr %19, align 8, !tbaa !5
  %4521 = load i64, ptr %4520, align 8, !tbaa !9
  br label %4522

4522:                                             ; preds = %4519, %4517
  %4523 = phi i64 [ %4518, %4517 ], [ %4521, %4519 ]
  %4524 = load i64, ptr %30, align 8, !tbaa !9
  %4525 = mul nsw i64 %4523, %4524
  %4526 = add nsw i64 %4512, %4525
  %4527 = getelementptr inbounds double, ptr %4511, i64 %4526
  %4528 = load ptr, ptr %23, align 8, !tbaa !5
  %4529 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4509, ptr noundef %4510, ptr noundef %4527, ptr noundef %4528)
  store double %4529, ptr %58, align 8, !tbaa !11
  %4530 = load ptr, ptr %24, align 8, !tbaa !5
  %4531 = load i64, ptr %44, align 8, !tbaa !9
  %4532 = load i64, ptr %47, align 8, !tbaa !9
  %4533 = load i64, ptr %32, align 8, !tbaa !9
  %4534 = mul nsw i64 %4532, %4533
  %4535 = add nsw i64 %4531, %4534
  %4536 = getelementptr inbounds double, ptr %4530, i64 %4535
  %4537 = load double, ptr %4536, align 8, !tbaa !11
  %4538 = load double, ptr %57, align 8, !tbaa !11
  %4539 = load double, ptr %54, align 8, !tbaa !11
  %4540 = load double, ptr %58, align 8, !tbaa !11
  %4541 = call double @llvm.fmuladd.f64(double %4539, double %4540, double %4538)
  %4542 = fsub double %4537, %4541
  %4543 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 2
  store double %4542, ptr %4543, align 16, !tbaa !11
  %4544 = load ptr, ptr %18, align 8, !tbaa !5
  %4545 = load i64, ptr %4544, align 8, !tbaa !9
  %4546 = load i64, ptr %45, align 8, !tbaa !9
  %4547 = sub nsw i64 %4545, %4546
  store i64 %4547, ptr %34, align 8, !tbaa !9
  %4548 = load i64, ptr %45, align 8, !tbaa !9
  %4549 = add nsw i64 %4548, 1
  store i64 %4549, ptr %35, align 8, !tbaa !9
  %4550 = load i64, ptr %45, align 8, !tbaa !9
  %4551 = add nsw i64 %4550, 1
  store i64 %4551, ptr %36, align 8, !tbaa !9
  %4552 = load ptr, ptr %20, align 8, !tbaa !5
  %4553 = load i64, ptr %45, align 8, !tbaa !9
  %4554 = load i64, ptr %35, align 8, !tbaa !9
  %4555 = load ptr, ptr %18, align 8, !tbaa !5
  %4556 = load i64, ptr %4555, align 8, !tbaa !9
  %4557 = icmp sle i64 %4554, %4556
  br i1 %4557, label %4558, label %4560

4558:                                             ; preds = %4522
  %4559 = load i64, ptr %35, align 8, !tbaa !9
  br label %4563

4560:                                             ; preds = %4522
  %4561 = load ptr, ptr %18, align 8, !tbaa !5
  %4562 = load i64, ptr %4561, align 8, !tbaa !9
  br label %4563

4563:                                             ; preds = %4560, %4558
  %4564 = phi i64 [ %4559, %4558 ], [ %4562, %4560 ]
  %4565 = load i64, ptr %28, align 8, !tbaa !9
  %4566 = mul nsw i64 %4564, %4565
  %4567 = add nsw i64 %4553, %4566
  %4568 = getelementptr inbounds double, ptr %4552, i64 %4567
  %4569 = load ptr, ptr %21, align 8, !tbaa !5
  %4570 = load ptr, ptr %24, align 8, !tbaa !5
  %4571 = load i64, ptr %36, align 8, !tbaa !9
  %4572 = load ptr, ptr %18, align 8, !tbaa !5
  %4573 = load i64, ptr %4572, align 8, !tbaa !9
  %4574 = icmp sle i64 %4571, %4573
  br i1 %4574, label %4575, label %4577

4575:                                             ; preds = %4563
  %4576 = load i64, ptr %36, align 8, !tbaa !9
  br label %4580

4577:                                             ; preds = %4563
  %4578 = load ptr, ptr %18, align 8, !tbaa !5
  %4579 = load i64, ptr %4578, align 8, !tbaa !9
  br label %4580

4580:                                             ; preds = %4577, %4575
  %4581 = phi i64 [ %4576, %4575 ], [ %4579, %4577 ]
  %4582 = load i64, ptr %46, align 8, !tbaa !9
  %4583 = load i64, ptr %32, align 8, !tbaa !9
  %4584 = mul nsw i64 %4582, %4583
  %4585 = add nsw i64 %4581, %4584
  %4586 = getelementptr inbounds double, ptr %4570, i64 %4585
  %4587 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4568, ptr noundef %4569, ptr noundef %4586, ptr noundef @c__1)
  store double %4587, ptr %57, align 8, !tbaa !11
  %4588 = load ptr, ptr %19, align 8, !tbaa !5
  %4589 = load i64, ptr %4588, align 8, !tbaa !9
  %4590 = load i64, ptr %47, align 8, !tbaa !9
  %4591 = sub nsw i64 %4589, %4590
  store i64 %4591, ptr %34, align 8, !tbaa !9
  %4592 = load i64, ptr %47, align 8, !tbaa !9
  %4593 = add nsw i64 %4592, 1
  store i64 %4593, ptr %35, align 8, !tbaa !9
  %4594 = load i64, ptr %47, align 8, !tbaa !9
  %4595 = add nsw i64 %4594, 1
  store i64 %4595, ptr %36, align 8, !tbaa !9
  %4596 = load ptr, ptr %24, align 8, !tbaa !5
  %4597 = load i64, ptr %45, align 8, !tbaa !9
  %4598 = load i64, ptr %35, align 8, !tbaa !9
  %4599 = load ptr, ptr %19, align 8, !tbaa !5
  %4600 = load i64, ptr %4599, align 8, !tbaa !9
  %4601 = icmp sle i64 %4598, %4600
  br i1 %4601, label %4602, label %4604

4602:                                             ; preds = %4580
  %4603 = load i64, ptr %35, align 8, !tbaa !9
  br label %4607

4604:                                             ; preds = %4580
  %4605 = load ptr, ptr %19, align 8, !tbaa !5
  %4606 = load i64, ptr %4605, align 8, !tbaa !9
  br label %4607

4607:                                             ; preds = %4604, %4602
  %4608 = phi i64 [ %4603, %4602 ], [ %4606, %4604 ]
  %4609 = load i64, ptr %32, align 8, !tbaa !9
  %4610 = mul nsw i64 %4608, %4609
  %4611 = add nsw i64 %4597, %4610
  %4612 = getelementptr inbounds double, ptr %4596, i64 %4611
  %4613 = load ptr, ptr %25, align 8, !tbaa !5
  %4614 = load ptr, ptr %22, align 8, !tbaa !5
  %4615 = load i64, ptr %46, align 8, !tbaa !9
  %4616 = load i64, ptr %36, align 8, !tbaa !9
  %4617 = load ptr, ptr %19, align 8, !tbaa !5
  %4618 = load i64, ptr %4617, align 8, !tbaa !9
  %4619 = icmp sle i64 %4616, %4618
  br i1 %4619, label %4620, label %4622

4620:                                             ; preds = %4607
  %4621 = load i64, ptr %36, align 8, !tbaa !9
  br label %4625

4622:                                             ; preds = %4607
  %4623 = load ptr, ptr %19, align 8, !tbaa !5
  %4624 = load i64, ptr %4623, align 8, !tbaa !9
  br label %4625

4625:                                             ; preds = %4622, %4620
  %4626 = phi i64 [ %4621, %4620 ], [ %4624, %4622 ]
  %4627 = load i64, ptr %30, align 8, !tbaa !9
  %4628 = mul nsw i64 %4626, %4627
  %4629 = add nsw i64 %4615, %4628
  %4630 = getelementptr inbounds double, ptr %4614, i64 %4629
  %4631 = load ptr, ptr %23, align 8, !tbaa !5
  %4632 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4612, ptr noundef %4613, ptr noundef %4630, ptr noundef %4631)
  store double %4632, ptr %58, align 8, !tbaa !11
  %4633 = load ptr, ptr %24, align 8, !tbaa !5
  %4634 = load i64, ptr %45, align 8, !tbaa !9
  %4635 = load i64, ptr %46, align 8, !tbaa !9
  %4636 = load i64, ptr %32, align 8, !tbaa !9
  %4637 = mul nsw i64 %4635, %4636
  %4638 = add nsw i64 %4634, %4637
  %4639 = getelementptr inbounds double, ptr %4633, i64 %4638
  %4640 = load double, ptr %4639, align 8, !tbaa !11
  %4641 = load double, ptr %57, align 8, !tbaa !11
  %4642 = load double, ptr %54, align 8, !tbaa !11
  %4643 = load double, ptr %58, align 8, !tbaa !11
  %4644 = call double @llvm.fmuladd.f64(double %4642, double %4643, double %4641)
  %4645 = fsub double %4640, %4644
  %4646 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 1
  store double %4645, ptr %4646, align 8, !tbaa !11
  %4647 = load ptr, ptr %18, align 8, !tbaa !5
  %4648 = load i64, ptr %4647, align 8, !tbaa !9
  %4649 = load i64, ptr %45, align 8, !tbaa !9
  %4650 = sub nsw i64 %4648, %4649
  store i64 %4650, ptr %34, align 8, !tbaa !9
  %4651 = load i64, ptr %45, align 8, !tbaa !9
  %4652 = add nsw i64 %4651, 1
  store i64 %4652, ptr %35, align 8, !tbaa !9
  %4653 = load i64, ptr %45, align 8, !tbaa !9
  %4654 = add nsw i64 %4653, 1
  store i64 %4654, ptr %36, align 8, !tbaa !9
  %4655 = load ptr, ptr %20, align 8, !tbaa !5
  %4656 = load i64, ptr %45, align 8, !tbaa !9
  %4657 = load i64, ptr %35, align 8, !tbaa !9
  %4658 = load ptr, ptr %18, align 8, !tbaa !5
  %4659 = load i64, ptr %4658, align 8, !tbaa !9
  %4660 = icmp sle i64 %4657, %4659
  br i1 %4660, label %4661, label %4663

4661:                                             ; preds = %4625
  %4662 = load i64, ptr %35, align 8, !tbaa !9
  br label %4666

4663:                                             ; preds = %4625
  %4664 = load ptr, ptr %18, align 8, !tbaa !5
  %4665 = load i64, ptr %4664, align 8, !tbaa !9
  br label %4666

4666:                                             ; preds = %4663, %4661
  %4667 = phi i64 [ %4662, %4661 ], [ %4665, %4663 ]
  %4668 = load i64, ptr %28, align 8, !tbaa !9
  %4669 = mul nsw i64 %4667, %4668
  %4670 = add nsw i64 %4656, %4669
  %4671 = getelementptr inbounds double, ptr %4655, i64 %4670
  %4672 = load ptr, ptr %21, align 8, !tbaa !5
  %4673 = load ptr, ptr %24, align 8, !tbaa !5
  %4674 = load i64, ptr %36, align 8, !tbaa !9
  %4675 = load ptr, ptr %18, align 8, !tbaa !5
  %4676 = load i64, ptr %4675, align 8, !tbaa !9
  %4677 = icmp sle i64 %4674, %4676
  br i1 %4677, label %4678, label %4680

4678:                                             ; preds = %4666
  %4679 = load i64, ptr %36, align 8, !tbaa !9
  br label %4683

4680:                                             ; preds = %4666
  %4681 = load ptr, ptr %18, align 8, !tbaa !5
  %4682 = load i64, ptr %4681, align 8, !tbaa !9
  br label %4683

4683:                                             ; preds = %4680, %4678
  %4684 = phi i64 [ %4679, %4678 ], [ %4682, %4680 ]
  %4685 = load i64, ptr %47, align 8, !tbaa !9
  %4686 = load i64, ptr %32, align 8, !tbaa !9
  %4687 = mul nsw i64 %4685, %4686
  %4688 = add nsw i64 %4684, %4687
  %4689 = getelementptr inbounds double, ptr %4673, i64 %4688
  %4690 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4671, ptr noundef %4672, ptr noundef %4689, ptr noundef @c__1)
  store double %4690, ptr %57, align 8, !tbaa !11
  %4691 = load ptr, ptr %19, align 8, !tbaa !5
  %4692 = load i64, ptr %4691, align 8, !tbaa !9
  %4693 = load i64, ptr %47, align 8, !tbaa !9
  %4694 = sub nsw i64 %4692, %4693
  store i64 %4694, ptr %34, align 8, !tbaa !9
  %4695 = load i64, ptr %47, align 8, !tbaa !9
  %4696 = add nsw i64 %4695, 1
  store i64 %4696, ptr %35, align 8, !tbaa !9
  %4697 = load i64, ptr %47, align 8, !tbaa !9
  %4698 = add nsw i64 %4697, 1
  store i64 %4698, ptr %36, align 8, !tbaa !9
  %4699 = load ptr, ptr %24, align 8, !tbaa !5
  %4700 = load i64, ptr %45, align 8, !tbaa !9
  %4701 = load i64, ptr %35, align 8, !tbaa !9
  %4702 = load ptr, ptr %19, align 8, !tbaa !5
  %4703 = load i64, ptr %4702, align 8, !tbaa !9
  %4704 = icmp sle i64 %4701, %4703
  br i1 %4704, label %4705, label %4707

4705:                                             ; preds = %4683
  %4706 = load i64, ptr %35, align 8, !tbaa !9
  br label %4710

4707:                                             ; preds = %4683
  %4708 = load ptr, ptr %19, align 8, !tbaa !5
  %4709 = load i64, ptr %4708, align 8, !tbaa !9
  br label %4710

4710:                                             ; preds = %4707, %4705
  %4711 = phi i64 [ %4706, %4705 ], [ %4709, %4707 ]
  %4712 = load i64, ptr %32, align 8, !tbaa !9
  %4713 = mul nsw i64 %4711, %4712
  %4714 = add nsw i64 %4700, %4713
  %4715 = getelementptr inbounds double, ptr %4699, i64 %4714
  %4716 = load ptr, ptr %25, align 8, !tbaa !5
  %4717 = load ptr, ptr %22, align 8, !tbaa !5
  %4718 = load i64, ptr %47, align 8, !tbaa !9
  %4719 = load i64, ptr %36, align 8, !tbaa !9
  %4720 = load ptr, ptr %19, align 8, !tbaa !5
  %4721 = load i64, ptr %4720, align 8, !tbaa !9
  %4722 = icmp sle i64 %4719, %4721
  br i1 %4722, label %4723, label %4725

4723:                                             ; preds = %4710
  %4724 = load i64, ptr %36, align 8, !tbaa !9
  br label %4728

4725:                                             ; preds = %4710
  %4726 = load ptr, ptr %19, align 8, !tbaa !5
  %4727 = load i64, ptr %4726, align 8, !tbaa !9
  br label %4728

4728:                                             ; preds = %4725, %4723
  %4729 = phi i64 [ %4724, %4723 ], [ %4727, %4725 ]
  %4730 = load i64, ptr %30, align 8, !tbaa !9
  %4731 = mul nsw i64 %4729, %4730
  %4732 = add nsw i64 %4718, %4731
  %4733 = getelementptr inbounds double, ptr %4717, i64 %4732
  %4734 = load ptr, ptr %23, align 8, !tbaa !5
  %4735 = call double @f2c_ddot(ptr noundef %34, ptr noundef %4715, ptr noundef %4716, ptr noundef %4733, ptr noundef %4734)
  store double %4735, ptr %58, align 8, !tbaa !11
  %4736 = load ptr, ptr %24, align 8, !tbaa !5
  %4737 = load i64, ptr %45, align 8, !tbaa !9
  %4738 = load i64, ptr %47, align 8, !tbaa !9
  %4739 = load i64, ptr %32, align 8, !tbaa !9
  %4740 = mul nsw i64 %4738, %4739
  %4741 = add nsw i64 %4737, %4740
  %4742 = getelementptr inbounds double, ptr %4736, i64 %4741
  %4743 = load double, ptr %4742, align 8, !tbaa !11
  %4744 = load double, ptr %57, align 8, !tbaa !11
  %4745 = load double, ptr %54, align 8, !tbaa !11
  %4746 = load double, ptr %58, align 8, !tbaa !11
  %4747 = call double @llvm.fmuladd.f64(double %4745, double %4746, double %4744)
  %4748 = fsub double %4743, %4747
  %4749 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 3
  store double %4748, ptr %4749, align 8, !tbaa !11
  %4750 = load ptr, ptr %17, align 8, !tbaa !5
  %4751 = load ptr, ptr %20, align 8, !tbaa !5
  %4752 = load i64, ptr %44, align 8, !tbaa !9
  %4753 = load i64, ptr %44, align 8, !tbaa !9
  %4754 = load i64, ptr %28, align 8, !tbaa !9
  %4755 = mul nsw i64 %4753, %4754
  %4756 = add nsw i64 %4752, %4755
  %4757 = getelementptr inbounds double, ptr %4751, i64 %4756
  %4758 = load ptr, ptr %21, align 8, !tbaa !5
  %4759 = load ptr, ptr %22, align 8, !tbaa !5
  %4760 = load i64, ptr %46, align 8, !tbaa !9
  %4761 = load i64, ptr %46, align 8, !tbaa !9
  %4762 = load i64, ptr %30, align 8, !tbaa !9
  %4763 = mul nsw i64 %4761, %4762
  %4764 = add nsw i64 %4760, %4763
  %4765 = getelementptr inbounds double, ptr %4759, i64 %4764
  %4766 = load ptr, ptr %23, align 8, !tbaa !5
  %4767 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %4768 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %4769 = call i32 @dlasy2_(ptr noundef @c_false, ptr noundef @c_true, ptr noundef %4750, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %4757, ptr noundef %4758, ptr noundef %4765, ptr noundef %4766, ptr noundef %4767, ptr noundef @c__2, ptr noundef %62, ptr noundef %4768, ptr noundef @c__2, ptr noundef %61, ptr noundef %55)
  %4770 = load i64, ptr %55, align 8, !tbaa !9
  %4771 = icmp ne i64 %4770, 0
  br i1 %4771, label %4772, label %4774

4772:                                             ; preds = %4728
  %4773 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 1, ptr %4773, align 8, !tbaa !9
  br label %4774

4774:                                             ; preds = %4772, %4728
  %4775 = load double, ptr %62, align 8, !tbaa !11
  %4776 = fcmp une double %4775, 1.000000e+00
  br i1 %4776, label %4777, label %4801

4777:                                             ; preds = %4774
  %4778 = load ptr, ptr %19, align 8, !tbaa !5
  %4779 = load i64, ptr %4778, align 8, !tbaa !9
  store i64 %4779, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %4780

4780:                                             ; preds = %4793, %4777
  %4781 = load i64, ptr %40, align 8, !tbaa !9
  %4782 = load i64, ptr %34, align 8, !tbaa !9
  %4783 = icmp sle i64 %4781, %4782
  br i1 %4783, label %4784, label %4796

4784:                                             ; preds = %4780
  %4785 = load ptr, ptr %18, align 8, !tbaa !5
  %4786 = load ptr, ptr %24, align 8, !tbaa !5
  %4787 = load i64, ptr %40, align 8, !tbaa !9
  %4788 = load i64, ptr %32, align 8, !tbaa !9
  %4789 = mul nsw i64 %4787, %4788
  %4790 = add nsw i64 %4789, 1
  %4791 = getelementptr inbounds double, ptr %4786, i64 %4790
  %4792 = call i32 @f2c_dscal(ptr noundef %4785, ptr noundef %62, ptr noundef %4791, ptr noundef @c__1)
  br label %4793

4793:                                             ; preds = %4784
  %4794 = load i64, ptr %40, align 8, !tbaa !9
  %4795 = add nsw i64 %4794, 1
  store i64 %4795, ptr %40, align 8, !tbaa !9
  br label %4780, !llvm.loop !35

4796:                                             ; preds = %4780
  %4797 = load double, ptr %62, align 8, !tbaa !11
  %4798 = load ptr, ptr %26, align 8, !tbaa !5
  %4799 = load double, ptr %4798, align 8, !tbaa !11
  %4800 = fmul double %4799, %4797
  store double %4800, ptr %4798, align 8, !tbaa !11
  br label %4801

4801:                                             ; preds = %4796, %4774
  %4802 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 0
  %4803 = load double, ptr %4802, align 16, !tbaa !11
  %4804 = load ptr, ptr %24, align 8, !tbaa !5
  %4805 = load i64, ptr %44, align 8, !tbaa !9
  %4806 = load i64, ptr %46, align 8, !tbaa !9
  %4807 = load i64, ptr %32, align 8, !tbaa !9
  %4808 = mul nsw i64 %4806, %4807
  %4809 = add nsw i64 %4805, %4808
  %4810 = getelementptr inbounds double, ptr %4804, i64 %4809
  store double %4803, ptr %4810, align 8, !tbaa !11
  %4811 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 2
  %4812 = load double, ptr %4811, align 16, !tbaa !11
  %4813 = load ptr, ptr %24, align 8, !tbaa !5
  %4814 = load i64, ptr %44, align 8, !tbaa !9
  %4815 = load i64, ptr %47, align 8, !tbaa !9
  %4816 = load i64, ptr %32, align 8, !tbaa !9
  %4817 = mul nsw i64 %4815, %4816
  %4818 = add nsw i64 %4814, %4817
  %4819 = getelementptr inbounds double, ptr %4813, i64 %4818
  store double %4812, ptr %4819, align 8, !tbaa !11
  %4820 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 1
  %4821 = load double, ptr %4820, align 8, !tbaa !11
  %4822 = load ptr, ptr %24, align 8, !tbaa !5
  %4823 = load i64, ptr %45, align 8, !tbaa !9
  %4824 = load i64, ptr %46, align 8, !tbaa !9
  %4825 = load i64, ptr %32, align 8, !tbaa !9
  %4826 = mul nsw i64 %4824, %4825
  %4827 = add nsw i64 %4823, %4826
  %4828 = getelementptr inbounds double, ptr %4822, i64 %4827
  store double %4821, ptr %4828, align 8, !tbaa !11
  %4829 = getelementptr inbounds [4 x double], ptr %43, i64 0, i64 3
  %4830 = load double, ptr %4829, align 8, !tbaa !11
  %4831 = load ptr, ptr %24, align 8, !tbaa !5
  %4832 = load i64, ptr %45, align 8, !tbaa !9
  %4833 = load i64, ptr %47, align 8, !tbaa !9
  %4834 = load i64, ptr %32, align 8, !tbaa !9
  %4835 = mul nsw i64 %4833, %4834
  %4836 = add nsw i64 %4832, %4835
  %4837 = getelementptr inbounds double, ptr %4831, i64 %4836
  store double %4830, ptr %4837, align 8, !tbaa !11
  br label %4838

4838:                                             ; preds = %4801, %4333, %4329
  br label %4839

4839:                                             ; preds = %4838, %4310
  br label %4840

4840:                                             ; preds = %4839, %4019
  br label %4841

4841:                                             ; preds = %4840, %3741
  br label %4842

4842:                                             ; preds = %4841, %3503
  br label %4843

4843:                                             ; preds = %4842
  %4844 = load i64, ptr %41, align 8, !tbaa !9
  %4845 = add nsw i64 %4844, -1
  store i64 %4845, ptr %41, align 8, !tbaa !9
  br label %3496, !llvm.loop !36

4846:                                             ; preds = %3496
  br label %4847

4847:                                             ; preds = %4846, %3461
  br label %4848

4848:                                             ; preds = %4847
  %4849 = load i64, ptr %42, align 8, !tbaa !9
  %4850 = add nsw i64 %4849, -1
  store i64 %4850, ptr %42, align 8, !tbaa !9
  br label %3454, !llvm.loop !37

4851:                                             ; preds = %3454
  br label %4852

4852:                                             ; preds = %4851, %3446, %3443
  br label %4853

4853:                                             ; preds = %4852, %3442
  br label %4854

4854:                                             ; preds = %4853, %2293
  br label %4855

4855:                                             ; preds = %4854, %1413
  store i32 0, ptr %14, align 4
  store i32 1, ptr %67, align 4
  br label %4856

4856:                                             ; preds = %4855, %214, %200
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  %4857 = load i32, ptr %14, align 4
  ret i32 %4857
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

declare i32 @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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!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 i64, align 8
@c_false = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c_b26 = external hidden global double, align 8
@c_b30 = external hidden global double, align 8
@c_true = external hidden global i64, align 8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

69:                                               ; preds = %65
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %70 = icmp eq i64 %51, 0
  %71 = icmp eq i64 %54, 0
  %or.cond2635 = or i1 %70, %71
  br i1 %or.cond2635, label %.loopexit2312, 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 %26, align 8, !tbaa !9
  %75 = fdiv double 1.000000e+00, %74
  store double %75, ptr %25, align 8, !tbaa !9
  %76 = call i32 @dlabad_(ptr noundef nonnull %26, ptr noundef nonnull %25) #5
  %77 = load double, ptr %26, align 8, !tbaa !9
  %78 = load i64, ptr %3, align 8, !tbaa !5
  %79 = load i64, ptr %4, align 8, !tbaa !5
  %80 = mul nsw i64 %79, %78
  %81 = sitofp i64 %80 to double
  %82 = fmul double %77, %81
  %83 = fdiv double %82, %73
  store double %83, ptr %26, align 8, !tbaa !9
  %84 = fdiv double 1.000000e+00, %83
  store double %84, ptr %25, align 8, !tbaa !9
  store double %83, ptr %17, align 8, !tbaa !9
  %85 = 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 %20) #5
  %86 = fmul double %73, %85
  %87 = load double, ptr %17, align 8
  %88 = fcmp oge double %87, %86
  %89 = select i1 %88, double %87, double %86
  store double %89, ptr %17, align 8, !tbaa !9
  %90 = 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 %20) #5
  %91 = fmul double %73, %90
  %92 = load double, ptr %17, align 8
  %93 = fcmp oge double %92, %91
  %94 = select i1 %93, double %92, double %91
  store double %94, ptr %22, align 8, !tbaa !9
  %95 = load i64, ptr %2, align 8, !tbaa !5
  %96 = sitofp i64 %95 to double
  %97 = icmp ne i64 %37, 0
  %or.cond = select i1 %38, i1 %97, i1 false
  br i1 %or.cond, label %98, label %359

98:                                               ; preds = %72
  %99 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %99, ptr %14, align 8, !tbaa !5
  %.not22292568 = icmp slt i64 %99, 1
  br i1 %.not22292568, label %.loopexit2312, label %.lr.ph2573

.lr.ph2573:                                       ; preds = %98
  %invariant.gep2534 = getelementptr i8, ptr %32, i64 8
  %100 = getelementptr inbounds i8, ptr %19, i64 8
  %101 = fneg double %96
  %102 = add i64 %27, 1
  %invariant.gep2506 = getelementptr i8, ptr %35, i64 8
  %103 = getelementptr inbounds i8, ptr %18, i64 8
  %104 = getelementptr inbounds i8, ptr %19, i64 16
  %105 = getelementptr inbounds i8, ptr %19, i64 24
  %106 = getelementptr inbounds i8, ptr %18, i64 16
  %107 = getelementptr inbounds i8, ptr %18, i64 24
  br label %108

108:                                              ; preds = %.lr.ph2573, %.loopexit
  %109 = phi i64 [ %99, %.lr.ph2573 ], [ %357, %.loopexit ]
  %.019182571 = phi i64 [ 1, %.lr.ph2573 ], [ %.2, %.loopexit ]
  %.019552569 = phi i64 [ 1, %.lr.ph2573 ], [ %358, %.loopexit ]
  %110 = icmp slt i64 %.019552569, %.019182571
  br i1 %110, label %.loopexit, label %111

111:                                              ; preds = %108
  %112 = load i64, ptr %4, align 8, !tbaa !5
  %113 = icmp eq i64 %.019552569, %112
  br i1 %113, label %123, label %114

114:                                              ; preds = %111
  %115 = add nuw nsw i64 %.019552569, 1
  %116 = mul nsw i64 %.019552569, %30
  %117 = getelementptr double, ptr %32, i64 %115
  %118 = getelementptr double, ptr %117, i64 %116
  %119 = load double, ptr %118, align 8, !tbaa !9
  %120 = fcmp une double %119, 0.000000e+00
  br i1 %120, label %121, label %123

121:                                              ; preds = %114
  %122 = add nuw nsw i64 %.019552569, 2
  br label %123

123:                                              ; preds = %114, %111, %121
  %.01939 = phi i64 [ %115, %121 ], [ %.019552569, %111 ], [ %.019552569, %114 ]
  %.1 = phi i64 [ %122, %121 ], [ %.019182571, %111 ], [ %115, %114 ]
  %124 = load i64, ptr %3, align 8, !tbaa !5
  %125 = icmp sgt i64 %124, 0
  br i1 %125, label %.lr.ph2549, label %.loopexit

.lr.ph2549:                                       ; preds = %123
  %126 = icmp eq i64 %.019552569, %.01939
  %127 = mul nsw i64 %.019552569, %33
  %invariant.gep2550 = getelementptr double, ptr %35, i64 %127
  %128 = add nsw i64 %.019552569, -1
  %129 = mul nsw i64 %.019552569, %30
  %gep2535 = getelementptr double, ptr %invariant.gep2534, i64 %129
  %130 = getelementptr double, ptr %32, i64 %.019552569
  %131 = getelementptr double, ptr %130, i64 %129
  %132 = mul nsw i64 %.01939, %33
  %invariant.gep2556 = getelementptr double, ptr %35, i64 %132
  %133 = mul nsw i64 %.01939, %30
  %gep2539 = getelementptr double, ptr %invariant.gep2534, i64 %133
  br label %134

134:                                              ; preds = %.lr.ph2549, %354
  %.019192547 = phi i64 [ %124, %.lr.ph2549 ], [ %.21921, %354 ]
  %.019592546 = phi i64 [ %124, %.lr.ph2549 ], [ %355, %354 ]
  %135 = icmp sgt i64 %.019592546, %.019192547
  br i1 %135, label %354, label %136

136:                                              ; preds = %134
  %137 = icmp eq i64 %.019592546, 1
  br i1 %137, label %145, label %138

138:                                              ; preds = %136
  %139 = add nsw i64 %.019592546, -1
  %140 = mul nsw i64 %139, %27
  %141 = getelementptr double, ptr %29, i64 %.019592546
  %142 = getelementptr double, ptr %141, i64 %140
  %143 = load double, ptr %142, align 8, !tbaa !9
  %144 = fcmp une double %143, 0.000000e+00
  br i1 %144, label %198, label %145

145:                                              ; preds = %138, %136
  %.11920 = phi i64 [ %.019192547, %136 ], [ %139, %138 ]
  %146 = load i64, ptr %3, align 8, !tbaa !5
  %147 = sub nsw i64 %146, %.019592546
  store i64 %147, ptr %15, align 8, !tbaa !5
  %148 = add nuw nsw i64 %.019592546, 1
  br i1 %126, label %149, label %250

149:                                              ; preds = %145
  store i64 %148, ptr %16, align 8, !tbaa !5
  %.not2255.not = icmp slt i64 %.019592546, %146
  %. = select i1 %.not2255.not, i64 %148, i64 %146
  %150 = mul nsw i64 %., %27
  %151 = getelementptr double, ptr %29, i64 %.019592546
  %152 = getelementptr double, ptr %151, i64 %150
  %gep2567 = getelementptr double, ptr %invariant.gep2550, i64 %.
  %153 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %152, ptr noundef nonnull %6, ptr noundef %gep2567, ptr noundef nonnull @c__1) #5
  store i64 %128, ptr %15, align 8, !tbaa !5
  %154 = getelementptr double, ptr %35, i64 %.019592546
  %155 = getelementptr double, ptr %154, i64 %33
  %156 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %155, ptr noundef nonnull %10, ptr noundef %gep2535, ptr noundef nonnull @c__1) #5
  %157 = getelementptr double, ptr %154, i64 %127
  %158 = load double, ptr %157, align 8, !tbaa !9
  %159 = call double @llvm.fmuladd.f64(double %96, double %156, double %153)
  %160 = fsub double %158, %159
  store double %160, ptr %19, align 16, !tbaa !9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %161 = mul i64 %.019592546, %102
  %162 = getelementptr inbounds double, ptr %29, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !9
  %164 = load double, ptr %131, align 8, !tbaa !9
  %165 = call double @llvm.fmuladd.f64(double %96, double %164, double %163)
  %166 = fcmp oge double %165, 0.000000e+00
  %167 = fneg double %165
  %168 = select i1 %166, double %165, double %167
  %169 = load double, ptr %22, align 8, !tbaa !9
  %170 = fcmp ugt double %168, %169
  br i1 %170, label %172, label %171

171:                                              ; preds = %149
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %172

172:                                              ; preds = %171, %149
  %.01935 = phi double [ %169, %171 ], [ %165, %149 ]
  %.01931 = phi double [ %169, %171 ], [ %168, %149 ]
  %173 = fcmp oge double %160, 0.000000e+00
  %174 = fneg double %160
  %175 = select i1 %173, double %160, double %174
  %176 = fcmp olt double %.01931, 1.000000e+00
  %177 = fcmp ogt double %175, 1.000000e+00
  %or.cond3 = select i1 %176, i1 %177, i1 false
  br i1 %or.cond3, label %178, label %thread-pre-split2298.thread

178:                                              ; preds = %172
  %179 = load double, ptr %25, align 8, !tbaa !9
  %180 = fmul double %.01931, %179
  %181 = fcmp ogt double %175, %180
  br i1 %181, label %thread-pre-split2298, label %thread-pre-split2298.thread

thread-pre-split2298.thread:                      ; preds = %172, %178
  %182 = fdiv double %160, %.01935
  store double %182, ptr %18, align 16, !tbaa !9
  br label %196

thread-pre-split2298:                             ; preds = %178
  %183 = fdiv double 1.000000e+00, %175
  store double %183, ptr %24, align 8, !tbaa !9
  %184 = fmul double %160, %183
  %185 = fdiv double %184, %.01935
  store double %185, ptr %18, align 16, !tbaa !9
  %186 = fcmp une double %183, 1.000000e+00
  br i1 %186, label %187, label %196

187:                                              ; preds = %thread-pre-split2298
  %188 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %188, ptr %15, align 8, !tbaa !5
  %.not22572529 = icmp slt i64 %188, 1
  br i1 %.not22572529, label %._crit_edge2533, label %.lr.ph2532

.lr.ph2532:                                       ; preds = %187, %.lr.ph2532
  %.019632530 = phi i64 [ %191, %.lr.ph2532 ], [ 1, %187 ]
  %189 = mul nsw i64 %.019632530, %33
  %gep2528 = getelementptr double, ptr %invariant.gep2506, i64 %189
  %190 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2528, ptr noundef nonnull @c__1) #5
  %191 = add nuw nsw i64 %.019632530, 1
  %192 = load i64, ptr %15, align 8, !tbaa !5
  %.not2257.not = icmp slt i64 %.019632530, %192
  br i1 %.not2257.not, label %.lr.ph2532, label %._crit_edge2533.loopexit, !llvm.loop !11

._crit_edge2533.loopexit:                         ; preds = %.lr.ph2532
  %.pre2595 = load double, ptr %24, align 8, !tbaa !9
  %.pre2596.pre = load double, ptr %18, align 16, !tbaa !9
  br label %._crit_edge2533

._crit_edge2533:                                  ; preds = %._crit_edge2533.loopexit, %187
  %.pre2596 = phi double [ %.pre2596.pre, %._crit_edge2533.loopexit ], [ %185, %187 ]
  %193 = phi double [ %.pre2595, %._crit_edge2533.loopexit ], [ %183, %187 ]
  %194 = load double, ptr %11, align 8, !tbaa !9
  %195 = fmul double %193, %194
  store double %195, ptr %11, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %thread-pre-split2298.thread, %._crit_edge2533, %thread-pre-split2298
  %197 = phi double [ %.pre2596, %._crit_edge2533 ], [ %185, %thread-pre-split2298 ], [ %182, %thread-pre-split2298.thread ]
  store double %197, ptr %157, align 8, !tbaa !9
  br label %354

198:                                              ; preds = %138
  %199 = add nsw i64 %.019592546, -2
  %200 = load i64, ptr %3, align 8, !tbaa !5
  %201 = sub nsw i64 %200, %.019592546
  store i64 %201, ptr %15, align 8, !tbaa !5
  %202 = add nuw nsw i64 %.019592546, 1
  %.not2249.not = icmp slt i64 %.019592546, %200
  %.2263 = select i1 %.not2249.not, i64 %202, i64 %200
  %203 = mul nsw i64 %.2263, %27
  %204 = getelementptr double, ptr %29, i64 %139
  %205 = getelementptr double, ptr %204, i64 %203
  %gep2551 = getelementptr double, ptr %invariant.gep2550, i64 %.2263
  %206 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %205, ptr noundef nonnull %6, ptr noundef %gep2551, ptr noundef nonnull @c__1) #5
  store i64 %128, ptr %15, align 8, !tbaa !5
  %207 = getelementptr double, ptr %35, i64 %139
  %208 = getelementptr double, ptr %207, i64 %33
  %209 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %208, ptr noundef nonnull %10, ptr noundef %gep2535, ptr noundef nonnull @c__1) #5
  %210 = getelementptr double, ptr %207, i64 %127
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = call double @llvm.fmuladd.f64(double %96, double %209, double %206)
  %213 = fsub double %211, %212
  store double %213, ptr %19, align 16, !tbaa !9
  %214 = load i64, ptr %3, align 8, !tbaa !5
  %215 = sub nsw i64 %214, %.019592546
  store i64 %215, ptr %15, align 8, !tbaa !5
  br i1 %126, label %216, label %297

216:                                              ; preds = %198
  store i64 %202, ptr %16, align 8, !tbaa !5
  %.not2251.not = icmp slt i64 %.019592546, %214
  %217 = select i1 %.not2251.not, i64 %202, i64 %214
  %218 = mul nsw i64 %217, %27
  %219 = getelementptr double, ptr %29, i64 %.019592546
  %220 = getelementptr double, ptr %219, i64 %218
  %gep2553 = getelementptr double, ptr %invariant.gep2550, i64 %217
  %221 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %220, ptr noundef nonnull %6, ptr noundef %gep2553, ptr noundef nonnull @c__1) #5
  store i64 %128, ptr %15, align 8, !tbaa !5
  %222 = getelementptr double, ptr %35, i64 %.019592546
  %223 = getelementptr double, ptr %222, i64 %33
  %224 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %223, ptr noundef nonnull %10, ptr noundef %gep2535, ptr noundef nonnull @c__1) #5
  %225 = getelementptr double, ptr %222, i64 %127
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = call double @llvm.fmuladd.f64(double %96, double %224, double %221)
  %228 = fsub double %226, %227
  store double %228, ptr %100, align 8, !tbaa !9
  %229 = load double, ptr %131, align 8, !tbaa !9
  %230 = fmul double %229, %101
  store double %230, ptr %17, align 8, !tbaa !9
  %231 = mul i64 %139, %102
  %232 = getelementptr inbounds double, ptr %29, i64 %231
  %233 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c_b26, ptr noundef %232, ptr noundef nonnull %6, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %234 = load i64, ptr %21, align 8, !tbaa !5
  %.not2253 = icmp eq i64 %234, 0
  br i1 %.not2253, label %236, label %235

235:                                              ; preds = %216
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %236

236:                                              ; preds = %235, %216
  %237 = load double, ptr %24, align 8, !tbaa !9
  %238 = fcmp une double %237, 1.000000e+00
  br i1 %238, label %239, label %248

239:                                              ; preds = %236
  %240 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %240, ptr %15, align 8, !tbaa !5
  %.not22542508 = icmp slt i64 %240, 1
  br i1 %.not22542508, label %._crit_edge2512, label %.lr.ph2511

.lr.ph2511:                                       ; preds = %239, %.lr.ph2511
  %.119642509 = phi i64 [ %243, %.lr.ph2511 ], [ 1, %239 ]
  %241 = mul nsw i64 %.119642509, %33
  %gep2507 = getelementptr double, ptr %invariant.gep2506, i64 %241
  %242 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2507, ptr noundef nonnull @c__1) #5
  %243 = add nuw nsw i64 %.119642509, 1
  %244 = load i64, ptr %15, align 8, !tbaa !5
  %.not2254.not = icmp slt i64 %.119642509, %244
  br i1 %.not2254.not, label %.lr.ph2511, label %._crit_edge2512.loopexit, !llvm.loop !13

._crit_edge2512.loopexit:                         ; preds = %.lr.ph2511
  %.pre2592 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2512

._crit_edge2512:                                  ; preds = %._crit_edge2512.loopexit, %239
  %245 = phi double [ %.pre2592, %._crit_edge2512.loopexit ], [ %237, %239 ]
  %246 = load double, ptr %11, align 8, !tbaa !9
  %247 = fmul double %245, %246
  store double %247, ptr %11, align 8, !tbaa !9
  br label %248

248:                                              ; preds = %._crit_edge2512, %236
  %249 = load <2 x double>, ptr %18, align 16, !tbaa !9
  store <2 x double> %249, ptr %210, align 8, !tbaa !9
  br label %354

250:                                              ; preds = %145
  %.not2243.not = icmp slt i64 %.019592546, %146
  %.2265 = select i1 %.not2243.not, i64 %148, i64 %146
  %251 = mul nsw i64 %.2265, %27
  %252 = getelementptr double, ptr %29, i64 %.019592546
  %253 = getelementptr double, ptr %252, i64 %251
  %gep2563 = getelementptr double, ptr %invariant.gep2550, i64 %.2265
  %254 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %253, ptr noundef nonnull %6, ptr noundef %gep2563, ptr noundef nonnull @c__1) #5
  store i64 %128, ptr %15, align 8, !tbaa !5
  %255 = getelementptr double, ptr %35, i64 %.019592546
  %256 = getelementptr double, ptr %255, i64 %33
  %257 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %256, ptr noundef nonnull %10, ptr noundef %gep2535, ptr noundef nonnull @c__1) #5
  %258 = getelementptr double, ptr %255, i64 %127
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = call double @llvm.fmuladd.f64(double %96, double %257, double %254)
  %261 = fsub double %259, %260
  %262 = fmul double %261, %96
  store double %262, ptr %19, align 16, !tbaa !9
  %263 = load i64, ptr %3, align 8, !tbaa !5
  %264 = sub nsw i64 %263, %.019592546
  store i64 %264, ptr %15, align 8, !tbaa !5
  store i64 %148, ptr %16, align 8, !tbaa !5
  %.not2245.not = icmp slt i64 %.019592546, %263
  %265 = select i1 %.not2245.not, i64 %148, i64 %263
  %266 = mul nsw i64 %265, %27
  %267 = getelementptr double, ptr %252, i64 %266
  %gep2565 = getelementptr double, ptr %invariant.gep2556, i64 %265
  %268 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %267, ptr noundef nonnull %6, ptr noundef %gep2565, ptr noundef nonnull @c__1) #5
  store i64 %128, ptr %15, align 8, !tbaa !5
  %269 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %256, ptr noundef nonnull %10, ptr noundef %gep2539, ptr noundef nonnull @c__1) #5
  %270 = getelementptr double, ptr %255, i64 %132
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = call double @llvm.fmuladd.f64(double %96, double %269, double %268)
  %273 = fsub double %271, %272
  %274 = fmul double %273, %96
  store double %274, ptr %100, align 8, !tbaa !9
  %275 = mul i64 %.019592546, %102
  %276 = getelementptr inbounds double, ptr %29, i64 %275
  %277 = load double, ptr %276, align 8, !tbaa !9
  %278 = fmul double %277, %101
  store double %278, ptr %17, align 8, !tbaa !9
  %279 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c_b26, ptr noundef %131, ptr noundef nonnull %8, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %280 = load i64, ptr %21, align 8, !tbaa !5
  %.not2247 = icmp eq i64 %280, 0
  br i1 %.not2247, label %282, label %281

281:                                              ; preds = %250
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %282

282:                                              ; preds = %281, %250
  %283 = load double, ptr %24, align 8, !tbaa !9
  %284 = fcmp une double %283, 1.000000e+00
  br i1 %284, label %285, label %294

285:                                              ; preds = %282
  %286 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %286, ptr %15, align 8, !tbaa !5
  %.not22482522 = icmp slt i64 %286, 1
  br i1 %.not22482522, label %._crit_edge2526, label %.lr.ph2525

.lr.ph2525:                                       ; preds = %285, %.lr.ph2525
  %.219652523 = phi i64 [ %289, %.lr.ph2525 ], [ 1, %285 ]
  %287 = mul nsw i64 %.219652523, %33
  %gep2521 = getelementptr double, ptr %invariant.gep2506, i64 %287
  %288 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2521, ptr noundef nonnull @c__1) #5
  %289 = add nuw nsw i64 %.219652523, 1
  %290 = load i64, ptr %15, align 8, !tbaa !5
  %.not2248.not = icmp slt i64 %.219652523, %290
  br i1 %.not2248.not, label %.lr.ph2525, label %._crit_edge2526.loopexit, !llvm.loop !14

._crit_edge2526.loopexit:                         ; preds = %.lr.ph2525
  %.pre2594 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2526

._crit_edge2526:                                  ; preds = %._crit_edge2526.loopexit, %285
  %291 = phi double [ %.pre2594, %._crit_edge2526.loopexit ], [ %283, %285 ]
  %292 = load double, ptr %11, align 8, !tbaa !9
  %293 = fmul double %291, %292
  store double %293, ptr %11, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %._crit_edge2526, %282
  %295 = load double, ptr %18, align 16, !tbaa !9
  store double %295, ptr %258, align 8, !tbaa !9
  %296 = load double, ptr %103, align 8, !tbaa !9
  store double %296, ptr %270, align 8, !tbaa !9
  br label %354

297:                                              ; preds = %198
  %.not2235.not = icmp slt i64 %.019592546, %214
  %298 = select i1 %.not2235.not, i64 %202, i64 %214
  %299 = mul nsw i64 %298, %27
  %300 = getelementptr double, ptr %204, i64 %299
  %gep2557 = getelementptr double, ptr %invariant.gep2556, i64 %298
  %301 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %300, ptr noundef nonnull %6, ptr noundef %gep2557, ptr noundef nonnull @c__1) #5
  store i64 %128, ptr %15, align 8, !tbaa !5
  %302 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %208, ptr noundef nonnull %10, ptr noundef %gep2539, ptr noundef nonnull @c__1) #5
  %303 = getelementptr double, ptr %207, i64 %132
  %304 = load double, ptr %303, align 8, !tbaa !9
  %305 = call double @llvm.fmuladd.f64(double %96, double %302, double %301)
  %306 = fsub double %304, %305
  store double %306, ptr %104, align 16, !tbaa !9
  %307 = load i64, ptr %3, align 8, !tbaa !5
  %308 = sub nsw i64 %307, %.019592546
  store i64 %308, ptr %15, align 8, !tbaa !5
  %.not2237.not = icmp slt i64 %.019592546, %307
  %309 = select i1 %.not2237.not, i64 %202, i64 %307
  %310 = mul nsw i64 %309, %27
  %311 = getelementptr double, ptr %29, i64 %.019592546
  %312 = getelementptr double, ptr %311, i64 %310
  %gep2559 = getelementptr double, ptr %invariant.gep2550, i64 %309
  %313 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %312, ptr noundef nonnull %6, ptr noundef %gep2559, ptr noundef nonnull @c__1) #5
  store i64 %128, ptr %15, align 8, !tbaa !5
  %314 = getelementptr double, ptr %35, i64 %.019592546
  %315 = getelementptr double, ptr %314, i64 %33
  %316 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %315, ptr noundef nonnull %10, ptr noundef %gep2535, ptr noundef nonnull @c__1) #5
  %317 = getelementptr double, ptr %314, i64 %127
  %318 = load double, ptr %317, align 8, !tbaa !9
  %319 = call double @llvm.fmuladd.f64(double %96, double %316, double %313)
  %320 = fsub double %318, %319
  store double %320, ptr %100, align 8, !tbaa !9
  %321 = load i64, ptr %3, align 8, !tbaa !5
  %322 = sub nsw i64 %321, %.019592546
  store i64 %322, ptr %15, align 8, !tbaa !5
  store i64 %202, ptr %16, align 8, !tbaa !5
  %.not2239.not = icmp slt i64 %.019592546, %321
  %323 = select i1 %.not2239.not, i64 %202, i64 %321
  %324 = mul nsw i64 %323, %27
  %325 = getelementptr double, ptr %311, i64 %324
  %gep2561 = getelementptr double, ptr %invariant.gep2556, i64 %323
  %326 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %325, ptr noundef nonnull %6, ptr noundef %gep2561, ptr noundef nonnull @c__1) #5
  store i64 %128, ptr %15, align 8, !tbaa !5
  %327 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %315, ptr noundef nonnull %10, ptr noundef %gep2539, ptr noundef nonnull @c__1) #5
  %328 = getelementptr double, ptr %314, i64 %132
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = call double @llvm.fmuladd.f64(double %96, double %327, double %326)
  %331 = fsub double %329, %330
  store double %331, ptr %105, align 8, !tbaa !9
  %332 = mul i64 %139, %102
  %333 = getelementptr inbounds double, ptr %29, i64 %332
  %334 = call i32 @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 %333, ptr noundef nonnull %6, ptr noundef %131, ptr noundef nonnull %8, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %335 = load i64, ptr %21, align 8, !tbaa !5
  %.not2241 = icmp eq i64 %335, 0
  br i1 %.not2241, label %337, label %336

336:                                              ; preds = %297
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %337

337:                                              ; preds = %336, %297
  %338 = load double, ptr %24, align 8, !tbaa !9
  %339 = fcmp une double %338, 1.000000e+00
  br i1 %339, label %340, label %349

340:                                              ; preds = %337
  %341 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %341, ptr %15, align 8, !tbaa !5
  %.not22422515 = icmp slt i64 %341, 1
  br i1 %.not22422515, label %._crit_edge2519, label %.lr.ph2518

.lr.ph2518:                                       ; preds = %340, %.lr.ph2518
  %.319662516 = phi i64 [ %344, %.lr.ph2518 ], [ 1, %340 ]
  %342 = mul nsw i64 %.319662516, %33
  %gep2514 = getelementptr double, ptr %invariant.gep2506, i64 %342
  %343 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2514, ptr noundef nonnull @c__1) #5
  %344 = add nuw nsw i64 %.319662516, 1
  %345 = load i64, ptr %15, align 8, !tbaa !5
  %.not2242.not = icmp slt i64 %.319662516, %345
  br i1 %.not2242.not, label %.lr.ph2518, label %._crit_edge2519.loopexit, !llvm.loop !15

._crit_edge2519.loopexit:                         ; preds = %.lr.ph2518
  %.pre2593 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2519

._crit_edge2519:                                  ; preds = %._crit_edge2519.loopexit, %340
  %346 = phi double [ %.pre2593, %._crit_edge2519.loopexit ], [ %338, %340 ]
  %347 = load double, ptr %11, align 8, !tbaa !9
  %348 = fmul double %346, %347
  store double %348, ptr %11, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %._crit_edge2519, %337
  %350 = load double, ptr %18, align 16, !tbaa !9
  store double %350, ptr %210, align 8, !tbaa !9
  %351 = load double, ptr %106, align 16, !tbaa !9
  store double %351, ptr %303, align 8, !tbaa !9
  %352 = load double, ptr %103, align 8, !tbaa !9
  store double %352, ptr %317, align 8, !tbaa !9
  %353 = load double, ptr %107, align 8, !tbaa !9
  store double %353, ptr %328, align 8, !tbaa !9
  br label %354

354:                                              ; preds = %134, %248, %349, %294, %196
  %.21921 = phi i64 [ %.019192547, %134 ], [ %.11920, %196 ], [ %199, %248 ], [ %.11920, %294 ], [ %199, %349 ]
  %355 = add nsw i64 %.019592546, -1
  %356 = icmp sgt i64 %.019592546, 1
  br i1 %356, label %134, label %.loopexit.loopexit, !llvm.loop !16

.loopexit.loopexit:                               ; preds = %354
  %.pre2597 = load i64, ptr %14, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %123, %108
  %357 = phi i64 [ %109, %108 ], [ %109, %123 ], [ %.pre2597, %.loopexit.loopexit ]
  %.2 = phi i64 [ %.019182571, %108 ], [ %.1, %123 ], [ %.1, %.loopexit.loopexit ]
  %358 = add nuw nsw i64 %.019552569, 1
  %.not2229.not = icmp slt i64 %.019552569, %357
  br i1 %.not2229.not, label %108, label %.loopexit2312, !llvm.loop !17

359:                                              ; preds = %72
  %360 = icmp eq i64 %36, 0
  %or.cond5 = select i1 %360, i1 %97, i1 false
  br i1 %or.cond5, label %361, label %604

361:                                              ; preds = %359
  %362 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %362, ptr %14, align 8, !tbaa !5
  %.not22172500 = icmp slt i64 %362, 1
  br i1 %.not22172500, label %.loopexit2312, label %.lr.ph2505

.lr.ph2505:                                       ; preds = %361
  %invariant.gep2459 = getelementptr i8, ptr %29, i64 8
  %invariant.gep2461 = getelementptr i8, ptr %35, i64 8
  %invariant.gep2463 = getelementptr i8, ptr %32, i64 8
  %363 = getelementptr inbounds i8, ptr %19, i64 8
  %364 = fneg double %96
  %365 = getelementptr inbounds i8, ptr %18, i64 8
  %366 = getelementptr inbounds i8, ptr %19, i64 16
  %367 = getelementptr inbounds i8, ptr %19, i64 24
  %368 = getelementptr inbounds i8, ptr %18, i64 16
  %369 = getelementptr inbounds i8, ptr %18, i64 24
  br label %370

370:                                              ; preds = %.lr.ph2505, %.loopexit2313
  %371 = phi i64 [ %362, %.lr.ph2505 ], [ %602, %.loopexit2313 ]
  %.32503 = phi i64 [ 1, %.lr.ph2505 ], [ %.5, %.loopexit2313 ]
  %.119562501 = phi i64 [ 1, %.lr.ph2505 ], [ %603, %.loopexit2313 ]
  %372 = icmp slt i64 %.119562501, %.32503
  br i1 %372, label %.loopexit2313, label %373

373:                                              ; preds = %370
  %374 = load i64, ptr %4, align 8, !tbaa !5
  %375 = icmp eq i64 %.119562501, %374
  br i1 %375, label %385, label %376

376:                                              ; preds = %373
  %377 = add nuw nsw i64 %.119562501, 1
  %378 = mul nsw i64 %.119562501, %30
  %379 = getelementptr double, ptr %32, i64 %377
  %380 = getelementptr double, ptr %379, i64 %378
  %381 = load double, ptr %380, align 8, !tbaa !9
  %382 = fcmp une double %381, 0.000000e+00
  br i1 %382, label %383, label %385

383:                                              ; preds = %376
  %384 = add nuw nsw i64 %.119562501, 2
  br label %385

385:                                              ; preds = %376, %373, %383
  %.11940 = phi i64 [ %377, %383 ], [ %.119562501, %373 ], [ %.119562501, %376 ]
  %.4 = phi i64 [ %384, %383 ], [ %.32503, %373 ], [ %377, %376 ]
  %386 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %386, ptr %15, align 8, !tbaa !5
  %.not22182495 = icmp slt i64 %386, 1
  br i1 %.not22182495, label %.loopexit2313, label %.lr.ph2499

.lr.ph2499:                                       ; preds = %385
  %387 = icmp eq i64 %.119562501, %.11940
  %.not2269 = xor i1 %387, true
  %388 = mul nsw i64 %.119562501, %33
  %gep2462 = getelementptr double, ptr %invariant.gep2461, i64 %388
  %389 = add nsw i64 %.119562501, -1
  %390 = mul nsw i64 %.119562501, %30
  %gep2464 = getelementptr double, ptr %invariant.gep2463, i64 %390
  %391 = getelementptr double, ptr %32, i64 %.119562501
  %392 = getelementptr double, ptr %391, i64 %390
  %393 = mul nsw i64 %.11940, %33
  %gep2474 = getelementptr double, ptr %invariant.gep2461, i64 %393
  %394 = mul nsw i64 %.11940, %30
  %gep2476 = getelementptr double, ptr %invariant.gep2463, i64 %394
  br label %395

395:                                              ; preds = %.lr.ph2499, %599
  %.319222497 = phi i64 [ 1, %.lr.ph2499 ], [ %.51924, %599 ]
  %.119602496 = phi i64 [ 1, %.lr.ph2499 ], [ %600, %599 ]
  %396 = icmp slt i64 %.119602496, %.319222497
  br i1 %396, label %599, label %397

397:                                              ; preds = %395
  %398 = load i64, ptr %3, align 8, !tbaa !5
  %399 = icmp eq i64 %.119602496, %398
  br i1 %399, label %409, label %400

400:                                              ; preds = %397
  %401 = add nuw nsw i64 %.119602496, 1
  %402 = mul nsw i64 %.119602496, %27
  %403 = getelementptr double, ptr %29, i64 %401
  %404 = getelementptr double, ptr %403, i64 %402
  %405 = load double, ptr %404, align 8, !tbaa !9
  %406 = fcmp une double %405, 0.000000e+00
  br i1 %406, label %407, label %409

407:                                              ; preds = %400
  %408 = add nuw nsw i64 %.119602496, 2
  br label %409

409:                                              ; preds = %400, %397, %407
  %.11948 = phi i64 [ %401, %407 ], [ %.119602496, %397 ], [ %.119602496, %400 ]
  %.41923 = phi i64 [ %408, %407 ], [ %.319222497, %397 ], [ %401, %400 ]
  %410 = icmp eq i64 %.119602496, %.11948
  %or.cond2268 = and i1 %387, %410
  br i1 %or.cond2268, label %411, label %459

411:                                              ; preds = %409
  %412 = add nsw i64 %.119602496, -1
  store i64 %412, ptr %16, align 8, !tbaa !5
  %413 = mul nsw i64 %.119602496, %27
  %gep2490 = getelementptr double, ptr %invariant.gep2459, i64 %413
  %414 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2490, ptr noundef nonnull @c__1, ptr noundef %gep2462, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %415 = getelementptr double, ptr %35, i64 %.119602496
  %416 = getelementptr double, ptr %415, i64 %33
  %417 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %416, ptr noundef nonnull %10, ptr noundef %gep2464, ptr noundef nonnull @c__1) #5
  %418 = getelementptr double, ptr %415, i64 %388
  %419 = load double, ptr %418, align 8, !tbaa !9
  %420 = call double @llvm.fmuladd.f64(double %96, double %417, double %414)
  %421 = fsub double %419, %420
  store double %421, ptr %19, align 16, !tbaa !9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %422 = getelementptr double, ptr %29, i64 %.119602496
  %423 = getelementptr double, ptr %422, i64 %413
  %424 = load double, ptr %423, align 8, !tbaa !9
  %425 = load double, ptr %392, align 8, !tbaa !9
  %426 = call double @llvm.fmuladd.f64(double %96, double %425, double %424)
  %427 = fcmp oge double %426, 0.000000e+00
  %428 = fneg double %426
  %429 = select i1 %427, double %426, double %428
  %430 = load double, ptr %22, align 8, !tbaa !9
  %431 = fcmp ugt double %429, %430
  br i1 %431, label %433, label %432

432:                                              ; preds = %411
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %433

433:                                              ; preds = %432, %411
  %.11936 = phi double [ %430, %432 ], [ %426, %411 ]
  %.11932 = phi double [ %430, %432 ], [ %429, %411 ]
  %434 = fcmp oge double %421, 0.000000e+00
  %435 = fneg double %421
  %436 = select i1 %434, double %421, double %435
  %437 = fcmp olt double %.11932, 1.000000e+00
  %438 = fcmp ogt double %436, 1.000000e+00
  %or.cond7 = select i1 %437, i1 %438, i1 false
  br i1 %or.cond7, label %439, label %thread-pre-split2300.thread

439:                                              ; preds = %433
  %440 = load double, ptr %25, align 8, !tbaa !9
  %441 = fmul double %.11932, %440
  %442 = fcmp ogt double %436, %441
  br i1 %442, label %thread-pre-split2300, label %thread-pre-split2300.thread

thread-pre-split2300.thread:                      ; preds = %433, %439
  %443 = fdiv double %421, %.11936
  store double %443, ptr %18, align 16, !tbaa !9
  br label %457

thread-pre-split2300:                             ; preds = %439
  %444 = fdiv double 1.000000e+00, %436
  store double %444, ptr %24, align 8, !tbaa !9
  %445 = fmul double %421, %444
  %446 = fdiv double %445, %.11936
  store double %446, ptr %18, align 16, !tbaa !9
  %447 = fcmp une double %444, 1.000000e+00
  br i1 %447, label %448, label %457

448:                                              ; preds = %thread-pre-split2300
  %449 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %449, ptr %16, align 8, !tbaa !5
  %.not22282454 = icmp slt i64 %449, 1
  br i1 %.not22282454, label %._crit_edge2458, label %.lr.ph2457

.lr.ph2457:                                       ; preds = %448, %.lr.ph2457
  %.419672455 = phi i64 [ %452, %.lr.ph2457 ], [ 1, %448 ]
  %450 = mul nsw i64 %.419672455, %33
  %gep2453 = getelementptr double, ptr %invariant.gep2461, i64 %450
  %451 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2453, ptr noundef nonnull @c__1) #5
  %452 = add nuw nsw i64 %.419672455, 1
  %453 = load i64, ptr %16, align 8, !tbaa !5
  %.not2228.not = icmp slt i64 %.419672455, %453
  br i1 %.not2228.not, label %.lr.ph2457, label %._crit_edge2458.loopexit, !llvm.loop !18

._crit_edge2458.loopexit:                         ; preds = %.lr.ph2457
  %.pre2589 = load double, ptr %24, align 8, !tbaa !9
  %.pre2590.pre = load double, ptr %18, align 16, !tbaa !9
  br label %._crit_edge2458

._crit_edge2458:                                  ; preds = %._crit_edge2458.loopexit, %448
  %.pre2590 = phi double [ %.pre2590.pre, %._crit_edge2458.loopexit ], [ %446, %448 ]
  %454 = phi double [ %.pre2589, %._crit_edge2458.loopexit ], [ %444, %448 ]
  %455 = load double, ptr %11, align 8, !tbaa !9
  %456 = fmul double %454, %455
  store double %456, ptr %11, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %thread-pre-split2300.thread, %._crit_edge2458, %thread-pre-split2300
  %458 = phi double [ %.pre2590, %._crit_edge2458 ], [ %446, %thread-pre-split2300 ], [ %443, %thread-pre-split2300.thread ]
  store double %458, ptr %418, align 8, !tbaa !9
  br label %599

459:                                              ; preds = %409
  %or.cond2270 = or i1 %410, %.not2269
  br i1 %or.cond2270, label %502, label %460

460:                                              ; preds = %459
  %461 = add nsw i64 %.119602496, -1
  store i64 %461, ptr %16, align 8, !tbaa !5
  %462 = mul nsw i64 %.119602496, %27
  %gep2460 = getelementptr double, ptr %invariant.gep2459, i64 %462
  %463 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2460, ptr noundef nonnull @c__1, ptr noundef %gep2462, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %464 = getelementptr double, ptr %35, i64 %.119602496
  %465 = getelementptr double, ptr %464, i64 %33
  %466 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %465, ptr noundef nonnull %10, ptr noundef %gep2464, ptr noundef nonnull @c__1) #5
  %467 = getelementptr double, ptr %464, i64 %388
  %468 = load double, ptr %467, align 8, !tbaa !9
  %469 = call double @llvm.fmuladd.f64(double %96, double %466, double %463)
  %470 = fsub double %468, %469
  store double %470, ptr %19, align 16, !tbaa !9
  store i64 %461, ptr %16, align 8, !tbaa !5
  %471 = mul nsw i64 %.11948, %27
  %gep2466 = getelementptr double, ptr %invariant.gep2459, i64 %471
  %472 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2466, ptr noundef nonnull @c__1, ptr noundef %gep2462, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %473 = getelementptr double, ptr %35, i64 %.11948
  %474 = getelementptr double, ptr %473, i64 %33
  %475 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %474, ptr noundef nonnull %10, ptr noundef %gep2464, ptr noundef nonnull @c__1) #5
  %476 = getelementptr double, ptr %473, i64 %388
  %477 = load double, ptr %476, align 8, !tbaa !9
  %478 = call double @llvm.fmuladd.f64(double %96, double %475, double %472)
  %479 = fsub double %477, %478
  store double %479, ptr %363, align 8, !tbaa !9
  %480 = load double, ptr %392, align 8, !tbaa !9
  %481 = fmul double %480, %364
  store double %481, ptr %17, align 8, !tbaa !9
  %482 = getelementptr double, ptr %29, i64 %.119602496
  %483 = getelementptr double, ptr %482, i64 %462
  %484 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c_b26, ptr noundef %483, ptr noundef nonnull %6, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %485 = load i64, ptr %21, align 8, !tbaa !5
  %.not2226 = icmp eq i64 %485, 0
  br i1 %.not2226, label %487, label %486

486:                                              ; preds = %460
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %487

487:                                              ; preds = %486, %460
  %488 = load double, ptr %24, align 8, !tbaa !9
  %489 = fcmp une double %488, 1.000000e+00
  br i1 %489, label %490, label %499

490:                                              ; preds = %487
  %491 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %491, ptr %16, align 8, !tbaa !5
  %.not22272433 = icmp slt i64 %491, 1
  br i1 %.not22272433, label %._crit_edge2437, label %.lr.ph2436

.lr.ph2436:                                       ; preds = %490, %.lr.ph2436
  %.519682434 = phi i64 [ %494, %.lr.ph2436 ], [ 1, %490 ]
  %492 = mul nsw i64 %.519682434, %33
  %gep2432 = getelementptr double, ptr %invariant.gep2461, i64 %492
  %493 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2432, ptr noundef nonnull @c__1) #5
  %494 = add nuw nsw i64 %.519682434, 1
  %495 = load i64, ptr %16, align 8, !tbaa !5
  %.not2227.not = icmp slt i64 %.519682434, %495
  br i1 %.not2227.not, label %.lr.ph2436, label %._crit_edge2437.loopexit, !llvm.loop !19

._crit_edge2437.loopexit:                         ; preds = %.lr.ph2436
  %.pre2586 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2437

._crit_edge2437:                                  ; preds = %._crit_edge2437.loopexit, %490
  %496 = phi double [ %.pre2586, %._crit_edge2437.loopexit ], [ %488, %490 ]
  %497 = load double, ptr %11, align 8, !tbaa !9
  %498 = fmul double %496, %497
  store double %498, ptr %11, align 8, !tbaa !9
  br label %499

499:                                              ; preds = %._crit_edge2437, %487
  %500 = load double, ptr %18, align 16, !tbaa !9
  store double %500, ptr %467, align 8, !tbaa !9
  %501 = load double, ptr %365, align 8, !tbaa !9
  store double %501, ptr %476, align 8, !tbaa !9
  br label %599

502:                                              ; preds = %459
  %or.cond2271 = and i1 %410, %.not2269
  br i1 %or.cond2271, label %503, label %544

503:                                              ; preds = %502
  %504 = add nsw i64 %.119602496, -1
  store i64 %504, ptr %16, align 8, !tbaa !5
  %505 = mul nsw i64 %.119602496, %27
  %gep2480 = getelementptr double, ptr %invariant.gep2459, i64 %505
  %506 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2480, ptr noundef nonnull @c__1, ptr noundef %gep2462, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %507 = getelementptr double, ptr %35, i64 %.119602496
  %508 = getelementptr double, ptr %507, i64 %33
  %509 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %508, ptr noundef nonnull %10, ptr noundef %gep2464, ptr noundef nonnull @c__1) #5
  %510 = getelementptr double, ptr %507, i64 %388
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = call double @llvm.fmuladd.f64(double %96, double %509, double %506)
  %513 = fsub double %511, %512
  %514 = fmul double %513, %96
  store double %514, ptr %19, align 16, !tbaa !9
  store i64 %504, ptr %16, align 8, !tbaa !5
  %515 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2480, ptr noundef nonnull @c__1, ptr noundef %gep2474, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %516 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %508, ptr noundef nonnull %10, ptr noundef %gep2476, ptr noundef nonnull @c__1) #5
  %517 = getelementptr double, ptr %507, i64 %393
  %518 = load double, ptr %517, align 8, !tbaa !9
  %519 = call double @llvm.fmuladd.f64(double %96, double %516, double %515)
  %520 = fsub double %518, %519
  %521 = fmul double %520, %96
  store double %521, ptr %363, align 8, !tbaa !9
  %522 = getelementptr double, ptr %29, i64 %.119602496
  %523 = getelementptr double, ptr %522, i64 %505
  %524 = load double, ptr %523, align 8, !tbaa !9
  %525 = fmul double %524, %364
  store double %525, ptr %17, align 8, !tbaa !9
  %526 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c_b26, ptr noundef %392, ptr noundef nonnull %8, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %527 = load i64, ptr %21, align 8, !tbaa !5
  %.not2224 = icmp eq i64 %527, 0
  br i1 %.not2224, label %529, label %528

528:                                              ; preds = %503
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %529

529:                                              ; preds = %528, %503
  %530 = load double, ptr %24, align 8, !tbaa !9
  %531 = fcmp une double %530, 1.000000e+00
  br i1 %531, label %532, label %541

532:                                              ; preds = %529
  %533 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %533, ptr %16, align 8, !tbaa !5
  %.not22252447 = icmp slt i64 %533, 1
  br i1 %.not22252447, label %._crit_edge2451, label %.lr.ph2450

.lr.ph2450:                                       ; preds = %532, %.lr.ph2450
  %.619692448 = phi i64 [ %536, %.lr.ph2450 ], [ 1, %532 ]
  %534 = mul nsw i64 %.619692448, %33
  %gep2446 = getelementptr double, ptr %invariant.gep2461, i64 %534
  %535 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2446, ptr noundef nonnull @c__1) #5
  %536 = add nuw nsw i64 %.619692448, 1
  %537 = load i64, ptr %16, align 8, !tbaa !5
  %.not2225.not = icmp slt i64 %.619692448, %537
  br i1 %.not2225.not, label %.lr.ph2450, label %._crit_edge2451.loopexit, !llvm.loop !20

._crit_edge2451.loopexit:                         ; preds = %.lr.ph2450
  %.pre2588 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2451

._crit_edge2451:                                  ; preds = %._crit_edge2451.loopexit, %532
  %538 = phi double [ %.pre2588, %._crit_edge2451.loopexit ], [ %530, %532 ]
  %539 = load double, ptr %11, align 8, !tbaa !9
  %540 = fmul double %538, %539
  store double %540, ptr %11, align 8, !tbaa !9
  br label %541

541:                                              ; preds = %._crit_edge2451, %529
  %542 = load double, ptr %18, align 16, !tbaa !9
  store double %542, ptr %510, align 8, !tbaa !9
  %543 = load double, ptr %365, align 8, !tbaa !9
  store double %543, ptr %517, align 8, !tbaa !9
  br label %599

544:                                              ; preds = %502
  %or.cond2272 = or i1 %387, %410
  br i1 %or.cond2272, label %599, label %545

545:                                              ; preds = %544
  %546 = add nsw i64 %.119602496, -1
  store i64 %546, ptr %16, align 8, !tbaa !5
  %547 = mul nsw i64 %.119602496, %27
  %gep2468 = getelementptr double, ptr %invariant.gep2459, i64 %547
  %548 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2468, ptr noundef nonnull @c__1, ptr noundef %gep2462, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %549 = getelementptr double, ptr %35, i64 %.119602496
  %550 = getelementptr double, ptr %549, i64 %33
  %551 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %550, ptr noundef nonnull %10, ptr noundef %gep2464, ptr noundef nonnull @c__1) #5
  %552 = getelementptr double, ptr %549, i64 %388
  %553 = load double, ptr %552, align 8, !tbaa !9
  %554 = call double @llvm.fmuladd.f64(double %96, double %551, double %548)
  %555 = fsub double %553, %554
  store double %555, ptr %19, align 16, !tbaa !9
  store i64 %546, ptr %16, align 8, !tbaa !5
  %556 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2468, ptr noundef nonnull @c__1, ptr noundef %gep2474, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %557 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %550, ptr noundef nonnull %10, ptr noundef %gep2476, ptr noundef nonnull @c__1) #5
  %558 = getelementptr double, ptr %549, i64 %393
  %559 = load double, ptr %558, align 8, !tbaa !9
  %560 = call double @llvm.fmuladd.f64(double %96, double %557, double %556)
  %561 = fsub double %559, %560
  store double %561, ptr %366, align 16, !tbaa !9
  store i64 %546, ptr %16, align 8, !tbaa !5
  %562 = mul nsw i64 %.11948, %27
  %gep2478 = getelementptr double, ptr %invariant.gep2459, i64 %562
  %563 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2478, ptr noundef nonnull @c__1, ptr noundef %gep2462, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %564 = getelementptr double, ptr %35, i64 %.11948
  %565 = getelementptr double, ptr %564, i64 %33
  %566 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %565, ptr noundef nonnull %10, ptr noundef %gep2464, ptr noundef nonnull @c__1) #5
  %567 = getelementptr double, ptr %564, i64 %388
  %568 = load double, ptr %567, align 8, !tbaa !9
  %569 = call double @llvm.fmuladd.f64(double %96, double %566, double %563)
  %570 = fsub double %568, %569
  store double %570, ptr %363, align 8, !tbaa !9
  store i64 %546, ptr %16, align 8, !tbaa !5
  %571 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %gep2478, ptr noundef nonnull @c__1, ptr noundef %gep2474, ptr noundef nonnull @c__1) #5
  store i64 %389, ptr %16, align 8, !tbaa !5
  %572 = call double @f2c_ddot(ptr noundef nonnull %16, ptr noundef %565, ptr noundef nonnull %10, ptr noundef %gep2476, ptr noundef nonnull @c__1) #5
  %573 = getelementptr double, ptr %564, i64 %393
  %574 = load double, ptr %573, align 8, !tbaa !9
  %575 = call double @llvm.fmuladd.f64(double %96, double %572, double %571)
  %576 = fsub double %574, %575
  store double %576, ptr %367, align 8, !tbaa !9
  %577 = getelementptr double, ptr %29, i64 %.119602496
  %578 = getelementptr double, ptr %577, i64 %547
  %579 = call i32 @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 %578, ptr noundef nonnull %6, ptr noundef %392, ptr noundef nonnull %8, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %580 = load i64, ptr %21, align 8, !tbaa !5
  %.not2222 = icmp eq i64 %580, 0
  br i1 %.not2222, label %582, label %581

581:                                              ; preds = %545
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %582

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

585:                                              ; preds = %582
  %586 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %586, ptr %16, align 8, !tbaa !5
  %.not22232440 = icmp slt i64 %586, 1
  br i1 %.not22232440, label %._crit_edge2444, label %.lr.ph2443

.lr.ph2443:                                       ; preds = %585, %.lr.ph2443
  %.719702441 = phi i64 [ %589, %.lr.ph2443 ], [ 1, %585 ]
  %587 = mul nsw i64 %.719702441, %33
  %gep2439 = getelementptr double, ptr %invariant.gep2461, i64 %587
  %588 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2439, ptr noundef nonnull @c__1) #5
  %589 = add nuw nsw i64 %.719702441, 1
  %590 = load i64, ptr %16, align 8, !tbaa !5
  %.not2223.not = icmp slt i64 %.719702441, %590
  br i1 %.not2223.not, label %.lr.ph2443, label %._crit_edge2444.loopexit, !llvm.loop !21

._crit_edge2444.loopexit:                         ; preds = %.lr.ph2443
  %.pre2587 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2444

._crit_edge2444:                                  ; preds = %._crit_edge2444.loopexit, %585
  %591 = phi double [ %.pre2587, %._crit_edge2444.loopexit ], [ %583, %585 ]
  %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_edge2444, %582
  %595 = load double, ptr %18, align 16, !tbaa !9
  store double %595, ptr %552, align 8, !tbaa !9
  %596 = load double, ptr %368, align 16, !tbaa !9
  store double %596, ptr %558, align 8, !tbaa !9
  %597 = load double, ptr %365, align 8, !tbaa !9
  store double %597, ptr %567, align 8, !tbaa !9
  %598 = load double, ptr %369, align 8, !tbaa !9
  store double %598, ptr %573, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %395, %499, %544, %594, %541, %457
  %.51924 = phi i64 [ %.319222497, %395 ], [ %.41923, %457 ], [ %.41923, %499 ], [ %.41923, %541 ], [ %.41923, %594 ], [ %.41923, %544 ]
  %600 = add nuw nsw i64 %.119602496, 1
  %601 = load i64, ptr %15, align 8, !tbaa !5
  %.not2218.not = icmp slt i64 %.119602496, %601
  br i1 %.not2218.not, label %395, label %.loopexit2313.loopexit, !llvm.loop !22

.loopexit2313.loopexit:                           ; preds = %599
  %.pre2591 = load i64, ptr %14, align 8, !tbaa !5
  br label %.loopexit2313

.loopexit2313:                                    ; preds = %.loopexit2313.loopexit, %385, %370
  %602 = phi i64 [ %371, %370 ], [ %371, %385 ], [ %.pre2591, %.loopexit2313.loopexit ]
  %.5 = phi i64 [ %.32503, %370 ], [ %.4, %385 ], [ %.4, %.loopexit2313.loopexit ]
  %603 = add nuw nsw i64 %.119562501, 1
  %.not2217.not = icmp slt i64 %.119562501, %602
  br i1 %.not2217.not, label %370, label %.loopexit2312, !llvm.loop !23

604:                                              ; preds = %359
  %or.cond9 = select i1 %38, i1 true, i1 %97
  br i1 %or.cond9, label %902, label %605

605:                                              ; preds = %604
  %606 = load i64, ptr %4, align 8, !tbaa !5
  %607 = icmp sgt i64 %606, 0
  br i1 %607, label %.lr.ph2375, label %.loopexit2312

.lr.ph2375:                                       ; preds = %605
  %invariant.gep2342 = getelementptr i8, ptr %29, i64 8
  %invariant.gep2344 = getelementptr i8, ptr %35, i64 8
  %608 = getelementptr inbounds i8, ptr %19, i64 8
  %609 = fneg double %96
  %610 = add i64 %30, 1
  %611 = getelementptr inbounds i8, ptr %18, i64 8
  %612 = getelementptr inbounds i8, ptr %19, i64 16
  %613 = getelementptr inbounds i8, ptr %19, i64 24
  %614 = getelementptr inbounds i8, ptr %18, i64 16
  %615 = getelementptr inbounds i8, ptr %18, i64 24
  br label %616

616:                                              ; preds = %.lr.ph2375, %.loopexit2317
  %.62373 = phi i64 [ %606, %.lr.ph2375 ], [ %.8, %.loopexit2317 ]
  %.219572371 = phi i64 [ %606, %.lr.ph2375 ], [ %900, %.loopexit2317 ]
  %617 = icmp sgt i64 %.219572371, %.62373
  br i1 %617, label %.loopexit2317, label %618

618:                                              ; preds = %616
  %619 = icmp eq i64 %.219572371, 1
  br i1 %619, label %629, label %620

620:                                              ; preds = %618
  %621 = add nsw i64 %.219572371, -1
  %622 = mul nsw i64 %621, %30
  %623 = getelementptr double, ptr %32, i64 %.219572371
  %624 = getelementptr double, ptr %623, i64 %622
  %625 = load double, ptr %624, align 8, !tbaa !9
  %626 = fcmp une double %625, 0.000000e+00
  br i1 %626, label %627, label %629

627:                                              ; preds = %620
  %628 = add nsw i64 %.219572371, -2
  br label %629

629:                                              ; preds = %620, %618, %627
  %.21945 = phi i64 [ %621, %627 ], [ 1, %618 ], [ %.219572371, %620 ]
  %.7 = phi i64 [ %628, %627 ], [ %.62373, %618 ], [ %621, %620 ]
  %630 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %630, ptr %14, align 8, !tbaa !5
  %.not21422366 = icmp slt i64 %630, 1
  br i1 %.not21422366, label %.loopexit2317, label %.lr.ph2370

.lr.ph2370:                                       ; preds = %629
  %631 = icmp eq i64 %.21945, %.219572371
  %.not2275 = xor i1 %631, true
  %632 = mul nsw i64 %.21945, %33
  %gep2345 = getelementptr double, ptr %invariant.gep2344, i64 %632
  %633 = add nuw nsw i64 %.219572371, 1
  %634 = getelementptr double, ptr %32, i64 %.21945
  %635 = mul i64 %.21945, %610
  %636 = getelementptr inbounds double, ptr %32, i64 %635
  %637 = mul nsw i64 %.219572371, %33
  %gep2353 = getelementptr double, ptr %invariant.gep2344, i64 %637
  %638 = getelementptr double, ptr %32, i64 %.219572371
  %639 = add nuw nsw i64 %.21945, 1
  br label %640

640:                                              ; preds = %.lr.ph2370, %897
  %.619252368 = phi i64 [ 1, %.lr.ph2370 ], [ %.81927, %897 ]
  %.219612367 = phi i64 [ 1, %.lr.ph2370 ], [ %898, %897 ]
  %641 = icmp slt i64 %.219612367, %.619252368
  br i1 %641, label %897, label %642

642:                                              ; preds = %640
  %643 = load i64, ptr %3, align 8, !tbaa !5
  %644 = icmp eq i64 %.219612367, %643
  br i1 %644, label %654, label %645

645:                                              ; preds = %642
  %646 = add nuw nsw i64 %.219612367, 1
  %647 = mul nsw i64 %.219612367, %27
  %648 = getelementptr double, ptr %29, i64 %646
  %649 = getelementptr double, ptr %648, i64 %647
  %650 = load double, ptr %649, align 8, !tbaa !9
  %651 = fcmp une double %650, 0.000000e+00
  br i1 %651, label %652, label %654

652:                                              ; preds = %645
  %653 = add nuw nsw i64 %.219612367, 2
  br label %654

654:                                              ; preds = %645, %642, %652
  %.21949 = phi i64 [ %646, %652 ], [ %.219612367, %642 ], [ %.219612367, %645 ]
  %.71926 = phi i64 [ %653, %652 ], [ %.619252368, %642 ], [ %646, %645 ]
  %655 = icmp eq i64 %.219612367, %.21949
  %or.cond2273 = and i1 %631, %655
  br i1 %or.cond2273, label %656, label %709

656:                                              ; preds = %654
  %657 = add nsw i64 %.219612367, -1
  store i64 %657, ptr %15, align 8, !tbaa !5
  %658 = mul nsw i64 %.219612367, %27
  %gep2363 = getelementptr double, ptr %invariant.gep2342, i64 %658
  %659 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2363, ptr noundef nonnull @c__1, ptr noundef %gep2345, ptr noundef nonnull @c__1) #5
  %660 = load i64, ptr %4, align 8, !tbaa !5
  %661 = sub nsw i64 %660, %.219572371
  store i64 %661, ptr %15, align 8, !tbaa !5
  store i64 %639, ptr %16, align 8, !tbaa !5
  %.not2168.not = icmp slt i64 %.219572371, %660
  %.2274 = select i1 %.not2168.not, i64 %639, i64 %660
  %662 = mul nsw i64 %.2274, %33
  %663 = getelementptr double, ptr %35, i64 %.219612367
  %664 = getelementptr double, ptr %663, i64 %662
  %665 = mul nsw i64 %.2274, %30
  %666 = getelementptr double, ptr %634, i64 %665
  %667 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %664, ptr noundef nonnull %10, ptr noundef %666, ptr noundef nonnull %8) #5
  %668 = getelementptr double, ptr %663, i64 %632
  %669 = load double, ptr %668, align 8, !tbaa !9
  %670 = call double @llvm.fmuladd.f64(double %96, double %667, double %659)
  %671 = fsub double %669, %670
  store double %671, ptr %19, align 16, !tbaa !9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %672 = getelementptr double, ptr %29, i64 %.219612367
  %673 = getelementptr double, ptr %672, i64 %658
  %674 = load double, ptr %673, align 8, !tbaa !9
  %675 = load double, ptr %636, align 8, !tbaa !9
  %676 = call double @llvm.fmuladd.f64(double %96, double %675, double %674)
  %677 = fcmp oge double %676, 0.000000e+00
  %678 = fneg double %676
  %679 = select i1 %677, double %676, double %678
  %680 = load double, ptr %22, align 8, !tbaa !9
  %681 = fcmp ugt double %679, %680
  br i1 %681, label %683, label %682

682:                                              ; preds = %656
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %683

683:                                              ; preds = %682, %656
  %.21937 = phi double [ %680, %682 ], [ %676, %656 ]
  %.21933 = phi double [ %680, %682 ], [ %679, %656 ]
  %684 = fcmp oge double %671, 0.000000e+00
  %685 = fneg double %671
  %686 = select i1 %684, double %671, double %685
  %687 = fcmp olt double %.21933, 1.000000e+00
  %688 = fcmp ogt double %686, 1.000000e+00
  %or.cond11 = select i1 %687, i1 %688, i1 false
  br i1 %or.cond11, label %689, label %thread-pre-split2302.thread

689:                                              ; preds = %683
  %690 = load double, ptr %25, align 8, !tbaa !9
  %691 = fmul double %.21933, %690
  %692 = fcmp ogt double %686, %691
  br i1 %692, label %thread-pre-split2302, label %thread-pre-split2302.thread

thread-pre-split2302.thread:                      ; preds = %683, %689
  %693 = fdiv double %671, %.21937
  store double %693, ptr %18, align 16, !tbaa !9
  br label %707

thread-pre-split2302:                             ; preds = %689
  %694 = fdiv double 1.000000e+00, %686
  store double %694, ptr %24, align 8, !tbaa !9
  %695 = fmul double %671, %694
  %696 = fdiv double %695, %.21937
  store double %696, ptr %18, align 16, !tbaa !9
  %697 = fcmp une double %694, 1.000000e+00
  br i1 %697, label %698, label %707

698:                                              ; preds = %thread-pre-split2302
  %699 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %699, ptr %15, align 8, !tbaa !5
  %.not21702337 = icmp slt i64 %699, 1
  br i1 %.not21702337, label %._crit_edge2341, label %.lr.ph2340

.lr.ph2340:                                       ; preds = %698, %.lr.ph2340
  %.819712338 = phi i64 [ %702, %.lr.ph2340 ], [ 1, %698 ]
  %700 = mul nsw i64 %.819712338, %33
  %gep2336 = getelementptr double, ptr %invariant.gep2344, i64 %700
  %701 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2336, ptr noundef nonnull @c__1) #5
  %702 = add nuw nsw i64 %.819712338, 1
  %703 = load i64, ptr %15, align 8, !tbaa !5
  %.not2170.not = icmp slt i64 %.819712338, %703
  br i1 %.not2170.not, label %.lr.ph2340, label %._crit_edge2341.loopexit, !llvm.loop !24

._crit_edge2341.loopexit:                         ; preds = %.lr.ph2340
  %.pre2579 = load double, ptr %24, align 8, !tbaa !9
  %.pre2580.pre = load double, ptr %18, align 16, !tbaa !9
  br label %._crit_edge2341

._crit_edge2341:                                  ; preds = %._crit_edge2341.loopexit, %698
  %.pre2580 = phi double [ %.pre2580.pre, %._crit_edge2341.loopexit ], [ %696, %698 ]
  %704 = phi double [ %.pre2579, %._crit_edge2341.loopexit ], [ %694, %698 ]
  %705 = load double, ptr %11, align 8, !tbaa !9
  %706 = fmul double %704, %705
  store double %706, ptr %11, align 8, !tbaa !9
  br label %707

707:                                              ; preds = %thread-pre-split2302.thread, %._crit_edge2341, %thread-pre-split2302
  %708 = phi double [ %.pre2580, %._crit_edge2341 ], [ %696, %thread-pre-split2302 ], [ %693, %thread-pre-split2302.thread ]
  store double %708, ptr %668, align 8, !tbaa !9
  br label %897

709:                                              ; preds = %654
  %or.cond2276 = or i1 %655, %.not2275
  br i1 %or.cond2276, label %763, label %710

710:                                              ; preds = %709
  %711 = add nsw i64 %.219612367, -1
  store i64 %711, ptr %15, align 8, !tbaa !5
  %712 = mul nsw i64 %.219612367, %27
  %gep2343 = getelementptr double, ptr %invariant.gep2342, i64 %712
  %713 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2343, ptr noundef nonnull @c__1, ptr noundef %gep2345, ptr noundef nonnull @c__1) #5
  %714 = load i64, ptr %4, align 8, !tbaa !5
  %715 = sub nsw i64 %714, %.219572371
  store i64 %715, ptr %15, align 8, !tbaa !5
  %.not2162.not = icmp slt i64 %.219572371, %714
  %.2277 = select i1 %.not2162.not, i64 %633, i64 %714
  %716 = mul nsw i64 %.2277, %33
  %717 = getelementptr double, ptr %35, i64 %.219612367
  %718 = getelementptr double, ptr %717, i64 %716
  %719 = mul nsw i64 %.2277, %30
  %720 = getelementptr double, ptr %634, i64 %719
  %721 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %718, ptr noundef nonnull %10, ptr noundef %720, ptr noundef nonnull %8) #5
  %722 = getelementptr double, ptr %717, i64 %632
  %723 = load double, ptr %722, align 8, !tbaa !9
  %724 = call double @llvm.fmuladd.f64(double %96, double %721, double %713)
  %725 = fsub double %723, %724
  store double %725, ptr %19, align 16, !tbaa !9
  store i64 %711, ptr %15, align 8, !tbaa !5
  %726 = mul nsw i64 %.21949, %27
  %gep2347 = getelementptr double, ptr %invariant.gep2342, i64 %726
  %727 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2347, ptr noundef nonnull @c__1, ptr noundef %gep2345, ptr noundef nonnull @c__1) #5
  %728 = load i64, ptr %4, align 8, !tbaa !5
  %729 = sub nsw i64 %728, %.219572371
  store i64 %729, ptr %15, align 8, !tbaa !5
  store i64 %633, ptr %16, align 8, !tbaa !5
  %.not2164.not = icmp slt i64 %.219572371, %728
  %730 = select i1 %.not2164.not, i64 %633, i64 %728
  %731 = mul nsw i64 %730, %33
  %732 = getelementptr double, ptr %35, i64 %.21949
  %733 = getelementptr double, ptr %732, i64 %731
  %734 = mul nsw i64 %730, %30
  %735 = getelementptr double, ptr %634, i64 %734
  %736 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %733, ptr noundef nonnull %10, ptr noundef %735, ptr noundef nonnull %8) #5
  %737 = getelementptr double, ptr %732, i64 %632
  %738 = load double, ptr %737, align 8, !tbaa !9
  %739 = call double @llvm.fmuladd.f64(double %96, double %736, double %727)
  %740 = fsub double %738, %739
  store double %740, ptr %608, align 8, !tbaa !9
  %741 = load double, ptr %636, align 8, !tbaa !9
  %742 = fmul double %741, %609
  store double %742, ptr %17, align 8, !tbaa !9
  %743 = getelementptr double, ptr %29, i64 %.219612367
  %744 = getelementptr double, ptr %743, i64 %712
  %745 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c_b26, ptr noundef %744, ptr noundef nonnull %6, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %746 = load i64, ptr %21, align 8, !tbaa !5
  %.not2166 = icmp eq i64 %746, 0
  br i1 %.not2166, label %748, label %747

747:                                              ; preds = %710
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %748

748:                                              ; preds = %747, %710
  %749 = load double, ptr %24, align 8, !tbaa !9
  %750 = fcmp une double %749, 1.000000e+00
  br i1 %750, label %751, label %760

751:                                              ; preds = %748
  %752 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %752, ptr %15, align 8, !tbaa !5
  %.not21672319 = icmp slt i64 %752, 1
  br i1 %.not21672319, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %751, %.lr.ph
  %.919722320 = phi i64 [ %755, %.lr.ph ], [ 1, %751 ]
  %753 = mul nsw i64 %.919722320, %33
  %gep = getelementptr double, ptr %invariant.gep2344, i64 %753
  %754 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %755 = add nuw nsw i64 %.919722320, 1
  %756 = load i64, ptr %15, align 8, !tbaa !5
  %.not2167.not = icmp slt i64 %.919722320, %756
  br i1 %.not2167.not, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !25

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %751
  %757 = phi double [ %.pre, %._crit_edge.loopexit ], [ %749, %751 ]
  %758 = load double, ptr %11, align 8, !tbaa !9
  %759 = fmul double %757, %758
  store double %759, ptr %11, align 8, !tbaa !9
  br label %760

760:                                              ; preds = %._crit_edge, %748
  %761 = load double, ptr %18, align 16, !tbaa !9
  store double %761, ptr %722, align 8, !tbaa !9
  %762 = load double, ptr %611, align 8, !tbaa !9
  store double %762, ptr %737, align 8, !tbaa !9
  br label %897

763:                                              ; preds = %709
  %or.cond2278 = and i1 %655, %.not2275
  br i1 %or.cond2278, label %764, label %817

764:                                              ; preds = %763
  %765 = add nsw i64 %.219612367, -1
  store i64 %765, ptr %15, align 8, !tbaa !5
  %766 = mul nsw i64 %.219612367, %27
  %gep2357 = getelementptr double, ptr %invariant.gep2342, i64 %766
  %767 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2357, ptr noundef nonnull @c__1, ptr noundef %gep2345, ptr noundef nonnull @c__1) #5
  %768 = load i64, ptr %4, align 8, !tbaa !5
  %769 = sub nsw i64 %768, %.219572371
  store i64 %769, ptr %15, align 8, !tbaa !5
  %.not2156.not = icmp slt i64 %.219572371, %768
  %.2279 = select i1 %.not2156.not, i64 %633, i64 %768
  %770 = mul nsw i64 %.2279, %33
  %771 = getelementptr double, ptr %35, i64 %.219612367
  %772 = getelementptr double, ptr %771, i64 %770
  %773 = mul nsw i64 %.2279, %30
  %774 = getelementptr double, ptr %634, i64 %773
  %775 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %772, ptr noundef nonnull %10, ptr noundef %774, ptr noundef nonnull %8) #5
  %776 = getelementptr double, ptr %771, i64 %632
  %777 = load double, ptr %776, align 8, !tbaa !9
  %778 = call double @llvm.fmuladd.f64(double %96, double %775, double %767)
  %779 = fsub double %777, %778
  %780 = fmul double %779, %96
  store double %780, ptr %19, align 16, !tbaa !9
  store i64 %765, ptr %15, align 8, !tbaa !5
  %781 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2357, ptr noundef nonnull @c__1, ptr noundef %gep2353, ptr noundef nonnull @c__1) #5
  %782 = load i64, ptr %4, align 8, !tbaa !5
  %783 = sub nsw i64 %782, %.219572371
  store i64 %783, ptr %15, align 8, !tbaa !5
  store i64 %633, ptr %16, align 8, !tbaa !5
  %.not2158.not = icmp slt i64 %.219572371, %782
  %784 = select i1 %.not2158.not, i64 %633, i64 %782
  %785 = mul nsw i64 %784, %33
  %786 = getelementptr double, ptr %771, i64 %785
  %787 = mul nsw i64 %784, %30
  %788 = getelementptr double, ptr %638, i64 %787
  %789 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %786, ptr noundef nonnull %10, ptr noundef %788, ptr noundef nonnull %8) #5
  %790 = getelementptr double, ptr %771, i64 %637
  %791 = load double, ptr %790, align 8, !tbaa !9
  %792 = call double @llvm.fmuladd.f64(double %96, double %789, double %781)
  %793 = fsub double %791, %792
  %794 = fmul double %793, %96
  store double %794, ptr %608, align 8, !tbaa !9
  %795 = getelementptr double, ptr %29, i64 %.219612367
  %796 = getelementptr double, ptr %795, i64 %766
  %797 = load double, ptr %796, align 8, !tbaa !9
  %798 = fmul double %797, %609
  store double %798, ptr %17, align 8, !tbaa !9
  %799 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c_b26, ptr noundef %636, ptr noundef nonnull %8, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %800 = load i64, ptr %21, align 8, !tbaa !5
  %.not2160 = icmp eq i64 %800, 0
  br i1 %.not2160, label %802, label %801

801:                                              ; preds = %764
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %802

802:                                              ; preds = %801, %764
  %803 = load double, ptr %24, align 8, !tbaa !9
  %804 = fcmp une double %803, 1.000000e+00
  br i1 %804, label %805, label %814

805:                                              ; preds = %802
  %806 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %806, ptr %15, align 8, !tbaa !5
  %.not21612330 = icmp slt i64 %806, 1
  br i1 %.not21612330, label %._crit_edge2334, label %.lr.ph2333

.lr.ph2333:                                       ; preds = %805, %.lr.ph2333
  %.1019732331 = phi i64 [ %809, %.lr.ph2333 ], [ 1, %805 ]
  %807 = mul nsw i64 %.1019732331, %33
  %gep2329 = getelementptr double, ptr %invariant.gep2344, i64 %807
  %808 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2329, ptr noundef nonnull @c__1) #5
  %809 = add nuw nsw i64 %.1019732331, 1
  %810 = load i64, ptr %15, align 8, !tbaa !5
  %.not2161.not = icmp slt i64 %.1019732331, %810
  br i1 %.not2161.not, label %.lr.ph2333, label %._crit_edge2334.loopexit, !llvm.loop !26

._crit_edge2334.loopexit:                         ; preds = %.lr.ph2333
  %.pre2578 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2334

._crit_edge2334:                                  ; preds = %._crit_edge2334.loopexit, %805
  %811 = phi double [ %.pre2578, %._crit_edge2334.loopexit ], [ %803, %805 ]
  %812 = load double, ptr %11, align 8, !tbaa !9
  %813 = fmul double %811, %812
  store double %813, ptr %11, align 8, !tbaa !9
  br label %814

814:                                              ; preds = %._crit_edge2334, %802
  %815 = load double, ptr %18, align 16, !tbaa !9
  store double %815, ptr %776, align 8, !tbaa !9
  %816 = load double, ptr %611, align 8, !tbaa !9
  store double %816, ptr %790, align 8, !tbaa !9
  br label %897

817:                                              ; preds = %763
  %or.cond2280 = or i1 %631, %655
  br i1 %or.cond2280, label %897, label %818

818:                                              ; preds = %817
  %819 = add nsw i64 %.219612367, -1
  store i64 %819, ptr %15, align 8, !tbaa !5
  %820 = mul nsw i64 %.219612367, %27
  %gep2349 = getelementptr double, ptr %invariant.gep2342, i64 %820
  %821 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2349, ptr noundef nonnull @c__1, ptr noundef %gep2345, ptr noundef nonnull @c__1) #5
  %822 = load i64, ptr %4, align 8, !tbaa !5
  %823 = sub nsw i64 %822, %.219572371
  store i64 %823, ptr %15, align 8, !tbaa !5
  %.not2146.not = icmp slt i64 %.219572371, %822
  %.2281 = select i1 %.not2146.not, i64 %633, i64 %822
  %824 = mul nsw i64 %.2281, %33
  %825 = getelementptr double, ptr %35, i64 %.219612367
  %826 = getelementptr double, ptr %825, i64 %824
  %827 = mul nsw i64 %.2281, %30
  %828 = getelementptr double, ptr %634, i64 %827
  %829 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %826, ptr noundef nonnull %10, ptr noundef %828, ptr noundef nonnull %8) #5
  %830 = getelementptr double, ptr %825, i64 %632
  %831 = load double, ptr %830, align 8, !tbaa !9
  %832 = call double @llvm.fmuladd.f64(double %96, double %829, double %821)
  %833 = fsub double %831, %832
  store double %833, ptr %19, align 16, !tbaa !9
  store i64 %819, ptr %15, align 8, !tbaa !5
  %834 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2349, ptr noundef nonnull @c__1, ptr noundef %gep2353, ptr noundef nonnull @c__1) #5
  %835 = load i64, ptr %4, align 8, !tbaa !5
  %836 = sub nsw i64 %835, %.219572371
  store i64 %836, ptr %15, align 8, !tbaa !5
  %.not2148.not = icmp slt i64 %.219572371, %835
  %837 = select i1 %.not2148.not, i64 %633, i64 %835
  %838 = mul nsw i64 %837, %33
  %839 = getelementptr double, ptr %825, i64 %838
  %840 = mul nsw i64 %837, %30
  %841 = getelementptr double, ptr %638, i64 %840
  %842 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %839, ptr noundef nonnull %10, ptr noundef %841, ptr noundef nonnull %8) #5
  %843 = getelementptr double, ptr %825, i64 %637
  %844 = load double, ptr %843, align 8, !tbaa !9
  %845 = call double @llvm.fmuladd.f64(double %96, double %842, double %834)
  %846 = fsub double %844, %845
  store double %846, ptr %612, align 16, !tbaa !9
  store i64 %819, ptr %15, align 8, !tbaa !5
  %847 = mul nsw i64 %.21949, %27
  %gep2355 = getelementptr double, ptr %invariant.gep2342, i64 %847
  %848 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2355, ptr noundef nonnull @c__1, ptr noundef %gep2345, ptr noundef nonnull @c__1) #5
  %849 = load i64, ptr %4, align 8, !tbaa !5
  %850 = sub nsw i64 %849, %.219572371
  store i64 %850, ptr %15, align 8, !tbaa !5
  %.not2150.not = icmp slt i64 %.219572371, %849
  %851 = select i1 %.not2150.not, i64 %633, i64 %849
  %852 = mul nsw i64 %851, %33
  %853 = getelementptr double, ptr %35, i64 %.21949
  %854 = getelementptr double, ptr %853, i64 %852
  %855 = mul nsw i64 %851, %30
  %856 = getelementptr double, ptr %634, i64 %855
  %857 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %854, ptr noundef nonnull %10, ptr noundef %856, ptr noundef nonnull %8) #5
  %858 = getelementptr double, ptr %853, i64 %632
  %859 = load double, ptr %858, align 8, !tbaa !9
  %860 = call double @llvm.fmuladd.f64(double %96, double %857, double %848)
  %861 = fsub double %859, %860
  store double %861, ptr %608, align 8, !tbaa !9
  store i64 %819, ptr %15, align 8, !tbaa !5
  %862 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %gep2355, ptr noundef nonnull @c__1, ptr noundef %gep2353, ptr noundef nonnull @c__1) #5
  %863 = load i64, ptr %4, align 8, !tbaa !5
  %864 = sub nsw i64 %863, %.219572371
  store i64 %864, ptr %15, align 8, !tbaa !5
  store i64 %633, ptr %16, align 8, !tbaa !5
  %.not2152.not = icmp slt i64 %.219572371, %863
  %865 = select i1 %.not2152.not, i64 %633, i64 %863
  %866 = mul nsw i64 %865, %33
  %867 = getelementptr double, ptr %853, i64 %866
  %868 = mul nsw i64 %865, %30
  %869 = getelementptr double, ptr %638, i64 %868
  %870 = call double @f2c_ddot(ptr noundef nonnull %15, ptr noundef %867, ptr noundef nonnull %10, ptr noundef %869, ptr noundef nonnull %8) #5
  %871 = getelementptr double, ptr %853, i64 %637
  %872 = load double, ptr %871, align 8, !tbaa !9
  %873 = call double @llvm.fmuladd.f64(double %96, double %870, double %862)
  %874 = fsub double %872, %873
  store double %874, ptr %613, align 8, !tbaa !9
  %875 = getelementptr double, ptr %29, i64 %.219612367
  %876 = getelementptr double, ptr %875, i64 %820
  %877 = call i32 @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 %876, ptr noundef nonnull %6, ptr noundef %636, ptr noundef nonnull %8, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %878 = load i64, ptr %21, align 8, !tbaa !5
  %.not2154 = icmp eq i64 %878, 0
  br i1 %.not2154, label %880, label %879

879:                                              ; preds = %818
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %880

880:                                              ; preds = %879, %818
  %881 = load double, ptr %24, align 8, !tbaa !9
  %882 = fcmp une double %881, 1.000000e+00
  br i1 %882, label %883, label %892

883:                                              ; preds = %880
  %884 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %884, ptr %15, align 8, !tbaa !5
  %.not21552323 = icmp slt i64 %884, 1
  br i1 %.not21552323, label %._crit_edge2327, label %.lr.ph2326

.lr.ph2326:                                       ; preds = %883, %.lr.ph2326
  %.1119742324 = phi i64 [ %887, %.lr.ph2326 ], [ 1, %883 ]
  %885 = mul nsw i64 %.1119742324, %33
  %gep2322 = getelementptr double, ptr %invariant.gep2344, i64 %885
  %886 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2322, ptr noundef nonnull @c__1) #5
  %887 = add nuw nsw i64 %.1119742324, 1
  %888 = load i64, ptr %15, align 8, !tbaa !5
  %.not2155.not = icmp slt i64 %.1119742324, %888
  br i1 %.not2155.not, label %.lr.ph2326, label %._crit_edge2327.loopexit, !llvm.loop !27

._crit_edge2327.loopexit:                         ; preds = %.lr.ph2326
  %.pre2577 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2327

._crit_edge2327:                                  ; preds = %._crit_edge2327.loopexit, %883
  %889 = phi double [ %.pre2577, %._crit_edge2327.loopexit ], [ %881, %883 ]
  %890 = load double, ptr %11, align 8, !tbaa !9
  %891 = fmul double %889, %890
  store double %891, ptr %11, align 8, !tbaa !9
  br label %892

892:                                              ; preds = %._crit_edge2327, %880
  %893 = load double, ptr %18, align 16, !tbaa !9
  store double %893, ptr %830, align 8, !tbaa !9
  %894 = load double, ptr %614, align 16, !tbaa !9
  store double %894, ptr %843, align 8, !tbaa !9
  %895 = load double, ptr %611, align 8, !tbaa !9
  store double %895, ptr %858, align 8, !tbaa !9
  %896 = load double, ptr %615, align 8, !tbaa !9
  store double %896, ptr %871, align 8, !tbaa !9
  br label %897

897:                                              ; preds = %640, %760, %817, %892, %814, %707
  %.81927 = phi i64 [ %.619252368, %640 ], [ %.71926, %707 ], [ %.71926, %760 ], [ %.71926, %814 ], [ %.71926, %892 ], [ %.71926, %817 ]
  %898 = add nuw nsw i64 %.219612367, 1
  %899 = load i64, ptr %14, align 8, !tbaa !5
  %.not2142.not = icmp slt i64 %.219612367, %899
  br i1 %.not2142.not, label %640, label %.loopexit2317, !llvm.loop !28

.loopexit2317:                                    ; preds = %897, %629, %616
  %.8 = phi i64 [ %.62373, %616 ], [ %.7, %629 ], [ %.7, %897 ]
  %900 = add nsw i64 %.219572371, -1
  %901 = icmp sgt i64 %.219572371, 1
  br i1 %901, label %616, label %.loopexit2312, !llvm.loop !29

902:                                              ; preds = %604
  %or.cond13 = select i1 %360, i1 true, i1 %97
  br i1 %or.cond13, label %.loopexit2312, label %903

903:                                              ; preds = %902
  %904 = load i64, ptr %4, align 8, !tbaa !5
  %905 = icmp sgt i64 %904, 0
  br i1 %905, label %.lr.ph2430, label %.loopexit2312

.lr.ph2430:                                       ; preds = %903
  %906 = getelementptr inbounds i8, ptr %19, i64 8
  %907 = fneg double %96
  %908 = add i64 %30, 1
  %909 = add i64 %27, 1
  %invariant.gep2376 = getelementptr i8, ptr %35, i64 8
  %910 = getelementptr inbounds i8, ptr %18, i64 8
  %911 = getelementptr inbounds i8, ptr %19, i64 16
  %912 = getelementptr inbounds i8, ptr %19, i64 24
  %913 = getelementptr inbounds i8, ptr %18, i64 16
  %914 = getelementptr inbounds i8, ptr %18, i64 24
  br label %915

915:                                              ; preds = %.lr.ph2430, %.loopexit2315
  %.92428 = phi i64 [ %904, %.lr.ph2430 ], [ %.11, %.loopexit2315 ]
  %.319582426 = phi i64 [ %904, %.lr.ph2430 ], [ %1221, %.loopexit2315 ]
  %916 = icmp sgt i64 %.319582426, %.92428
  br i1 %916, label %.loopexit2315, label %917

917:                                              ; preds = %915
  %918 = icmp eq i64 %.319582426, 1
  br i1 %918, label %928, label %919

919:                                              ; preds = %917
  %920 = add nsw i64 %.319582426, -1
  %921 = mul nsw i64 %920, %30
  %922 = getelementptr double, ptr %32, i64 %.319582426
  %923 = getelementptr double, ptr %922, i64 %921
  %924 = load double, ptr %923, align 8, !tbaa !9
  %925 = fcmp une double %924, 0.000000e+00
  br i1 %925, label %926, label %928

926:                                              ; preds = %919
  %927 = add nsw i64 %.319582426, -2
  br label %928

928:                                              ; preds = %919, %917, %926
  %.31946 = phi i64 [ %920, %926 ], [ 1, %917 ], [ %.319582426, %919 ]
  %.10 = phi i64 [ %927, %926 ], [ %.92428, %917 ], [ %920, %919 ]
  %929 = load i64, ptr %3, align 8, !tbaa !5
  %930 = icmp sgt i64 %929, 0
  br i1 %930, label %.lr.ph2407, label %.loopexit2315

.lr.ph2407:                                       ; preds = %928
  %931 = icmp eq i64 %.31946, %.319582426
  %932 = mul nsw i64 %.31946, %33
  %invariant.gep2408 = getelementptr double, ptr %35, i64 %932
  %933 = add nuw nsw i64 %.319582426, 1
  %934 = getelementptr double, ptr %32, i64 %.31946
  %935 = mul i64 %.31946, %908
  %936 = getelementptr inbounds double, ptr %32, i64 %935
  %937 = mul nsw i64 %.319582426, %33
  %invariant.gep2414 = getelementptr double, ptr %35, i64 %937
  %938 = getelementptr double, ptr %32, i64 %.319582426
  %939 = add nuw nsw i64 %.31946, 1
  br label %940

940:                                              ; preds = %.lr.ph2407, %1218
  %.919282405 = phi i64 [ %929, %.lr.ph2407 ], [ %.111930, %1218 ]
  %.319622404 = phi i64 [ %929, %.lr.ph2407 ], [ %1219, %1218 ]
  %941 = icmp sgt i64 %.319622404, %.919282405
  br i1 %941, label %1218, label %942

942:                                              ; preds = %940
  %943 = icmp eq i64 %.319622404, 1
  br i1 %943, label %951, label %944

944:                                              ; preds = %942
  %945 = add nsw i64 %.319622404, -1
  %946 = mul nsw i64 %945, %27
  %947 = getelementptr double, ptr %29, i64 %.319622404
  %948 = getelementptr double, ptr %947, i64 %946
  %949 = load double, ptr %948, align 8, !tbaa !9
  %950 = fcmp une double %949, 0.000000e+00
  br i1 %950, label %1012, label %951

951:                                              ; preds = %944, %942
  %.101929 = phi i64 [ %.919282405, %942 ], [ %945, %944 ]
  %952 = load i64, ptr %3, align 8, !tbaa !5
  %953 = sub nsw i64 %952, %.319622404
  store i64 %953, ptr %14, align 8, !tbaa !5
  %954 = add nuw nsw i64 %.319622404, 1
  store i64 %954, ptr %15, align 8, !tbaa !5
  %.not2212.not = icmp slt i64 %.319622404, %952
  %.2283 = select i1 %.not2212.not, i64 %954, i64 %952
  %955 = mul nsw i64 %.2283, %27
  %956 = getelementptr double, ptr %29, i64 %.319622404
  %957 = getelementptr double, ptr %956, i64 %955
  %958 = call i64 @llvm.smin.i64(i64 %954, i64 %952)
  %gep2425 = getelementptr double, ptr %invariant.gep2408, i64 %958
  %959 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %957, ptr noundef nonnull %6, ptr noundef %gep2425, ptr noundef nonnull @c__1) #5
  %960 = load i64, ptr %4, align 8, !tbaa !5
  %961 = sub nsw i64 %960, %.319582426
  store i64 %961, ptr %14, align 8, !tbaa !5
  br i1 %931, label %962, label %1080

962:                                              ; preds = %951
  store i64 %939, ptr %15, align 8, !tbaa !5
  store i64 %939, ptr %16, align 8, !tbaa !5
  %.not2214.not = icmp slt i64 %.319582426, %960
  %963 = select i1 %.not2214.not, i64 %939, i64 %960
  %964 = mul nsw i64 %963, %33
  %965 = getelementptr double, ptr %35, i64 %.319622404
  %966 = getelementptr double, ptr %965, i64 %964
  %967 = call i64 @llvm.smin.i64(i64 %939, i64 %960)
  %968 = mul nsw i64 %967, %30
  %969 = getelementptr double, ptr %934, i64 %968
  %970 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %966, ptr noundef nonnull %10, ptr noundef %969, ptr noundef nonnull %8) #5
  %971 = getelementptr double, ptr %965, i64 %932
  %972 = load double, ptr %971, align 8, !tbaa !9
  %973 = call double @llvm.fmuladd.f64(double %96, double %970, double %959)
  %974 = fsub double %972, %973
  store double %974, ptr %19, align 16, !tbaa !9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %975 = mul i64 %.319622404, %909
  %976 = getelementptr inbounds double, ptr %29, i64 %975
  %977 = load double, ptr %976, align 8, !tbaa !9
  %978 = load double, ptr %936, align 8, !tbaa !9
  %979 = call double @llvm.fmuladd.f64(double %96, double %978, double %977)
  %980 = fcmp oge double %979, 0.000000e+00
  %981 = fneg double %979
  %982 = select i1 %980, double %979, double %981
  %983 = load double, ptr %22, align 8, !tbaa !9
  %984 = fcmp ugt double %982, %983
  br i1 %984, label %986, label %985

985:                                              ; preds = %962
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %986

986:                                              ; preds = %985, %962
  %.31938 = phi double [ %983, %985 ], [ %979, %962 ]
  %.31934 = phi double [ %983, %985 ], [ %982, %962 ]
  %987 = fcmp oge double %974, 0.000000e+00
  %988 = fneg double %974
  %989 = select i1 %987, double %974, double %988
  %990 = fcmp olt double %.31934, 1.000000e+00
  %991 = fcmp ogt double %989, 1.000000e+00
  %or.cond15 = select i1 %990, i1 %991, i1 false
  br i1 %or.cond15, label %992, label %thread-pre-split2310.thread

992:                                              ; preds = %986
  %993 = load double, ptr %25, align 8, !tbaa !9
  %994 = fmul double %.31934, %993
  %995 = fcmp ogt double %989, %994
  br i1 %995, label %thread-pre-split2310, label %thread-pre-split2310.thread

thread-pre-split2310.thread:                      ; preds = %986, %992
  %996 = fdiv double %974, %.31938
  store double %996, ptr %18, align 16, !tbaa !9
  br label %1010

thread-pre-split2310:                             ; preds = %992
  %997 = fdiv double 1.000000e+00, %989
  store double %997, ptr %24, align 8, !tbaa !9
  %998 = fmul double %974, %997
  %999 = fdiv double %998, %.31938
  store double %999, ptr %18, align 16, !tbaa !9
  %1000 = fcmp une double %997, 1.000000e+00
  br i1 %1000, label %1001, label %1010

1001:                                             ; preds = %thread-pre-split2310
  %1002 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %1002, ptr %14, align 8, !tbaa !5
  %.not22162399 = icmp slt i64 %1002, 1
  br i1 %.not22162399, label %._crit_edge2403, label %.lr.ph2402

.lr.ph2402:                                       ; preds = %1001, %.lr.ph2402
  %.122400 = phi i64 [ %1005, %.lr.ph2402 ], [ 1, %1001 ]
  %1003 = mul nsw i64 %.122400, %33
  %gep2398 = getelementptr double, ptr %invariant.gep2376, i64 %1003
  %1004 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2398, ptr noundef nonnull @c__1) #5
  %1005 = add nuw nsw i64 %.122400, 1
  %1006 = load i64, ptr %14, align 8, !tbaa !5
  %.not2216.not = icmp slt i64 %.122400, %1006
  br i1 %.not2216.not, label %.lr.ph2402, label %._crit_edge2403.loopexit, !llvm.loop !30

._crit_edge2403.loopexit:                         ; preds = %.lr.ph2402
  %.pre2584 = load double, ptr %24, align 8, !tbaa !9
  %.pre2585.pre = load double, ptr %18, align 16, !tbaa !9
  br label %._crit_edge2403

._crit_edge2403:                                  ; preds = %._crit_edge2403.loopexit, %1001
  %.pre2585 = phi double [ %.pre2585.pre, %._crit_edge2403.loopexit ], [ %999, %1001 ]
  %1007 = phi double [ %.pre2584, %._crit_edge2403.loopexit ], [ %997, %1001 ]
  %1008 = load double, ptr %11, align 8, !tbaa !9
  %1009 = fmul double %1007, %1008
  store double %1009, ptr %11, align 8, !tbaa !9
  br label %1010

1010:                                             ; preds = %thread-pre-split2310.thread, %._crit_edge2403, %thread-pre-split2310
  %1011 = phi double [ %.pre2585, %._crit_edge2403 ], [ %999, %thread-pre-split2310 ], [ %996, %thread-pre-split2310.thread ]
  store double %1011, ptr %971, align 8, !tbaa !9
  br label %1218

1012:                                             ; preds = %944
  %1013 = add nsw i64 %.319622404, -2
  %1014 = load i64, ptr %3, align 8, !tbaa !5
  %1015 = sub nsw i64 %1014, %.319622404
  store i64 %1015, ptr %14, align 8, !tbaa !5
  %1016 = add nuw nsw i64 %.319622404, 1
  store i64 %1016, ptr %15, align 8, !tbaa !5
  %.not2202.not = icmp slt i64 %.319622404, %1014
  %.2286 = select i1 %.not2202.not, i64 %1016, i64 %1014
  %1017 = mul nsw i64 %.2286, %27
  %1018 = getelementptr double, ptr %29, i64 %945
  %1019 = getelementptr double, ptr %1018, i64 %1017
  %1020 = call i64 @llvm.smin.i64(i64 %1016, i64 %1014)
  %gep2409 = getelementptr double, ptr %invariant.gep2408, i64 %1020
  %1021 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1019, ptr noundef nonnull %6, ptr noundef %gep2409, ptr noundef nonnull @c__1) #5
  %1022 = load i64, ptr %4, align 8, !tbaa !5
  %1023 = sub nsw i64 %1022, %.319582426
  store i64 %1023, ptr %14, align 8, !tbaa !5
  store i64 %933, ptr %15, align 8, !tbaa !5
  %.not2204.not = icmp slt i64 %.319582426, %1022
  %1024 = select i1 %.not2204.not, i64 %933, i64 %1022
  %1025 = mul nsw i64 %1024, %33
  %1026 = getelementptr double, ptr %35, i64 %945
  %1027 = getelementptr double, ptr %1026, i64 %1025
  %1028 = call i64 @llvm.smin.i64(i64 %933, i64 %1022)
  %1029 = mul nsw i64 %1028, %30
  %1030 = getelementptr double, ptr %934, i64 %1029
  %1031 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1027, ptr noundef nonnull %10, ptr noundef %1030, ptr noundef nonnull %8) #5
  %1032 = getelementptr double, ptr %1026, i64 %932
  %1033 = load double, ptr %1032, align 8, !tbaa !9
  %1034 = call double @llvm.fmuladd.f64(double %96, double %1031, double %1021)
  %1035 = fsub double %1033, %1034
  store double %1035, ptr %19, align 16, !tbaa !9
  %1036 = load i64, ptr %3, align 8, !tbaa !5
  %1037 = sub nsw i64 %1036, %.319622404
  store i64 %1037, ptr %14, align 8, !tbaa !5
  store i64 %1016, ptr %15, align 8, !tbaa !5
  %.not2206.not = icmp slt i64 %.319622404, %1036
  %1038 = select i1 %.not2206.not, i64 %1016, i64 %1036
  %1039 = mul nsw i64 %1038, %27
  br i1 %931, label %1040, label %1137

1040:                                             ; preds = %1012
  %1041 = getelementptr double, ptr %29, i64 %.319622404
  %1042 = getelementptr double, ptr %1041, i64 %1039
  %1043 = call i64 @llvm.smin.i64(i64 %1016, i64 %1036)
  %gep2411 = getelementptr double, ptr %invariant.gep2408, i64 %1043
  %1044 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1042, ptr noundef nonnull %6, ptr noundef %gep2411, ptr noundef nonnull @c__1) #5
  %1045 = load i64, ptr %4, align 8, !tbaa !5
  %1046 = sub nsw i64 %1045, %.319582426
  store i64 %1046, ptr %14, align 8, !tbaa !5
  store i64 %933, ptr %15, align 8, !tbaa !5
  store i64 %933, ptr %16, align 8, !tbaa !5
  %.not2208.not = icmp slt i64 %.319582426, %1045
  %1047 = select i1 %.not2208.not, i64 %933, i64 %1045
  %1048 = mul nsw i64 %1047, %33
  %1049 = getelementptr double, ptr %35, i64 %.319622404
  %1050 = getelementptr double, ptr %1049, i64 %1048
  %1051 = call i64 @llvm.smin.i64(i64 %933, i64 %1045)
  %1052 = mul nsw i64 %1051, %30
  %1053 = getelementptr double, ptr %934, i64 %1052
  %1054 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1050, ptr noundef nonnull %10, ptr noundef %1053, ptr noundef nonnull %8) #5
  %1055 = getelementptr double, ptr %1049, i64 %932
  %1056 = load double, ptr %1055, align 8, !tbaa !9
  %1057 = call double @llvm.fmuladd.f64(double %96, double %1054, double %1044)
  %1058 = fsub double %1056, %1057
  store double %1058, ptr %906, align 8, !tbaa !9
  %1059 = load double, ptr %936, align 8, !tbaa !9
  %1060 = fmul double %1059, %907
  store double %1060, ptr %17, align 8, !tbaa !9
  %1061 = mul i64 %945, %909
  %1062 = getelementptr inbounds double, ptr %29, i64 %1061
  %1063 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c_b26, ptr noundef %1062, ptr noundef nonnull %6, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %1064 = load i64, ptr %21, align 8, !tbaa !5
  %.not2210 = icmp eq i64 %1064, 0
  br i1 %.not2210, label %1066, label %1065

1065:                                             ; preds = %1040
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %1066

1066:                                             ; preds = %1065, %1040
  %1067 = load double, ptr %24, align 8, !tbaa !9
  %1068 = fcmp une double %1067, 1.000000e+00
  br i1 %1068, label %1069, label %1078

1069:                                             ; preds = %1066
  %1070 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %1070, ptr %14, align 8, !tbaa !5
  %.not22112378 = icmp slt i64 %1070, 1
  br i1 %.not22112378, label %._crit_edge2382, label %.lr.ph2381

.lr.ph2381:                                       ; preds = %1069, %.lr.ph2381
  %.132379 = phi i64 [ %1073, %.lr.ph2381 ], [ 1, %1069 ]
  %1071 = mul nsw i64 %.132379, %33
  %gep2377 = getelementptr double, ptr %invariant.gep2376, i64 %1071
  %1072 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2377, ptr noundef nonnull @c__1) #5
  %1073 = add nuw nsw i64 %.132379, 1
  %1074 = load i64, ptr %14, align 8, !tbaa !5
  %.not2211.not = icmp slt i64 %.132379, %1074
  br i1 %.not2211.not, label %.lr.ph2381, label %._crit_edge2382.loopexit, !llvm.loop !31

._crit_edge2382.loopexit:                         ; preds = %.lr.ph2381
  %.pre2581 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2382

._crit_edge2382:                                  ; preds = %._crit_edge2382.loopexit, %1069
  %1075 = phi double [ %.pre2581, %._crit_edge2382.loopexit ], [ %1067, %1069 ]
  %1076 = load double, ptr %11, align 8, !tbaa !9
  %1077 = fmul double %1075, %1076
  store double %1077, ptr %11, align 8, !tbaa !9
  br label %1078

1078:                                             ; preds = %._crit_edge2382, %1066
  %1079 = load <2 x double>, ptr %18, align 16, !tbaa !9
  store <2 x double> %1079, ptr %1032, align 8, !tbaa !9
  br label %1218

1080:                                             ; preds = %951
  store i64 %933, ptr %15, align 8, !tbaa !5
  %.not2194.not = icmp slt i64 %.319582426, %960
  %1081 = select i1 %.not2194.not, i64 %933, i64 %960
  %1082 = mul nsw i64 %1081, %33
  %1083 = getelementptr double, ptr %35, i64 %.319622404
  %1084 = getelementptr double, ptr %1083, i64 %1082
  %1085 = call i64 @llvm.smin.i64(i64 %933, i64 %960)
  %1086 = mul nsw i64 %1085, %30
  %1087 = getelementptr double, ptr %934, i64 %1086
  %1088 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1084, ptr noundef nonnull %10, ptr noundef %1087, ptr noundef nonnull %8) #5
  %1089 = getelementptr double, ptr %1083, i64 %932
  %1090 = load double, ptr %1089, align 8, !tbaa !9
  %1091 = call double @llvm.fmuladd.f64(double %96, double %1088, double %959)
  %1092 = fsub double %1090, %1091
  %1093 = fmul double %1092, %96
  store double %1093, ptr %19, align 16, !tbaa !9
  %1094 = load i64, ptr %3, align 8, !tbaa !5
  %1095 = sub nsw i64 %1094, %.319622404
  store i64 %1095, ptr %14, align 8, !tbaa !5
  store i64 %954, ptr %15, align 8, !tbaa !5
  %.not2196.not = icmp slt i64 %.319622404, %1094
  %1096 = select i1 %.not2196.not, i64 %954, i64 %1094
  %1097 = mul nsw i64 %1096, %27
  %1098 = getelementptr double, ptr %956, i64 %1097
  %1099 = call i64 @llvm.smin.i64(i64 %954, i64 %1094)
  %gep2423 = getelementptr double, ptr %invariant.gep2414, i64 %1099
  %1100 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1098, ptr noundef nonnull %6, ptr noundef %gep2423, ptr noundef nonnull @c__1) #5
  %1101 = load i64, ptr %4, align 8, !tbaa !5
  %1102 = sub nsw i64 %1101, %.319582426
  store i64 %1102, ptr %14, align 8, !tbaa !5
  store i64 %933, ptr %15, align 8, !tbaa !5
  store i64 %933, ptr %16, align 8, !tbaa !5
  %.not2198.not = icmp slt i64 %.319582426, %1101
  %1103 = select i1 %.not2198.not, i64 %933, i64 %1101
  %1104 = mul nsw i64 %1103, %33
  %1105 = getelementptr double, ptr %1083, i64 %1104
  %1106 = call i64 @llvm.smin.i64(i64 %933, i64 %1101)
  %1107 = mul nsw i64 %1106, %30
  %1108 = getelementptr double, ptr %938, i64 %1107
  %1109 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1105, ptr noundef nonnull %10, ptr noundef %1108, ptr noundef nonnull %8) #5
  %1110 = getelementptr double, ptr %1083, i64 %937
  %1111 = load double, ptr %1110, align 8, !tbaa !9
  %1112 = call double @llvm.fmuladd.f64(double %96, double %1109, double %1100)
  %1113 = fsub double %1111, %1112
  %1114 = fmul double %1113, %96
  store double %1114, ptr %906, align 8, !tbaa !9
  %1115 = mul i64 %.319622404, %909
  %1116 = getelementptr inbounds double, ptr %29, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !9
  %1118 = fmul double %1117, %907
  store double %1118, ptr %17, align 8, !tbaa !9
  %1119 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c_b26, ptr noundef %936, ptr noundef nonnull %8, ptr noundef nonnull @c_b26, ptr noundef nonnull @c_b26, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %17, ptr noundef nonnull @c_b30, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %1120 = load i64, ptr %21, align 8, !tbaa !5
  %.not2200 = icmp eq i64 %1120, 0
  br i1 %.not2200, label %1122, label %1121

1121:                                             ; preds = %1080
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %1122

1122:                                             ; preds = %1121, %1080
  %1123 = load double, ptr %24, align 8, !tbaa !9
  %1124 = fcmp une double %1123, 1.000000e+00
  br i1 %1124, label %1125, label %1134

1125:                                             ; preds = %1122
  %1126 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %1126, ptr %14, align 8, !tbaa !5
  %.not22012392 = icmp slt i64 %1126, 1
  br i1 %.not22012392, label %._crit_edge2396, label %.lr.ph2395

.lr.ph2395:                                       ; preds = %1125, %.lr.ph2395
  %.142393 = phi i64 [ %1129, %.lr.ph2395 ], [ 1, %1125 ]
  %1127 = mul nsw i64 %.142393, %33
  %gep2391 = getelementptr double, ptr %invariant.gep2376, i64 %1127
  %1128 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2391, ptr noundef nonnull @c__1) #5
  %1129 = add nuw nsw i64 %.142393, 1
  %1130 = load i64, ptr %14, align 8, !tbaa !5
  %.not2201.not = icmp slt i64 %.142393, %1130
  br i1 %.not2201.not, label %.lr.ph2395, label %._crit_edge2396.loopexit, !llvm.loop !32

._crit_edge2396.loopexit:                         ; preds = %.lr.ph2395
  %.pre2583 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2396

._crit_edge2396:                                  ; preds = %._crit_edge2396.loopexit, %1125
  %1131 = phi double [ %.pre2583, %._crit_edge2396.loopexit ], [ %1123, %1125 ]
  %1132 = load double, ptr %11, align 8, !tbaa !9
  %1133 = fmul double %1131, %1132
  store double %1133, ptr %11, align 8, !tbaa !9
  br label %1134

1134:                                             ; preds = %._crit_edge2396, %1122
  %1135 = load double, ptr %18, align 16, !tbaa !9
  store double %1135, ptr %1089, align 8, !tbaa !9
  %1136 = load double, ptr %910, align 8, !tbaa !9
  store double %1136, ptr %1110, align 8, !tbaa !9
  br label %1218

1137:                                             ; preds = %1012
  %1138 = getelementptr double, ptr %1018, i64 %1039
  %1139 = call i64 @llvm.smin.i64(i64 %1016, i64 %1036)
  %gep2415 = getelementptr double, ptr %invariant.gep2414, i64 %1139
  %1140 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1138, ptr noundef nonnull %6, ptr noundef %gep2415, ptr noundef nonnull @c__1) #5
  %1141 = load i64, ptr %4, align 8, !tbaa !5
  %1142 = sub nsw i64 %1141, %.319582426
  store i64 %1142, ptr %14, align 8, !tbaa !5
  store i64 %933, ptr %15, align 8, !tbaa !5
  %.not2180.not = icmp slt i64 %.319582426, %1141
  %1143 = select i1 %.not2180.not, i64 %933, i64 %1141
  %1144 = mul nsw i64 %1143, %33
  %1145 = getelementptr double, ptr %1026, i64 %1144
  %1146 = call i64 @llvm.smin.i64(i64 %933, i64 %1141)
  %1147 = mul nsw i64 %1146, %30
  %1148 = getelementptr double, ptr %938, i64 %1147
  %1149 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1145, ptr noundef nonnull %10, ptr noundef %1148, ptr noundef nonnull %8) #5
  %1150 = getelementptr double, ptr %1026, i64 %937
  %1151 = load double, ptr %1150, align 8, !tbaa !9
  %1152 = call double @llvm.fmuladd.f64(double %96, double %1149, double %1140)
  %1153 = fsub double %1151, %1152
  store double %1153, ptr %911, align 16, !tbaa !9
  %1154 = load i64, ptr %3, align 8, !tbaa !5
  %1155 = sub nsw i64 %1154, %.319622404
  store i64 %1155, ptr %14, align 8, !tbaa !5
  store i64 %1016, ptr %15, align 8, !tbaa !5
  %.not2182.not = icmp slt i64 %.319622404, %1154
  %1156 = select i1 %.not2182.not, i64 %1016, i64 %1154
  %1157 = mul nsw i64 %1156, %27
  %1158 = getelementptr double, ptr %29, i64 %.319622404
  %1159 = getelementptr double, ptr %1158, i64 %1157
  %1160 = call i64 @llvm.smin.i64(i64 %1016, i64 %1154)
  %gep2417 = getelementptr double, ptr %invariant.gep2408, i64 %1160
  %1161 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1159, ptr noundef nonnull %6, ptr noundef %gep2417, ptr noundef nonnull @c__1) #5
  %1162 = load i64, ptr %4, align 8, !tbaa !5
  %1163 = sub nsw i64 %1162, %.319582426
  store i64 %1163, ptr %14, align 8, !tbaa !5
  store i64 %933, ptr %15, align 8, !tbaa !5
  %.not2184.not = icmp slt i64 %.319582426, %1162
  %1164 = select i1 %.not2184.not, i64 %933, i64 %1162
  %1165 = mul nsw i64 %1164, %33
  %1166 = getelementptr double, ptr %35, i64 %.319622404
  %1167 = getelementptr double, ptr %1166, i64 %1165
  %1168 = call i64 @llvm.smin.i64(i64 %933, i64 %1162)
  %1169 = mul nsw i64 %1168, %30
  %1170 = getelementptr double, ptr %934, i64 %1169
  %1171 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1167, ptr noundef nonnull %10, ptr noundef %1170, ptr noundef nonnull %8) #5
  %1172 = getelementptr double, ptr %1166, i64 %932
  %1173 = load double, ptr %1172, align 8, !tbaa !9
  %1174 = call double @llvm.fmuladd.f64(double %96, double %1171, double %1161)
  %1175 = fsub double %1173, %1174
  store double %1175, ptr %906, align 8, !tbaa !9
  %1176 = load i64, ptr %3, align 8, !tbaa !5
  %1177 = sub nsw i64 %1176, %.319622404
  store i64 %1177, ptr %14, align 8, !tbaa !5
  store i64 %1016, ptr %15, align 8, !tbaa !5
  %.not2186.not = icmp slt i64 %.319622404, %1176
  %1178 = select i1 %.not2186.not, i64 %1016, i64 %1176
  %1179 = mul nsw i64 %1178, %27
  %1180 = getelementptr double, ptr %1158, i64 %1179
  %1181 = call i64 @llvm.smin.i64(i64 %1016, i64 %1176)
  %gep2419 = getelementptr double, ptr %invariant.gep2414, i64 %1181
  %1182 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1180, ptr noundef nonnull %6, ptr noundef %gep2419, ptr noundef nonnull @c__1) #5
  %1183 = load i64, ptr %4, align 8, !tbaa !5
  %1184 = sub nsw i64 %1183, %.319582426
  store i64 %1184, ptr %14, align 8, !tbaa !5
  store i64 %933, ptr %15, align 8, !tbaa !5
  store i64 %933, ptr %16, align 8, !tbaa !5
  %.not2188.not = icmp slt i64 %.319582426, %1183
  %1185 = select i1 %.not2188.not, i64 %933, i64 %1183
  %1186 = mul nsw i64 %1185, %33
  %1187 = getelementptr double, ptr %1166, i64 %1186
  %1188 = call i64 @llvm.smin.i64(i64 %933, i64 %1183)
  %1189 = mul nsw i64 %1188, %30
  %1190 = getelementptr double, ptr %938, i64 %1189
  %1191 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %1187, ptr noundef nonnull %10, ptr noundef %1190, ptr noundef nonnull %8) #5
  %1192 = getelementptr double, ptr %1166, i64 %937
  %1193 = load double, ptr %1192, align 8, !tbaa !9
  %1194 = call double @llvm.fmuladd.f64(double %96, double %1191, double %1182)
  %1195 = fsub double %1193, %1194
  store double %1195, ptr %912, align 8, !tbaa !9
  %1196 = mul i64 %945, %909
  %1197 = getelementptr inbounds double, ptr %29, i64 %1196
  %1198 = call i32 @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 %1197, ptr noundef nonnull %6, ptr noundef %936, ptr noundef nonnull %8, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull @c__2, ptr noundef nonnull %23, ptr noundef nonnull %21) #5
  %1199 = load i64, ptr %21, align 8, !tbaa !5
  %.not2190 = icmp eq i64 %1199, 0
  br i1 %.not2190, label %1201, label %1200

1200:                                             ; preds = %1137
  store i64 1, ptr %12, align 8, !tbaa !5
  br label %1201

1201:                                             ; preds = %1200, %1137
  %1202 = load double, ptr %24, align 8, !tbaa !9
  %1203 = fcmp une double %1202, 1.000000e+00
  br i1 %1203, label %1204, label %1213

1204:                                             ; preds = %1201
  %1205 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %1205, ptr %14, align 8, !tbaa !5
  %.not21912385 = icmp slt i64 %1205, 1
  br i1 %.not21912385, label %._crit_edge2389, label %.lr.ph2388

.lr.ph2388:                                       ; preds = %1204, %.lr.ph2388
  %.152386 = phi i64 [ %1208, %.lr.ph2388 ], [ 1, %1204 ]
  %1206 = mul nsw i64 %.152386, %33
  %gep2384 = getelementptr double, ptr %invariant.gep2376, i64 %1206
  %1207 = call i32 @f2c_dscal(ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %gep2384, ptr noundef nonnull @c__1) #5
  %1208 = add nuw nsw i64 %.152386, 1
  %1209 = load i64, ptr %14, align 8, !tbaa !5
  %.not2191.not = icmp slt i64 %.152386, %1209
  br i1 %.not2191.not, label %.lr.ph2388, label %._crit_edge2389.loopexit, !llvm.loop !33

._crit_edge2389.loopexit:                         ; preds = %.lr.ph2388
  %.pre2582 = load double, ptr %24, align 8, !tbaa !9
  br label %._crit_edge2389

._crit_edge2389:                                  ; preds = %._crit_edge2389.loopexit, %1204
  %1210 = phi double [ %.pre2582, %._crit_edge2389.loopexit ], [ %1202, %1204 ]
  %1211 = load double, ptr %11, align 8, !tbaa !9
  %1212 = fmul double %1210, %1211
  store double %1212, ptr %11, align 8, !tbaa !9
  br label %1213

1213:                                             ; preds = %._crit_edge2389, %1201
  %1214 = load double, ptr %18, align 16, !tbaa !9
  store double %1214, ptr %1032, align 8, !tbaa !9
  %1215 = load double, ptr %913, align 16, !tbaa !9
  store double %1215, ptr %1150, align 8, !tbaa !9
  %1216 = load double, ptr %910, align 8, !tbaa !9
  store double %1216, ptr %1172, align 8, !tbaa !9
  %1217 = load double, ptr %914, align 8, !tbaa !9
  store double %1217, ptr %1192, align 8, !tbaa !9
  br label %1218

1218:                                             ; preds = %940, %1078, %1213, %1134, %1010
  %.111930 = phi i64 [ %.919282405, %940 ], [ %.101929, %1010 ], [ %1013, %1078 ], [ %.101929, %1134 ], [ %1013, %1213 ]
  %1219 = add nsw i64 %.319622404, -1
  %1220 = icmp sgt i64 %.319622404, 1
  br i1 %1220, label %940, label %.loopexit2315, !llvm.loop !34

.loopexit2315:                                    ; preds = %1218, %928, %915
  %.11 = phi i64 [ %.92428, %915 ], [ %.10, %928 ], [ %.10, %1218 ]
  %1221 = add nsw i64 %.319582426, -1
  %1222 = icmp sgt i64 %.319582426, 1
  br i1 %1222, label %915, label %.loopexit2312, !llvm.loop !35

.loopexit2312:                                    ; preds = %.loopexit2317, %.loopexit2315, %.loopexit2313, %.loopexit, %605, %903, %361, %98, %902, %69, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  ret i32 0
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @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 i64 @llvm.umax.i64(i64, i64) #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = 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,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass