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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dlasyf_(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) #0 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, 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 i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca double, align 8
  %50 = alloca i64, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  store ptr %9, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  %54 = load ptr, ptr %16, align 8, !tbaa !5
  %55 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %55, ptr %21, align 8, !tbaa !9
  %56 = load i64, ptr %21, align 8, !tbaa !9
  %57 = add nsw i64 1, %56
  store i64 %57, ptr %22, align 8, !tbaa !9
  %58 = load i64, ptr %22, align 8, !tbaa !9
  %59 = load ptr, ptr %15, align 8, !tbaa !5
  %60 = sub i64 0, %58
  %61 = getelementptr inbounds double, ptr %59, i64 %60
  store ptr %61, ptr %15, align 8, !tbaa !5
  %62 = load ptr, ptr %17, align 8, !tbaa !5
  %63 = getelementptr inbounds i64, ptr %62, i32 -1
  store ptr %63, ptr %17, align 8, !tbaa !5
  %64 = load ptr, ptr %19, align 8, !tbaa !5
  %65 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %65, ptr %23, align 8, !tbaa !9
  %66 = load i64, ptr %23, align 8, !tbaa !9
  %67 = add nsw i64 1, %66
  store i64 %67, ptr %24, align 8, !tbaa !9
  %68 = load i64, ptr %24, align 8, !tbaa !9
  %69 = load ptr, ptr %18, align 8, !tbaa !5
  %70 = sub i64 0, %68
  %71 = getelementptr inbounds double, ptr %69, i64 %70
  store ptr %71, ptr %18, align 8, !tbaa !5
  %72 = load ptr, ptr %20, align 8, !tbaa !5
  store i64 0, ptr %72, align 8, !tbaa !9
  %73 = call double @sqrt(double noundef 1.700000e+01) #5
  %74 = fadd double %73, 1.000000e+00
  %75 = fdiv double %74, 8.000000e+00
  store double %75, ptr %49, align 8, !tbaa !11
  %76 = load ptr, ptr %11, align 8, !tbaa !5
  %77 = call i64 @lsame_(ptr noundef %76, ptr noundef @.str)
  %78 = icmp ne i64 %77, 0
  br i1 %78, label %79, label %954

79:                                               ; preds = %10
  %80 = load ptr, ptr %12, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %81, ptr %34, align 8, !tbaa !9
  br label %82

82:                                               ; preds = %762, %79
  %83 = load ptr, ptr %13, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  %85 = load i64, ptr %34, align 8, !tbaa !9
  %86 = add nsw i64 %84, %85
  %87 = load ptr, ptr %12, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !9
  %89 = sub nsw i64 %86, %88
  store i64 %89, ptr %45, align 8, !tbaa !9
  %90 = load i64, ptr %34, align 8, !tbaa !9
  %91 = load ptr, ptr %12, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  %93 = load ptr, ptr %13, align 8, !tbaa !5
  %94 = load i64, ptr %93, align 8, !tbaa !9
  %95 = sub nsw i64 %92, %94
  %96 = add nsw i64 %95, 1
  %97 = icmp sle i64 %90, %96
  br i1 %97, label %98, label %104

98:                                               ; preds = %82
  %99 = load ptr, ptr %13, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  %101 = load ptr, ptr %12, align 8, !tbaa !5
  %102 = load i64, ptr %101, align 8, !tbaa !9
  %103 = icmp slt i64 %100, %102
  br i1 %103, label %107, label %104

104:                                              ; preds = %98, %82
  %105 = load i64, ptr %34, align 8, !tbaa !9
  %106 = icmp slt i64 %105, 1
  br i1 %106, label %107, label %108

107:                                              ; preds = %104, %98
  br label %766

108:                                              ; preds = %104
  %109 = load ptr, ptr %15, align 8, !tbaa !5
  %110 = load i64, ptr %34, align 8, !tbaa !9
  %111 = load i64, ptr %21, align 8, !tbaa !9
  %112 = mul nsw i64 %110, %111
  %113 = add nsw i64 %112, 1
  %114 = getelementptr inbounds double, ptr %109, i64 %113
  %115 = load ptr, ptr %18, align 8, !tbaa !5
  %116 = load i64, ptr %45, align 8, !tbaa !9
  %117 = load i64, ptr %23, align 8, !tbaa !9
  %118 = mul nsw i64 %116, %117
  %119 = add nsw i64 %118, 1
  %120 = getelementptr inbounds double, ptr %115, i64 %119
  %121 = call i32 @f2c_dcopy(ptr noundef %34, ptr noundef %114, ptr noundef @c__1, ptr noundef %120, ptr noundef @c__1)
  %122 = load i64, ptr %34, align 8, !tbaa !9
  %123 = load ptr, ptr %12, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = icmp slt i64 %122, %124
  br i1 %125, label %126, label %155

126:                                              ; preds = %108
  %127 = load ptr, ptr %12, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = load i64, ptr %34, align 8, !tbaa !9
  %130 = sub nsw i64 %128, %129
  store i64 %130, ptr %25, align 8, !tbaa !9
  %131 = load ptr, ptr %15, align 8, !tbaa !5
  %132 = load i64, ptr %34, align 8, !tbaa !9
  %133 = add nsw i64 %132, 1
  %134 = load i64, ptr %21, align 8, !tbaa !9
  %135 = mul nsw i64 %133, %134
  %136 = add nsw i64 %135, 1
  %137 = getelementptr inbounds double, ptr %131, i64 %136
  %138 = load ptr, ptr %16, align 8, !tbaa !5
  %139 = load ptr, ptr %18, align 8, !tbaa !5
  %140 = load i64, ptr %34, align 8, !tbaa !9
  %141 = load i64, ptr %45, align 8, !tbaa !9
  %142 = add nsw i64 %141, 1
  %143 = load i64, ptr %23, align 8, !tbaa !9
  %144 = mul nsw i64 %142, %143
  %145 = add nsw i64 %140, %144
  %146 = getelementptr inbounds double, ptr %139, i64 %145
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = load ptr, ptr %18, align 8, !tbaa !5
  %149 = load i64, ptr %45, align 8, !tbaa !9
  %150 = load i64, ptr %23, align 8, !tbaa !9
  %151 = mul nsw i64 %149, %150
  %152 = add nsw i64 %151, 1
  %153 = getelementptr inbounds double, ptr %148, i64 %152
  %154 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %34, ptr noundef %25, ptr noundef @c_b8, ptr noundef %137, ptr noundef %138, ptr noundef %146, ptr noundef %147, ptr noundef @c_b9, ptr noundef %153, ptr noundef @c__1)
  br label %155

155:                                              ; preds = %126, %108
  store i64 1, ptr %50, align 8, !tbaa !9
  %156 = load ptr, ptr %18, align 8, !tbaa !5
  %157 = load i64, ptr %34, align 8, !tbaa !9
  %158 = load i64, ptr %45, align 8, !tbaa !9
  %159 = load i64, ptr %23, align 8, !tbaa !9
  %160 = mul nsw i64 %158, %159
  %161 = add nsw i64 %157, %160
  %162 = getelementptr inbounds double, ptr %156, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !11
  store double %163, ptr %30, align 8, !tbaa !11
  %164 = load double, ptr %30, align 8, !tbaa !11
  %165 = fcmp oge double %164, 0.000000e+00
  br i1 %165, label %166, label %168

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

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

171:                                              ; preds = %168, %166
  %172 = phi double [ %167, %166 ], [ %170, %168 ]
  store double %172, ptr %51, align 8, !tbaa !11
  %173 = load i64, ptr %34, align 8, !tbaa !9
  %174 = icmp sgt i64 %173, 1
  br i1 %174, label %175, label %202

175:                                              ; preds = %171
  %176 = load i64, ptr %34, align 8, !tbaa !9
  %177 = sub nsw i64 %176, 1
  store i64 %177, ptr %25, align 8, !tbaa !9
  %178 = load ptr, ptr %18, align 8, !tbaa !5
  %179 = load i64, ptr %45, align 8, !tbaa !9
  %180 = load i64, ptr %23, align 8, !tbaa !9
  %181 = mul nsw i64 %179, %180
  %182 = add nsw i64 %181, 1
  %183 = getelementptr inbounds double, ptr %178, i64 %182
  %184 = call i64 @f2c_idamax(ptr noundef %25, ptr noundef %183, ptr noundef @c__1)
  store i64 %184, ptr %47, align 8, !tbaa !9
  %185 = load ptr, ptr %18, align 8, !tbaa !5
  %186 = load i64, ptr %47, align 8, !tbaa !9
  %187 = load i64, ptr %45, align 8, !tbaa !9
  %188 = load i64, ptr %23, align 8, !tbaa !9
  %189 = mul nsw i64 %187, %188
  %190 = add nsw i64 %186, %189
  %191 = getelementptr inbounds double, ptr %185, i64 %190
  %192 = load double, ptr %191, align 8, !tbaa !11
  store double %192, ptr %30, align 8, !tbaa !11
  %193 = load double, ptr %30, align 8, !tbaa !11
  %194 = fcmp oge double %193, 0.000000e+00
  br i1 %194, label %195, label %197

195:                                              ; preds = %175
  %196 = load double, ptr %30, align 8, !tbaa !11
  br label %200

197:                                              ; preds = %175
  %198 = load double, ptr %30, align 8, !tbaa !11
  %199 = fneg double %198
  br label %200

200:                                              ; preds = %197, %195
  %201 = phi double [ %196, %195 ], [ %199, %197 ]
  store double %201, ptr %52, align 8, !tbaa !11
  br label %203

202:                                              ; preds = %171
  store double 0.000000e+00, ptr %52, align 8, !tbaa !11
  br label %203

203:                                              ; preds = %202, %200
  %204 = load double, ptr %51, align 8, !tbaa !11
  %205 = load double, ptr %52, align 8, !tbaa !11
  %206 = fcmp oge double %204, %205
  br i1 %206, label %207, label %209

207:                                              ; preds = %203
  %208 = load double, ptr %51, align 8, !tbaa !11
  br label %211

209:                                              ; preds = %203
  %210 = load double, ptr %52, align 8, !tbaa !11
  br label %211

211:                                              ; preds = %209, %207
  %212 = phi double [ %208, %207 ], [ %210, %209 ]
  %213 = fcmp oeq double %212, 0.000000e+00
  br i1 %213, label %214, label %223

214:                                              ; preds = %211
  %215 = load ptr, ptr %20, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = icmp eq i64 %216, 0
  br i1 %217, label %218, label %221

218:                                              ; preds = %214
  %219 = load i64, ptr %34, align 8, !tbaa !9
  %220 = load ptr, ptr %20, align 8, !tbaa !5
  store i64 %219, ptr %220, align 8, !tbaa !9
  br label %221

221:                                              ; preds = %218, %214
  %222 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %222, ptr %44, align 8, !tbaa !9
  br label %742

223:                                              ; preds = %211
  %224 = load double, ptr %51, align 8, !tbaa !11
  %225 = load double, ptr %49, align 8, !tbaa !11
  %226 = load double, ptr %52, align 8, !tbaa !11
  %227 = fmul double %225, %226
  %228 = fcmp oge double %224, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %223
  %230 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %230, ptr %44, align 8, !tbaa !9
  br label %432

231:                                              ; preds = %223
  %232 = load ptr, ptr %15, align 8, !tbaa !5
  %233 = load i64, ptr %47, align 8, !tbaa !9
  %234 = load i64, ptr %21, align 8, !tbaa !9
  %235 = mul nsw i64 %233, %234
  %236 = add nsw i64 %235, 1
  %237 = getelementptr inbounds double, ptr %232, i64 %236
  %238 = load ptr, ptr %18, align 8, !tbaa !5
  %239 = load i64, ptr %45, align 8, !tbaa !9
  %240 = sub nsw i64 %239, 1
  %241 = load i64, ptr %23, align 8, !tbaa !9
  %242 = mul nsw i64 %240, %241
  %243 = add nsw i64 %242, 1
  %244 = getelementptr inbounds double, ptr %238, i64 %243
  %245 = call i32 @f2c_dcopy(ptr noundef %47, ptr noundef %237, ptr noundef @c__1, ptr noundef %244, ptr noundef @c__1)
  %246 = load i64, ptr %34, align 8, !tbaa !9
  %247 = load i64, ptr %47, align 8, !tbaa !9
  %248 = sub nsw i64 %246, %247
  store i64 %248, ptr %25, align 8, !tbaa !9
  %249 = load ptr, ptr %15, align 8, !tbaa !5
  %250 = load i64, ptr %47, align 8, !tbaa !9
  %251 = load i64, ptr %47, align 8, !tbaa !9
  %252 = add nsw i64 %251, 1
  %253 = load i64, ptr %21, align 8, !tbaa !9
  %254 = mul nsw i64 %252, %253
  %255 = add nsw i64 %250, %254
  %256 = getelementptr inbounds double, ptr %249, i64 %255
  %257 = load ptr, ptr %16, align 8, !tbaa !5
  %258 = load ptr, ptr %18, align 8, !tbaa !5
  %259 = load i64, ptr %47, align 8, !tbaa !9
  %260 = add nsw i64 %259, 1
  %261 = load i64, ptr %45, align 8, !tbaa !9
  %262 = sub nsw i64 %261, 1
  %263 = load i64, ptr %23, align 8, !tbaa !9
  %264 = mul nsw i64 %262, %263
  %265 = add nsw i64 %260, %264
  %266 = getelementptr inbounds double, ptr %258, i64 %265
  %267 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %256, ptr noundef %257, ptr noundef %266, ptr noundef @c__1)
  %268 = load i64, ptr %34, align 8, !tbaa !9
  %269 = load ptr, ptr %12, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = icmp slt i64 %268, %270
  br i1 %271, label %272, label %302

272:                                              ; preds = %231
  %273 = load ptr, ptr %12, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = load i64, ptr %34, align 8, !tbaa !9
  %276 = sub nsw i64 %274, %275
  store i64 %276, ptr %25, align 8, !tbaa !9
  %277 = load ptr, ptr %15, align 8, !tbaa !5
  %278 = load i64, ptr %34, align 8, !tbaa !9
  %279 = add nsw i64 %278, 1
  %280 = load i64, ptr %21, align 8, !tbaa !9
  %281 = mul nsw i64 %279, %280
  %282 = add nsw i64 %281, 1
  %283 = getelementptr inbounds double, ptr %277, i64 %282
  %284 = load ptr, ptr %16, align 8, !tbaa !5
  %285 = load ptr, ptr %18, align 8, !tbaa !5
  %286 = load i64, ptr %47, align 8, !tbaa !9
  %287 = load i64, ptr %45, align 8, !tbaa !9
  %288 = add nsw i64 %287, 1
  %289 = load i64, ptr %23, align 8, !tbaa !9
  %290 = mul nsw i64 %288, %289
  %291 = add nsw i64 %286, %290
  %292 = getelementptr inbounds double, ptr %285, i64 %291
  %293 = load ptr, ptr %19, align 8, !tbaa !5
  %294 = load ptr, ptr %18, align 8, !tbaa !5
  %295 = load i64, ptr %45, align 8, !tbaa !9
  %296 = sub nsw i64 %295, 1
  %297 = load i64, ptr %23, align 8, !tbaa !9
  %298 = mul nsw i64 %296, %297
  %299 = add nsw i64 %298, 1
  %300 = getelementptr inbounds double, ptr %294, i64 %299
  %301 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %34, ptr noundef %25, ptr noundef @c_b8, ptr noundef %283, ptr noundef %284, ptr noundef %292, ptr noundef %293, ptr noundef @c_b9, ptr noundef %300, ptr noundef @c__1)
  br label %302

302:                                              ; preds = %272, %231
  %303 = load i64, ptr %34, align 8, !tbaa !9
  %304 = load i64, ptr %47, align 8, !tbaa !9
  %305 = sub nsw i64 %303, %304
  store i64 %305, ptr %25, align 8, !tbaa !9
  %306 = load i64, ptr %47, align 8, !tbaa !9
  %307 = load ptr, ptr %18, align 8, !tbaa !5
  %308 = load i64, ptr %47, align 8, !tbaa !9
  %309 = add nsw i64 %308, 1
  %310 = load i64, ptr %45, align 8, !tbaa !9
  %311 = sub nsw i64 %310, 1
  %312 = load i64, ptr %23, align 8, !tbaa !9
  %313 = mul nsw i64 %311, %312
  %314 = add nsw i64 %309, %313
  %315 = getelementptr inbounds double, ptr %307, i64 %314
  %316 = call i64 @f2c_idamax(ptr noundef %25, ptr noundef %315, ptr noundef @c__1)
  %317 = add nsw i64 %306, %316
  store i64 %317, ptr %48, align 8, !tbaa !9
  %318 = load ptr, ptr %18, align 8, !tbaa !5
  %319 = load i64, ptr %48, align 8, !tbaa !9
  %320 = load i64, ptr %45, align 8, !tbaa !9
  %321 = sub nsw i64 %320, 1
  %322 = load i64, ptr %23, align 8, !tbaa !9
  %323 = mul nsw i64 %321, %322
  %324 = add nsw i64 %319, %323
  %325 = getelementptr inbounds double, ptr %318, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !11
  store double %326, ptr %30, align 8, !tbaa !11
  %327 = load double, ptr %30, align 8, !tbaa !11
  %328 = fcmp oge double %327, 0.000000e+00
  br i1 %328, label %329, label %331

329:                                              ; preds = %302
  %330 = load double, ptr %30, align 8, !tbaa !11
  br label %334

331:                                              ; preds = %302
  %332 = load double, ptr %30, align 8, !tbaa !11
  %333 = fneg double %332
  br label %334

334:                                              ; preds = %331, %329
  %335 = phi double [ %330, %329 ], [ %333, %331 ]
  store double %335, ptr %53, align 8, !tbaa !11
  %336 = load i64, ptr %47, align 8, !tbaa !9
  %337 = icmp sgt i64 %336, 1
  br i1 %337, label %338, label %377

338:                                              ; preds = %334
  %339 = load i64, ptr %47, align 8, !tbaa !9
  %340 = sub nsw i64 %339, 1
  store i64 %340, ptr %25, align 8, !tbaa !9
  %341 = load ptr, ptr %18, align 8, !tbaa !5
  %342 = load i64, ptr %45, align 8, !tbaa !9
  %343 = sub nsw i64 %342, 1
  %344 = load i64, ptr %23, align 8, !tbaa !9
  %345 = mul nsw i64 %343, %344
  %346 = add nsw i64 %345, 1
  %347 = getelementptr inbounds double, ptr %341, i64 %346
  %348 = call i64 @f2c_idamax(ptr noundef %25, ptr noundef %347, ptr noundef @c__1)
  store i64 %348, ptr %48, align 8, !tbaa !9
  %349 = load double, ptr %53, align 8, !tbaa !11
  store double %349, ptr %31, align 8, !tbaa !11
  %350 = load ptr, ptr %18, align 8, !tbaa !5
  %351 = load i64, ptr %48, align 8, !tbaa !9
  %352 = load i64, ptr %45, align 8, !tbaa !9
  %353 = sub nsw i64 %352, 1
  %354 = load i64, ptr %23, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %351, %355
  %357 = getelementptr inbounds double, ptr %350, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !11
  store double %358, ptr %30, align 8, !tbaa !11
  %359 = load double, ptr %30, align 8, !tbaa !11
  %360 = fcmp oge double %359, 0.000000e+00
  br i1 %360, label %361, label %363

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

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

366:                                              ; preds = %363, %361
  %367 = phi double [ %362, %361 ], [ %365, %363 ]
  store double %367, ptr %32, align 8, !tbaa !11
  %368 = load double, ptr %31, align 8, !tbaa !11
  %369 = load double, ptr %32, align 8, !tbaa !11
  %370 = fcmp oge double %368, %369
  br i1 %370, label %371, label %373

371:                                              ; preds = %366
  %372 = load double, ptr %31, align 8, !tbaa !11
  br label %375

373:                                              ; preds = %366
  %374 = load double, ptr %32, align 8, !tbaa !11
  br label %375

375:                                              ; preds = %373, %371
  %376 = phi double [ %372, %371 ], [ %374, %373 ]
  store double %376, ptr %53, align 8, !tbaa !11
  br label %377

377:                                              ; preds = %375, %334
  %378 = load double, ptr %51, align 8, !tbaa !11
  %379 = load double, ptr %49, align 8, !tbaa !11
  %380 = load double, ptr %52, align 8, !tbaa !11
  %381 = fmul double %379, %380
  %382 = load double, ptr %52, align 8, !tbaa !11
  %383 = load double, ptr %53, align 8, !tbaa !11
  %384 = fdiv double %382, %383
  %385 = fmul double %381, %384
  %386 = fcmp oge double %378, %385
  br i1 %386, label %387, label %389

387:                                              ; preds = %377
  %388 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %388, ptr %44, align 8, !tbaa !9
  br label %431

389:                                              ; preds = %377
  %390 = load ptr, ptr %18, align 8, !tbaa !5
  %391 = load i64, ptr %47, align 8, !tbaa !9
  %392 = load i64, ptr %45, align 8, !tbaa !9
  %393 = sub nsw i64 %392, 1
  %394 = load i64, ptr %23, align 8, !tbaa !9
  %395 = mul nsw i64 %393, %394
  %396 = add nsw i64 %391, %395
  %397 = getelementptr inbounds double, ptr %390, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !11
  store double %398, ptr %30, align 8, !tbaa !11
  %399 = load double, ptr %30, align 8, !tbaa !11
  %400 = fcmp oge double %399, 0.000000e+00
  br i1 %400, label %401, label %403

401:                                              ; preds = %389
  %402 = load double, ptr %30, align 8, !tbaa !11
  br label %406

403:                                              ; preds = %389
  %404 = load double, ptr %30, align 8, !tbaa !11
  %405 = fneg double %404
  br label %406

406:                                              ; preds = %403, %401
  %407 = phi double [ %402, %401 ], [ %405, %403 ]
  %408 = load double, ptr %49, align 8, !tbaa !11
  %409 = load double, ptr %53, align 8, !tbaa !11
  %410 = fmul double %408, %409
  %411 = fcmp oge double %407, %410
  br i1 %411, label %412, label %428

412:                                              ; preds = %406
  %413 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %413, ptr %44, align 8, !tbaa !9
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load i64, ptr %45, align 8, !tbaa !9
  %416 = sub nsw i64 %415, 1
  %417 = load i64, ptr %23, align 8, !tbaa !9
  %418 = mul nsw i64 %416, %417
  %419 = add nsw i64 %418, 1
  %420 = getelementptr inbounds double, ptr %414, i64 %419
  %421 = load ptr, ptr %18, align 8, !tbaa !5
  %422 = load i64, ptr %45, align 8, !tbaa !9
  %423 = load i64, ptr %23, align 8, !tbaa !9
  %424 = mul nsw i64 %422, %423
  %425 = add nsw i64 %424, 1
  %426 = getelementptr inbounds double, ptr %421, i64 %425
  %427 = call i32 @f2c_dcopy(ptr noundef %34, ptr noundef %420, ptr noundef @c__1, ptr noundef %426, ptr noundef @c__1)
  br label %430

428:                                              ; preds = %406
  %429 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %429, ptr %44, align 8, !tbaa !9
  store i64 2, ptr %50, align 8, !tbaa !9
  br label %430

430:                                              ; preds = %428, %412
  br label %431

431:                                              ; preds = %430, %387
  br label %432

432:                                              ; preds = %431, %229
  %433 = load i64, ptr %34, align 8, !tbaa !9
  %434 = load i64, ptr %50, align 8, !tbaa !9
  %435 = sub nsw i64 %433, %434
  %436 = add nsw i64 %435, 1
  store i64 %436, ptr %42, align 8, !tbaa !9
  %437 = load ptr, ptr %13, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = load i64, ptr %42, align 8, !tbaa !9
  %440 = add nsw i64 %438, %439
  %441 = load ptr, ptr %12, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = sub nsw i64 %440, %442
  store i64 %443, ptr %46, align 8, !tbaa !9
  %444 = load i64, ptr %44, align 8, !tbaa !9
  %445 = load i64, ptr %42, align 8, !tbaa !9
  %446 = icmp ne i64 %444, %445
  br i1 %446, label %447, label %542

447:                                              ; preds = %432
  %448 = load ptr, ptr %15, align 8, !tbaa !5
  %449 = load i64, ptr %42, align 8, !tbaa !9
  %450 = load i64, ptr %34, align 8, !tbaa !9
  %451 = load i64, ptr %21, align 8, !tbaa !9
  %452 = mul nsw i64 %450, %451
  %453 = add nsw i64 %449, %452
  %454 = getelementptr inbounds double, ptr %448, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !11
  %456 = load ptr, ptr %15, align 8, !tbaa !5
  %457 = load i64, ptr %44, align 8, !tbaa !9
  %458 = load i64, ptr %34, align 8, !tbaa !9
  %459 = load i64, ptr %21, align 8, !tbaa !9
  %460 = mul nsw i64 %458, %459
  %461 = add nsw i64 %457, %460
  %462 = getelementptr inbounds double, ptr %456, i64 %461
  store double %455, ptr %462, align 8, !tbaa !11
  %463 = load i64, ptr %34, align 8, !tbaa !9
  %464 = sub nsw i64 %463, 1
  %465 = load i64, ptr %44, align 8, !tbaa !9
  %466 = sub nsw i64 %464, %465
  store i64 %466, ptr %25, align 8, !tbaa !9
  %467 = load ptr, ptr %15, align 8, !tbaa !5
  %468 = load i64, ptr %44, align 8, !tbaa !9
  %469 = add nsw i64 %468, 1
  %470 = load i64, ptr %42, align 8, !tbaa !9
  %471 = load i64, ptr %21, align 8, !tbaa !9
  %472 = mul nsw i64 %470, %471
  %473 = add nsw i64 %469, %472
  %474 = getelementptr inbounds double, ptr %467, i64 %473
  %475 = load ptr, ptr %15, align 8, !tbaa !5
  %476 = load i64, ptr %44, align 8, !tbaa !9
  %477 = load i64, ptr %44, align 8, !tbaa !9
  %478 = add nsw i64 %477, 1
  %479 = load i64, ptr %21, align 8, !tbaa !9
  %480 = mul nsw i64 %478, %479
  %481 = add nsw i64 %476, %480
  %482 = getelementptr inbounds double, ptr %475, i64 %481
  %483 = load ptr, ptr %16, align 8, !tbaa !5
  %484 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %474, ptr noundef @c__1, ptr noundef %482, ptr noundef %483)
  %485 = load ptr, ptr %15, align 8, !tbaa !5
  %486 = load i64, ptr %42, align 8, !tbaa !9
  %487 = load i64, ptr %21, align 8, !tbaa !9
  %488 = mul nsw i64 %486, %487
  %489 = add nsw i64 %488, 1
  %490 = getelementptr inbounds double, ptr %485, i64 %489
  %491 = load ptr, ptr %15, align 8, !tbaa !5
  %492 = load i64, ptr %44, align 8, !tbaa !9
  %493 = load i64, ptr %21, align 8, !tbaa !9
  %494 = mul nsw i64 %492, %493
  %495 = add nsw i64 %494, 1
  %496 = getelementptr inbounds double, ptr %491, i64 %495
  %497 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %490, ptr noundef @c__1, ptr noundef %496, ptr noundef @c__1)
  %498 = load ptr, ptr %12, align 8, !tbaa !5
  %499 = load i64, ptr %498, align 8, !tbaa !9
  %500 = load i64, ptr %42, align 8, !tbaa !9
  %501 = sub nsw i64 %499, %500
  %502 = add nsw i64 %501, 1
  store i64 %502, ptr %25, align 8, !tbaa !9
  %503 = load ptr, ptr %15, align 8, !tbaa !5
  %504 = load i64, ptr %42, align 8, !tbaa !9
  %505 = load i64, ptr %42, align 8, !tbaa !9
  %506 = load i64, ptr %21, align 8, !tbaa !9
  %507 = mul nsw i64 %505, %506
  %508 = add nsw i64 %504, %507
  %509 = getelementptr inbounds double, ptr %503, i64 %508
  %510 = load ptr, ptr %16, align 8, !tbaa !5
  %511 = load ptr, ptr %15, align 8, !tbaa !5
  %512 = load i64, ptr %44, align 8, !tbaa !9
  %513 = load i64, ptr %42, align 8, !tbaa !9
  %514 = load i64, ptr %21, align 8, !tbaa !9
  %515 = mul nsw i64 %513, %514
  %516 = add nsw i64 %512, %515
  %517 = getelementptr inbounds double, ptr %511, i64 %516
  %518 = load ptr, ptr %16, align 8, !tbaa !5
  %519 = call i32 @f2c_dswap(ptr noundef %25, ptr noundef %509, ptr noundef %510, ptr noundef %517, ptr noundef %518)
  %520 = load ptr, ptr %12, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  %522 = load i64, ptr %42, align 8, !tbaa !9
  %523 = sub nsw i64 %521, %522
  %524 = add nsw i64 %523, 1
  store i64 %524, ptr %25, align 8, !tbaa !9
  %525 = load ptr, ptr %18, align 8, !tbaa !5
  %526 = load i64, ptr %42, align 8, !tbaa !9
  %527 = load i64, ptr %46, align 8, !tbaa !9
  %528 = load i64, ptr %23, align 8, !tbaa !9
  %529 = mul nsw i64 %527, %528
  %530 = add nsw i64 %526, %529
  %531 = getelementptr inbounds double, ptr %525, i64 %530
  %532 = load ptr, ptr %19, align 8, !tbaa !5
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = load i64, ptr %44, align 8, !tbaa !9
  %535 = load i64, ptr %46, align 8, !tbaa !9
  %536 = load i64, ptr %23, align 8, !tbaa !9
  %537 = mul nsw i64 %535, %536
  %538 = add nsw i64 %534, %537
  %539 = getelementptr inbounds double, ptr %533, i64 %538
  %540 = load ptr, ptr %19, align 8, !tbaa !5
  %541 = call i32 @f2c_dswap(ptr noundef %25, ptr noundef %531, ptr noundef %532, ptr noundef %539, ptr noundef %540)
  br label %542

542:                                              ; preds = %447, %432
  %543 = load i64, ptr %50, align 8, !tbaa !9
  %544 = icmp eq i64 %543, 1
  br i1 %544, label %545, label %577

545:                                              ; preds = %542
  %546 = load ptr, ptr %18, align 8, !tbaa !5
  %547 = load i64, ptr %45, align 8, !tbaa !9
  %548 = load i64, ptr %23, align 8, !tbaa !9
  %549 = mul nsw i64 %547, %548
  %550 = add nsw i64 %549, 1
  %551 = getelementptr inbounds double, ptr %546, i64 %550
  %552 = load ptr, ptr %15, align 8, !tbaa !5
  %553 = load i64, ptr %34, align 8, !tbaa !9
  %554 = load i64, ptr %21, align 8, !tbaa !9
  %555 = mul nsw i64 %553, %554
  %556 = add nsw i64 %555, 1
  %557 = getelementptr inbounds double, ptr %552, i64 %556
  %558 = call i32 @f2c_dcopy(ptr noundef %34, ptr noundef %551, ptr noundef @c__1, ptr noundef %557, ptr noundef @c__1)
  %559 = load ptr, ptr %15, align 8, !tbaa !5
  %560 = load i64, ptr %34, align 8, !tbaa !9
  %561 = load i64, ptr %34, align 8, !tbaa !9
  %562 = load i64, ptr %21, align 8, !tbaa !9
  %563 = mul nsw i64 %561, %562
  %564 = add nsw i64 %560, %563
  %565 = getelementptr inbounds double, ptr %559, i64 %564
  %566 = load double, ptr %565, align 8, !tbaa !11
  %567 = fdiv double 1.000000e+00, %566
  store double %567, ptr %36, align 8, !tbaa !11
  %568 = load i64, ptr %34, align 8, !tbaa !9
  %569 = sub nsw i64 %568, 1
  store i64 %569, ptr %25, align 8, !tbaa !9
  %570 = load ptr, ptr %15, align 8, !tbaa !5
  %571 = load i64, ptr %34, align 8, !tbaa !9
  %572 = load i64, ptr %21, align 8, !tbaa !9
  %573 = mul nsw i64 %571, %572
  %574 = add nsw i64 %573, 1
  %575 = getelementptr inbounds double, ptr %570, i64 %574
  %576 = call i32 @f2c_dscal(ptr noundef %25, ptr noundef %36, ptr noundef %575, ptr noundef @c__1)
  br label %741

577:                                              ; preds = %542
  %578 = load i64, ptr %34, align 8, !tbaa !9
  %579 = icmp sgt i64 %578, 2
  br i1 %579, label %580, label %689

580:                                              ; preds = %577
  %581 = load ptr, ptr %18, align 8, !tbaa !5
  %582 = load i64, ptr %34, align 8, !tbaa !9
  %583 = sub nsw i64 %582, 1
  %584 = load i64, ptr %45, align 8, !tbaa !9
  %585 = load i64, ptr %23, align 8, !tbaa !9
  %586 = mul nsw i64 %584, %585
  %587 = add nsw i64 %583, %586
  %588 = getelementptr inbounds double, ptr %581, i64 %587
  %589 = load double, ptr %588, align 8, !tbaa !11
  store double %589, ptr %38, align 8, !tbaa !11
  %590 = load ptr, ptr %18, align 8, !tbaa !5
  %591 = load i64, ptr %34, align 8, !tbaa !9
  %592 = load i64, ptr %45, align 8, !tbaa !9
  %593 = load i64, ptr %23, align 8, !tbaa !9
  %594 = mul nsw i64 %592, %593
  %595 = add nsw i64 %591, %594
  %596 = getelementptr inbounds double, ptr %590, i64 %595
  %597 = load double, ptr %596, align 8, !tbaa !11
  %598 = load double, ptr %38, align 8, !tbaa !11
  %599 = fdiv double %597, %598
  store double %599, ptr %37, align 8, !tbaa !11
  %600 = load ptr, ptr %18, align 8, !tbaa !5
  %601 = load i64, ptr %34, align 8, !tbaa !9
  %602 = sub nsw i64 %601, 1
  %603 = load i64, ptr %45, align 8, !tbaa !9
  %604 = sub nsw i64 %603, 1
  %605 = load i64, ptr %23, align 8, !tbaa !9
  %606 = mul nsw i64 %604, %605
  %607 = add nsw i64 %602, %606
  %608 = getelementptr inbounds double, ptr %600, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  %610 = load double, ptr %38, align 8, !tbaa !11
  %611 = fdiv double %609, %610
  store double %611, ptr %39, align 8, !tbaa !11
  %612 = load double, ptr %37, align 8, !tbaa !11
  %613 = load double, ptr %39, align 8, !tbaa !11
  %614 = call double @llvm.fmuladd.f64(double %612, double %613, double -1.000000e+00)
  %615 = fdiv double 1.000000e+00, %614
  store double %615, ptr %35, align 8, !tbaa !11
  %616 = load double, ptr %35, align 8, !tbaa !11
  %617 = load double, ptr %38, align 8, !tbaa !11
  %618 = fdiv double %616, %617
  store double %618, ptr %38, align 8, !tbaa !11
  %619 = load i64, ptr %34, align 8, !tbaa !9
  %620 = sub nsw i64 %619, 2
  store i64 %620, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %621

621:                                              ; preds = %685, %580
  %622 = load i64, ptr %33, align 8, !tbaa !9
  %623 = load i64, ptr %25, align 8, !tbaa !9
  %624 = icmp sle i64 %622, %623
  br i1 %624, label %625, label %688

625:                                              ; preds = %621
  %626 = load double, ptr %38, align 8, !tbaa !11
  %627 = load double, ptr %37, align 8, !tbaa !11
  %628 = load ptr, ptr %18, align 8, !tbaa !5
  %629 = load i64, ptr %33, align 8, !tbaa !9
  %630 = load i64, ptr %45, align 8, !tbaa !9
  %631 = sub nsw i64 %630, 1
  %632 = load i64, ptr %23, align 8, !tbaa !9
  %633 = mul nsw i64 %631, %632
  %634 = add nsw i64 %629, %633
  %635 = getelementptr inbounds double, ptr %628, i64 %634
  %636 = load double, ptr %635, align 8, !tbaa !11
  %637 = load ptr, ptr %18, align 8, !tbaa !5
  %638 = load i64, ptr %33, align 8, !tbaa !9
  %639 = load i64, ptr %45, align 8, !tbaa !9
  %640 = load i64, ptr %23, align 8, !tbaa !9
  %641 = mul nsw i64 %639, %640
  %642 = add nsw i64 %638, %641
  %643 = getelementptr inbounds double, ptr %637, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = fneg double %644
  %646 = call double @llvm.fmuladd.f64(double %627, double %636, double %645)
  %647 = fmul double %626, %646
  %648 = load ptr, ptr %15, align 8, !tbaa !5
  %649 = load i64, ptr %33, align 8, !tbaa !9
  %650 = load i64, ptr %34, align 8, !tbaa !9
  %651 = sub nsw i64 %650, 1
  %652 = load i64, ptr %21, align 8, !tbaa !9
  %653 = mul nsw i64 %651, %652
  %654 = add nsw i64 %649, %653
  %655 = getelementptr inbounds double, ptr %648, i64 %654
  store double %647, ptr %655, align 8, !tbaa !11
  %656 = load double, ptr %38, align 8, !tbaa !11
  %657 = load double, ptr %39, align 8, !tbaa !11
  %658 = load ptr, ptr %18, align 8, !tbaa !5
  %659 = load i64, ptr %33, align 8, !tbaa !9
  %660 = load i64, ptr %45, align 8, !tbaa !9
  %661 = load i64, ptr %23, align 8, !tbaa !9
  %662 = mul nsw i64 %660, %661
  %663 = add nsw i64 %659, %662
  %664 = getelementptr inbounds double, ptr %658, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !11
  %666 = load ptr, ptr %18, align 8, !tbaa !5
  %667 = load i64, ptr %33, align 8, !tbaa !9
  %668 = load i64, ptr %45, align 8, !tbaa !9
  %669 = sub nsw i64 %668, 1
  %670 = load i64, ptr %23, align 8, !tbaa !9
  %671 = mul nsw i64 %669, %670
  %672 = add nsw i64 %667, %671
  %673 = getelementptr inbounds double, ptr %666, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = fneg double %674
  %676 = call double @llvm.fmuladd.f64(double %657, double %665, double %675)
  %677 = fmul double %656, %676
  %678 = load ptr, ptr %15, align 8, !tbaa !5
  %679 = load i64, ptr %33, align 8, !tbaa !9
  %680 = load i64, ptr %34, align 8, !tbaa !9
  %681 = load i64, ptr %21, align 8, !tbaa !9
  %682 = mul nsw i64 %680, %681
  %683 = add nsw i64 %679, %682
  %684 = getelementptr inbounds double, ptr %678, i64 %683
  store double %677, ptr %684, align 8, !tbaa !11
  br label %685

685:                                              ; preds = %625
  %686 = load i64, ptr %33, align 8, !tbaa !9
  %687 = add nsw i64 %686, 1
  store i64 %687, ptr %33, align 8, !tbaa !9
  br label %621, !llvm.loop !13

688:                                              ; preds = %621
  br label %689

689:                                              ; preds = %688, %577
  %690 = load ptr, ptr %18, align 8, !tbaa !5
  %691 = load i64, ptr %34, align 8, !tbaa !9
  %692 = sub nsw i64 %691, 1
  %693 = load i64, ptr %45, align 8, !tbaa !9
  %694 = sub nsw i64 %693, 1
  %695 = load i64, ptr %23, align 8, !tbaa !9
  %696 = mul nsw i64 %694, %695
  %697 = add nsw i64 %692, %696
  %698 = getelementptr inbounds double, ptr %690, i64 %697
  %699 = load double, ptr %698, align 8, !tbaa !11
  %700 = load ptr, ptr %15, align 8, !tbaa !5
  %701 = load i64, ptr %34, align 8, !tbaa !9
  %702 = sub nsw i64 %701, 1
  %703 = load i64, ptr %34, align 8, !tbaa !9
  %704 = sub nsw i64 %703, 1
  %705 = load i64, ptr %21, align 8, !tbaa !9
  %706 = mul nsw i64 %704, %705
  %707 = add nsw i64 %702, %706
  %708 = getelementptr inbounds double, ptr %700, i64 %707
  store double %699, ptr %708, align 8, !tbaa !11
  %709 = load ptr, ptr %18, align 8, !tbaa !5
  %710 = load i64, ptr %34, align 8, !tbaa !9
  %711 = sub nsw i64 %710, 1
  %712 = load i64, ptr %45, align 8, !tbaa !9
  %713 = load i64, ptr %23, align 8, !tbaa !9
  %714 = mul nsw i64 %712, %713
  %715 = add nsw i64 %711, %714
  %716 = getelementptr inbounds double, ptr %709, i64 %715
  %717 = load double, ptr %716, align 8, !tbaa !11
  %718 = load ptr, ptr %15, align 8, !tbaa !5
  %719 = load i64, ptr %34, align 8, !tbaa !9
  %720 = sub nsw i64 %719, 1
  %721 = load i64, ptr %34, align 8, !tbaa !9
  %722 = load i64, ptr %21, align 8, !tbaa !9
  %723 = mul nsw i64 %721, %722
  %724 = add nsw i64 %720, %723
  %725 = getelementptr inbounds double, ptr %718, i64 %724
  store double %717, ptr %725, align 8, !tbaa !11
  %726 = load ptr, ptr %18, align 8, !tbaa !5
  %727 = load i64, ptr %34, align 8, !tbaa !9
  %728 = load i64, ptr %45, align 8, !tbaa !9
  %729 = load i64, ptr %23, align 8, !tbaa !9
  %730 = mul nsw i64 %728, %729
  %731 = add nsw i64 %727, %730
  %732 = getelementptr inbounds double, ptr %726, i64 %731
  %733 = load double, ptr %732, align 8, !tbaa !11
  %734 = load ptr, ptr %15, align 8, !tbaa !5
  %735 = load i64, ptr %34, align 8, !tbaa !9
  %736 = load i64, ptr %34, align 8, !tbaa !9
  %737 = load i64, ptr %21, align 8, !tbaa !9
  %738 = mul nsw i64 %736, %737
  %739 = add nsw i64 %735, %738
  %740 = getelementptr inbounds double, ptr %734, i64 %739
  store double %733, ptr %740, align 8, !tbaa !11
  br label %741

741:                                              ; preds = %689, %545
  br label %742

742:                                              ; preds = %741, %221
  %743 = load i64, ptr %50, align 8, !tbaa !9
  %744 = icmp eq i64 %743, 1
  br i1 %744, label %745, label %750

745:                                              ; preds = %742
  %746 = load i64, ptr %44, align 8, !tbaa !9
  %747 = load ptr, ptr %17, align 8, !tbaa !5
  %748 = load i64, ptr %34, align 8, !tbaa !9
  %749 = getelementptr inbounds i64, ptr %747, i64 %748
  store i64 %746, ptr %749, align 8, !tbaa !9
  br label %762

750:                                              ; preds = %742
  %751 = load i64, ptr %44, align 8, !tbaa !9
  %752 = sub nsw i64 0, %751
  %753 = load ptr, ptr %17, align 8, !tbaa !5
  %754 = load i64, ptr %34, align 8, !tbaa !9
  %755 = getelementptr inbounds i64, ptr %753, i64 %754
  store i64 %752, ptr %755, align 8, !tbaa !9
  %756 = load i64, ptr %44, align 8, !tbaa !9
  %757 = sub nsw i64 0, %756
  %758 = load ptr, ptr %17, align 8, !tbaa !5
  %759 = load i64, ptr %34, align 8, !tbaa !9
  %760 = sub nsw i64 %759, 1
  %761 = getelementptr inbounds i64, ptr %758, i64 %760
  store i64 %757, ptr %761, align 8, !tbaa !9
  br label %762

762:                                              ; preds = %750, %745
  %763 = load i64, ptr %50, align 8, !tbaa !9
  %764 = load i64, ptr %34, align 8, !tbaa !9
  %765 = sub nsw i64 %764, %763
  store i64 %765, ptr %34, align 8, !tbaa !9
  br label %82

766:                                              ; preds = %107
  %767 = load ptr, ptr %13, align 8, !tbaa !5
  %768 = load i64, ptr %767, align 8, !tbaa !9
  %769 = sub nsw i64 0, %768
  store i64 %769, ptr %25, align 8, !tbaa !9
  %770 = load i64, ptr %34, align 8, !tbaa !9
  %771 = sub nsw i64 %770, 1
  %772 = load ptr, ptr %13, align 8, !tbaa !5
  %773 = load i64, ptr %772, align 8, !tbaa !9
  %774 = sdiv i64 %771, %773
  %775 = load ptr, ptr %13, align 8, !tbaa !5
  %776 = load i64, ptr %775, align 8, !tbaa !9
  %777 = mul nsw i64 %774, %776
  %778 = add nsw i64 %777, 1
  store i64 %778, ptr %33, align 8, !tbaa !9
  br label %779

779:                                              ; preds = %888, %766
  %780 = load i64, ptr %25, align 8, !tbaa !9
  %781 = icmp slt i64 %780, 0
  br i1 %781, label %782, label %786

782:                                              ; preds = %779
  %783 = load i64, ptr %33, align 8, !tbaa !9
  %784 = icmp sge i64 %783, 1
  %785 = zext i1 %784 to i32
  br label %790

786:                                              ; preds = %779
  %787 = load i64, ptr %33, align 8, !tbaa !9
  %788 = icmp sle i64 %787, 1
  %789 = zext i1 %788 to i32
  br label %790

790:                                              ; preds = %786, %782
  %791 = phi i32 [ %785, %782 ], [ %789, %786 ]
  %792 = icmp ne i32 %791, 0
  br i1 %792, label %793, label %892

793:                                              ; preds = %790
  %794 = load ptr, ptr %13, align 8, !tbaa !5
  %795 = load i64, ptr %794, align 8, !tbaa !9
  store i64 %795, ptr %26, align 8, !tbaa !9
  %796 = load i64, ptr %34, align 8, !tbaa !9
  %797 = load i64, ptr %33, align 8, !tbaa !9
  %798 = sub nsw i64 %796, %797
  %799 = add nsw i64 %798, 1
  store i64 %799, ptr %27, align 8, !tbaa !9
  %800 = load i64, ptr %26, align 8, !tbaa !9
  %801 = load i64, ptr %27, align 8, !tbaa !9
  %802 = icmp sle i64 %800, %801
  br i1 %802, label %803, label %805

803:                                              ; preds = %793
  %804 = load i64, ptr %26, align 8, !tbaa !9
  br label %807

805:                                              ; preds = %793
  %806 = load i64, ptr %27, align 8, !tbaa !9
  br label %807

807:                                              ; preds = %805, %803
  %808 = phi i64 [ %804, %803 ], [ %806, %805 ]
  store i64 %808, ptr %40, align 8, !tbaa !9
  %809 = load i64, ptr %33, align 8, !tbaa !9
  %810 = load i64, ptr %40, align 8, !tbaa !9
  %811 = add nsw i64 %809, %810
  %812 = sub nsw i64 %811, 1
  store i64 %812, ptr %26, align 8, !tbaa !9
  %813 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %813, ptr %41, align 8, !tbaa !9
  br label %814

814:                                              ; preds = %853, %807
  %815 = load i64, ptr %41, align 8, !tbaa !9
  %816 = load i64, ptr %26, align 8, !tbaa !9
  %817 = icmp sle i64 %815, %816
  br i1 %817, label %818, label %856

818:                                              ; preds = %814
  %819 = load i64, ptr %41, align 8, !tbaa !9
  %820 = load i64, ptr %33, align 8, !tbaa !9
  %821 = sub nsw i64 %819, %820
  %822 = add nsw i64 %821, 1
  store i64 %822, ptr %27, align 8, !tbaa !9
  %823 = load ptr, ptr %12, align 8, !tbaa !5
  %824 = load i64, ptr %823, align 8, !tbaa !9
  %825 = load i64, ptr %34, align 8, !tbaa !9
  %826 = sub nsw i64 %824, %825
  store i64 %826, ptr %28, align 8, !tbaa !9
  %827 = load ptr, ptr %15, align 8, !tbaa !5
  %828 = load i64, ptr %33, align 8, !tbaa !9
  %829 = load i64, ptr %34, align 8, !tbaa !9
  %830 = add nsw i64 %829, 1
  %831 = load i64, ptr %21, align 8, !tbaa !9
  %832 = mul nsw i64 %830, %831
  %833 = add nsw i64 %828, %832
  %834 = getelementptr inbounds double, ptr %827, i64 %833
  %835 = load ptr, ptr %16, align 8, !tbaa !5
  %836 = load ptr, ptr %18, align 8, !tbaa !5
  %837 = load i64, ptr %41, align 8, !tbaa !9
  %838 = load i64, ptr %45, align 8, !tbaa !9
  %839 = add nsw i64 %838, 1
  %840 = load i64, ptr %23, align 8, !tbaa !9
  %841 = mul nsw i64 %839, %840
  %842 = add nsw i64 %837, %841
  %843 = getelementptr inbounds double, ptr %836, i64 %842
  %844 = load ptr, ptr %19, align 8, !tbaa !5
  %845 = load ptr, ptr %15, align 8, !tbaa !5
  %846 = load i64, ptr %33, align 8, !tbaa !9
  %847 = load i64, ptr %41, align 8, !tbaa !9
  %848 = load i64, ptr %21, align 8, !tbaa !9
  %849 = mul nsw i64 %847, %848
  %850 = add nsw i64 %846, %849
  %851 = getelementptr inbounds double, ptr %845, i64 %850
  %852 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %27, ptr noundef %28, ptr noundef @c_b8, ptr noundef %834, ptr noundef %835, ptr noundef %843, ptr noundef %844, ptr noundef @c_b9, ptr noundef %851, ptr noundef @c__1)
  br label %853

853:                                              ; preds = %818
  %854 = load i64, ptr %41, align 8, !tbaa !9
  %855 = add nsw i64 %854, 1
  store i64 %855, ptr %41, align 8, !tbaa !9
  br label %814, !llvm.loop !15

856:                                              ; preds = %814
  %857 = load i64, ptr %33, align 8, !tbaa !9
  %858 = sub nsw i64 %857, 1
  store i64 %858, ptr %26, align 8, !tbaa !9
  %859 = load ptr, ptr %12, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = load i64, ptr %34, align 8, !tbaa !9
  %862 = sub nsw i64 %860, %861
  store i64 %862, ptr %27, align 8, !tbaa !9
  %863 = load ptr, ptr %15, align 8, !tbaa !5
  %864 = load i64, ptr %34, align 8, !tbaa !9
  %865 = add nsw i64 %864, 1
  %866 = load i64, ptr %21, align 8, !tbaa !9
  %867 = mul nsw i64 %865, %866
  %868 = add nsw i64 %867, 1
  %869 = getelementptr inbounds double, ptr %863, i64 %868
  %870 = load ptr, ptr %16, align 8, !tbaa !5
  %871 = load ptr, ptr %18, align 8, !tbaa !5
  %872 = load i64, ptr %33, align 8, !tbaa !9
  %873 = load i64, ptr %45, align 8, !tbaa !9
  %874 = add nsw i64 %873, 1
  %875 = load i64, ptr %23, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %872, %876
  %878 = getelementptr inbounds double, ptr %871, i64 %877
  %879 = load ptr, ptr %19, align 8, !tbaa !5
  %880 = load ptr, ptr %15, align 8, !tbaa !5
  %881 = load i64, ptr %33, align 8, !tbaa !9
  %882 = load i64, ptr %21, align 8, !tbaa !9
  %883 = mul nsw i64 %881, %882
  %884 = add nsw i64 %883, 1
  %885 = getelementptr inbounds double, ptr %880, i64 %884
  %886 = load ptr, ptr %16, align 8, !tbaa !5
  %887 = call i32 @f2c_dgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %26, ptr noundef %40, ptr noundef %27, ptr noundef @c_b8, ptr noundef %869, ptr noundef %870, ptr noundef %878, ptr noundef %879, ptr noundef @c_b9, ptr noundef %885, ptr noundef %886)
  br label %888

888:                                              ; preds = %856
  %889 = load i64, ptr %25, align 8, !tbaa !9
  %890 = load i64, ptr %33, align 8, !tbaa !9
  %891 = add nsw i64 %890, %889
  store i64 %891, ptr %33, align 8, !tbaa !9
  br label %779, !llvm.loop !16

892:                                              ; preds = %790
  %893 = load i64, ptr %34, align 8, !tbaa !9
  %894 = add nsw i64 %893, 1
  store i64 %894, ptr %33, align 8, !tbaa !9
  br label %895

895:                                              ; preds = %947, %892
  %896 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %896, ptr %41, align 8, !tbaa !9
  %897 = load ptr, ptr %17, align 8, !tbaa !5
  %898 = load i64, ptr %33, align 8, !tbaa !9
  %899 = getelementptr inbounds i64, ptr %897, i64 %898
  %900 = load i64, ptr %899, align 8, !tbaa !9
  store i64 %900, ptr %43, align 8, !tbaa !9
  %901 = load i64, ptr %43, align 8, !tbaa !9
  %902 = icmp slt i64 %901, 0
  br i1 %902, label %903, label %908

903:                                              ; preds = %895
  %904 = load i64, ptr %43, align 8, !tbaa !9
  %905 = sub nsw i64 0, %904
  store i64 %905, ptr %43, align 8, !tbaa !9
  %906 = load i64, ptr %33, align 8, !tbaa !9
  %907 = add nsw i64 %906, 1
  store i64 %907, ptr %33, align 8, !tbaa !9
  br label %908

908:                                              ; preds = %903, %895
  %909 = load i64, ptr %33, align 8, !tbaa !9
  %910 = add nsw i64 %909, 1
  store i64 %910, ptr %33, align 8, !tbaa !9
  %911 = load i64, ptr %43, align 8, !tbaa !9
  %912 = load i64, ptr %41, align 8, !tbaa !9
  %913 = icmp ne i64 %911, %912
  br i1 %913, label %914, label %942

914:                                              ; preds = %908
  %915 = load i64, ptr %33, align 8, !tbaa !9
  %916 = load ptr, ptr %12, align 8, !tbaa !5
  %917 = load i64, ptr %916, align 8, !tbaa !9
  %918 = icmp sle i64 %915, %917
  br i1 %918, label %919, label %942

919:                                              ; preds = %914
  %920 = load ptr, ptr %12, align 8, !tbaa !5
  %921 = load i64, ptr %920, align 8, !tbaa !9
  %922 = load i64, ptr %33, align 8, !tbaa !9
  %923 = sub nsw i64 %921, %922
  %924 = add nsw i64 %923, 1
  store i64 %924, ptr %25, align 8, !tbaa !9
  %925 = load ptr, ptr %15, align 8, !tbaa !5
  %926 = load i64, ptr %43, align 8, !tbaa !9
  %927 = load i64, ptr %33, align 8, !tbaa !9
  %928 = load i64, ptr %21, align 8, !tbaa !9
  %929 = mul nsw i64 %927, %928
  %930 = add nsw i64 %926, %929
  %931 = getelementptr inbounds double, ptr %925, i64 %930
  %932 = load ptr, ptr %16, align 8, !tbaa !5
  %933 = load ptr, ptr %15, align 8, !tbaa !5
  %934 = load i64, ptr %41, align 8, !tbaa !9
  %935 = load i64, ptr %33, align 8, !tbaa !9
  %936 = load i64, ptr %21, align 8, !tbaa !9
  %937 = mul nsw i64 %935, %936
  %938 = add nsw i64 %934, %937
  %939 = getelementptr inbounds double, ptr %933, i64 %938
  %940 = load ptr, ptr %16, align 8, !tbaa !5
  %941 = call i32 @f2c_dswap(ptr noundef %25, ptr noundef %931, ptr noundef %932, ptr noundef %939, ptr noundef %940)
  br label %942

942:                                              ; preds = %919, %914, %908
  %943 = load i64, ptr %33, align 8, !tbaa !9
  %944 = load ptr, ptr %12, align 8, !tbaa !5
  %945 = load i64, ptr %944, align 8, !tbaa !9
  %946 = icmp sle i64 %943, %945
  br i1 %946, label %947, label %948

947:                                              ; preds = %942
  br label %895

948:                                              ; preds = %942
  %949 = load ptr, ptr %12, align 8, !tbaa !5
  %950 = load i64, ptr %949, align 8, !tbaa !9
  %951 = load i64, ptr %34, align 8, !tbaa !9
  %952 = sub nsw i64 %950, %951
  %953 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 %952, ptr %953, align 8, !tbaa !9
  br label %1828

954:                                              ; preds = %10
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %955

955:                                              ; preds = %1651, %954
  %956 = load i64, ptr %34, align 8, !tbaa !9
  %957 = load ptr, ptr %13, align 8, !tbaa !5
  %958 = load i64, ptr %957, align 8, !tbaa !9
  %959 = icmp sge i64 %956, %958
  br i1 %959, label %960, label %966

960:                                              ; preds = %955
  %961 = load ptr, ptr %13, align 8, !tbaa !5
  %962 = load i64, ptr %961, align 8, !tbaa !9
  %963 = load ptr, ptr %12, align 8, !tbaa !5
  %964 = load i64, ptr %963, align 8, !tbaa !9
  %965 = icmp slt i64 %962, %964
  br i1 %965, label %971, label %966

966:                                              ; preds = %960, %955
  %967 = load i64, ptr %34, align 8, !tbaa !9
  %968 = load ptr, ptr %12, align 8, !tbaa !5
  %969 = load i64, ptr %968, align 8, !tbaa !9
  %970 = icmp sgt i64 %967, %969
  br i1 %970, label %971, label %972

971:                                              ; preds = %966, %960
  br label %1655

972:                                              ; preds = %966
  %973 = load ptr, ptr %12, align 8, !tbaa !5
  %974 = load i64, ptr %973, align 8, !tbaa !9
  %975 = load i64, ptr %34, align 8, !tbaa !9
  %976 = sub nsw i64 %974, %975
  %977 = add nsw i64 %976, 1
  store i64 %977, ptr %25, align 8, !tbaa !9
  %978 = load ptr, ptr %15, align 8, !tbaa !5
  %979 = load i64, ptr %34, align 8, !tbaa !9
  %980 = load i64, ptr %34, align 8, !tbaa !9
  %981 = load i64, ptr %21, align 8, !tbaa !9
  %982 = mul nsw i64 %980, %981
  %983 = add nsw i64 %979, %982
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  %985 = load ptr, ptr %18, align 8, !tbaa !5
  %986 = load i64, ptr %34, align 8, !tbaa !9
  %987 = load i64, ptr %34, align 8, !tbaa !9
  %988 = load i64, ptr %23, align 8, !tbaa !9
  %989 = mul nsw i64 %987, %988
  %990 = add nsw i64 %986, %989
  %991 = getelementptr inbounds double, ptr %985, i64 %990
  %992 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %984, ptr noundef @c__1, ptr noundef %991, ptr noundef @c__1)
  %993 = load ptr, ptr %12, align 8, !tbaa !5
  %994 = load i64, ptr %993, align 8, !tbaa !9
  %995 = load i64, ptr %34, align 8, !tbaa !9
  %996 = sub nsw i64 %994, %995
  %997 = add nsw i64 %996, 1
  store i64 %997, ptr %25, align 8, !tbaa !9
  %998 = load i64, ptr %34, align 8, !tbaa !9
  %999 = sub nsw i64 %998, 1
  store i64 %999, ptr %26, align 8, !tbaa !9
  %1000 = load ptr, ptr %15, align 8, !tbaa !5
  %1001 = load i64, ptr %34, align 8, !tbaa !9
  %1002 = load i64, ptr %21, align 8, !tbaa !9
  %1003 = add nsw i64 %1001, %1002
  %1004 = getelementptr inbounds double, ptr %1000, i64 %1003
  %1005 = load ptr, ptr %16, align 8, !tbaa !5
  %1006 = load ptr, ptr %18, align 8, !tbaa !5
  %1007 = load i64, ptr %34, align 8, !tbaa !9
  %1008 = load i64, ptr %23, align 8, !tbaa !9
  %1009 = add nsw i64 %1007, %1008
  %1010 = getelementptr inbounds double, ptr %1006, i64 %1009
  %1011 = load ptr, ptr %19, align 8, !tbaa !5
  %1012 = load ptr, ptr %18, align 8, !tbaa !5
  %1013 = load i64, ptr %34, align 8, !tbaa !9
  %1014 = load i64, ptr %34, align 8, !tbaa !9
  %1015 = load i64, ptr %23, align 8, !tbaa !9
  %1016 = mul nsw i64 %1014, %1015
  %1017 = add nsw i64 %1013, %1016
  %1018 = getelementptr inbounds double, ptr %1012, i64 %1017
  %1019 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %25, ptr noundef %26, ptr noundef @c_b8, ptr noundef %1004, ptr noundef %1005, ptr noundef %1010, ptr noundef %1011, ptr noundef @c_b9, ptr noundef %1018, ptr noundef @c__1)
  store i64 1, ptr %50, align 8, !tbaa !9
  %1020 = load ptr, ptr %18, align 8, !tbaa !5
  %1021 = load i64, ptr %34, align 8, !tbaa !9
  %1022 = load i64, ptr %34, align 8, !tbaa !9
  %1023 = load i64, ptr %23, align 8, !tbaa !9
  %1024 = mul nsw i64 %1022, %1023
  %1025 = add nsw i64 %1021, %1024
  %1026 = getelementptr inbounds double, ptr %1020, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !11
  store double %1027, ptr %30, align 8, !tbaa !11
  %1028 = load double, ptr %30, align 8, !tbaa !11
  %1029 = fcmp oge double %1028, 0.000000e+00
  br i1 %1029, label %1030, label %1032

1030:                                             ; preds = %972
  %1031 = load double, ptr %30, align 8, !tbaa !11
  br label %1035

1032:                                             ; preds = %972
  %1033 = load double, ptr %30, align 8, !tbaa !11
  %1034 = fneg double %1033
  br label %1035

1035:                                             ; preds = %1032, %1030
  %1036 = phi double [ %1031, %1030 ], [ %1034, %1032 ]
  store double %1036, ptr %51, align 8, !tbaa !11
  %1037 = load i64, ptr %34, align 8, !tbaa !9
  %1038 = load ptr, ptr %12, align 8, !tbaa !5
  %1039 = load i64, ptr %1038, align 8, !tbaa !9
  %1040 = icmp slt i64 %1037, %1039
  br i1 %1040, label %1041, label %1074

1041:                                             ; preds = %1035
  %1042 = load ptr, ptr %12, align 8, !tbaa !5
  %1043 = load i64, ptr %1042, align 8, !tbaa !9
  %1044 = load i64, ptr %34, align 8, !tbaa !9
  %1045 = sub nsw i64 %1043, %1044
  store i64 %1045, ptr %25, align 8, !tbaa !9
  %1046 = load i64, ptr %34, align 8, !tbaa !9
  %1047 = load ptr, ptr %18, align 8, !tbaa !5
  %1048 = load i64, ptr %34, align 8, !tbaa !9
  %1049 = add nsw i64 %1048, 1
  %1050 = load i64, ptr %34, align 8, !tbaa !9
  %1051 = load i64, ptr %23, align 8, !tbaa !9
  %1052 = mul nsw i64 %1050, %1051
  %1053 = add nsw i64 %1049, %1052
  %1054 = getelementptr inbounds double, ptr %1047, i64 %1053
  %1055 = call i64 @f2c_idamax(ptr noundef %25, ptr noundef %1054, ptr noundef @c__1)
  %1056 = add nsw i64 %1046, %1055
  store i64 %1056, ptr %47, align 8, !tbaa !9
  %1057 = load ptr, ptr %18, align 8, !tbaa !5
  %1058 = load i64, ptr %47, align 8, !tbaa !9
  %1059 = load i64, ptr %34, align 8, !tbaa !9
  %1060 = load i64, ptr %23, align 8, !tbaa !9
  %1061 = mul nsw i64 %1059, %1060
  %1062 = add nsw i64 %1058, %1061
  %1063 = getelementptr inbounds double, ptr %1057, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !11
  store double %1064, ptr %30, align 8, !tbaa !11
  %1065 = load double, ptr %30, align 8, !tbaa !11
  %1066 = fcmp oge double %1065, 0.000000e+00
  br i1 %1066, label %1067, label %1069

1067:                                             ; preds = %1041
  %1068 = load double, ptr %30, align 8, !tbaa !11
  br label %1072

1069:                                             ; preds = %1041
  %1070 = load double, ptr %30, align 8, !tbaa !11
  %1071 = fneg double %1070
  br label %1072

1072:                                             ; preds = %1069, %1067
  %1073 = phi double [ %1068, %1067 ], [ %1071, %1069 ]
  store double %1073, ptr %52, align 8, !tbaa !11
  br label %1075

1074:                                             ; preds = %1035
  store double 0.000000e+00, ptr %52, align 8, !tbaa !11
  br label %1075

1075:                                             ; preds = %1074, %1072
  %1076 = load double, ptr %51, align 8, !tbaa !11
  %1077 = load double, ptr %52, align 8, !tbaa !11
  %1078 = fcmp oge double %1076, %1077
  br i1 %1078, label %1079, label %1081

1079:                                             ; preds = %1075
  %1080 = load double, ptr %51, align 8, !tbaa !11
  br label %1083

1081:                                             ; preds = %1075
  %1082 = load double, ptr %52, align 8, !tbaa !11
  br label %1083

1083:                                             ; preds = %1081, %1079
  %1084 = phi double [ %1080, %1079 ], [ %1082, %1081 ]
  %1085 = fcmp oeq double %1084, 0.000000e+00
  br i1 %1085, label %1086, label %1095

1086:                                             ; preds = %1083
  %1087 = load ptr, ptr %20, align 8, !tbaa !5
  %1088 = load i64, ptr %1087, align 8, !tbaa !9
  %1089 = icmp eq i64 %1088, 0
  br i1 %1089, label %1090, label %1093

1090:                                             ; preds = %1086
  %1091 = load i64, ptr %34, align 8, !tbaa !9
  %1092 = load ptr, ptr %20, align 8, !tbaa !5
  store i64 %1091, ptr %1092, align 8, !tbaa !9
  br label %1093

1093:                                             ; preds = %1090, %1086
  %1094 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %1094, ptr %44, align 8, !tbaa !9
  br label %1631

1095:                                             ; preds = %1083
  %1096 = load double, ptr %51, align 8, !tbaa !11
  %1097 = load double, ptr %49, align 8, !tbaa !11
  %1098 = load double, ptr %52, align 8, !tbaa !11
  %1099 = fmul double %1097, %1098
  %1100 = fcmp oge double %1096, %1099
  br i1 %1100, label %1101, label %1103

1101:                                             ; preds = %1095
  %1102 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %1102, ptr %44, align 8, !tbaa !9
  br label %1317

1103:                                             ; preds = %1095
  %1104 = load i64, ptr %47, align 8, !tbaa !9
  %1105 = load i64, ptr %34, align 8, !tbaa !9
  %1106 = sub nsw i64 %1104, %1105
  store i64 %1106, ptr %25, align 8, !tbaa !9
  %1107 = load ptr, ptr %15, align 8, !tbaa !5
  %1108 = load i64, ptr %47, align 8, !tbaa !9
  %1109 = load i64, ptr %34, align 8, !tbaa !9
  %1110 = load i64, ptr %21, align 8, !tbaa !9
  %1111 = mul nsw i64 %1109, %1110
  %1112 = add nsw i64 %1108, %1111
  %1113 = getelementptr inbounds double, ptr %1107, i64 %1112
  %1114 = load ptr, ptr %16, align 8, !tbaa !5
  %1115 = load ptr, ptr %18, align 8, !tbaa !5
  %1116 = load i64, ptr %34, align 8, !tbaa !9
  %1117 = load i64, ptr %34, align 8, !tbaa !9
  %1118 = add nsw i64 %1117, 1
  %1119 = load i64, ptr %23, align 8, !tbaa !9
  %1120 = mul nsw i64 %1118, %1119
  %1121 = add nsw i64 %1116, %1120
  %1122 = getelementptr inbounds double, ptr %1115, i64 %1121
  %1123 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %1113, ptr noundef %1114, ptr noundef %1122, ptr noundef @c__1)
  %1124 = load ptr, ptr %12, align 8, !tbaa !5
  %1125 = load i64, ptr %1124, align 8, !tbaa !9
  %1126 = load i64, ptr %47, align 8, !tbaa !9
  %1127 = sub nsw i64 %1125, %1126
  %1128 = add nsw i64 %1127, 1
  store i64 %1128, ptr %25, align 8, !tbaa !9
  %1129 = load ptr, ptr %15, align 8, !tbaa !5
  %1130 = load i64, ptr %47, align 8, !tbaa !9
  %1131 = load i64, ptr %47, align 8, !tbaa !9
  %1132 = load i64, ptr %21, align 8, !tbaa !9
  %1133 = mul nsw i64 %1131, %1132
  %1134 = add nsw i64 %1130, %1133
  %1135 = getelementptr inbounds double, ptr %1129, i64 %1134
  %1136 = load ptr, ptr %18, align 8, !tbaa !5
  %1137 = load i64, ptr %47, align 8, !tbaa !9
  %1138 = load i64, ptr %34, align 8, !tbaa !9
  %1139 = add nsw i64 %1138, 1
  %1140 = load i64, ptr %23, align 8, !tbaa !9
  %1141 = mul nsw i64 %1139, %1140
  %1142 = add nsw i64 %1137, %1141
  %1143 = getelementptr inbounds double, ptr %1136, i64 %1142
  %1144 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %1135, ptr noundef @c__1, ptr noundef %1143, ptr noundef @c__1)
  %1145 = load ptr, ptr %12, align 8, !tbaa !5
  %1146 = load i64, ptr %1145, align 8, !tbaa !9
  %1147 = load i64, ptr %34, align 8, !tbaa !9
  %1148 = sub nsw i64 %1146, %1147
  %1149 = add nsw i64 %1148, 1
  store i64 %1149, ptr %25, align 8, !tbaa !9
  %1150 = load i64, ptr %34, align 8, !tbaa !9
  %1151 = sub nsw i64 %1150, 1
  store i64 %1151, ptr %26, align 8, !tbaa !9
  %1152 = load ptr, ptr %15, align 8, !tbaa !5
  %1153 = load i64, ptr %34, align 8, !tbaa !9
  %1154 = load i64, ptr %21, align 8, !tbaa !9
  %1155 = add nsw i64 %1153, %1154
  %1156 = getelementptr inbounds double, ptr %1152, i64 %1155
  %1157 = load ptr, ptr %16, align 8, !tbaa !5
  %1158 = load ptr, ptr %18, align 8, !tbaa !5
  %1159 = load i64, ptr %47, align 8, !tbaa !9
  %1160 = load i64, ptr %23, align 8, !tbaa !9
  %1161 = add nsw i64 %1159, %1160
  %1162 = getelementptr inbounds double, ptr %1158, i64 %1161
  %1163 = load ptr, ptr %19, align 8, !tbaa !5
  %1164 = load ptr, ptr %18, align 8, !tbaa !5
  %1165 = load i64, ptr %34, align 8, !tbaa !9
  %1166 = load i64, ptr %34, align 8, !tbaa !9
  %1167 = add nsw i64 %1166, 1
  %1168 = load i64, ptr %23, align 8, !tbaa !9
  %1169 = mul nsw i64 %1167, %1168
  %1170 = add nsw i64 %1165, %1169
  %1171 = getelementptr inbounds double, ptr %1164, i64 %1170
  %1172 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %25, ptr noundef %26, ptr noundef @c_b8, ptr noundef %1156, ptr noundef %1157, ptr noundef %1162, ptr noundef %1163, ptr noundef @c_b9, ptr noundef %1171, ptr noundef @c__1)
  %1173 = load i64, ptr %47, align 8, !tbaa !9
  %1174 = load i64, ptr %34, align 8, !tbaa !9
  %1175 = sub nsw i64 %1173, %1174
  store i64 %1175, ptr %25, align 8, !tbaa !9
  %1176 = load i64, ptr %34, align 8, !tbaa !9
  %1177 = sub nsw i64 %1176, 1
  %1178 = load ptr, ptr %18, align 8, !tbaa !5
  %1179 = load i64, ptr %34, align 8, !tbaa !9
  %1180 = load i64, ptr %34, align 8, !tbaa !9
  %1181 = add nsw i64 %1180, 1
  %1182 = load i64, ptr %23, align 8, !tbaa !9
  %1183 = mul nsw i64 %1181, %1182
  %1184 = add nsw i64 %1179, %1183
  %1185 = getelementptr inbounds double, ptr %1178, i64 %1184
  %1186 = call i64 @f2c_idamax(ptr noundef %25, ptr noundef %1185, ptr noundef @c__1)
  %1187 = add nsw i64 %1177, %1186
  store i64 %1187, ptr %48, align 8, !tbaa !9
  %1188 = load ptr, ptr %18, align 8, !tbaa !5
  %1189 = load i64, ptr %48, align 8, !tbaa !9
  %1190 = load i64, ptr %34, align 8, !tbaa !9
  %1191 = add nsw i64 %1190, 1
  %1192 = load i64, ptr %23, align 8, !tbaa !9
  %1193 = mul nsw i64 %1191, %1192
  %1194 = add nsw i64 %1189, %1193
  %1195 = getelementptr inbounds double, ptr %1188, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !11
  store double %1196, ptr %30, align 8, !tbaa !11
  %1197 = load double, ptr %30, align 8, !tbaa !11
  %1198 = fcmp oge double %1197, 0.000000e+00
  br i1 %1198, label %1199, label %1201

1199:                                             ; preds = %1103
  %1200 = load double, ptr %30, align 8, !tbaa !11
  br label %1204

1201:                                             ; preds = %1103
  %1202 = load double, ptr %30, align 8, !tbaa !11
  %1203 = fneg double %1202
  br label %1204

1204:                                             ; preds = %1201, %1199
  %1205 = phi double [ %1200, %1199 ], [ %1203, %1201 ]
  store double %1205, ptr %53, align 8, !tbaa !11
  %1206 = load i64, ptr %47, align 8, !tbaa !9
  %1207 = load ptr, ptr %12, align 8, !tbaa !5
  %1208 = load i64, ptr %1207, align 8, !tbaa !9
  %1209 = icmp slt i64 %1206, %1208
  br i1 %1209, label %1210, label %1255

1210:                                             ; preds = %1204
  %1211 = load ptr, ptr %12, align 8, !tbaa !5
  %1212 = load i64, ptr %1211, align 8, !tbaa !9
  %1213 = load i64, ptr %47, align 8, !tbaa !9
  %1214 = sub nsw i64 %1212, %1213
  store i64 %1214, ptr %25, align 8, !tbaa !9
  %1215 = load i64, ptr %47, align 8, !tbaa !9
  %1216 = load ptr, ptr %18, align 8, !tbaa !5
  %1217 = load i64, ptr %47, align 8, !tbaa !9
  %1218 = add nsw i64 %1217, 1
  %1219 = load i64, ptr %34, align 8, !tbaa !9
  %1220 = add nsw i64 %1219, 1
  %1221 = load i64, ptr %23, align 8, !tbaa !9
  %1222 = mul nsw i64 %1220, %1221
  %1223 = add nsw i64 %1218, %1222
  %1224 = getelementptr inbounds double, ptr %1216, i64 %1223
  %1225 = call i64 @f2c_idamax(ptr noundef %25, ptr noundef %1224, ptr noundef @c__1)
  %1226 = add nsw i64 %1215, %1225
  store i64 %1226, ptr %48, align 8, !tbaa !9
  %1227 = load double, ptr %53, align 8, !tbaa !11
  store double %1227, ptr %31, align 8, !tbaa !11
  %1228 = load ptr, ptr %18, align 8, !tbaa !5
  %1229 = load i64, ptr %48, align 8, !tbaa !9
  %1230 = load i64, ptr %34, align 8, !tbaa !9
  %1231 = add nsw i64 %1230, 1
  %1232 = load i64, ptr %23, align 8, !tbaa !9
  %1233 = mul nsw i64 %1231, %1232
  %1234 = add nsw i64 %1229, %1233
  %1235 = getelementptr inbounds double, ptr %1228, i64 %1234
  %1236 = load double, ptr %1235, align 8, !tbaa !11
  store double %1236, ptr %30, align 8, !tbaa !11
  %1237 = load double, ptr %30, align 8, !tbaa !11
  %1238 = fcmp oge double %1237, 0.000000e+00
  br i1 %1238, label %1239, label %1241

1239:                                             ; preds = %1210
  %1240 = load double, ptr %30, align 8, !tbaa !11
  br label %1244

1241:                                             ; preds = %1210
  %1242 = load double, ptr %30, align 8, !tbaa !11
  %1243 = fneg double %1242
  br label %1244

1244:                                             ; preds = %1241, %1239
  %1245 = phi double [ %1240, %1239 ], [ %1243, %1241 ]
  store double %1245, ptr %32, align 8, !tbaa !11
  %1246 = load double, ptr %31, align 8, !tbaa !11
  %1247 = load double, ptr %32, align 8, !tbaa !11
  %1248 = fcmp oge double %1246, %1247
  br i1 %1248, label %1249, label %1251

1249:                                             ; preds = %1244
  %1250 = load double, ptr %31, align 8, !tbaa !11
  br label %1253

1251:                                             ; preds = %1244
  %1252 = load double, ptr %32, align 8, !tbaa !11
  br label %1253

1253:                                             ; preds = %1251, %1249
  %1254 = phi double [ %1250, %1249 ], [ %1252, %1251 ]
  store double %1254, ptr %53, align 8, !tbaa !11
  br label %1255

1255:                                             ; preds = %1253, %1204
  %1256 = load double, ptr %51, align 8, !tbaa !11
  %1257 = load double, ptr %49, align 8, !tbaa !11
  %1258 = load double, ptr %52, align 8, !tbaa !11
  %1259 = fmul double %1257, %1258
  %1260 = load double, ptr %52, align 8, !tbaa !11
  %1261 = load double, ptr %53, align 8, !tbaa !11
  %1262 = fdiv double %1260, %1261
  %1263 = fmul double %1259, %1262
  %1264 = fcmp oge double %1256, %1263
  br i1 %1264, label %1265, label %1267

1265:                                             ; preds = %1255
  %1266 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %1266, ptr %44, align 8, !tbaa !9
  br label %1316

1267:                                             ; preds = %1255
  %1268 = load ptr, ptr %18, align 8, !tbaa !5
  %1269 = load i64, ptr %47, align 8, !tbaa !9
  %1270 = load i64, ptr %34, align 8, !tbaa !9
  %1271 = add nsw i64 %1270, 1
  %1272 = load i64, ptr %23, align 8, !tbaa !9
  %1273 = mul nsw i64 %1271, %1272
  %1274 = add nsw i64 %1269, %1273
  %1275 = getelementptr inbounds double, ptr %1268, i64 %1274
  %1276 = load double, ptr %1275, align 8, !tbaa !11
  store double %1276, ptr %30, align 8, !tbaa !11
  %1277 = load double, ptr %30, align 8, !tbaa !11
  %1278 = fcmp oge double %1277, 0.000000e+00
  br i1 %1278, label %1279, label %1281

1279:                                             ; preds = %1267
  %1280 = load double, ptr %30, align 8, !tbaa !11
  br label %1284

1281:                                             ; preds = %1267
  %1282 = load double, ptr %30, align 8, !tbaa !11
  %1283 = fneg double %1282
  br label %1284

1284:                                             ; preds = %1281, %1279
  %1285 = phi double [ %1280, %1279 ], [ %1283, %1281 ]
  %1286 = load double, ptr %49, align 8, !tbaa !11
  %1287 = load double, ptr %53, align 8, !tbaa !11
  %1288 = fmul double %1286, %1287
  %1289 = fcmp oge double %1285, %1288
  br i1 %1289, label %1290, label %1313

1290:                                             ; preds = %1284
  %1291 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %1291, ptr %44, align 8, !tbaa !9
  %1292 = load ptr, ptr %12, align 8, !tbaa !5
  %1293 = load i64, ptr %1292, align 8, !tbaa !9
  %1294 = load i64, ptr %34, align 8, !tbaa !9
  %1295 = sub nsw i64 %1293, %1294
  %1296 = add nsw i64 %1295, 1
  store i64 %1296, ptr %25, align 8, !tbaa !9
  %1297 = load ptr, ptr %18, align 8, !tbaa !5
  %1298 = load i64, ptr %34, align 8, !tbaa !9
  %1299 = load i64, ptr %34, align 8, !tbaa !9
  %1300 = add nsw i64 %1299, 1
  %1301 = load i64, ptr %23, align 8, !tbaa !9
  %1302 = mul nsw i64 %1300, %1301
  %1303 = add nsw i64 %1298, %1302
  %1304 = getelementptr inbounds double, ptr %1297, i64 %1303
  %1305 = load ptr, ptr %18, align 8, !tbaa !5
  %1306 = load i64, ptr %34, align 8, !tbaa !9
  %1307 = load i64, ptr %34, align 8, !tbaa !9
  %1308 = load i64, ptr %23, align 8, !tbaa !9
  %1309 = mul nsw i64 %1307, %1308
  %1310 = add nsw i64 %1306, %1309
  %1311 = getelementptr inbounds double, ptr %1305, i64 %1310
  %1312 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %1304, ptr noundef @c__1, ptr noundef %1311, ptr noundef @c__1)
  br label %1315

1313:                                             ; preds = %1284
  %1314 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %1314, ptr %44, align 8, !tbaa !9
  store i64 2, ptr %50, align 8, !tbaa !9
  br label %1315

1315:                                             ; preds = %1313, %1290
  br label %1316

1316:                                             ; preds = %1315, %1265
  br label %1317

1317:                                             ; preds = %1316, %1101
  %1318 = load i64, ptr %34, align 8, !tbaa !9
  %1319 = load i64, ptr %50, align 8, !tbaa !9
  %1320 = add nsw i64 %1318, %1319
  %1321 = sub nsw i64 %1320, 1
  store i64 %1321, ptr %42, align 8, !tbaa !9
  %1322 = load i64, ptr %44, align 8, !tbaa !9
  %1323 = load i64, ptr %42, align 8, !tbaa !9
  %1324 = icmp ne i64 %1322, %1323
  br i1 %1324, label %1325, label %1409

1325:                                             ; preds = %1317
  %1326 = load ptr, ptr %15, align 8, !tbaa !5
  %1327 = load i64, ptr %42, align 8, !tbaa !9
  %1328 = load i64, ptr %34, align 8, !tbaa !9
  %1329 = load i64, ptr %21, align 8, !tbaa !9
  %1330 = mul nsw i64 %1328, %1329
  %1331 = add nsw i64 %1327, %1330
  %1332 = getelementptr inbounds double, ptr %1326, i64 %1331
  %1333 = load double, ptr %1332, align 8, !tbaa !11
  %1334 = load ptr, ptr %15, align 8, !tbaa !5
  %1335 = load i64, ptr %44, align 8, !tbaa !9
  %1336 = load i64, ptr %34, align 8, !tbaa !9
  %1337 = load i64, ptr %21, align 8, !tbaa !9
  %1338 = mul nsw i64 %1336, %1337
  %1339 = add nsw i64 %1335, %1338
  %1340 = getelementptr inbounds double, ptr %1334, i64 %1339
  store double %1333, ptr %1340, align 8, !tbaa !11
  %1341 = load i64, ptr %44, align 8, !tbaa !9
  %1342 = load i64, ptr %34, align 8, !tbaa !9
  %1343 = sub nsw i64 %1341, %1342
  %1344 = sub nsw i64 %1343, 1
  store i64 %1344, ptr %25, align 8, !tbaa !9
  %1345 = load ptr, ptr %15, align 8, !tbaa !5
  %1346 = load i64, ptr %34, align 8, !tbaa !9
  %1347 = add nsw i64 %1346, 1
  %1348 = load i64, ptr %42, align 8, !tbaa !9
  %1349 = load i64, ptr %21, align 8, !tbaa !9
  %1350 = mul nsw i64 %1348, %1349
  %1351 = add nsw i64 %1347, %1350
  %1352 = getelementptr inbounds double, ptr %1345, i64 %1351
  %1353 = load ptr, ptr %15, align 8, !tbaa !5
  %1354 = load i64, ptr %44, align 8, !tbaa !9
  %1355 = load i64, ptr %34, align 8, !tbaa !9
  %1356 = add nsw i64 %1355, 1
  %1357 = load i64, ptr %21, align 8, !tbaa !9
  %1358 = mul nsw i64 %1356, %1357
  %1359 = add nsw i64 %1354, %1358
  %1360 = getelementptr inbounds double, ptr %1353, i64 %1359
  %1361 = load ptr, ptr %16, align 8, !tbaa !5
  %1362 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %1352, ptr noundef @c__1, ptr noundef %1360, ptr noundef %1361)
  %1363 = load ptr, ptr %12, align 8, !tbaa !5
  %1364 = load i64, ptr %1363, align 8, !tbaa !9
  %1365 = load i64, ptr %44, align 8, !tbaa !9
  %1366 = sub nsw i64 %1364, %1365
  %1367 = add nsw i64 %1366, 1
  store i64 %1367, ptr %25, align 8, !tbaa !9
  %1368 = load ptr, ptr %15, align 8, !tbaa !5
  %1369 = load i64, ptr %44, align 8, !tbaa !9
  %1370 = load i64, ptr %42, align 8, !tbaa !9
  %1371 = load i64, ptr %21, align 8, !tbaa !9
  %1372 = mul nsw i64 %1370, %1371
  %1373 = add nsw i64 %1369, %1372
  %1374 = getelementptr inbounds double, ptr %1368, i64 %1373
  %1375 = load ptr, ptr %15, align 8, !tbaa !5
  %1376 = load i64, ptr %44, align 8, !tbaa !9
  %1377 = load i64, ptr %44, align 8, !tbaa !9
  %1378 = load i64, ptr %21, align 8, !tbaa !9
  %1379 = mul nsw i64 %1377, %1378
  %1380 = add nsw i64 %1376, %1379
  %1381 = getelementptr inbounds double, ptr %1375, i64 %1380
  %1382 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %1374, ptr noundef @c__1, ptr noundef %1381, ptr noundef @c__1)
  %1383 = load ptr, ptr %15, align 8, !tbaa !5
  %1384 = load i64, ptr %42, align 8, !tbaa !9
  %1385 = load i64, ptr %21, align 8, !tbaa !9
  %1386 = add nsw i64 %1384, %1385
  %1387 = getelementptr inbounds double, ptr %1383, i64 %1386
  %1388 = load ptr, ptr %16, align 8, !tbaa !5
  %1389 = load ptr, ptr %15, align 8, !tbaa !5
  %1390 = load i64, ptr %44, align 8, !tbaa !9
  %1391 = load i64, ptr %21, align 8, !tbaa !9
  %1392 = add nsw i64 %1390, %1391
  %1393 = getelementptr inbounds double, ptr %1389, i64 %1392
  %1394 = load ptr, ptr %16, align 8, !tbaa !5
  %1395 = call i32 @f2c_dswap(ptr noundef %42, ptr noundef %1387, ptr noundef %1388, ptr noundef %1393, ptr noundef %1394)
  %1396 = load ptr, ptr %18, align 8, !tbaa !5
  %1397 = load i64, ptr %42, align 8, !tbaa !9
  %1398 = load i64, ptr %23, align 8, !tbaa !9
  %1399 = add nsw i64 %1397, %1398
  %1400 = getelementptr inbounds double, ptr %1396, i64 %1399
  %1401 = load ptr, ptr %19, align 8, !tbaa !5
  %1402 = load ptr, ptr %18, align 8, !tbaa !5
  %1403 = load i64, ptr %44, align 8, !tbaa !9
  %1404 = load i64, ptr %23, align 8, !tbaa !9
  %1405 = add nsw i64 %1403, %1404
  %1406 = getelementptr inbounds double, ptr %1402, i64 %1405
  %1407 = load ptr, ptr %19, align 8, !tbaa !5
  %1408 = call i32 @f2c_dswap(ptr noundef %42, ptr noundef %1400, ptr noundef %1401, ptr noundef %1406, ptr noundef %1407)
  br label %1409

1409:                                             ; preds = %1325, %1317
  %1410 = load i64, ptr %50, align 8, !tbaa !9
  %1411 = icmp eq i64 %1410, 1
  br i1 %1411, label %1412, label %1461

1412:                                             ; preds = %1409
  %1413 = load ptr, ptr %12, align 8, !tbaa !5
  %1414 = load i64, ptr %1413, align 8, !tbaa !9
  %1415 = load i64, ptr %34, align 8, !tbaa !9
  %1416 = sub nsw i64 %1414, %1415
  %1417 = add nsw i64 %1416, 1
  store i64 %1417, ptr %25, align 8, !tbaa !9
  %1418 = load ptr, ptr %18, align 8, !tbaa !5
  %1419 = load i64, ptr %34, align 8, !tbaa !9
  %1420 = load i64, ptr %34, align 8, !tbaa !9
  %1421 = load i64, ptr %23, align 8, !tbaa !9
  %1422 = mul nsw i64 %1420, %1421
  %1423 = add nsw i64 %1419, %1422
  %1424 = getelementptr inbounds double, ptr %1418, i64 %1423
  %1425 = load ptr, ptr %15, align 8, !tbaa !5
  %1426 = load i64, ptr %34, align 8, !tbaa !9
  %1427 = load i64, ptr %34, align 8, !tbaa !9
  %1428 = load i64, ptr %21, align 8, !tbaa !9
  %1429 = mul nsw i64 %1427, %1428
  %1430 = add nsw i64 %1426, %1429
  %1431 = getelementptr inbounds double, ptr %1425, i64 %1430
  %1432 = call i32 @f2c_dcopy(ptr noundef %25, ptr noundef %1424, ptr noundef @c__1, ptr noundef %1431, ptr noundef @c__1)
  %1433 = load i64, ptr %34, align 8, !tbaa !9
  %1434 = load ptr, ptr %12, align 8, !tbaa !5
  %1435 = load i64, ptr %1434, align 8, !tbaa !9
  %1436 = icmp slt i64 %1433, %1435
  br i1 %1436, label %1437, label %1460

1437:                                             ; preds = %1412
  %1438 = load ptr, ptr %15, align 8, !tbaa !5
  %1439 = load i64, ptr %34, align 8, !tbaa !9
  %1440 = load i64, ptr %34, align 8, !tbaa !9
  %1441 = load i64, ptr %21, align 8, !tbaa !9
  %1442 = mul nsw i64 %1440, %1441
  %1443 = add nsw i64 %1439, %1442
  %1444 = getelementptr inbounds double, ptr %1438, i64 %1443
  %1445 = load double, ptr %1444, align 8, !tbaa !11
  %1446 = fdiv double 1.000000e+00, %1445
  store double %1446, ptr %36, align 8, !tbaa !11
  %1447 = load ptr, ptr %12, align 8, !tbaa !5
  %1448 = load i64, ptr %1447, align 8, !tbaa !9
  %1449 = load i64, ptr %34, align 8, !tbaa !9
  %1450 = sub nsw i64 %1448, %1449
  store i64 %1450, ptr %25, align 8, !tbaa !9
  %1451 = load ptr, ptr %15, align 8, !tbaa !5
  %1452 = load i64, ptr %34, align 8, !tbaa !9
  %1453 = add nsw i64 %1452, 1
  %1454 = load i64, ptr %34, align 8, !tbaa !9
  %1455 = load i64, ptr %21, align 8, !tbaa !9
  %1456 = mul nsw i64 %1454, %1455
  %1457 = add nsw i64 %1453, %1456
  %1458 = getelementptr inbounds double, ptr %1451, i64 %1457
  %1459 = call i32 @f2c_dscal(ptr noundef %25, ptr noundef %36, ptr noundef %1458, ptr noundef @c__1)
  br label %1460

1460:                                             ; preds = %1437, %1412
  br label %1630

1461:                                             ; preds = %1409
  %1462 = load i64, ptr %34, align 8, !tbaa !9
  %1463 = load ptr, ptr %12, align 8, !tbaa !5
  %1464 = load i64, ptr %1463, align 8, !tbaa !9
  %1465 = sub nsw i64 %1464, 1
  %1466 = icmp slt i64 %1462, %1465
  br i1 %1466, label %1467, label %1578

1467:                                             ; preds = %1461
  %1468 = load ptr, ptr %18, align 8, !tbaa !5
  %1469 = load i64, ptr %34, align 8, !tbaa !9
  %1470 = add nsw i64 %1469, 1
  %1471 = load i64, ptr %34, align 8, !tbaa !9
  %1472 = load i64, ptr %23, align 8, !tbaa !9
  %1473 = mul nsw i64 %1471, %1472
  %1474 = add nsw i64 %1470, %1473
  %1475 = getelementptr inbounds double, ptr %1468, i64 %1474
  %1476 = load double, ptr %1475, align 8, !tbaa !11
  store double %1476, ptr %38, align 8, !tbaa !11
  %1477 = load ptr, ptr %18, align 8, !tbaa !5
  %1478 = load i64, ptr %34, align 8, !tbaa !9
  %1479 = add nsw i64 %1478, 1
  %1480 = load i64, ptr %34, align 8, !tbaa !9
  %1481 = add nsw i64 %1480, 1
  %1482 = load i64, ptr %23, align 8, !tbaa !9
  %1483 = mul nsw i64 %1481, %1482
  %1484 = add nsw i64 %1479, %1483
  %1485 = getelementptr inbounds double, ptr %1477, i64 %1484
  %1486 = load double, ptr %1485, align 8, !tbaa !11
  %1487 = load double, ptr %38, align 8, !tbaa !11
  %1488 = fdiv double %1486, %1487
  store double %1488, ptr %37, align 8, !tbaa !11
  %1489 = load ptr, ptr %18, align 8, !tbaa !5
  %1490 = load i64, ptr %34, align 8, !tbaa !9
  %1491 = load i64, ptr %34, align 8, !tbaa !9
  %1492 = load i64, ptr %23, align 8, !tbaa !9
  %1493 = mul nsw i64 %1491, %1492
  %1494 = add nsw i64 %1490, %1493
  %1495 = getelementptr inbounds double, ptr %1489, i64 %1494
  %1496 = load double, ptr %1495, align 8, !tbaa !11
  %1497 = load double, ptr %38, align 8, !tbaa !11
  %1498 = fdiv double %1496, %1497
  store double %1498, ptr %39, align 8, !tbaa !11
  %1499 = load double, ptr %37, align 8, !tbaa !11
  %1500 = load double, ptr %39, align 8, !tbaa !11
  %1501 = call double @llvm.fmuladd.f64(double %1499, double %1500, double -1.000000e+00)
  %1502 = fdiv double 1.000000e+00, %1501
  store double %1502, ptr %35, align 8, !tbaa !11
  %1503 = load double, ptr %35, align 8, !tbaa !11
  %1504 = load double, ptr %38, align 8, !tbaa !11
  %1505 = fdiv double %1503, %1504
  store double %1505, ptr %38, align 8, !tbaa !11
  %1506 = load ptr, ptr %12, align 8, !tbaa !5
  %1507 = load i64, ptr %1506, align 8, !tbaa !9
  store i64 %1507, ptr %25, align 8, !tbaa !9
  %1508 = load i64, ptr %34, align 8, !tbaa !9
  %1509 = add nsw i64 %1508, 2
  store i64 %1509, ptr %33, align 8, !tbaa !9
  br label %1510

1510:                                             ; preds = %1574, %1467
  %1511 = load i64, ptr %33, align 8, !tbaa !9
  %1512 = load i64, ptr %25, align 8, !tbaa !9
  %1513 = icmp sle i64 %1511, %1512
  br i1 %1513, label %1514, label %1577

1514:                                             ; preds = %1510
  %1515 = load double, ptr %38, align 8, !tbaa !11
  %1516 = load double, ptr %37, align 8, !tbaa !11
  %1517 = load ptr, ptr %18, align 8, !tbaa !5
  %1518 = load i64, ptr %33, align 8, !tbaa !9
  %1519 = load i64, ptr %34, align 8, !tbaa !9
  %1520 = load i64, ptr %23, align 8, !tbaa !9
  %1521 = mul nsw i64 %1519, %1520
  %1522 = add nsw i64 %1518, %1521
  %1523 = getelementptr inbounds double, ptr %1517, i64 %1522
  %1524 = load double, ptr %1523, align 8, !tbaa !11
  %1525 = load ptr, ptr %18, align 8, !tbaa !5
  %1526 = load i64, ptr %33, align 8, !tbaa !9
  %1527 = load i64, ptr %34, align 8, !tbaa !9
  %1528 = add nsw i64 %1527, 1
  %1529 = load i64, ptr %23, align 8, !tbaa !9
  %1530 = mul nsw i64 %1528, %1529
  %1531 = add nsw i64 %1526, %1530
  %1532 = getelementptr inbounds double, ptr %1525, i64 %1531
  %1533 = load double, ptr %1532, align 8, !tbaa !11
  %1534 = fneg double %1533
  %1535 = call double @llvm.fmuladd.f64(double %1516, double %1524, double %1534)
  %1536 = fmul double %1515, %1535
  %1537 = load ptr, ptr %15, align 8, !tbaa !5
  %1538 = load i64, ptr %33, align 8, !tbaa !9
  %1539 = load i64, ptr %34, align 8, !tbaa !9
  %1540 = load i64, ptr %21, align 8, !tbaa !9
  %1541 = mul nsw i64 %1539, %1540
  %1542 = add nsw i64 %1538, %1541
  %1543 = getelementptr inbounds double, ptr %1537, i64 %1542
  store double %1536, ptr %1543, align 8, !tbaa !11
  %1544 = load double, ptr %38, align 8, !tbaa !11
  %1545 = load double, ptr %39, align 8, !tbaa !11
  %1546 = load ptr, ptr %18, align 8, !tbaa !5
  %1547 = load i64, ptr %33, align 8, !tbaa !9
  %1548 = load i64, ptr %34, align 8, !tbaa !9
  %1549 = add nsw i64 %1548, 1
  %1550 = load i64, ptr %23, align 8, !tbaa !9
  %1551 = mul nsw i64 %1549, %1550
  %1552 = add nsw i64 %1547, %1551
  %1553 = getelementptr inbounds double, ptr %1546, i64 %1552
  %1554 = load double, ptr %1553, align 8, !tbaa !11
  %1555 = load ptr, ptr %18, align 8, !tbaa !5
  %1556 = load i64, ptr %33, align 8, !tbaa !9
  %1557 = load i64, ptr %34, align 8, !tbaa !9
  %1558 = load i64, ptr %23, align 8, !tbaa !9
  %1559 = mul nsw i64 %1557, %1558
  %1560 = add nsw i64 %1556, %1559
  %1561 = getelementptr inbounds double, ptr %1555, i64 %1560
  %1562 = load double, ptr %1561, align 8, !tbaa !11
  %1563 = fneg double %1562
  %1564 = call double @llvm.fmuladd.f64(double %1545, double %1554, double %1563)
  %1565 = fmul double %1544, %1564
  %1566 = load ptr, ptr %15, align 8, !tbaa !5
  %1567 = load i64, ptr %33, align 8, !tbaa !9
  %1568 = load i64, ptr %34, align 8, !tbaa !9
  %1569 = add nsw i64 %1568, 1
  %1570 = load i64, ptr %21, align 8, !tbaa !9
  %1571 = mul nsw i64 %1569, %1570
  %1572 = add nsw i64 %1567, %1571
  %1573 = getelementptr inbounds double, ptr %1566, i64 %1572
  store double %1565, ptr %1573, align 8, !tbaa !11
  br label %1574

1574:                                             ; preds = %1514
  %1575 = load i64, ptr %33, align 8, !tbaa !9
  %1576 = add nsw i64 %1575, 1
  store i64 %1576, ptr %33, align 8, !tbaa !9
  br label %1510, !llvm.loop !17

1577:                                             ; preds = %1510
  br label %1578

1578:                                             ; preds = %1577, %1461
  %1579 = load ptr, ptr %18, align 8, !tbaa !5
  %1580 = load i64, ptr %34, align 8, !tbaa !9
  %1581 = load i64, ptr %34, align 8, !tbaa !9
  %1582 = load i64, ptr %23, align 8, !tbaa !9
  %1583 = mul nsw i64 %1581, %1582
  %1584 = add nsw i64 %1580, %1583
  %1585 = getelementptr inbounds double, ptr %1579, i64 %1584
  %1586 = load double, ptr %1585, align 8, !tbaa !11
  %1587 = load ptr, ptr %15, align 8, !tbaa !5
  %1588 = load i64, ptr %34, align 8, !tbaa !9
  %1589 = load i64, ptr %34, align 8, !tbaa !9
  %1590 = load i64, ptr %21, align 8, !tbaa !9
  %1591 = mul nsw i64 %1589, %1590
  %1592 = add nsw i64 %1588, %1591
  %1593 = getelementptr inbounds double, ptr %1587, i64 %1592
  store double %1586, ptr %1593, align 8, !tbaa !11
  %1594 = load ptr, ptr %18, align 8, !tbaa !5
  %1595 = load i64, ptr %34, align 8, !tbaa !9
  %1596 = add nsw i64 %1595, 1
  %1597 = load i64, ptr %34, align 8, !tbaa !9
  %1598 = load i64, ptr %23, align 8, !tbaa !9
  %1599 = mul nsw i64 %1597, %1598
  %1600 = add nsw i64 %1596, %1599
  %1601 = getelementptr inbounds double, ptr %1594, i64 %1600
  %1602 = load double, ptr %1601, align 8, !tbaa !11
  %1603 = load ptr, ptr %15, align 8, !tbaa !5
  %1604 = load i64, ptr %34, align 8, !tbaa !9
  %1605 = add nsw i64 %1604, 1
  %1606 = load i64, ptr %34, align 8, !tbaa !9
  %1607 = load i64, ptr %21, align 8, !tbaa !9
  %1608 = mul nsw i64 %1606, %1607
  %1609 = add nsw i64 %1605, %1608
  %1610 = getelementptr inbounds double, ptr %1603, i64 %1609
  store double %1602, ptr %1610, align 8, !tbaa !11
  %1611 = load ptr, ptr %18, align 8, !tbaa !5
  %1612 = load i64, ptr %34, align 8, !tbaa !9
  %1613 = add nsw i64 %1612, 1
  %1614 = load i64, ptr %34, align 8, !tbaa !9
  %1615 = add nsw i64 %1614, 1
  %1616 = load i64, ptr %23, align 8, !tbaa !9
  %1617 = mul nsw i64 %1615, %1616
  %1618 = add nsw i64 %1613, %1617
  %1619 = getelementptr inbounds double, ptr %1611, i64 %1618
  %1620 = load double, ptr %1619, align 8, !tbaa !11
  %1621 = load ptr, ptr %15, align 8, !tbaa !5
  %1622 = load i64, ptr %34, align 8, !tbaa !9
  %1623 = add nsw i64 %1622, 1
  %1624 = load i64, ptr %34, align 8, !tbaa !9
  %1625 = add nsw i64 %1624, 1
  %1626 = load i64, ptr %21, align 8, !tbaa !9
  %1627 = mul nsw i64 %1625, %1626
  %1628 = add nsw i64 %1623, %1627
  %1629 = getelementptr inbounds double, ptr %1621, i64 %1628
  store double %1620, ptr %1629, align 8, !tbaa !11
  br label %1630

1630:                                             ; preds = %1578, %1460
  br label %1631

1631:                                             ; preds = %1630, %1093
  %1632 = load i64, ptr %50, align 8, !tbaa !9
  %1633 = icmp eq i64 %1632, 1
  br i1 %1633, label %1634, label %1639

1634:                                             ; preds = %1631
  %1635 = load i64, ptr %44, align 8, !tbaa !9
  %1636 = load ptr, ptr %17, align 8, !tbaa !5
  %1637 = load i64, ptr %34, align 8, !tbaa !9
  %1638 = getelementptr inbounds i64, ptr %1636, i64 %1637
  store i64 %1635, ptr %1638, align 8, !tbaa !9
  br label %1651

1639:                                             ; preds = %1631
  %1640 = load i64, ptr %44, align 8, !tbaa !9
  %1641 = sub nsw i64 0, %1640
  %1642 = load ptr, ptr %17, align 8, !tbaa !5
  %1643 = load i64, ptr %34, align 8, !tbaa !9
  %1644 = getelementptr inbounds i64, ptr %1642, i64 %1643
  store i64 %1641, ptr %1644, align 8, !tbaa !9
  %1645 = load i64, ptr %44, align 8, !tbaa !9
  %1646 = sub nsw i64 0, %1645
  %1647 = load ptr, ptr %17, align 8, !tbaa !5
  %1648 = load i64, ptr %34, align 8, !tbaa !9
  %1649 = add nsw i64 %1648, 1
  %1650 = getelementptr inbounds i64, ptr %1647, i64 %1649
  store i64 %1646, ptr %1650, align 8, !tbaa !9
  br label %1651

1651:                                             ; preds = %1639, %1634
  %1652 = load i64, ptr %50, align 8, !tbaa !9
  %1653 = load i64, ptr %34, align 8, !tbaa !9
  %1654 = add nsw i64 %1653, %1652
  store i64 %1654, ptr %34, align 8, !tbaa !9
  br label %955

1655:                                             ; preds = %971
  %1656 = load ptr, ptr %12, align 8, !tbaa !5
  %1657 = load i64, ptr %1656, align 8, !tbaa !9
  store i64 %1657, ptr %25, align 8, !tbaa !9
  %1658 = load ptr, ptr %13, align 8, !tbaa !5
  %1659 = load i64, ptr %1658, align 8, !tbaa !9
  store i64 %1659, ptr %26, align 8, !tbaa !9
  %1660 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %1660, ptr %33, align 8, !tbaa !9
  br label %1661

1661:                                             ; preds = %1777, %1655
  %1662 = load i64, ptr %26, align 8, !tbaa !9
  %1663 = icmp slt i64 %1662, 0
  br i1 %1663, label %1664, label %1669

1664:                                             ; preds = %1661
  %1665 = load i64, ptr %33, align 8, !tbaa !9
  %1666 = load i64, ptr %25, align 8, !tbaa !9
  %1667 = icmp sge i64 %1665, %1666
  %1668 = zext i1 %1667 to i32
  br label %1674

1669:                                             ; preds = %1661
  %1670 = load i64, ptr %33, align 8, !tbaa !9
  %1671 = load i64, ptr %25, align 8, !tbaa !9
  %1672 = icmp sle i64 %1670, %1671
  %1673 = zext i1 %1672 to i32
  br label %1674

1674:                                             ; preds = %1669, %1664
  %1675 = phi i32 [ %1668, %1664 ], [ %1673, %1669 ]
  %1676 = icmp ne i32 %1675, 0
  br i1 %1676, label %1677, label %1781

1677:                                             ; preds = %1674
  %1678 = load ptr, ptr %13, align 8, !tbaa !5
  %1679 = load i64, ptr %1678, align 8, !tbaa !9
  store i64 %1679, ptr %27, align 8, !tbaa !9
  %1680 = load ptr, ptr %12, align 8, !tbaa !5
  %1681 = load i64, ptr %1680, align 8, !tbaa !9
  %1682 = load i64, ptr %33, align 8, !tbaa !9
  %1683 = sub nsw i64 %1681, %1682
  %1684 = add nsw i64 %1683, 1
  store i64 %1684, ptr %28, align 8, !tbaa !9
  %1685 = load i64, ptr %27, align 8, !tbaa !9
  %1686 = load i64, ptr %28, align 8, !tbaa !9
  %1687 = icmp sle i64 %1685, %1686
  br i1 %1687, label %1688, label %1690

1688:                                             ; preds = %1677
  %1689 = load i64, ptr %27, align 8, !tbaa !9
  br label %1692

1690:                                             ; preds = %1677
  %1691 = load i64, ptr %28, align 8, !tbaa !9
  br label %1692

1692:                                             ; preds = %1690, %1688
  %1693 = phi i64 [ %1689, %1688 ], [ %1691, %1690 ]
  store i64 %1693, ptr %40, align 8, !tbaa !9
  %1694 = load i64, ptr %33, align 8, !tbaa !9
  %1695 = load i64, ptr %40, align 8, !tbaa !9
  %1696 = add nsw i64 %1694, %1695
  %1697 = sub nsw i64 %1696, 1
  store i64 %1697, ptr %27, align 8, !tbaa !9
  %1698 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %1698, ptr %41, align 8, !tbaa !9
  br label %1699

1699:                                             ; preds = %1731, %1692
  %1700 = load i64, ptr %41, align 8, !tbaa !9
  %1701 = load i64, ptr %27, align 8, !tbaa !9
  %1702 = icmp sle i64 %1700, %1701
  br i1 %1702, label %1703, label %1734

1703:                                             ; preds = %1699
  %1704 = load i64, ptr %33, align 8, !tbaa !9
  %1705 = load i64, ptr %40, align 8, !tbaa !9
  %1706 = add nsw i64 %1704, %1705
  %1707 = load i64, ptr %41, align 8, !tbaa !9
  %1708 = sub nsw i64 %1706, %1707
  store i64 %1708, ptr %28, align 8, !tbaa !9
  %1709 = load i64, ptr %34, align 8, !tbaa !9
  %1710 = sub nsw i64 %1709, 1
  store i64 %1710, ptr %29, align 8, !tbaa !9
  %1711 = load ptr, ptr %15, align 8, !tbaa !5
  %1712 = load i64, ptr %41, align 8, !tbaa !9
  %1713 = load i64, ptr %21, align 8, !tbaa !9
  %1714 = add nsw i64 %1712, %1713
  %1715 = getelementptr inbounds double, ptr %1711, i64 %1714
  %1716 = load ptr, ptr %16, align 8, !tbaa !5
  %1717 = load ptr, ptr %18, align 8, !tbaa !5
  %1718 = load i64, ptr %41, align 8, !tbaa !9
  %1719 = load i64, ptr %23, align 8, !tbaa !9
  %1720 = add nsw i64 %1718, %1719
  %1721 = getelementptr inbounds double, ptr %1717, i64 %1720
  %1722 = load ptr, ptr %19, align 8, !tbaa !5
  %1723 = load ptr, ptr %15, align 8, !tbaa !5
  %1724 = load i64, ptr %41, align 8, !tbaa !9
  %1725 = load i64, ptr %41, align 8, !tbaa !9
  %1726 = load i64, ptr %21, align 8, !tbaa !9
  %1727 = mul nsw i64 %1725, %1726
  %1728 = add nsw i64 %1724, %1727
  %1729 = getelementptr inbounds double, ptr %1723, i64 %1728
  %1730 = call i32 @f2c_dgemv(ptr noundef @.str.1, ptr noundef %28, ptr noundef %29, ptr noundef @c_b8, ptr noundef %1715, ptr noundef %1716, ptr noundef %1721, ptr noundef %1722, ptr noundef @c_b9, ptr noundef %1729, ptr noundef @c__1)
  br label %1731

1731:                                             ; preds = %1703
  %1732 = load i64, ptr %41, align 8, !tbaa !9
  %1733 = add nsw i64 %1732, 1
  store i64 %1733, ptr %41, align 8, !tbaa !9
  br label %1699, !llvm.loop !18

1734:                                             ; preds = %1699
  %1735 = load i64, ptr %33, align 8, !tbaa !9
  %1736 = load i64, ptr %40, align 8, !tbaa !9
  %1737 = add nsw i64 %1735, %1736
  %1738 = load ptr, ptr %12, align 8, !tbaa !5
  %1739 = load i64, ptr %1738, align 8, !tbaa !9
  %1740 = icmp sle i64 %1737, %1739
  br i1 %1740, label %1741, label %1776

1741:                                             ; preds = %1734
  %1742 = load ptr, ptr %12, align 8, !tbaa !5
  %1743 = load i64, ptr %1742, align 8, !tbaa !9
  %1744 = load i64, ptr %33, align 8, !tbaa !9
  %1745 = sub nsw i64 %1743, %1744
  %1746 = load i64, ptr %40, align 8, !tbaa !9
  %1747 = sub nsw i64 %1745, %1746
  %1748 = add nsw i64 %1747, 1
  store i64 %1748, ptr %27, align 8, !tbaa !9
  %1749 = load i64, ptr %34, align 8, !tbaa !9
  %1750 = sub nsw i64 %1749, 1
  store i64 %1750, ptr %28, align 8, !tbaa !9
  %1751 = load ptr, ptr %15, align 8, !tbaa !5
  %1752 = load i64, ptr %33, align 8, !tbaa !9
  %1753 = load i64, ptr %40, align 8, !tbaa !9
  %1754 = add nsw i64 %1752, %1753
  %1755 = load i64, ptr %21, align 8, !tbaa !9
  %1756 = add nsw i64 %1754, %1755
  %1757 = getelementptr inbounds double, ptr %1751, i64 %1756
  %1758 = load ptr, ptr %16, align 8, !tbaa !5
  %1759 = load ptr, ptr %18, align 8, !tbaa !5
  %1760 = load i64, ptr %33, align 8, !tbaa !9
  %1761 = load i64, ptr %23, align 8, !tbaa !9
  %1762 = add nsw i64 %1760, %1761
  %1763 = getelementptr inbounds double, ptr %1759, i64 %1762
  %1764 = load ptr, ptr %19, align 8, !tbaa !5
  %1765 = load ptr, ptr %15, align 8, !tbaa !5
  %1766 = load i64, ptr %33, align 8, !tbaa !9
  %1767 = load i64, ptr %40, align 8, !tbaa !9
  %1768 = add nsw i64 %1766, %1767
  %1769 = load i64, ptr %33, align 8, !tbaa !9
  %1770 = load i64, ptr %21, align 8, !tbaa !9
  %1771 = mul nsw i64 %1769, %1770
  %1772 = add nsw i64 %1768, %1771
  %1773 = getelementptr inbounds double, ptr %1765, i64 %1772
  %1774 = load ptr, ptr %16, align 8, !tbaa !5
  %1775 = call i32 @f2c_dgemm(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %27, ptr noundef %40, ptr noundef %28, ptr noundef @c_b8, ptr noundef %1757, ptr noundef %1758, ptr noundef %1763, ptr noundef %1764, ptr noundef @c_b9, ptr noundef %1773, ptr noundef %1774)
  br label %1776

1776:                                             ; preds = %1741, %1734
  br label %1777

1777:                                             ; preds = %1776
  %1778 = load i64, ptr %26, align 8, !tbaa !9
  %1779 = load i64, ptr %33, align 8, !tbaa !9
  %1780 = add nsw i64 %1779, %1778
  store i64 %1780, ptr %33, align 8, !tbaa !9
  br label %1661, !llvm.loop !19

1781:                                             ; preds = %1674
  %1782 = load i64, ptr %34, align 8, !tbaa !9
  %1783 = sub nsw i64 %1782, 1
  store i64 %1783, ptr %33, align 8, !tbaa !9
  br label %1784

1784:                                             ; preds = %1823, %1781
  %1785 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %1785, ptr %41, align 8, !tbaa !9
  %1786 = load ptr, ptr %17, align 8, !tbaa !5
  %1787 = load i64, ptr %33, align 8, !tbaa !9
  %1788 = getelementptr inbounds i64, ptr %1786, i64 %1787
  %1789 = load i64, ptr %1788, align 8, !tbaa !9
  store i64 %1789, ptr %43, align 8, !tbaa !9
  %1790 = load i64, ptr %43, align 8, !tbaa !9
  %1791 = icmp slt i64 %1790, 0
  br i1 %1791, label %1792, label %1797

1792:                                             ; preds = %1784
  %1793 = load i64, ptr %43, align 8, !tbaa !9
  %1794 = sub nsw i64 0, %1793
  store i64 %1794, ptr %43, align 8, !tbaa !9
  %1795 = load i64, ptr %33, align 8, !tbaa !9
  %1796 = add nsw i64 %1795, -1
  store i64 %1796, ptr %33, align 8, !tbaa !9
  br label %1797

1797:                                             ; preds = %1792, %1784
  %1798 = load i64, ptr %33, align 8, !tbaa !9
  %1799 = add nsw i64 %1798, -1
  store i64 %1799, ptr %33, align 8, !tbaa !9
  %1800 = load i64, ptr %43, align 8, !tbaa !9
  %1801 = load i64, ptr %41, align 8, !tbaa !9
  %1802 = icmp ne i64 %1800, %1801
  br i1 %1802, label %1803, label %1820

1803:                                             ; preds = %1797
  %1804 = load i64, ptr %33, align 8, !tbaa !9
  %1805 = icmp sge i64 %1804, 1
  br i1 %1805, label %1806, label %1820

1806:                                             ; preds = %1803
  %1807 = load ptr, ptr %15, align 8, !tbaa !5
  %1808 = load i64, ptr %43, align 8, !tbaa !9
  %1809 = load i64, ptr %21, align 8, !tbaa !9
  %1810 = add nsw i64 %1808, %1809
  %1811 = getelementptr inbounds double, ptr %1807, i64 %1810
  %1812 = load ptr, ptr %16, align 8, !tbaa !5
  %1813 = load ptr, ptr %15, align 8, !tbaa !5
  %1814 = load i64, ptr %41, align 8, !tbaa !9
  %1815 = load i64, ptr %21, align 8, !tbaa !9
  %1816 = add nsw i64 %1814, %1815
  %1817 = getelementptr inbounds double, ptr %1813, i64 %1816
  %1818 = load ptr, ptr %16, align 8, !tbaa !5
  %1819 = call i32 @f2c_dswap(ptr noundef %33, ptr noundef %1811, ptr noundef %1812, ptr noundef %1817, ptr noundef %1818)
  br label %1820

1820:                                             ; preds = %1806, %1803, %1797
  %1821 = load i64, ptr %33, align 8, !tbaa !9
  %1822 = icmp sge i64 %1821, 1
  br i1 %1822, label %1823, label %1824

1823:                                             ; preds = %1820
  br label %1784

1824:                                             ; preds = %1820
  %1825 = load i64, ptr %34, align 8, !tbaa !9
  %1826 = sub nsw i64 %1825, 1
  %1827 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 %1826, ptr %1827, align 8, !tbaa !9
  br label %1828

1828:                                             ; preds = %1824, %948
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  ret i32 0
}

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

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

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

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

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

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

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

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

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

declare i32 @f2c_dgemm(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) #3

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

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

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

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


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlasyf_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef writeonly %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef %9) local_unnamed_addr #0 {
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca double, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  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 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, 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
  %23 = load i64, ptr %5, align 8, !tbaa !5
  %24 = xor i64 %23, -1
  %25 = getelementptr inbounds double, ptr %4, i64 %24
  %26 = getelementptr inbounds i8, ptr %6, i64 -8
  %27 = load i64, ptr %8, align 8, !tbaa !5
  %28 = xor i64 %27, -1
  %29 = getelementptr inbounds double, ptr %7, i64 %28
  store i64 0, ptr %9, align 8, !tbaa !5
  %30 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %30, 0
  %invariant.gep646 = getelementptr i8, ptr %29, i64 8
  br i1 %.not, label %.preheader, label %44

.preheader:                                       ; preds = %10
  %invariant.gep642 = getelementptr i8, ptr %4, i64 -8
  %invariant.gep644 = getelementptr i8, ptr %7, i64 -8
  %invariant.gep660 = getelementptr i8, ptr %25, i64 8
  %31 = add i64 %23, 1
  %32 = add i64 %27, 1
  store i64 1, ptr %17, align 8, !tbaa !5
  %33 = load i64, ptr %2, align 8, !tbaa !5
  %.not550727 = icmp slt i64 %33, 2
  %.pre696728 = load i64, ptr %1, align 8, !tbaa !5
  %34 = icmp slt i64 %33, %.pre696728
  %or.cond715729 = select i1 %.not550727, i1 %34, i1 false
  %35 = icmp slt i64 %.pre696728, 1
  %or.cond716730 = select i1 %or.cond715729, i1 true, i1 %35
  br i1 %or.cond716730, label %._crit_edge734, label %.lr.ph733

.lr.ph733:                                        ; preds = %.preheader
  %36 = shl i64 %23, 3
  %37 = sub i64 8, %36
  %scevgep771 = getelementptr i8, ptr %4, i64 %37
  %38 = add i64 %36, 8
  %scevgep774 = getelementptr i8, ptr %4, i64 8
  %39 = shl i64 %23, 3
  %40 = shl i64 %27, 3
  %41 = sub i64 8, %40
  %scevgep777 = getelementptr i8, ptr %7, i64 %41
  %42 = add i64 %40, 8
  %scevgep780 = getelementptr i8, ptr %7, i64 8
  %43 = shl i64 %27, 3
  br label %405

44:                                               ; preds = %10
  %45 = load i64, ptr %1, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %25, i64 8
  %46 = add i64 %23, 1
  %scevgep737 = getelementptr i8, ptr %4, i64 -16
  %scevgep740 = getelementptr i8, ptr %4, i64 -16
  %scevgep743 = getelementptr i8, ptr %7, i64 -16
  %scevgep746 = getelementptr i8, ptr %7, i64 -16
  br label %47

47:                                               ; preds = %337, %44
  %48 = phi i64 [ %45, %44 ], [ %.pre, %337 ]
  %storemerge559 = phi i64 [ %45, %44 ], [ %339, %337 ]
  %.fr564 = freeze i64 %storemerge559
  store i64 %.fr564, ptr %17, align 8, !tbaa !5
  %49 = load i64, ptr %2, align 8, !tbaa !5
  %50 = add i64 %49, %.fr564
  %51 = sub i64 %50, %48
  %reass.sub = sub i64 %48, %49
  %52 = add i64 %reass.sub, 1
  %.not560 = icmp sgt i64 %.fr564, %52
  br i1 %.not560, label %56, label %53

53:                                               ; preds = %47
  %54 = icmp slt i64 %49, %48
  %55 = icmp slt i64 %.fr564, 1
  %or.cond = or i1 %55, %54
  br i1 %or.cond, label %340, label %57

56:                                               ; preds = %47
  %.old1 = icmp slt i64 %.fr564, 1
  br i1 %.old1, label %340, label %57

57:                                               ; preds = %53, %56
  %58 = mul nsw i64 %.fr564, %23
  %gep = getelementptr double, ptr %invariant.gep, i64 %58
  %59 = mul nsw i64 %51, %27
  %gep604 = getelementptr double, ptr %invariant.gep646, i64 %59
  %60 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep604, ptr noundef nonnull @c__1) #5
  %61 = load i64, ptr %17, align 8, !tbaa !5
  %62 = load i64, ptr %1, align 8, !tbaa !5
  %63 = icmp slt i64 %61, %62
  br i1 %63, label %64, label %73

64:                                               ; preds = %57
  %65 = sub nsw i64 %62, %61
  store i64 %65, ptr %11, align 8, !tbaa !5
  %66 = add nsw i64 %61, 1
  %67 = mul nsw i64 %66, %23
  %gep606 = getelementptr double, ptr %invariant.gep, i64 %67
  %68 = add nsw i64 %51, 1
  %69 = mul nsw i64 %68, %27
  %70 = getelementptr double, ptr %29, i64 %61
  %71 = getelementptr double, ptr %70, i64 %69
  %72 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %17, ptr noundef nonnull %11, ptr noundef nonnull @c_b8, ptr noundef %gep606, ptr noundef nonnull %5, ptr noundef %71, ptr noundef nonnull %8, ptr noundef nonnull @c_b9, ptr noundef %gep604, ptr noundef nonnull @c__1) #5
  %.pr = load i64, ptr %17, align 8, !tbaa !5
  br label %73

73:                                               ; preds = %64, %57
  %74 = phi i64 [ %.pr, %64 ], [ %61, %57 ]
  %75 = getelementptr double, ptr %29, i64 %74
  %76 = getelementptr double, ptr %75, i64 %59
  %77 = load double, ptr %76, align 8, !tbaa !9
  %78 = fcmp oge double %77, 0.000000e+00
  %79 = fneg double %77
  %80 = select i1 %78, double %77, double %79
  %81 = icmp sgt i64 %74, 1
  br i1 %81, label %82, label %91

82:                                               ; preds = %73
  %83 = add nsw i64 %74, -1
  store i64 %83, ptr %11, align 8, !tbaa !5
  %84 = call i64 @f2c_idamax(ptr noundef nonnull %11, ptr noundef %gep604, ptr noundef nonnull @c__1) #5
  store i64 %84, ptr %22, align 8, !tbaa !5
  %85 = getelementptr double, ptr %29, i64 %84
  %86 = getelementptr double, ptr %85, i64 %59
  %87 = load double, ptr %86, align 8, !tbaa !9
  %88 = fcmp oge double %87, 0.000000e+00
  %89 = fneg double %87
  %90 = select i1 %88, double %87, double %89
  br label %91

91:                                               ; preds = %73, %82
  %.0504 = phi double [ %90, %82 ], [ 0.000000e+00, %73 ]
  %92 = fcmp oge double %80, %.0504
  %93 = select i1 %92, double %80, double %.0504
  %94 = fcmp oeq double %93, 0.000000e+00
  br i1 %94, label %95, label %100

95:                                               ; preds = %91
  %96 = load i64, ptr %9, align 8, !tbaa !5
  %97 = icmp eq i64 %96, 0
  %.pre689 = load i64, ptr %17, align 8, !tbaa !5
  br i1 %97, label %98, label %99

98:                                               ; preds = %95
  store i64 %.pre689, ptr %9, align 8, !tbaa !5
  br label %99

99:                                               ; preds = %98, %95
  store i64 %.pre689, ptr %21, align 8, !tbaa !5
  br label %313

100:                                              ; preds = %91
  %101 = fmul double %.0504, 0x3FE47E0F66AFED07
  %102 = fcmp ult double %80, %101
  br i1 %102, label %105, label %103

103:                                              ; preds = %100
  %104 = load i64, ptr %17, align 8, !tbaa !5
  store i64 %104, ptr %21, align 8, !tbaa !5
  br label %179

105:                                              ; preds = %100
  %106 = load i64, ptr %22, align 8, !tbaa !5
  %107 = mul nsw i64 %106, %23
  %gep608 = getelementptr double, ptr %invariant.gep, i64 %107
  %108 = add nsw i64 %51, -1
  %109 = mul nsw i64 %108, %27
  %gep610 = getelementptr double, ptr %invariant.gep646, i64 %109
  %110 = call i32 @f2c_dcopy(ptr noundef nonnull %22, ptr noundef %gep608, ptr noundef nonnull @c__1, ptr noundef %gep610, ptr noundef nonnull @c__1) #5
  %111 = load i64, ptr %17, align 8, !tbaa !5
  %112 = load i64, ptr %22, align 8, !tbaa !5
  %113 = sub nsw i64 %111, %112
  store i64 %113, ptr %11, align 8, !tbaa !5
  %114 = add nsw i64 %112, 1
  %115 = mul nsw i64 %114, %23
  %116 = getelementptr double, ptr %25, i64 %112
  %117 = getelementptr double, ptr %116, i64 %115
  %118 = getelementptr double, ptr %29, i64 %114
  %119 = getelementptr double, ptr %118, i64 %109
  %120 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %117, ptr noundef nonnull %5, ptr noundef %119, ptr noundef nonnull @c__1) #5
  %121 = load i64, ptr %17, align 8, !tbaa !5
  %122 = load i64, ptr %1, align 8, !tbaa !5
  %123 = icmp slt i64 %121, %122
  br i1 %123, label %124, label %134

124:                                              ; preds = %105
  %125 = sub nsw i64 %122, %121
  store i64 %125, ptr %11, align 8, !tbaa !5
  %126 = add nsw i64 %121, 1
  %127 = mul nsw i64 %126, %23
  %gep612 = getelementptr double, ptr %invariant.gep, i64 %127
  %128 = load i64, ptr %22, align 8, !tbaa !5
  %129 = add nsw i64 %51, 1
  %130 = mul nsw i64 %129, %27
  %131 = getelementptr double, ptr %29, i64 %128
  %132 = getelementptr double, ptr %131, i64 %130
  %133 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %17, ptr noundef nonnull %11, ptr noundef nonnull @c_b8, ptr noundef %gep612, ptr noundef nonnull %5, ptr noundef %132, ptr noundef nonnull %8, ptr noundef nonnull @c_b9, ptr noundef %gep610, ptr noundef nonnull @c__1) #5
  %.pre687 = load i64, ptr %17, align 8, !tbaa !5
  br label %134

134:                                              ; preds = %124, %105
  %135 = phi i64 [ %.pre687, %124 ], [ %121, %105 ]
  %136 = load i64, ptr %22, align 8, !tbaa !5
  %137 = sub nsw i64 %135, %136
  store i64 %137, ptr %11, align 8, !tbaa !5
  %138 = getelementptr double, ptr %29, i64 %136
  %139 = getelementptr i8, ptr %138, i64 8
  %140 = getelementptr double, ptr %139, i64 %109
  %141 = call i64 @f2c_idamax(ptr noundef nonnull %11, ptr noundef %140, ptr noundef nonnull @c__1) #5
  %142 = getelementptr double, ptr %138, i64 %141
  %143 = getelementptr double, ptr %142, i64 %109
  %144 = load double, ptr %143, align 8, !tbaa !9
  %145 = fcmp oge double %144, 0.000000e+00
  %146 = fneg double %144
  %147 = select i1 %145, double %144, double %146
  %148 = load i64, ptr %22, align 8, !tbaa !5
  %149 = icmp sgt i64 %148, 1
  br i1 %149, label %150, label %161

150:                                              ; preds = %134
  %151 = add nsw i64 %148, -1
  store i64 %151, ptr %11, align 8, !tbaa !5
  %152 = call i64 @f2c_idamax(ptr noundef nonnull %11, ptr noundef %gep610, ptr noundef nonnull @c__1) #5
  %153 = getelementptr double, ptr %29, i64 %152
  %154 = getelementptr double, ptr %153, i64 %109
  %155 = load double, ptr %154, align 8, !tbaa !9
  %156 = fcmp oge double %155, 0.000000e+00
  %157 = fneg double %155
  %158 = select i1 %156, double %155, double %157
  %159 = fcmp oge double %147, %158
  %160 = select i1 %159, double %147, double %158
  br label %161

161:                                              ; preds = %150, %134
  %.0 = phi double [ %160, %150 ], [ %147, %134 ]
  %162 = fdiv double %.0504, %.0
  %163 = fmul double %101, %162
  %164 = fcmp ult double %80, %163
  br i1 %164, label %167, label %165

165:                                              ; preds = %161
  %166 = load i64, ptr %17, align 8, !tbaa !5
  store i64 %166, ptr %21, align 8, !tbaa !5
  br label %179

167:                                              ; preds = %161
  %168 = load i64, ptr %22, align 8, !tbaa !5
  %169 = getelementptr double, ptr %29, i64 %168
  %170 = getelementptr double, ptr %169, i64 %109
  %171 = load double, ptr %170, align 8, !tbaa !9
  %172 = fcmp oge double %171, 0.000000e+00
  %173 = fneg double %171
  %174 = select i1 %172, double %171, double %173
  %175 = fmul double %.0, 0x3FE47E0F66AFED07
  %176 = fcmp ult double %174, %175
  store i64 %168, ptr %21, align 8, !tbaa !5
  br i1 %176, label %179, label %177

177:                                              ; preds = %167
  %178 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep610, ptr noundef nonnull @c__1, ptr noundef %gep604, ptr noundef nonnull @c__1) #5
  %.pre688 = load i64, ptr %21, align 8, !tbaa !5
  br label %179

179:                                              ; preds = %167, %165, %177, %103
  %180 = phi i64 [ %104, %103 ], [ %166, %165 ], [ %.pre688, %177 ], [ %168, %167 ]
  %181 = phi i1 [ true, %103 ], [ true, %165 ], [ true, %177 ], [ false, %167 ]
  %.0506.neg = phi i64 [ 0, %103 ], [ 0, %165 ], [ 0, %177 ], [ -1, %167 ]
  %182 = load i64, ptr %17, align 8, !tbaa !5
  %183 = add i64 %.0506.neg, %182
  store i64 %183, ptr %20, align 8, !tbaa !5
  %.not561 = icmp eq i64 %180, %183
  br i1 %.not561, label %231, label %184

184:                                              ; preds = %179
  %185 = load i64, ptr %2, align 8, !tbaa !5
  %186 = add nsw i64 %185, %183
  %187 = load i64, ptr %1, align 8, !tbaa !5
  %188 = sub i64 %186, %187
  %189 = mul nsw i64 %182, %23
  %190 = getelementptr double, ptr %25, i64 %183
  %191 = getelementptr double, ptr %190, i64 %189
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = getelementptr double, ptr %25, i64 %180
  %194 = getelementptr double, ptr %193, i64 %189
  store double %192, ptr %194, align 8, !tbaa !9
  %195 = xor i64 %180, -1
  %196 = add i64 %182, %195
  store i64 %196, ptr %11, align 8, !tbaa !5
  %197 = add nsw i64 %180, 1
  %198 = mul nsw i64 %183, %23
  %199 = getelementptr double, ptr %25, i64 %197
  %200 = getelementptr double, ptr %199, i64 %198
  %201 = mul nsw i64 %197, %23
  %202 = getelementptr double, ptr %193, i64 %201
  %203 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %200, ptr noundef nonnull @c__1, ptr noundef %202, ptr noundef nonnull %5) #5
  %204 = load i64, ptr %20, align 8, !tbaa !5
  %205 = mul nsw i64 %204, %23
  %gep614 = getelementptr double, ptr %invariant.gep, i64 %205
  %206 = load i64, ptr %21, align 8, !tbaa !5
  %207 = mul nsw i64 %206, %23
  %gep616 = getelementptr double, ptr %invariant.gep, i64 %207
  %208 = call i32 @f2c_dcopy(ptr noundef nonnull %21, ptr noundef %gep614, ptr noundef nonnull @c__1, ptr noundef %gep616, ptr noundef nonnull @c__1) #5
  %209 = load i64, ptr %1, align 8, !tbaa !5
  %210 = load i64, ptr %20, align 8, !tbaa !5
  %211 = add i64 %209, 1
  %212 = sub i64 %211, %210
  store i64 %212, ptr %11, align 8, !tbaa !5
  %213 = mul nsw i64 %210, %23
  %214 = getelementptr double, ptr %25, i64 %210
  %215 = getelementptr double, ptr %214, i64 %213
  %216 = load i64, ptr %21, align 8, !tbaa !5
  %217 = getelementptr double, ptr %25, i64 %216
  %218 = getelementptr double, ptr %217, i64 %213
  %219 = call i32 @f2c_dswap(ptr noundef nonnull %11, ptr noundef %215, ptr noundef nonnull %5, ptr noundef %218, ptr noundef nonnull %5) #5
  %220 = load i64, ptr %1, align 8, !tbaa !5
  %221 = load i64, ptr %20, align 8, !tbaa !5
  %222 = add i64 %220, 1
  %223 = sub i64 %222, %221
  store i64 %223, ptr %11, align 8, !tbaa !5
  %224 = mul nsw i64 %188, %27
  %225 = getelementptr double, ptr %29, i64 %221
  %226 = getelementptr double, ptr %225, i64 %224
  %227 = load i64, ptr %21, align 8, !tbaa !5
  %228 = getelementptr double, ptr %29, i64 %227
  %229 = getelementptr double, ptr %228, i64 %224
  %230 = call i32 @f2c_dswap(ptr noundef nonnull %11, ptr noundef %226, ptr noundef nonnull %8, ptr noundef %229, ptr noundef nonnull %8) #5
  br label %231

231:                                              ; preds = %184, %179
  %232 = load i64, ptr %17, align 8, !tbaa !5
  br i1 %181, label %233, label %244

233:                                              ; preds = %231
  %234 = mul nsw i64 %232, %23
  %gep618 = getelementptr double, ptr %invariant.gep, i64 %234
  %235 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep604, ptr noundef nonnull @c__1, ptr noundef %gep618, ptr noundef nonnull @c__1) #5
  %236 = load i64, ptr %17, align 8, !tbaa !5
  %237 = mul i64 %236, %46
  %238 = getelementptr inbounds double, ptr %25, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = fdiv double 1.000000e+00, %239
  store double %240, ptr %18, align 8, !tbaa !9
  %241 = add nsw i64 %236, -1
  store i64 %241, ptr %11, align 8, !tbaa !5
  %242 = mul nsw i64 %236, %23
  %gep620 = getelementptr double, ptr %invariant.gep, i64 %242
  %243 = call i32 @f2c_dscal(ptr noundef nonnull %11, ptr noundef nonnull %18, ptr noundef %gep620, ptr noundef nonnull @c__1) #5
  %.pre690 = load i64, ptr %21, align 8, !tbaa !5
  %.pre691 = load i64, ptr %17, align 8, !tbaa !5
  br label %313

244:                                              ; preds = %231
  %245 = icmp sgt i64 %232, 2
  %246 = add nsw i64 %232, -1
  br i1 %245, label %.lr.ph, label %._crit_edge702

._crit_edge702:                                   ; preds = %244
  %.pre711 = add nsw i64 %51, -1
  %.pre713 = mul nsw i64 %.pre711, %27
  br label %317

.lr.ph:                                           ; preds = %244
  %247 = getelementptr double, ptr %29, i64 %246
  %248 = getelementptr double, ptr %247, i64 %59
  %249 = load double, ptr %248, align 8, !tbaa !9
  %250 = getelementptr double, ptr %29, i64 %232
  %251 = getelementptr double, ptr %250, i64 %59
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = fdiv double %252, %249
  %254 = add nsw i64 %51, -1
  %255 = mul nsw i64 %254, %27
  %256 = getelementptr double, ptr %247, i64 %255
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = fdiv double %257, %249
  %259 = call double @llvm.fmuladd.f64(double %253, double %258, double -1.000000e+00)
  %260 = fdiv double 1.000000e+00, %259
  %261 = fdiv double %260, %249
  %262 = add nsw i64 %232, -2
  store i64 %262, ptr %11, align 8, !tbaa !5
  %263 = mul nsw i64 %246, %23
  %264 = mul nsw i64 %232, %23
  %265 = add nsw i64 %232, -2
  %min.iters.check = icmp ult i64 %265, 10
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %266 = shl i64 %232, 3
  %267 = add i64 %266, -16
  %268 = mul i64 %23, %267
  %scevgep = getelementptr i8, ptr %4, i64 %268
  %269 = getelementptr i8, ptr %scevgep737, i64 %268
  %scevgep738 = getelementptr i8, ptr %269, i64 %266
  %270 = add i64 %266, -8
  %271 = mul i64 %23, %270
  %scevgep739 = getelementptr i8, ptr %4, i64 %271
  %272 = getelementptr i8, ptr %scevgep740, i64 %271
  %scevgep741 = getelementptr i8, ptr %272, i64 %266
  %273 = shl i64 %50, 3
  %274 = add i64 %273, -16
  %275 = shl i64 %48, 3
  %276 = sub i64 %274, %275
  %277 = mul i64 %27, %276
  %scevgep742 = getelementptr i8, ptr %7, i64 %277
  %278 = getelementptr i8, ptr %scevgep743, i64 %277
  %scevgep744 = getelementptr i8, ptr %278, i64 %266
  %279 = shl i64 %51, 3
  %280 = add i64 %279, -8
  %281 = mul i64 %27, %280
  %scevgep745 = getelementptr i8, ptr %7, i64 %281
  %282 = getelementptr i8, ptr %scevgep746, i64 %281
  %scevgep747 = getelementptr i8, ptr %282, i64 %266
  %bound0 = icmp ult ptr %scevgep, %scevgep741
  %bound1 = icmp ult ptr %scevgep739, %scevgep738
  %found.conflict = and i1 %bound0, %bound1
  %bound0748 = icmp ult ptr %scevgep, %scevgep744
  %bound1749 = icmp ult ptr %scevgep742, %scevgep738
  %found.conflict750 = and i1 %bound0748, %bound1749
  %conflict.rdx = or i1 %found.conflict, %found.conflict750
  %bound0751 = icmp ult ptr %scevgep, %scevgep747
  %bound1752 = icmp ult ptr %scevgep745, %scevgep738
  %found.conflict753 = and i1 %bound0751, %bound1752
  %conflict.rdx754 = or i1 %conflict.rdx, %found.conflict753
  %bound0755 = icmp ult ptr %scevgep739, %scevgep744
  %bound1756 = icmp ult ptr %scevgep742, %scevgep741
  %found.conflict757 = and i1 %bound0755, %bound1756
  %conflict.rdx758 = or i1 %conflict.rdx754, %found.conflict757
  %bound0759 = icmp ult ptr %scevgep739, %scevgep747
  %bound1760 = icmp ult ptr %scevgep745, %scevgep741
  %found.conflict761 = and i1 %bound0759, %bound1760
  %conflict.rdx762 = or i1 %conflict.rdx758, %found.conflict761
  br i1 %conflict.rdx762, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %265, -2
  %ind.end = or i64 %265, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %253, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert764 = insertelement <2 x double> poison, double %261, i64 0
  %broadcast.splat765 = shufflevector <2 x double> %broadcast.splatinsert764, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert768 = insertelement <2 x double> poison, double %258, i64 0
  %broadcast.splat769 = shufflevector <2 x double> %broadcast.splatinsert768, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %283 = getelementptr double, ptr %29, i64 %offset.idx
  %284 = getelementptr double, ptr %283, i64 %255
  %wide.load = load <2 x double>, ptr %284, align 8, !tbaa !9, !alias.scope !11
  %285 = getelementptr double, ptr %283, i64 %59
  %wide.load763 = load <2 x double>, ptr %285, align 8, !tbaa !9, !alias.scope !14
  %286 = fneg <2 x double> %wide.load763
  %287 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat, <2 x double> %wide.load, <2 x double> %286)
  %288 = fmul <2 x double> %broadcast.splat765, %287
  %289 = getelementptr double, ptr %25, i64 %offset.idx
  %290 = getelementptr double, ptr %289, i64 %263
  store <2 x double> %288, ptr %290, align 8, !tbaa !9, !alias.scope !16, !noalias !18
  %wide.load766 = load <2 x double>, ptr %285, align 8, !tbaa !9, !alias.scope !14
  %wide.load767 = load <2 x double>, ptr %284, align 8, !tbaa !9, !alias.scope !11
  %291 = fneg <2 x double> %wide.load767
  %292 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat769, <2 x double> %wide.load766, <2 x double> %291)
  %293 = fmul <2 x double> %broadcast.splat765, %292
  %294 = getelementptr double, ptr %289, i64 %264
  store <2 x double> %293, ptr %294, align 8, !tbaa !9, !alias.scope !20, !noalias !21
  %index.next = add nuw i64 %index, 2
  %295 = icmp eq i64 %index.next, %n.vec
  br i1 %295, label %middle.block, label %vector.body, !llvm.loop !22

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %storemerge562602.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %storemerge562602 = phi i64 [ %312, %scalar.ph ], [ %storemerge562602.ph, %scalar.ph.preheader ]
  %296 = getelementptr double, ptr %29, i64 %storemerge562602
  %297 = getelementptr double, ptr %296, i64 %255
  %298 = load double, ptr %297, align 8, !tbaa !9
  %299 = getelementptr double, ptr %296, i64 %59
  %300 = load double, ptr %299, align 8, !tbaa !9
  %301 = fneg double %300
  %302 = call double @llvm.fmuladd.f64(double %253, double %298, double %301)
  %303 = fmul double %261, %302
  %304 = getelementptr double, ptr %25, i64 %storemerge562602
  %305 = getelementptr double, ptr %304, i64 %263
  store double %303, ptr %305, align 8, !tbaa !9
  %306 = load double, ptr %299, align 8, !tbaa !9
  %307 = load double, ptr %297, align 8, !tbaa !9
  %308 = fneg double %307
  %309 = call double @llvm.fmuladd.f64(double %258, double %306, double %308)
  %310 = fmul double %261, %309
  %311 = getelementptr double, ptr %304, i64 %264
  store double %310, ptr %311, align 8, !tbaa !9
  %312 = add nuw i64 %storemerge562602, 1
  %exitcond.not = icmp eq i64 %312, %246
  br i1 %exitcond.not, label %.loopexit596, label %scalar.ph, !llvm.loop !26

313:                                              ; preds = %99, %233
  %314 = phi i64 [ %.pre689, %99 ], [ %.pre691, %233 ]
  %315 = phi i64 [ %.pre689, %99 ], [ %.pre690, %233 ]
  %316 = getelementptr inbounds i64, ptr %26, i64 %314
  store i64 %315, ptr %316, align 8, !tbaa !5
  br label %337

.loopexit596:                                     ; preds = %scalar.ph, %middle.block
  store i64 %246, ptr %16, align 8, !tbaa !5
  br label %317

317:                                              ; preds = %._crit_edge702, %.loopexit596
  %.pre-phi714 = phi i64 [ %.pre713, %._crit_edge702 ], [ %255, %.loopexit596 ]
  %318 = getelementptr double, ptr %29, i64 %246
  %319 = getelementptr double, ptr %318, i64 %.pre-phi714
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = mul i64 %246, %46
  %322 = getelementptr inbounds double, ptr %25, i64 %321
  store double %320, ptr %322, align 8, !tbaa !9
  %323 = getelementptr double, ptr %318, i64 %59
  %324 = load double, ptr %323, align 8, !tbaa !9
  %325 = mul nsw i64 %232, %23
  %326 = getelementptr double, ptr %25, i64 %246
  %327 = getelementptr double, ptr %326, i64 %325
  store double %324, ptr %327, align 8, !tbaa !9
  %328 = getelementptr double, ptr %29, i64 %232
  %329 = getelementptr double, ptr %328, i64 %59
  %330 = load double, ptr %329, align 8, !tbaa !9
  %331 = mul i64 %232, %46
  %332 = getelementptr inbounds double, ptr %25, i64 %331
  store double %330, ptr %332, align 8, !tbaa !9
  %333 = load i64, ptr %21, align 8, !tbaa !5
  %334 = sub nsw i64 0, %333
  %335 = getelementptr inbounds i64, ptr %26, i64 %232
  store i64 %334, ptr %335, align 8, !tbaa !5
  %336 = getelementptr i8, ptr %335, i64 -8
  store i64 %334, ptr %336, align 8, !tbaa !5
  br label %337

337:                                              ; preds = %317, %313
  %338 = phi i64 [ %232, %317 ], [ %314, %313 ]
  %.1507.neg573 = phi i64 [ -2, %317 ], [ -1, %313 ]
  %339 = add i64 %338, %.1507.neg573
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  br label %47

340:                                              ; preds = %53, %56
  %341 = sub i64 0, %49
  store i64 %341, ptr %11, align 8, !tbaa !5
  %342 = add i64 %.fr564, -1
  %343 = srem i64 %342, %49
  %344 = sub i64 %.fr564, %343
  %345 = icmp slt i64 %341, 0
  %346 = icmp sgt i64 %344, 0
  %347 = icmp slt i64 %344, 2
  %.in566630 = select i1 %345, i1 %346, i1 %347
  br i1 %.in566630, label %.lr.ph633, label %._crit_edge634

.lr.ph633:                                        ; preds = %340
  %348 = add nsw i64 %51, 1
  %349 = mul nsw i64 %348, %27
  %invariant.gep624 = getelementptr double, ptr %29, i64 %349
  br label %350

350:                                              ; preds = %.lr.ph633, %._crit_edge
  %351 = phi i64 [ %344, %.lr.ph633 ], [ %380, %._crit_edge ]
  %352 = load i64, ptr %2, align 8, !tbaa !5
  %353 = load i64, ptr %17, align 8, !tbaa !5
  %354 = sub nsw i64 %353, %351
  %355 = add nsw i64 %354, 1
  %356 = call i64 @llvm.smin.i64(i64 %352, i64 %355)
  store i64 %356, ptr %19, align 8, !tbaa !5
  %357 = add i64 %351, -1
  %358 = add i64 %357, %356
  store i64 %358, ptr %12, align 8, !tbaa !5
  %.not571621 = icmp sgt i64 %351, %358
  br i1 %.not571621, label %._crit_edge, label %.lr.ph623.preheader

.lr.ph623.preheader:                              ; preds = %350
  %359 = getelementptr double, ptr %25, i64 %351
  br label %.lr.ph623

.lr.ph623:                                        ; preds = %.lr.ph623.preheader, %.lr.ph623
  %.0510622 = phi i64 [ %360, %.lr.ph623 ], [ %351, %.lr.ph623.preheader ]
  %360 = add i64 %.0510622, 1
  %361 = sub i64 %360, %351
  store i64 %361, ptr %13, align 8, !tbaa !5
  %362 = load i64, ptr %1, align 8, !tbaa !5
  %363 = load i64, ptr %17, align 8, !tbaa !5
  %364 = sub nsw i64 %362, %363
  store i64 %364, ptr %14, align 8, !tbaa !5
  %365 = add nsw i64 %363, 1
  %366 = mul nsw i64 %365, %23
  %367 = getelementptr double, ptr %359, i64 %366
  %gep625 = getelementptr double, ptr %invariant.gep624, i64 %.0510622
  %368 = mul nsw i64 %.0510622, %23
  %369 = getelementptr double, ptr %359, i64 %368
  %370 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b8, ptr noundef %367, ptr noundef nonnull %5, ptr noundef %gep625, ptr noundef nonnull %8, ptr noundef nonnull @c_b9, ptr noundef %369, ptr noundef nonnull @c__1) #5
  %371 = load i64, ptr %12, align 8, !tbaa !5
  %.not571.not = icmp slt i64 %.0510622, %371
  br i1 %.not571.not, label %.lr.ph623, label %._crit_edge.loopexit, !llvm.loop !27

._crit_edge.loopexit:                             ; preds = %.lr.ph623
  %.pre692 = load i64, ptr %17, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %350
  %372 = phi i64 [ %.pre692, %._crit_edge.loopexit ], [ %353, %350 ]
  store i64 %357, ptr %12, align 8, !tbaa !5
  %373 = load i64, ptr %1, align 8, !tbaa !5
  %374 = sub nsw i64 %373, %372
  store i64 %374, ptr %13, align 8, !tbaa !5
  %375 = add nsw i64 %372, 1
  %376 = mul nsw i64 %375, %23
  %gep627 = getelementptr double, ptr %invariant.gep, i64 %376
  %gep636 = getelementptr double, ptr %invariant.gep624, i64 %351
  %377 = mul nsw i64 %351, %23
  %gep629 = getelementptr double, ptr %invariant.gep, i64 %377
  %378 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %12, ptr noundef nonnull %19, ptr noundef nonnull %13, ptr noundef nonnull @c_b8, ptr noundef %gep627, ptr noundef nonnull %5, ptr noundef %gep636, ptr noundef nonnull %8, ptr noundef nonnull @c_b9, ptr noundef %gep629, ptr noundef nonnull %5) #5
  %379 = load i64, ptr %11, align 8, !tbaa !5
  %380 = add nsw i64 %351, %379
  %381 = icmp slt i64 %379, 0
  %382 = icmp sgt i64 %380, 0
  %383 = icmp slt i64 %380, 2
  %.in566 = select i1 %381, i1 %382, i1 %383
  br i1 %.in566, label %350, label %._crit_edge634.loopexit, !llvm.loop !28

._crit_edge634.loopexit:                          ; preds = %._crit_edge
  %.pre693 = load i64, ptr %17, align 8, !tbaa !5
  br label %._crit_edge634

._crit_edge634:                                   ; preds = %._crit_edge634.loopexit, %340
  %384 = phi i64 [ %.pre693, %._crit_edge634.loopexit ], [ %.fr564, %340 ]
  %385 = add nsw i64 %384, 1
  br label %386

386:                                              ; preds = %400, %._crit_edge634
  %387 = phi i64 [ %391, %400 ], [ %385, %._crit_edge634 ]
  %388 = getelementptr inbounds i64, ptr %26, i64 %387
  %389 = load i64, ptr %388, align 8, !tbaa !5
  %.lobit = lshr i64 %389, 63
  %390 = add nsw i64 %387, %.lobit
  %.0508 = call i64 @llvm.abs.i64(i64 %389, i1 true)
  %391 = add nsw i64 %390, 1
  %.not567 = icmp ne i64 %.0508, %387
  %.pre695 = load i64, ptr %1, align 8, !tbaa !5
  %.not568.not = icmp slt i64 %390, %.pre695
  %or.cond722 = select i1 %.not567, i1 %.not568.not, i1 false
  br i1 %or.cond722, label %392, label %400

392:                                              ; preds = %386
  %393 = sub i64 %.pre695, %390
  store i64 %393, ptr %11, align 8, !tbaa !5
  %394 = mul nsw i64 %391, %23
  %395 = getelementptr double, ptr %25, i64 %.0508
  %396 = getelementptr double, ptr %395, i64 %394
  %397 = getelementptr double, ptr %25, i64 %387
  %398 = getelementptr double, ptr %397, i64 %394
  %399 = call i32 @f2c_dswap(ptr noundef nonnull %11, ptr noundef %396, ptr noundef nonnull %5, ptr noundef %398, ptr noundef nonnull %5) #5
  %.pre694 = load i64, ptr %1, align 8, !tbaa !5
  br label %400

400:                                              ; preds = %392, %386
  %401 = phi i64 [ %.pre694, %392 ], [ %.pre695, %386 ]
  %.not569.not = icmp slt i64 %390, %401
  br i1 %.not569.not, label %386, label %402

402:                                              ; preds = %400
  %403 = load i64, ptr %17, align 8, !tbaa !5
  %404 = sub nsw i64 %401, %403
  br label %779

405:                                              ; preds = %.lr.ph733, %714
  %.pre696732 = phi i64 [ %.pre696728, %.lr.ph733 ], [ %.pre696, %714 ]
  %storemerge731 = phi i64 [ 1, %.lr.ph733 ], [ %716, %714 ]
  %reass.sub677 = sub i64 %.pre696732, %storemerge731
  %406 = add i64 %reass.sub677, 1
  store i64 %406, ptr %11, align 8, !tbaa !5
  %407 = mul i64 %storemerge731, %31
  %408 = getelementptr inbounds double, ptr %25, i64 %407
  %409 = mul i64 %storemerge731, %32
  %410 = getelementptr inbounds double, ptr %29, i64 %409
  %411 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %408, ptr noundef nonnull @c__1, ptr noundef %410, ptr noundef nonnull @c__1) #5
  %412 = load i64, ptr %1, align 8, !tbaa !5
  %413 = load i64, ptr %17, align 8, !tbaa !5
  %414 = add i64 %412, 1
  %415 = sub i64 %414, %413
  store i64 %415, ptr %11, align 8, !tbaa !5
  %416 = add nsw i64 %413, -1
  store i64 %416, ptr %12, align 8, !tbaa !5
  %gep643 = getelementptr double, ptr %invariant.gep642, i64 %413
  %gep645 = getelementptr double, ptr %invariant.gep644, i64 %413
  %417 = mul i64 %413, %32
  %418 = getelementptr inbounds double, ptr %29, i64 %417
  %419 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull @c_b8, ptr noundef %gep643, ptr noundef nonnull %5, ptr noundef %gep645, ptr noundef nonnull %8, ptr noundef nonnull @c_b9, ptr noundef %418, ptr noundef nonnull @c__1) #5
  %420 = load i64, ptr %17, align 8, !tbaa !5
  %421 = mul i64 %420, %32
  %422 = getelementptr inbounds double, ptr %29, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = fcmp oge double %423, 0.000000e+00
  %425 = fneg double %423
  %426 = select i1 %424, double %423, double %425
  %427 = load i64, ptr %1, align 8, !tbaa !5
  %428 = icmp slt i64 %420, %427
  br i1 %428, label %429, label %443

429:                                              ; preds = %405
  %430 = sub nsw i64 %427, %420
  store i64 %430, ptr %11, align 8, !tbaa !5
  %431 = mul nsw i64 %420, %27
  %gep647 = getelementptr double, ptr %invariant.gep646, i64 %420
  %432 = getelementptr double, ptr %gep647, i64 %431
  %433 = call i64 @f2c_idamax(ptr noundef nonnull %11, ptr noundef %432, ptr noundef nonnull @c__1) #5
  %434 = add nsw i64 %433, %420
  store i64 %434, ptr %22, align 8, !tbaa !5
  %435 = load i64, ptr %17, align 8, !tbaa !5
  %436 = mul nsw i64 %435, %27
  %437 = getelementptr double, ptr %29, i64 %434
  %438 = getelementptr double, ptr %437, i64 %436
  %439 = load double, ptr %438, align 8, !tbaa !9
  %440 = fcmp oge double %439, 0.000000e+00
  %441 = fneg double %439
  %442 = select i1 %440, double %439, double %441
  br label %443

443:                                              ; preds = %405, %429
  %444 = phi i64 [ %435, %429 ], [ %420, %405 ]
  %.1505 = phi double [ %442, %429 ], [ 0.000000e+00, %405 ]
  %445 = fcmp oge double %426, %.1505
  %446 = select i1 %445, double %426, double %.1505
  %447 = fcmp oeq double %446, 0.000000e+00
  br i1 %447, label %448, label %453

448:                                              ; preds = %443
  %449 = load i64, ptr %9, align 8, !tbaa !5
  %450 = icmp eq i64 %449, 0
  br i1 %450, label %451, label %452

451:                                              ; preds = %448
  store i64 %444, ptr %9, align 8, !tbaa !5
  br label %452

452:                                              ; preds = %451, %448
  store i64 %444, ptr %21, align 8, !tbaa !5
  br label %690

453:                                              ; preds = %443
  %454 = fmul double %.1505, 0x3FE47E0F66AFED07
  %455 = fcmp ult double %426, %454
  br i1 %455, label %457, label %456

456:                                              ; preds = %453
  store i64 %444, ptr %21, align 8, !tbaa !5
  br label %555

457:                                              ; preds = %453
  %458 = load i64, ptr %22, align 8, !tbaa !5
  %459 = sub nsw i64 %458, %444
  store i64 %459, ptr %11, align 8, !tbaa !5
  %460 = mul nsw i64 %444, %23
  %461 = getelementptr double, ptr %25, i64 %458
  %462 = getelementptr double, ptr %461, i64 %460
  %463 = add nsw i64 %444, 1
  %464 = mul nsw i64 %463, %27
  %465 = getelementptr double, ptr %29, i64 %444
  %466 = getelementptr double, ptr %465, i64 %464
  %467 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %462, ptr noundef nonnull %5, ptr noundef %466, ptr noundef nonnull @c__1) #5
  %468 = load i64, ptr %1, align 8, !tbaa !5
  %469 = load i64, ptr %22, align 8, !tbaa !5
  %470 = add i64 %468, 1
  %471 = sub i64 %470, %469
  store i64 %471, ptr %11, align 8, !tbaa !5
  %472 = mul i64 %469, %31
  %473 = getelementptr inbounds double, ptr %25, i64 %472
  %474 = load i64, ptr %17, align 8, !tbaa !5
  %475 = add nsw i64 %474, 1
  %476 = mul nsw i64 %475, %27
  %477 = getelementptr double, ptr %29, i64 %469
  %478 = getelementptr double, ptr %477, i64 %476
  %479 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %473, ptr noundef nonnull @c__1, ptr noundef %478, ptr noundef nonnull @c__1) #5
  %480 = load i64, ptr %1, align 8, !tbaa !5
  %481 = load i64, ptr %17, align 8, !tbaa !5
  %482 = add i64 %480, 1
  %483 = sub i64 %482, %481
  store i64 %483, ptr %11, align 8, !tbaa !5
  %484 = add nsw i64 %481, -1
  store i64 %484, ptr %12, align 8, !tbaa !5
  %gep649 = getelementptr double, ptr %invariant.gep642, i64 %481
  %485 = load i64, ptr %22, align 8, !tbaa !5
  %gep651 = getelementptr double, ptr %invariant.gep644, i64 %485
  %486 = add nsw i64 %481, 1
  %487 = mul nsw i64 %486, %27
  %488 = getelementptr double, ptr %29, i64 %481
  %489 = getelementptr double, ptr %488, i64 %487
  %490 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull @c_b8, ptr noundef %gep649, ptr noundef nonnull %5, ptr noundef %gep651, ptr noundef nonnull %8, ptr noundef nonnull @c_b9, ptr noundef %489, ptr noundef nonnull @c__1) #5
  %491 = load i64, ptr %22, align 8, !tbaa !5
  %492 = load i64, ptr %17, align 8, !tbaa !5
  %493 = sub nsw i64 %491, %492
  store i64 %493, ptr %11, align 8, !tbaa !5
  %494 = add nsw i64 %492, 1
  %495 = mul nsw i64 %494, %27
  %496 = getelementptr double, ptr %29, i64 %492
  %497 = getelementptr double, ptr %496, i64 %495
  %498 = call i64 @f2c_idamax(ptr noundef nonnull %11, ptr noundef %497, ptr noundef nonnull @c__1) #5
  %499 = load i64, ptr %17, align 8, !tbaa !5
  %500 = add nsw i64 %499, 1
  %501 = mul nsw i64 %500, %27
  %502 = getelementptr i8, ptr %496, i64 -8
  %503 = getelementptr double, ptr %502, i64 %498
  %504 = getelementptr double, ptr %503, i64 %501
  %505 = load double, ptr %504, align 8, !tbaa !9
  %506 = fcmp oge double %505, 0.000000e+00
  %507 = fneg double %505
  %508 = select i1 %506, double %505, double %507
  %509 = load i64, ptr %22, align 8, !tbaa !5
  %510 = load i64, ptr %1, align 8, !tbaa !5
  %511 = icmp slt i64 %509, %510
  br i1 %511, label %512, label %529

512:                                              ; preds = %457
  %513 = sub nsw i64 %510, %509
  store i64 %513, ptr %11, align 8, !tbaa !5
  %514 = getelementptr double, ptr %29, i64 %509
  %515 = getelementptr i8, ptr %514, i64 8
  %516 = getelementptr double, ptr %515, i64 %501
  %517 = call i64 @f2c_idamax(ptr noundef nonnull %11, ptr noundef %516, ptr noundef nonnull @c__1) #5
  %518 = load i64, ptr %17, align 8, !tbaa !5
  %519 = add nsw i64 %518, 1
  %520 = mul nsw i64 %519, %27
  %521 = getelementptr double, ptr %514, i64 %517
  %522 = getelementptr double, ptr %521, i64 %520
  %523 = load double, ptr %522, align 8, !tbaa !9
  %524 = fcmp oge double %523, 0.000000e+00
  %525 = fneg double %523
  %526 = select i1 %524, double %523, double %525
  %527 = fcmp oge double %508, %526
  %528 = select i1 %527, double %508, double %526
  br label %529

529:                                              ; preds = %512, %457
  %530 = phi i64 [ %518, %512 ], [ %499, %457 ]
  %.1 = phi double [ %528, %512 ], [ %508, %457 ]
  %531 = fdiv double %.1505, %.1
  %532 = fmul double %454, %531
  %533 = fcmp ult double %426, %532
  br i1 %533, label %535, label %534

534:                                              ; preds = %529
  store i64 %530, ptr %21, align 8, !tbaa !5
  br label %555

535:                                              ; preds = %529
  %536 = load i64, ptr %22, align 8, !tbaa !5
  %537 = add nsw i64 %530, 1
  %538 = mul nsw i64 %537, %27
  %539 = getelementptr double, ptr %29, i64 %536
  %540 = getelementptr double, ptr %539, i64 %538
  %541 = load double, ptr %540, align 8, !tbaa !9
  %542 = fcmp oge double %541, 0.000000e+00
  %543 = fneg double %541
  %544 = select i1 %542, double %541, double %543
  %545 = fmul double %.1, 0x3FE47E0F66AFED07
  %546 = fcmp ult double %544, %545
  store i64 %536, ptr %21, align 8, !tbaa !5
  br i1 %546, label %555, label %547

547:                                              ; preds = %535
  %548 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub678 = sub i64 %548, %530
  %549 = add i64 %reass.sub678, 1
  store i64 %549, ptr %11, align 8, !tbaa !5
  %550 = getelementptr double, ptr %29, i64 %530
  %551 = getelementptr double, ptr %550, i64 %538
  %552 = mul i64 %530, %32
  %553 = getelementptr inbounds double, ptr %29, i64 %552
  %554 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %551, ptr noundef nonnull @c__1, ptr noundef %553, ptr noundef nonnull @c__1) #5
  %.pre697 = load i64, ptr %17, align 8, !tbaa !5
  %.pre698 = load i64, ptr %21, align 8, !tbaa !5
  br label %555

555:                                              ; preds = %535, %534, %547, %456
  %556 = phi i64 [ %444, %456 ], [ %530, %534 ], [ %.pre698, %547 ], [ %536, %535 ]
  %557 = phi i64 [ %444, %456 ], [ %530, %534 ], [ %.pre697, %547 ], [ %530, %535 ]
  %558 = phi i1 [ true, %456 ], [ true, %534 ], [ true, %547 ], [ false, %535 ]
  %.2 = phi i64 [ 0, %456 ], [ 0, %534 ], [ 0, %547 ], [ 1, %535 ]
  %559 = add i64 %.2, %557
  store i64 %559, ptr %20, align 8, !tbaa !5
  %.not551 = icmp eq i64 %556, %559
  br i1 %.not551, label %593, label %560

560:                                              ; preds = %555
  %561 = mul nsw i64 %557, %23
  %562 = getelementptr double, ptr %25, i64 %559
  %563 = getelementptr double, ptr %562, i64 %561
  %564 = load double, ptr %563, align 8, !tbaa !9
  %565 = getelementptr double, ptr %25, i64 %556
  %566 = getelementptr double, ptr %565, i64 %561
  store double %564, ptr %566, align 8, !tbaa !9
  %567 = xor i64 %557, -1
  %568 = add i64 %556, %567
  store i64 %568, ptr %11, align 8, !tbaa !5
  %569 = add nsw i64 %557, 1
  %570 = mul nsw i64 %559, %23
  %571 = getelementptr double, ptr %25, i64 %569
  %572 = getelementptr double, ptr %571, i64 %570
  %573 = mul nsw i64 %569, %23
  %574 = getelementptr double, ptr %565, i64 %573
  %575 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %572, ptr noundef nonnull @c__1, ptr noundef %574, ptr noundef nonnull %5) #5
  %576 = load i64, ptr %1, align 8, !tbaa !5
  %577 = load i64, ptr %21, align 8, !tbaa !5
  %578 = add i64 %576, 1
  %579 = sub i64 %578, %577
  store i64 %579, ptr %11, align 8, !tbaa !5
  %580 = load i64, ptr %20, align 8, !tbaa !5
  %581 = mul nsw i64 %580, %23
  %582 = getelementptr double, ptr %25, i64 %577
  %583 = getelementptr double, ptr %582, i64 %581
  %584 = mul i64 %577, %31
  %585 = getelementptr inbounds double, ptr %25, i64 %584
  %586 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %583, ptr noundef nonnull @c__1, ptr noundef %585, ptr noundef nonnull @c__1) #5
  %587 = load i64, ptr %20, align 8, !tbaa !5
  %gep653 = getelementptr double, ptr %invariant.gep642, i64 %587
  %588 = load i64, ptr %21, align 8, !tbaa !5
  %gep655 = getelementptr double, ptr %invariant.gep642, i64 %588
  %589 = call i32 @f2c_dswap(ptr noundef nonnull %20, ptr noundef %gep653, ptr noundef nonnull %5, ptr noundef %gep655, ptr noundef nonnull %5) #5
  %590 = load i64, ptr %20, align 8, !tbaa !5
  %gep657 = getelementptr double, ptr %invariant.gep644, i64 %590
  %591 = load i64, ptr %21, align 8, !tbaa !5
  %gep659 = getelementptr double, ptr %invariant.gep644, i64 %591
  %592 = call i32 @f2c_dswap(ptr noundef nonnull %20, ptr noundef %gep657, ptr noundef nonnull %8, ptr noundef %gep659, ptr noundef nonnull %8) #5
  br label %593

593:                                              ; preds = %560, %555
  br i1 %558, label %594, label %616

594:                                              ; preds = %593
  %595 = load i64, ptr %1, align 8, !tbaa !5
  %596 = load i64, ptr %17, align 8, !tbaa !5
  %597 = add i64 %595, 1
  %598 = sub i64 %597, %596
  store i64 %598, ptr %11, align 8, !tbaa !5
  %599 = mul i64 %596, %32
  %600 = getelementptr inbounds double, ptr %29, i64 %599
  %601 = mul i64 %596, %31
  %602 = getelementptr inbounds double, ptr %25, i64 %601
  %603 = call i32 @f2c_dcopy(ptr noundef nonnull %11, ptr noundef %600, ptr noundef nonnull @c__1, ptr noundef %602, ptr noundef nonnull @c__1) #5
  %604 = load i64, ptr %17, align 8, !tbaa !5
  %605 = load i64, ptr %1, align 8, !tbaa !5
  %606 = icmp slt i64 %604, %605
  br i1 %606, label %607, label %690

607:                                              ; preds = %594
  %608 = mul i64 %604, %31
  %609 = getelementptr inbounds double, ptr %25, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !9
  %611 = fdiv double 1.000000e+00, %610
  store double %611, ptr %18, align 8, !tbaa !9
  %612 = sub nsw i64 %605, %604
  store i64 %612, ptr %11, align 8, !tbaa !5
  %613 = mul nsw i64 %604, %23
  %gep661 = getelementptr double, ptr %invariant.gep660, i64 %604
  %614 = getelementptr double, ptr %gep661, i64 %613
  %615 = call i32 @f2c_dscal(ptr noundef nonnull %11, ptr noundef nonnull %18, ptr noundef %614, ptr noundef nonnull @c__1) #5
  %.pre699 = load i64, ptr %17, align 8, !tbaa !5
  br label %690

616:                                              ; preds = %593
  %617 = load i64, ptr %17, align 8, !tbaa !5
  %618 = load i64, ptr %1, align 8, !tbaa !5
  %619 = add nsw i64 %618, -1
  %620 = icmp slt i64 %617, %619
  %621 = add nsw i64 %617, 1
  %622 = mul nsw i64 %617, %27
  br i1 %620, label %623, label %._crit_edge703

._crit_edge703:                                   ; preds = %616
  %.pre707 = mul i64 %621, %32
  br label %694

623:                                              ; preds = %616
  %624 = getelementptr double, ptr %29, i64 %621
  %625 = getelementptr double, ptr %624, i64 %622
  %626 = load double, ptr %625, align 8, !tbaa !9
  %627 = mul i64 %621, %32
  %628 = getelementptr inbounds double, ptr %29, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !9
  %630 = fdiv double %629, %626
  %631 = getelementptr double, ptr %29, i64 %617
  %632 = getelementptr double, ptr %631, i64 %622
  %633 = load double, ptr %632, align 8, !tbaa !9
  %634 = fdiv double %633, %626
  %635 = call double @llvm.fmuladd.f64(double %630, double %634, double -1.000000e+00)
  %636 = fdiv double 1.000000e+00, %635
  %637 = fdiv double %636, %626
  store i64 %618, ptr %11, align 8, !tbaa !5
  %638 = add nsw i64 %617, 2
  %.not553637 = icmp sgt i64 %638, %618
  br i1 %.not553637, label %.loopexit, label %.lr.ph640

.lr.ph640:                                        ; preds = %623
  %639 = mul nsw i64 %621, %27
  %640 = mul nsw i64 %617, %23
  %641 = mul nsw i64 %621, %23
  %642 = add i64 %618, 1
  %643 = xor i64 %617, -1
  %644 = add i64 %618, %643
  %min.iters.check804 = icmp ult i64 %644, 10
  br i1 %min.iters.check804, label %scalar.ph803.preheader, label %vector.memcheck770

vector.memcheck770:                               ; preds = %.lr.ph640
  %645 = mul i64 %38, %617
  %scevgep772 = getelementptr i8, ptr %scevgep771, i64 %645
  %646 = shl i64 %618, 3
  %647 = add i64 %645, %646
  %648 = add i64 %23, %617
  %649 = shl i64 %648, 3
  %650 = sub i64 %647, %649
  %scevgep773 = getelementptr i8, ptr %4, i64 %650
  %scevgep775 = getelementptr i8, ptr %scevgep774, i64 %645
  %651 = mul i64 %39, %617
  %652 = getelementptr i8, ptr %4, i64 %651
  %scevgep776 = getelementptr i8, ptr %652, i64 %646
  %653 = mul i64 %42, %617
  %scevgep778 = getelementptr i8, ptr %scevgep777, i64 %653
  %654 = add i64 %653, %646
  %655 = add i64 %27, %617
  %656 = shl i64 %655, 3
  %657 = sub i64 %654, %656
  %scevgep779 = getelementptr i8, ptr %7, i64 %657
  %scevgep781 = getelementptr i8, ptr %scevgep780, i64 %653
  %658 = mul i64 %43, %617
  %659 = getelementptr i8, ptr %7, i64 %658
  %scevgep782 = getelementptr i8, ptr %659, i64 %646
  %bound0783 = icmp ult ptr %scevgep772, %scevgep776
  %bound1784 = icmp ult ptr %scevgep775, %scevgep773
  %found.conflict785 = and i1 %bound0783, %bound1784
  %bound0786 = icmp ult ptr %scevgep772, %scevgep779
  %bound1787 = icmp ult ptr %scevgep778, %scevgep773
  %found.conflict788 = and i1 %bound0786, %bound1787
  %conflict.rdx789 = or i1 %found.conflict785, %found.conflict788
  %bound0790 = icmp ult ptr %scevgep772, %scevgep782
  %bound1791 = icmp ult ptr %scevgep781, %scevgep773
  %found.conflict792 = and i1 %bound0790, %bound1791
  %conflict.rdx793 = or i1 %conflict.rdx789, %found.conflict792
  %bound0794 = icmp ult ptr %scevgep775, %scevgep779
  %bound1795 = icmp ult ptr %scevgep778, %scevgep776
  %found.conflict796 = and i1 %bound0794, %bound1795
  %conflict.rdx797 = or i1 %conflict.rdx793, %found.conflict796
  %bound0798 = icmp ult ptr %scevgep775, %scevgep782
  %bound1799 = icmp ult ptr %scevgep781, %scevgep776
  %found.conflict800 = and i1 %bound0798, %bound1799
  %conflict.rdx801 = or i1 %conflict.rdx797, %found.conflict800
  br i1 %conflict.rdx801, label %scalar.ph803.preheader, label %vector.ph805

vector.ph805:                                     ; preds = %vector.memcheck770
  %n.vec807 = and i64 %644, -2
  %ind.end808 = add i64 %638, %n.vec807
  %broadcast.splatinsert815 = insertelement <2 x double> poison, double %630, i64 0
  %broadcast.splat816 = shufflevector <2 x double> %broadcast.splatinsert815, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert817 = insertelement <2 x double> poison, double %637, i64 0
  %broadcast.splat818 = shufflevector <2 x double> %broadcast.splatinsert817, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert821 = insertelement <2 x double> poison, double %634, i64 0
  %broadcast.splat822 = shufflevector <2 x double> %broadcast.splatinsert821, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body810

vector.body810:                                   ; preds = %vector.body810, %vector.ph805
  %index811 = phi i64 [ 0, %vector.ph805 ], [ %index.next823, %vector.body810 ]
  %offset.idx812 = add i64 %638, %index811
  %660 = getelementptr double, ptr %29, i64 %offset.idx812
  %661 = getelementptr double, ptr %660, i64 %622
  %wide.load813 = load <2 x double>, ptr %661, align 8, !tbaa !9, !alias.scope !29
  %662 = getelementptr double, ptr %660, i64 %639
  %wide.load814 = load <2 x double>, ptr %662, align 8, !tbaa !9, !alias.scope !32
  %663 = fneg <2 x double> %wide.load814
  %664 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat816, <2 x double> %wide.load813, <2 x double> %663)
  %665 = fmul <2 x double> %broadcast.splat818, %664
  %666 = getelementptr double, ptr %25, i64 %offset.idx812
  %667 = getelementptr double, ptr %666, i64 %640
  store <2 x double> %665, ptr %667, align 8, !tbaa !9, !alias.scope !34, !noalias !36
  %wide.load819 = load <2 x double>, ptr %662, align 8, !tbaa !9, !alias.scope !32
  %wide.load820 = load <2 x double>, ptr %661, align 8, !tbaa !9, !alias.scope !29
  %668 = fneg <2 x double> %wide.load820
  %669 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat822, <2 x double> %wide.load819, <2 x double> %668)
  %670 = fmul <2 x double> %broadcast.splat818, %669
  %671 = getelementptr double, ptr %666, i64 %641
  store <2 x double> %670, ptr %671, align 8, !tbaa !9, !alias.scope !38, !noalias !39
  %index.next823 = add nuw i64 %index811, 2
  %672 = icmp eq i64 %index.next823, %n.vec807
  br i1 %672, label %middle.block802, label %vector.body810, !llvm.loop !40

middle.block802:                                  ; preds = %vector.body810
  %cmp.n824 = icmp eq i64 %644, %n.vec807
  br i1 %cmp.n824, label %.loopexit, label %scalar.ph803.preheader

scalar.ph803.preheader:                           ; preds = %middle.block802, %vector.memcheck770, %.lr.ph640
  %storemerge552638.ph = phi i64 [ %638, %vector.memcheck770 ], [ %638, %.lr.ph640 ], [ %ind.end808, %middle.block802 ]
  br label %scalar.ph803

scalar.ph803:                                     ; preds = %scalar.ph803.preheader, %scalar.ph803
  %storemerge552638 = phi i64 [ %689, %scalar.ph803 ], [ %storemerge552638.ph, %scalar.ph803.preheader ]
  %673 = getelementptr double, ptr %29, i64 %storemerge552638
  %674 = getelementptr double, ptr %673, i64 %622
  %675 = load double, ptr %674, align 8, !tbaa !9
  %676 = getelementptr double, ptr %673, i64 %639
  %677 = load double, ptr %676, align 8, !tbaa !9
  %678 = fneg double %677
  %679 = call double @llvm.fmuladd.f64(double %630, double %675, double %678)
  %680 = fmul double %637, %679
  %681 = getelementptr double, ptr %25, i64 %storemerge552638
  %682 = getelementptr double, ptr %681, i64 %640
  store double %680, ptr %682, align 8, !tbaa !9
  %683 = load double, ptr %676, align 8, !tbaa !9
  %684 = load double, ptr %674, align 8, !tbaa !9
  %685 = fneg double %684
  %686 = call double @llvm.fmuladd.f64(double %634, double %683, double %685)
  %687 = fmul double %637, %686
  %688 = getelementptr double, ptr %681, i64 %641
  store double %687, ptr %688, align 8, !tbaa !9
  %689 = add i64 %storemerge552638, 1
  %exitcond686.not = icmp eq i64 %storemerge552638, %618
  br i1 %exitcond686.not, label %.loopexit, label %scalar.ph803, !llvm.loop !41

690:                                              ; preds = %452, %607, %594
  %691 = phi i64 [ %444, %452 ], [ %.pre699, %607 ], [ %604, %594 ]
  %692 = load i64, ptr %21, align 8, !tbaa !5
  %693 = getelementptr inbounds i64, ptr %26, i64 %691
  store i64 %692, ptr %693, align 8, !tbaa !5
  br label %714

.loopexit:                                        ; preds = %scalar.ph803, %middle.block802, %623
  %storemerge552.lcssa = phi i64 [ %638, %623 ], [ %642, %middle.block802 ], [ %642, %scalar.ph803 ]
  store i64 %storemerge552.lcssa, ptr %16, align 8, !tbaa !5
  br label %694

694:                                              ; preds = %._crit_edge703, %.loopexit
  %.pre-phi708 = phi i64 [ %.pre707, %._crit_edge703 ], [ %627, %.loopexit ]
  %695 = mul i64 %617, %32
  %696 = getelementptr inbounds double, ptr %29, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !9
  %698 = mul i64 %617, %31
  %699 = getelementptr inbounds double, ptr %25, i64 %698
  store double %697, ptr %699, align 8, !tbaa !9
  %700 = getelementptr double, ptr %29, i64 %621
  %701 = getelementptr double, ptr %700, i64 %622
  %702 = load double, ptr %701, align 8, !tbaa !9
  %703 = mul nsw i64 %617, %23
  %704 = getelementptr double, ptr %25, i64 %621
  %705 = getelementptr double, ptr %704, i64 %703
  store double %702, ptr %705, align 8, !tbaa !9
  %706 = getelementptr inbounds double, ptr %29, i64 %.pre-phi708
  %707 = load double, ptr %706, align 8, !tbaa !9
  %708 = mul i64 %621, %31
  %709 = getelementptr inbounds double, ptr %25, i64 %708
  store double %707, ptr %709, align 8, !tbaa !9
  %710 = load i64, ptr %21, align 8, !tbaa !5
  %711 = sub nsw i64 0, %710
  %712 = getelementptr inbounds i64, ptr %26, i64 %617
  store i64 %711, ptr %712, align 8, !tbaa !5
  %713 = getelementptr i64, ptr %6, i64 %617
  store i64 %711, ptr %713, align 8, !tbaa !5
  br label %714

714:                                              ; preds = %694, %690
  %715 = phi i64 [ %617, %694 ], [ %691, %690 ]
  %.3578 = phi i64 [ 2, %694 ], [ 1, %690 ]
  %716 = add nsw i64 %715, %.3578
  store i64 %716, ptr %17, align 8, !tbaa !5
  %717 = load i64, ptr %2, align 8, !tbaa !5
  %.not550 = icmp sge i64 %716, %717
  %.pre696 = load i64, ptr %1, align 8, !tbaa !5
  %718 = icmp slt i64 %717, %.pre696
  %or.cond715 = select i1 %.not550, i1 %718, i1 false
  %719 = icmp sgt i64 %716, %.pre696
  %or.cond716 = select i1 %or.cond715, i1 true, i1 %719
  br i1 %or.cond716, label %._crit_edge734, label %405

._crit_edge734:                                   ; preds = %714, %.preheader
  %storemerge.lcssa = phi i64 [ 1, %.preheader ], [ %716, %714 ]
  %.lcssa = phi i64 [ %33, %.preheader ], [ %717, %714 ]
  %.pre696.lcssa = phi i64 [ %.pre696728, %.preheader ], [ %.pre696, %714 ]
  store i64 %.pre696.lcssa, ptr %11, align 8, !tbaa !5
  store i64 %.lcssa, ptr %12, align 8, !tbaa !5
  br label %720

720:                                              ; preds = %757, %._crit_edge734
  %721 = phi i64 [ %758, %757 ], [ %.lcssa, %._crit_edge734 ]
  %722 = phi i64 [ %759, %757 ], [ %storemerge.lcssa, %._crit_edge734 ]
  %723 = icmp slt i64 %721, 0
  %724 = load i64, ptr %11, align 8, !tbaa !5
  br i1 %723, label %725, label %726

725:                                              ; preds = %720
  %.not582 = icmp slt i64 %722, %724
  br i1 %.not582, label %760, label %727

726:                                              ; preds = %720
  %.not581 = icmp sgt i64 %722, %724
  br i1 %.not581, label %760, label %727

727:                                              ; preds = %725, %726
  %728 = load i64, ptr %2, align 8, !tbaa !5
  %729 = load i64, ptr %1, align 8, !tbaa !5
  %730 = sub nsw i64 %729, %722
  %731 = add nsw i64 %730, 1
  store i64 %731, ptr %14, align 8, !tbaa !5
  %732 = call i64 @llvm.smin.i64(i64 %728, i64 %731)
  store i64 %732, ptr %19, align 8, !tbaa !5
  %733 = add i64 %722, -1
  %734 = add i64 %733, %732
  store i64 %734, ptr %13, align 8, !tbaa !5
  %.not557666 = icmp sgt i64 %722, %734
  br i1 %.not557666, label %._crit_edge670, label %.lr.ph669

.lr.ph669:                                        ; preds = %727, %.lr.ph669
  %.1511667 = phi i64 [ %743, %.lr.ph669 ], [ %722, %727 ]
  %735 = load i64, ptr %19, align 8, !tbaa !5
  %736 = sub i64 %722, %.1511667
  %737 = add i64 %736, %735
  store i64 %737, ptr %14, align 8, !tbaa !5
  %738 = load i64, ptr %17, align 8, !tbaa !5
  %739 = add nsw i64 %738, -1
  store i64 %739, ptr %15, align 8, !tbaa !5
  %gep663 = getelementptr double, ptr %invariant.gep642, i64 %.1511667
  %gep665 = getelementptr double, ptr %invariant.gep644, i64 %.1511667
  %740 = mul i64 %.1511667, %31
  %741 = getelementptr inbounds double, ptr %25, i64 %740
  %742 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.1, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull @c_b8, ptr noundef %gep663, ptr noundef nonnull %5, ptr noundef %gep665, ptr noundef nonnull %8, ptr noundef nonnull @c_b9, ptr noundef %741, ptr noundef nonnull @c__1) #5
  %743 = add nsw i64 %.1511667, 1
  %744 = load i64, ptr %13, align 8, !tbaa !5
  %.not557.not = icmp slt i64 %.1511667, %744
  br i1 %.not557.not, label %.lr.ph669, label %._crit_edge670.loopexit, !llvm.loop !42

._crit_edge670.loopexit:                          ; preds = %.lr.ph669
  %.pre700 = load i64, ptr %19, align 8, !tbaa !5
  %.pre701 = load i64, ptr %1, align 8, !tbaa !5
  br label %._crit_edge670

._crit_edge670:                                   ; preds = %._crit_edge670.loopexit, %727
  %745 = phi i64 [ %.pre701, %._crit_edge670.loopexit ], [ %729, %727 ]
  %746 = phi i64 [ %.pre700, %._crit_edge670.loopexit ], [ %732, %727 ]
  %747 = add nsw i64 %746, %722
  %.not558 = icmp sgt i64 %747, %745
  br i1 %.not558, label %757, label %748

748:                                              ; preds = %._crit_edge670
  %reass.sub679 = sub i64 %745, %747
  %749 = add i64 %reass.sub679, 1
  store i64 %749, ptr %13, align 8, !tbaa !5
  %750 = load i64, ptr %17, align 8, !tbaa !5
  %751 = add nsw i64 %750, -1
  store i64 %751, ptr %14, align 8, !tbaa !5
  %752 = getelementptr double, ptr %25, i64 %747
  %753 = getelementptr double, ptr %752, i64 %23
  %gep672 = getelementptr double, ptr %invariant.gep644, i64 %722
  %754 = mul nsw i64 %722, %23
  %755 = getelementptr double, ptr %752, i64 %754
  %756 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %13, ptr noundef nonnull %19, ptr noundef nonnull %14, ptr noundef nonnull @c_b8, ptr noundef %753, ptr noundef nonnull %5, ptr noundef %gep672, ptr noundef nonnull %8, ptr noundef nonnull @c_b9, ptr noundef %755, ptr noundef nonnull %5) #5
  br label %757

757:                                              ; preds = %._crit_edge670, %748
  %758 = load i64, ptr %12, align 8, !tbaa !5
  %759 = add nsw i64 %722, %758
  br label %720, !llvm.loop !43

760:                                              ; preds = %725, %726
  %761 = load i64, ptr %17, align 8, !tbaa !5
  %762 = add nsw i64 %761, -1
  br label %763

763:                                              ; preds = %773, %760
  %764 = phi i64 [ %774, %773 ], [ %762, %760 ]
  %765 = getelementptr inbounds i64, ptr %26, i64 %764
  %766 = load i64, ptr %765, align 8, !tbaa !5
  %.lobit723 = ashr i64 %766, 63
  %767 = add nsw i64 %764, %.lobit723
  %.1509 = call i64 @llvm.abs.i64(i64 %766, i1 true)
  %768 = add nsw i64 %767, -1
  store i64 %768, ptr %16, align 8, !tbaa !5
  %769 = icmp ne i64 %.1509, %764
  %770 = icmp sgt i64 %767, 1
  %or.cond4 = select i1 %769, i1 %770, i1 false
  br i1 %or.cond4, label %771, label %773

771:                                              ; preds = %763
  %gep674 = getelementptr double, ptr %invariant.gep642, i64 %.1509
  %gep676 = getelementptr double, ptr %invariant.gep642, i64 %764
  %772 = call i32 @f2c_dswap(ptr noundef nonnull %16, ptr noundef %gep674, ptr noundef nonnull %5, ptr noundef %gep676, ptr noundef nonnull %5) #5
  %.pr580 = load i64, ptr %16, align 8, !tbaa !5
  br label %773

773:                                              ; preds = %771, %763
  %774 = phi i64 [ %.pr580, %771 ], [ %768, %763 ]
  %775 = icmp sgt i64 %774, 0
  br i1 %775, label %763, label %776

776:                                              ; preds = %773
  %777 = load i64, ptr %17, align 8, !tbaa !5
  %778 = add nsw i64 %777, -1
  br label %779

779:                                              ; preds = %776, %402
  %storemerge555 = phi i64 [ %778, %776 ], [ %404, %402 ]
  store i64 %storemerge555, ptr %3, align 8, !tbaa !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 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #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 @f2c_dcopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @f2c_dscal(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_dgemm(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.smin.i64(i64, i64) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.abs.i64(i64, i1 immarg) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 = !{!12}
!12 = distinct !{!12, !13}
!13 = distinct !{!13, !"LVerDomain"}
!14 = !{!15}
!15 = distinct !{!15, !13}
!16 = !{!17}
!17 = distinct !{!17, !13}
!18 = !{!19, !12, !15}
!19 = distinct !{!19, !13}
!20 = !{!19}
!21 = !{!12, !15}
!22 = distinct !{!22, !23, !24, !25}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !23, !24}
!27 = distinct !{!27, !23}
!28 = distinct !{!28, !23}
!29 = !{!30}
!30 = distinct !{!30, !31}
!31 = distinct !{!31, !"LVerDomain"}
!32 = !{!33}
!33 = distinct !{!33, !31}
!34 = !{!35}
!35 = distinct !{!35, !31}
!36 = !{!37, !30, !33}
!37 = distinct !{!37, !31}
!38 = !{!37}
!39 = !{!30, !33}
!40 = distinct !{!40, !23, !24, !25}
!41 = distinct !{!41, !23, !24}
!42 = distinct !{!42, !23}
!43 = distinct !{!43, !23}


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