; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@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 i32, align 4
@c__2 = external hidden global i32, align 4
@.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 i32, align 4
@.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 void @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 ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca 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 i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca double, align 8
  %46 = alloca i32, align 4
  %47 = alloca double, align 8
  %48 = alloca i32, align 4
  %49 = alloca [4 x double], align 16
  %50 = alloca double, align 8
  %51 = alloca [4 x double], align 16
  %52 = alloca [16 x double], align 16
  %53 = alloca [16 x double], align 16
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %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 [16 x double], align 16
  %64 = alloca i32, align 4
  %65 = alloca [16 x double], align 16
  %66 = alloca double, align 8
  %67 = alloca [4 x i32], align 16
  %68 = alloca [2 x double], align 16
  %69 = alloca [2 x double], align 16
  %70 = alloca [2 x double], align 16
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca [16 x double], align 16
  %74 = alloca double, align 8
  %75 = alloca [16 x double], align 16
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca i32, align 4
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca i32, align 4
  store ptr %0, ptr %18, align 8, !tbaa !5
  store ptr %1, ptr %19, align 8, !tbaa !5
  store ptr %2, ptr %20, align 8, !tbaa !5
  store ptr %3, ptr %21, align 8, !tbaa !5
  store ptr %4, ptr %22, align 8, !tbaa !5
  store ptr %5, ptr %23, align 8, !tbaa !5
  store ptr %6, ptr %24, align 8, !tbaa !5
  store ptr %7, ptr %25, align 8, !tbaa !5
  store ptr %8, ptr %26, align 8, !tbaa !5
  store ptr %9, ptr %27, align 8, !tbaa !5
  store ptr %10, ptr %28, align 8, !tbaa !5
  store ptr %11, ptr %29, align 8, !tbaa !5
  store ptr %12, ptr %30, align 8, !tbaa !5
  store ptr %13, ptr %31, align 8, !tbaa !5
  store ptr %14, ptr %32, align 8, !tbaa !5
  store ptr %15, ptr %33, align 8, !tbaa !5
  store ptr %16, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 128, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 128, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 128, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 128, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 16, 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 128, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 128, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 4, 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
  %83 = load ptr, ptr %22, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %84, ptr %35, align 4, !tbaa !9
  %85 = load i32, ptr %35, align 4, !tbaa !9
  %86 = mul nsw i32 %85, 1
  %87 = add nsw i32 1, %86
  store i32 %87, ptr %36, align 4, !tbaa !9
  %88 = load i32, ptr %36, align 4, !tbaa !9
  %89 = load ptr, ptr %21, align 8, !tbaa !5
  %90 = sext i32 %88 to i64
  %91 = sub i64 0, %90
  %92 = getelementptr inbounds double, ptr %89, i64 %91
  store ptr %92, ptr %21, align 8, !tbaa !5
  %93 = load ptr, ptr %24, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %94, ptr %37, align 4, !tbaa !9
  %95 = load i32, ptr %37, align 4, !tbaa !9
  %96 = mul nsw i32 %95, 1
  %97 = add nsw i32 1, %96
  store i32 %97, ptr %38, align 4, !tbaa !9
  %98 = load i32, ptr %38, align 4, !tbaa !9
  %99 = load ptr, ptr %23, align 8, !tbaa !5
  %100 = sext i32 %98 to i64
  %101 = sub i64 0, %100
  %102 = getelementptr inbounds double, ptr %99, i64 %101
  store ptr %102, ptr %23, align 8, !tbaa !5
  %103 = load ptr, ptr %26, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  store i32 %104, ptr %39, align 4, !tbaa !9
  %105 = load i32, ptr %39, align 4, !tbaa !9
  %106 = mul nsw i32 %105, 1
  %107 = add nsw i32 1, %106
  store i32 %107, ptr %40, align 4, !tbaa !9
  %108 = load i32, ptr %40, align 4, !tbaa !9
  %109 = load ptr, ptr %25, align 8, !tbaa !5
  %110 = sext i32 %108 to i64
  %111 = sub i64 0, %110
  %112 = getelementptr inbounds double, ptr %109, i64 %111
  store ptr %112, ptr %25, align 8, !tbaa !5
  %113 = load ptr, ptr %28, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  store i32 %114, ptr %41, align 4, !tbaa !9
  %115 = load i32, ptr %41, align 4, !tbaa !9
  %116 = mul nsw i32 %115, 1
  %117 = add nsw i32 1, %116
  store i32 %117, ptr %42, align 4, !tbaa !9
  %118 = load i32, ptr %42, align 4, !tbaa !9
  %119 = load ptr, ptr %27, align 8, !tbaa !5
  %120 = sext i32 %118 to i64
  %121 = sub i64 0, %120
  %122 = getelementptr inbounds double, ptr %119, i64 %121
  store ptr %122, ptr %27, align 8, !tbaa !5
  %123 = load ptr, ptr %32, align 8, !tbaa !5
  %124 = getelementptr inbounds double, ptr %123, i32 -1
  store ptr %124, ptr %32, align 8, !tbaa !5
  %125 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %125, align 4, !tbaa !9
  %126 = load ptr, ptr %20, align 8, !tbaa !5
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = icmp sle i32 %127, 1
  br i1 %128, label %137, label %129

129:                                              ; preds = %17
  %130 = load ptr, ptr %30, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  %132 = icmp sle i32 %131, 0
  br i1 %132, label %137, label %133

133:                                              ; preds = %129
  %134 = load ptr, ptr %31, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = icmp sle i32 %135, 0
  br i1 %136, label %137, label %138

137:                                              ; preds = %133, %129, %17
  store i32 1, ptr %82, align 4
  br label %1807

138:                                              ; preds = %133
  %139 = load ptr, ptr %30, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = load ptr, ptr %20, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp sgt i32 %140, %142
  br i1 %143, label %153, label %144

144:                                              ; preds = %138
  %145 = load ptr, ptr %29, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = load ptr, ptr %30, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = add nsw i32 %146, %148
  %150 = load ptr, ptr %20, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp sgt i32 %149, %151
  br i1 %152, label %153, label %154

153:                                              ; preds = %144, %138
  store i32 1, ptr %82, align 4
  br label %1807

154:                                              ; preds = %144
  %155 = load ptr, ptr %30, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = load ptr, ptr %31, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = add nsw i32 %156, %158
  store i32 %159, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %160 = load ptr, ptr %20, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = load i32, ptr %57, align 4, !tbaa !9
  %163 = mul nsw i32 %161, %162
  store i32 %163, ptr %44, align 4, !tbaa !9
  %164 = load i32, ptr %43, align 4, !tbaa !9
  %165 = load i32, ptr %44, align 4, !tbaa !9
  %166 = icmp sge i32 %164, %165
  br i1 %166, label %167, label %169

167:                                              ; preds = %154
  %168 = load i32, ptr %43, align 4, !tbaa !9
  br label %171

169:                                              ; preds = %154
  %170 = load i32, ptr %44, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %169, %167
  %172 = phi i32 [ %168, %167 ], [ %170, %169 ]
  store i32 %172, ptr %43, align 4, !tbaa !9
  %173 = load i32, ptr %57, align 4, !tbaa !9
  %174 = load i32, ptr %57, align 4, !tbaa !9
  %175 = mul nsw i32 %173, %174
  %176 = shl i32 %175, 1
  store i32 %176, ptr %44, align 4, !tbaa !9
  %177 = load ptr, ptr %33, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = load i32, ptr %43, align 4, !tbaa !9
  %180 = load i32, ptr %44, align 4, !tbaa !9
  %181 = icmp sge i32 %179, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %171
  %183 = load i32, ptr %43, align 4, !tbaa !9
  br label %186

184:                                              ; preds = %171
  %185 = load i32, ptr %44, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %184, %182
  %187 = phi i32 [ %183, %182 ], [ %185, %184 ]
  %188 = icmp slt i32 %178, %187
  br i1 %188, label %189, label %220

189:                                              ; preds = %186
  %190 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -16, ptr %190, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %191 = load ptr, ptr %20, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = load i32, ptr %57, align 4, !tbaa !9
  %194 = mul nsw i32 %192, %193
  store i32 %194, ptr %44, align 4, !tbaa !9
  %195 = load i32, ptr %43, align 4, !tbaa !9
  %196 = load i32, ptr %44, align 4, !tbaa !9
  %197 = icmp sge i32 %195, %196
  br i1 %197, label %198, label %200

198:                                              ; preds = %189
  %199 = load i32, ptr %43, align 4, !tbaa !9
  br label %202

200:                                              ; preds = %189
  %201 = load i32, ptr %44, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %200, %198
  %203 = phi i32 [ %199, %198 ], [ %201, %200 ]
  store i32 %203, ptr %43, align 4, !tbaa !9
  %204 = load i32, ptr %57, align 4, !tbaa !9
  %205 = load i32, ptr %57, align 4, !tbaa !9
  %206 = mul nsw i32 %204, %205
  %207 = shl i32 %206, 1
  store i32 %207, ptr %44, align 4, !tbaa !9
  %208 = load i32, ptr %43, align 4, !tbaa !9
  %209 = load i32, ptr %44, align 4, !tbaa !9
  %210 = icmp sge i32 %208, %209
  br i1 %210, label %211, label %213

211:                                              ; preds = %202
  %212 = load i32, ptr %43, align 4, !tbaa !9
  br label %215

213:                                              ; preds = %202
  %214 = load i32, ptr %44, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %213, %211
  %216 = phi i32 [ %212, %211 ], [ %214, %213 ]
  %217 = sitofp i32 %216 to double
  %218 = load ptr, ptr %32, align 8, !tbaa !5
  %219 = getelementptr inbounds double, ptr %218, i64 1
  store double %217, ptr %219, align 8, !tbaa !11
  store i32 1, ptr %82, align 4
  br label %1807

220:                                              ; preds = %186
  store i32 0, ptr %46, align 4, !tbaa !9
  store i32 0, ptr %78, align 4, !tbaa !9
  %221 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  call void @dlaset_(ptr noundef @.str, ptr noundef @c__4, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %221, ptr noundef @c__4)
  %222 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  call void @dlaset_(ptr noundef @.str, ptr noundef @c__4, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %222, ptr noundef @c__4)
  %223 = load ptr, ptr %21, align 8, !tbaa !5
  %224 = load ptr, ptr %29, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = load ptr, ptr %29, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = load i32, ptr %35, align 4, !tbaa !9
  %229 = mul nsw i32 %227, %228
  %230 = add nsw i32 %225, %229
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds double, ptr %223, i64 %231
  %233 = load ptr, ptr %22, align 8, !tbaa !5
  %234 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef %232, ptr noundef %233, ptr noundef %234, ptr noundef @c__4)
  %235 = load ptr, ptr %23, align 8, !tbaa !5
  %236 = load ptr, ptr %29, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = load ptr, ptr %29, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = load i32, ptr %37, align 4, !tbaa !9
  %241 = mul nsw i32 %239, %240
  %242 = add nsw i32 %237, %241
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %235, i64 %243
  %245 = load ptr, ptr %24, align 8, !tbaa !5
  %246 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef %244, ptr noundef %245, ptr noundef %246, ptr noundef @c__4)
  %247 = call double @dlamch_(ptr noundef @.str.1)
  store double %247, ptr %81, align 8, !tbaa !11
  %248 = call double @dlamch_(ptr noundef @.str.2)
  %249 = load double, ptr %81, align 8, !tbaa !11
  %250 = fdiv double %248, %249
  store double %250, ptr %80, align 8, !tbaa !11
  store double 0.000000e+00, ptr %74, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %251 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %252 = load ptr, ptr %32, align 8, !tbaa !5
  %253 = getelementptr inbounds double, ptr %252, i64 1
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef %251, ptr noundef @c__4, ptr noundef %253, ptr noundef %57)
  %254 = load i32, ptr %57, align 4, !tbaa !9
  %255 = load i32, ptr %57, align 4, !tbaa !9
  %256 = mul nsw i32 %254, %255
  store i32 %256, ptr %43, align 4, !tbaa !9
  %257 = load ptr, ptr %32, align 8, !tbaa !5
  %258 = getelementptr inbounds double, ptr %257, i64 1
  call void @dlassq_(ptr noundef %43, ptr noundef %258, ptr noundef @c__1, ptr noundef %74, ptr noundef %50)
  %259 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %260 = load ptr, ptr %32, align 8, !tbaa !5
  %261 = getelementptr inbounds double, ptr %260, i64 1
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef %259, ptr noundef @c__4, ptr noundef %261, ptr noundef %57)
  %262 = load i32, ptr %57, align 4, !tbaa !9
  %263 = load i32, ptr %57, align 4, !tbaa !9
  %264 = mul nsw i32 %262, %263
  store i32 %264, ptr %43, align 4, !tbaa !9
  %265 = load ptr, ptr %32, align 8, !tbaa !5
  %266 = getelementptr inbounds double, ptr %265, i64 1
  call void @dlassq_(ptr noundef %43, ptr noundef %266, ptr noundef @c__1, ptr noundef %74, ptr noundef %50)
  %267 = load double, ptr %74, align 8, !tbaa !11
  %268 = load double, ptr %50, align 8, !tbaa !11
  %269 = call double @sqrt(double noundef %268) #5
  %270 = fmul double %267, %269
  store double %270, ptr %66, align 8, !tbaa !11
  %271 = load double, ptr %81, align 8, !tbaa !11
  %272 = fmul double %271, 2.000000e+01
  %273 = load double, ptr %66, align 8, !tbaa !11
  %274 = fmul double %272, %273
  store double %274, ptr %45, align 8, !tbaa !11
  %275 = load double, ptr %45, align 8, !tbaa !11
  %276 = load double, ptr %80, align 8, !tbaa !11
  %277 = fcmp oge double %275, %276
  br i1 %277, label %278, label %280

278:                                              ; preds = %220
  %279 = load double, ptr %45, align 8, !tbaa !11
  br label %282

280:                                              ; preds = %220
  %281 = load double, ptr %80, align 8, !tbaa !11
  br label %282

282:                                              ; preds = %280, %278
  %283 = phi double [ %279, %278 ], [ %281, %280 ]
  store double %283, ptr %79, align 8, !tbaa !11
  %284 = load i32, ptr %57, align 4, !tbaa !9
  %285 = icmp eq i32 %284, 2
  br i1 %285, label %286, label %686

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

312:                                              ; preds = %286
  %313 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 5
  %314 = load double, ptr %313, align 8, !tbaa !11
  br label %319

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

319:                                              ; preds = %315, %312
  %320 = phi double [ %314, %312 ], [ %318, %315 ]
  store double %320, ptr %72, align 8, !tbaa !11
  %321 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 5
  %322 = load double, ptr %321, align 8, !tbaa !11
  %323 = fcmp oge double %322, 0.000000e+00
  br i1 %323, label %324, label %327

324:                                              ; preds = %319
  %325 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 5
  %326 = load double, ptr %325, align 8, !tbaa !11
  br label %331

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

331:                                              ; preds = %327, %324
  %332 = phi double [ %326, %324 ], [ %330, %327 ]
  store double %332, ptr %71, align 8, !tbaa !11
  %333 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 4
  %334 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  call void @dlartg_(ptr noundef %54, ptr noundef %55, ptr noundef %333, ptr noundef %334, ptr noundef %47)
  %335 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 4
  %336 = load double, ptr %335, align 16, !tbaa !11
  %337 = fneg double %336
  %338 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 1
  store double %337, ptr %338, align 8, !tbaa !11
  %339 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %340 = load double, ptr %339, align 16, !tbaa !11
  %341 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 5
  store double %340, ptr %341, align 8, !tbaa !11
  %342 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %343 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 4
  %344 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %345 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 1
  call void @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)
  %346 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %347 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 4
  %348 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %349 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 1
  call void @drot_(ptr noundef @c__2, ptr noundef %346, ptr noundef @c__1, ptr noundef %347, ptr noundef @c__1, ptr noundef %348, ptr noundef %349)
  %350 = load double, ptr %71, align 8, !tbaa !11
  %351 = load double, ptr %72, align 8, !tbaa !11
  %352 = fcmp oge double %350, %351
  br i1 %352, label %353, label %358

353:                                              ; preds = %331
  %354 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %355 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %356 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %357 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 1
  call void @dlartg_(ptr noundef %354, ptr noundef %355, ptr noundef %356, ptr noundef %357, ptr noundef %47)
  br label %363

358:                                              ; preds = %331
  %359 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %360 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %361 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %362 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 1
  call void @dlartg_(ptr noundef %359, ptr noundef %360, ptr noundef %361, ptr noundef %362, ptr noundef %47)
  br label %363

363:                                              ; preds = %358, %353
  %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 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %367 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 1
  call void @drot_(ptr noundef @c__2, ptr noundef %364, ptr noundef @c__4, ptr noundef %365, ptr noundef @c__4, ptr noundef %366, ptr noundef %367)
  %368 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %369 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %370 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %371 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 1
  call void @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)
  %372 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %373 = load double, ptr %372, align 16, !tbaa !11
  %374 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 5
  store double %373, ptr %374, align 8, !tbaa !11
  %375 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 1
  %376 = load double, ptr %375, align 8, !tbaa !11
  %377 = fneg double %376
  %378 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 4
  store double %377, ptr %378, align 16, !tbaa !11
  %379 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = fcmp oge double %380, 0.000000e+00
  br i1 %381, label %382, label %385

382:                                              ; preds = %363
  %383 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %384 = load double, ptr %383, align 8, !tbaa !11
  br label %389

385:                                              ; preds = %363
  %386 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 1
  %387 = load double, ptr %386, align 8, !tbaa !11
  %388 = fneg double %387
  br label %389

389:                                              ; preds = %385, %382
  %390 = phi double [ %384, %382 ], [ %388, %385 ]
  %391 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %392 = load double, ptr %391, align 8, !tbaa !11
  %393 = fcmp oge double %392, 0.000000e+00
  br i1 %393, label %394, label %397

394:                                              ; preds = %389
  %395 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %396 = load double, ptr %395, align 8, !tbaa !11
  br label %401

397:                                              ; preds = %389
  %398 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = fneg double %399
  br label %401

401:                                              ; preds = %397, %394
  %402 = phi double [ %396, %394 ], [ %400, %397 ]
  %403 = fadd double %390, %402
  store double %403, ptr %77, align 8, !tbaa !11
  %404 = load double, ptr %77, align 8, !tbaa !11
  %405 = load double, ptr %79, align 8, !tbaa !11
  %406 = fcmp ole double %404, %405
  %407 = zext i1 %406 to i32
  store i32 %407, ptr %46, align 4, !tbaa !9
  %408 = load i32, ptr %46, align 4, !tbaa !9
  %409 = icmp ne i32 %408, 0
  br i1 %409, label %411, label %410

410:                                              ; preds = %401
  br label %1805

411:                                              ; preds = %401
  %412 = load ptr, ptr %21, align 8, !tbaa !5
  %413 = load ptr, ptr %29, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = load ptr, ptr %29, align 8, !tbaa !5
  %416 = load i32, ptr %415, align 4, !tbaa !9
  %417 = load i32, ptr %35, align 4, !tbaa !9
  %418 = mul nsw i32 %416, %417
  %419 = add nsw i32 %414, %418
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds double, ptr %412, i64 %420
  %422 = load ptr, ptr %22, align 8, !tbaa !5
  %423 = load ptr, ptr %32, align 8, !tbaa !5
  %424 = load i32, ptr %57, align 4, !tbaa !9
  %425 = load i32, ptr %57, align 4, !tbaa !9
  %426 = mul nsw i32 %424, %425
  %427 = add nsw i32 %426, 1
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %423, i64 %428
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef %421, ptr noundef %422, ptr noundef %429, ptr noundef %57)
  %430 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %431 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %432 = load ptr, ptr %32, align 8, !tbaa !5
  %433 = getelementptr inbounds double, ptr %432, i64 1
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %430, ptr noundef @c__4, ptr noundef %431, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %433, ptr noundef %57)
  %434 = load ptr, ptr %32, align 8, !tbaa !5
  %435 = getelementptr inbounds double, ptr %434, i64 1
  %436 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %437 = load ptr, ptr %32, align 8, !tbaa !5
  %438 = load i32, ptr %57, align 4, !tbaa !9
  %439 = load i32, ptr %57, align 4, !tbaa !9
  %440 = mul nsw i32 %438, %439
  %441 = add nsw i32 %440, 1
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %437, i64 %442
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b48, ptr noundef %435, ptr noundef %57, ptr noundef %436, ptr noundef @c__4, ptr noundef @c_b42, ptr noundef %443, ptr noundef %57)
  store double 0.000000e+00, ptr %74, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %444 = load i32, ptr %57, align 4, !tbaa !9
  %445 = load i32, ptr %57, align 4, !tbaa !9
  %446 = mul nsw i32 %444, %445
  store i32 %446, ptr %43, align 4, !tbaa !9
  %447 = load ptr, ptr %32, align 8, !tbaa !5
  %448 = load i32, ptr %57, align 4, !tbaa !9
  %449 = load i32, ptr %57, align 4, !tbaa !9
  %450 = mul nsw i32 %448, %449
  %451 = add nsw i32 %450, 1
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %447, i64 %452
  call void @dlassq_(ptr noundef %43, ptr noundef %453, ptr noundef @c__1, ptr noundef %74, ptr noundef %50)
  %454 = load ptr, ptr %23, align 8, !tbaa !5
  %455 = load ptr, ptr %29, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = load ptr, ptr %29, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = load i32, ptr %37, align 4, !tbaa !9
  %460 = mul nsw i32 %458, %459
  %461 = add nsw i32 %456, %460
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds double, ptr %454, i64 %462
  %464 = load ptr, ptr %24, align 8, !tbaa !5
  %465 = load ptr, ptr %32, align 8, !tbaa !5
  %466 = load i32, ptr %57, align 4, !tbaa !9
  %467 = load i32, ptr %57, align 4, !tbaa !9
  %468 = mul nsw i32 %466, %467
  %469 = add nsw i32 %468, 1
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %465, i64 %470
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef %463, ptr noundef %464, ptr noundef %471, ptr noundef %57)
  %472 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %473 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %474 = load ptr, ptr %32, align 8, !tbaa !5
  %475 = getelementptr inbounds double, ptr %474, i64 1
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %472, ptr noundef @c__4, ptr noundef %473, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %475, ptr noundef %57)
  %476 = load ptr, ptr %32, align 8, !tbaa !5
  %477 = getelementptr inbounds double, ptr %476, i64 1
  %478 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %479 = load ptr, ptr %32, align 8, !tbaa !5
  %480 = load i32, ptr %57, align 4, !tbaa !9
  %481 = load i32, ptr %57, align 4, !tbaa !9
  %482 = mul nsw i32 %480, %481
  %483 = add nsw i32 %482, 1
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds double, ptr %479, i64 %484
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b48, ptr noundef %477, ptr noundef %57, ptr noundef %478, ptr noundef @c__4, ptr noundef @c_b42, ptr noundef %485, ptr noundef %57)
  %486 = load i32, ptr %57, align 4, !tbaa !9
  %487 = load i32, ptr %57, align 4, !tbaa !9
  %488 = mul nsw i32 %486, %487
  store i32 %488, ptr %43, align 4, !tbaa !9
  %489 = load ptr, ptr %32, align 8, !tbaa !5
  %490 = load i32, ptr %57, align 4, !tbaa !9
  %491 = load i32, ptr %57, align 4, !tbaa !9
  %492 = mul nsw i32 %490, %491
  %493 = add nsw i32 %492, 1
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %489, i64 %494
  call void @dlassq_(ptr noundef %43, ptr noundef %495, ptr noundef @c__1, ptr noundef %74, ptr noundef %50)
  %496 = load double, ptr %74, align 8, !tbaa !11
  %497 = load double, ptr %50, align 8, !tbaa !11
  %498 = call double @sqrt(double noundef %497) #5
  %499 = fmul double %496, %498
  store double %499, ptr %76, align 8, !tbaa !11
  %500 = load double, ptr %76, align 8, !tbaa !11
  %501 = load double, ptr %79, align 8, !tbaa !11
  %502 = fcmp ole double %500, %501
  %503 = zext i1 %502 to i32
  store i32 %503, ptr %78, align 4, !tbaa !9
  %504 = load i32, ptr %78, align 4, !tbaa !9
  %505 = icmp ne i32 %504, 0
  br i1 %505, label %507, label %506

506:                                              ; preds = %411
  br label %1805

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

639:                                              ; preds = %507
  %640 = load ptr, ptr %20, align 8, !tbaa !5
  %641 = load ptr, ptr %27, align 8, !tbaa !5
  %642 = load ptr, ptr %29, align 8, !tbaa !5
  %643 = load i32, ptr %642, align 4, !tbaa !9
  %644 = load i32, ptr %41, align 4, !tbaa !9
  %645 = mul nsw i32 %643, %644
  %646 = add nsw i32 %645, 1
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %641, i64 %647
  %649 = load ptr, ptr %27, align 8, !tbaa !5
  %650 = load ptr, ptr %29, align 8, !tbaa !5
  %651 = load i32, ptr %650, align 4, !tbaa !9
  %652 = add nsw i32 %651, 1
  %653 = load i32, ptr %41, align 4, !tbaa !9
  %654 = mul nsw i32 %652, %653
  %655 = add nsw i32 %654, 1
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds double, ptr %649, i64 %656
  %658 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %659 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 1
  call void @drot_(ptr noundef %640, ptr noundef %648, ptr noundef @c__1, ptr noundef %657, ptr noundef @c__1, ptr noundef %658, ptr noundef %659)
  br label %660

660:                                              ; preds = %639, %507
  %661 = load ptr, ptr %18, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %664, label %685

664:                                              ; preds = %660
  %665 = load ptr, ptr %20, align 8, !tbaa !5
  %666 = load ptr, ptr %25, align 8, !tbaa !5
  %667 = load ptr, ptr %29, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = load i32, ptr %39, align 4, !tbaa !9
  %670 = mul nsw i32 %668, %669
  %671 = add nsw i32 %670, 1
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds double, ptr %666, i64 %672
  %674 = load ptr, ptr %25, align 8, !tbaa !5
  %675 = load ptr, ptr %29, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = add nsw i32 %676, 1
  %678 = load i32, ptr %39, align 4, !tbaa !9
  %679 = mul nsw i32 %677, %678
  %680 = add nsw i32 %679, 1
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds double, ptr %674, i64 %681
  %683 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %684 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 1
  call void @drot_(ptr noundef %665, ptr noundef %673, ptr noundef @c__1, ptr noundef %682, ptr noundef @c__1, ptr noundef %683, ptr noundef %684)
  br label %685

685:                                              ; preds = %664, %660
  store i32 1, ptr %82, align 4
  br label %1807

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

758:                                              ; preds = %780, %686
  %759 = load i32, ptr %56, align 4, !tbaa !9
  %760 = load i32, ptr %43, align 4, !tbaa !9
  %761 = icmp sle i32 %759, %760
  br i1 %761, label %762, label %783

762:                                              ; preds = %758
  %763 = load ptr, ptr %30, align 8, !tbaa !5
  %764 = load i32, ptr %56, align 4, !tbaa !9
  %765 = shl i32 %764, 2
  %766 = sub nsw i32 %765, 4
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 %767
  call void @dscal_(ptr noundef %763, ptr noundef @c_b48, ptr noundef %768, ptr noundef @c__1)
  %769 = load double, ptr %60, align 8, !tbaa !11
  %770 = load ptr, ptr %30, align 8, !tbaa !5
  %771 = load i32, ptr %770, align 4, !tbaa !9
  %772 = load i32, ptr %56, align 4, !tbaa !9
  %773 = add nsw i32 %771, %772
  %774 = load i32, ptr %56, align 4, !tbaa !9
  %775 = shl i32 %774, 2
  %776 = add nsw i32 %773, %775
  %777 = sub nsw i32 %776, 5
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 %778
  store double %769, ptr %779, align 8, !tbaa !11
  br label %780

780:                                              ; preds = %762
  %781 = load i32, ptr %56, align 4, !tbaa !9
  %782 = add nsw i32 %781, 1
  store i32 %782, ptr %56, align 4, !tbaa !9
  br label %758, !llvm.loop !13

783:                                              ; preds = %758
  %784 = load ptr, ptr %31, align 8, !tbaa !5
  %785 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %786 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %787 = load ptr, ptr %32, align 8, !tbaa !5
  %788 = getelementptr inbounds double, ptr %787, i64 1
  call void @dgeqr2_(ptr noundef %57, ptr noundef %784, ptr noundef %785, ptr noundef @c__4, ptr noundef %786, ptr noundef %788, ptr noundef %64)
  %789 = load i32, ptr %64, align 4, !tbaa !9
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %791, label %792

791:                                              ; preds = %783
  br label %1805

792:                                              ; preds = %783
  %793 = load ptr, ptr %31, align 8, !tbaa !5
  %794 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %795 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %796 = load ptr, ptr %32, align 8, !tbaa !5
  %797 = getelementptr inbounds double, ptr %796, i64 1
  call void @dorg2r_(ptr noundef %57, ptr noundef %57, ptr noundef %793, ptr noundef %794, ptr noundef @c__4, ptr noundef %795, ptr noundef %797, ptr noundef %64)
  %798 = load i32, ptr %64, align 4, !tbaa !9
  %799 = icmp ne i32 %798, 0
  br i1 %799, label %800, label %801

800:                                              ; preds = %792
  br label %1805

801:                                              ; preds = %792
  %802 = load ptr, ptr %30, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  store i32 %803, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %804

804:                                              ; preds = %820, %801
  %805 = load i32, ptr %56, align 4, !tbaa !9
  %806 = load i32, ptr %43, align 4, !tbaa !9
  %807 = icmp sle i32 %805, %806
  br i1 %807, label %808, label %823

808:                                              ; preds = %804
  %809 = load double, ptr %60, align 8, !tbaa !11
  %810 = load ptr, ptr %31, align 8, !tbaa !5
  %811 = load i32, ptr %810, align 4, !tbaa !9
  %812 = load i32, ptr %56, align 4, !tbaa !9
  %813 = add nsw i32 %811, %812
  %814 = load i32, ptr %56, align 4, !tbaa !9
  %815 = shl i32 %814, 2
  %816 = add nsw i32 %813, %815
  %817 = sub nsw i32 %816, 5
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 %818
  store double %809, ptr %819, align 8, !tbaa !11
  br label %820

820:                                              ; preds = %808
  %821 = load i32, ptr %56, align 4, !tbaa !9
  %822 = add nsw i32 %821, 1
  store i32 %822, ptr %56, align 4, !tbaa !9
  br label %804, !llvm.loop !15

823:                                              ; preds = %804
  %824 = load ptr, ptr %30, align 8, !tbaa !5
  %825 = load ptr, ptr %31, align 8, !tbaa !5
  %826 = load i32, ptr %825, align 4, !tbaa !9
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 %827
  %829 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %830 = load ptr, ptr %32, align 8, !tbaa !5
  %831 = getelementptr inbounds double, ptr %830, i64 1
  call void @dgerq2_(ptr noundef %824, ptr noundef %57, ptr noundef %828, ptr noundef @c__4, ptr noundef %829, ptr noundef %831, ptr noundef %64)
  %832 = load i32, ptr %64, align 4, !tbaa !9
  %833 = icmp ne i32 %832, 0
  br i1 %833, label %834, label %835

834:                                              ; preds = %823
  br label %1805

835:                                              ; preds = %823
  %836 = load ptr, ptr %30, align 8, !tbaa !5
  %837 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %838 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %839 = load ptr, ptr %32, align 8, !tbaa !5
  %840 = getelementptr inbounds double, ptr %839, i64 1
  call void @dorgr2_(ptr noundef %57, ptr noundef %57, ptr noundef %836, ptr noundef %837, ptr noundef @c__4, ptr noundef %838, ptr noundef %840, ptr noundef %64)
  %841 = load i32, ptr %64, align 4, !tbaa !9
  %842 = icmp ne i32 %841, 0
  br i1 %842, label %843, label %844

843:                                              ; preds = %835
  br label %1805

844:                                              ; preds = %835
  %845 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %846 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %847 = load ptr, ptr %32, align 8, !tbaa !5
  %848 = getelementptr inbounds double, ptr %847, i64 1
  call void @dgemm_(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %845, ptr noundef @c__4, ptr noundef %846, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %848, ptr noundef %57)
  %849 = load ptr, ptr %32, align 8, !tbaa !5
  %850 = getelementptr inbounds double, ptr %849, i64 1
  %851 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %852 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %850, ptr noundef %57, ptr noundef %851, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %852, ptr noundef @c__4)
  %853 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %854 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %855 = load ptr, ptr %32, align 8, !tbaa !5
  %856 = getelementptr inbounds double, ptr %855, i64 1
  call void @dgemm_(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, 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 %57)
  %857 = load ptr, ptr %32, align 8, !tbaa !5
  %858 = getelementptr inbounds double, ptr %857, i64 1
  %859 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %860 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %858, ptr noundef %57, ptr noundef %859, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %860, ptr noundef @c__4)
  %861 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %862 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %861, ptr noundef @c__4, ptr noundef %862, ptr noundef @c__4)
  %863 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %864 = getelementptr inbounds [16 x double], ptr %53, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %863, ptr noundef @c__4, ptr noundef %864, ptr noundef @c__4)
  %865 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %866 = getelementptr inbounds [16 x double], ptr %65, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %865, ptr noundef @c__4, ptr noundef %866, ptr noundef @c__4)
  %867 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %868 = getelementptr inbounds [16 x double], ptr %63, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %867, ptr noundef @c__4, ptr noundef %868, ptr noundef @c__4)
  %869 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %870 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %871 = load ptr, ptr %32, align 8, !tbaa !5
  %872 = getelementptr inbounds double, ptr %871, i64 1
  call void @dgerq2_(ptr noundef %57, ptr noundef %57, ptr noundef %869, ptr noundef @c__4, ptr noundef %870, ptr noundef %872, ptr noundef %64)
  %873 = load i32, ptr %64, align 4, !tbaa !9
  %874 = icmp ne i32 %873, 0
  br i1 %874, label %875, label %876

875:                                              ; preds = %844
  br label %1805

876:                                              ; preds = %844
  %877 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %878 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %879 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %880 = load ptr, ptr %32, align 8, !tbaa !5
  %881 = getelementptr inbounds double, ptr %880, i64 1
  call void @dormr2_(ptr noundef @.str.6, ptr noundef @.str.4, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef %877, ptr noundef @c__4, ptr noundef %878, ptr noundef %879, ptr noundef @c__4, ptr noundef %881, ptr noundef %64)
  %882 = load i32, ptr %64, align 4, !tbaa !9
  %883 = icmp ne i32 %882, 0
  br i1 %883, label %884, label %885

884:                                              ; preds = %876
  br label %1805

885:                                              ; preds = %876
  %886 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %887 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %888 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %889 = load ptr, ptr %32, align 8, !tbaa !5
  %890 = getelementptr inbounds double, ptr %889, i64 1
  call void @dormr2_(ptr noundef @.str.7, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef %886, ptr noundef @c__4, ptr noundef %887, ptr noundef %888, ptr noundef @c__4, ptr noundef %890, ptr noundef %64)
  %891 = load i32, ptr %64, align 4, !tbaa !9
  %892 = icmp ne i32 %891, 0
  br i1 %892, label %893, label %894

893:                                              ; preds = %885
  br label %1805

894:                                              ; preds = %885
  store double 0.000000e+00, ptr %74, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %895 = load ptr, ptr %31, align 8, !tbaa !5
  %896 = load i32, ptr %895, align 4, !tbaa !9
  store i32 %896, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %897

897:                                              ; preds = %912, %894
  %898 = load i32, ptr %56, align 4, !tbaa !9
  %899 = load i32, ptr %43, align 4, !tbaa !9
  %900 = icmp sle i32 %898, %899
  br i1 %900, label %901, label %915

901:                                              ; preds = %897
  %902 = load ptr, ptr %30, align 8, !tbaa !5
  %903 = load ptr, ptr %31, align 8, !tbaa !5
  %904 = load i32, ptr %903, align 4, !tbaa !9
  %905 = add nsw i32 %904, 1
  %906 = load i32, ptr %56, align 4, !tbaa !9
  %907 = shl i32 %906, 2
  %908 = add nsw i32 %905, %907
  %909 = sub nsw i32 %908, 5
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 %910
  call void @dlassq_(ptr noundef %902, ptr noundef %911, ptr noundef @c__1, ptr noundef %74, ptr noundef %50)
  br label %912

912:                                              ; preds = %901
  %913 = load i32, ptr %56, align 4, !tbaa !9
  %914 = add nsw i32 %913, 1
  store i32 %914, ptr %56, align 4, !tbaa !9
  br label %897, !llvm.loop !16

915:                                              ; preds = %897
  %916 = load double, ptr %74, align 8, !tbaa !11
  %917 = load double, ptr %50, align 8, !tbaa !11
  %918 = call double @sqrt(double noundef %917) #5
  %919 = fmul double %916, %918
  store double %919, ptr %62, align 8, !tbaa !11
  %920 = getelementptr inbounds [16 x double], ptr %53, i64 0, i64 0
  %921 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %922 = load ptr, ptr %32, align 8, !tbaa !5
  %923 = getelementptr inbounds double, ptr %922, i64 1
  call void @dgeqr2_(ptr noundef %57, ptr noundef %57, ptr noundef %920, ptr noundef @c__4, ptr noundef %921, ptr noundef %923, ptr noundef %64)
  %924 = load i32, ptr %64, align 4, !tbaa !9
  %925 = icmp ne i32 %924, 0
  br i1 %925, label %926, label %927

926:                                              ; preds = %915
  br label %1805

927:                                              ; preds = %915
  %928 = getelementptr inbounds [16 x double], ptr %53, i64 0, i64 0
  %929 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %930 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %931 = load ptr, ptr %32, align 8, !tbaa !5
  %932 = getelementptr inbounds double, ptr %931, i64 1
  %933 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dorm2r_(ptr noundef @.str.7, ptr noundef @.str.4, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef %928, ptr noundef @c__4, ptr noundef %929, ptr noundef %930, ptr noundef @c__4, ptr noundef %932, ptr noundef %933)
  %934 = getelementptr inbounds [16 x double], ptr %53, i64 0, i64 0
  %935 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %936 = getelementptr inbounds [16 x double], ptr %63, i64 0, i64 0
  %937 = load ptr, ptr %32, align 8, !tbaa !5
  %938 = getelementptr inbounds double, ptr %937, i64 1
  %939 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dorm2r_(ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef %934, ptr noundef @c__4, ptr noundef %935, ptr noundef %936, ptr noundef @c__4, ptr noundef %938, ptr noundef %939)
  %940 = load i32, ptr %64, align 4, !tbaa !9
  %941 = icmp ne i32 %940, 0
  br i1 %941, label %942, label %943

942:                                              ; preds = %927
  br label %1805

943:                                              ; preds = %927
  store double 0.000000e+00, ptr %74, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %944 = load ptr, ptr %31, align 8, !tbaa !5
  %945 = load i32, ptr %944, align 4, !tbaa !9
  store i32 %945, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %946

946:                                              ; preds = %961, %943
  %947 = load i32, ptr %56, align 4, !tbaa !9
  %948 = load i32, ptr %43, align 4, !tbaa !9
  %949 = icmp sle i32 %947, %948
  br i1 %949, label %950, label %964

950:                                              ; preds = %946
  %951 = load ptr, ptr %30, align 8, !tbaa !5
  %952 = load ptr, ptr %31, align 8, !tbaa !5
  %953 = load i32, ptr %952, align 4, !tbaa !9
  %954 = add nsw i32 %953, 1
  %955 = load i32, ptr %56, align 4, !tbaa !9
  %956 = shl i32 %955, 2
  %957 = add nsw i32 %954, %956
  %958 = sub nsw i32 %957, 5
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 %959
  call void @dlassq_(ptr noundef %951, ptr noundef %960, ptr noundef @c__1, ptr noundef %74, ptr noundef %50)
  br label %961

961:                                              ; preds = %950
  %962 = load i32, ptr %56, align 4, !tbaa !9
  %963 = add nsw i32 %962, 1
  store i32 %963, ptr %56, align 4, !tbaa !9
  br label %946, !llvm.loop !17

964:                                              ; preds = %946
  %965 = load double, ptr %74, align 8, !tbaa !11
  %966 = load double, ptr %50, align 8, !tbaa !11
  %967 = call double @sqrt(double noundef %966) #5
  %968 = fmul double %965, %967
  store double %968, ptr %61, align 8, !tbaa !11
  %969 = load double, ptr %61, align 8, !tbaa !11
  %970 = load double, ptr %62, align 8, !tbaa !11
  %971 = fcmp ole double %969, %970
  br i1 %971, label %972, label %985

972:                                              ; preds = %964
  %973 = load double, ptr %61, align 8, !tbaa !11
  %974 = load double, ptr %79, align 8, !tbaa !11
  %975 = fcmp ole double %973, %974
  br i1 %975, label %976, label %985

976:                                              ; preds = %972
  %977 = getelementptr inbounds [16 x double], ptr %52, i64 0, i64 0
  %978 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %977, ptr noundef @c__4, ptr noundef %978, ptr noundef @c__4)
  %979 = getelementptr inbounds [16 x double], ptr %53, i64 0, i64 0
  %980 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %979, ptr noundef @c__4, ptr noundef %980, ptr noundef @c__4)
  %981 = getelementptr inbounds [16 x double], ptr %65, i64 0, i64 0
  %982 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %981, ptr noundef @c__4, ptr noundef %982, ptr noundef @c__4)
  %983 = getelementptr inbounds [16 x double], ptr %63, i64 0, i64 0
  %984 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %983, ptr noundef @c__4, ptr noundef %984, ptr noundef @c__4)
  br label %991

985:                                              ; preds = %972, %964
  %986 = load double, ptr %62, align 8, !tbaa !11
  %987 = load double, ptr %79, align 8, !tbaa !11
  %988 = fcmp oge double %986, %987
  br i1 %988, label %989, label %990

989:                                              ; preds = %985
  br label %1805

990:                                              ; preds = %985
  br label %991

991:                                              ; preds = %990, %976
  %992 = load i32, ptr %57, align 4, !tbaa !9
  %993 = sub nsw i32 %992, 1
  store i32 %993, ptr %43, align 4, !tbaa !9
  %994 = load i32, ptr %57, align 4, !tbaa !9
  %995 = sub nsw i32 %994, 1
  store i32 %995, ptr %44, align 4, !tbaa !9
  %996 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  call void @dlaset_(ptr noundef @.str.8, ptr noundef %43, ptr noundef %44, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %996, ptr noundef @c__4)
  %997 = load ptr, ptr %21, align 8, !tbaa !5
  %998 = load ptr, ptr %29, align 8, !tbaa !5
  %999 = load i32, ptr %998, align 4, !tbaa !9
  %1000 = load ptr, ptr %29, align 8, !tbaa !5
  %1001 = load i32, ptr %1000, align 4, !tbaa !9
  %1002 = load i32, ptr %35, align 4, !tbaa !9
  %1003 = mul nsw i32 %1001, %1002
  %1004 = add nsw i32 %999, %1003
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %997, i64 %1005
  %1007 = load ptr, ptr %22, align 8, !tbaa !5
  %1008 = load ptr, ptr %32, align 8, !tbaa !5
  %1009 = load i32, ptr %57, align 4, !tbaa !9
  %1010 = load i32, ptr %57, align 4, !tbaa !9
  %1011 = mul nsw i32 %1009, %1010
  %1012 = add nsw i32 %1011, 1
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds double, ptr %1008, i64 %1013
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef %1006, ptr noundef %1007, ptr noundef %1014, ptr noundef %57)
  %1015 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %1016 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1017 = load ptr, ptr %32, align 8, !tbaa !5
  %1018 = getelementptr inbounds double, ptr %1017, i64 1
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %1015, ptr noundef @c__4, ptr noundef %1016, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1018, ptr noundef %57)
  %1019 = load ptr, ptr %32, align 8, !tbaa !5
  %1020 = getelementptr inbounds double, ptr %1019, i64 1
  %1021 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %1022 = load ptr, ptr %32, align 8, !tbaa !5
  %1023 = load i32, ptr %57, align 4, !tbaa !9
  %1024 = load i32, ptr %57, align 4, !tbaa !9
  %1025 = mul nsw i32 %1023, %1024
  %1026 = add nsw i32 %1025, 1
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds double, ptr %1022, i64 %1027
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b48, ptr noundef %1020, ptr noundef %57, ptr noundef %1021, ptr noundef @c__4, ptr noundef @c_b42, ptr noundef %1028, ptr noundef %57)
  store double 0.000000e+00, ptr %74, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %1029 = load i32, ptr %57, align 4, !tbaa !9
  %1030 = load i32, ptr %57, align 4, !tbaa !9
  %1031 = mul nsw i32 %1029, %1030
  store i32 %1031, ptr %43, align 4, !tbaa !9
  %1032 = load ptr, ptr %32, align 8, !tbaa !5
  %1033 = load i32, ptr %57, align 4, !tbaa !9
  %1034 = load i32, ptr %57, align 4, !tbaa !9
  %1035 = mul nsw i32 %1033, %1034
  %1036 = add nsw i32 %1035, 1
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1032, i64 %1037
  call void @dlassq_(ptr noundef %43, ptr noundef %1038, ptr noundef @c__1, ptr noundef %74, ptr noundef %50)
  %1039 = load ptr, ptr %23, align 8, !tbaa !5
  %1040 = load ptr, ptr %29, align 8, !tbaa !5
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = load ptr, ptr %29, align 8, !tbaa !5
  %1043 = load i32, ptr %1042, align 4, !tbaa !9
  %1044 = load i32, ptr %37, align 4, !tbaa !9
  %1045 = mul nsw i32 %1043, %1044
  %1046 = add nsw i32 %1041, %1045
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds double, ptr %1039, i64 %1047
  %1049 = load ptr, ptr %24, align 8, !tbaa !5
  %1050 = load ptr, ptr %32, align 8, !tbaa !5
  %1051 = load i32, ptr %57, align 4, !tbaa !9
  %1052 = load i32, ptr %57, align 4, !tbaa !9
  %1053 = mul nsw i32 %1051, %1052
  %1054 = add nsw i32 %1053, 1
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds double, ptr %1050, i64 %1055
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef %1048, ptr noundef %1049, ptr noundef %1056, ptr noundef %57)
  %1057 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %1058 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1059 = load ptr, ptr %32, align 8, !tbaa !5
  %1060 = getelementptr inbounds double, ptr %1059, i64 1
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %1057, ptr noundef @c__4, ptr noundef %1058, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1060, ptr noundef %57)
  %1061 = load ptr, ptr %32, align 8, !tbaa !5
  %1062 = getelementptr inbounds double, ptr %1061, i64 1
  %1063 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %1064 = load ptr, ptr %32, align 8, !tbaa !5
  %1065 = load i32, ptr %57, align 4, !tbaa !9
  %1066 = load i32, ptr %57, align 4, !tbaa !9
  %1067 = mul nsw i32 %1065, %1066
  %1068 = add nsw i32 %1067, 1
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds double, ptr %1064, i64 %1069
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %57, ptr noundef %57, ptr noundef %57, ptr noundef @c_b48, ptr noundef %1062, ptr noundef %57, ptr noundef %1063, ptr noundef @c__4, ptr noundef @c_b42, ptr noundef %1070, ptr noundef %57)
  %1071 = load i32, ptr %57, align 4, !tbaa !9
  %1072 = load i32, ptr %57, align 4, !tbaa !9
  %1073 = mul nsw i32 %1071, %1072
  store i32 %1073, ptr %43, align 4, !tbaa !9
  %1074 = load ptr, ptr %32, align 8, !tbaa !5
  %1075 = load i32, ptr %57, align 4, !tbaa !9
  %1076 = load i32, ptr %57, align 4, !tbaa !9
  %1077 = mul nsw i32 %1075, %1076
  %1078 = add nsw i32 %1077, 1
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds double, ptr %1074, i64 %1079
  call void @dlassq_(ptr noundef %43, ptr noundef %1080, ptr noundef @c__1, ptr noundef %74, ptr noundef %50)
  %1081 = load double, ptr %74, align 8, !tbaa !11
  %1082 = load double, ptr %50, align 8, !tbaa !11
  %1083 = call double @sqrt(double noundef %1082) #5
  %1084 = fmul double %1081, %1083
  store double %1084, ptr %76, align 8, !tbaa !11
  %1085 = load double, ptr %76, align 8, !tbaa !11
  %1086 = load double, ptr %79, align 8, !tbaa !11
  %1087 = fcmp ole double %1085, %1086
  %1088 = zext i1 %1087 to i32
  store i32 %1088, ptr %78, align 4, !tbaa !9
  %1089 = load i32, ptr %78, align 4, !tbaa !9
  %1090 = icmp ne i32 %1089, 0
  br i1 %1090, label %1092, label %1091

1091:                                             ; preds = %991
  br label %1805

1092:                                             ; preds = %991
  %1093 = load ptr, ptr %30, align 8, !tbaa !5
  %1094 = load ptr, ptr %31, align 8, !tbaa !5
  %1095 = load ptr, ptr %31, align 8, !tbaa !5
  %1096 = load i32, ptr %1095, align 4, !tbaa !9
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 %1097
  call void @dlaset_(ptr noundef @.str, ptr noundef %1093, ptr noundef %1094, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %1098, ptr noundef @c__4)
  %1099 = getelementptr inbounds [16 x double], ptr %58, i64 0, i64 0
  %1100 = load ptr, ptr %21, align 8, !tbaa !5
  %1101 = load ptr, ptr %29, align 8, !tbaa !5
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  %1103 = load ptr, ptr %29, align 8, !tbaa !5
  %1104 = load i32, ptr %1103, align 4, !tbaa !9
  %1105 = load i32, ptr %35, align 4, !tbaa !9
  %1106 = mul nsw i32 %1104, %1105
  %1107 = add nsw i32 %1102, %1106
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds double, ptr %1100, i64 %1108
  %1110 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %1099, ptr noundef @c__4, ptr noundef %1109, ptr noundef %1110)
  %1111 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1112 = load ptr, ptr %23, align 8, !tbaa !5
  %1113 = load ptr, ptr %29, align 8, !tbaa !5
  %1114 = load i32, ptr %1113, align 4, !tbaa !9
  %1115 = load ptr, ptr %29, align 8, !tbaa !5
  %1116 = load i32, ptr %1115, align 4, !tbaa !9
  %1117 = load i32, ptr %37, align 4, !tbaa !9
  %1118 = mul nsw i32 %1116, %1117
  %1119 = add nsw i32 %1114, %1118
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds double, ptr %1112, i64 %1120
  %1122 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.5, ptr noundef %57, ptr noundef %57, ptr noundef %1111, ptr noundef @c__4, ptr noundef %1121, ptr noundef %1122)
  %1123 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  call void @dlaset_(ptr noundef @.str, ptr noundef @c__4, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %1123, ptr noundef @c__4)
  %1124 = load ptr, ptr %32, align 8, !tbaa !5
  %1125 = getelementptr inbounds double, ptr %1124, i64 1
  call void @dlaset_(ptr noundef @.str, ptr noundef %57, ptr noundef %57, ptr noundef @c_b5, ptr noundef @c_b5, ptr noundef %1125, ptr noundef %57)
  %1126 = load ptr, ptr %32, align 8, !tbaa !5
  %1127 = getelementptr inbounds double, ptr %1126, i64 1
  store double 1.000000e+00, ptr %1127, align 8, !tbaa !11
  %1128 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  store double 1.000000e+00, ptr %1128, align 16, !tbaa !11
  %1129 = load ptr, ptr %33, align 8, !tbaa !5
  %1130 = load i32, ptr %1129, align 4, !tbaa !9
  %1131 = load i32, ptr %57, align 4, !tbaa !9
  %1132 = load i32, ptr %57, align 4, !tbaa !9
  %1133 = mul nsw i32 %1131, %1132
  %1134 = sub nsw i32 %1130, %1133
  %1135 = sub nsw i32 %1134, 2
  store i32 %1135, ptr %48, align 4, !tbaa !9
  %1136 = load ptr, ptr %31, align 8, !tbaa !5
  %1137 = load i32, ptr %1136, align 4, !tbaa !9
  %1138 = icmp sgt i32 %1137, 1
  br i1 %1138, label %1139, label %1203

1139:                                             ; preds = %1092
  %1140 = load ptr, ptr %21, align 8, !tbaa !5
  %1141 = load ptr, ptr %29, align 8, !tbaa !5
  %1142 = load i32, ptr %1141, align 4, !tbaa !9
  %1143 = load ptr, ptr %29, align 8, !tbaa !5
  %1144 = load i32, ptr %1143, align 4, !tbaa !9
  %1145 = load i32, ptr %35, align 4, !tbaa !9
  %1146 = mul nsw i32 %1144, %1145
  %1147 = add nsw i32 %1142, %1146
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds double, ptr %1140, i64 %1148
  %1150 = load ptr, ptr %22, align 8, !tbaa !5
  %1151 = load ptr, ptr %23, align 8, !tbaa !5
  %1152 = load ptr, ptr %29, align 8, !tbaa !5
  %1153 = load i32, ptr %1152, align 4, !tbaa !9
  %1154 = load ptr, ptr %29, align 8, !tbaa !5
  %1155 = load i32, ptr %1154, align 4, !tbaa !9
  %1156 = load i32, ptr %37, align 4, !tbaa !9
  %1157 = mul nsw i32 %1155, %1156
  %1158 = add nsw i32 %1153, %1157
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds double, ptr %1151, i64 %1159
  %1161 = load ptr, ptr %24, align 8, !tbaa !5
  %1162 = getelementptr inbounds [2 x double], ptr %70, i64 0, i64 0
  %1163 = getelementptr inbounds [2 x double], ptr %69, i64 0, i64 0
  %1164 = getelementptr inbounds [2 x double], ptr %68, i64 0, i64 0
  %1165 = load ptr, ptr %32, align 8, !tbaa !5
  %1166 = getelementptr inbounds double, ptr %1165, i64 1
  %1167 = load ptr, ptr %32, align 8, !tbaa !5
  %1168 = getelementptr inbounds double, ptr %1167, i64 2
  %1169 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1170 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  call void @dlagv2_(ptr noundef %1149, ptr noundef %1150, ptr noundef %1160, ptr noundef %1161, ptr noundef %1162, ptr noundef %1163, ptr noundef %1164, ptr noundef %1166, ptr noundef %1168, ptr noundef %1169, ptr noundef %1170)
  %1171 = load ptr, ptr %32, align 8, !tbaa !5
  %1172 = getelementptr inbounds double, ptr %1171, i64 2
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  %1174 = fneg double %1173
  %1175 = load ptr, ptr %32, align 8, !tbaa !5
  %1176 = load i32, ptr %57, align 4, !tbaa !9
  %1177 = add nsw i32 %1176, 1
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds double, ptr %1175, i64 %1178
  store double %1174, ptr %1179, align 8, !tbaa !11
  %1180 = load ptr, ptr %32, align 8, !tbaa !5
  %1181 = getelementptr inbounds double, ptr %1180, i64 1
  %1182 = load double, ptr %1181, align 8, !tbaa !11
  %1183 = load ptr, ptr %32, align 8, !tbaa !5
  %1184 = load i32, ptr %57, align 4, !tbaa !9
  %1185 = add nsw i32 %1184, 2
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %1183, i64 %1186
  store double %1182, ptr %1187, align 8, !tbaa !11
  %1188 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 0
  %1189 = load double, ptr %1188, align 16, !tbaa !11
  %1190 = load ptr, ptr %31, align 8, !tbaa !5
  %1191 = load i32, ptr %1190, align 4, !tbaa !9
  %1192 = load ptr, ptr %31, align 8, !tbaa !5
  %1193 = load i32, ptr %1192, align 4, !tbaa !9
  %1194 = shl i32 %1193, 2
  %1195 = add nsw i32 %1191, %1194
  %1196 = sub nsw i32 %1195, 5
  %1197 = sext i32 %1196 to i64
  %1198 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %1197
  store double %1189, ptr %1198, align 8, !tbaa !11
  %1199 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 1
  %1200 = load double, ptr %1199, align 8, !tbaa !11
  %1201 = fneg double %1200
  %1202 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 4
  store double %1201, ptr %1202, align 16, !tbaa !11
  br label %1203

1203:                                             ; preds = %1139, %1092
  %1204 = load ptr, ptr %32, align 8, !tbaa !5
  %1205 = load i32, ptr %57, align 4, !tbaa !9
  %1206 = load i32, ptr %57, align 4, !tbaa !9
  %1207 = mul nsw i32 %1205, %1206
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds double, ptr %1204, i64 %1208
  store double 1.000000e+00, ptr %1209, align 8, !tbaa !11
  %1210 = load i32, ptr %57, align 4, !tbaa !9
  %1211 = load i32, ptr %57, align 4, !tbaa !9
  %1212 = shl i32 %1211, 2
  %1213 = add nsw i32 %1210, %1212
  %1214 = sub nsw i32 %1213, 5
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %1215
  store double 1.000000e+00, ptr %1216, align 8, !tbaa !11
  %1217 = load ptr, ptr %30, align 8, !tbaa !5
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = icmp sgt i32 %1218, 1
  br i1 %1219, label %1220, label %1380

1220:                                             ; preds = %1203
  %1221 = load ptr, ptr %21, align 8, !tbaa !5
  %1222 = load ptr, ptr %29, align 8, !tbaa !5
  %1223 = load i32, ptr %1222, align 4, !tbaa !9
  %1224 = load ptr, ptr %31, align 8, !tbaa !5
  %1225 = load i32, ptr %1224, align 4, !tbaa !9
  %1226 = add nsw i32 %1223, %1225
  %1227 = load ptr, ptr %29, align 8, !tbaa !5
  %1228 = load i32, ptr %1227, align 4, !tbaa !9
  %1229 = load ptr, ptr %31, align 8, !tbaa !5
  %1230 = load i32, ptr %1229, align 4, !tbaa !9
  %1231 = add nsw i32 %1228, %1230
  %1232 = load i32, ptr %35, align 4, !tbaa !9
  %1233 = mul nsw i32 %1231, %1232
  %1234 = add nsw i32 %1226, %1233
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds double, ptr %1221, i64 %1235
  %1237 = load ptr, ptr %22, align 8, !tbaa !5
  %1238 = load ptr, ptr %23, align 8, !tbaa !5
  %1239 = load ptr, ptr %29, align 8, !tbaa !5
  %1240 = load i32, ptr %1239, align 4, !tbaa !9
  %1241 = load ptr, ptr %31, align 8, !tbaa !5
  %1242 = load i32, ptr %1241, align 4, !tbaa !9
  %1243 = add nsw i32 %1240, %1242
  %1244 = load ptr, ptr %29, align 8, !tbaa !5
  %1245 = load i32, ptr %1244, align 4, !tbaa !9
  %1246 = load ptr, ptr %31, align 8, !tbaa !5
  %1247 = load i32, ptr %1246, align 4, !tbaa !9
  %1248 = add nsw i32 %1245, %1247
  %1249 = load i32, ptr %37, align 4, !tbaa !9
  %1250 = mul nsw i32 %1248, %1249
  %1251 = add nsw i32 %1243, %1250
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds double, ptr %1238, i64 %1252
  %1254 = load ptr, ptr %24, align 8, !tbaa !5
  %1255 = getelementptr inbounds [4 x double], ptr %51, i64 0, i64 0
  %1256 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1257 = load ptr, ptr %32, align 8, !tbaa !5
  %1258 = load i32, ptr %57, align 4, !tbaa !9
  %1259 = load i32, ptr %57, align 4, !tbaa !9
  %1260 = mul nsw i32 %1258, %1259
  %1261 = add nsw i32 %1260, 1
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds double, ptr %1257, i64 %1262
  %1264 = load ptr, ptr %32, align 8, !tbaa !5
  %1265 = load ptr, ptr %31, align 8, !tbaa !5
  %1266 = load i32, ptr %1265, align 4, !tbaa !9
  %1267 = load i32, ptr %57, align 4, !tbaa !9
  %1268 = mul nsw i32 %1266, %1267
  %1269 = load ptr, ptr %31, align 8, !tbaa !5
  %1270 = load i32, ptr %1269, align 4, !tbaa !9
  %1271 = add nsw i32 %1268, %1270
  %1272 = add nsw i32 %1271, 1
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds double, ptr %1264, i64 %1273
  %1275 = load ptr, ptr %32, align 8, !tbaa !5
  %1276 = load ptr, ptr %31, align 8, !tbaa !5
  %1277 = load i32, ptr %1276, align 4, !tbaa !9
  %1278 = load i32, ptr %57, align 4, !tbaa !9
  %1279 = mul nsw i32 %1277, %1278
  %1280 = load ptr, ptr %31, align 8, !tbaa !5
  %1281 = load i32, ptr %1280, align 4, !tbaa !9
  %1282 = add nsw i32 %1279, %1281
  %1283 = add nsw i32 %1282, 2
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds double, ptr %1275, i64 %1284
  %1286 = load ptr, ptr %31, align 8, !tbaa !5
  %1287 = load i32, ptr %1286, align 4, !tbaa !9
  %1288 = add nsw i32 %1287, 1
  %1289 = load ptr, ptr %31, align 8, !tbaa !5
  %1290 = load i32, ptr %1289, align 4, !tbaa !9
  %1291 = add nsw i32 %1290, 1
  %1292 = shl i32 %1291, 2
  %1293 = add nsw i32 %1288, %1292
  %1294 = sub nsw i32 %1293, 5
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %1295
  %1297 = load i32, ptr %57, align 4, !tbaa !9
  %1298 = load i32, ptr %57, align 4, !tbaa !9
  %1299 = sub nsw i32 %1298, 1
  %1300 = shl i32 %1299, 2
  %1301 = add nsw i32 %1297, %1300
  %1302 = sub nsw i32 %1301, 5
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %1303
  call void @dlagv2_(ptr noundef %1236, ptr noundef %1237, ptr noundef %1253, ptr noundef %1254, ptr noundef %1255, ptr noundef %1256, ptr noundef %1263, ptr noundef %1274, ptr noundef %1285, ptr noundef %1296, ptr noundef %1304)
  %1305 = load ptr, ptr %32, align 8, !tbaa !5
  %1306 = load ptr, ptr %31, align 8, !tbaa !5
  %1307 = load i32, ptr %1306, align 4, !tbaa !9
  %1308 = load i32, ptr %57, align 4, !tbaa !9
  %1309 = mul nsw i32 %1307, %1308
  %1310 = load ptr, ptr %31, align 8, !tbaa !5
  %1311 = load i32, ptr %1310, align 4, !tbaa !9
  %1312 = add nsw i32 %1309, %1311
  %1313 = add nsw i32 %1312, 1
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds double, ptr %1305, i64 %1314
  %1316 = load double, ptr %1315, align 8, !tbaa !11
  %1317 = load ptr, ptr %32, align 8, !tbaa !5
  %1318 = load i32, ptr %57, align 4, !tbaa !9
  %1319 = load i32, ptr %57, align 4, !tbaa !9
  %1320 = mul nsw i32 %1318, %1319
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds double, ptr %1317, i64 %1321
  store double %1316, ptr %1322, align 8, !tbaa !11
  %1323 = load ptr, ptr %32, align 8, !tbaa !5
  %1324 = load ptr, ptr %31, align 8, !tbaa !5
  %1325 = load i32, ptr %1324, align 4, !tbaa !9
  %1326 = load i32, ptr %57, align 4, !tbaa !9
  %1327 = mul nsw i32 %1325, %1326
  %1328 = load ptr, ptr %31, align 8, !tbaa !5
  %1329 = load i32, ptr %1328, align 4, !tbaa !9
  %1330 = add nsw i32 %1327, %1329
  %1331 = add nsw i32 %1330, 2
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds double, ptr %1323, i64 %1332
  %1334 = load double, ptr %1333, align 8, !tbaa !11
  %1335 = fneg double %1334
  %1336 = load ptr, ptr %32, align 8, !tbaa !5
  %1337 = load i32, ptr %57, align 4, !tbaa !9
  %1338 = load i32, ptr %57, align 4, !tbaa !9
  %1339 = mul nsw i32 %1337, %1338
  %1340 = sub nsw i32 %1339, 1
  %1341 = sext i32 %1340 to i64
  %1342 = getelementptr inbounds double, ptr %1336, i64 %1341
  store double %1335, ptr %1342, align 8, !tbaa !11
  %1343 = load ptr, ptr %31, align 8, !tbaa !5
  %1344 = load i32, ptr %1343, align 4, !tbaa !9
  %1345 = add nsw i32 %1344, 1
  %1346 = load ptr, ptr %31, align 8, !tbaa !5
  %1347 = load i32, ptr %1346, align 4, !tbaa !9
  %1348 = add nsw i32 %1347, 1
  %1349 = shl i32 %1348, 2
  %1350 = add nsw i32 %1345, %1349
  %1351 = sub nsw i32 %1350, 5
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %1352
  %1354 = load double, ptr %1353, align 8, !tbaa !11
  %1355 = load i32, ptr %57, align 4, !tbaa !9
  %1356 = load i32, ptr %57, align 4, !tbaa !9
  %1357 = shl i32 %1356, 2
  %1358 = add nsw i32 %1355, %1357
  %1359 = sub nsw i32 %1358, 5
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %1360
  store double %1354, ptr %1361, align 8, !tbaa !11
  %1362 = load i32, ptr %57, align 4, !tbaa !9
  %1363 = load i32, ptr %57, align 4, !tbaa !9
  %1364 = sub nsw i32 %1363, 1
  %1365 = shl i32 %1364, 2
  %1366 = add nsw i32 %1362, %1365
  %1367 = sub nsw i32 %1366, 5
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %1368
  %1370 = load double, ptr %1369, align 8, !tbaa !11
  %1371 = fneg double %1370
  %1372 = load i32, ptr %57, align 4, !tbaa !9
  %1373 = sub nsw i32 %1372, 1
  %1374 = load i32, ptr %57, align 4, !tbaa !9
  %1375 = shl i32 %1374, 2
  %1376 = add nsw i32 %1373, %1375
  %1377 = sub nsw i32 %1376, 5
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds [16 x double], ptr %59, i64 0, i64 %1378
  store double %1371, ptr %1379, align 8, !tbaa !11
  br label %1380

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

1611:                                             ; preds = %1380
  %1612 = load ptr, ptr %20, align 8, !tbaa !5
  %1613 = load ptr, ptr %25, align 8, !tbaa !5
  %1614 = load ptr, ptr %29, align 8, !tbaa !5
  %1615 = load i32, ptr %1614, align 4, !tbaa !9
  %1616 = load i32, ptr %39, align 4, !tbaa !9
  %1617 = mul nsw i32 %1615, %1616
  %1618 = add nsw i32 %1617, 1
  %1619 = sext i32 %1618 to i64
  %1620 = getelementptr inbounds double, ptr %1613, i64 %1619
  %1621 = load ptr, ptr %26, align 8, !tbaa !5
  %1622 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %1623 = load ptr, ptr %32, align 8, !tbaa !5
  %1624 = getelementptr inbounds double, ptr %1623, i64 1
  %1625 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %1612, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %1620, ptr noundef %1621, ptr noundef %1622, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1624, ptr noundef %1625)
  %1626 = load ptr, ptr %20, align 8, !tbaa !5
  %1627 = load ptr, ptr %32, align 8, !tbaa !5
  %1628 = getelementptr inbounds double, ptr %1627, i64 1
  %1629 = load ptr, ptr %20, align 8, !tbaa !5
  %1630 = load ptr, ptr %25, align 8, !tbaa !5
  %1631 = load ptr, ptr %29, align 8, !tbaa !5
  %1632 = load i32, ptr %1631, align 4, !tbaa !9
  %1633 = load i32, ptr %39, align 4, !tbaa !9
  %1634 = mul nsw i32 %1632, %1633
  %1635 = add nsw i32 %1634, 1
  %1636 = sext i32 %1635 to i64
  %1637 = getelementptr inbounds double, ptr %1630, i64 %1636
  %1638 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str, ptr noundef %1626, ptr noundef %57, ptr noundef %1628, ptr noundef %1629, ptr noundef %1637, ptr noundef %1638)
  br label %1639

1639:                                             ; preds = %1611, %1380
  %1640 = load ptr, ptr %19, align 8, !tbaa !5
  %1641 = load i32, ptr %1640, align 4, !tbaa !9
  %1642 = icmp ne i32 %1641, 0
  br i1 %1642, label %1643, label %1671

1643:                                             ; preds = %1639
  %1644 = load ptr, ptr %20, align 8, !tbaa !5
  %1645 = load ptr, ptr %27, align 8, !tbaa !5
  %1646 = load ptr, ptr %29, align 8, !tbaa !5
  %1647 = load i32, ptr %1646, align 4, !tbaa !9
  %1648 = load i32, ptr %41, align 4, !tbaa !9
  %1649 = mul nsw i32 %1647, %1648
  %1650 = add nsw i32 %1649, 1
  %1651 = sext i32 %1650 to i64
  %1652 = getelementptr inbounds double, ptr %1645, i64 %1651
  %1653 = load ptr, ptr %28, align 8, !tbaa !5
  %1654 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %1655 = load ptr, ptr %32, align 8, !tbaa !5
  %1656 = getelementptr inbounds double, ptr %1655, i64 1
  %1657 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %1644, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %1652, ptr noundef %1653, ptr noundef %1654, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1656, ptr noundef %1657)
  %1658 = load ptr, ptr %20, align 8, !tbaa !5
  %1659 = load ptr, ptr %32, align 8, !tbaa !5
  %1660 = getelementptr inbounds double, ptr %1659, i64 1
  %1661 = load ptr, ptr %20, align 8, !tbaa !5
  %1662 = load ptr, ptr %27, align 8, !tbaa !5
  %1663 = load ptr, ptr %29, align 8, !tbaa !5
  %1664 = load i32, ptr %1663, align 4, !tbaa !9
  %1665 = load i32, ptr %41, align 4, !tbaa !9
  %1666 = mul nsw i32 %1664, %1665
  %1667 = add nsw i32 %1666, 1
  %1668 = sext i32 %1667 to i64
  %1669 = getelementptr inbounds double, ptr %1662, i64 %1668
  %1670 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str, ptr noundef %1658, ptr noundef %57, ptr noundef %1660, ptr noundef %1661, ptr noundef %1669, ptr noundef %1670)
  br label %1671

1671:                                             ; preds = %1643, %1639
  %1672 = load ptr, ptr %29, align 8, !tbaa !5
  %1673 = load i32, ptr %1672, align 4, !tbaa !9
  %1674 = load i32, ptr %57, align 4, !tbaa !9
  %1675 = add nsw i32 %1673, %1674
  store i32 %1675, ptr %56, align 4, !tbaa !9
  %1676 = load i32, ptr %56, align 4, !tbaa !9
  %1677 = load ptr, ptr %20, align 8, !tbaa !5
  %1678 = load i32, ptr %1677, align 4, !tbaa !9
  %1679 = icmp sle i32 %1676, %1678
  br i1 %1679, label %1680, label %1751

1680:                                             ; preds = %1671
  %1681 = load ptr, ptr %20, align 8, !tbaa !5
  %1682 = load i32, ptr %1681, align 4, !tbaa !9
  %1683 = load i32, ptr %56, align 4, !tbaa !9
  %1684 = sub nsw i32 %1682, %1683
  %1685 = add nsw i32 %1684, 1
  store i32 %1685, ptr %43, align 4, !tbaa !9
  %1686 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %1687 = load ptr, ptr %21, align 8, !tbaa !5
  %1688 = load ptr, ptr %29, align 8, !tbaa !5
  %1689 = load i32, ptr %1688, align 4, !tbaa !9
  %1690 = load i32, ptr %56, align 4, !tbaa !9
  %1691 = load i32, ptr %35, align 4, !tbaa !9
  %1692 = mul nsw i32 %1690, %1691
  %1693 = add nsw i32 %1689, %1692
  %1694 = sext i32 %1693 to i64
  %1695 = getelementptr inbounds double, ptr %1687, i64 %1694
  %1696 = load ptr, ptr %22, align 8, !tbaa !5
  %1697 = load ptr, ptr %32, align 8, !tbaa !5
  %1698 = getelementptr inbounds double, ptr %1697, i64 1
  call void @dgemm_(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %57, ptr noundef %43, ptr noundef %57, ptr noundef @c_b42, ptr noundef %1686, ptr noundef @c__4, ptr noundef %1695, ptr noundef %1696, ptr noundef @c_b5, ptr noundef %1698, ptr noundef %57)
  %1699 = load ptr, ptr %20, align 8, !tbaa !5
  %1700 = load i32, ptr %1699, align 4, !tbaa !9
  %1701 = load i32, ptr %56, align 4, !tbaa !9
  %1702 = sub nsw i32 %1700, %1701
  %1703 = add nsw i32 %1702, 1
  store i32 %1703, ptr %43, align 4, !tbaa !9
  %1704 = load ptr, ptr %32, align 8, !tbaa !5
  %1705 = getelementptr inbounds double, ptr %1704, i64 1
  %1706 = load ptr, ptr %21, align 8, !tbaa !5
  %1707 = load ptr, ptr %29, align 8, !tbaa !5
  %1708 = load i32, ptr %1707, align 4, !tbaa !9
  %1709 = load i32, ptr %56, align 4, !tbaa !9
  %1710 = load i32, ptr %35, align 4, !tbaa !9
  %1711 = mul nsw i32 %1709, %1710
  %1712 = add nsw i32 %1708, %1711
  %1713 = sext i32 %1712 to i64
  %1714 = getelementptr inbounds double, ptr %1706, i64 %1713
  %1715 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %43, ptr noundef %1705, ptr noundef %57, ptr noundef %1714, ptr noundef %1715)
  %1716 = load ptr, ptr %20, align 8, !tbaa !5
  %1717 = load i32, ptr %1716, align 4, !tbaa !9
  %1718 = load i32, ptr %56, align 4, !tbaa !9
  %1719 = sub nsw i32 %1717, %1718
  %1720 = add nsw i32 %1719, 1
  store i32 %1720, ptr %43, align 4, !tbaa !9
  %1721 = getelementptr inbounds [16 x double], ptr %73, i64 0, i64 0
  %1722 = load ptr, ptr %23, align 8, !tbaa !5
  %1723 = load ptr, ptr %29, align 8, !tbaa !5
  %1724 = load i32, ptr %1723, align 4, !tbaa !9
  %1725 = load i32, ptr %56, align 4, !tbaa !9
  %1726 = load i32, ptr %37, align 4, !tbaa !9
  %1727 = mul nsw i32 %1725, %1726
  %1728 = add nsw i32 %1724, %1727
  %1729 = sext i32 %1728 to i64
  %1730 = getelementptr inbounds double, ptr %1722, i64 %1729
  %1731 = load ptr, ptr %24, align 8, !tbaa !5
  %1732 = load ptr, ptr %32, align 8, !tbaa !5
  %1733 = getelementptr inbounds double, ptr %1732, i64 1
  call void @dgemm_(ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %57, ptr noundef %43, ptr noundef %57, ptr noundef @c_b42, ptr noundef %1721, ptr noundef @c__4, ptr noundef %1730, ptr noundef %1731, ptr noundef @c_b5, ptr noundef %1733, ptr noundef %57)
  %1734 = load ptr, ptr %20, align 8, !tbaa !5
  %1735 = load i32, ptr %1734, align 4, !tbaa !9
  %1736 = load i32, ptr %56, align 4, !tbaa !9
  %1737 = sub nsw i32 %1735, %1736
  %1738 = add nsw i32 %1737, 1
  store i32 %1738, ptr %43, align 4, !tbaa !9
  %1739 = load ptr, ptr %32, align 8, !tbaa !5
  %1740 = getelementptr inbounds double, ptr %1739, i64 1
  %1741 = load ptr, ptr %23, align 8, !tbaa !5
  %1742 = load ptr, ptr %29, align 8, !tbaa !5
  %1743 = load i32, ptr %1742, align 4, !tbaa !9
  %1744 = load i32, ptr %56, align 4, !tbaa !9
  %1745 = load i32, ptr %37, align 4, !tbaa !9
  %1746 = mul nsw i32 %1744, %1745
  %1747 = add nsw i32 %1743, %1746
  %1748 = sext i32 %1747 to i64
  %1749 = getelementptr inbounds double, ptr %1741, i64 %1748
  %1750 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str, ptr noundef %57, ptr noundef %43, ptr noundef %1740, ptr noundef %57, ptr noundef %1749, ptr noundef %1750)
  br label %1751

1751:                                             ; preds = %1680, %1671
  %1752 = load ptr, ptr %29, align 8, !tbaa !5
  %1753 = load i32, ptr %1752, align 4, !tbaa !9
  %1754 = sub nsw i32 %1753, 1
  store i32 %1754, ptr %56, align 4, !tbaa !9
  %1755 = load i32, ptr %56, align 4, !tbaa !9
  %1756 = icmp sgt i32 %1755, 0
  br i1 %1756, label %1757, label %1804

1757:                                             ; preds = %1751
  %1758 = load ptr, ptr %21, align 8, !tbaa !5
  %1759 = load ptr, ptr %29, align 8, !tbaa !5
  %1760 = load i32, ptr %1759, align 4, !tbaa !9
  %1761 = load i32, ptr %35, align 4, !tbaa !9
  %1762 = mul nsw i32 %1760, %1761
  %1763 = add nsw i32 %1762, 1
  %1764 = sext i32 %1763 to i64
  %1765 = getelementptr inbounds double, ptr %1758, i64 %1764
  %1766 = load ptr, ptr %22, align 8, !tbaa !5
  %1767 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %1768 = load ptr, ptr %32, align 8, !tbaa !5
  %1769 = getelementptr inbounds double, ptr %1768, i64 1
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %56, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %1765, ptr noundef %1766, ptr noundef %1767, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1769, ptr noundef %56)
  %1770 = load ptr, ptr %32, align 8, !tbaa !5
  %1771 = getelementptr inbounds double, ptr %1770, i64 1
  %1772 = load ptr, ptr %21, align 8, !tbaa !5
  %1773 = load ptr, ptr %29, align 8, !tbaa !5
  %1774 = load i32, ptr %1773, align 4, !tbaa !9
  %1775 = load i32, ptr %35, align 4, !tbaa !9
  %1776 = mul nsw i32 %1774, %1775
  %1777 = add nsw i32 %1776, 1
  %1778 = sext i32 %1777 to i64
  %1779 = getelementptr inbounds double, ptr %1772, i64 %1778
  %1780 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str, ptr noundef %56, ptr noundef %57, ptr noundef %1771, ptr noundef %56, ptr noundef %1779, ptr noundef %1780)
  %1781 = load ptr, ptr %23, align 8, !tbaa !5
  %1782 = load ptr, ptr %29, align 8, !tbaa !5
  %1783 = load i32, ptr %1782, align 4, !tbaa !9
  %1784 = load i32, ptr %37, align 4, !tbaa !9
  %1785 = mul nsw i32 %1783, %1784
  %1786 = add nsw i32 %1785, 1
  %1787 = sext i32 %1786 to i64
  %1788 = getelementptr inbounds double, ptr %1781, i64 %1787
  %1789 = load ptr, ptr %24, align 8, !tbaa !5
  %1790 = getelementptr inbounds [16 x double], ptr %75, i64 0, i64 0
  %1791 = load ptr, ptr %32, align 8, !tbaa !5
  %1792 = getelementptr inbounds double, ptr %1791, i64 1
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %56, ptr noundef %57, ptr noundef %57, ptr noundef @c_b42, ptr noundef %1788, ptr noundef %1789, ptr noundef %1790, ptr noundef @c__4, ptr noundef @c_b5, ptr noundef %1792, ptr noundef %56)
  %1793 = load ptr, ptr %32, align 8, !tbaa !5
  %1794 = getelementptr inbounds double, ptr %1793, i64 1
  %1795 = load ptr, ptr %23, align 8, !tbaa !5
  %1796 = load ptr, ptr %29, align 8, !tbaa !5
  %1797 = load i32, ptr %1796, align 4, !tbaa !9
  %1798 = load i32, ptr %37, align 4, !tbaa !9
  %1799 = mul nsw i32 %1797, %1798
  %1800 = add nsw i32 %1799, 1
  %1801 = sext i32 %1800 to i64
  %1802 = getelementptr inbounds double, ptr %1795, i64 %1801
  %1803 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str, ptr noundef %56, ptr noundef %57, ptr noundef %1794, ptr noundef %56, ptr noundef %1802, ptr noundef %1803)
  br label %1804

1804:                                             ; preds = %1757, %1751
  store i32 1, ptr %82, align 4
  br label %1807

1805:                                             ; preds = %1091, %989, %942, %926, %893, %884, %875, %843, %834, %800, %791, %506, %410
  %1806 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 1, ptr %1806, align 4, !tbaa !9
  store i32 1, ptr %82, align 4
  br label %1807

1807:                                             ; preds = %1805, %1804, %685, %215, %153, %137
  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 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 128, 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 16, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 128, 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 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) #2

declare void @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 void @dlartg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @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 void @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 void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

declare void @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 void @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 void @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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}


; 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 i32, align 4
@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 i32, align 4
@c__2 = external hidden global i32, align 4
@.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 i32, align 4
@.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 void @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 i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca [4 x double], align 16
  %23 = alloca double, align 8
  %24 = alloca [4 x double], align 16
  %25 = alloca [16 x double], align 16
  %26 = alloca [16 x double], align 16
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca [16 x double], align 16
  %32 = alloca [16 x double], align 16
  %33 = alloca double, align 8
  %34 = alloca [16 x double], align 16
  %35 = alloca i32, align 4
  %36 = alloca [16 x double], align 16
  %37 = alloca [4 x i32], align 16
  %38 = alloca [2 x double], align 16
  %39 = alloca [2 x double], align 16
  %40 = alloca [2 x double], align 16
  %41 = alloca [16 x double], align 16
  %42 = alloca double, align 8
  %43 = alloca [16 x double], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %43) #6
  %44 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %44, -1
  %45 = sext i32 %narrow to i64
  %46 = getelementptr inbounds double, ptr %3, i64 %45
  %47 = load i32, ptr %6, align 4, !tbaa !5
  %narrow473 = xor i32 %47, -1
  %48 = sext i32 %narrow473 to i64
  %49 = getelementptr inbounds double, ptr %5, i64 %48
  %50 = load i32, ptr %8, align 4, !tbaa !5
  %narrow474 = xor i32 %50, -1
  %51 = sext i32 %narrow474 to i64
  %52 = getelementptr inbounds double, ptr %7, i64 %51
  %53 = load i32, ptr %10, align 4, !tbaa !5
  %narrow475 = xor i32 %53, -1
  %54 = sext i32 %narrow475 to i64
  %55 = getelementptr inbounds double, ptr %9, i64 %54
  %56 = getelementptr inbounds i8, ptr %14, i64 -8
  store i32 0, ptr %16, align 4, !tbaa !5
  %57 = load i32, ptr %2, align 4, !tbaa !5
  %58 = icmp slt i32 %57, 2
  br i1 %58, label %739, label %59

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

62:                                               ; preds = %59
  %63 = load i32, ptr %13, align 4, !tbaa !5
  %64 = icmp slt i32 %63, 1
  %65 = icmp ugt i32 %60, %57
  %or.cond497 = or i1 %65, %64
  br i1 %or.cond497, label %739, label %66

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

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

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

84:                                               ; preds = %70
  call void @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 %41, ptr noundef nonnull @c__4) #6
  call void @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 %43, ptr noundef nonnull @c__4) #6
  %85 = load i32, ptr %11, align 4, !tbaa !5
  %86 = add i32 %44, 1
  %87 = mul i32 %85, %86
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds double, ptr %46, i64 %88
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef %89, ptr noundef nonnull %4, ptr noundef nonnull %31, ptr noundef nonnull @c__4) #6
  %90 = load i32, ptr %11, align 4, !tbaa !5
  %91 = add i32 %47, 1
  %92 = mul i32 %90, %91
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds double, ptr %49, i64 %93
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef %94, ptr noundef nonnull %6, ptr noundef nonnull %32, ptr noundef nonnull @c__4) #6
  %95 = call double @dlamch_(ptr noundef nonnull @.str.1) #6
  %96 = call double @dlamch_(ptr noundef nonnull @.str.2) #6
  %97 = fdiv double %96, %95
  store double 0.000000e+00, ptr %42, align 8, !tbaa !9
  store double 1.000000e+00, ptr %23, align 8, !tbaa !9
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %30) #6
  %98 = load i32, ptr %30, align 4, !tbaa !5
  %99 = mul nsw i32 %98, %98
  store i32 %99, ptr %18, align 4, !tbaa !5
  call void @dlassq_(ptr noundef nonnull %18, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %23) #6
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %30) #6
  %100 = load i32, ptr %30, align 4, !tbaa !5
  %101 = mul nsw i32 %100, %100
  store i32 %101, ptr %18, align 4, !tbaa !5
  call void @dlassq_(ptr noundef nonnull %18, ptr noundef %14, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %23) #6
  %102 = load double, ptr %42, align 8, !tbaa !9
  %103 = load double, ptr %23, align 8, !tbaa !9
  %104 = call double @sqrt(double noundef %103) #6
  %105 = fmul double %102, %104
  %106 = fmul double %95, 2.000000e+01
  %107 = fmul double %106, %105
  %108 = fcmp oge double %107, %97
  %109 = select i1 %108, double %107, double %97
  %110 = load i32, ptr %30, align 4, !tbaa !5
  %111 = icmp eq i32 %110, 2
  br i1 %111, label %112, label %279

112:                                              ; preds = %84
  %113 = getelementptr inbounds i8, ptr %31, i64 40
  %114 = load double, ptr %113, align 8
  %115 = load double, ptr %32, align 16, !tbaa !9
  %116 = getelementptr inbounds i8, ptr %32, i64 40
  %117 = load double, ptr %116, align 8
  %118 = load double, ptr %31, align 16, !tbaa !9
  %119 = fneg double %117
  %120 = fmul double %118, %119
  %121 = call double @llvm.fmuladd.f64(double %114, double %115, double %120)
  store double %121, ptr %27, align 8, !tbaa !9
  %122 = getelementptr inbounds i8, ptr %32, i64 32
  %123 = load double, ptr %122, align 16, !tbaa !9
  %124 = getelementptr inbounds i8, ptr %31, i64 32
  %125 = load double, ptr %124, align 16, !tbaa !9
  %126 = fmul double %125, %119
  %127 = call double @llvm.fmuladd.f64(double %114, double %123, double %126)
  store double %127, ptr %28, align 8, !tbaa !9
  %128 = fcmp oge double %117, 0.000000e+00
  %129 = select i1 %128, double %117, double %119
  %130 = fcmp oge double %114, 0.000000e+00
  %131 = fneg double %114
  %132 = select i1 %130, double %114, double %131
  %133 = getelementptr inbounds i8, ptr %43, i64 32
  call void @dlartg_(ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %133, ptr noundef nonnull %43, ptr noundef nonnull %20) #6
  %134 = load double, ptr %133, align 16, !tbaa !9
  %135 = fneg double %134
  %136 = getelementptr inbounds i8, ptr %43, i64 8
  store double %135, ptr %136, align 8, !tbaa !9
  %137 = load double, ptr %43, align 16, !tbaa !9
  %138 = getelementptr inbounds i8, ptr %43, i64 40
  store double %137, ptr %138, align 8, !tbaa !9
  call void @drot_(ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull @c__1, ptr noundef nonnull %124, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %136) #6
  call void @drot_(ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %122, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %136) #6
  %139 = fcmp ult double %132, %129
  %140 = getelementptr inbounds i8, ptr %41, i64 8
  %. = select i1 %139, ptr %32, ptr %31
  %..sroa.sel.v = select i1 %139, ptr %32, ptr %31
  %..sroa.sel = getelementptr inbounds i8, ptr %..sroa.sel.v, i64 8
  call void @dlartg_(ptr noundef nonnull %., ptr noundef nonnull %..sroa.sel, ptr noundef nonnull %41, ptr noundef nonnull %140, ptr noundef nonnull %20) #6
  %141 = getelementptr inbounds i8, ptr %31, i64 8
  %142 = getelementptr inbounds i8, ptr %41, i64 8
  call void @drot_(ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef nonnull %141, ptr noundef nonnull @c__4, ptr noundef nonnull %41, ptr noundef nonnull %142) #6
  %143 = getelementptr inbounds i8, ptr %32, i64 8
  call void @drot_(ptr noundef nonnull @c__2, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull %143, ptr noundef nonnull @c__4, ptr noundef nonnull %41, ptr noundef nonnull %142) #6
  %144 = load double, ptr %41, align 16, !tbaa !9
  %145 = getelementptr inbounds i8, ptr %41, i64 40
  store double %144, ptr %145, align 8, !tbaa !9
  %146 = load double, ptr %142, align 8, !tbaa !9
  %147 = fneg double %146
  %148 = getelementptr inbounds i8, ptr %41, i64 32
  store double %147, ptr %148, align 16, !tbaa !9
  %149 = load double, ptr %141, align 8
  %150 = fcmp oge double %149, 0.000000e+00
  %151 = fneg double %149
  %152 = select i1 %150, double %149, double %151
  %153 = load double, ptr %143, align 8
  %154 = fcmp oge double %153, 0.000000e+00
  %155 = fneg double %153
  %156 = select i1 %154, double %153, double %155
  %157 = fadd double %152, %156
  %158 = fcmp ugt double %157, %109
  br i1 %158, label %738, label %159

159:                                              ; preds = %112
  %160 = load i32, ptr %11, align 4, !tbaa !5
  %161 = mul i32 %160, %86
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds double, ptr %46, i64 %162
  %164 = load i32, ptr %30, align 4, !tbaa !5
  %165 = mul nsw i32 %164, %164
  %166 = zext nneg i32 %165 to i64
  %167 = getelementptr inbounds double, ptr %56, i64 %166
  %168 = getelementptr inbounds i8, ptr %167, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef %163, ptr noundef nonnull %4, ptr noundef nonnull %168, ptr noundef nonnull %30) #6
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %30) #6
  %169 = load i32, ptr %30, align 4, !tbaa !5
  %170 = mul nsw i32 %169, %169
  %171 = zext nneg i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %56, i64 %171
  %173 = getelementptr inbounds i8, ptr %172, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b48, ptr noundef %14, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b42, ptr noundef nonnull %173, ptr noundef nonnull %30) #6
  store double 0.000000e+00, ptr %42, align 8, !tbaa !9
  store double 1.000000e+00, ptr %23, align 8, !tbaa !9
  %174 = load i32, ptr %30, align 4, !tbaa !5
  %175 = mul nsw i32 %174, %174
  store i32 %175, ptr %18, align 4, !tbaa !5
  %176 = zext nneg i32 %175 to i64
  %177 = getelementptr inbounds double, ptr %56, i64 %176
  %178 = getelementptr inbounds i8, ptr %177, i64 8
  call void @dlassq_(ptr noundef nonnull %18, ptr noundef nonnull %178, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %23) #6
  %179 = load i32, ptr %11, align 4, !tbaa !5
  %180 = mul i32 %179, %91
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds double, ptr %49, i64 %181
  %183 = load i32, ptr %30, align 4, !tbaa !5
  %184 = mul nsw i32 %183, %183
  %185 = zext nneg i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %56, i64 %185
  %187 = getelementptr inbounds i8, ptr %186, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef %182, ptr noundef nonnull %6, ptr noundef nonnull %187, ptr noundef nonnull %30) #6
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %30) #6
  %188 = load i32, ptr %30, align 4, !tbaa !5
  %189 = mul nsw i32 %188, %188
  %190 = zext nneg i32 %189 to i64
  %191 = getelementptr inbounds double, ptr %56, i64 %190
  %192 = getelementptr inbounds i8, ptr %191, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b48, ptr noundef %14, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b42, ptr noundef nonnull %192, ptr noundef nonnull %30) #6
  %193 = load i32, ptr %30, align 4, !tbaa !5
  %194 = mul nsw i32 %193, %193
  store i32 %194, ptr %18, align 4, !tbaa !5
  %195 = zext nneg i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %56, i64 %195
  %197 = getelementptr inbounds i8, ptr %196, i64 8
  call void @dlassq_(ptr noundef nonnull %18, ptr noundef nonnull %197, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %23) #6
  %198 = load double, ptr %42, align 8, !tbaa !9
  %199 = load double, ptr %23, align 8, !tbaa !9
  %200 = call double @sqrt(double noundef %199) #6
  %201 = fmul double %198, %200
  %202 = fcmp ugt double %201, %109
  br i1 %202, label %738, label %203

203:                                              ; preds = %159
  %204 = load i32, ptr %11, align 4, !tbaa !5
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %18, align 4, !tbaa !5
  %206 = mul nsw i32 %204, %44
  %207 = sext i32 %206 to i64
  %208 = getelementptr double, ptr %46, i64 %207
  %209 = getelementptr i8, ptr %208, i64 8
  %210 = mul nsw i32 %205, %44
  %211 = sext i32 %210 to i64
  %212 = getelementptr double, ptr %46, i64 %211
  %213 = getelementptr i8, ptr %212, i64 8
  call void @drot_(ptr noundef nonnull %18, ptr noundef %209, ptr noundef nonnull @c__1, ptr noundef %213, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %136) #6
  %214 = load i32, ptr %11, align 4, !tbaa !5
  %215 = add nsw i32 %214, 1
  store i32 %215, ptr %18, align 4, !tbaa !5
  %216 = mul nsw i32 %214, %47
  %217 = sext i32 %216 to i64
  %218 = getelementptr double, ptr %49, i64 %217
  %219 = getelementptr i8, ptr %218, i64 8
  %220 = mul nsw i32 %215, %47
  %221 = sext i32 %220 to i64
  %222 = getelementptr double, ptr %49, i64 %221
  %223 = getelementptr i8, ptr %222, i64 8
  call void @drot_(ptr noundef nonnull %18, ptr noundef %219, ptr noundef nonnull @c__1, ptr noundef %223, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %136) #6
  %224 = load i32, ptr %2, align 4, !tbaa !5
  %225 = load i32, ptr %11, align 4, !tbaa !5
  %226 = add i32 %224, 1
  %227 = sub i32 %226, %225
  store i32 %227, ptr %18, align 4, !tbaa !5
  %228 = add i32 %44, 1
  %229 = mul i32 %225, %228
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %46, i64 %230
  %232 = add i32 %229, 1
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds double, ptr %46, i64 %233
  call void @drot_(ptr noundef nonnull %18, ptr noundef %231, ptr noundef nonnull %4, ptr noundef %234, ptr noundef nonnull %4, ptr noundef nonnull %41, ptr noundef nonnull %142) #6
  %235 = load i32, ptr %2, align 4, !tbaa !5
  %236 = load i32, ptr %11, align 4, !tbaa !5
  %237 = add i32 %235, 1
  %238 = sub i32 %237, %236
  store i32 %238, ptr %18, align 4, !tbaa !5
  %239 = add i32 %47, 1
  %240 = mul i32 %236, %239
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds double, ptr %49, i64 %241
  %243 = add i32 %240, 1
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds double, ptr %49, i64 %244
  call void @drot_(ptr noundef nonnull %18, ptr noundef %242, ptr noundef nonnull %6, ptr noundef %245, ptr noundef nonnull %6, ptr noundef nonnull %41, ptr noundef nonnull %142) #6
  %246 = load i32, ptr %11, align 4, !tbaa !5
  %247 = add nsw i32 %246, 1
  %248 = mul nsw i32 %246, %44
  %249 = add nsw i32 %247, %248
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %46, i64 %250
  store double 0.000000e+00, ptr %251, align 8, !tbaa !9
  %252 = mul nsw i32 %246, %47
  %253 = add nsw i32 %247, %252
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds double, ptr %49, i64 %254
  store double 0.000000e+00, ptr %255, align 8, !tbaa !9
  %256 = load i32, ptr %1, align 4, !tbaa !5
  %.not494 = icmp eq i32 %256, 0
  br i1 %.not494, label %266, label %257

257:                                              ; preds = %203
  %258 = mul nsw i32 %246, %53
  %259 = sext i32 %258 to i64
  %260 = getelementptr double, ptr %55, i64 %259
  %261 = getelementptr i8, ptr %260, i64 8
  %262 = mul nsw i32 %247, %53
  %263 = sext i32 %262 to i64
  %264 = getelementptr double, ptr %55, i64 %263
  %265 = getelementptr i8, ptr %264, i64 8
  call void @drot_(ptr noundef nonnull %2, ptr noundef %261, ptr noundef nonnull @c__1, ptr noundef %265, ptr noundef nonnull @c__1, ptr noundef nonnull %43, ptr noundef nonnull %136) #6
  br label %266

266:                                              ; preds = %257, %203
  %267 = load i32, ptr %0, align 4, !tbaa !5
  %.not495 = icmp eq i32 %267, 0
  br i1 %.not495, label %739, label %268

268:                                              ; preds = %266
  %269 = load i32, ptr %11, align 4, !tbaa !5
  %270 = mul nsw i32 %269, %50
  %271 = sext i32 %270 to i64
  %272 = getelementptr double, ptr %52, i64 %271
  %273 = getelementptr i8, ptr %272, i64 8
  %274 = add nsw i32 %269, 1
  %275 = mul nsw i32 %274, %50
  %276 = sext i32 %275 to i64
  %277 = getelementptr double, ptr %52, i64 %276
  %278 = getelementptr i8, ptr %277, i64 8
  call void @drot_(ptr noundef nonnull %2, ptr noundef %273, ptr noundef nonnull @c__1, ptr noundef %278, ptr noundef nonnull @c__1, ptr noundef nonnull %41, ptr noundef nonnull %142) #6
  br label %739

279:                                              ; preds = %84
  %280 = load i32, ptr %12, align 4, !tbaa !5
  %281 = shl i32 %280, 2
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %282
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %283, ptr noundef nonnull @c__4, ptr noundef nonnull %41, ptr noundef nonnull @c__4) #6
  %284 = load i32, ptr %12, align 4, !tbaa !5
  %285 = shl i32 %284, 2
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [16 x double], ptr %31, i64 0, i64 %286
  %288 = load i32, ptr %13, align 4, !tbaa !5
  %289 = add i32 %288, %285
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds [16 x double], ptr %43, i64 0, i64 %290
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %287, ptr noundef nonnull @c__4, ptr noundef nonnull %291, ptr noundef nonnull @c__4) #6
  %292 = load i32, ptr %12, align 4, !tbaa !5
  %293 = add nsw i32 %292, 1
  %294 = shl i32 %293, 2
  %295 = mul i32 %293, 5
  %296 = add nsw i32 %295, -5
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds [16 x double], ptr %31, i64 0, i64 %297
  %299 = load i32, ptr %13, align 4, !tbaa !5
  %300 = add i32 %299, -4
  %301 = add i32 %300, %294
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds [16 x double], ptr %43, i64 0, i64 %302
  %304 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %297
  call void @dtgsy2_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef nonnull %298, ptr noundef nonnull @c__4, ptr noundef nonnull %303, ptr noundef nonnull @c__4, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull %304, ptr noundef nonnull @c__4, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %33, ptr noundef nonnull %23, ptr noundef nonnull %42, ptr noundef nonnull %37, ptr noundef nonnull %21, ptr noundef nonnull %35) #6
  %305 = load i32, ptr %13, align 4, !tbaa !5
  store i32 %305, ptr %18, align 4, !tbaa !5
  %.not504 = icmp slt i32 %305, 1
  br i1 %.not504, label %._crit_edge, label %.lr.ph

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

._crit_edge:                                      ; preds = %.lr.ph, %279
  call void @dgeqr2_(ptr noundef nonnull %30, ptr noundef nonnull %13, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %22, ptr noundef %14, ptr noundef nonnull %35) #6
  %320 = load i32, ptr %35, align 4, !tbaa !5
  %.not476 = icmp eq i32 %320, 0
  br i1 %.not476, label %321, label %738

321:                                              ; preds = %._crit_edge
  call void @dorg2r_(ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %13, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %22, ptr noundef %14, ptr noundef nonnull %35) #6
  %322 = load i32, ptr %35, align 4, !tbaa !5
  %.not477 = icmp eq i32 %322, 0
  br i1 %.not477, label %323, label %738

323:                                              ; preds = %321
  %324 = load i32, ptr %12, align 4, !tbaa !5
  store i32 %324, ptr %18, align 4, !tbaa !5
  %.not479506 = icmp slt i32 %324, 1
  %.pre = load i32, ptr %13, align 4, !tbaa !5
  br i1 %.not479506, label %._crit_edge510, label %.lr.ph509

.lr.ph509:                                        ; preds = %323
  %325 = load double, ptr %33, align 8, !tbaa !9
  %326 = add nuw i32 %324, 1
  %327 = zext nneg i32 %324 to i64
  %xtraiter = and i64 %327, 1
  %328 = icmp eq i32 %324, 1
  br i1 %328, label %._crit_edge510.loopexit.unr-lcssa, label %.lr.ph509.new

.lr.ph509.new:                                    ; preds = %.lr.ph509
  %unroll_iter = and i64 %327, 2147483646
  br label %329

329:                                              ; preds = %329, %.lr.ph509.new
  %indvars.iv = phi i64 [ 1, %.lr.ph509.new ], [ %indvars.iv.next.1, %329 ]
  %niter = phi i64 [ 0, %.lr.ph509.new ], [ %niter.next.1, %329 ]
  %330 = trunc nuw nsw i64 %indvars.iv to i32
  %331 = shl i32 %330, 2
  %332 = trunc i64 %indvars.iv to i32
  %333 = add i32 %332, -5
  %334 = add i32 %333, %331
  %335 = add i32 %334, %.pre
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds [16 x double], ptr %43, i64 0, i64 %336
  store double %325, ptr %337, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %338 = trunc nuw nsw i64 %indvars.iv.next to i32
  %339 = shl i32 %338, 2
  %340 = trunc i64 %indvars.iv.next to i32
  %341 = add i32 %340, -5
  %342 = add i32 %341, %339
  %343 = add i32 %342, %.pre
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds [16 x double], ptr %43, i64 0, i64 %344
  store double %325, ptr %345, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 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_edge510.loopexit.unr-lcssa, label %329, !llvm.loop !13

._crit_edge510.loopexit.unr-lcssa:                ; preds = %329, %.lr.ph509
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph509 ], [ %indvars.iv.next.1, %329 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge510, label %._crit_edge510.loopexit.epilog-lcssa

._crit_edge510.loopexit.epilog-lcssa:             ; preds = %._crit_edge510.loopexit.unr-lcssa
  %346 = trunc nuw nsw i64 %indvars.iv.unr to i32
  %347 = shl i32 %346, 2
  %348 = trunc i64 %indvars.iv.unr to i32
  %349 = add i32 %348, -5
  %350 = add i32 %349, %347
  %351 = add i32 %350, %.pre
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds [16 x double], ptr %43, i64 0, i64 %352
  store double %325, ptr %353, align 8, !tbaa !9
  br label %._crit_edge510

._crit_edge510:                                   ; preds = %._crit_edge510.loopexit.epilog-lcssa, %._crit_edge510.loopexit.unr-lcssa, %323
  %storemerge478.lcssa = phi i32 [ 1, %323 ], [ %326, %._crit_edge510.loopexit.unr-lcssa ], [ %326, %._crit_edge510.loopexit.epilog-lcssa ]
  store i32 %storemerge478.lcssa, ptr %29, align 4, !tbaa !5
  %354 = sext i32 %.pre to i64
  %355 = getelementptr inbounds [16 x double], ptr %43, i64 0, i64 %354
  call void @dgerq2_(ptr noundef nonnull %12, ptr noundef nonnull %30, ptr noundef nonnull %355, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef %14, ptr noundef nonnull %35) #6
  %356 = load i32, ptr %35, align 4, !tbaa !5
  %.not480 = icmp eq i32 %356, 0
  br i1 %.not480, label %357, label %738

357:                                              ; preds = %._crit_edge510
  call void @dorgr2_(ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %12, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef %14, ptr noundef nonnull %35) #6
  %358 = load i32, ptr %35, align 4, !tbaa !5
  %.not481 = icmp eq i32 %358, 0
  br i1 %.not481, label %359, label %738

359:                                              ; preds = %357
  call void @dgemm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %30) #6
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef %14, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %31, ptr noundef nonnull @c__4) #6
  call void @dgemm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %30) #6
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef %14, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %32, ptr noundef nonnull @c__4) #6
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef nonnull %25, ptr noundef nonnull @c__4) #6
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull %26, ptr noundef nonnull @c__4) #6
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull %36, ptr noundef nonnull @c__4) #6
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %34, ptr noundef nonnull @c__4) #6
  call void @dgerq2_(ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef %14, ptr noundef nonnull %35) #6
  %360 = load i32, ptr %35, align 4, !tbaa !5
  %.not482 = icmp eq i32 %360, 0
  br i1 %.not482, label %361, label %738

361:                                              ; preds = %359
  call void @dormr2_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.4, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %35) #6
  %362 = load i32, ptr %35, align 4, !tbaa !5
  %.not483 = icmp eq i32 %362, 0
  br i1 %.not483, label %363, label %738

363:                                              ; preds = %361
  call void @dormr2_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %35) #6
  %364 = load i32, ptr %35, align 4, !tbaa !5
  %.not484 = icmp eq i32 %364, 0
  br i1 %.not484, label %365, label %738

365:                                              ; preds = %363
  store double 0.000000e+00, ptr %42, align 8, !tbaa !9
  store double 1.000000e+00, ptr %23, align 8, !tbaa !9
  %366 = load i32, ptr %13, align 4, !tbaa !5
  store i32 %366, ptr %18, align 4, !tbaa !5
  %.not486511 = icmp slt i32 %366, 1
  br i1 %.not486511, label %._crit_edge515, label %.lr.ph514

.lr.ph514:                                        ; preds = %365, %.lr.ph514
  %367 = phi i32 [ %374, %.lr.ph514 ], [ 1, %365 ]
  %368 = load i32, ptr %13, align 4, !tbaa !5
  %369 = shl i32 %367, 2
  %370 = add i32 %369, -4
  %371 = add i32 %370, %368
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds [16 x double], ptr %31, i64 0, i64 %372
  call void @dlassq_(ptr noundef nonnull %12, ptr noundef nonnull %373, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %23) #6
  %374 = add nuw nsw i32 %367, 1
  %375 = load i32, ptr %18, align 4, !tbaa !5
  %.not486.not = icmp slt i32 %367, %375
  br i1 %.not486.not, label %.lr.ph514, label %._crit_edge515.loopexit, !llvm.loop !14

._crit_edge515.loopexit:                          ; preds = %.lr.ph514
  %.pre522 = load double, ptr %42, align 8, !tbaa !9
  %.pre523 = load double, ptr %23, align 8, !tbaa !9
  br label %._crit_edge515

._crit_edge515:                                   ; preds = %._crit_edge515.loopexit, %365
  %376 = phi double [ %.pre523, %._crit_edge515.loopexit ], [ 1.000000e+00, %365 ]
  %377 = phi double [ %.pre522, %._crit_edge515.loopexit ], [ 0.000000e+00, %365 ]
  %378 = call double @sqrt(double noundef %376) #6
  %379 = fmul double %377, %378
  call void @dgeqr2_(ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull @c__4, ptr noundef nonnull %22, ptr noundef %14, ptr noundef nonnull %35) #6
  %380 = load i32, ptr %35, align 4, !tbaa !5
  %.not487 = icmp eq i32 %380, 0
  br i1 %.not487, label %381, label %738

381:                                              ; preds = %._crit_edge515
  call void @dorm2r_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.4, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull @c__4, ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %16) #6
  call void @dorm2r_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull @c__4, ptr noundef nonnull %22, ptr noundef nonnull %34, ptr noundef nonnull @c__4, ptr noundef %14, ptr noundef nonnull %16) #6
  %382 = load i32, ptr %35, align 4, !tbaa !5
  %.not488 = icmp eq i32 %382, 0
  br i1 %.not488, label %383, label %738

383:                                              ; preds = %381
  store double 0.000000e+00, ptr %42, align 8, !tbaa !9
  store double 1.000000e+00, ptr %23, align 8, !tbaa !9
  %384 = load i32, ptr %13, align 4, !tbaa !5
  store i32 %384, ptr %18, align 4, !tbaa !5
  store i32 1, ptr %29, align 4, !tbaa !5
  %.not490516 = icmp slt i32 %384, 1
  br i1 %.not490516, label %._crit_edge520, label %.lr.ph519

.lr.ph519:                                        ; preds = %383, %.lr.ph519
  %385 = phi i32 [ %392, %.lr.ph519 ], [ 1, %383 ]
  %386 = load i32, ptr %13, align 4, !tbaa !5
  %387 = shl i32 %385, 2
  %388 = add i32 %387, -4
  %389 = add i32 %388, %386
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds [16 x double], ptr %25, i64 0, i64 %390
  call void @dlassq_(ptr noundef nonnull %12, ptr noundef nonnull %391, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %23) #6
  %392 = add nuw nsw i32 %385, 1
  store i32 %392, ptr %29, align 4, !tbaa !5
  %393 = load i32, ptr %18, align 4, !tbaa !5
  %.not490.not = icmp slt i32 %385, %393
  br i1 %.not490.not, label %.lr.ph519, label %._crit_edge520.loopexit, !llvm.loop !15

._crit_edge520.loopexit:                          ; preds = %.lr.ph519
  %.pre524 = load double, ptr %42, align 8, !tbaa !9
  %.pre525 = load double, ptr %23, align 8, !tbaa !9
  br label %._crit_edge520

._crit_edge520:                                   ; preds = %._crit_edge520.loopexit, %383
  %394 = phi double [ %.pre525, %._crit_edge520.loopexit ], [ 1.000000e+00, %383 ]
  %395 = phi double [ %.pre524, %._crit_edge520.loopexit ], [ 0.000000e+00, %383 ]
  %396 = call double @sqrt(double noundef %394) #6
  %397 = fmul double %395, %396
  %398 = fcmp ugt double %397, %379
  %399 = fcmp ugt double %397, %109
  %or.cond = select i1 %398, i1 true, i1 %399
  br i1 %or.cond, label %401, label %400

400:                                              ; preds = %._crit_edge520
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %25, ptr noundef nonnull @c__4, ptr noundef nonnull %31, ptr noundef nonnull @c__4) #6
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull @c__4, ptr noundef nonnull %32, ptr noundef nonnull @c__4) #6
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %36, ptr noundef nonnull @c__4, ptr noundef nonnull %43, ptr noundef nonnull @c__4) #6
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %34, ptr noundef nonnull @c__4, ptr noundef nonnull %41, ptr noundef nonnull @c__4) #6
  br label %403

401:                                              ; preds = %._crit_edge520
  %402 = fcmp ult double %379, %109
  br i1 %402, label %403, label %738

403:                                              ; preds = %401, %400
  %404 = load i32, ptr %30, align 4, !tbaa !5
  %405 = add nsw i32 %404, -1
  store i32 %405, ptr %18, align 4, !tbaa !5
  store i32 %405, ptr %19, align 4, !tbaa !5
  %406 = getelementptr inbounds i8, ptr %32, i64 8
  call void @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 %406, ptr noundef nonnull @c__4) #6
  %407 = load i32, ptr %11, align 4, !tbaa !5
  %408 = mul i32 %407, %86
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds double, ptr %46, i64 %409
  %411 = load i32, ptr %30, align 4, !tbaa !5
  %412 = mul nsw i32 %411, %411
  %413 = zext nneg i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %56, i64 %413
  %415 = getelementptr inbounds i8, ptr %414, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef %410, ptr noundef nonnull %4, ptr noundef nonnull %415, ptr noundef nonnull %30) #6
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %30) #6
  %416 = load i32, ptr %30, align 4, !tbaa !5
  %417 = mul nsw i32 %416, %416
  %418 = zext nneg i32 %417 to i64
  %419 = getelementptr inbounds double, ptr %56, i64 %418
  %420 = getelementptr inbounds i8, ptr %419, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b48, ptr noundef %14, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b42, ptr noundef nonnull %420, ptr noundef nonnull %30) #6
  store double 0.000000e+00, ptr %42, align 8, !tbaa !9
  store double 1.000000e+00, ptr %23, align 8, !tbaa !9
  %421 = load i32, ptr %30, align 4, !tbaa !5
  %422 = mul nsw i32 %421, %421
  store i32 %422, ptr %18, align 4, !tbaa !5
  %423 = zext nneg i32 %422 to i64
  %424 = getelementptr inbounds double, ptr %56, i64 %423
  %425 = getelementptr inbounds i8, ptr %424, i64 8
  call void @dlassq_(ptr noundef nonnull %18, ptr noundef nonnull %425, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %23) #6
  %426 = load i32, ptr %11, align 4, !tbaa !5
  %427 = mul i32 %426, %91
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %49, i64 %428
  %430 = load i32, ptr %30, align 4, !tbaa !5
  %431 = mul nsw i32 %430, %430
  %432 = zext nneg i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %56, i64 %432
  %434 = getelementptr inbounds i8, ptr %433, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef %429, ptr noundef nonnull %6, ptr noundef nonnull %434, ptr noundef nonnull %30) #6
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %30) #6
  %435 = load i32, ptr %30, align 4, !tbaa !5
  %436 = mul nsw i32 %435, %435
  %437 = zext nneg i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %56, i64 %437
  %439 = getelementptr inbounds i8, ptr %438, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b48, ptr noundef %14, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b42, ptr noundef nonnull %439, ptr noundef nonnull %30) #6
  %440 = load i32, ptr %30, align 4, !tbaa !5
  %441 = mul nsw i32 %440, %440
  store i32 %441, ptr %18, align 4, !tbaa !5
  %442 = zext nneg i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %56, i64 %442
  %444 = getelementptr inbounds i8, ptr %443, i64 8
  call void @dlassq_(ptr noundef nonnull %18, ptr noundef nonnull %444, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %23) #6
  %445 = load double, ptr %42, align 8, !tbaa !9
  %446 = load double, ptr %23, align 8, !tbaa !9
  %447 = call double @sqrt(double noundef %446) #6
  %448 = fmul double %445, %447
  %449 = fcmp ugt double %448, %109
  br i1 %449, label %738, label %450

450:                                              ; preds = %403
  %451 = load i32, ptr %13, align 4, !tbaa !5
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds [16 x double], ptr %31, i64 0, i64 %452
  call void @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 %453, ptr noundef nonnull @c__4) #6
  %454 = load i32, ptr %11, align 4, !tbaa !5
  %455 = mul i32 %454, %86
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds double, ptr %46, i64 %456
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull @c__4, ptr noundef %457, ptr noundef nonnull %4) #6
  %458 = load i32, ptr %11, align 4, !tbaa !5
  %459 = mul i32 %458, %91
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %49, i64 %460
  call void @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef %461, ptr noundef nonnull %6) #6
  call void @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 %32, ptr noundef nonnull @c__4) #6
  call void @dlaset_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b5, ptr noundef nonnull @c_b5, ptr noundef %14, ptr noundef nonnull %30) #6
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  store double 1.000000e+00, ptr %32, align 16, !tbaa !9
  %462 = load i32, ptr %15, align 4, !tbaa !5
  %463 = load i32, ptr %30, align 4, !tbaa !5
  %464 = mul nsw i32 %463, %463
  %465 = add i32 %462, -2
  %466 = sub i32 %465, %464
  store i32 %466, ptr %21, align 4, !tbaa !5
  %467 = load i32, ptr %13, align 4, !tbaa !5
  %468 = icmp sgt i32 %467, 1
  br i1 %468, label %469, label %495

469:                                              ; preds = %450
  %470 = load i32, ptr %11, align 4, !tbaa !5
  %471 = mul i32 %470, %86
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds double, ptr %46, i64 %472
  %474 = mul i32 %470, %91
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %49, i64 %475
  %477 = getelementptr inbounds i8, ptr %14, i64 8
  call void @dlagv2_(ptr noundef %473, ptr noundef nonnull %4, ptr noundef %476, ptr noundef nonnull %6, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef nonnull %38, ptr noundef nonnull %14, ptr noundef nonnull %477, ptr noundef nonnull %32, ptr noundef nonnull %406) #6
  %478 = load double, ptr %477, align 8, !tbaa !9
  %479 = fneg double %478
  %480 = load i32, ptr %30, align 4, !tbaa !5
  %481 = sext i32 %480 to i64
  %482 = getelementptr double, ptr %56, i64 %481
  %483 = getelementptr i8, ptr %482, i64 8
  store double %479, ptr %483, align 8, !tbaa !9
  %484 = load double, ptr %14, align 8, !tbaa !9
  %485 = getelementptr i8, ptr %482, i64 16
  store double %484, ptr %485, align 8, !tbaa !9
  %486 = load double, ptr %32, align 16, !tbaa !9
  %487 = load i32, ptr %13, align 4, !tbaa !5
  %488 = mul i32 %487, 5
  %489 = add nsw i32 %488, -5
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %490
  store double %486, ptr %491, align 8, !tbaa !9
  %492 = load double, ptr %406, align 8, !tbaa !9
  %493 = fneg double %492
  %494 = getelementptr inbounds i8, ptr %32, i64 32
  store double %493, ptr %494, align 16, !tbaa !9
  %.pre527 = mul nsw i32 %480, %480
  br label %495

495:                                              ; preds = %469, %450
  %.pre-phi = phi i32 [ %.pre527, %469 ], [ %464, %450 ]
  %496 = phi i32 [ %487, %469 ], [ %467, %450 ]
  %497 = phi i32 [ %480, %469 ], [ %463, %450 ]
  %498 = zext nneg i32 %.pre-phi to i64
  %499 = getelementptr inbounds double, ptr %56, i64 %498
  store double 1.000000e+00, ptr %499, align 8, !tbaa !9
  %500 = mul i32 %497, 5
  %501 = add nsw i32 %500, -5
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %502
  store double 1.000000e+00, ptr %503, align 8, !tbaa !9
  %504 = load i32, ptr %12, align 4, !tbaa !5
  %505 = icmp sgt i32 %504, 1
  br i1 %505, label %506, label %566

506:                                              ; preds = %495
  %507 = load i32, ptr %11, align 4, !tbaa !5
  %508 = add nsw i32 %496, %507
  %509 = mul i32 %508, %86
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %46, i64 %510
  %512 = mul i32 %508, %91
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds double, ptr %49, i64 %513
  %515 = getelementptr inbounds i8, ptr %499, i64 8
  %516 = add i32 %497, 1
  %517 = mul i32 %496, %516
  %518 = sext i32 %517 to i64
  %519 = getelementptr double, ptr %56, i64 %518
  %520 = getelementptr i8, ptr %519, i64 8
  %521 = getelementptr i8, ptr %519, i64 16
  %522 = mul i32 %496, 5
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %523
  %525 = shl i32 %497, 2
  %526 = add i32 %497, -9
  %527 = add i32 %526, %525
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %528
  call void @dlagv2_(ptr noundef %511, ptr noundef nonnull %4, ptr noundef %514, ptr noundef nonnull %6, ptr noundef nonnull %24, ptr noundef nonnull %22, ptr noundef nonnull %515, ptr noundef %520, ptr noundef %521, ptr noundef nonnull %524, ptr noundef nonnull %529) #6
  %530 = load i32, ptr %13, align 4, !tbaa !5
  %531 = load i32, ptr %30, align 4, !tbaa !5
  %532 = add i32 %531, 1
  %533 = mul i32 %532, %530
  %534 = sext i32 %533 to i64
  %535 = getelementptr double, ptr %56, i64 %534
  %536 = getelementptr i8, ptr %535, i64 8
  %537 = load double, ptr %536, align 8, !tbaa !9
  %538 = mul nsw i32 %531, %531
  %539 = zext nneg i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %56, i64 %539
  store double %537, ptr %540, align 8, !tbaa !9
  %541 = getelementptr i8, ptr %535, i64 16
  %542 = load double, ptr %541, align 8, !tbaa !9
  %543 = fneg double %542
  %544 = getelementptr i8, ptr %540, i64 -8
  store double %543, ptr %544, align 8, !tbaa !9
  %545 = mul i32 %530, 5
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !9
  %549 = mul i32 %531, 5
  %550 = add nsw i32 %549, -5
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %551
  store double %548, ptr %552, align 8, !tbaa !9
  %553 = add nsw i32 %531, -1
  %554 = shl i32 %553, 2
  %555 = add i32 %531, -5
  %556 = add i32 %555, %554
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %557
  %559 = load double, ptr %558, align 8, !tbaa !9
  %560 = fneg double %559
  %561 = shl i32 %531, 2
  %562 = add i32 %561, -5
  %563 = add i32 %562, %553
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %564
  store double %560, ptr %565, align 8, !tbaa !9
  br label %566

566:                                              ; preds = %506, %495
  %.pre-phi529 = phi i64 [ %539, %506 ], [ %498, %495 ]
  %567 = phi i32 [ %530, %506 ], [ %496, %495 ]
  %568 = load i32, ptr %11, align 4, !tbaa !5
  %569 = add nsw i32 %567, %568
  %570 = mul nsw i32 %569, %44
  %571 = add nsw i32 %570, %568
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %46, i64 %572
  %574 = getelementptr inbounds double, ptr %56, i64 %.pre-phi529
  %575 = getelementptr inbounds i8, ptr %574, i64 8
  call void @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 %30, ptr noundef %573, ptr noundef nonnull %4, ptr noundef nonnull @c_b5, ptr noundef nonnull %575, ptr noundef nonnull %13) #6
  %576 = load i32, ptr %30, align 4, !tbaa !5
  %577 = mul nsw i32 %576, %576
  %578 = zext nneg i32 %577 to i64
  %579 = getelementptr inbounds double, ptr %56, i64 %578
  %580 = getelementptr inbounds i8, ptr %579, i64 8
  %581 = load i32, ptr %11, align 4, !tbaa !5
  %582 = load i32, ptr %13, align 4, !tbaa !5
  %583 = add nsw i32 %582, %581
  %584 = mul nsw i32 %583, %44
  %585 = add nsw i32 %584, %581
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %46, i64 %586
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %580, ptr noundef nonnull %13, ptr noundef %587, ptr noundef nonnull %4) #6
  %588 = load i32, ptr %11, align 4, !tbaa !5
  %589 = load i32, ptr %13, align 4, !tbaa !5
  %590 = add nsw i32 %589, %588
  %591 = mul nsw i32 %590, %47
  %592 = add nsw i32 %591, %588
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %49, i64 %593
  %595 = load i32, ptr %30, align 4, !tbaa !5
  %596 = mul nsw i32 %595, %595
  %597 = zext nneg i32 %596 to i64
  %598 = getelementptr inbounds double, ptr %56, i64 %597
  %599 = getelementptr inbounds i8, ptr %598, i64 8
  call void @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 %30, ptr noundef %594, ptr noundef nonnull %6, ptr noundef nonnull @c_b5, ptr noundef nonnull %599, ptr noundef nonnull %13) #6
  %600 = load i32, ptr %30, align 4, !tbaa !5
  %601 = mul nsw i32 %600, %600
  %602 = zext nneg i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %56, i64 %602
  %604 = getelementptr inbounds i8, ptr %603, i64 8
  %605 = load i32, ptr %11, align 4, !tbaa !5
  %606 = load i32, ptr %13, align 4, !tbaa !5
  %607 = add nsw i32 %606, %605
  %608 = mul nsw i32 %607, %47
  %609 = add nsw i32 %608, %605
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %49, i64 %610
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %604, ptr noundef nonnull %13, ptr noundef %611, ptr noundef nonnull %6) #6
  %612 = load i32, ptr %30, align 4, !tbaa !5
  %613 = mul nsw i32 %612, %612
  %614 = zext nneg i32 %613 to i64
  %615 = getelementptr inbounds double, ptr %56, i64 %614
  %616 = getelementptr inbounds i8, ptr %615, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull %14, ptr noundef nonnull %30, ptr noundef nonnull @c_b5, ptr noundef nonnull %616, ptr noundef nonnull %30) #6
  %617 = load i32, ptr %30, align 4, !tbaa !5
  %618 = mul nsw i32 %617, %617
  %619 = zext nneg i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %56, i64 %619
  %621 = getelementptr inbounds i8, ptr %620, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %621, ptr noundef nonnull %30, ptr noundef nonnull %41, ptr noundef nonnull @c__4) #6
  %622 = load i32, ptr %11, align 4, !tbaa !5
  %623 = load i32, ptr %13, align 4, !tbaa !5
  %624 = add nsw i32 %623, %622
  %625 = mul nsw i32 %624, %44
  %626 = add nsw i32 %625, %622
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds double, ptr %46, i64 %627
  %629 = mul i32 %623, 5
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %630
  call void @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 %628, ptr noundef nonnull %4, ptr noundef nonnull %631, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %13) #6
  %632 = load i32, ptr %11, align 4, !tbaa !5
  %633 = load i32, ptr %13, align 4, !tbaa !5
  %634 = add nsw i32 %633, %632
  %635 = mul nsw i32 %634, %44
  %636 = add nsw i32 %635, %632
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %46, i64 %637
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %638, ptr noundef nonnull %4) #6
  %639 = load i32, ptr %11, align 4, !tbaa !5
  %640 = load i32, ptr %13, align 4, !tbaa !5
  %641 = add nsw i32 %640, %639
  %642 = mul nsw i32 %641, %47
  %643 = add nsw i32 %642, %639
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds double, ptr %49, i64 %644
  %646 = mul i32 %640, 5
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %647
  call void @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 %645, ptr noundef nonnull %6, ptr noundef nonnull %648, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %13) #6
  %649 = load i32, ptr %11, align 4, !tbaa !5
  %650 = load i32, ptr %13, align 4, !tbaa !5
  %651 = add nsw i32 %650, %649
  %652 = mul nsw i32 %651, %47
  %653 = add nsw i32 %652, %649
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds double, ptr %49, i64 %654
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %13, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %655, ptr noundef nonnull %6) #6
  call void @dgemm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull %32, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %30) #6
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull @c__4) #6
  %656 = load i32, ptr %0, align 4, !tbaa !5
  %.not491 = icmp eq i32 %656, 0
  br i1 %.not491, label %668, label %657

657:                                              ; preds = %566
  %658 = load i32, ptr %11, align 4, !tbaa !5
  %659 = mul nsw i32 %658, %50
  %660 = sext i32 %659 to i64
  %661 = getelementptr double, ptr %52, i64 %660
  %662 = getelementptr i8, ptr %661, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef %662, ptr noundef nonnull %8, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %2) #6
  %663 = load i32, ptr %11, align 4, !tbaa !5
  %664 = mul nsw i32 %663, %50
  %665 = sext i32 %664 to i64
  %666 = getelementptr double, ptr %52, i64 %665
  %667 = getelementptr i8, ptr %666, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull %2, ptr noundef %667, ptr noundef nonnull %8) #6
  br label %668

668:                                              ; preds = %657, %566
  %669 = load i32, ptr %1, align 4, !tbaa !5
  %.not492 = icmp eq i32 %669, 0
  br i1 %.not492, label %681, label %670

670:                                              ; preds = %668
  %671 = load i32, ptr %11, align 4, !tbaa !5
  %672 = mul nsw i32 %671, %53
  %673 = sext i32 %672 to i64
  %674 = getelementptr double, ptr %55, i64 %673
  %675 = getelementptr i8, ptr %674, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef %675, ptr noundef nonnull %10, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %2) #6
  %676 = load i32, ptr %11, align 4, !tbaa !5
  %677 = mul nsw i32 %676, %53
  %678 = sext i32 %677 to i64
  %679 = getelementptr double, ptr %55, i64 %678
  %680 = getelementptr i8, ptr %679, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull %2, ptr noundef %680, ptr noundef nonnull %10) #6
  br label %681

681:                                              ; preds = %670, %668
  %682 = load i32, ptr %11, align 4, !tbaa !5
  %683 = load i32, ptr %30, align 4, !tbaa !5
  %684 = add nsw i32 %683, %682
  %685 = load i32, ptr %2, align 4, !tbaa !5
  %.not493 = icmp sgt i32 %684, %685
  br i1 %.not493, label %714, label %686

686:                                              ; preds = %681
  %reass.sub = sub i32 %685, %684
  %687 = add i32 %reass.sub, 1
  store i32 %687, ptr %18, align 4, !tbaa !5
  %688 = mul nsw i32 %684, %44
  %689 = add nsw i32 %688, %682
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds double, ptr %46, i64 %690
  call void @dgemm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %18, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef %691, ptr noundef nonnull %4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %30) #6
  %692 = load i32, ptr %2, align 4, !tbaa !5
  %693 = add i32 %692, 1
  %694 = sub i32 %693, %684
  store i32 %694, ptr %18, align 4, !tbaa !5
  %695 = load i32, ptr %11, align 4, !tbaa !5
  %696 = add nsw i32 %695, %688
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %46, i64 %697
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %30, ptr noundef %698, ptr noundef nonnull %4) #6
  %699 = load i32, ptr %2, align 4, !tbaa !5
  %700 = add i32 %699, 1
  %701 = sub i32 %700, %684
  store i32 %701, ptr %18, align 4, !tbaa !5
  %702 = load i32, ptr %11, align 4, !tbaa !5
  %703 = mul nsw i32 %684, %47
  %704 = add nsw i32 %702, %703
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds double, ptr %49, i64 %705
  call void @dgemm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %30, ptr noundef nonnull %18, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef nonnull %41, ptr noundef nonnull @c__4, ptr noundef %706, ptr noundef nonnull %6, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %30) #6
  %707 = load i32, ptr %2, align 4, !tbaa !5
  %708 = add i32 %707, 1
  %709 = sub i32 %708, %684
  store i32 %709, ptr %18, align 4, !tbaa !5
  %710 = load i32, ptr %11, align 4, !tbaa !5
  %711 = add nsw i32 %710, %703
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds double, ptr %49, i64 %712
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %30, ptr noundef %713, ptr noundef nonnull %6) #6
  %.pre526 = load i32, ptr %11, align 4, !tbaa !5
  br label %714

714:                                              ; preds = %686, %681
  %715 = phi i32 [ %.pre526, %686 ], [ %682, %681 ]
  %716 = add nsw i32 %715, -1
  store i32 %716, ptr %29, align 4, !tbaa !5
  %717 = icmp sgt i32 %715, 1
  br i1 %717, label %718, label %739

718:                                              ; preds = %714
  %719 = mul nsw i32 %715, %44
  %720 = sext i32 %719 to i64
  %721 = getelementptr double, ptr %46, i64 %720
  %722 = getelementptr i8, ptr %721, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef %722, ptr noundef nonnull %4, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %29) #6
  %723 = load i32, ptr %11, align 4, !tbaa !5
  %724 = mul nsw i32 %723, %44
  %725 = sext i32 %724 to i64
  %726 = getelementptr double, ptr %46, i64 %725
  %727 = getelementptr i8, ptr %726, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull %29, ptr noundef %727, ptr noundef nonnull %4) #6
  %728 = load i32, ptr %11, align 4, !tbaa !5
  %729 = mul nsw i32 %728, %47
  %730 = sext i32 %729 to i64
  %731 = getelementptr double, ptr %49, i64 %730
  %732 = getelementptr i8, ptr %731, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b42, ptr noundef %732, ptr noundef nonnull %6, ptr noundef nonnull %43, ptr noundef nonnull @c__4, ptr noundef nonnull @c_b5, ptr noundef nonnull %14, ptr noundef nonnull %29) #6
  %733 = load i32, ptr %11, align 4, !tbaa !5
  %734 = mul nsw i32 %733, %47
  %735 = sext i32 %734 to i64
  %736 = getelementptr double, ptr %49, i64 %735
  %737 = getelementptr i8, ptr %736, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull %29, ptr noundef %737, ptr noundef nonnull %6) #6
  br label %739

738:                                              ; preds = %403, %401, %381, %._crit_edge515, %363, %361, %359, %357, %._crit_edge510, %321, %._crit_edge, %159, %112
  store i32 1, ptr %16, align 4, !tbaa !5
  br label %739

739:                                              ; preds = %714, %718, %266, %268, %66, %17, %59, %62, %738, %78
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  ret void
}

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

declare void @dlaset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @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 void @dlartg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @drot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @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 void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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


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