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

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

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

122:                                              ; preds = %17
  %123 = load ptr, ptr %31, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = icmp sle i64 %124, 0
  br i1 %125, label %130, label %126

126:                                              ; preds = %122
  %127 = load ptr, ptr %32, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = icmp sle i64 %128, 0
  br i1 %129, label %130, label %131

130:                                              ; preds = %126, %122, %17
  store i32 0, ptr %18, align 4
  store i32 1, ptr %83, align 4
  br label %1815

131:                                              ; preds = %126
  %132 = load ptr, ptr %31, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  %134 = load ptr, ptr %21, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp sgt i64 %133, %135
  br i1 %136, label %146, label %137

137:                                              ; preds = %131
  %138 = load ptr, ptr %30, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = load ptr, ptr %31, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = add nsw i64 %139, %141
  %143 = load ptr, ptr %21, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = icmp sgt i64 %142, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %137, %131
  store i32 0, ptr %18, align 4
  store i32 1, ptr %83, align 4
  br label %1815

147:                                              ; preds = %137
  %148 = load ptr, ptr %31, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = load ptr, ptr %32, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  %152 = add nsw i64 %149, %151
  store i64 %152, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  %153 = load ptr, ptr %21, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = load i64, ptr %50, align 8, !tbaa !9
  %156 = mul nsw i64 %154, %155
  store i64 %156, ptr %45, align 8, !tbaa !9
  %157 = load i64, ptr %44, align 8, !tbaa !9
  %158 = load i64, ptr %45, align 8, !tbaa !9
  %159 = icmp sge i64 %157, %158
  br i1 %159, label %160, label %162

160:                                              ; preds = %147
  %161 = load i64, ptr %44, align 8, !tbaa !9
  br label %164

162:                                              ; preds = %147
  %163 = load i64, ptr %45, align 8, !tbaa !9
  br label %164

164:                                              ; preds = %162, %160
  %165 = phi i64 [ %161, %160 ], [ %163, %162 ]
  store i64 %165, ptr %44, align 8, !tbaa !9
  %166 = load i64, ptr %50, align 8, !tbaa !9
  %167 = load i64, ptr %50, align 8, !tbaa !9
  %168 = mul nsw i64 %166, %167
  %169 = shl i64 %168, 1
  store i64 %169, ptr %45, align 8, !tbaa !9
  %170 = load ptr, ptr %34, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = load i64, ptr %44, align 8, !tbaa !9
  %173 = load i64, ptr %45, align 8, !tbaa !9
  %174 = icmp sge i64 %172, %173
  br i1 %174, label %175, label %177

175:                                              ; preds = %164
  %176 = load i64, ptr %44, align 8, !tbaa !9
  br label %179

177:                                              ; preds = %164
  %178 = load i64, ptr %45, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %177, %175
  %180 = phi i64 [ %176, %175 ], [ %178, %177 ]
  %181 = icmp slt i64 %171, %180
  br i1 %181, label %182, label %213

182:                                              ; preds = %179
  %183 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -16, ptr %183, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  %184 = load ptr, ptr %21, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = load i64, ptr %50, align 8, !tbaa !9
  %187 = mul nsw i64 %185, %186
  store i64 %187, ptr %45, align 8, !tbaa !9
  %188 = load i64, ptr %44, align 8, !tbaa !9
  %189 = load i64, ptr %45, align 8, !tbaa !9
  %190 = icmp sge i64 %188, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %182
  %192 = load i64, ptr %44, align 8, !tbaa !9
  br label %195

193:                                              ; preds = %182
  %194 = load i64, ptr %45, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %193, %191
  %196 = phi i64 [ %192, %191 ], [ %194, %193 ]
  store i64 %196, ptr %44, align 8, !tbaa !9
  %197 = load i64, ptr %50, align 8, !tbaa !9
  %198 = load i64, ptr %50, align 8, !tbaa !9
  %199 = mul nsw i64 %197, %198
  %200 = shl i64 %199, 1
  store i64 %200, ptr %45, align 8, !tbaa !9
  %201 = load i64, ptr %44, align 8, !tbaa !9
  %202 = load i64, ptr %45, align 8, !tbaa !9
  %203 = icmp sge i64 %201, %202
  br i1 %203, label %204, label %206

204:                                              ; preds = %195
  %205 = load i64, ptr %44, align 8, !tbaa !9
  br label %208

206:                                              ; preds = %195
  %207 = load i64, ptr %45, align 8, !tbaa !9
  br label %208

208:                                              ; preds = %206, %204
  %209 = phi i64 [ %205, %204 ], [ %207, %206 ]
  %210 = sitofp i64 %209 to double
  %211 = load ptr, ptr %33, align 8, !tbaa !5
  %212 = getelementptr inbounds double, ptr %211, i64 1
  store double %210, ptr %212, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %83, align 4
  br label %1815

213:                                              ; preds = %179
  store i64 0, ptr %63, align 8, !tbaa !9
  store i64 0, ptr %80, align 8, !tbaa !9
  %214 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %215 = call i32 @dlaset_(ptr noundef @.str, ptr noundef @c__4, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %214, ptr noundef @c__4)
  %216 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %217 = call i32 @dlaset_(ptr noundef @.str, ptr noundef @c__4, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %216, ptr noundef @c__4)
  %218 = load ptr, ptr %22, align 8, !tbaa !5
  %219 = load ptr, ptr %30, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = load ptr, ptr %30, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = load i64, ptr %36, align 8, !tbaa !9
  %224 = mul nsw i64 %222, %223
  %225 = add nsw i64 %220, %224
  %226 = getelementptr inbounds double, ptr %218, i64 %225
  %227 = load ptr, ptr %23, align 8, !tbaa !5
  %228 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %229 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %226, ptr noundef %227, ptr noundef %228, ptr noundef @c__4)
  %230 = load ptr, ptr %24, align 8, !tbaa !5
  %231 = load ptr, ptr %30, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = load ptr, ptr %30, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = load i64, ptr %38, align 8, !tbaa !9
  %236 = mul nsw i64 %234, %235
  %237 = add nsw i64 %232, %236
  %238 = getelementptr inbounds double, ptr %230, i64 %237
  %239 = load ptr, ptr %25, align 8, !tbaa !5
  %240 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %241 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %238, ptr noundef %239, ptr noundef %240, ptr noundef @c__4)
  %242 = call double @dlamch_(ptr noundef @.str.1)
  store double %242, ptr %62, align 8, !tbaa !11
  %243 = call double @dlamch_(ptr noundef @.str.2)
  %244 = load double, ptr %62, align 8, !tbaa !11
  %245 = fdiv double %243, %244
  store double %245, ptr %82, align 8, !tbaa !11
  store double 0.000000e+00, ptr %79, align 8, !tbaa !11
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %246 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %247 = load ptr, ptr %33, align 8, !tbaa !5
  %248 = getelementptr inbounds double, ptr %247, i64 1
  %249 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %246, ptr noundef @c__4, ptr noundef %248, ptr noundef %50)
  %250 = load i64, ptr %50, align 8, !tbaa !9
  %251 = load i64, ptr %50, align 8, !tbaa !9
  %252 = mul nsw i64 %250, %251
  store i64 %252, ptr %44, align 8, !tbaa !9
  %253 = load ptr, ptr %33, align 8, !tbaa !5
  %254 = getelementptr inbounds double, ptr %253, i64 1
  %255 = call i32 @dlassq_(ptr noundef %44, ptr noundef %254, ptr noundef @c__1, ptr noundef %79, ptr noundef %67)
  %256 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %257 = load ptr, ptr %33, align 8, !tbaa !5
  %258 = getelementptr inbounds double, ptr %257, i64 1
  %259 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %256, ptr noundef @c__4, ptr noundef %258, ptr noundef %50)
  %260 = load i64, ptr %50, align 8, !tbaa !9
  %261 = load i64, ptr %50, align 8, !tbaa !9
  %262 = mul nsw i64 %260, %261
  store i64 %262, ptr %44, align 8, !tbaa !9
  %263 = load ptr, ptr %33, align 8, !tbaa !5
  %264 = getelementptr inbounds double, ptr %263, i64 1
  %265 = call i32 @dlassq_(ptr noundef %44, ptr noundef %264, ptr noundef @c__1, ptr noundef %79, ptr noundef %67)
  %266 = load double, ptr %79, align 8, !tbaa !11
  %267 = load double, ptr %67, align 8, !tbaa !11
  %268 = call double @sqrt(double noundef %267) #5
  %269 = fmul double %266, %268
  store double %269, ptr %77, align 8, !tbaa !11
  %270 = load double, ptr %62, align 8, !tbaa !11
  %271 = fmul double %270, 1.000000e+01
  %272 = load double, ptr %77, align 8, !tbaa !11
  %273 = fmul double %271, %272
  store double %273, ptr %46, align 8, !tbaa !11
  %274 = load double, ptr %46, align 8, !tbaa !11
  %275 = load double, ptr %82, align 8, !tbaa !11
  %276 = fcmp oge double %274, %275
  br i1 %276, label %277, label %279

277:                                              ; preds = %213
  %278 = load double, ptr %46, align 8, !tbaa !11
  br label %281

279:                                              ; preds = %213
  %280 = load double, ptr %82, align 8, !tbaa !11
  br label %281

281:                                              ; preds = %279, %277
  %282 = phi double [ %278, %277 ], [ %280, %279 ]
  store double %282, ptr %81, align 8, !tbaa !11
  %283 = load i64, ptr %50, align 8, !tbaa !9
  %284 = icmp eq i64 %283, 2
  br i1 %284, label %285, label %686

285:                                              ; preds = %281
  %286 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 5
  %287 = load double, ptr %286, align 8, !tbaa !11
  %288 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %289 = load double, ptr %288, align 16, !tbaa !11
  %290 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 5
  %291 = load double, ptr %290, align 8, !tbaa !11
  %292 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %293 = load double, ptr %292, align 16, !tbaa !11
  %294 = fmul double %291, %293
  %295 = fneg double %294
  %296 = call double @llvm.fmuladd.f64(double %287, double %289, double %295)
  store double %296, ptr %47, align 8, !tbaa !11
  %297 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 5
  %298 = load double, ptr %297, align 8, !tbaa !11
  %299 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 4
  %300 = load double, ptr %299, align 16, !tbaa !11
  %301 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 5
  %302 = load double, ptr %301, align 8, !tbaa !11
  %303 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 4
  %304 = load double, ptr %303, align 16, !tbaa !11
  %305 = fmul double %302, %304
  %306 = fneg double %305
  %307 = call double @llvm.fmuladd.f64(double %298, double %300, double %306)
  store double %307, ptr %48, align 8, !tbaa !11
  %308 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 5
  %309 = load double, ptr %308, align 8, !tbaa !11
  %310 = fcmp oge double %309, 0.000000e+00
  br i1 %310, label %311, label %314

311:                                              ; preds = %285
  %312 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 5
  %313 = load double, ptr %312, align 8, !tbaa !11
  br label %318

314:                                              ; preds = %285
  %315 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 5
  %316 = load double, ptr %315, align 8, !tbaa !11
  %317 = fneg double %316
  br label %318

318:                                              ; preds = %314, %311
  %319 = phi double [ %313, %311 ], [ %317, %314 ]
  store double %319, ptr %57, align 8, !tbaa !11
  %320 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 5
  %321 = load double, ptr %320, align 8, !tbaa !11
  %322 = fcmp oge double %321, 0.000000e+00
  br i1 %322, label %323, label %326

323:                                              ; preds = %318
  %324 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 5
  %325 = load double, ptr %324, align 8, !tbaa !11
  br label %330

326:                                              ; preds = %318
  %327 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 5
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = fneg double %328
  br label %330

330:                                              ; preds = %326, %323
  %331 = phi double [ %325, %323 ], [ %329, %326 ]
  store double %331, ptr %56, align 8, !tbaa !11
  %332 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 4
  %333 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %334 = call i32 @dlartg_(ptr noundef %47, ptr noundef %48, ptr noundef %332, ptr noundef %333, ptr noundef %64)
  %335 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 4
  %336 = load double, ptr %335, align 16, !tbaa !11
  %337 = fneg double %336
  %338 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  store double %337, ptr %338, align 8, !tbaa !11
  %339 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %340 = load double, ptr %339, align 16, !tbaa !11
  %341 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 5
  store double %340, ptr %341, align 8, !tbaa !11
  %342 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %343 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 4
  %344 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %345 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %346 = call i32 @f2c_drot(ptr noundef @c__2, ptr noundef %342, ptr noundef @c__1, ptr noundef %343, ptr noundef @c__1, ptr noundef %344, ptr noundef %345)
  %347 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %348 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 4
  %349 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %350 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %351 = call i32 @f2c_drot(ptr noundef @c__2, ptr noundef %347, ptr noundef @c__1, ptr noundef %348, ptr noundef @c__1, ptr noundef %349, ptr noundef %350)
  %352 = load double, ptr %56, align 8, !tbaa !11
  %353 = load double, ptr %57, align 8, !tbaa !11
  %354 = fcmp oge double %352, %353
  br i1 %354, label %355, label %361

355:                                              ; preds = %330
  %356 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %357 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 1
  %358 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %359 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %360 = call i32 @dlartg_(ptr noundef %356, ptr noundef %357, ptr noundef %358, ptr noundef %359, ptr noundef %64)
  br label %367

361:                                              ; preds = %330
  %362 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %363 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 1
  %364 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %365 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %366 = call i32 @dlartg_(ptr noundef %362, ptr noundef %363, ptr noundef %364, ptr noundef %365, ptr noundef %64)
  br label %367

367:                                              ; preds = %361, %355
  %368 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %369 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 1
  %370 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %371 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %372 = call i32 @f2c_drot(ptr noundef @c__2, ptr noundef %368, ptr noundef @c__4, ptr noundef %369, ptr noundef @c__4, ptr noundef %370, ptr noundef %371)
  %373 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %374 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 1
  %375 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %376 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %377 = call i32 @f2c_drot(ptr noundef @c__2, ptr noundef %373, ptr noundef @c__4, ptr noundef %374, ptr noundef @c__4, ptr noundef %375, ptr noundef %376)
  %378 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %379 = load double, ptr %378, align 16, !tbaa !11
  %380 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 5
  store double %379, ptr %380, align 8, !tbaa !11
  %381 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %382 = load double, ptr %381, align 8, !tbaa !11
  %383 = fneg double %382
  %384 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 4
  store double %383, ptr %384, align 16, !tbaa !11
  %385 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 1
  %386 = load double, ptr %385, align 8, !tbaa !11
  %387 = fcmp oge double %386, 0.000000e+00
  br i1 %387, label %388, label %391

388:                                              ; preds = %367
  %389 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 1
  %390 = load double, ptr %389, align 8, !tbaa !11
  br label %395

391:                                              ; preds = %367
  %392 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 1
  %393 = load double, ptr %392, align 8, !tbaa !11
  %394 = fneg double %393
  br label %395

395:                                              ; preds = %391, %388
  %396 = phi double [ %390, %388 ], [ %394, %391 ]
  %397 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 1
  %398 = load double, ptr %397, align 8, !tbaa !11
  %399 = fcmp oge double %398, 0.000000e+00
  br i1 %399, label %400, label %403

400:                                              ; preds = %395
  %401 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 1
  %402 = load double, ptr %401, align 8, !tbaa !11
  br label %407

403:                                              ; preds = %395
  %404 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 1
  %405 = load double, ptr %404, align 8, !tbaa !11
  %406 = fneg double %405
  br label %407

407:                                              ; preds = %403, %400
  %408 = phi double [ %402, %400 ], [ %406, %403 ]
  %409 = fadd double %396, %408
  store double %409, ptr %61, align 8, !tbaa !11
  %410 = load double, ptr %61, align 8, !tbaa !11
  %411 = load double, ptr %81, align 8, !tbaa !11
  %412 = fcmp ole double %410, %411
  %413 = zext i1 %412 to i32
  %414 = sext i32 %413 to i64
  store i64 %414, ptr %63, align 8, !tbaa !9
  %415 = load i64, ptr %63, align 8, !tbaa !9
  %416 = icmp ne i64 %415, 0
  br i1 %416, label %418, label %417

417:                                              ; preds = %407
  br label %1813

418:                                              ; preds = %407
  %419 = load ptr, ptr %22, align 8, !tbaa !5
  %420 = load ptr, ptr %30, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = load ptr, ptr %30, align 8, !tbaa !5
  %423 = load i64, ptr %422, align 8, !tbaa !9
  %424 = load i64, ptr %36, align 8, !tbaa !9
  %425 = mul nsw i64 %423, %424
  %426 = add nsw i64 %421, %425
  %427 = getelementptr inbounds double, ptr %419, i64 %426
  %428 = load ptr, ptr %23, align 8, !tbaa !5
  %429 = load ptr, ptr %33, align 8, !tbaa !5
  %430 = load i64, ptr %50, align 8, !tbaa !9
  %431 = load i64, ptr %50, align 8, !tbaa !9
  %432 = mul nsw i64 %430, %431
  %433 = add nsw i64 %432, 1
  %434 = getelementptr inbounds double, ptr %429, i64 %433
  %435 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %427, ptr noundef %428, ptr noundef %434, ptr noundef %50)
  %436 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %437 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %438 = load ptr, ptr %33, align 8, !tbaa !5
  %439 = getelementptr inbounds double, ptr %438, i64 1
  %440 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %436, ptr noundef @c__4, ptr noundef %437, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %439, ptr noundef %50)
  %441 = load ptr, ptr %33, align 8, !tbaa !5
  %442 = getelementptr inbounds double, ptr %441, i64 1
  %443 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %444 = load ptr, ptr %33, align 8, !tbaa !5
  %445 = load i64, ptr %50, align 8, !tbaa !9
  %446 = load i64, ptr %50, align 8, !tbaa !9
  %447 = mul nsw i64 %445, %446
  %448 = add nsw i64 %447, 1
  %449 = getelementptr inbounds double, ptr %444, i64 %448
  %450 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b48, ptr noundef %442, ptr noundef %50, ptr noundef %443, ptr noundef @c__4, ptr noundef @c_b42, ptr noundef %449, ptr noundef %50)
  store double 0.000000e+00, ptr %79, align 8, !tbaa !11
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %451 = load i64, ptr %50, align 8, !tbaa !9
  %452 = load i64, ptr %50, align 8, !tbaa !9
  %453 = mul nsw i64 %451, %452
  store i64 %453, ptr %44, align 8, !tbaa !9
  %454 = load ptr, ptr %33, align 8, !tbaa !5
  %455 = load i64, ptr %50, align 8, !tbaa !9
  %456 = load i64, ptr %50, align 8, !tbaa !9
  %457 = mul nsw i64 %455, %456
  %458 = add nsw i64 %457, 1
  %459 = getelementptr inbounds double, ptr %454, i64 %458
  %460 = call i32 @dlassq_(ptr noundef %44, ptr noundef %459, ptr noundef @c__1, ptr noundef %79, ptr noundef %67)
  %461 = load ptr, ptr %24, align 8, !tbaa !5
  %462 = load ptr, ptr %30, align 8, !tbaa !5
  %463 = load i64, ptr %462, align 8, !tbaa !9
  %464 = load ptr, ptr %30, align 8, !tbaa !5
  %465 = load i64, ptr %464, align 8, !tbaa !9
  %466 = load i64, ptr %38, align 8, !tbaa !9
  %467 = mul nsw i64 %465, %466
  %468 = add nsw i64 %463, %467
  %469 = getelementptr inbounds double, ptr %461, i64 %468
  %470 = load ptr, ptr %25, align 8, !tbaa !5
  %471 = load ptr, ptr %33, align 8, !tbaa !5
  %472 = load i64, ptr %50, align 8, !tbaa !9
  %473 = load i64, ptr %50, align 8, !tbaa !9
  %474 = mul nsw i64 %472, %473
  %475 = add nsw i64 %474, 1
  %476 = getelementptr inbounds double, ptr %471, i64 %475
  %477 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %469, ptr noundef %470, ptr noundef %476, ptr noundef %50)
  %478 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %479 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %480 = load ptr, ptr %33, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %478, ptr noundef @c__4, ptr noundef %479, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %481, ptr noundef %50)
  %483 = load ptr, ptr %33, align 8, !tbaa !5
  %484 = getelementptr inbounds double, ptr %483, i64 1
  %485 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %486 = load ptr, ptr %33, align 8, !tbaa !5
  %487 = load i64, ptr %50, align 8, !tbaa !9
  %488 = load i64, ptr %50, align 8, !tbaa !9
  %489 = mul nsw i64 %487, %488
  %490 = add nsw i64 %489, 1
  %491 = getelementptr inbounds double, ptr %486, i64 %490
  %492 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b48, ptr noundef %484, ptr noundef %50, ptr noundef %485, ptr noundef @c__4, ptr noundef @c_b42, ptr noundef %491, ptr noundef %50)
  %493 = load i64, ptr %50, align 8, !tbaa !9
  %494 = load i64, ptr %50, align 8, !tbaa !9
  %495 = mul nsw i64 %493, %494
  store i64 %495, ptr %44, align 8, !tbaa !9
  %496 = load ptr, ptr %33, align 8, !tbaa !5
  %497 = load i64, ptr %50, align 8, !tbaa !9
  %498 = load i64, ptr %50, align 8, !tbaa !9
  %499 = mul nsw i64 %497, %498
  %500 = add nsw i64 %499, 1
  %501 = getelementptr inbounds double, ptr %496, i64 %500
  %502 = call i32 @dlassq_(ptr noundef %44, ptr noundef %501, ptr noundef @c__1, ptr noundef %79, ptr noundef %67)
  %503 = load double, ptr %79, align 8, !tbaa !11
  %504 = load double, ptr %67, align 8, !tbaa !11
  %505 = call double @sqrt(double noundef %504) #5
  %506 = fmul double %503, %505
  store double %506, ptr %60, align 8, !tbaa !11
  %507 = load double, ptr %60, align 8, !tbaa !11
  %508 = load double, ptr %81, align 8, !tbaa !11
  %509 = fcmp ole double %507, %508
  %510 = zext i1 %509 to i32
  %511 = sext i32 %510 to i64
  store i64 %511, ptr %80, align 8, !tbaa !9
  %512 = load i64, ptr %80, align 8, !tbaa !9
  %513 = icmp ne i64 %512, 0
  br i1 %513, label %515, label %514

514:                                              ; preds = %418
  br label %1813

515:                                              ; preds = %418
  %516 = load ptr, ptr %30, align 8, !tbaa !5
  %517 = load i64, ptr %516, align 8, !tbaa !9
  %518 = add nsw i64 %517, 1
  store i64 %518, ptr %44, align 8, !tbaa !9
  %519 = load ptr, ptr %22, align 8, !tbaa !5
  %520 = load ptr, ptr %30, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  %522 = load i64, ptr %36, align 8, !tbaa !9
  %523 = mul nsw i64 %521, %522
  %524 = add nsw i64 %523, 1
  %525 = getelementptr inbounds double, ptr %519, i64 %524
  %526 = load ptr, ptr %22, align 8, !tbaa !5
  %527 = load ptr, ptr %30, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  %529 = add nsw i64 %528, 1
  %530 = load i64, ptr %36, align 8, !tbaa !9
  %531 = mul nsw i64 %529, %530
  %532 = add nsw i64 %531, 1
  %533 = getelementptr inbounds double, ptr %526, i64 %532
  %534 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %535 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %536 = call i32 @f2c_drot(ptr noundef %44, ptr noundef %525, ptr noundef @c__1, ptr noundef %533, ptr noundef @c__1, ptr noundef %534, ptr noundef %535)
  %537 = load ptr, ptr %30, align 8, !tbaa !5
  %538 = load i64, ptr %537, align 8, !tbaa !9
  %539 = add nsw i64 %538, 1
  store i64 %539, ptr %44, align 8, !tbaa !9
  %540 = load ptr, ptr %24, align 8, !tbaa !5
  %541 = load ptr, ptr %30, align 8, !tbaa !5
  %542 = load i64, ptr %541, align 8, !tbaa !9
  %543 = load i64, ptr %38, align 8, !tbaa !9
  %544 = mul nsw i64 %542, %543
  %545 = add nsw i64 %544, 1
  %546 = getelementptr inbounds double, ptr %540, i64 %545
  %547 = load ptr, ptr %24, align 8, !tbaa !5
  %548 = load ptr, ptr %30, align 8, !tbaa !5
  %549 = load i64, ptr %548, align 8, !tbaa !9
  %550 = add nsw i64 %549, 1
  %551 = load i64, ptr %38, align 8, !tbaa !9
  %552 = mul nsw i64 %550, %551
  %553 = add nsw i64 %552, 1
  %554 = getelementptr inbounds double, ptr %547, i64 %553
  %555 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %556 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %557 = call i32 @f2c_drot(ptr noundef %44, ptr noundef %546, ptr noundef @c__1, ptr noundef %554, ptr noundef @c__1, ptr noundef %555, ptr noundef %556)
  %558 = load ptr, ptr %21, align 8, !tbaa !5
  %559 = load i64, ptr %558, align 8, !tbaa !9
  %560 = load ptr, ptr %30, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = sub nsw i64 %559, %561
  %563 = add nsw i64 %562, 1
  store i64 %563, ptr %44, align 8, !tbaa !9
  %564 = load ptr, ptr %22, align 8, !tbaa !5
  %565 = load ptr, ptr %30, align 8, !tbaa !5
  %566 = load i64, ptr %565, align 8, !tbaa !9
  %567 = load ptr, ptr %30, align 8, !tbaa !5
  %568 = load i64, ptr %567, align 8, !tbaa !9
  %569 = load i64, ptr %36, align 8, !tbaa !9
  %570 = mul nsw i64 %568, %569
  %571 = add nsw i64 %566, %570
  %572 = getelementptr inbounds double, ptr %564, i64 %571
  %573 = load ptr, ptr %23, align 8, !tbaa !5
  %574 = load ptr, ptr %22, align 8, !tbaa !5
  %575 = load ptr, ptr %30, align 8, !tbaa !5
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = add nsw i64 %576, 1
  %578 = load ptr, ptr %30, align 8, !tbaa !5
  %579 = load i64, ptr %578, align 8, !tbaa !9
  %580 = load i64, ptr %36, align 8, !tbaa !9
  %581 = mul nsw i64 %579, %580
  %582 = add nsw i64 %577, %581
  %583 = getelementptr inbounds double, ptr %574, i64 %582
  %584 = load ptr, ptr %23, align 8, !tbaa !5
  %585 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %586 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %587 = call i32 @f2c_drot(ptr noundef %44, ptr noundef %572, ptr noundef %573, ptr noundef %583, ptr noundef %584, ptr noundef %585, ptr noundef %586)
  %588 = load ptr, ptr %21, align 8, !tbaa !5
  %589 = load i64, ptr %588, align 8, !tbaa !9
  %590 = load ptr, ptr %30, align 8, !tbaa !5
  %591 = load i64, ptr %590, align 8, !tbaa !9
  %592 = sub nsw i64 %589, %591
  %593 = add nsw i64 %592, 1
  store i64 %593, ptr %44, align 8, !tbaa !9
  %594 = load ptr, ptr %24, align 8, !tbaa !5
  %595 = load ptr, ptr %30, align 8, !tbaa !5
  %596 = load i64, ptr %595, align 8, !tbaa !9
  %597 = load ptr, ptr %30, align 8, !tbaa !5
  %598 = load i64, ptr %597, align 8, !tbaa !9
  %599 = load i64, ptr %38, align 8, !tbaa !9
  %600 = mul nsw i64 %598, %599
  %601 = add nsw i64 %596, %600
  %602 = getelementptr inbounds double, ptr %594, i64 %601
  %603 = load ptr, ptr %25, align 8, !tbaa !5
  %604 = load ptr, ptr %24, align 8, !tbaa !5
  %605 = load ptr, ptr %30, align 8, !tbaa !5
  %606 = load i64, ptr %605, align 8, !tbaa !9
  %607 = add nsw i64 %606, 1
  %608 = load ptr, ptr %30, align 8, !tbaa !5
  %609 = load i64, ptr %608, align 8, !tbaa !9
  %610 = load i64, ptr %38, align 8, !tbaa !9
  %611 = mul nsw i64 %609, %610
  %612 = add nsw i64 %607, %611
  %613 = getelementptr inbounds double, ptr %604, i64 %612
  %614 = load ptr, ptr %25, align 8, !tbaa !5
  %615 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %616 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %617 = call i32 @f2c_drot(ptr noundef %44, ptr noundef %602, ptr noundef %603, ptr noundef %613, ptr noundef %614, ptr noundef %615, ptr noundef %616)
  %618 = load ptr, ptr %22, align 8, !tbaa !5
  %619 = load ptr, ptr %30, align 8, !tbaa !5
  %620 = load i64, ptr %619, align 8, !tbaa !9
  %621 = add nsw i64 %620, 1
  %622 = load ptr, ptr %30, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  %624 = load i64, ptr %36, align 8, !tbaa !9
  %625 = mul nsw i64 %623, %624
  %626 = add nsw i64 %621, %625
  %627 = getelementptr inbounds double, ptr %618, i64 %626
  store double 0.000000e+00, ptr %627, align 8, !tbaa !11
  %628 = load ptr, ptr %24, align 8, !tbaa !5
  %629 = load ptr, ptr %30, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  %631 = add nsw i64 %630, 1
  %632 = load ptr, ptr %30, align 8, !tbaa !5
  %633 = load i64, ptr %632, align 8, !tbaa !9
  %634 = load i64, ptr %38, align 8, !tbaa !9
  %635 = mul nsw i64 %633, %634
  %636 = add nsw i64 %631, %635
  %637 = getelementptr inbounds double, ptr %628, i64 %636
  store double 0.000000e+00, ptr %637, align 8, !tbaa !11
  %638 = load ptr, ptr %20, align 8, !tbaa !5
  %639 = load i64, ptr %638, align 8, !tbaa !9
  %640 = icmp ne i64 %639, 0
  br i1 %640, label %641, label %661

641:                                              ; preds = %515
  %642 = load ptr, ptr %21, align 8, !tbaa !5
  %643 = load ptr, ptr %28, align 8, !tbaa !5
  %644 = load ptr, ptr %30, align 8, !tbaa !5
  %645 = load i64, ptr %644, align 8, !tbaa !9
  %646 = load i64, ptr %42, align 8, !tbaa !9
  %647 = mul nsw i64 %645, %646
  %648 = add nsw i64 %647, 1
  %649 = getelementptr inbounds double, ptr %643, i64 %648
  %650 = load ptr, ptr %28, align 8, !tbaa !5
  %651 = load ptr, ptr %30, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = add nsw i64 %652, 1
  %654 = load i64, ptr %42, align 8, !tbaa !9
  %655 = mul nsw i64 %653, %654
  %656 = add nsw i64 %655, 1
  %657 = getelementptr inbounds double, ptr %650, i64 %656
  %658 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %659 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %660 = call i32 @f2c_drot(ptr noundef %642, ptr noundef %649, ptr noundef @c__1, ptr noundef %657, ptr noundef @c__1, ptr noundef %658, ptr noundef %659)
  br label %661

661:                                              ; preds = %641, %515
  %662 = load ptr, ptr %19, align 8, !tbaa !5
  %663 = load i64, ptr %662, align 8, !tbaa !9
  %664 = icmp ne i64 %663, 0
  br i1 %664, label %665, label %685

665:                                              ; preds = %661
  %666 = load ptr, ptr %21, align 8, !tbaa !5
  %667 = load ptr, ptr %26, align 8, !tbaa !5
  %668 = load ptr, ptr %30, align 8, !tbaa !5
  %669 = load i64, ptr %668, align 8, !tbaa !9
  %670 = load i64, ptr %40, align 8, !tbaa !9
  %671 = mul nsw i64 %669, %670
  %672 = add nsw i64 %671, 1
  %673 = getelementptr inbounds double, ptr %667, i64 %672
  %674 = load ptr, ptr %26, align 8, !tbaa !5
  %675 = load ptr, ptr %30, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  %677 = add nsw i64 %676, 1
  %678 = load i64, ptr %40, align 8, !tbaa !9
  %679 = mul nsw i64 %677, %678
  %680 = add nsw i64 %679, 1
  %681 = getelementptr inbounds double, ptr %674, i64 %680
  %682 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %683 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %684 = call i32 @f2c_drot(ptr noundef %666, ptr noundef %673, ptr noundef @c__1, ptr noundef %681, ptr noundef @c__1, ptr noundef %682, ptr noundef %683)
  br label %685

685:                                              ; preds = %665, %661
  store i32 0, ptr %18, align 4
  store i32 1, ptr %83, align 4
  br label %1815

686:                                              ; preds = %281
  %687 = load ptr, ptr %31, align 8, !tbaa !5
  %688 = load ptr, ptr %32, align 8, !tbaa !5
  %689 = load ptr, ptr %31, align 8, !tbaa !5
  %690 = load i64, ptr %689, align 8, !tbaa !9
  %691 = add nsw i64 %690, 1
  %692 = shl i64 %691, 2
  %693 = sub nsw i64 %692, 4
  %694 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %693
  %695 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %696 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %687, ptr noundef %688, ptr noundef %694, ptr noundef @c__4, ptr noundef %695, ptr noundef @c__4)
  %697 = load ptr, ptr %31, align 8, !tbaa !5
  %698 = load ptr, ptr %32, align 8, !tbaa !5
  %699 = load ptr, ptr %31, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = add nsw i64 %700, 1
  %702 = shl i64 %701, 2
  %703 = sub nsw i64 %702, 4
  %704 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 %703
  %705 = load ptr, ptr %32, align 8, !tbaa !5
  %706 = load i64, ptr %705, align 8, !tbaa !9
  %707 = add nsw i64 %706, 1
  %708 = load ptr, ptr %31, align 8, !tbaa !5
  %709 = load i64, ptr %708, align 8, !tbaa !9
  %710 = add nsw i64 %709, 1
  %711 = shl i64 %710, 2
  %712 = add nsw i64 %707, %711
  %713 = sub nsw i64 %712, 5
  %714 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %713
  %715 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %697, ptr noundef %698, ptr noundef %704, ptr noundef @c__4, ptr noundef %714, ptr noundef @c__4)
  %716 = load ptr, ptr %31, align 8, !tbaa !5
  %717 = load ptr, ptr %32, align 8, !tbaa !5
  %718 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %719 = load ptr, ptr %31, align 8, !tbaa !5
  %720 = load i64, ptr %719, align 8, !tbaa !9
  %721 = add nsw i64 %720, 1
  %722 = load ptr, ptr %31, align 8, !tbaa !5
  %723 = load i64, ptr %722, align 8, !tbaa !9
  %724 = add nsw i64 %723, 1
  %725 = shl i64 %724, 2
  %726 = add nsw i64 %721, %725
  %727 = sub nsw i64 %726, 5
  %728 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 %727
  %729 = load ptr, ptr %32, align 8, !tbaa !5
  %730 = load i64, ptr %729, align 8, !tbaa !9
  %731 = add nsw i64 %730, 1
  %732 = load ptr, ptr %31, align 8, !tbaa !5
  %733 = load i64, ptr %732, align 8, !tbaa !9
  %734 = add nsw i64 %733, 1
  %735 = shl i64 %734, 2
  %736 = add nsw i64 %731, %735
  %737 = sub nsw i64 %736, 5
  %738 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %737
  %739 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %740 = load ptr, ptr %31, align 8, !tbaa !5
  %741 = load i64, ptr %740, align 8, !tbaa !9
  %742 = add nsw i64 %741, 1
  %743 = load ptr, ptr %31, align 8, !tbaa !5
  %744 = load i64, ptr %743, align 8, !tbaa !9
  %745 = add nsw i64 %744, 1
  %746 = shl i64 %745, 2
  %747 = add nsw i64 %742, %746
  %748 = sub nsw i64 %747, 5
  %749 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %748
  %750 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %751 = getelementptr inbounds [4 x i64], ptr %78, i64 0, i64 0
  %752 = call i32 @dtgsy2_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef %716, ptr noundef %717, ptr noundef %718, ptr noundef @c__4, ptr noundef %728, ptr noundef @c__4, ptr noundef %738, ptr noundef @c__4, ptr noundef %739, ptr noundef @c__4, ptr noundef %749, ptr noundef @c__4, ptr noundef %750, ptr noundef @c__4, ptr noundef %71, ptr noundef %67, ptr noundef %79, ptr noundef %751, ptr noundef %65, ptr noundef %75)
  %753 = load ptr, ptr %32, align 8, !tbaa !5
  %754 = load i64, ptr %753, align 8, !tbaa !9
  store i64 %754, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %755

755:                                              ; preds = %776, %686
  %756 = load i64, ptr %49, align 8, !tbaa !9
  %757 = load i64, ptr %44, align 8, !tbaa !9
  %758 = icmp sle i64 %756, %757
  br i1 %758, label %759, label %779

759:                                              ; preds = %755
  %760 = load ptr, ptr %31, align 8, !tbaa !5
  %761 = load i64, ptr %49, align 8, !tbaa !9
  %762 = shl i64 %761, 2
  %763 = sub nsw i64 %762, 4
  %764 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 %763
  %765 = call i32 @f2c_dscal(ptr noundef %760, ptr noundef @c_b48, ptr noundef %764, ptr noundef @c__1)
  %766 = load double, ptr %71, align 8, !tbaa !11
  %767 = load ptr, ptr %31, align 8, !tbaa !5
  %768 = load i64, ptr %767, align 8, !tbaa !9
  %769 = load i64, ptr %49, align 8, !tbaa !9
  %770 = add nsw i64 %768, %769
  %771 = load i64, ptr %49, align 8, !tbaa !9
  %772 = shl i64 %771, 2
  %773 = add nsw i64 %770, %772
  %774 = sub nsw i64 %773, 5
  %775 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 %774
  store double %766, ptr %775, align 8, !tbaa !11
  br label %776

776:                                              ; preds = %759
  %777 = load i64, ptr %49, align 8, !tbaa !9
  %778 = add nsw i64 %777, 1
  store i64 %778, ptr %49, align 8, !tbaa !9
  br label %755, !llvm.loop !13

779:                                              ; preds = %755
  %780 = load ptr, ptr %32, align 8, !tbaa !5
  %781 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %782 = getelementptr inbounds [4 x double], ptr %66, i64 0, i64 0
  %783 = load ptr, ptr %33, align 8, !tbaa !5
  %784 = getelementptr inbounds double, ptr %783, i64 1
  %785 = call i32 @dgeqr2_(ptr noundef %50, ptr noundef %780, ptr noundef %781, ptr noundef @c__4, ptr noundef %782, ptr noundef %784, ptr noundef %75)
  %786 = load i64, ptr %75, align 8, !tbaa !9
  %787 = icmp ne i64 %786, 0
  br i1 %787, label %788, label %789

788:                                              ; preds = %779
  br label %1813

789:                                              ; preds = %779
  %790 = load ptr, ptr %32, align 8, !tbaa !5
  %791 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %792 = getelementptr inbounds [4 x double], ptr %66, i64 0, i64 0
  %793 = load ptr, ptr %33, align 8, !tbaa !5
  %794 = getelementptr inbounds double, ptr %793, i64 1
  %795 = call i32 @dorg2r_(ptr noundef %50, ptr noundef %50, ptr noundef %790, ptr noundef %791, ptr noundef @c__4, ptr noundef %792, ptr noundef %794, ptr noundef %75)
  %796 = load i64, ptr %75, align 8, !tbaa !9
  %797 = icmp ne i64 %796, 0
  br i1 %797, label %798, label %799

798:                                              ; preds = %789
  br label %1813

799:                                              ; preds = %789
  %800 = load ptr, ptr %31, align 8, !tbaa !5
  %801 = load i64, ptr %800, align 8, !tbaa !9
  store i64 %801, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %802

802:                                              ; preds = %817, %799
  %803 = load i64, ptr %49, align 8, !tbaa !9
  %804 = load i64, ptr %44, align 8, !tbaa !9
  %805 = icmp sle i64 %803, %804
  br i1 %805, label %806, label %820

806:                                              ; preds = %802
  %807 = load double, ptr %71, align 8, !tbaa !11
  %808 = load ptr, ptr %32, align 8, !tbaa !5
  %809 = load i64, ptr %808, align 8, !tbaa !9
  %810 = load i64, ptr %49, align 8, !tbaa !9
  %811 = add nsw i64 %809, %810
  %812 = load i64, ptr %49, align 8, !tbaa !9
  %813 = shl i64 %812, 2
  %814 = add nsw i64 %811, %813
  %815 = sub nsw i64 %814, 5
  %816 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %815
  store double %807, ptr %816, align 8, !tbaa !11
  br label %817

817:                                              ; preds = %806
  %818 = load i64, ptr %49, align 8, !tbaa !9
  %819 = add nsw i64 %818, 1
  store i64 %819, ptr %49, align 8, !tbaa !9
  br label %802, !llvm.loop !15

820:                                              ; preds = %802
  %821 = load ptr, ptr %31, align 8, !tbaa !5
  %822 = load ptr, ptr %32, align 8, !tbaa !5
  %823 = load i64, ptr %822, align 8, !tbaa !9
  %824 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %823
  %825 = getelementptr inbounds [4 x double], ptr %68, i64 0, i64 0
  %826 = load ptr, ptr %33, align 8, !tbaa !5
  %827 = getelementptr inbounds double, ptr %826, i64 1
  %828 = call i32 @dgerq2_(ptr noundef %821, ptr noundef %50, ptr noundef %824, ptr noundef @c__4, ptr noundef %825, ptr noundef %827, ptr noundef %75)
  %829 = load i64, ptr %75, align 8, !tbaa !9
  %830 = icmp ne i64 %829, 0
  br i1 %830, label %831, label %832

831:                                              ; preds = %820
  br label %1813

832:                                              ; preds = %820
  %833 = load ptr, ptr %31, align 8, !tbaa !5
  %834 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %835 = getelementptr inbounds [4 x double], ptr %68, i64 0, i64 0
  %836 = load ptr, ptr %33, align 8, !tbaa !5
  %837 = getelementptr inbounds double, ptr %836, i64 1
  %838 = call i32 @dorgr2_(ptr noundef %50, ptr noundef %50, ptr noundef %833, ptr noundef %834, ptr noundef @c__4, ptr noundef %835, ptr noundef %837, ptr noundef %75)
  %839 = load i64, ptr %75, align 8, !tbaa !9
  %840 = icmp ne i64 %839, 0
  br i1 %840, label %841, label %842

841:                                              ; preds = %832
  br label %1813

842:                                              ; preds = %832
  %843 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %844 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %845 = load ptr, ptr %33, align 8, !tbaa !5
  %846 = getelementptr inbounds double, ptr %845, i64 1
  %847 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %843, ptr noundef @c__4, ptr noundef %844, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %846, ptr noundef %50)
  %848 = load ptr, ptr %33, align 8, !tbaa !5
  %849 = getelementptr inbounds double, ptr %848, i64 1
  %850 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %851 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %852 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %849, ptr noundef %50, ptr noundef %850, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %851, ptr noundef @c__4)
  %853 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %854 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %855 = load ptr, ptr %33, align 8, !tbaa !5
  %856 = getelementptr inbounds double, ptr %855, i64 1
  %857 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %853, ptr noundef @c__4, ptr noundef %854, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %856, ptr noundef %50)
  %858 = load ptr, ptr %33, align 8, !tbaa !5
  %859 = getelementptr inbounds double, ptr %858, i64 1
  %860 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %861 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %862 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %859, ptr noundef %50, ptr noundef %860, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %861, ptr noundef @c__4)
  %863 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %864 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 0
  %865 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %863, ptr noundef @c__4, ptr noundef %864, ptr noundef @c__4)
  %866 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %867 = getelementptr inbounds [16 x double], ptr %70, i64 0, i64 0
  %868 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %866, ptr noundef @c__4, ptr noundef %867, ptr noundef @c__4)
  %869 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %870 = getelementptr inbounds [16 x double], ptr %76, i64 0, i64 0
  %871 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %869, ptr noundef @c__4, ptr noundef %870, ptr noundef @c__4)
  %872 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %873 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 0
  %874 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %872, ptr noundef @c__4, ptr noundef %873, ptr noundef @c__4)
  %875 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %876 = getelementptr inbounds [4 x double], ptr %68, i64 0, i64 0
  %877 = load ptr, ptr %33, align 8, !tbaa !5
  %878 = getelementptr inbounds double, ptr %877, i64 1
  %879 = call i32 @dgerq2_(ptr noundef %50, ptr noundef %50, ptr noundef %875, ptr noundef @c__4, ptr noundef %876, ptr noundef %878, ptr noundef %75)
  %880 = load i64, ptr %75, align 8, !tbaa !9
  %881 = icmp ne i64 %880, 0
  br i1 %881, label %882, label %883

882:                                              ; preds = %842
  br label %1813

883:                                              ; preds = %842
  %884 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %885 = getelementptr inbounds [4 x double], ptr %68, i64 0, i64 0
  %886 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %887 = load ptr, ptr %33, align 8, !tbaa !5
  %888 = getelementptr inbounds double, ptr %887, i64 1
  %889 = call i32 @dormr2_(ptr noundef @.str.6, ptr noundef @.str.4, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef %884, ptr noundef @c__4, ptr noundef %885, ptr noundef %886, ptr noundef @c__4, ptr noundef %888, ptr noundef %75)
  %890 = load i64, ptr %75, align 8, !tbaa !9
  %891 = icmp ne i64 %890, 0
  br i1 %891, label %892, label %893

892:                                              ; preds = %883
  br label %1813

893:                                              ; preds = %883
  %894 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %895 = getelementptr inbounds [4 x double], ptr %68, i64 0, i64 0
  %896 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %897 = load ptr, ptr %33, align 8, !tbaa !5
  %898 = getelementptr inbounds double, ptr %897, i64 1
  %899 = call i32 @dormr2_(ptr noundef @.str.7, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef %894, ptr noundef @c__4, ptr noundef %895, ptr noundef %896, ptr noundef @c__4, ptr noundef %898, ptr noundef %75)
  %900 = load i64, ptr %75, align 8, !tbaa !9
  %901 = icmp ne i64 %900, 0
  br i1 %901, label %902, label %903

902:                                              ; preds = %893
  br label %1813

903:                                              ; preds = %893
  store double 0.000000e+00, ptr %79, align 8, !tbaa !11
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %904 = load ptr, ptr %32, align 8, !tbaa !5
  %905 = load i64, ptr %904, align 8, !tbaa !9
  store i64 %905, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %906

906:                                              ; preds = %921, %903
  %907 = load i64, ptr %49, align 8, !tbaa !9
  %908 = load i64, ptr %44, align 8, !tbaa !9
  %909 = icmp sle i64 %907, %908
  br i1 %909, label %910, label %924

910:                                              ; preds = %906
  %911 = load ptr, ptr %31, align 8, !tbaa !5
  %912 = load ptr, ptr %32, align 8, !tbaa !5
  %913 = load i64, ptr %912, align 8, !tbaa !9
  %914 = add nsw i64 %913, 1
  %915 = load i64, ptr %49, align 8, !tbaa !9
  %916 = shl i64 %915, 2
  %917 = add nsw i64 %914, %916
  %918 = sub nsw i64 %917, 5
  %919 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 %918
  %920 = call i32 @dlassq_(ptr noundef %911, ptr noundef %919, ptr noundef @c__1, ptr noundef %79, ptr noundef %67)
  br label %921

921:                                              ; preds = %910
  %922 = load i64, ptr %49, align 8, !tbaa !9
  %923 = add nsw i64 %922, 1
  store i64 %923, ptr %49, align 8, !tbaa !9
  br label %906, !llvm.loop !16

924:                                              ; preds = %906
  %925 = load double, ptr %79, align 8, !tbaa !11
  %926 = load double, ptr %67, align 8, !tbaa !11
  %927 = call double @sqrt(double noundef %926) #5
  %928 = fmul double %925, %927
  store double %928, ptr %73, align 8, !tbaa !11
  %929 = getelementptr inbounds [16 x double], ptr %70, i64 0, i64 0
  %930 = getelementptr inbounds [4 x double], ptr %66, i64 0, i64 0
  %931 = load ptr, ptr %33, align 8, !tbaa !5
  %932 = getelementptr inbounds double, ptr %931, i64 1
  %933 = call i32 @dgeqr2_(ptr noundef %50, ptr noundef %50, ptr noundef %929, ptr noundef @c__4, ptr noundef %930, ptr noundef %932, ptr noundef %75)
  %934 = load i64, ptr %75, align 8, !tbaa !9
  %935 = icmp ne i64 %934, 0
  br i1 %935, label %936, label %937

936:                                              ; preds = %924
  br label %1813

937:                                              ; preds = %924
  %938 = getelementptr inbounds [16 x double], ptr %70, i64 0, i64 0
  %939 = getelementptr inbounds [4 x double], ptr %66, i64 0, i64 0
  %940 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 0
  %941 = load ptr, ptr %33, align 8, !tbaa !5
  %942 = getelementptr inbounds double, ptr %941, i64 1
  %943 = load ptr, ptr %35, align 8, !tbaa !5
  %944 = call i32 @dorm2r_(ptr noundef @.str.7, ptr noundef @.str.4, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef %938, ptr noundef @c__4, ptr noundef %939, ptr noundef %940, ptr noundef @c__4, ptr noundef %942, ptr noundef %943)
  %945 = getelementptr inbounds [16 x double], ptr %70, i64 0, i64 0
  %946 = getelementptr inbounds [4 x double], ptr %66, i64 0, i64 0
  %947 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 0
  %948 = load ptr, ptr %33, align 8, !tbaa !5
  %949 = getelementptr inbounds double, ptr %948, i64 1
  %950 = load ptr, ptr %35, align 8, !tbaa !5
  %951 = call i32 @dorm2r_(ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef %945, ptr noundef @c__4, ptr noundef %946, ptr noundef %947, ptr noundef @c__4, ptr noundef %949, ptr noundef %950)
  %952 = load i64, ptr %75, align 8, !tbaa !9
  %953 = icmp ne i64 %952, 0
  br i1 %953, label %954, label %955

954:                                              ; preds = %937
  br label %1813

955:                                              ; preds = %937
  store double 0.000000e+00, ptr %79, align 8, !tbaa !11
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %956 = load ptr, ptr %32, align 8, !tbaa !5
  %957 = load i64, ptr %956, align 8, !tbaa !9
  store i64 %957, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %958

958:                                              ; preds = %973, %955
  %959 = load i64, ptr %49, align 8, !tbaa !9
  %960 = load i64, ptr %44, align 8, !tbaa !9
  %961 = icmp sle i64 %959, %960
  br i1 %961, label %962, label %976

962:                                              ; preds = %958
  %963 = load ptr, ptr %31, align 8, !tbaa !5
  %964 = load ptr, ptr %32, align 8, !tbaa !5
  %965 = load i64, ptr %964, align 8, !tbaa !9
  %966 = add nsw i64 %965, 1
  %967 = load i64, ptr %49, align 8, !tbaa !9
  %968 = shl i64 %967, 2
  %969 = add nsw i64 %966, %968
  %970 = sub nsw i64 %969, 5
  %971 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %970
  %972 = call i32 @dlassq_(ptr noundef %963, ptr noundef %971, ptr noundef @c__1, ptr noundef %79, ptr noundef %67)
  br label %973

973:                                              ; preds = %962
  %974 = load i64, ptr %49, align 8, !tbaa !9
  %975 = add nsw i64 %974, 1
  store i64 %975, ptr %49, align 8, !tbaa !9
  br label %958, !llvm.loop !17

976:                                              ; preds = %958
  %977 = load double, ptr %79, align 8, !tbaa !11
  %978 = load double, ptr %67, align 8, !tbaa !11
  %979 = call double @sqrt(double noundef %978) #5
  %980 = fmul double %977, %979
  store double %980, ptr %72, align 8, !tbaa !11
  %981 = load double, ptr %72, align 8, !tbaa !11
  %982 = load double, ptr %73, align 8, !tbaa !11
  %983 = fcmp ole double %981, %982
  br i1 %983, label %984, label %1001

984:                                              ; preds = %976
  %985 = load double, ptr %72, align 8, !tbaa !11
  %986 = load double, ptr %81, align 8, !tbaa !11
  %987 = fcmp ole double %985, %986
  br i1 %987, label %988, label %1001

988:                                              ; preds = %984
  %989 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 0
  %990 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %991 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %989, ptr noundef @c__4, ptr noundef %990, ptr noundef @c__4)
  %992 = getelementptr inbounds [16 x double], ptr %70, i64 0, i64 0
  %993 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %994 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %992, ptr noundef @c__4, ptr noundef %993, ptr noundef @c__4)
  %995 = getelementptr inbounds [16 x double], ptr %76, i64 0, i64 0
  %996 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %997 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %995, ptr noundef @c__4, ptr noundef %996, ptr noundef @c__4)
  %998 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 0
  %999 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1000 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %998, ptr noundef @c__4, ptr noundef %999, ptr noundef @c__4)
  br label %1007

1001:                                             ; preds = %984, %976
  %1002 = load double, ptr %73, align 8, !tbaa !11
  %1003 = load double, ptr %81, align 8, !tbaa !11
  %1004 = fcmp oge double %1002, %1003
  br i1 %1004, label %1005, label %1006

1005:                                             ; preds = %1001
  br label %1813

1006:                                             ; preds = %1001
  br label %1007

1007:                                             ; preds = %1006, %988
  %1008 = load i64, ptr %50, align 8, !tbaa !9
  %1009 = sub nsw i64 %1008, 1
  store i64 %1009, ptr %44, align 8, !tbaa !9
  %1010 = load i64, ptr %50, align 8, !tbaa !9
  %1011 = sub nsw i64 %1010, 1
  store i64 %1011, ptr %45, align 8, !tbaa !9
  %1012 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 1
  %1013 = call i32 @dlaset_(ptr noundef @.str.8, ptr noundef %44, ptr noundef %45, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %1012, ptr noundef @c__4)
  %1014 = load ptr, ptr %22, align 8, !tbaa !5
  %1015 = load ptr, ptr %30, align 8, !tbaa !5
  %1016 = load i64, ptr %1015, align 8, !tbaa !9
  %1017 = load ptr, ptr %30, align 8, !tbaa !5
  %1018 = load i64, ptr %1017, align 8, !tbaa !9
  %1019 = load i64, ptr %36, align 8, !tbaa !9
  %1020 = mul nsw i64 %1018, %1019
  %1021 = add nsw i64 %1016, %1020
  %1022 = getelementptr inbounds double, ptr %1014, i64 %1021
  %1023 = load ptr, ptr %23, align 8, !tbaa !5
  %1024 = load ptr, ptr %33, align 8, !tbaa !5
  %1025 = load i64, ptr %50, align 8, !tbaa !9
  %1026 = load i64, ptr %50, align 8, !tbaa !9
  %1027 = mul nsw i64 %1025, %1026
  %1028 = add nsw i64 %1027, 1
  %1029 = getelementptr inbounds double, ptr %1024, i64 %1028
  %1030 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %1022, ptr noundef %1023, ptr noundef %1029, ptr noundef %50)
  %1031 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1032 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %1033 = load ptr, ptr %33, align 8, !tbaa !5
  %1034 = getelementptr inbounds double, ptr %1033, i64 1
  %1035 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1031, ptr noundef @c__4, ptr noundef %1032, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1034, ptr noundef %50)
  %1036 = load ptr, ptr %33, align 8, !tbaa !5
  %1037 = getelementptr inbounds double, ptr %1036, i64 1
  %1038 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1039 = load ptr, ptr %33, align 8, !tbaa !5
  %1040 = load i64, ptr %50, align 8, !tbaa !9
  %1041 = load i64, ptr %50, align 8, !tbaa !9
  %1042 = mul nsw i64 %1040, %1041
  %1043 = add nsw i64 %1042, 1
  %1044 = getelementptr inbounds double, ptr %1039, i64 %1043
  %1045 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b48, ptr noundef %1037, ptr noundef %50, ptr noundef %1038, ptr noundef @c__4, ptr noundef @c_b42, ptr noundef %1044, ptr noundef %50)
  store double 0.000000e+00, ptr %79, align 8, !tbaa !11
  store double 1.000000e+00, ptr %67, align 8, !tbaa !11
  %1046 = load i64, ptr %50, align 8, !tbaa !9
  %1047 = load i64, ptr %50, align 8, !tbaa !9
  %1048 = mul nsw i64 %1046, %1047
  store i64 %1048, ptr %44, align 8, !tbaa !9
  %1049 = load ptr, ptr %33, align 8, !tbaa !5
  %1050 = load i64, ptr %50, align 8, !tbaa !9
  %1051 = load i64, ptr %50, align 8, !tbaa !9
  %1052 = mul nsw i64 %1050, %1051
  %1053 = add nsw i64 %1052, 1
  %1054 = getelementptr inbounds double, ptr %1049, i64 %1053
  %1055 = call i32 @dlassq_(ptr noundef %44, ptr noundef %1054, ptr noundef @c__1, ptr noundef %79, ptr noundef %67)
  %1056 = load ptr, ptr %24, align 8, !tbaa !5
  %1057 = load ptr, ptr %30, align 8, !tbaa !5
  %1058 = load i64, ptr %1057, align 8, !tbaa !9
  %1059 = load ptr, ptr %30, align 8, !tbaa !5
  %1060 = load i64, ptr %1059, align 8, !tbaa !9
  %1061 = load i64, ptr %38, align 8, !tbaa !9
  %1062 = mul nsw i64 %1060, %1061
  %1063 = add nsw i64 %1058, %1062
  %1064 = getelementptr inbounds double, ptr %1056, i64 %1063
  %1065 = load ptr, ptr %25, align 8, !tbaa !5
  %1066 = load ptr, ptr %33, align 8, !tbaa !5
  %1067 = load i64, ptr %50, align 8, !tbaa !9
  %1068 = load i64, ptr %50, align 8, !tbaa !9
  %1069 = mul nsw i64 %1067, %1068
  %1070 = add nsw i64 %1069, 1
  %1071 = getelementptr inbounds double, ptr %1066, i64 %1070
  %1072 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %1064, ptr noundef %1065, ptr noundef %1071, ptr noundef %50)
  %1073 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1074 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %1075 = load ptr, ptr %33, align 8, !tbaa !5
  %1076 = getelementptr inbounds double, ptr %1075, i64 1
  %1077 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1073, ptr noundef @c__4, ptr noundef %1074, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1076, ptr noundef %50)
  %1078 = load ptr, ptr %33, align 8, !tbaa !5
  %1079 = getelementptr inbounds double, ptr %1078, i64 1
  %1080 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1081 = load ptr, ptr %33, align 8, !tbaa !5
  %1082 = load i64, ptr %50, align 8, !tbaa !9
  %1083 = load i64, ptr %50, align 8, !tbaa !9
  %1084 = mul nsw i64 %1082, %1083
  %1085 = add nsw i64 %1084, 1
  %1086 = getelementptr inbounds double, ptr %1081, i64 %1085
  %1087 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b48, ptr noundef %1079, ptr noundef %50, ptr noundef %1080, ptr noundef @c__4, ptr noundef @c_b42, ptr noundef %1086, ptr noundef %50)
  %1088 = load i64, ptr %50, align 8, !tbaa !9
  %1089 = load i64, ptr %50, align 8, !tbaa !9
  %1090 = mul nsw i64 %1088, %1089
  store i64 %1090, ptr %44, align 8, !tbaa !9
  %1091 = load ptr, ptr %33, align 8, !tbaa !5
  %1092 = load i64, ptr %50, align 8, !tbaa !9
  %1093 = load i64, ptr %50, align 8, !tbaa !9
  %1094 = mul nsw i64 %1092, %1093
  %1095 = add nsw i64 %1094, 1
  %1096 = getelementptr inbounds double, ptr %1091, i64 %1095
  %1097 = call i32 @dlassq_(ptr noundef %44, ptr noundef %1096, ptr noundef @c__1, ptr noundef %79, ptr noundef %67)
  %1098 = load double, ptr %79, align 8, !tbaa !11
  %1099 = load double, ptr %67, align 8, !tbaa !11
  %1100 = call double @sqrt(double noundef %1099) #5
  %1101 = fmul double %1098, %1100
  store double %1101, ptr %60, align 8, !tbaa !11
  %1102 = load double, ptr %60, align 8, !tbaa !11
  %1103 = load double, ptr %81, align 8, !tbaa !11
  %1104 = fcmp ole double %1102, %1103
  %1105 = zext i1 %1104 to i32
  %1106 = sext i32 %1105 to i64
  store i64 %1106, ptr %80, align 8, !tbaa !9
  %1107 = load i64, ptr %80, align 8, !tbaa !9
  %1108 = icmp ne i64 %1107, 0
  br i1 %1108, label %1110, label %1109

1109:                                             ; preds = %1007
  br label %1813

1110:                                             ; preds = %1007
  %1111 = load ptr, ptr %31, align 8, !tbaa !5
  %1112 = load ptr, ptr %32, align 8, !tbaa !5
  %1113 = load ptr, ptr %32, align 8, !tbaa !5
  %1114 = load i64, ptr %1113, align 8, !tbaa !9
  %1115 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 %1114
  %1116 = call i32 @dlaset_(ptr noundef @.str, ptr noundef %1111, ptr noundef %1112, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %1115, ptr noundef @c__4)
  %1117 = getelementptr inbounds [16 x double], ptr %51, i64 0, i64 0
  %1118 = load ptr, ptr %22, align 8, !tbaa !5
  %1119 = load ptr, ptr %30, align 8, !tbaa !5
  %1120 = load i64, ptr %1119, align 8, !tbaa !9
  %1121 = load ptr, ptr %30, align 8, !tbaa !5
  %1122 = load i64, ptr %1121, align 8, !tbaa !9
  %1123 = load i64, ptr %36, align 8, !tbaa !9
  %1124 = mul nsw i64 %1122, %1123
  %1125 = add nsw i64 %1120, %1124
  %1126 = getelementptr inbounds double, ptr %1118, i64 %1125
  %1127 = load ptr, ptr %23, align 8, !tbaa !5
  %1128 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %1117, ptr noundef @c__4, ptr noundef %1126, ptr noundef %1127)
  %1129 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %1130 = load ptr, ptr %24, align 8, !tbaa !5
  %1131 = load ptr, ptr %30, align 8, !tbaa !5
  %1132 = load i64, ptr %1131, align 8, !tbaa !9
  %1133 = load ptr, ptr %30, align 8, !tbaa !5
  %1134 = load i64, ptr %1133, align 8, !tbaa !9
  %1135 = load i64, ptr %38, align 8, !tbaa !9
  %1136 = mul nsw i64 %1134, %1135
  %1137 = add nsw i64 %1132, %1136
  %1138 = getelementptr inbounds double, ptr %1130, i64 %1137
  %1139 = load ptr, ptr %25, align 8, !tbaa !5
  %1140 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %50, ptr noundef %50, ptr noundef %1129, ptr noundef @c__4, ptr noundef %1138, ptr noundef %1139)
  %1141 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %1142 = call i32 @dlaset_(ptr noundef @.str, ptr noundef @c__4, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %1141, ptr noundef @c__4)
  %1143 = load i64, ptr %50, align 8, !tbaa !9
  %1144 = load i64, ptr %50, align 8, !tbaa !9
  %1145 = mul nsw i64 %1143, %1144
  store i64 %1145, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %1146

1146:                                             ; preds = %1154, %1110
  %1147 = load i64, ptr %49, align 8, !tbaa !9
  %1148 = load i64, ptr %44, align 8, !tbaa !9
  %1149 = icmp sle i64 %1147, %1148
  br i1 %1149, label %1150, label %1157

1150:                                             ; preds = %1146
  %1151 = load ptr, ptr %33, align 8, !tbaa !5
  %1152 = load i64, ptr %49, align 8, !tbaa !9
  %1153 = getelementptr inbounds double, ptr %1151, i64 %1152
  store double 0.000000e+00, ptr %1153, align 8, !tbaa !11
  br label %1154

1154:                                             ; preds = %1150
  %1155 = load i64, ptr %49, align 8, !tbaa !9
  %1156 = add nsw i64 %1155, 1
  store i64 %1156, ptr %49, align 8, !tbaa !9
  br label %1146, !llvm.loop !18

1157:                                             ; preds = %1146
  %1158 = load ptr, ptr %33, align 8, !tbaa !5
  %1159 = getelementptr inbounds double, ptr %1158, i64 1
  store double 1.000000e+00, ptr %1159, align 8, !tbaa !11
  %1160 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  store double 1.000000e+00, ptr %1160, align 16, !tbaa !11
  %1161 = load ptr, ptr %34, align 8, !tbaa !5
  %1162 = load i64, ptr %1161, align 8, !tbaa !9
  %1163 = load i64, ptr %50, align 8, !tbaa !9
  %1164 = load i64, ptr %50, align 8, !tbaa !9
  %1165 = mul nsw i64 %1163, %1164
  %1166 = sub nsw i64 %1162, %1165
  %1167 = sub nsw i64 %1166, 2
  store i64 %1167, ptr %65, align 8, !tbaa !9
  %1168 = load ptr, ptr %32, align 8, !tbaa !5
  %1169 = load i64, ptr %1168, align 8, !tbaa !9
  %1170 = icmp sgt i64 %1169, 1
  br i1 %1170, label %1171, label %1231

1171:                                             ; preds = %1157
  %1172 = load ptr, ptr %22, align 8, !tbaa !5
  %1173 = load ptr, ptr %30, align 8, !tbaa !5
  %1174 = load i64, ptr %1173, align 8, !tbaa !9
  %1175 = load ptr, ptr %30, align 8, !tbaa !5
  %1176 = load i64, ptr %1175, align 8, !tbaa !9
  %1177 = load i64, ptr %36, align 8, !tbaa !9
  %1178 = mul nsw i64 %1176, %1177
  %1179 = add nsw i64 %1174, %1178
  %1180 = getelementptr inbounds double, ptr %1172, i64 %1179
  %1181 = load ptr, ptr %23, align 8, !tbaa !5
  %1182 = load ptr, ptr %24, align 8, !tbaa !5
  %1183 = load ptr, ptr %30, align 8, !tbaa !5
  %1184 = load i64, ptr %1183, align 8, !tbaa !9
  %1185 = load ptr, ptr %30, align 8, !tbaa !5
  %1186 = load i64, ptr %1185, align 8, !tbaa !9
  %1187 = load i64, ptr %38, align 8, !tbaa !9
  %1188 = mul nsw i64 %1186, %1187
  %1189 = add nsw i64 %1184, %1188
  %1190 = getelementptr inbounds double, ptr %1182, i64 %1189
  %1191 = load ptr, ptr %25, align 8, !tbaa !5
  %1192 = getelementptr inbounds [2 x double], ptr %55, i64 0, i64 0
  %1193 = getelementptr inbounds [2 x double], ptr %54, i64 0, i64 0
  %1194 = getelementptr inbounds [2 x double], ptr %53, i64 0, i64 0
  %1195 = load ptr, ptr %33, align 8, !tbaa !5
  %1196 = getelementptr inbounds double, ptr %1195, i64 1
  %1197 = load ptr, ptr %33, align 8, !tbaa !5
  %1198 = getelementptr inbounds double, ptr %1197, i64 2
  %1199 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %1200 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 1
  %1201 = call i32 @dlagv2_(ptr noundef %1180, ptr noundef %1181, ptr noundef %1190, ptr noundef %1191, ptr noundef %1192, ptr noundef %1193, ptr noundef %1194, ptr noundef %1196, ptr noundef %1198, ptr noundef %1199, ptr noundef %1200)
  %1202 = load ptr, ptr %33, align 8, !tbaa !5
  %1203 = getelementptr inbounds double, ptr %1202, i64 2
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  %1205 = fneg double %1204
  %1206 = load ptr, ptr %33, align 8, !tbaa !5
  %1207 = load i64, ptr %50, align 8, !tbaa !9
  %1208 = add nsw i64 %1207, 1
  %1209 = getelementptr inbounds double, ptr %1206, i64 %1208
  store double %1205, ptr %1209, align 8, !tbaa !11
  %1210 = load ptr, ptr %33, align 8, !tbaa !5
  %1211 = getelementptr inbounds double, ptr %1210, i64 1
  %1212 = load double, ptr %1211, align 8, !tbaa !11
  %1213 = load ptr, ptr %33, align 8, !tbaa !5
  %1214 = load i64, ptr %50, align 8, !tbaa !9
  %1215 = add nsw i64 %1214, 2
  %1216 = getelementptr inbounds double, ptr %1213, i64 %1215
  store double %1212, ptr %1216, align 8, !tbaa !11
  %1217 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %1218 = load double, ptr %1217, align 16, !tbaa !11
  %1219 = load ptr, ptr %32, align 8, !tbaa !5
  %1220 = load i64, ptr %1219, align 8, !tbaa !9
  %1221 = load ptr, ptr %32, align 8, !tbaa !5
  %1222 = load i64, ptr %1221, align 8, !tbaa !9
  %1223 = shl i64 %1222, 2
  %1224 = add nsw i64 %1220, %1223
  %1225 = sub nsw i64 %1224, 5
  %1226 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1225
  store double %1218, ptr %1226, align 8, !tbaa !11
  %1227 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 1
  %1228 = load double, ptr %1227, align 8, !tbaa !11
  %1229 = fneg double %1228
  %1230 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 4
  store double %1229, ptr %1230, align 16, !tbaa !11
  br label %1231

1231:                                             ; preds = %1171, %1157
  %1232 = load ptr, ptr %33, align 8, !tbaa !5
  %1233 = load i64, ptr %50, align 8, !tbaa !9
  %1234 = load i64, ptr %50, align 8, !tbaa !9
  %1235 = mul nsw i64 %1233, %1234
  %1236 = getelementptr inbounds double, ptr %1232, i64 %1235
  store double 1.000000e+00, ptr %1236, align 8, !tbaa !11
  %1237 = load i64, ptr %50, align 8, !tbaa !9
  %1238 = load i64, ptr %50, align 8, !tbaa !9
  %1239 = shl i64 %1238, 2
  %1240 = add nsw i64 %1237, %1239
  %1241 = sub nsw i64 %1240, 5
  %1242 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1241
  store double 1.000000e+00, ptr %1242, align 8, !tbaa !11
  %1243 = load ptr, ptr %31, align 8, !tbaa !5
  %1244 = load i64, ptr %1243, align 8, !tbaa !9
  %1245 = icmp sgt i64 %1244, 1
  br i1 %1245, label %1246, label %1392

1246:                                             ; preds = %1231
  %1247 = load ptr, ptr %22, align 8, !tbaa !5
  %1248 = load ptr, ptr %30, align 8, !tbaa !5
  %1249 = load i64, ptr %1248, align 8, !tbaa !9
  %1250 = load ptr, ptr %32, align 8, !tbaa !5
  %1251 = load i64, ptr %1250, align 8, !tbaa !9
  %1252 = add nsw i64 %1249, %1251
  %1253 = load ptr, ptr %30, align 8, !tbaa !5
  %1254 = load i64, ptr %1253, align 8, !tbaa !9
  %1255 = load ptr, ptr %32, align 8, !tbaa !5
  %1256 = load i64, ptr %1255, align 8, !tbaa !9
  %1257 = add nsw i64 %1254, %1256
  %1258 = load i64, ptr %36, align 8, !tbaa !9
  %1259 = mul nsw i64 %1257, %1258
  %1260 = add nsw i64 %1252, %1259
  %1261 = getelementptr inbounds double, ptr %1247, i64 %1260
  %1262 = load ptr, ptr %23, align 8, !tbaa !5
  %1263 = load ptr, ptr %24, align 8, !tbaa !5
  %1264 = load ptr, ptr %30, align 8, !tbaa !5
  %1265 = load i64, ptr %1264, align 8, !tbaa !9
  %1266 = load ptr, ptr %32, align 8, !tbaa !5
  %1267 = load i64, ptr %1266, align 8, !tbaa !9
  %1268 = add nsw i64 %1265, %1267
  %1269 = load ptr, ptr %30, align 8, !tbaa !5
  %1270 = load i64, ptr %1269, align 8, !tbaa !9
  %1271 = load ptr, ptr %32, align 8, !tbaa !5
  %1272 = load i64, ptr %1271, align 8, !tbaa !9
  %1273 = add nsw i64 %1270, %1272
  %1274 = load i64, ptr %38, align 8, !tbaa !9
  %1275 = mul nsw i64 %1273, %1274
  %1276 = add nsw i64 %1268, %1275
  %1277 = getelementptr inbounds double, ptr %1263, i64 %1276
  %1278 = load ptr, ptr %25, align 8, !tbaa !5
  %1279 = getelementptr inbounds [4 x double], ptr %68, i64 0, i64 0
  %1280 = getelementptr inbounds [4 x double], ptr %66, i64 0, i64 0
  %1281 = load ptr, ptr %33, align 8, !tbaa !5
  %1282 = load i64, ptr %50, align 8, !tbaa !9
  %1283 = load i64, ptr %50, align 8, !tbaa !9
  %1284 = mul nsw i64 %1282, %1283
  %1285 = add nsw i64 %1284, 1
  %1286 = getelementptr inbounds double, ptr %1281, i64 %1285
  %1287 = load ptr, ptr %33, align 8, !tbaa !5
  %1288 = load ptr, ptr %32, align 8, !tbaa !5
  %1289 = load i64, ptr %1288, align 8, !tbaa !9
  %1290 = load i64, ptr %50, align 8, !tbaa !9
  %1291 = mul nsw i64 %1289, %1290
  %1292 = load ptr, ptr %32, align 8, !tbaa !5
  %1293 = load i64, ptr %1292, align 8, !tbaa !9
  %1294 = add nsw i64 %1291, %1293
  %1295 = add nsw i64 %1294, 1
  %1296 = getelementptr inbounds double, ptr %1287, i64 %1295
  %1297 = load ptr, ptr %33, align 8, !tbaa !5
  %1298 = load ptr, ptr %32, align 8, !tbaa !5
  %1299 = load i64, ptr %1298, align 8, !tbaa !9
  %1300 = load i64, ptr %50, align 8, !tbaa !9
  %1301 = mul nsw i64 %1299, %1300
  %1302 = load ptr, ptr %32, align 8, !tbaa !5
  %1303 = load i64, ptr %1302, align 8, !tbaa !9
  %1304 = add nsw i64 %1301, %1303
  %1305 = add nsw i64 %1304, 2
  %1306 = getelementptr inbounds double, ptr %1297, i64 %1305
  %1307 = load ptr, ptr %32, align 8, !tbaa !5
  %1308 = load i64, ptr %1307, align 8, !tbaa !9
  %1309 = add nsw i64 %1308, 1
  %1310 = load ptr, ptr %32, align 8, !tbaa !5
  %1311 = load i64, ptr %1310, align 8, !tbaa !9
  %1312 = add nsw i64 %1311, 1
  %1313 = shl i64 %1312, 2
  %1314 = add nsw i64 %1309, %1313
  %1315 = sub nsw i64 %1314, 5
  %1316 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1315
  %1317 = load i64, ptr %50, align 8, !tbaa !9
  %1318 = load i64, ptr %50, align 8, !tbaa !9
  %1319 = sub nsw i64 %1318, 1
  %1320 = shl i64 %1319, 2
  %1321 = add nsw i64 %1317, %1320
  %1322 = sub nsw i64 %1321, 5
  %1323 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1322
  %1324 = call i32 @dlagv2_(ptr noundef %1261, ptr noundef %1262, ptr noundef %1277, ptr noundef %1278, ptr noundef %1279, ptr noundef %1280, ptr noundef %1286, ptr noundef %1296, ptr noundef %1306, ptr noundef %1316, ptr noundef %1323)
  %1325 = load ptr, ptr %33, align 8, !tbaa !5
  %1326 = load ptr, ptr %32, align 8, !tbaa !5
  %1327 = load i64, ptr %1326, align 8, !tbaa !9
  %1328 = load i64, ptr %50, align 8, !tbaa !9
  %1329 = mul nsw i64 %1327, %1328
  %1330 = load ptr, ptr %32, align 8, !tbaa !5
  %1331 = load i64, ptr %1330, align 8, !tbaa !9
  %1332 = add nsw i64 %1329, %1331
  %1333 = add nsw i64 %1332, 1
  %1334 = getelementptr inbounds double, ptr %1325, i64 %1333
  %1335 = load double, ptr %1334, align 8, !tbaa !11
  %1336 = load ptr, ptr %33, align 8, !tbaa !5
  %1337 = load i64, ptr %50, align 8, !tbaa !9
  %1338 = load i64, ptr %50, align 8, !tbaa !9
  %1339 = mul nsw i64 %1337, %1338
  %1340 = getelementptr inbounds double, ptr %1336, i64 %1339
  store double %1335, ptr %1340, align 8, !tbaa !11
  %1341 = load ptr, ptr %33, align 8, !tbaa !5
  %1342 = load ptr, ptr %32, align 8, !tbaa !5
  %1343 = load i64, ptr %1342, align 8, !tbaa !9
  %1344 = load i64, ptr %50, align 8, !tbaa !9
  %1345 = mul nsw i64 %1343, %1344
  %1346 = load ptr, ptr %32, align 8, !tbaa !5
  %1347 = load i64, ptr %1346, align 8, !tbaa !9
  %1348 = add nsw i64 %1345, %1347
  %1349 = add nsw i64 %1348, 2
  %1350 = getelementptr inbounds double, ptr %1341, i64 %1349
  %1351 = load double, ptr %1350, align 8, !tbaa !11
  %1352 = fneg double %1351
  %1353 = load ptr, ptr %33, align 8, !tbaa !5
  %1354 = load i64, ptr %50, align 8, !tbaa !9
  %1355 = load i64, ptr %50, align 8, !tbaa !9
  %1356 = mul nsw i64 %1354, %1355
  %1357 = sub nsw i64 %1356, 1
  %1358 = getelementptr inbounds double, ptr %1353, i64 %1357
  store double %1352, ptr %1358, align 8, !tbaa !11
  %1359 = load ptr, ptr %32, align 8, !tbaa !5
  %1360 = load i64, ptr %1359, align 8, !tbaa !9
  %1361 = add nsw i64 %1360, 1
  %1362 = load ptr, ptr %32, align 8, !tbaa !5
  %1363 = load i64, ptr %1362, align 8, !tbaa !9
  %1364 = add nsw i64 %1363, 1
  %1365 = shl i64 %1364, 2
  %1366 = add nsw i64 %1361, %1365
  %1367 = sub nsw i64 %1366, 5
  %1368 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1367
  %1369 = load double, ptr %1368, align 8, !tbaa !11
  %1370 = load i64, ptr %50, align 8, !tbaa !9
  %1371 = load i64, ptr %50, align 8, !tbaa !9
  %1372 = shl i64 %1371, 2
  %1373 = add nsw i64 %1370, %1372
  %1374 = sub nsw i64 %1373, 5
  %1375 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1374
  store double %1369, ptr %1375, align 8, !tbaa !11
  %1376 = load i64, ptr %50, align 8, !tbaa !9
  %1377 = load i64, ptr %50, align 8, !tbaa !9
  %1378 = sub nsw i64 %1377, 1
  %1379 = shl i64 %1378, 2
  %1380 = add nsw i64 %1376, %1379
  %1381 = sub nsw i64 %1380, 5
  %1382 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1381
  %1383 = load double, ptr %1382, align 8, !tbaa !11
  %1384 = fneg double %1383
  %1385 = load i64, ptr %50, align 8, !tbaa !9
  %1386 = sub nsw i64 %1385, 1
  %1387 = load i64, ptr %50, align 8, !tbaa !9
  %1388 = shl i64 %1387, 2
  %1389 = add nsw i64 %1386, %1388
  %1390 = sub nsw i64 %1389, 5
  %1391 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1390
  store double %1384, ptr %1391, align 8, !tbaa !11
  br label %1392

1392:                                             ; preds = %1246, %1231
  %1393 = load ptr, ptr %32, align 8, !tbaa !5
  %1394 = load ptr, ptr %31, align 8, !tbaa !5
  %1395 = load ptr, ptr %32, align 8, !tbaa !5
  %1396 = load ptr, ptr %33, align 8, !tbaa !5
  %1397 = getelementptr inbounds double, ptr %1396, i64 1
  %1398 = load ptr, ptr %22, align 8, !tbaa !5
  %1399 = load ptr, ptr %30, align 8, !tbaa !5
  %1400 = load i64, ptr %1399, align 8, !tbaa !9
  %1401 = load ptr, ptr %30, align 8, !tbaa !5
  %1402 = load i64, ptr %1401, align 8, !tbaa !9
  %1403 = load ptr, ptr %32, align 8, !tbaa !5
  %1404 = load i64, ptr %1403, align 8, !tbaa !9
  %1405 = add nsw i64 %1402, %1404
  %1406 = load i64, ptr %36, align 8, !tbaa !9
  %1407 = mul nsw i64 %1405, %1406
  %1408 = add nsw i64 %1400, %1407
  %1409 = getelementptr inbounds double, ptr %1398, i64 %1408
  %1410 = load ptr, ptr %23, align 8, !tbaa !5
  %1411 = load ptr, ptr %33, align 8, !tbaa !5
  %1412 = load i64, ptr %50, align 8, !tbaa !9
  %1413 = load i64, ptr %50, align 8, !tbaa !9
  %1414 = mul nsw i64 %1412, %1413
  %1415 = add nsw i64 %1414, 1
  %1416 = getelementptr inbounds double, ptr %1411, i64 %1415
  %1417 = load ptr, ptr %32, align 8, !tbaa !5
  %1418 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %1393, ptr noundef %1394, ptr noundef %1395, ptr noundef @c_b42, ptr noundef %1397, ptr noundef %50, ptr noundef %1409, ptr noundef %1410, ptr noundef @c_b5, ptr noundef %1416, ptr noundef %1417)
  %1419 = load ptr, ptr %32, align 8, !tbaa !5
  %1420 = load ptr, ptr %31, align 8, !tbaa !5
  %1421 = load ptr, ptr %33, align 8, !tbaa !5
  %1422 = load i64, ptr %50, align 8, !tbaa !9
  %1423 = load i64, ptr %50, align 8, !tbaa !9
  %1424 = mul nsw i64 %1422, %1423
  %1425 = add nsw i64 %1424, 1
  %1426 = getelementptr inbounds double, ptr %1421, i64 %1425
  %1427 = load ptr, ptr %32, align 8, !tbaa !5
  %1428 = load ptr, ptr %22, align 8, !tbaa !5
  %1429 = load ptr, ptr %30, align 8, !tbaa !5
  %1430 = load i64, ptr %1429, align 8, !tbaa !9
  %1431 = load ptr, ptr %30, align 8, !tbaa !5
  %1432 = load i64, ptr %1431, align 8, !tbaa !9
  %1433 = load ptr, ptr %32, align 8, !tbaa !5
  %1434 = load i64, ptr %1433, align 8, !tbaa !9
  %1435 = add nsw i64 %1432, %1434
  %1436 = load i64, ptr %36, align 8, !tbaa !9
  %1437 = mul nsw i64 %1435, %1436
  %1438 = add nsw i64 %1430, %1437
  %1439 = getelementptr inbounds double, ptr %1428, i64 %1438
  %1440 = load ptr, ptr %23, align 8, !tbaa !5
  %1441 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %1419, ptr noundef %1420, ptr noundef %1426, ptr noundef %1427, ptr noundef %1439, ptr noundef %1440)
  %1442 = load ptr, ptr %32, align 8, !tbaa !5
  %1443 = load ptr, ptr %31, align 8, !tbaa !5
  %1444 = load ptr, ptr %32, align 8, !tbaa !5
  %1445 = load ptr, ptr %33, align 8, !tbaa !5
  %1446 = getelementptr inbounds double, ptr %1445, i64 1
  %1447 = load ptr, ptr %24, align 8, !tbaa !5
  %1448 = load ptr, ptr %30, align 8, !tbaa !5
  %1449 = load i64, ptr %1448, align 8, !tbaa !9
  %1450 = load ptr, ptr %30, align 8, !tbaa !5
  %1451 = load i64, ptr %1450, align 8, !tbaa !9
  %1452 = load ptr, ptr %32, align 8, !tbaa !5
  %1453 = load i64, ptr %1452, align 8, !tbaa !9
  %1454 = add nsw i64 %1451, %1453
  %1455 = load i64, ptr %38, align 8, !tbaa !9
  %1456 = mul nsw i64 %1454, %1455
  %1457 = add nsw i64 %1449, %1456
  %1458 = getelementptr inbounds double, ptr %1447, i64 %1457
  %1459 = load ptr, ptr %25, align 8, !tbaa !5
  %1460 = load ptr, ptr %33, align 8, !tbaa !5
  %1461 = load i64, ptr %50, align 8, !tbaa !9
  %1462 = load i64, ptr %50, align 8, !tbaa !9
  %1463 = mul nsw i64 %1461, %1462
  %1464 = add nsw i64 %1463, 1
  %1465 = getelementptr inbounds double, ptr %1460, i64 %1464
  %1466 = load ptr, ptr %32, align 8, !tbaa !5
  %1467 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %1442, ptr noundef %1443, ptr noundef %1444, ptr noundef @c_b42, ptr noundef %1446, ptr noundef %50, ptr noundef %1458, ptr noundef %1459, ptr noundef @c_b5, ptr noundef %1465, ptr noundef %1466)
  %1468 = load ptr, ptr %32, align 8, !tbaa !5
  %1469 = load ptr, ptr %31, align 8, !tbaa !5
  %1470 = load ptr, ptr %33, align 8, !tbaa !5
  %1471 = load i64, ptr %50, align 8, !tbaa !9
  %1472 = load i64, ptr %50, align 8, !tbaa !9
  %1473 = mul nsw i64 %1471, %1472
  %1474 = add nsw i64 %1473, 1
  %1475 = getelementptr inbounds double, ptr %1470, i64 %1474
  %1476 = load ptr, ptr %32, align 8, !tbaa !5
  %1477 = load ptr, ptr %24, align 8, !tbaa !5
  %1478 = load ptr, ptr %30, align 8, !tbaa !5
  %1479 = load i64, ptr %1478, align 8, !tbaa !9
  %1480 = load ptr, ptr %30, align 8, !tbaa !5
  %1481 = load i64, ptr %1480, align 8, !tbaa !9
  %1482 = load ptr, ptr %32, align 8, !tbaa !5
  %1483 = load i64, ptr %1482, align 8, !tbaa !9
  %1484 = add nsw i64 %1481, %1483
  %1485 = load i64, ptr %38, align 8, !tbaa !9
  %1486 = mul nsw i64 %1484, %1485
  %1487 = add nsw i64 %1479, %1486
  %1488 = getelementptr inbounds double, ptr %1477, i64 %1487
  %1489 = load ptr, ptr %25, align 8, !tbaa !5
  %1490 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %1468, ptr noundef %1469, ptr noundef %1475, ptr noundef %1476, ptr noundef %1488, ptr noundef %1489)
  %1491 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1492 = load ptr, ptr %33, align 8, !tbaa !5
  %1493 = getelementptr inbounds double, ptr %1492, i64 1
  %1494 = load ptr, ptr %33, align 8, !tbaa !5
  %1495 = load i64, ptr %50, align 8, !tbaa !9
  %1496 = load i64, ptr %50, align 8, !tbaa !9
  %1497 = mul nsw i64 %1495, %1496
  %1498 = add nsw i64 %1497, 1
  %1499 = getelementptr inbounds double, ptr %1494, i64 %1498
  %1500 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1491, ptr noundef @c__4, ptr noundef %1493, ptr noundef %50, ptr noundef @c_b5, ptr noundef %1499, ptr noundef %50)
  %1501 = load ptr, ptr %33, align 8, !tbaa !5
  %1502 = load i64, ptr %50, align 8, !tbaa !9
  %1503 = load i64, ptr %50, align 8, !tbaa !9
  %1504 = mul nsw i64 %1502, %1503
  %1505 = add nsw i64 %1504, 1
  %1506 = getelementptr inbounds double, ptr %1501, i64 %1505
  %1507 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1508 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %1506, ptr noundef %50, ptr noundef %1507, ptr noundef @c__4)
  %1509 = load ptr, ptr %32, align 8, !tbaa !5
  %1510 = load ptr, ptr %31, align 8, !tbaa !5
  %1511 = load ptr, ptr %31, align 8, !tbaa !5
  %1512 = load ptr, ptr %22, align 8, !tbaa !5
  %1513 = load ptr, ptr %30, align 8, !tbaa !5
  %1514 = load i64, ptr %1513, align 8, !tbaa !9
  %1515 = load ptr, ptr %30, align 8, !tbaa !5
  %1516 = load i64, ptr %1515, align 8, !tbaa !9
  %1517 = load ptr, ptr %32, align 8, !tbaa !5
  %1518 = load i64, ptr %1517, align 8, !tbaa !9
  %1519 = add nsw i64 %1516, %1518
  %1520 = load i64, ptr %36, align 8, !tbaa !9
  %1521 = mul nsw i64 %1519, %1520
  %1522 = add nsw i64 %1514, %1521
  %1523 = getelementptr inbounds double, ptr %1512, i64 %1522
  %1524 = load ptr, ptr %23, align 8, !tbaa !5
  %1525 = load ptr, ptr %32, align 8, !tbaa !5
  %1526 = load i64, ptr %1525, align 8, !tbaa !9
  %1527 = add nsw i64 %1526, 1
  %1528 = load ptr, ptr %32, align 8, !tbaa !5
  %1529 = load i64, ptr %1528, align 8, !tbaa !9
  %1530 = add nsw i64 %1529, 1
  %1531 = shl i64 %1530, 2
  %1532 = add nsw i64 %1527, %1531
  %1533 = sub nsw i64 %1532, 5
  %1534 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1533
  %1535 = load ptr, ptr %33, align 8, !tbaa !5
  %1536 = getelementptr inbounds double, ptr %1535, i64 1
  %1537 = load ptr, ptr %32, align 8, !tbaa !5
  %1538 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %1509, ptr noundef %1510, ptr noundef %1511, ptr noundef @c_b42, ptr noundef %1523, ptr noundef %1524, ptr noundef %1534, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1536, ptr noundef %1537)
  %1539 = load ptr, ptr %32, align 8, !tbaa !5
  %1540 = load ptr, ptr %31, align 8, !tbaa !5
  %1541 = load ptr, ptr %33, align 8, !tbaa !5
  %1542 = getelementptr inbounds double, ptr %1541, i64 1
  %1543 = load ptr, ptr %32, align 8, !tbaa !5
  %1544 = load ptr, ptr %22, align 8, !tbaa !5
  %1545 = load ptr, ptr %30, align 8, !tbaa !5
  %1546 = load i64, ptr %1545, align 8, !tbaa !9
  %1547 = load ptr, ptr %30, align 8, !tbaa !5
  %1548 = load i64, ptr %1547, align 8, !tbaa !9
  %1549 = load ptr, ptr %32, align 8, !tbaa !5
  %1550 = load i64, ptr %1549, align 8, !tbaa !9
  %1551 = add nsw i64 %1548, %1550
  %1552 = load i64, ptr %36, align 8, !tbaa !9
  %1553 = mul nsw i64 %1551, %1552
  %1554 = add nsw i64 %1546, %1553
  %1555 = getelementptr inbounds double, ptr %1544, i64 %1554
  %1556 = load ptr, ptr %23, align 8, !tbaa !5
  %1557 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %1539, ptr noundef %1540, ptr noundef %1542, ptr noundef %1543, ptr noundef %1555, ptr noundef %1556)
  %1558 = load ptr, ptr %32, align 8, !tbaa !5
  %1559 = load ptr, ptr %31, align 8, !tbaa !5
  %1560 = load ptr, ptr %31, align 8, !tbaa !5
  %1561 = load ptr, ptr %24, align 8, !tbaa !5
  %1562 = load ptr, ptr %30, align 8, !tbaa !5
  %1563 = load i64, ptr %1562, align 8, !tbaa !9
  %1564 = load ptr, ptr %30, align 8, !tbaa !5
  %1565 = load i64, ptr %1564, align 8, !tbaa !9
  %1566 = load ptr, ptr %32, align 8, !tbaa !5
  %1567 = load i64, ptr %1566, align 8, !tbaa !9
  %1568 = add nsw i64 %1565, %1567
  %1569 = load i64, ptr %38, align 8, !tbaa !9
  %1570 = mul nsw i64 %1568, %1569
  %1571 = add nsw i64 %1563, %1570
  %1572 = getelementptr inbounds double, ptr %1561, i64 %1571
  %1573 = load ptr, ptr %25, align 8, !tbaa !5
  %1574 = load ptr, ptr %32, align 8, !tbaa !5
  %1575 = load i64, ptr %1574, align 8, !tbaa !9
  %1576 = add nsw i64 %1575, 1
  %1577 = load ptr, ptr %32, align 8, !tbaa !5
  %1578 = load i64, ptr %1577, align 8, !tbaa !9
  %1579 = add nsw i64 %1578, 1
  %1580 = shl i64 %1579, 2
  %1581 = add nsw i64 %1576, %1580
  %1582 = sub nsw i64 %1581, 5
  %1583 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %1582
  %1584 = load ptr, ptr %33, align 8, !tbaa !5
  %1585 = getelementptr inbounds double, ptr %1584, i64 1
  %1586 = load ptr, ptr %32, align 8, !tbaa !5
  %1587 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %1558, ptr noundef %1559, ptr noundef %1560, ptr noundef @c_b42, ptr noundef %1572, ptr noundef %1573, ptr noundef %1583, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1585, ptr noundef %1586)
  %1588 = load ptr, ptr %32, align 8, !tbaa !5
  %1589 = load ptr, ptr %31, align 8, !tbaa !5
  %1590 = load ptr, ptr %33, align 8, !tbaa !5
  %1591 = getelementptr inbounds double, ptr %1590, i64 1
  %1592 = load ptr, ptr %32, align 8, !tbaa !5
  %1593 = load ptr, ptr %24, align 8, !tbaa !5
  %1594 = load ptr, ptr %30, align 8, !tbaa !5
  %1595 = load i64, ptr %1594, align 8, !tbaa !9
  %1596 = load ptr, ptr %30, align 8, !tbaa !5
  %1597 = load i64, ptr %1596, align 8, !tbaa !9
  %1598 = load ptr, ptr %32, align 8, !tbaa !5
  %1599 = load i64, ptr %1598, align 8, !tbaa !9
  %1600 = add nsw i64 %1597, %1599
  %1601 = load i64, ptr %38, align 8, !tbaa !9
  %1602 = mul nsw i64 %1600, %1601
  %1603 = add nsw i64 %1595, %1602
  %1604 = getelementptr inbounds double, ptr %1593, i64 %1603
  %1605 = load ptr, ptr %25, align 8, !tbaa !5
  %1606 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %1588, ptr noundef %1589, ptr noundef %1591, ptr noundef %1592, ptr noundef %1604, ptr noundef %1605)
  %1607 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1608 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %1609 = load ptr, ptr %33, align 8, !tbaa !5
  %1610 = getelementptr inbounds double, ptr %1609, i64 1
  %1611 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %50, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1607, ptr noundef @c__4, ptr noundef %1608, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1610, ptr noundef %50)
  %1612 = load ptr, ptr %33, align 8, !tbaa !5
  %1613 = getelementptr inbounds double, ptr %1612, i64 1
  %1614 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1615 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %50, ptr noundef %1613, ptr noundef %50, ptr noundef %1614, ptr noundef @c__4)
  %1616 = load ptr, ptr %19, align 8, !tbaa !5
  %1617 = load i64, ptr %1616, align 8, !tbaa !9
  %1618 = icmp ne i64 %1617, 0
  br i1 %1618, label %1619, label %1647

1619:                                             ; preds = %1392
  %1620 = load ptr, ptr %21, align 8, !tbaa !5
  %1621 = load ptr, ptr %26, align 8, !tbaa !5
  %1622 = load ptr, ptr %30, align 8, !tbaa !5
  %1623 = load i64, ptr %1622, align 8, !tbaa !9
  %1624 = load i64, ptr %40, align 8, !tbaa !9
  %1625 = mul nsw i64 %1623, %1624
  %1626 = add nsw i64 %1625, 1
  %1627 = getelementptr inbounds double, ptr %1621, i64 %1626
  %1628 = load ptr, ptr %27, align 8, !tbaa !5
  %1629 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1630 = load ptr, ptr %33, align 8, !tbaa !5
  %1631 = getelementptr inbounds double, ptr %1630, i64 1
  %1632 = load ptr, ptr %21, align 8, !tbaa !5
  %1633 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %1620, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1627, ptr noundef %1628, ptr noundef %1629, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1631, ptr noundef %1632)
  %1634 = load ptr, ptr %21, align 8, !tbaa !5
  %1635 = load ptr, ptr %33, align 8, !tbaa !5
  %1636 = getelementptr inbounds double, ptr %1635, i64 1
  %1637 = load ptr, ptr %21, align 8, !tbaa !5
  %1638 = load ptr, ptr %26, align 8, !tbaa !5
  %1639 = load ptr, ptr %30, align 8, !tbaa !5
  %1640 = load i64, ptr %1639, align 8, !tbaa !9
  %1641 = load i64, ptr %40, align 8, !tbaa !9
  %1642 = mul nsw i64 %1640, %1641
  %1643 = add nsw i64 %1642, 1
  %1644 = getelementptr inbounds double, ptr %1638, i64 %1643
  %1645 = load ptr, ptr %27, align 8, !tbaa !5
  %1646 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %1634, ptr noundef %50, ptr noundef %1636, ptr noundef %1637, ptr noundef %1644, ptr noundef %1645)
  br label %1647

1647:                                             ; preds = %1619, %1392
  %1648 = load ptr, ptr %20, align 8, !tbaa !5
  %1649 = load i64, ptr %1648, align 8, !tbaa !9
  %1650 = icmp ne i64 %1649, 0
  br i1 %1650, label %1651, label %1679

1651:                                             ; preds = %1647
  %1652 = load ptr, ptr %21, align 8, !tbaa !5
  %1653 = load ptr, ptr %28, align 8, !tbaa !5
  %1654 = load ptr, ptr %30, align 8, !tbaa !5
  %1655 = load i64, ptr %1654, align 8, !tbaa !9
  %1656 = load i64, ptr %42, align 8, !tbaa !9
  %1657 = mul nsw i64 %1655, %1656
  %1658 = add nsw i64 %1657, 1
  %1659 = getelementptr inbounds double, ptr %1653, i64 %1658
  %1660 = load ptr, ptr %29, align 8, !tbaa !5
  %1661 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1662 = load ptr, ptr %33, align 8, !tbaa !5
  %1663 = getelementptr inbounds double, ptr %1662, i64 1
  %1664 = load ptr, ptr %21, align 8, !tbaa !5
  %1665 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %1652, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1659, ptr noundef %1660, ptr noundef %1661, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1663, ptr noundef %1664)
  %1666 = load ptr, ptr %21, align 8, !tbaa !5
  %1667 = load ptr, ptr %33, align 8, !tbaa !5
  %1668 = getelementptr inbounds double, ptr %1667, i64 1
  %1669 = load ptr, ptr %21, align 8, !tbaa !5
  %1670 = load ptr, ptr %28, align 8, !tbaa !5
  %1671 = load ptr, ptr %30, align 8, !tbaa !5
  %1672 = load i64, ptr %1671, align 8, !tbaa !9
  %1673 = load i64, ptr %42, align 8, !tbaa !9
  %1674 = mul nsw i64 %1672, %1673
  %1675 = add nsw i64 %1674, 1
  %1676 = getelementptr inbounds double, ptr %1670, i64 %1675
  %1677 = load ptr, ptr %29, align 8, !tbaa !5
  %1678 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %1666, ptr noundef %50, ptr noundef %1668, ptr noundef %1669, ptr noundef %1676, ptr noundef %1677)
  br label %1679

1679:                                             ; preds = %1651, %1647
  %1680 = load ptr, ptr %30, align 8, !tbaa !5
  %1681 = load i64, ptr %1680, align 8, !tbaa !9
  %1682 = load i64, ptr %50, align 8, !tbaa !9
  %1683 = add nsw i64 %1681, %1682
  store i64 %1683, ptr %49, align 8, !tbaa !9
  %1684 = load i64, ptr %49, align 8, !tbaa !9
  %1685 = load ptr, ptr %21, align 8, !tbaa !5
  %1686 = load i64, ptr %1685, align 8, !tbaa !9
  %1687 = icmp sle i64 %1684, %1686
  br i1 %1687, label %1688, label %1759

1688:                                             ; preds = %1679
  %1689 = load ptr, ptr %21, align 8, !tbaa !5
  %1690 = load i64, ptr %1689, align 8, !tbaa !9
  %1691 = load i64, ptr %49, align 8, !tbaa !9
  %1692 = sub nsw i64 %1690, %1691
  %1693 = add nsw i64 %1692, 1
  store i64 %1693, ptr %44, align 8, !tbaa !9
  %1694 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1695 = load ptr, ptr %22, align 8, !tbaa !5
  %1696 = load ptr, ptr %30, align 8, !tbaa !5
  %1697 = load i64, ptr %1696, align 8, !tbaa !9
  %1698 = load i64, ptr %49, align 8, !tbaa !9
  %1699 = load i64, ptr %36, align 8, !tbaa !9
  %1700 = mul nsw i64 %1698, %1699
  %1701 = add nsw i64 %1697, %1700
  %1702 = getelementptr inbounds double, ptr %1695, i64 %1701
  %1703 = load ptr, ptr %23, align 8, !tbaa !5
  %1704 = load ptr, ptr %33, align 8, !tbaa !5
  %1705 = getelementptr inbounds double, ptr %1704, i64 1
  %1706 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %50, ptr noundef %44, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1694, ptr noundef @c__4, ptr noundef %1702, ptr noundef %1703, ptr noundef @c_b5, ptr noundef %1705, ptr noundef %50)
  %1707 = load ptr, ptr %21, align 8, !tbaa !5
  %1708 = load i64, ptr %1707, align 8, !tbaa !9
  %1709 = load i64, ptr %49, align 8, !tbaa !9
  %1710 = sub nsw i64 %1708, %1709
  %1711 = add nsw i64 %1710, 1
  store i64 %1711, ptr %44, align 8, !tbaa !9
  %1712 = load ptr, ptr %33, align 8, !tbaa !5
  %1713 = getelementptr inbounds double, ptr %1712, i64 1
  %1714 = load ptr, ptr %22, align 8, !tbaa !5
  %1715 = load ptr, ptr %30, align 8, !tbaa !5
  %1716 = load i64, ptr %1715, align 8, !tbaa !9
  %1717 = load i64, ptr %49, align 8, !tbaa !9
  %1718 = load i64, ptr %36, align 8, !tbaa !9
  %1719 = mul nsw i64 %1717, %1718
  %1720 = add nsw i64 %1716, %1719
  %1721 = getelementptr inbounds double, ptr %1714, i64 %1720
  %1722 = load ptr, ptr %23, align 8, !tbaa !5
  %1723 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %44, ptr noundef %1713, ptr noundef %50, ptr noundef %1721, ptr noundef %1722)
  %1724 = load ptr, ptr %21, align 8, !tbaa !5
  %1725 = load i64, ptr %1724, align 8, !tbaa !9
  %1726 = load i64, ptr %49, align 8, !tbaa !9
  %1727 = sub nsw i64 %1725, %1726
  %1728 = add nsw i64 %1727, 1
  store i64 %1728, ptr %44, align 8, !tbaa !9
  %1729 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1730 = load ptr, ptr %24, align 8, !tbaa !5
  %1731 = load ptr, ptr %30, align 8, !tbaa !5
  %1732 = load i64, ptr %1731, align 8, !tbaa !9
  %1733 = load i64, ptr %49, align 8, !tbaa !9
  %1734 = load i64, ptr %38, align 8, !tbaa !9
  %1735 = mul nsw i64 %1733, %1734
  %1736 = add nsw i64 %1732, %1735
  %1737 = getelementptr inbounds double, ptr %1730, i64 %1736
  %1738 = load ptr, ptr %23, align 8, !tbaa !5
  %1739 = load ptr, ptr %33, align 8, !tbaa !5
  %1740 = getelementptr inbounds double, ptr %1739, i64 1
  %1741 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %50, ptr noundef %44, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1729, ptr noundef @c__4, ptr noundef %1737, ptr noundef %1738, ptr noundef @c_b5, ptr noundef %1740, ptr noundef %50)
  %1742 = load ptr, ptr %21, align 8, !tbaa !5
  %1743 = load i64, ptr %1742, align 8, !tbaa !9
  %1744 = load i64, ptr %49, align 8, !tbaa !9
  %1745 = sub nsw i64 %1743, %1744
  %1746 = add nsw i64 %1745, 1
  store i64 %1746, ptr %44, align 8, !tbaa !9
  %1747 = load ptr, ptr %33, align 8, !tbaa !5
  %1748 = getelementptr inbounds double, ptr %1747, i64 1
  %1749 = load ptr, ptr %24, align 8, !tbaa !5
  %1750 = load ptr, ptr %30, align 8, !tbaa !5
  %1751 = load i64, ptr %1750, align 8, !tbaa !9
  %1752 = load i64, ptr %49, align 8, !tbaa !9
  %1753 = load i64, ptr %38, align 8, !tbaa !9
  %1754 = mul nsw i64 %1752, %1753
  %1755 = add nsw i64 %1751, %1754
  %1756 = getelementptr inbounds double, ptr %1749, i64 %1755
  %1757 = load ptr, ptr %25, align 8, !tbaa !5
  %1758 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %50, ptr noundef %44, ptr noundef %1748, ptr noundef %50, ptr noundef %1756, ptr noundef %1757)
  br label %1759

1759:                                             ; preds = %1688, %1679
  %1760 = load ptr, ptr %30, align 8, !tbaa !5
  %1761 = load i64, ptr %1760, align 8, !tbaa !9
  %1762 = sub nsw i64 %1761, 1
  store i64 %1762, ptr %49, align 8, !tbaa !9
  %1763 = load i64, ptr %49, align 8, !tbaa !9
  %1764 = icmp sgt i64 %1763, 0
  br i1 %1764, label %1765, label %1812

1765:                                             ; preds = %1759
  %1766 = load ptr, ptr %22, align 8, !tbaa !5
  %1767 = load ptr, ptr %30, align 8, !tbaa !5
  %1768 = load i64, ptr %1767, align 8, !tbaa !9
  %1769 = load i64, ptr %36, align 8, !tbaa !9
  %1770 = mul nsw i64 %1768, %1769
  %1771 = add nsw i64 %1770, 1
  %1772 = getelementptr inbounds double, ptr %1766, i64 %1771
  %1773 = load ptr, ptr %23, align 8, !tbaa !5
  %1774 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1775 = load ptr, ptr %33, align 8, !tbaa !5
  %1776 = getelementptr inbounds double, ptr %1775, i64 1
  %1777 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %49, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1772, ptr noundef %1773, ptr noundef %1774, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1776, ptr noundef %49)
  %1778 = load ptr, ptr %33, align 8, !tbaa !5
  %1779 = getelementptr inbounds double, ptr %1778, i64 1
  %1780 = load ptr, ptr %22, align 8, !tbaa !5
  %1781 = load ptr, ptr %30, align 8, !tbaa !5
  %1782 = load i64, ptr %1781, align 8, !tbaa !9
  %1783 = load i64, ptr %36, align 8, !tbaa !9
  %1784 = mul nsw i64 %1782, %1783
  %1785 = add nsw i64 %1784, 1
  %1786 = getelementptr inbounds double, ptr %1780, i64 %1785
  %1787 = load ptr, ptr %23, align 8, !tbaa !5
  %1788 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %49, ptr noundef %50, ptr noundef %1779, ptr noundef %49, ptr noundef %1786, ptr noundef %1787)
  %1789 = load ptr, ptr %24, align 8, !tbaa !5
  %1790 = load ptr, ptr %30, align 8, !tbaa !5
  %1791 = load i64, ptr %1790, align 8, !tbaa !9
  %1792 = load i64, ptr %38, align 8, !tbaa !9
  %1793 = mul nsw i64 %1791, %1792
  %1794 = add nsw i64 %1793, 1
  %1795 = getelementptr inbounds double, ptr %1789, i64 %1794
  %1796 = load ptr, ptr %25, align 8, !tbaa !5
  %1797 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1798 = load ptr, ptr %33, align 8, !tbaa !5
  %1799 = getelementptr inbounds double, ptr %1798, i64 1
  %1800 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %49, ptr noundef %50, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1795, ptr noundef %1796, ptr noundef %1797, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1799, ptr noundef %49)
  %1801 = load ptr, ptr %33, align 8, !tbaa !5
  %1802 = getelementptr inbounds double, ptr %1801, i64 1
  %1803 = load ptr, ptr %24, align 8, !tbaa !5
  %1804 = load ptr, ptr %30, align 8, !tbaa !5
  %1805 = load i64, ptr %1804, align 8, !tbaa !9
  %1806 = load i64, ptr %38, align 8, !tbaa !9
  %1807 = mul nsw i64 %1805, %1806
  %1808 = add nsw i64 %1807, 1
  %1809 = getelementptr inbounds double, ptr %1803, i64 %1808
  %1810 = load ptr, ptr %25, align 8, !tbaa !5
  %1811 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %49, ptr noundef %50, ptr noundef %1802, ptr noundef %49, ptr noundef %1809, ptr noundef %1810)
  br label %1812

1812:                                             ; preds = %1765, %1759
  store i32 0, ptr %18, align 4
  store i32 1, ptr %83, align 4
  br label %1815

1813:                                             ; preds = %1109, %1005, %954, %936, %902, %892, %882, %841, %831, %798, %788, %514, %417
  %1814 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 1, ptr %1814, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %83, align 4
  br label %1815

1815:                                             ; preds = %1813, %1812, %685, %208, %146, %130
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 128, 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
  %1816 = load i32, ptr %18, align 4
  ret i32 %1816
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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) #2

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

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

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

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

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

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

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

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

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

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

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

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

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


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dtgex2_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr nocapture noundef readonly %15, ptr noundef %16) local_unnamed_addr #0 {
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca [16 x double], align 16
  %25 = alloca [16 x double], align 16
  %26 = alloca [2 x double], align 16
  %27 = alloca [2 x double], align 16
  %28 = alloca [2 x double], align 16
  %29 = alloca [16 x double], align 16
  %30 = alloca [16 x double], align 16
  %31 = alloca double, align 8
  %32 = alloca i64, align 8
  %33 = alloca [4 x double], align 16
  %34 = alloca double, align 8
  %35 = alloca [4 x double], align 16
  %36 = alloca [16 x double], align 16
  %37 = alloca [16 x double], align 16
  %38 = alloca double, align 8
  %39 = alloca [16 x double], align 16
  %40 = alloca i64, align 8
  %41 = alloca [16 x double], align 16
  %42 = alloca [4 x i64], align 16
  %43 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  %44 = load i64, ptr %4, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds double, ptr %3, i64 %45
  %47 = load i64, ptr %6, align 8, !tbaa !5
  %48 = xor i64 %47, -1
  %49 = getelementptr inbounds double, ptr %5, i64 %48
  %50 = load i64, ptr %8, align 8, !tbaa !5
  %51 = xor i64 %50, -1
  %52 = getelementptr inbounds double, ptr %7, i64 %51
  %53 = load i64, ptr %10, align 8, !tbaa !5
  %54 = xor i64 %53, -1
  %55 = getelementptr inbounds double, ptr %9, i64 %54
  %56 = getelementptr inbounds i8, ptr %14, i64 -8
  store i64 0, ptr %16, align 8, !tbaa !5
  %57 = load i64, ptr %2, align 8, !tbaa !5
  %58 = icmp slt i64 %57, 2
  br i1 %58, label %719, label %59

59:                                               ; preds = %17
  %60 = load i64, ptr %12, align 8, !tbaa !5
  %61 = icmp slt i64 %60, 1
  br i1 %61, label %719, label %62

62:                                               ; preds = %59
  %63 = load i64, ptr %13, align 8, !tbaa !5
  %64 = icmp slt i64 %63, 1
  %65 = icmp ugt i64 %60, %57
  %or.cond498 = or i1 %65, %64
  br i1 %or.cond498, label %719, label %66

66:                                               ; preds = %62
  %67 = load i64, ptr %11, align 8, !tbaa !5
  %68 = add nsw i64 %67, %60
  %69 = icmp sgt i64 %68, %57
  br i1 %69, label %719, label %70

70:                                               ; preds = %66
  %71 = add nuw nsw i64 %63, %60
  store i64 %71, ptr %23, align 8, !tbaa !5
  %72 = mul nuw nsw i64 %71, %57
  store i64 %72, ptr %18, align 8, !tbaa !5
  %73 = shl nuw i64 %71, 1
  %74 = mul i64 %73, %71
  store i64 %74, ptr %19, align 8, !tbaa !5
  %75 = load i64, ptr %15, align 8, !tbaa !5
  %76 = tail call i64 @llvm.smax.i64(i64 %72, i64 %74)
  %77 = icmp slt i64 %75, %76
  br i1 %77, label %78, label %84

78:                                               ; preds = %70
  store i64 -16, ptr %16, align 8, !tbaa !5
  %79 = load i64, ptr %2, align 8, !tbaa !5
  %80 = mul nsw i64 %79, %71
  %81 = tail call i64 @llvm.smax.i64(i64 %80, i64 %74)
  %82 = tail call i64 @llvm.smax.i64(i64 %81, i64 1)
  %83 = uitofp nneg i64 %82 to double
  store double %83, ptr %14, align 8, !tbaa !9
  br label %719

84:                                               ; preds = %70
  %85 = call i32 @dlaset_(ptr noundef nonnull @.str, ptr noundef nonnull @c__4, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull @c_b5, ptr noundef nonnull %29, ptr noundef nonnull @c__4) #7
  %86 = call i32 @dlaset_(ptr noundef nonnull @.str, ptr noundef nonnull @c__4, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull @c_b5, ptr noundef nonnull %30, ptr noundef nonnull @c__4) #7
  %87 = load i64, ptr %11, align 8, !tbaa !5
  %88 = add i64 %44, 1
  %89 = mul i64 %87, %88
  %90 = getelementptr inbounds double, ptr %46, i64 %89
  %91 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef %90, ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull @c__4) #7
  %92 = load i64, ptr %11, align 8, !tbaa !5
  %93 = add i64 %47, 1
  %94 = mul i64 %92, %93
  %95 = getelementptr inbounds double, ptr %49, i64 %94
  %96 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef %95, ptr noundef nonnull %6, ptr noundef nonnull %25, ptr noundef nonnull @c__4) #7
  %97 = call double @dlamch_(ptr noundef nonnull @.str.1) #7
  %98 = call double @dlamch_(ptr noundef nonnull @.str.2) #7
  %99 = fdiv double %98, %97
  store double 0.000000e+00, ptr %43, align 8, !tbaa !9
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %100 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %23) #7
  %101 = load i64, ptr %23, align 8, !tbaa !5
  %102 = mul nsw i64 %101, %101
  store i64 %102, ptr %18, align 8, !tbaa !5
  %103 = call i32 @dlassq_(ptr noundef nonnull %18, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %34) #7
  %104 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %23) #7
  %105 = load i64, ptr %23, align 8, !tbaa !5
  %106 = mul nsw i64 %105, %105
  store i64 %106, ptr %18, align 8, !tbaa !5
  %107 = call i32 @dlassq_(ptr noundef nonnull %18, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %34) #7
  %108 = load double, ptr %43, align 8, !tbaa !9
  %109 = load double, ptr %34, align 8, !tbaa !9
  %110 = call double @sqrt(double noundef %109) #7
  %111 = fmul double %108, %110
  %112 = fmul double %97, 1.000000e+01
  %113 = fmul double %112, %111
  %114 = fcmp oge double %113, %99
  %115 = select i1 %114, double %113, double %99
  %116 = load i64, ptr %23, align 8, !tbaa !5
  %117 = icmp eq i64 %116, 2
  br i1 %117, label %118, label %279

118:                                              ; preds = %84
  %119 = getelementptr inbounds i8, ptr %24, i64 40
  %120 = load double, ptr %119, align 8
  %121 = load double, ptr %25, align 16, !tbaa !9
  %122 = getelementptr inbounds i8, ptr %25, i64 40
  %123 = load double, ptr %122, align 8
  %124 = load double, ptr %24, align 16, !tbaa !9
  %125 = fneg double %123
  %126 = fmul double %124, %125
  %127 = call double @llvm.fmuladd.f64(double %120, double %121, double %126)
  store double %127, ptr %20, align 8, !tbaa !9
  %128 = getelementptr inbounds i8, ptr %25, i64 32
  %129 = load double, ptr %128, align 16, !tbaa !9
  %130 = getelementptr inbounds i8, ptr %24, i64 32
  %131 = load double, ptr %130, align 16, !tbaa !9
  %132 = fmul double %131, %125
  %133 = call double @llvm.fmuladd.f64(double %120, double %129, double %132)
  store double %133, ptr %21, align 8, !tbaa !9
  %134 = fcmp oge double %123, 0.000000e+00
  %135 = select i1 %134, double %123, double %125
  %136 = fcmp oge double %120, 0.000000e+00
  %137 = fneg double %120
  %138 = select i1 %136, double %120, double %137
  %139 = getelementptr inbounds i8, ptr %30, i64 32
  %140 = call i32 @dlartg_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %139, ptr noundef nonnull %30, ptr noundef nonnull %31) #7
  %141 = load double, ptr %139, align 16, !tbaa !9
  %142 = fneg double %141
  %143 = getelementptr inbounds i8, ptr %30, i64 8
  store double %142, ptr %143, align 8, !tbaa !9
  %144 = load double, ptr %30, align 16, !tbaa !9
  %145 = getelementptr inbounds i8, ptr %30, i64 40
  store double %144, ptr %145, align 8, !tbaa !9
  %146 = call i32 @f2c_drot(ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %130, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull %143) #7
  %147 = call i32 @f2c_drot(ptr noundef nonnull @c__2, ptr noundef nonnull %25, ptr noundef nonnull @c__1, ptr noundef nonnull %128, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull %143) #7
  %148 = fcmp ult double %138, %135
  %149 = getelementptr inbounds i8, ptr %29, i64 8
  %. = select i1 %148, ptr %25, ptr %24
  %..sroa.sel.v = select i1 %148, ptr %25, ptr %24
  %..sroa.sel = getelementptr inbounds i8, ptr %..sroa.sel.v, i64 8
  %150 = call i32 @dlartg_(ptr noundef nonnull %., ptr noundef nonnull %..sroa.sel, ptr noundef nonnull %29, ptr noundef nonnull %149, ptr noundef nonnull %31) #7
  %151 = getelementptr inbounds i8, ptr %24, i64 8
  %152 = getelementptr inbounds i8, ptr %29, i64 8
  %153 = call i32 @f2c_drot(ptr noundef nonnull @c__2, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef nonnull %151, ptr noundef nonnull @c__4, ptr noundef nonnull %29, ptr noundef nonnull %152) #7
  %154 = getelementptr inbounds i8, ptr %25, i64 8
  %155 = call i32 @f2c_drot(ptr noundef nonnull @c__2, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull %154, ptr noundef nonnull @c__4, ptr noundef nonnull %29, ptr noundef nonnull %152) #7
  %156 = load double, ptr %29, align 16, !tbaa !9
  %157 = getelementptr inbounds i8, ptr %29, i64 40
  store double %156, ptr %157, align 8, !tbaa !9
  %158 = load double, ptr %152, align 8, !tbaa !9
  %159 = fneg double %158
  %160 = getelementptr inbounds i8, ptr %29, i64 32
  store double %159, ptr %160, align 16, !tbaa !9
  %161 = load double, ptr %151, align 8
  %162 = fcmp oge double %161, 0.000000e+00
  %163 = fneg double %161
  %164 = select i1 %162, double %161, double %163
  %165 = load double, ptr %154, align 8
  %166 = fcmp oge double %165, 0.000000e+00
  %167 = fneg double %165
  %168 = select i1 %166, double %165, double %167
  %169 = fadd double %164, %168
  %170 = fcmp ugt double %169, %115
  br i1 %170, label %718, label %171

171:                                              ; preds = %118
  %172 = load i64, ptr %11, align 8, !tbaa !5
  %173 = mul i64 %172, %88
  %174 = getelementptr inbounds double, ptr %46, i64 %173
  %175 = load i64, ptr %23, align 8, !tbaa !5
  %176 = mul nsw i64 %175, %175
  %177 = getelementptr double, ptr %14, i64 %176
  %178 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef %174, ptr noundef nonnull %4, ptr noundef %177, ptr noundef nonnull %23) #7
  %179 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %23) #7
  %180 = load i64, ptr %23, align 8, !tbaa !5
  %181 = mul nsw i64 %180, %180
  %182 = getelementptr double, ptr %14, i64 %181
  %183 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b48, ptr noundef %14, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b42, ptr noundef %182, ptr noundef nonnull %23) #7
  store double 0.000000e+00, ptr %43, align 8, !tbaa !9
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %184 = load i64, ptr %23, align 8, !tbaa !5
  %185 = mul nsw i64 %184, %184
  store i64 %185, ptr %18, align 8, !tbaa !5
  %186 = getelementptr double, ptr %14, i64 %185
  %187 = call i32 @dlassq_(ptr noundef nonnull %18, ptr noundef %186, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %34) #7
  %188 = load i64, ptr %11, align 8, !tbaa !5
  %189 = mul i64 %188, %93
  %190 = getelementptr inbounds double, ptr %49, i64 %189
  %191 = load i64, ptr %23, align 8, !tbaa !5
  %192 = mul nsw i64 %191, %191
  %193 = getelementptr double, ptr %14, i64 %192
  %194 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef %190, ptr noundef nonnull %6, ptr noundef %193, ptr noundef nonnull %23) #7
  %195 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %23) #7
  %196 = load i64, ptr %23, align 8, !tbaa !5
  %197 = mul nsw i64 %196, %196
  %198 = getelementptr double, ptr %14, i64 %197
  %199 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b48, ptr noundef %14, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b42, ptr noundef %198, ptr noundef nonnull %23) #7
  %200 = load i64, ptr %23, align 8, !tbaa !5
  %201 = mul nsw i64 %200, %200
  store i64 %201, ptr %18, align 8, !tbaa !5
  %202 = getelementptr double, ptr %14, i64 %201
  %203 = call i32 @dlassq_(ptr noundef nonnull %18, ptr noundef %202, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %34) #7
  %204 = load double, ptr %43, align 8, !tbaa !9
  %205 = load double, ptr %34, align 8, !tbaa !9
  %206 = call double @sqrt(double noundef %205) #7
  %207 = fmul double %204, %206
  %208 = fcmp ugt double %207, %115
  br i1 %208, label %718, label %209

209:                                              ; preds = %171
  %210 = load i64, ptr %11, align 8, !tbaa !5
  %211 = add nsw i64 %210, 1
  store i64 %211, ptr %18, align 8, !tbaa !5
  %212 = mul nsw i64 %210, %44
  %213 = getelementptr double, ptr %46, i64 %212
  %214 = getelementptr i8, ptr %213, i64 8
  %215 = mul nsw i64 %211, %44
  %216 = getelementptr double, ptr %46, i64 %215
  %217 = getelementptr i8, ptr %216, i64 8
  %218 = call i32 @f2c_drot(ptr noundef nonnull %18, ptr noundef %214, ptr noundef nonnull @c__1, ptr noundef %217, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull %143) #7
  %219 = load i64, ptr %11, align 8, !tbaa !5
  %220 = add nsw i64 %219, 1
  store i64 %220, ptr %18, align 8, !tbaa !5
  %221 = mul nsw i64 %219, %47
  %222 = getelementptr double, ptr %49, i64 %221
  %223 = getelementptr i8, ptr %222, i64 8
  %224 = mul nsw i64 %220, %47
  %225 = getelementptr double, ptr %49, i64 %224
  %226 = getelementptr i8, ptr %225, i64 8
  %227 = call i32 @f2c_drot(ptr noundef nonnull %18, ptr noundef %223, ptr noundef nonnull @c__1, ptr noundef %226, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull %143) #7
  %228 = load i64, ptr %2, align 8, !tbaa !5
  %229 = load i64, ptr %11, align 8, !tbaa !5
  %230 = add i64 %228, 1
  %231 = sub i64 %230, %229
  store i64 %231, ptr %18, align 8, !tbaa !5
  %232 = mul nsw i64 %229, %44
  %233 = getelementptr double, ptr %46, i64 %229
  %234 = getelementptr double, ptr %233, i64 %232
  %235 = getelementptr i8, ptr %233, i64 8
  %236 = getelementptr double, ptr %235, i64 %232
  %237 = call i32 @f2c_drot(ptr noundef nonnull %18, ptr noundef %234, ptr noundef nonnull %4, ptr noundef %236, ptr noundef nonnull %4, ptr noundef nonnull %29, ptr noundef nonnull %152) #7
  %238 = load i64, ptr %2, align 8, !tbaa !5
  %239 = load i64, ptr %11, align 8, !tbaa !5
  %240 = add i64 %238, 1
  %241 = sub i64 %240, %239
  store i64 %241, ptr %18, align 8, !tbaa !5
  %242 = mul nsw i64 %239, %47
  %243 = getelementptr double, ptr %49, i64 %239
  %244 = getelementptr double, ptr %243, i64 %242
  %245 = getelementptr i8, ptr %243, i64 8
  %246 = getelementptr double, ptr %245, i64 %242
  %247 = call i32 @f2c_drot(ptr noundef nonnull %18, ptr noundef %244, ptr noundef nonnull %6, ptr noundef %246, ptr noundef nonnull %6, ptr noundef nonnull %29, ptr noundef nonnull %152) #7
  %248 = load i64, ptr %11, align 8, !tbaa !5
  %249 = mul nsw i64 %248, %44
  %250 = getelementptr double, ptr %46, i64 %248
  %251 = getelementptr i8, ptr %250, i64 8
  %252 = getelementptr double, ptr %251, i64 %249
  store double 0.000000e+00, ptr %252, align 8, !tbaa !9
  %253 = mul nsw i64 %248, %47
  %254 = getelementptr double, ptr %49, i64 %248
  %255 = getelementptr i8, ptr %254, i64 8
  %256 = getelementptr double, ptr %255, i64 %253
  store double 0.000000e+00, ptr %256, align 8, !tbaa !9
  %257 = load i64, ptr %1, align 8, !tbaa !5
  %.not495 = icmp eq i64 %257, 0
  br i1 %.not495, label %267, label %258

258:                                              ; preds = %209
  %259 = mul nsw i64 %248, %53
  %260 = getelementptr double, ptr %55, i64 %259
  %261 = getelementptr i8, ptr %260, i64 8
  %262 = add nsw i64 %248, 1
  %263 = mul nsw i64 %262, %53
  %264 = getelementptr double, ptr %55, i64 %263
  %265 = getelementptr i8, ptr %264, i64 8
  %266 = call i32 @f2c_drot(ptr noundef nonnull %2, ptr noundef %261, ptr noundef nonnull @c__1, ptr noundef %265, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull %143) #7
  br label %267

267:                                              ; preds = %258, %209
  %268 = load i64, ptr %0, align 8, !tbaa !5
  %.not496 = icmp eq i64 %268, 0
  br i1 %.not496, label %719, label %269

269:                                              ; preds = %267
  %270 = load i64, ptr %11, align 8, !tbaa !5
  %271 = mul nsw i64 %270, %50
  %272 = getelementptr double, ptr %52, i64 %271
  %273 = getelementptr i8, ptr %272, i64 8
  %274 = add nsw i64 %270, 1
  %275 = mul nsw i64 %274, %50
  %276 = getelementptr double, ptr %52, i64 %275
  %277 = getelementptr i8, ptr %276, i64 8
  %278 = call i32 @f2c_drot(ptr noundef nonnull %2, ptr noundef %273, ptr noundef nonnull @c__1, ptr noundef %277, ptr noundef nonnull @c__1, ptr noundef nonnull %29, ptr noundef nonnull %152) #7
  br label %719

279:                                              ; preds = %84
  %280 = load i64, ptr %12, align 8, !tbaa !5
  %281 = shl i64 %280, 2
  %282 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %281
  %283 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %282, ptr noundef nonnull @c__4, ptr noundef nonnull %29, ptr noundef nonnull @c__4) #7
  %284 = load i64, ptr %12, align 8, !tbaa !5
  %285 = shl i64 %284, 2
  %286 = getelementptr inbounds [16 x double], ptr %24, i64 0, i64 %285
  %287 = load i64, ptr %13, align 8, !tbaa !5
  %288 = add i64 %287, %285
  %289 = getelementptr inbounds [16 x double], ptr %30, i64 0, i64 %288
  %290 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %286, ptr noundef nonnull @c__4, ptr noundef nonnull %289, ptr noundef nonnull @c__4) #7
  %291 = load i64, ptr %12, align 8, !tbaa !5
  %292 = add nsw i64 %291, 1
  %293 = shl i64 %292, 2
  %294 = mul i64 %292, 5
  %295 = add nsw i64 %294, -5
  %296 = getelementptr inbounds [16 x double], ptr %24, i64 0, i64 %295
  %297 = load i64, ptr %13, align 8, !tbaa !5
  %298 = add i64 %297, -4
  %299 = add i64 %298, %293
  %300 = getelementptr inbounds [16 x double], ptr %30, i64 0, i64 %299
  %301 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %295
  %302 = call i32 @dtgsy2_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef nonnull %296, ptr noundef nonnull @c__4, ptr noundef nonnull %300, ptr noundef nonnull @c__4, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull %301, ptr noundef nonnull @c__4, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %38, ptr noundef nonnull %34, ptr noundef nonnull %43, ptr noundef nonnull %42, ptr noundef nonnull %32, ptr noundef nonnull %40) #7
  %303 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %303, ptr %18, align 8, !tbaa !5
  %.not505 = icmp slt i64 %303, 1
  br i1 %.not505, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %279, %.lr.ph
  %304 = phi i64 [ %315, %.lr.ph ], [ 1, %279 ]
  %305 = shl i64 %304, 2
  %306 = add nsw i64 %305, -4
  %307 = getelementptr inbounds [16 x double], ptr %29, i64 0, i64 %306
  %308 = call i32 @f2c_dscal(ptr noundef nonnull %12, ptr noundef nonnull @c_b48, ptr noundef nonnull %307, ptr noundef nonnull @c__1) #7
  %309 = load double, ptr %38, align 8, !tbaa !9
  %310 = load i64, ptr %12, align 8, !tbaa !5
  %311 = add i64 %310, -5
  %312 = add i64 %311, %304
  %313 = add i64 %312, %305
  %314 = getelementptr inbounds [16 x double], ptr %29, i64 0, i64 %313
  store double %309, ptr %314, align 8, !tbaa !9
  %315 = add nuw nsw i64 %304, 1
  %316 = load i64, ptr %18, align 8, !tbaa !5
  %.not.not = icmp slt i64 %304, %316
  br i1 %.not.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %279
  %317 = call i32 @dgeqr2_(ptr noundef nonnull %23, ptr noundef nonnull %13, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %33, ptr noundef %14, ptr noundef nonnull %40) #7
  %318 = load i64, ptr %40, align 8, !tbaa !5
  %.not475 = icmp eq i64 %318, 0
  br i1 %.not475, label %319, label %718

319:                                              ; preds = %._crit_edge
  %320 = call i32 @dorg2r_(ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %13, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %33, ptr noundef %14, ptr noundef nonnull %40) #7
  %321 = load i64, ptr %40, align 8, !tbaa !5
  %.not476 = icmp eq i64 %321, 0
  br i1 %.not476, label %322, label %718

322:                                              ; preds = %319
  %323 = load i64, ptr %12, align 8, !tbaa !5
  store i64 %323, ptr %18, align 8, !tbaa !5
  %.not478507 = icmp slt i64 %323, 1
  %.pre = load i64, ptr %13, align 8, !tbaa !5
  br i1 %.not478507, label %._crit_edge511, label %.lr.ph510

.lr.ph510:                                        ; preds = %322
  %324 = load double, ptr %38, align 8, !tbaa !9
  %325 = add nuw i64 %323, 1
  %xtraiter = and i64 %323, 1
  %326 = icmp eq i64 %323, 1
  br i1 %326, label %._crit_edge511.loopexit.unr-lcssa, label %.lr.ph510.new

.lr.ph510.new:                                    ; preds = %.lr.ph510
  %unroll_iter = and i64 %323, 9223372036854775806
  br label %327

327:                                              ; preds = %327, %.lr.ph510.new
  %storemerge477508 = phi i64 [ 1, %.lr.ph510.new ], [ %336, %327 ]
  %niter = phi i64 [ 0, %.lr.ph510.new ], [ %niter.next.1, %327 ]
  %328 = shl i64 %storemerge477508, 2
  %329 = add nsw i64 %storemerge477508, -5
  %330 = add i64 %329, %328
  %331 = add i64 %330, %.pre
  %332 = getelementptr inbounds [16 x double], ptr %30, i64 0, i64 %331
  store double %324, ptr %332, align 8, !tbaa !9
  %333 = mul i64 %storemerge477508, 5
  %334 = add i64 %333, %.pre
  %335 = getelementptr inbounds [16 x double], ptr %30, i64 0, i64 %334
  store double %324, ptr %335, align 8, !tbaa !9
  %336 = add nuw i64 %storemerge477508, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge511.loopexit.unr-lcssa, label %327, !llvm.loop !13

._crit_edge511.loopexit.unr-lcssa:                ; preds = %327, %.lr.ph510
  %storemerge477508.unr = phi i64 [ 1, %.lr.ph510 ], [ %336, %327 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge511, label %._crit_edge511.loopexit.epilog-lcssa

._crit_edge511.loopexit.epilog-lcssa:             ; preds = %._crit_edge511.loopexit.unr-lcssa
  %337 = shl i64 %storemerge477508.unr, 2
  %338 = add nsw i64 %storemerge477508.unr, -5
  %339 = add i64 %338, %337
  %340 = add i64 %339, %.pre
  %341 = getelementptr inbounds [16 x double], ptr %30, i64 0, i64 %340
  store double %324, ptr %341, align 8, !tbaa !9
  br label %._crit_edge511

._crit_edge511:                                   ; preds = %._crit_edge511.loopexit.epilog-lcssa, %._crit_edge511.loopexit.unr-lcssa, %322
  %storemerge477.lcssa = phi i64 [ 1, %322 ], [ %325, %._crit_edge511.loopexit.unr-lcssa ], [ %325, %._crit_edge511.loopexit.epilog-lcssa ]
  store i64 %storemerge477.lcssa, ptr %22, align 8, !tbaa !5
  %342 = getelementptr inbounds [16 x double], ptr %30, i64 0, i64 %.pre
  %343 = call i32 @dgerq2_(ptr noundef nonnull %12, ptr noundef nonnull %23, ptr noundef nonnull %342, ptr noundef nonnull @c__4, ptr noundef nonnull %35, ptr noundef %14, ptr noundef nonnull %40) #7
  %344 = load i64, ptr %40, align 8, !tbaa !5
  %.not479 = icmp eq i64 %344, 0
  br i1 %.not479, label %345, label %718

345:                                              ; preds = %._crit_edge511
  %346 = call i32 @dorgr2_(ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %12, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull %35, ptr noundef %14, ptr noundef nonnull %40) #7
  %347 = load i64, ptr %40, align 8, !tbaa !5
  %.not480 = icmp eq i64 %347, 0
  br i1 %.not480, label %348, label %718

348:                                              ; preds = %345
  %349 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %23) #7
  %350 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef %14, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %24, ptr noundef nonnull @c__4) #7
  %351 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %23) #7
  %352 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef %14, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %25, ptr noundef nonnull @c__4) #7
  %353 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef nonnull %36, ptr noundef nonnull @c__4) #7
  %354 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull %37, ptr noundef nonnull @c__4) #7
  %355 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull %41, ptr noundef nonnull @c__4) #7
  %356 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %39, ptr noundef nonnull @c__4) #7
  %357 = call i32 @dgerq2_(ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull %35, ptr noundef %14, ptr noundef nonnull %40) #7
  %358 = load i64, ptr %40, align 8, !tbaa !5
  %.not481 = icmp eq i64 %358, 0
  br i1 %.not481, label %359, label %718

359:                                              ; preds = %348
  %360 = call i32 @dormr2_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.4, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull %35, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %40) #7
  %361 = load i64, ptr %40, align 8, !tbaa !5
  %.not482 = icmp eq i64 %361, 0
  br i1 %.not482, label %362, label %718

362:                                              ; preds = %359
  %363 = call i32 @dormr2_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull %35, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %40) #7
  %364 = load i64, ptr %40, align 8, !tbaa !5
  %.not483 = icmp eq i64 %364, 0
  br i1 %.not483, label %365, label %718

365:                                              ; preds = %362
  store double 0.000000e+00, ptr %43, align 8, !tbaa !9
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %366 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %366, ptr %18, align 8, !tbaa !5
  %.not485512 = icmp slt i64 %366, 1
  br i1 %.not485512, label %._crit_edge516, label %.lr.ph515

.lr.ph515:                                        ; preds = %365, %.lr.ph515
  %367 = phi i64 [ %374, %.lr.ph515 ], [ 1, %365 ]
  %368 = load i64, ptr %13, align 8, !tbaa !5
  %369 = shl i64 %367, 2
  %370 = add i64 %369, -4
  %371 = add i64 %370, %368
  %372 = getelementptr inbounds [16 x double], ptr %24, i64 0, i64 %371
  %373 = call i32 @dlassq_(ptr noundef nonnull %12, ptr noundef nonnull %372, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %34) #7
  %374 = add nuw nsw i64 %367, 1
  store i64 %374, ptr %22, align 8, !tbaa !5
  %375 = load i64, ptr %18, align 8, !tbaa !5
  %.not485.not = icmp slt i64 %367, %375
  br i1 %.not485.not, label %.lr.ph515, label %._crit_edge516.loopexit, !llvm.loop !14

._crit_edge516.loopexit:                          ; preds = %.lr.ph515
  %.pre531 = load double, ptr %43, align 8, !tbaa !9
  %.pre532 = load double, ptr %34, align 8, !tbaa !9
  br label %._crit_edge516

._crit_edge516:                                   ; preds = %._crit_edge516.loopexit, %365
  %376 = phi double [ %.pre532, %._crit_edge516.loopexit ], [ 1.000000e+00, %365 ]
  %377 = phi double [ %.pre531, %._crit_edge516.loopexit ], [ 0.000000e+00, %365 ]
  %378 = call double @sqrt(double noundef %376) #7
  %379 = fmul double %377, %378
  %380 = call i32 @dgeqr2_(ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %37, ptr noundef nonnull @c__4, ptr noundef nonnull %33, ptr noundef %14, ptr noundef nonnull %40) #7
  %381 = load i64, ptr %40, align 8, !tbaa !5
  %.not486 = icmp eq i64 %381, 0
  br i1 %.not486, label %382, label %718

382:                                              ; preds = %._crit_edge516
  %383 = call i32 @dorm2r_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.4, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %37, ptr noundef nonnull @c__4, ptr noundef nonnull %33, ptr noundef nonnull %36, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %16) #7
  %384 = call i32 @dorm2r_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %37, ptr noundef nonnull @c__4, ptr noundef nonnull %33, ptr noundef nonnull %39, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %16) #7
  %385 = load i64, ptr %40, align 8, !tbaa !5
  %.not487 = icmp eq i64 %385, 0
  br i1 %.not487, label %386, label %718

386:                                              ; preds = %382
  store double 0.000000e+00, ptr %43, align 8, !tbaa !9
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %387 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %387, ptr %18, align 8, !tbaa !5
  %.not489517 = icmp slt i64 %387, 1
  br i1 %.not489517, label %._crit_edge521, label %.lr.ph520

.lr.ph520:                                        ; preds = %386, %.lr.ph520
  %388 = phi i64 [ %395, %.lr.ph520 ], [ 1, %386 ]
  %389 = load i64, ptr %13, align 8, !tbaa !5
  %390 = shl i64 %388, 2
  %391 = add i64 %390, -4
  %392 = add i64 %391, %389
  %393 = getelementptr inbounds [16 x double], ptr %36, i64 0, i64 %392
  %394 = call i32 @dlassq_(ptr noundef nonnull %12, ptr noundef nonnull %393, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %34) #7
  %395 = add nuw nsw i64 %388, 1
  store i64 %395, ptr %22, align 8, !tbaa !5
  %396 = load i64, ptr %18, align 8, !tbaa !5
  %.not489.not = icmp slt i64 %388, %396
  br i1 %.not489.not, label %.lr.ph520, label %._crit_edge521.loopexit, !llvm.loop !15

._crit_edge521.loopexit:                          ; preds = %.lr.ph520
  %.pre533 = load double, ptr %43, align 8, !tbaa !9
  %.pre534 = load double, ptr %34, align 8, !tbaa !9
  br label %._crit_edge521

._crit_edge521:                                   ; preds = %._crit_edge521.loopexit, %386
  %397 = phi double [ %.pre534, %._crit_edge521.loopexit ], [ 1.000000e+00, %386 ]
  %398 = phi double [ %.pre533, %._crit_edge521.loopexit ], [ 0.000000e+00, %386 ]
  %399 = call double @sqrt(double noundef %397) #7
  %400 = fmul double %398, %399
  %401 = fcmp ugt double %400, %379
  %402 = fcmp ugt double %400, %115
  %or.cond = select i1 %401, i1 true, i1 %402
  br i1 %or.cond, label %408, label %403

403:                                              ; preds = %._crit_edge521
  %404 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %36, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef nonnull @c__4) #7
  %405 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %37, ptr noundef nonnull @c__4, ptr noundef nonnull %25, ptr noundef nonnull @c__4) #7
  %406 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %30, ptr noundef nonnull @c__4) #7
  %407 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %39, ptr noundef nonnull @c__4, ptr noundef nonnull %29, ptr noundef nonnull @c__4) #7
  br label %410

408:                                              ; preds = %._crit_edge521
  %409 = fcmp ult double %379, %115
  br i1 %409, label %410, label %718

410:                                              ; preds = %408, %403
  %411 = load i64, ptr %23, align 8, !tbaa !5
  %412 = add nsw i64 %411, -1
  store i64 %412, ptr %18, align 8, !tbaa !5
  store i64 %412, ptr %19, align 8, !tbaa !5
  %413 = getelementptr inbounds i8, ptr %25, i64 8
  %414 = call i32 @dlaset_(ptr noundef nonnull @.str.8, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b5, ptr noundef nonnull @c_b5, ptr noundef nonnull %413, ptr noundef nonnull @c__4) #7
  %415 = load i64, ptr %11, align 8, !tbaa !5
  %416 = mul i64 %415, %88
  %417 = getelementptr inbounds double, ptr %46, i64 %416
  %418 = load i64, ptr %23, align 8, !tbaa !5
  %419 = mul nsw i64 %418, %418
  %420 = getelementptr double, ptr %14, i64 %419
  %421 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef %417, ptr noundef nonnull %4, ptr noundef %420, ptr noundef nonnull %23) #7
  %422 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %23) #7
  %423 = load i64, ptr %23, align 8, !tbaa !5
  %424 = mul nsw i64 %423, %423
  %425 = getelementptr double, ptr %14, i64 %424
  %426 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b48, ptr noundef %14, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b42, ptr noundef %425, ptr noundef nonnull %23) #7
  store double 0.000000e+00, ptr %43, align 8, !tbaa !9
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %427 = load i64, ptr %23, align 8, !tbaa !5
  %428 = mul nsw i64 %427, %427
  store i64 %428, ptr %18, align 8, !tbaa !5
  %429 = getelementptr double, ptr %14, i64 %428
  %430 = call i32 @dlassq_(ptr noundef nonnull %18, ptr noundef %429, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %34) #7
  %431 = load i64, ptr %11, align 8, !tbaa !5
  %432 = mul i64 %431, %93
  %433 = getelementptr inbounds double, ptr %49, i64 %432
  %434 = load i64, ptr %23, align 8, !tbaa !5
  %435 = mul nsw i64 %434, %434
  %436 = getelementptr double, ptr %14, i64 %435
  %437 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef %433, ptr noundef nonnull %6, ptr noundef %436, ptr noundef nonnull %23) #7
  %438 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %23) #7
  %439 = load i64, ptr %23, align 8, !tbaa !5
  %440 = mul nsw i64 %439, %439
  %441 = getelementptr double, ptr %14, i64 %440
  %442 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b48, ptr noundef %14, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b42, ptr noundef %441, ptr noundef nonnull %23) #7
  %443 = load i64, ptr %23, align 8, !tbaa !5
  %444 = mul nsw i64 %443, %443
  store i64 %444, ptr %18, align 8, !tbaa !5
  %445 = getelementptr double, ptr %14, i64 %444
  %446 = call i32 @dlassq_(ptr noundef nonnull %18, ptr noundef %445, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %34) #7
  %447 = load double, ptr %43, align 8, !tbaa !9
  %448 = load double, ptr %34, align 8, !tbaa !9
  %449 = call double @sqrt(double noundef %448) #7
  %450 = fmul double %447, %449
  %451 = fcmp ugt double %450, %115
  br i1 %451, label %718, label %452

452:                                              ; preds = %410
  %453 = load i64, ptr %13, align 8, !tbaa !5
  %454 = getelementptr inbounds [16 x double], ptr %24, i64 0, i64 %453
  %455 = call i32 @dlaset_(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b5, ptr noundef nonnull @c_b5, ptr noundef nonnull %454, ptr noundef nonnull @c__4) #7
  %456 = load i64, ptr %11, align 8, !tbaa !5
  %457 = mul i64 %456, %88
  %458 = getelementptr inbounds double, ptr %46, i64 %457
  %459 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull @c__4, ptr noundef %458, ptr noundef nonnull %4) #7
  %460 = load i64, ptr %11, align 8, !tbaa !5
  %461 = mul i64 %460, %93
  %462 = getelementptr inbounds double, ptr %49, i64 %461
  %463 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef %462, ptr noundef nonnull %6) #7
  %464 = call i32 @dlaset_(ptr noundef nonnull @.str, ptr noundef nonnull @c__4, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull @c_b5, ptr noundef nonnull %25, ptr noundef nonnull @c__4) #7
  %465 = load i64, ptr %23, align 8, !tbaa !5
  %466 = mul i64 %465, %465
  store i64 %466, ptr %18, align 8, !tbaa !5
  %.not491522 = icmp eq i64 %465, 0
  br i1 %.not491522, label %._crit_edge526, label %.lr.ph525.preheader

.lr.ph525.preheader:                              ; preds = %452
  %umax = call i64 @llvm.umax.i64(i64 %466, i64 1)
  %467 = shl nuw i64 %umax, 3
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %14, i8 0, i64 %467, i1 false), !tbaa !9
  %468 = add i64 %umax, 1
  br label %._crit_edge526

._crit_edge526:                                   ; preds = %.lr.ph525.preheader, %452
  %storemerge490.lcssa = phi i64 [ 1, %452 ], [ %468, %.lr.ph525.preheader ]
  store i64 %storemerge490.lcssa, ptr %22, align 8, !tbaa !5
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  store double 1.000000e+00, ptr %25, align 16, !tbaa !9
  %469 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub = sub i64 %469, %466
  %470 = add i64 %reass.sub, -2
  store i64 %470, ptr %32, align 8, !tbaa !5
  %471 = load i64, ptr %13, align 8, !tbaa !5
  %472 = icmp sgt i64 %471, 1
  br i1 %472, label %473, label %496

473:                                              ; preds = %._crit_edge526
  %474 = load i64, ptr %11, align 8, !tbaa !5
  %475 = mul i64 %474, %88
  %476 = getelementptr inbounds double, ptr %46, i64 %475
  %477 = mul i64 %474, %93
  %478 = getelementptr inbounds double, ptr %49, i64 %477
  %479 = getelementptr inbounds i8, ptr %14, i64 8
  %480 = call i32 @dlagv2_(ptr noundef %476, ptr noundef nonnull %4, ptr noundef %478, ptr noundef nonnull %6, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull %14, ptr noundef nonnull %479, ptr noundef nonnull %25, ptr noundef nonnull %413) #7
  %481 = load double, ptr %479, align 8, !tbaa !9
  %482 = fneg double %481
  %483 = load i64, ptr %23, align 8, !tbaa !5
  %484 = getelementptr double, ptr %14, i64 %483
  store double %482, ptr %484, align 8, !tbaa !9
  %485 = load double, ptr %14, align 8, !tbaa !9
  %486 = getelementptr double, ptr %56, i64 %483
  %487 = getelementptr i8, ptr %486, i64 16
  store double %485, ptr %487, align 8, !tbaa !9
  %488 = load double, ptr %25, align 16, !tbaa !9
  %489 = load i64, ptr %13, align 8, !tbaa !5
  %490 = mul i64 %489, 5
  %491 = add nsw i64 %490, -5
  %492 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %491
  store double %488, ptr %492, align 8, !tbaa !9
  %493 = load double, ptr %413, align 8, !tbaa !9
  %494 = fneg double %493
  %495 = getelementptr inbounds i8, ptr %25, i64 32
  store double %494, ptr %495, align 16, !tbaa !9
  %.pre536 = mul nsw i64 %483, %483
  br label %496

496:                                              ; preds = %473, %._crit_edge526
  %.pre-phi = phi i64 [ %.pre536, %473 ], [ %466, %._crit_edge526 ]
  %497 = phi i64 [ %489, %473 ], [ %471, %._crit_edge526 ]
  %498 = phi i64 [ %483, %473 ], [ %465, %._crit_edge526 ]
  %499 = getelementptr inbounds double, ptr %56, i64 %.pre-phi
  store double 1.000000e+00, ptr %499, align 8, !tbaa !9
  %500 = mul i64 %498, 5
  %501 = add nsw i64 %500, -5
  %502 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %501
  store double 1.000000e+00, ptr %502, align 8, !tbaa !9
  %503 = load i64, ptr %12, align 8, !tbaa !5
  %504 = icmp sgt i64 %503, 1
  br i1 %504, label %505, label %555

505:                                              ; preds = %496
  %506 = load i64, ptr %11, align 8, !tbaa !5
  %507 = add nsw i64 %497, %506
  %508 = mul i64 %507, %88
  %509 = getelementptr inbounds double, ptr %46, i64 %508
  %510 = mul i64 %507, %93
  %511 = getelementptr inbounds double, ptr %49, i64 %510
  %512 = getelementptr double, ptr %14, i64 %.pre-phi
  %513 = add i64 %498, 1
  %514 = mul i64 %497, %513
  %515 = getelementptr double, ptr %14, i64 %514
  %516 = getelementptr double, ptr %56, i64 %514
  %517 = getelementptr i8, ptr %516, i64 16
  %518 = mul i64 %497, 5
  %519 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %518
  %520 = shl i64 %498, 2
  %521 = add i64 %498, -9
  %522 = add i64 %521, %520
  %523 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %522
  %524 = call i32 @dlagv2_(ptr noundef %509, ptr noundef nonnull %4, ptr noundef %511, ptr noundef nonnull %6, ptr noundef nonnull %35, ptr noundef nonnull %33, ptr noundef %512, ptr noundef %515, ptr noundef %517, ptr noundef nonnull %519, ptr noundef nonnull %523) #7
  %525 = load i64, ptr %13, align 8, !tbaa !5
  %526 = load i64, ptr %23, align 8, !tbaa !5
  %527 = add i64 %526, 1
  %528 = mul i64 %527, %525
  %529 = getelementptr double, ptr %14, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !9
  %531 = mul nsw i64 %526, %526
  %532 = getelementptr inbounds double, ptr %56, i64 %531
  store double %530, ptr %532, align 8, !tbaa !9
  %533 = getelementptr double, ptr %56, i64 %528
  %534 = getelementptr i8, ptr %533, i64 16
  %535 = load double, ptr %534, align 8, !tbaa !9
  %536 = fneg double %535
  %537 = getelementptr i8, ptr %532, i64 -8
  store double %536, ptr %537, align 8, !tbaa !9
  %538 = mul i64 %525, 5
  %539 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !9
  %541 = mul i64 %526, 5
  %542 = add nsw i64 %541, -5
  %543 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %542
  store double %540, ptr %543, align 8, !tbaa !9
  %544 = add nsw i64 %526, -1
  %545 = shl i64 %544, 2
  %546 = add i64 %526, -5
  %547 = add i64 %546, %545
  %548 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !9
  %550 = fneg double %549
  %551 = shl i64 %526, 2
  %552 = add i64 %551, -5
  %553 = add i64 %552, %544
  %554 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %553
  store double %550, ptr %554, align 8, !tbaa !9
  br label %555

555:                                              ; preds = %505, %496
  %.pre-phi537 = phi i64 [ %531, %505 ], [ %.pre-phi, %496 ]
  %556 = phi i64 [ %525, %505 ], [ %497, %496 ]
  %557 = load i64, ptr %11, align 8, !tbaa !5
  %558 = add nsw i64 %556, %557
  %559 = mul nsw i64 %558, %44
  %560 = getelementptr double, ptr %46, i64 %557
  %561 = getelementptr double, ptr %560, i64 %559
  %562 = getelementptr double, ptr %14, i64 %.pre-phi537
  %563 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b42, ptr noundef nonnull %14, ptr noundef nonnull %23, ptr noundef %561, ptr noundef nonnull %4, ptr noundef nonnull @c_b5, ptr noundef %562, ptr noundef nonnull %13) #7
  %564 = load i64, ptr %23, align 8, !tbaa !5
  %565 = mul nsw i64 %564, %564
  %566 = getelementptr double, ptr %14, i64 %565
  %567 = load i64, ptr %11, align 8, !tbaa !5
  %568 = load i64, ptr %13, align 8, !tbaa !5
  %569 = add nsw i64 %568, %567
  %570 = mul nsw i64 %569, %44
  %571 = getelementptr double, ptr %46, i64 %567
  %572 = getelementptr double, ptr %571, i64 %570
  %573 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef %566, ptr noundef nonnull %13, ptr noundef %572, ptr noundef nonnull %4) #7
  %574 = load i64, ptr %11, align 8, !tbaa !5
  %575 = load i64, ptr %13, align 8, !tbaa !5
  %576 = add nsw i64 %575, %574
  %577 = mul nsw i64 %576, %47
  %578 = getelementptr double, ptr %49, i64 %574
  %579 = getelementptr double, ptr %578, i64 %577
  %580 = load i64, ptr %23, align 8, !tbaa !5
  %581 = mul nsw i64 %580, %580
  %582 = getelementptr double, ptr %14, i64 %581
  %583 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b42, ptr noundef nonnull %14, ptr noundef nonnull %23, ptr noundef %579, ptr noundef nonnull %6, ptr noundef nonnull @c_b5, ptr noundef %582, ptr noundef nonnull %13) #7
  %584 = load i64, ptr %23, align 8, !tbaa !5
  %585 = mul nsw i64 %584, %584
  %586 = getelementptr double, ptr %14, i64 %585
  %587 = load i64, ptr %11, align 8, !tbaa !5
  %588 = load i64, ptr %13, align 8, !tbaa !5
  %589 = add nsw i64 %588, %587
  %590 = mul nsw i64 %589, %47
  %591 = getelementptr double, ptr %49, i64 %587
  %592 = getelementptr double, ptr %591, i64 %590
  %593 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef %586, ptr noundef nonnull %13, ptr noundef %592, ptr noundef nonnull %6) #7
  %594 = load i64, ptr %23, align 8, !tbaa !5
  %595 = mul nsw i64 %594, %594
  %596 = getelementptr double, ptr %14, i64 %595
  %597 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull %14, ptr noundef nonnull %23, ptr noundef nonnull @c_b5, ptr noundef %596, ptr noundef nonnull %23) #7
  %598 = load i64, ptr %23, align 8, !tbaa !5
  %599 = mul nsw i64 %598, %598
  %600 = getelementptr double, ptr %14, i64 %599
  %601 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef %600, ptr noundef nonnull %23, ptr noundef nonnull %29, ptr noundef nonnull @c__4) #7
  %602 = load i64, ptr %11, align 8, !tbaa !5
  %603 = load i64, ptr %13, align 8, !tbaa !5
  %604 = add nsw i64 %603, %602
  %605 = mul nsw i64 %604, %44
  %606 = getelementptr double, ptr %46, i64 %602
  %607 = getelementptr double, ptr %606, i64 %605
  %608 = mul i64 %603, 5
  %609 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %608
  %610 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %12, ptr noundef nonnull @c_b42, ptr noundef %607, ptr noundef nonnull %4, ptr noundef nonnull %609, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %13) #7
  %611 = load i64, ptr %11, align 8, !tbaa !5
  %612 = load i64, ptr %13, align 8, !tbaa !5
  %613 = add nsw i64 %612, %611
  %614 = mul nsw i64 %613, %44
  %615 = getelementptr double, ptr %46, i64 %611
  %616 = getelementptr double, ptr %615, i64 %614
  %617 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %616, ptr noundef nonnull %4) #7
  %618 = load i64, ptr %11, align 8, !tbaa !5
  %619 = load i64, ptr %13, align 8, !tbaa !5
  %620 = add nsw i64 %619, %618
  %621 = mul nsw i64 %620, %47
  %622 = getelementptr double, ptr %49, i64 %618
  %623 = getelementptr double, ptr %622, i64 %621
  %624 = mul i64 %619, 5
  %625 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %624
  %626 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %12, ptr noundef nonnull @c_b42, ptr noundef %623, ptr noundef nonnull %6, ptr noundef nonnull %625, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %13) #7
  %627 = load i64, ptr %11, align 8, !tbaa !5
  %628 = load i64, ptr %13, align 8, !tbaa !5
  %629 = add nsw i64 %628, %627
  %630 = mul nsw i64 %629, %47
  %631 = getelementptr double, ptr %49, i64 %627
  %632 = getelementptr double, ptr %631, i64 %630
  %633 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %632, ptr noundef nonnull %6) #7
  %634 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %23) #7
  %635 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %23, ptr noundef nonnull %30, ptr noundef nonnull @c__4) #7
  %636 = load i64, ptr %0, align 8, !tbaa !5
  %.not492 = icmp eq i64 %636, 0
  br i1 %.not492, label %648, label %637

637:                                              ; preds = %555
  %638 = load i64, ptr %11, align 8, !tbaa !5
  %639 = mul nsw i64 %638, %50
  %640 = getelementptr double, ptr %52, i64 %639
  %641 = getelementptr i8, ptr %640, i64 8
  %642 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef %641, ptr noundef nonnull %8, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %2) #7
  %643 = load i64, ptr %11, align 8, !tbaa !5
  %644 = mul nsw i64 %643, %50
  %645 = getelementptr double, ptr %52, i64 %644
  %646 = getelementptr i8, ptr %645, i64 8
  %647 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %2, ptr noundef %646, ptr noundef nonnull %8) #7
  br label %648

648:                                              ; preds = %637, %555
  %649 = load i64, ptr %1, align 8, !tbaa !5
  %.not493 = icmp eq i64 %649, 0
  br i1 %.not493, label %661, label %650

650:                                              ; preds = %648
  %651 = load i64, ptr %11, align 8, !tbaa !5
  %652 = mul nsw i64 %651, %53
  %653 = getelementptr double, ptr %55, i64 %652
  %654 = getelementptr i8, ptr %653, i64 8
  %655 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef %654, ptr noundef nonnull %10, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %2) #7
  %656 = load i64, ptr %11, align 8, !tbaa !5
  %657 = mul nsw i64 %656, %53
  %658 = getelementptr double, ptr %55, i64 %657
  %659 = getelementptr i8, ptr %658, i64 8
  %660 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %2, ptr noundef %659, ptr noundef nonnull %10) #7
  br label %661

661:                                              ; preds = %650, %648
  %662 = load i64, ptr %11, align 8, !tbaa !5
  %663 = load i64, ptr %23, align 8, !tbaa !5
  %664 = add nsw i64 %663, %662
  %665 = load i64, ptr %2, align 8, !tbaa !5
  %.not494 = icmp sgt i64 %664, %665
  br i1 %.not494, label %694, label %666

666:                                              ; preds = %661
  %reass.sub528 = sub i64 %665, %664
  %667 = add i64 %reass.sub528, 1
  store i64 %667, ptr %18, align 8, !tbaa !5
  %668 = mul nsw i64 %664, %44
  %669 = getelementptr double, ptr %46, i64 %662
  %670 = getelementptr double, ptr %669, i64 %668
  %671 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %18, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef %670, ptr noundef nonnull %4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %23) #7
  %672 = load i64, ptr %2, align 8, !tbaa !5
  %673 = add i64 %672, 1
  %674 = sub i64 %673, %664
  store i64 %674, ptr %18, align 8, !tbaa !5
  %675 = load i64, ptr %11, align 8, !tbaa !5
  %676 = getelementptr double, ptr %46, i64 %675
  %677 = getelementptr double, ptr %676, i64 %668
  %678 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %23, ptr noundef %677, ptr noundef nonnull %4) #7
  %679 = load i64, ptr %2, align 8, !tbaa !5
  %680 = add i64 %679, 1
  %681 = sub i64 %680, %664
  store i64 %681, ptr %18, align 8, !tbaa !5
  %682 = load i64, ptr %11, align 8, !tbaa !5
  %683 = mul nsw i64 %664, %47
  %684 = getelementptr double, ptr %49, i64 %682
  %685 = getelementptr double, ptr %684, i64 %683
  %686 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %23, ptr noundef nonnull %18, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull @c__4, ptr noundef %685, ptr noundef nonnull %4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %23) #7
  %687 = load i64, ptr %2, align 8, !tbaa !5
  %688 = add i64 %687, 1
  %689 = sub i64 %688, %664
  store i64 %689, ptr %18, align 8, !tbaa !5
  %690 = load i64, ptr %11, align 8, !tbaa !5
  %691 = getelementptr double, ptr %49, i64 %690
  %692 = getelementptr double, ptr %691, i64 %683
  %693 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %23, ptr noundef %692, ptr noundef nonnull %6) #7
  %.pre535 = load i64, ptr %11, align 8, !tbaa !5
  br label %694

694:                                              ; preds = %666, %661
  %695 = phi i64 [ %.pre535, %666 ], [ %662, %661 ]
  %696 = add nsw i64 %695, -1
  store i64 %696, ptr %22, align 8, !tbaa !5
  %697 = icmp sgt i64 %695, 1
  br i1 %697, label %698, label %719

698:                                              ; preds = %694
  %699 = mul nsw i64 %695, %44
  %700 = getelementptr double, ptr %46, i64 %699
  %701 = getelementptr i8, ptr %700, i64 8
  %702 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef %701, ptr noundef nonnull %4, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %22) #7
  %703 = load i64, ptr %11, align 8, !tbaa !5
  %704 = mul nsw i64 %703, %44
  %705 = getelementptr double, ptr %46, i64 %704
  %706 = getelementptr i8, ptr %705, i64 8
  %707 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %22, ptr noundef %706, ptr noundef nonnull %4) #7
  %708 = load i64, ptr %11, align 8, !tbaa !5
  %709 = mul nsw i64 %708, %47
  %710 = getelementptr double, ptr %49, i64 %709
  %711 = getelementptr i8, ptr %710, i64 8
  %712 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull @c_b42, ptr noundef %711, ptr noundef nonnull %6, ptr noundef nonnull %30, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %22) #7
  %713 = load i64, ptr %11, align 8, !tbaa !5
  %714 = mul nsw i64 %713, %47
  %715 = getelementptr double, ptr %49, i64 %714
  %716 = getelementptr i8, ptr %715, i64 8
  %717 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %22, ptr noundef %716, ptr noundef nonnull %6) #7
  br label %719

718:                                              ; preds = %410, %408, %382, %._crit_edge516, %362, %359, %348, %345, %._crit_edge511, %319, %._crit_edge, %171, %118
  store i64 1, ptr %16, align 8, !tbaa !5
  br label %719

719:                                              ; preds = %694, %698, %267, %269, %66, %17, %59, %62, %718, %78
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  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 i32 @dlaset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

declare i32 @dlagv2_(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.smax.i64(i64, i64) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #5

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

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

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

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


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